From lede-commits at lists.infradead.org  Fri Mar  1 09:22:20 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 01 Mar 2024 12:22:20 -0500
Subject: [openwrt/openwrt]  build: fix kernel component in CycloneDX SBOM
In-Reply-To: <170931374083.1557898.13002710391533273272@git-01.infra.openwrt.org>
References: <170931374083.1557898.13002710391533273272@git-01.infra.openwrt.org>
Message-ID: <mailman.12321.1709313751.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/84331215e57090a9cdae4af75af2539c39cd7de7

commit 84331215e57090a9cdae4af75af2539c39cd7de7
Author: Cedric DOURLENT <cedric.dourlent at softathome.com>
AuthorDate: Fri Mar 1 16:42:34 2024 +0100

    build: fix kernel component in CycloneDX SBOM
    
    As stated in the cycloneDX documentation, the field "type" is mandatory for all components.
    
    More details here (https://cyclonedx.org/docs/1.5/json/#components_items_type)
    
    Signed-off-by: Cedric DOURLENT <cedric.dourlent at softathome.com>
---
 scripts/package-metadata.pl | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/scripts/package-metadata.pl b/scripts/package-metadata.pl
index 9e0e6dd9e5..a46f819ab5 100755
--- a/scripts/package-metadata.pl
+++ b/scripts/package-metadata.pl
@@ -677,6 +677,7 @@ sub gen_image_cyclonedxsbom() {
 		license => "GPL-2.0",
 		cpe_id  => "cpe:/o:linux:linux_kernel",
 		name    => "kernel",
+		category  => "operating-system",
 	};
 
 	my %abimap;
@@ -705,6 +706,7 @@ sub gen_image_cyclonedxsbom() {
 		if ($pkg->{category}) {
 			my $category = $pkg->{category};
 			my %cat_type = (
+				"operating-system"        => "operating-system",
 				"Firmware"        => "firmware",
 				"Libraries"       => "library"
 			);



From lede-commits at lists.infradead.org  Fri Mar  1 09:29:20 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 01 Mar 2024 12:29:20 -0500
Subject: [openwrt/openwrt]  layerscape: switch kernel to 6.1 version
In-Reply-To: <170931416039.1564338.13311013369133004607@git-01.infra.openwrt.org>
References: <170931416039.1564338.13311013369133004607@git-01.infra.openwrt.org>
Message-ID: <mailman.12327.1709314171.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/73f99b6849f3d0c40b1da6a5b35b69578b72d7d1

commit 73f99b6849f3d0c40b1da6a5b35b69578b72d7d1
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Fri Mar 1 09:01:45 2024 +0100

    layerscape: switch kernel to 6.1 version
    
    It was testing since couple months. Lets switch it to 6.1 by default for
    wide testing.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/layerscape/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/layerscape/Makefile b/target/linux/layerscape/Makefile
index 4ddd348d13..79aa8f1474 100644
--- a/target/linux/layerscape/Makefile
+++ b/target/linux/layerscape/Makefile
@@ -7,8 +7,7 @@ include $(TOPDIR)/rules.mk
 BOARD:=layerscape
 BOARDNAME:=NXP Layerscape
 
-KERNEL_PATCHVER:=5.15
-KERNEL_TESTING_PATCHVER:=6.1
+KERNEL_PATCHVER:=6.1
 
 FEATURES:=squashfs nand usb pcie gpio fpu ubifs ext4 rootfs-part boot-part
 SUBTARGETS:=armv8_64b armv7



From lede-commits at lists.infradead.org  Fri Mar  1 10:02:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 01 Mar 2024 13:02:04 -0500
Subject: [openwrt/openwrt]  build: scripts/config - update to kconfig-v6.6.16
In-Reply-To: <170931612442.1594479.11697638544678094788@git-01.infra.openwrt.org>
References: <170931612442.1594479.11697638544678094788@git-01.infra.openwrt.org>
Message-ID: <mailman.12334.1709316137.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/65a3eb28d5ec276c960e992fc99d0d042f5c863f

commit 65a3eb28d5ec276c960e992fc99d0d042f5c863f
Author: Eneas U de Queiroz <cotequeiroz at gmail.com>
AuthorDate: Fri Feb 16 14:32:07 2024 -0300

    build: scripts/config - update to kconfig-v6.6.16
    
    The main goal here is to keep this close to upstream.
    
    Changes include:
     - allow symbols implied by y to become m
     - make 'imply' obey the direct dependency
     - allow only 'config', 'comment', and 'if' inside 'choice'
     - qconf: make search fully work again on split mode
     - qconf: navigate menus on hyperlinks
     - remove '---help---' support
     - qconf: allow to edit "int", "hex", "string" menus in-place
     - qconf: drop Qt4 support
     - nconf: fix core dump when searching in empty menu
     - nconf: stop endless search loops
     - Create links to main menu items in search
     - fix segmentation fault in menuconfig search
     - nconf: Add search jump feature
     - port qconf to work with Qt6 in addition to Qt5
     - fix possible buffer overflow
     - fix memory leak from range properties
    
    Signed-off-by: Eneas U de Queiroz <cotequeiroz at gmail.com>
---
 scripts/config/.gitignore         |  18 +-
 scripts/config/Kbuild.include     | 279 ++++++++++++++++++
 scripts/config/Makefile           | 111 +++-----
 scripts/config/README             |   9 +-
 scripts/config/conf.c             |  58 ++--
 scripts/config/confdata.c         | 586 +++++++++++++++++++++++---------------
 scripts/config/expr.h             |   1 -
 scripts/config/lexer.l            |   9 +-
 scripts/config/lexer.lex.c        |  14 +-
 scripts/config/lkc.h              |   9 +-
 scripts/config/lkc_proto.h        |   2 +-
 scripts/config/lxdialog/dialog.h  |  37 +--
 scripts/config/lxdialog/menubox.c |   8 -
 scripts/config/lxdialog/textbox.c | 311 +++++++++-----------
 scripts/config/mconf-cfg.sh       |  31 +-
 scripts/config/mconf.c            | 398 +++++++++++++-------------
 scripts/config/menu.c             |  69 ++---
 scripts/config/nconf-cfg.sh       |  31 +-
 scripts/config/nconf.c            | 121 +++++++-
 scripts/config/nconf.gui.c        |  37 ++-
 scripts/config/nconf.h            |   5 +
 scripts/config/parser.tab.c       | 101 +++----
 scripts/config/parser.tab.h       |   4 +-
 scripts/config/preprocess.c       |   5 +-
 scripts/config/qconf-cfg.sh       |  34 ++-
 scripts/config/qconf.cc           |  40 ++-
 scripts/config/symbol.c           |  57 +---
 scripts/config/util.c             |   2 +-
 28 files changed, 1393 insertions(+), 994 deletions(-)

diff --git a/scripts/config/.gitignore b/scripts/config/.gitignore
index 05c55c3c8e..1cef9de10f 100644
--- a/scripts/config/.gitignore
+++ b/scripts/config/.gitignore
@@ -1,16 +1,14 @@
 # SPDX-License-Identifier: GPL-2.0-only
 /conf
 /[gmnq]conf
-/[gmnq]conf-cfg
+/[gmnq]conf-bin
+/[gmnq]conf-cflags
+/[gmnq]conf-libs
 /qconf-moc.cc
 
-# From linux kconfig parent directories
-.*
-
-# OpenWrt-generated files
+#
+# Added by openwrt
+#
 mconf_check
-
-# Temporary files from older versions.  They should be removed after the
-# end of support for OpenWrt 19.07.
-zconf.???.c
-zconf.hash.c
+# The next line should be removed after 23.05 is EOL
+*conf-cfg
diff --git a/scripts/config/Kbuild.include b/scripts/config/Kbuild.include
new file mode 100644
index 0000000000..7778cc97a4
--- /dev/null
+++ b/scripts/config/Kbuild.include
@@ -0,0 +1,279 @@
+# SPDX-License-Identifier: GPL-2.0
+####
+# kbuild: Generic definitions
+
+# Convenient variables
+comma   := ,
+quote   := "
+squote  := '
+empty   :=
+space   := $(empty) $(empty)
+space_escape := _-_SPACE_-_
+pound := \#
+define newline
+
+
+endef
+
+###
+# Comparison macros.
+# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000)
+#
+# Use $(intcmp ...) if supported. (Make >= 4.4)
+# Otherwise, fall back to the 'test' shell command.
+ifeq ($(intcmp 1,0,,,y),y)
+test-ge = $(intcmp $(strip $1)0, $(strip $2)0,,y,y)
+test-gt = $(intcmp $(strip $1)0, $(strip $2)0,,,y)
+else
+test-ge = $(shell test $(strip $1)0 -ge $(strip $2)0 && echo y)
+test-gt = $(shell test $(strip $1)0 -gt $(strip $2)0 && echo y)
+endif
+test-le = $(call test-ge, $2, $1)
+test-lt = $(call test-gt, $2, $1)
+
+###
+# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
+dot-target = $(dir $@).$(notdir $@)
+
+###
+# Name of target with a '.tmp_' as filename prefix. foo/bar.o => foo/.tmp_bar.o
+tmp-target = $(dir $@).tmp_$(notdir $@)
+
+###
+# The temporary file to save gcc -MMD generated dependencies must not
+# contain a comma
+depfile = $(subst $(comma),_,$(dot-target).d)
+
+###
+# filename of target with directory and extension stripped
+basetarget = $(basename $(notdir $@))
+
+###
+# real prerequisites without phony targets
+real-prereqs = $(filter-out $(PHONY), $^)
+
+###
+# Escape single quote for use in echo statements
+escsq = $(subst $(squote),'\$(squote)',$1)
+
+###
+# Quote a string to pass it to C files. foo => '"foo"'
+stringify = $(squote)$(quote)$1$(quote)$(squote)
+
+###
+# The path to Kbuild or Makefile. Kbuild has precedence over Makefile.
+kbuild-dir = $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
+kbuild-file = $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile)
+
+###
+# Read a file, replacing newlines with spaces
+#
+# Make 4.2 or later can read a file by using its builtin function.
+ifneq ($(filter-out 3.% 4.0 4.1, $(MAKE_VERSION)),)
+read-file = $(subst $(newline),$(space),$(file < $1))
+else
+read-file = $(shell cat $1 2>/dev/null)
+endif
+
+###
+# Easy method for doing a status message
+       kecho := :
+ quiet_kecho := echo
+silent_kecho := :
+kecho := $($(quiet)kecho)
+
+###
+# filechk is used to check if the content of a generated file is updated.
+# Sample usage:
+#
+# filechk_sample = echo $(KERNELRELEASE)
+# version.h: FORCE
+#	$(call filechk,sample)
+#
+# The rule defined shall write to stdout the content of the new file.
+# The existing file will be compared with the new one.
+# - If no file exist it is created
+# - If the content differ the new file is used
+# - If they are equal no change, and no timestamp update
+define filechk
+	$(check-FORCE)
+	$(Q)set -e;						\
+	mkdir -p $(dir $@);					\
+	trap "rm -f $(tmp-target)" EXIT;			\
+	{ $(filechk_$(1)); } > $(tmp-target);			\
+	if [ ! -r $@ ] || ! cmp -s $@ $(tmp-target); then	\
+		$(kecho) '  UPD     $@';			\
+		mv -f $(tmp-target) $@;				\
+	fi
+endef
+
+###
+# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
+# Usage:
+# $(Q)$(MAKE) $(build)=dir
+build := -f $(srctree)/scripts/Makefile.build obj
+
+###
+# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.dtbinst obj=
+# Usage:
+# $(Q)$(MAKE) $(dtbinst)=dir
+dtbinst := -f $(srctree)/scripts/Makefile.dtbinst obj
+
+###
+# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=
+# Usage:
+# $(Q)$(MAKE) $(clean)=dir
+clean := -f $(srctree)/scripts/Makefile.clean obj
+
+# pring log
+#
+# If quiet is "silent_", print nothing and sink stdout
+# If quiet is "quiet_", print short log
+# If quiet is empty, print short log and whole command
+silent_log_print = exec >/dev/null;
+ quiet_log_print = $(if $(quiet_cmd_$1), echo '  $(call escsq,$(quiet_cmd_$1)$(why))';)
+       log_print = echo '$(pound) $(call escsq,$(or $(quiet_cmd_$1),cmd_$1 $@)$(why))'; \
+                   echo '  $(call escsq,$(cmd_$1))';
+
+# Delete the target on interruption
+#
+# GNU Make automatically deletes the target if it has already been changed by
+# the interrupted recipe. So, you can safely stop the build by Ctrl-C (Make
+# will delete incomplete targets), and resume it later.
+#
+# However, this does not work when the stderr is piped to another program, like
+#  $ make >&2 | tee log
+# Make dies with SIGPIPE before cleaning the targets.
+#
+# To address it, we clean the target in signal traps.
+#
+# Make deletes the target when it catches SIGHUP, SIGINT, SIGQUIT, SIGTERM.
+# So, we cover them, and also SIGPIPE just in case.
+#
+# Of course, this is unneeded for phony targets.
+delete-on-interrupt = \
+	$(if $(filter-out $(PHONY), $@), \
+		$(foreach sig, HUP INT QUIT TERM PIPE, \
+			trap 'rm -f $@; trap - $(sig); kill -s $(sig) $$$$' $(sig);))
+
+# print and execute commands
+cmd = @$(if $(cmd_$(1)),set -e; $($(quiet)log_print) $(delete-on-interrupt) $(cmd_$(1)),:)
+
+###
+# if_changed      - execute command if any prerequisite is newer than
+#                   target, or command line has changed
+# if_changed_dep  - as if_changed, but uses fixdep to reveal dependencies
+#                   including used config symbols
+# if_changed_rule - as if_changed but execute rule instead
+# See Documentation/kbuild/makefiles.rst for more info
+
+ifneq ($(KBUILD_NOCMDDEP),1)
+# Check if both commands are the same including their order. Result is empty
+# string if equal. User may override this check using make KBUILD_NOCMDDEP=1
+# If the target does not exist, the *.cmd file should not be included so
+# $(savedcmd_$@) gets empty. Then, target will be built even if $(newer-prereqs)
+# happens to become empty.
+cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \
+                         $(subst $(space),$(space_escape),$(strip $(cmd_$1))))
+else
+# We still need to detect missing targets.
+cmd-check = $(if $(strip $(savedcmd_$@)),,1)
+endif
+
+# Replace >$< with >$$< to preserve $ when reloading the .cmd file
+# (needed for make)
+# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file
+# (needed for make)
+# Replace >'< with >'\''< to be able to enclose the whole string in '...'
+# (needed for the shell)
+make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
+
+# Find any prerequisites that are newer than target or that do not exist.
+# PHONY targets skipped in both cases.
+# If there is no prerequisite other than phony targets, $(newer-prereqs) becomes
+# empty even if the target does not exist. cmd-check saves this corner case.
+newer-prereqs = $(filter-out $(PHONY),$?)
+
+# It is a typical mistake to forget the FORCE prerequisite. Check it here so
+# no more breakage will slip in.
+check-FORCE = $(if $(filter FORCE, $^),,$(warning FORCE prerequisite is missing))
+
+if-changed-cond = $(newer-prereqs)$(cmd-check)$(check-FORCE)
+
+# Execute command if command has changed or prerequisite(s) are updated.
+if_changed = $(if $(if-changed-cond),$(cmd_and_savecmd),@:)
+
+cmd_and_savecmd =                                                            \
+	$(cmd);                                                              \
+	printf '%s\n' 'savedcmd_$@ := $(make-cmd)' > $(dot-target).cmd
+
+# Execute the command and also postprocess generated .d dependencies file.
+if_changed_dep = $(if $(if-changed-cond),$(cmd_and_fixdep),@:)
+
+cmd_and_fixdep =                                                             \
+	$(cmd);                                                              \
+	scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).cmd;\
+	rm -f $(depfile)
+
+# Usage: $(call if_changed_rule,foo)
+# Will check if $(cmd_foo) or any of the prerequisites changed,
+# and if so will execute $(rule_foo).
+if_changed_rule = $(if $(if-changed-cond),$(rule_$(1)),@:)
+
+###
+# why - tell why a target got built
+#       enabled by make V=2
+#       Output (listed in the order they are checked):
+#          (1) - due to target is PHONY
+#          (2) - due to target missing
+#          (3) - due to: file1.h file2.h
+#          (4) - due to command line change
+#          (5) - due to missing .cmd file
+#          (6) - due to target not in $(targets)
+# (1) PHONY targets are always build
+# (2) No target, so we better build it
+# (3) Prerequisite is newer than target
+# (4) The command line stored in the file named dir/.target.cmd
+#     differed from actual command line. This happens when compiler
+#     options changes
+# (5) No dir/.target.cmd file (used to store command line)
+# (6) No dir/.target.cmd file and target not listed in $(targets)
+#     This is a good hint that there is a bug in the kbuild file
+ifneq ($(findstring 2, $(KBUILD_VERBOSE)),)
+_why =                                                                        \
+    $(if $(filter $@, $(PHONY)),- due to target is PHONY,                    \
+        $(if $(wildcard $@),                                                 \
+            $(if $(newer-prereqs),- due to: $(newer-prereqs),                \
+                $(if $(cmd-check),                                           \
+                    $(if $(savedcmd_$@),- due to command line change,        \
+                        $(if $(filter $@, $(targets)),                       \
+                            - due to missing .cmd file,                      \
+                            - due to $(notdir $@) not in $$(targets)         \
+                         )                                                   \
+                     )                                                       \
+                 )                                                           \
+             ),                                                              \
+             - due to target missing                                         \
+         )                                                                   \
+     )
+
+why = $(space)$(strip $(_why))
+endif
+
+###############################################################################
+
+# delete partially updated (i.e. corrupted) files on error
+.DELETE_ON_ERROR:
+
+# do not delete intermediate files automatically
+#
+# .NOTINTERMEDIATE is more correct, but only available on newer Make versions.
+# Make 4.4 introduced .NOTINTERMEDIATE, and it appears in .FEATURES, but the
+# global .NOTINTERMEDIATE does not work. We can use it on Make > 4.4.
+# Use .SECONDARY for older Make versions, but "newer-prereq" cannot detect
+# deleted files.
+ifneq ($(and $(filter notintermediate, $(.FEATURES)),$(filter-out 4.4,$(MAKE_VERSION))),)
+.NOTINTERMEDIATE:
+else
+.SECONDARY:
+endif
diff --git a/scripts/config/Makefile b/scripts/config/Makefile
index 5976a91b9a..5e7dd9578e 100644
--- a/scripts/config/Makefile
+++ b/scripts/config/Makefile
@@ -5,46 +5,21 @@
 .PHONY: clean all
 all: conf mconf
 clean:
-	rm -f *.o lxdialog/*.o *.moc .*.cmd $(clean-files)
+	rm -f $(clean-files) $(hostprogs)
 
-# This clean-files definition is here to ensure that temporary files from the
-# previous version are removed by make config-clean.
-# It should be emptied after the end of support for OpenWrt 19.07.
-clean-files	:= zconf.tab.c zconf.lex.c zconf.hash.c .tmp_qtcheck
+clean-files	:= *.o lxdialog/*.o *.moc qconf-moc.cc \
+		   *conf-cfg # <- This should be removed after 23.05 is EOL
 
 # ===========================================================================
 # Variables needed by the upstream Makefile
 
-# Avoids displaying 'UPD mconf-cfg' in an otherwise quiet make menuconfig
-kecho:=true
-
+export HOSTPKG_CONFIG=pkg-config
 CONFIG_SHELL:=$(SHELL)
-srctree:=.
-src:=.
+src:=$(CURDIR)
 obj:=.
 Q:=$(if $V,,@)
-cmd = $(cmd_$(1))
-
-# some definitions taken from ../Kbuild.include
-dot-target = $(dir $@).$(notdir $@)
-squote  := '
-escsq = $(subst $(squote),'\$(squote)',$1)
-define filechk
-	$(Q)set -e;						\
-	mkdir -p $(dir $@);					\
-	trap "rm -f $(dot-target).tmp" EXIT;			\
-	{ $(filechk_$(1)); } > $(dot-target).tmp;		\
-	if [ ! -r $@ ] || ! cmp -s $@ $(dot-target).tmp; then	\
-		$(kecho) '  UPD     $@';			\
-		mv -f $(dot-target).tmp $@;			\
-	fi
-endef
-cmd-check = $(if $(strip $(cmd_$@)),,1)
-make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
-newer-prereqs = $(filter-out $(PHONY),$?)
-if_changed = $(if $(newer-prereqs)$(cmd-check),			\
-	$(cmd);							\
-	printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
+quiet:=$(if $V,,_silent)
+include Kbuild.include
 
 ### Stripped down upstream Makefile follows:
 # ===========================================================================
@@ -64,11 +39,12 @@ conf-objs	:= conf.o $(common-objs)
 hostprogs	+= nconf
 nconf-objs	:= nconf.o nconf.gui.o $(common-objs)
 
-HOSTLDLIBS_nconf	= $(shell . $(obj)/nconf-cfg && echo $$libs)
-HOSTCFLAGS_nconf.o	= $(shell . $(obj)/nconf-cfg && echo $$cflags)
-HOSTCFLAGS_nconf.gui.o	= $(shell . $(obj)/nconf-cfg && echo $$cflags)
+HOSTLDLIBS_nconf       = $(call read-file, $(obj)/nconf-libs)
+HOSTCFLAGS_nconf.o     = $(call read-file, $(obj)/nconf-cflags)
+HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags)
 
-$(obj)/nconf.o $(obj)/nconf.gui.o: $(obj)/nconf-cfg
+$(obj)/nconf: | $(obj)/nconf-libs
+$(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags
 
 # mconf: Used for the menuconfig target based on lxdialog
 hostprogs	+= mconf
@@ -76,45 +52,44 @@ lxdialog	:= $(addprefix lxdialog/, \
 		     checklist.o inputbox.o menubox.o textbox.o util.o yesno.o)
 mconf-objs	:= mconf.o $(lxdialog) $(common-objs)
 
-HOSTLDLIBS_mconf = $(shell . $(obj)/mconf-cfg && echo $$libs)
+HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs)
 $(foreach f, mconf.o $(lxdialog), \
-  $(eval HOSTCFLAGS_$f = $$(shell . $(obj)/mconf-cfg && echo $$$$cflags)))
+  $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags)))
 
-$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/mconf-cfg
+$(obj)/mconf: | $(obj)/mconf-libs
+$(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags
 
 # qconf: Used for the xconfig target based on Qt
 hostprogs	+= qconf
 qconf-cxxobjs	:= qconf.o qconf-moc.o
 qconf-objs	:= images.o $(common-objs)
 
-HOSTLDLIBS_qconf	= $(shell . $(obj)/qconf-cfg && echo $$libs)
-HOSTCXXFLAGS_qconf.o	= $(shell . $(obj)/qconf-cfg && echo $$cflags)
-HOSTCXXFLAGS_qconf-moc.o = $(shell . $(obj)/qconf-cfg && echo $$cflags)
-
-$(obj)/qconf.o: $(obj)/qconf-cfg
+HOSTLDLIBS_qconf         = $(call read-file, $(obj)/qconf-libs)
+HOSTCXXFLAGS_qconf.o     = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags)
+HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags)
+$(obj)/qconf: | $(obj)/qconf-libs
+$(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags
 
 quiet_cmd_moc = MOC     $@
-      cmd_moc = $(shell . $(obj)/qconf-cfg && echo $$moc) $< -o $@
+      cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@
 
-$(obj)/qconf-moc.cc: $(src)/qconf.h $(obj)/qconf-cfg FORCE
+$(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin
 	$(call if_changed,moc)
 
 targets += qconf-moc.cc
 
 # check if necessary packages are available, and configure build flags
-filechk_conf_cfg = $(CONFIG_SHELL) $<
+cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin); touch $(obj)/$*conf-bin
 
-$(obj)/%conf-cfg: $(src)/%conf-cfg.sh FORCE
-	$(call filechk,conf_cfg)
+$(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh
+	$(call cmd,conf_cfg)
 
-clean-files += *conf-cfg
+clean-files += *conf-cflags *conf-libs *conf-bin
 
 # ===========================================================================
 # OpenWrt rules and final adjustments that need to be made after reading the
 # full upstream Makefile
 
-clean-files += $(targets) $(hostprogs)
-
 FORCE:
 
 ifdef BUILD_SHIPPED_FILES
@@ -130,25 +105,21 @@ clean-files += $(shipped-files)
 	flex -L -o$@ $<
 endif
 
-$(foreach f,$(conf-objs) $(filter-out $(common-objs),$(mconf-objs) \
-						     $(qconf-objs) \
-						     $(nconf-objs)), \
-  $(eval $(obj)/$f: CFLAGS+=$$(HOSTCFLAGS_$f)))
-
-$(foreach f,$(qconf-cxxobjs), \
-  $(eval $(obj)/$f: CXXFLAGS+=$$(HOSTCXXFLAGS_$f)))
+define link_rule
+$(1): LDLIBS+=$$(HOSTLDLIBS_$(1))
+$(1): $($(1)-objs) $$($(1)-cxxobjs)
+$(if $($(1)-cxxobjs),	$(CXX) $$(LDFLAGS) -o $$@ $$^ $$(LDLIBS))
+all-objs += $($(1)-objs)
+all-cxxobjs += $($(1)-cxxobjs)
+endef
 
-$(obj)/conf: $(addprefix $(obj)/,$(conf-objs))
+all-objs:=
+all-cxxobjs:=
+$(foreach f,$(hostprogs),$(eval $(call link_rule,$f)))
 
-# The *conf-cfg file is used (then filtered out) as the first prerequisite to
-# avoid sourcing it before the script is built, when trying to compute CFLAGS
-# for the actual first prerequisite.  This avoids errors like:
-# '/bin/sh: ./mconf-cfg: No such file or directory'
-$(obj)/mconf: mconf-cfg $(addprefix $(obj)/,$(mconf-objs))
-	$(CC) -o $@ $(filter-out mconf-cfg,$^) $(HOSTLDLIBS_mconf)
 
-$(obj)/nconf: nconf-cfg $(addprefix $(obj)/,$(nconf-objs))
-	$(CC) -o $@ $(filter-out nconf-cfg,$^) $(HOSTLDLIBS_nconf)
+$(foreach f,$(sort $(all-objs)), \
+  $(eval $f: CFLAGS+=$$(HOSTCFLAGS_$f)))
 
-$(obj)/qconf: qconf-cfg $(addprefix $(obj)/,$(qconf-cxxobjs) $(qconf-objs))
-	$(CXX) -o $@ $(filter-out qconf-cfg,$^) $(HOSTLDLIBS_qconf)
+$(foreach f,$(sort $(all-cxxobjs)), \
+  $(eval $f: CXXFLAGS+=$$(HOSTCXXFLAGS_$f)))
diff --git a/scripts/config/README b/scripts/config/README
index 99a7d535ab..e1ebf89cbf 100644
--- a/scripts/config/README
+++ b/scripts/config/README
@@ -1,6 +1,7 @@
-These files were taken from the Linux 5.14 Kernel Configuration System and
-modified for the OpenWrt Buildroot:
- - Removed nconf, gconf, tests and kernel configuration targets.
+These files were taken from the Linux Kernel Configuration System v6.6.16, 
+at commit eb3e299184cc4f40d4bd84fda269b3a20ddcff80 (Feb 5, 2024),  and modified
+for the OpenWrt Buildroot:
+ - Removed gconf, tests and kernel configuration targets.
  - Adjusted the Makefile to compile outside the kernel.
  - Always use default file when running make all{no,mod,yes}config.
  - Added a 'reset' command to reset config when the target changes.
@@ -23,4 +24,4 @@ modified for the OpenWrt Buildroot:
    BUILD_SHIPPED_FILES defined
 
 For a full list of changes, see the repository at:
-https://github.com/cotequeiroz/linux/commits/openwrt-5.14/scripts/kconfig
+https://github.com/cotequeiroz/linux/commits/openwrt-v6.6.16/scripts/kconfig
diff --git a/scripts/config/conf.c b/scripts/config/conf.c
index 978abebe65..1bd6f4fa8b 100644
--- a/scripts/config/conf.c
+++ b/scripts/config/conf.c
@@ -35,6 +35,7 @@ enum input_mode {
 	olddefconfig,
 	yes2modconfig,
 	mod2yesconfig,
+	mod2noconfig,
 	fatalrecursive,
 };
 static enum input_mode input_mode = oldaskconfig;
@@ -164,8 +165,6 @@ enum conf_def_mode {
 	def_default,
 	def_yes,
 	def_mod,
-	def_y2m,
-	def_m2y,
 	def_no,
 	def_random
 };
@@ -303,12 +302,10 @@ static bool conf_set_all_new_symbols(enum conf_def_mode mode)
 	return has_changed;
 }
 
-static void conf_rewrite_mod_or_yes(enum conf_def_mode mode)
+static void conf_rewrite_tristates(tristate old_val, tristate new_val)
 {
 	struct symbol *sym;
 	int i;
-	tristate old_val = (mode == def_y2m) ? yes : mod;
-	tristate new_val = (mode == def_y2m) ? mod : yes;
 
 	for_all_symbols(i, sym) {
 		if (sym_get_type(sym) == S_TRISTATE &&
@@ -555,7 +552,7 @@ static int conf_choice(struct menu *menu)
 			print_help(child);
 			continue;
 		}
-		sym_set_choice_value(sym, child->sym);
+		sym_set_tristate_value(child->sym, yes);
 		for (child = child->list; child; child = child->next) {
 			indent += 2;
 			conf(child);
@@ -647,19 +644,8 @@ static void check_conf(struct menu *menu)
 
 		switch (input_mode) {
 		case listnewconfig:
-			if (sym->name) {
-				const char *str;
-
-				if (sym->type == S_STRING) {
-					str = sym_get_string_value(sym);
-					str = sym_escape_string_value(str);
-					printf("%s%s=%s\n", CONFIG_, sym->name, str);
-					free((void *)str);
-				} else {
-					str = sym_get_string_value(sym);
-					printf("%s%s=%s\n", CONFIG_, sym->name, str);
-				}
-			}
+			if (sym->name)
+				print_symbol_for_listconfig(sym);
 			break;
 		case helpnewconfig:
 			printf("-----\n");
@@ -697,7 +683,8 @@ static const struct option long_opts[] = {
 	{"olddefconfig",  no_argument,       &input_mode_opt, olddefconfig},
 	{"yes2modconfig", no_argument,       &input_mode_opt, yes2modconfig},
 	{"mod2yesconfig", no_argument,       &input_mode_opt, mod2yesconfig},
-	{"fatalrecursive",no_argument,       NULL, fatalrecursive},
+	{"mod2noconfig",  no_argument,       &input_mode_opt, mod2noconfig},
+	{"fatalrecursive",no_argument,       &input_mode_opt, fatalrecursive},
 	{NULL, 0, NULL, 0}
 };
 
@@ -707,8 +694,10 @@ static void conf_usage(const char *progname)
 	printf("\n");
 	printf("Generic options:\n");
 	printf("  -h, --help              Print this message and exit.\n");
+	printf("  -r <file>               Read <file> as input.\n");
 	printf("  -s, --silent            Do not print log.\n");
-	printf("      --fatalrecursive    Treat recursive depenendencies as a fatal error\n");
+	printf("  -w <file>               Write config to <file>.\n");
+	printf("  --fatalrecursive        Treat recursive dependency as error.\n");
 	printf("\n");
 	printf("Mode options:\n");
 	printf("  --listnewconfig         List new options\n");
@@ -727,6 +716,7 @@ static void conf_usage(const char *progname)
 	printf("  --randconfig            New config with random answer to all options\n");
 	printf("  --yes2modconfig         Change answers from yes to mod if possible\n");
 	printf("  --mod2yesconfig         Change answers from mod to yes if possible\n");
+	printf("  --mod2noconfig          Change answers from mod to no if possible\n");
 	printf("  (If none of the above is given, --oldaskconfig is the default)\n");
 }
 
@@ -740,27 +730,23 @@ int main(int ac, char **av)
 
 	tty_stdio = isatty(0) && isatty(1);
 
-	while ((opt = getopt_long(ac, av, "hr:sw:", long_opts, NULL)) != -1) {
+	while ((opt = getopt_long(ac, av, "hr:w:s", long_opts, NULL)) != -1) {
 		switch (opt) {
 		case 'h':
 			conf_usage(progname);
 			exit(1);
 			break;
-		case 's':
-			conf_set_message_callback(NULL);
-			break;
-		case fatalrecursive:
-			recursive_is_error = 1;
-			continue;
 		case 'r':
 			input_file = optarg;
 			break;
+		case 's':
+			conf_set_message_callback(NULL);
+			break;
 		case 'w':
 			output_file = optarg;
 			break;
 		case 0:
-			input_mode = input_mode_opt;
-			switch (input_mode) {
+			switch (input_mode_opt) {
 			case syncconfig:
 				/*
 				 * syncconfig is invoked during the build stage.
@@ -777,9 +763,13 @@ int main(int ac, char **av)
 			case randconfig:
 				set_randconfig_seed();
 				break;
+			case fatalrecursive:
+				recursive_is_error = 1;
+				continue;
 			default:
 				break;
 			}
+			input_mode = input_mode_opt;
 		default:
 			break;
 		}
@@ -812,6 +802,7 @@ int main(int ac, char **av)
 	case olddefconfig:
 	case yes2modconfig:
 	case mod2yesconfig:
+	case mod2noconfig:
 	case allnoconfig:
 	case allyesconfig:
 	case allmodconfig:
@@ -858,10 +849,13 @@ int main(int ac, char **av)
 	case savedefconfig:
 		break;
 	case yes2modconfig:
-		conf_rewrite_mod_or_yes(def_y2m);
+		conf_rewrite_tristates(yes, mod);
 		break;
 	case mod2yesconfig:
-		conf_rewrite_mod_or_yes(def_m2y);
+		conf_rewrite_tristates(mod, yes);
+		break;
+	case mod2noconfig:
+		conf_rewrite_tristates(mod, no);
 		break;
 	case oldaskconfig:
 		rootEntry = &rootmenu;
diff --git a/scripts/config/confdata.c b/scripts/config/confdata.c
index dad0b471c7..e3f6fdfeb3 100644
--- a/scripts/config/confdata.c
+++ b/scripts/config/confdata.c
@@ -11,6 +11,7 @@
 #include <fcntl.h>
 #include <limits.h>
 #include <stdarg.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -129,41 +130,22 @@ static size_t depfile_prefix_len;
 /* touch depfile for symbol 'name' */
 static int conf_touch_dep(const char *name)
 {
-	int fd, ret;
-	char *d;
+	int fd;
 
 	/* check overflow: prefix + name + '\0' must fit in buffer. */
 	if (depfile_prefix_len + strlen(name) + 1 > sizeof(depfile_path))
 		return -1;
 
-	d = depfile_path + depfile_prefix_len;
-	strcpy(d, name);
+	strcpy(depfile_path + depfile_prefix_len, name);
 
-	/* Assume directory path already exists. */
 	fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
-	if (fd == -1) {
-		if (errno != ENOENT)
-			return -1;
-
-		ret = make_parent_dir(depfile_path);
-		if (ret)
-			return ret;
-
-		/* Try it again. */
-		fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
-		if (fd == -1)
-			return -1;
-	}
+	if (fd == -1)
+		return -1;
 	close(fd);
 
 	return 0;
 }
 
-struct conf_printer {
-	void (*print_symbol)(FILE *, struct symbol *, const char *, void *);
-	void (*print_comment)(FILE *, const char *, void *);
-};
-
 static void conf_warning(const char *fmt, ...)
 	__attribute__ ((format (printf, 1, 2)));
 
@@ -227,6 +209,20 @@ static const char *conf_get_autoconfig_name(void)
 	return name ? name : "include/config/auto.conf";
 }
 
+static const char *conf_get_autoheader_name(void)
+{
+	char *name = getenv("KCONFIG_AUTOHEADER");
+
+	return name ? name : "include/generated/autoconf.h";
+}
+
+static const char *conf_get_rustccfg_name(void)
+{
+	char *name = getenv("KCONFIG_RUSTCCFG");
+
+	return name ? name : "include/generated/rustc_cfg";
+}
+
 static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
 {
 	char *p2;
@@ -255,19 +251,21 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
 				     p, sym->name);
 		return 1;
 	case S_STRING:
-		if (*p++ != '"')
-			break;
-		for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) {
-			if (*p2 == '"') {
-				*p2 = 0;
+		/* No escaping for S_DEF_AUTO (include/config/auto.conf) */
+		if (def != S_DEF_AUTO) {
+			if (*p++ != '"')
 				break;
+			for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) {
+				if (*p2 == '"') {
+					*p2 = 0;
+					break;
+				}
+				memmove(p2, p2 + 1, strlen(p2));
 			}
-			memmove(p2, p2 + 1, strlen(p2));
-		}
-		if (!p2) {
-			if (def != S_DEF_AUTO)
+			if (!p2) {
 				conf_warning("invalid string found");
-			return 1;
+				return 1;
+			}
 		}
 		/* fall through */
 	case S_INT:
@@ -376,7 +374,11 @@ int conf_read_simple(const char *name, int def)
 	char *p, *p2;
 	struct symbol *sym;
 	int def_flags;
+	const char *warn_unknown;
+	const char *werror;
 
+	warn_unknown = getenv("KCONFIG_WARN_UNKNOWN_SYMBOLS");
+	werror = getenv("KCONFIG_WERROR");
 	if (name) {
 		in = zconf_fopen(name);
 	} else {
@@ -448,6 +450,10 @@ load:
 			if (def == S_DEF_USER) {
 				sym = sym_find(line + 2 + strlen(CONFIG_));
 				if (!sym) {
+					if (warn_unknown)
+						conf_warning("unknown symbol: %s",
+							     line + 2 + strlen(CONFIG_));
+
 					conf_set_changed(true);
 					continue;
 				}
@@ -479,7 +485,7 @@ load:
 
 			sym = sym_find(line + strlen(CONFIG_));
 			if (!sym) {
-				if (def == S_DEF_AUTO)
+				if (def == S_DEF_AUTO) {
 					/*
 					 * Reading from include/config/auto.conf
 					 * If CONFIG_FOO previously existed in
@@ -487,8 +493,13 @@ load:
 					 * include/config/FOO must be touched.
 					 */
 					conf_touch_dep(line + strlen(CONFIG_));
-				else
+				} else {
+					if (warn_unknown)
+						conf_warning("unknown symbol: %s",
+							     line + strlen(CONFIG_));
+
 					conf_set_changed(true);
+				}
 				continue;
 			}
 
@@ -524,6 +535,10 @@ load:
 	}
 	free(line);
 	fclose(in);
+
+	if (conf_warnings && werror)
+		exit(1);
+
 	return 0;
 }
 
@@ -597,169 +612,226 @@ int conf_read(const char *name)
 	return 0;
 }
 
-/*
- * Kconfig configuration printer
- *
- * This printer is used when generating the resulting configuration after
- * kconfig invocation and `defconfig' files. Unset symbol might be omitted by
- * passing a non-NULL argument to the printer.
- *
- */
-static void
-kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
+struct comment_style {
+	const char *decoration;
+	const char *prefix;
+	const char *postfix;
+};
+
+static const struct comment_style comment_style_pound = {
+	.decoration = "#",
+	.prefix = "#",
+	.postfix = "#",
+};
+
+static const struct comment_style comment_style_c = {
+	.decoration = " *",
+	.prefix = "/*",
+	.postfix = " */",
+};
+
+static void conf_write_heading(FILE *fp, const struct comment_style *cs)
 {
+	if (!cs)
+		return;
 
-	switch (sym->type) {
-	case S_BOOLEAN:
-	case S_TRISTATE:
-		if (*value == 'n') {
-			bool skip_unset = (arg != NULL);
+	fprintf(fp, "%s\n", cs->prefix);
 
-			if (!skip_unset)
-				fprintf(fp, "# %s%s is not set\n",
-				    CONFIG_, sym->name);
-			return;
-		}
-		break;
-	default:
-		break;
-	}
+	fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n",
+		cs->decoration);
+
+	fprintf(fp, "%s %s\n", cs->decoration, rootmenu.prompt->text);
 
-	fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value);
+	fprintf(fp, "%s\n", cs->postfix);
 }
 
-static void
-kconfig_print_comment(FILE *fp, const char *value, void *arg)
+/* The returned pointer must be freed on the caller side */
+static char *escape_string_value(const char *in)
 {
-	const char *p = value;
-	size_t l;
+	const char *p;
+	char *out;
+	size_t len;
 
-	for (;;) {
-		l = strcspn(p, "\n");
-		fprintf(fp, "#");
-		if (l) {
-			fprintf(fp, " ");
-			xfwrite(p, l, 1, fp);
-			p += l;
-		}
-		fprintf(fp, "\n");
-		if (*p++ == '\0')
+	len = strlen(in) + strlen("\"\"") + 1;
+
+	p = in;
+	while (1) {
+		p += strcspn(p, "\"\\");
+
+		if (p[0] == '\0')
 			break;
+
+		len++;
+		p++;
+	}
+
+	out = xmalloc(len);
+	out[0] = '\0';
+
+	strcat(out, "\"");
+
+	p = in;
+	while (1) {
+		len = strcspn(p, "\"\\");
+		strncat(out, p, len);
+		p += len;
+
+		if (p[0] == '\0')
+			break;
+
+		strcat(out, "\\");
+		strncat(out, p++, 1);
 	}
+
+	strcat(out, "\"");
+
+	return out;
 }
 
-static struct conf_printer kconfig_printer_cb =
+enum output_n { OUTPUT_N, OUTPUT_N_AS_UNSET, OUTPUT_N_NONE };
+
+static void __print_symbol(FILE *fp, struct symbol *sym, enum output_n output_n,
+			   bool escape_string)
 {
-	.print_symbol = kconfig_print_symbol,
-	.print_comment = kconfig_print_comment,
-};
+	const char *val;
+	char *escaped = NULL;
 
-/*
- * Header printer
- *
- * This printer is used when generating the `include/generated/autoconf.h' file.
- */
-static void
-header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
+	if (sym->type == S_UNKNOWN)
+		return;
+
+	val = sym_get_string_value(sym);
+
+	if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) &&
+	    output_n != OUTPUT_N && *val == 'n') {
+		if (output_n == OUTPUT_N_AS_UNSET)
+			fprintf(fp, "# %s%s is not set\n", CONFIG_, sym->name);
+		return;
+	}
+
+	if (sym->type == S_STRING && escape_string) {
+		escaped = escape_string_value(val);
+		val = escaped;
+	}
+
+	fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, val);
+
+	free(escaped);
+}
+
+static void print_symbol_for_dotconfig(FILE *fp, struct symbol *sym)
 {
+	__print_symbol(fp, sym, OUTPUT_N_AS_UNSET, true);
+}
+
+static void print_symbol_for_autoconf(FILE *fp, struct symbol *sym)
+{
+	__print_symbol(fp, sym, OUTPUT_N_NONE, false);
+}
+
+void print_symbol_for_listconfig(struct symbol *sym)
+{
+	__print_symbol(stdout, sym, OUTPUT_N, true);
+}
+
+static void print_symbol_for_c(FILE *fp, struct symbol *sym)
+{
+	const char *val;
+	const char *sym_suffix = "";
+	const char *val_prefix = "";
+	char *escaped = NULL;
+
+	if (sym->type == S_UNKNOWN)
+		return;
+
+	val = sym_get_string_value(sym);
 
 	switch (sym->type) {
 	case S_BOOLEAN:
-	case S_TRISTATE: {
-		const char *suffix = "";
-
-		switch (*value) {
+	case S_TRISTATE:
+		switch (*val) {
 		case 'n':
-			break;
+			return;
 		case 'm':
-			suffix = "_MODULE";
+			sym_suffix = "_MODULE";
 			/* fall through */
 		default:
-			fprintf(fp, "#define %s%s%s 1\n",
-			    CONFIG_, sym->name, suffix);
+			val = "1";
 		}
 		break;
-	}
-	case S_HEX: {
-		const char *prefix = "";
-
-		if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X'))
-			prefix = "0x";
-		fprintf(fp, "#define %s%s %s%s\n",
-		    CONFIG_, sym->name, prefix, value);
+	case S_HEX:
+		if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X'))
+			val_prefix = "0x";
 		break;
-	}
 	case S_STRING:
-	case S_INT:
-		fprintf(fp, "#define %s%s %s\n",
-		    CONFIG_, sym->name, value);
-		break;
+		escaped = escape_string_value(val);
+		val = escaped;
 	default:
 		break;
 	}
 
-}
-
-static void
-header_print_comment(FILE *fp, const char *value, void *arg)
-{
-	const char *p = value;
-	size_t l;
+	fprintf(fp, "#define %s%s%s %s%s\n", CONFIG_, sym->name, sym_suffix,
+		val_prefix, val);
 
-	fprintf(fp, "/*\n");
-	for (;;) {
-		l = strcspn(p, "\n");
-		fprintf(fp, " *");
-		if (l) {
-			fprintf(fp, " ");
-			xfwrite(p, l, 1, fp);
-			p += l;
-		}
-		fprintf(fp, "\n");
-		if (*p++ == '\0')
-			break;
-	}
-	fprintf(fp, " */\n");
+	free(escaped);
 }
 
-static struct conf_printer header_printer_cb =
+static void print_symbol_for_rustccfg(FILE *fp, struct symbol *sym)
 {
-	.print_symbol = header_print_symbol,
-	.print_comment = header_print_comment,
-};
+	const char *val;
+	const char *val_prefix = "";
+	char *val_prefixed = NULL;
+	size_t val_prefixed_len;
+	char *escaped = NULL;
 
-static void conf_write_symbol(FILE *fp, struct symbol *sym,
-			      struct conf_printer *printer, void *printer_arg)
-{
-	const char *str;
+	if (sym->type == S_UNKNOWN)
+		return;
+
+	val = sym_get_string_value(sym);
 
 	switch (sym->type) {
-	case S_UNKNOWN:
+	case S_BOOLEAN:
+	case S_TRISTATE:
+		/*
+		 * We do not care about disabled ones, i.e. no need for
+		 * what otherwise are "comments" in other printers.
+		 */
+		if (*val == 'n')
+			return;
+
+		/*
+		 * To have similar functionality to the C macro `IS_ENABLED()`
+		 * we provide an empty `--cfg CONFIG_X` here in both `y`
+		 * and `m` cases.
+		 *
+		 * Then, the common `fprintf()` below will also give us
+		 * a `--cfg CONFIG_X="y"` or `--cfg CONFIG_X="m"`, which can
+		 * be used as the equivalent of `IS_BUILTIN()`/`IS_MODULE()`.
+		 */
+		fprintf(fp, "--cfg=%s%s\n", CONFIG_, sym->name);
 		break;
-	case S_STRING:
-		str = sym_get_string_value(sym);
-		str = sym_escape_string_value(str);
-		printer->print_symbol(fp, sym, str, printer_arg);
-		free((void *)str);
+	case S_HEX:
+		if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X'))
+			val_prefix = "0x";
 		break;
 	default:
-		str = sym_get_string_value(sym);
-		printer->print_symbol(fp, sym, str, printer_arg);
+		break;
 	}
-}
 
-static void
-conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg)
-{
-	char buf[256];
+	if (strlen(val_prefix) > 0) {
+		val_prefixed_len = strlen(val) + strlen(val_prefix) + 1;
+		val_prefixed = xmalloc(val_prefixed_len);
+		snprintf(val_prefixed, val_prefixed_len, "%s%s", val_prefix, val);
+		val = val_prefixed;
+	}
+
+	/* All values get escaped: the `--cfg` option only takes strings */
+	escaped = escape_string_value(val);
+	val = escaped;
 
-	snprintf(buf, sizeof(buf),
-	    "\n"
-	    "Automatically generated file; DO NOT EDIT.\n"
-	    "%s\n",
-	    rootmenu.prompt->text);
+	fprintf(fp, "--cfg=%s%s=%s\n", CONFIG_, sym->name, val);
 
-	printer->print_comment(fp, buf, printer_arg);
+	free(escaped);
+	free(val_prefixed);
 }
 
 /*
@@ -818,7 +890,7 @@ int conf_write_defconfig(const char *filename)
 						goto next_menu;
 				}
 			}
-			conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
+			print_symbol_for_dotconfig(out, sym);
 		}
 next_menu:
 		if (menu->list != NULL) {
@@ -878,7 +950,7 @@ int conf_write(const char *name)
 	if (!out)
 		return 1;
 
-	conf_write_heading(out, &kconfig_printer_cb, NULL);
+	conf_write_heading(out, &comment_style_pound);
 
 	if (!conf_get_changed())
 		sym_clear_all_valid();
@@ -905,7 +977,7 @@ int conf_write(const char *name)
 				need_newline = false;
 			}
 			sym->flags |= SYMBOL_WRITTEN;
-			conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
+			print_symbol_for_dotconfig(out, sym);
 		}
 
 next:
@@ -913,19 +985,20 @@ next:
 			menu = menu->list;
 			continue;
 		}
-		if (menu->next)
+
+end_check:
+		if (!menu->sym && menu_is_visible(menu) && menu != &rootmenu &&
+		    menu->prompt->type == P_MENU) {
+			fprintf(out, "# end of %s\n", menu_get_prompt(menu));
+			need_newline = true;
+		}
+
+		if (menu->next) {
 			menu = menu->next;
-		else while ((menu = menu->parent)) {
-			if (!menu->sym && menu_is_visible(menu) &&
-			    menu != &rootmenu) {
-				str = menu_get_prompt(menu);
-				fprintf(out, "# end of %s\n", str);
-				need_newline = true;
-			}
-			if (menu->next) {
-				menu = menu->next;
-				break;
-			}
+		} else {
+			menu = menu->parent;
+			if (menu)
+				goto end_check;
 		}
 	}
 	fclose(out);
@@ -955,45 +1028,69 @@ next:
 }
 
 /* write a dependency file as used by kbuild to track dependencies */
-static int conf_write_dep(const char *name)
+static int conf_write_autoconf_cmd(const char *autoconf_name)
 {
+	char name[PATH_MAX], tmp[PATH_MAX];
 	struct file *file;
 	FILE *out;
+	int ret;
 
-	out = fopen("..config.tmp", "w");
-	if (!out)
-		return 1;
-	fprintf(out, "deps_config := \\\n");
-	for (file = file_list; file; file = file->next) {
-		if (file->next)
-			fprintf(out, "\t%s \\\n", file->name);
-		else
-			fprintf(out, "\t%s\n", file->name);
+	ret = snprintf(name, sizeof(name), "%s.cmd", autoconf_name);
+	if (ret >= sizeof(name)) /* check truncation */
+		return -1;
+
+	if (make_parent_dir(name))
+		return -1;
+
+	ret = snprintf(tmp, sizeof(tmp), "%s.cmd.tmp", autoconf_name);
+	if (ret >= sizeof(tmp)) /* check truncation */
+		return -1;
+
+	out = fopen(tmp, "w");
+	if (!out) {
+		perror("fopen");
+		return -1;
 	}
-	fprintf(out, "\n%s: \\\n"
-		     "\t$(deps_config)\n\n", conf_get_autoconfig_name());
 
-	env_write_dep(out, conf_get_autoconfig_name());
+	fprintf(out, "deps_config := \\\n");
+	for (file = file_list; file; file = file->next)
+		fprintf(out, "\t%s \\\n", file->name);
+
+	fprintf(out, "\n%s: $(deps_config)\n\n", autoconf_name);
+
+	env_write_dep(out, autoconf_name);
 
 	fprintf(out, "\n$(deps_config): ;\n");
+
+	fflush(out);
+	ret = ferror(out); /* error check for all fprintf() calls */
 	fclose(out);
+	if (ret)
+		return -1;
+
+	if (rename(tmp, name)) {
+		perror("rename");
+		return -1;
+	}
 
-	if (make_parent_dir(name))
-		return 1;
-	rename("..config.tmp", name);
 	return 0;
 }
 
 static int conf_touch_deps(void)
 {
-	const char *name;
+	const char *name, *tmp;
 	struct symbol *sym;
 	int res, i;
 
-	strcpy(depfile_path, "include/config/");
-	depfile_prefix_len = strlen(depfile_path);
-
 	name = conf_get_autoconfig_name();
+	tmp = strrchr(name, '/');
+	depfile_prefix_len = tmp ? tmp - name + 1 : 0;
+	if (depfile_prefix_len + 1 > sizeof(depfile_path))
+		return -1;
+
+	strncpy(depfile_path, name, depfile_prefix_len);
+	depfile_path[depfile_prefix_len] = 0;
+
 	conf_read_simple(name, S_DEF_AUTO);
 	sym_calc_value(modules_sym);
 
@@ -1056,13 +1153,54 @@ static int conf_touch_deps(void)
 	return 0;
 }
 
+static int __conf_write_autoconf(const char *filename,
+				 void (*print_symbol)(FILE *, struct symbol *),
+				 const struct comment_style *comment_style)
+{
+	char tmp[PATH_MAX];
+	FILE *file;
+	struct symbol *sym;
+	int ret, i;
+
+	if (make_parent_dir(filename))
+		return -1;
+
+	ret = snprintf(tmp, sizeof(tmp), "%s.tmp", filename);
+	if (ret >= sizeof(tmp)) /* check truncation */
+		return -1;
+
+	file = fopen(tmp, "w");
+	if (!file) {
+		perror("fopen");
+		return -1;
+	}
+
+	conf_write_heading(file, comment_style);
+
+	for_all_symbols(i, sym)
+		if ((sym->flags & SYMBOL_WRITE) && sym->name)
+			print_symbol(file, sym);
+
+	fflush(file);
+	/* check possible errors in conf_write_heading() and print_symbol() */
+	ret = ferror(file);
+	fclose(file);
+	if (ret)
+		return -1;
+
+	if (rename(tmp, filename)) {
+		perror("rename");
+		return -1;
+	}
+
+	return 0;
+}
+
 int conf_write_autoconf(int overwrite)
 {
 	struct symbol *sym;
-	const char *name;
 	const char *autoconf_name = conf_get_autoconfig_name();
-	FILE *out, *out_h;
-	int i;
+	int ret, i;
 
 #ifndef OPENWRT_DOES_NOT_WANT_THIS
 	return 0;
@@ -1070,52 +1208,38 @@ int conf_write_autoconf(int overwrite)
 	if (!overwrite && is_present(autoconf_name))
 		return 0;
 
-	conf_write_dep("include/config/auto.conf.cmd");
+	ret = conf_write_autoconf_cmd(autoconf_name);
+	if (ret)
+		return -1;
 
 	if (conf_touch_deps())
 		return 1;
 
-	out = fopen(".tmpconfig", "w");
-	if (!out)
-		return 1;
-
-	out_h = fopen(".tmpconfig.h", "w");
-	if (!out_h) {
-		fclose(out);
-		return 1;
-	}
-
-	conf_write_heading(out, &kconfig_printer_cb, NULL);
-	conf_write_heading(out_h, &header_printer_cb, NULL);
-
-	for_all_symbols(i, sym) {
+	for_all_symbols(i, sym)
 		sym_calc_value(sym);
-		if (!(sym->flags & SYMBOL_WRITE) || !sym->name)
-			continue;
 
-		/* write symbols to auto.conf and autoconf.h */
-		conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1);
-		conf_write_symbol(out_h, sym, &header_printer_cb, NULL);
-	}
-	fclose(out);
-	fclose(out_h);
+	ret = __conf_write_autoconf(conf_get_autoheader_name(),
+				    print_symbol_for_c,
+				    &comment_style_c);
+	if (ret)
+		return ret;
 
-	name = getenv("KCONFIG_AUTOHEADER");
-	if (!name)
-		name = "include/generated/autoconf.h";
-	if (make_parent_dir(name))
-		return 1;
-	if (rename(".tmpconfig.h", name))
-		return 1;
+	ret = __conf_write_autoconf(conf_get_rustccfg_name(),
+				    print_symbol_for_rustccfg,
+				    NULL);
+	if (ret)
+		return ret;
 
-	if (make_parent_dir(autoconf_name))
-		return 1;
 	/*
-	 * This must be the last step, kbuild has a dependency on auto.conf
-	 * and this marks the successful completion of the previous steps.
+	 * Create include/config/auto.conf. This must be the last step because
+	 * Kbuild has a dependency on auto.conf and this marks the successful
+	 * completion of the previous steps.
 	 */
-	if (rename(".tmpconfig", autoconf_name))
-		return 1;
+	ret = __conf_write_autoconf(conf_get_autoconfig_name(),
+				    print_symbol_for_autoconf,
+				    &comment_style_pound);
+	if (ret)
+		return ret;
 
 	return 0;
 }
@@ -1125,10 +1249,12 @@ static void (*conf_changed_callback)(void);
 
 void conf_set_changed(bool val)
 {
-	if (conf_changed_callback && conf_changed != val)
-		conf_changed_callback();
+	bool changed = conf_changed != val;
 
 	conf_changed = val;
+
+	if (conf_changed_callback && changed)
+		conf_changed_callback();
 }
 
 bool conf_get_changed(void)
diff --git a/scripts/config/expr.h b/scripts/config/expr.h
index c2fa804fe1..005e27f130 100644
--- a/scripts/config/expr.h
+++ b/scripts/config/expr.h
@@ -276,7 +276,6 @@ struct jump_key {
 	struct list_head entries;
 	size_t offset;
 	struct menu *target;
-	int index;
 };
 
 extern struct file *file_list;
diff --git a/scripts/config/lexer.l b/scripts/config/lexer.l
index 0df51ec468..e73b262539 100644
--- a/scripts/config/lexer.l
+++ b/scripts/config/lexer.l
@@ -86,8 +86,7 @@ static void warn_ignored_character(char chr)
 n	[A-Za-z0-9_-]
 
 %%
-	int str = 0;
-	int ts, i;
+	char open_quote = 0;
 
 #.*			/* ignore comment */
 [ \t]*			/* whitespaces */
@@ -137,7 +136,7 @@ n	[A-Za-z0-9_-]
 ":="			return T_COLON_EQUAL;
 "+="			return T_PLUS_EQUAL;
 \"|\'			{
-				str = yytext[0];
+				open_quote = yytext[0];
 				new_string();
 				BEGIN(STRING);
 			}
@@ -174,7 +173,7 @@ n	[A-Za-z0-9_-]
 		append_string(yytext + 1, yyleng - 1);
 	}
 	\'|\"	{
-		if (str == yytext[0]) {
+		if (open_quote == yytext[0]) {
 			BEGIN(INITIAL);
 			yylval.string = text;
 			return T_WORD_QUOTE;
@@ -199,6 +198,8 @@ n	[A-Za-z0-9_-]
 
 <HELP>{
 	[ \t]+	{
+		int ts, i;
+
 		ts = 0;
 		for (i = 0; i < yyleng; i++) {
 			if (yytext[i] == '\t')
diff --git a/scripts/config/lexer.lex.c b/scripts/config/lexer.lex.c
index 826c06e4e7..c57119fa23 100644
--- a/scripts/config/lexer.lex.c
+++ b/scripts/config/lexer.lex.c
@@ -14,6 +14,7 @@
 /* First, we deal with  platform-specific or compiler-specific issues. */
 
 /* begin standard C headers. */
+
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
@@ -30,8 +31,8 @@
 
 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
+/* C++ systems might need __STDC_LIMIT_MACROS defined before including
+ * <stdint.h>, if you want the limit (max/min) macros for int types.
  */
 #ifndef __STDC_LIMIT_MACROS
 #define __STDC_LIMIT_MACROS 1
@@ -2538,8 +2539,7 @@ YY_DECL
 
 	{
 
-	int str = 0;
-	int ts, i;
+	char open_quote = 0;
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -2772,7 +2772,7 @@ return T_PLUS_EQUAL;
 case 48:
 YY_RULE_SETUP
 {
-				str = yytext[0];
+				open_quote = yytext[0];
 				new_string();
 				BEGIN(STRING);
 			}
@@ -2837,7 +2837,7 @@ YY_RULE_SETUP
 case 58:
 YY_RULE_SETUP
 {
-		if (str == yytext[0]) {
+		if (open_quote == yytext[0]) {
 			BEGIN(INITIAL);
 			yylval.string = text;
 			return T_WORD_QUOTE;
@@ -2869,6 +2869,8 @@ case YY_STATE_EOF(STRING):
 case 60:
 YY_RULE_SETUP
 {
+		int ts, i;
+
 		ts = 0;
 		for (i = 0; i < yyleng; i++) {
 			if (yytext[i] == '\t')
diff --git a/scripts/config/lkc.h b/scripts/config/lkc.h
index a7b18b2276..1c8717de78 100644
--- a/scripts/config/lkc.h
+++ b/scripts/config/lkc.h
@@ -77,7 +77,7 @@ struct gstr str_new(void);
 void str_free(struct gstr *gs);
 void str_append(struct gstr *gs, const char *s);
 void str_printf(struct gstr *gs, const char *fmt, ...);
-const char *str_get(struct gstr *gs);
+char *str_get(struct gstr *gs);
 
 /* menu.c */
 void _menu_init(void);
@@ -100,10 +100,10 @@ bool menu_is_empty(struct menu *menu);
 bool menu_is_visible(struct menu *menu);
 bool menu_has_prompt(struct menu *menu);
 const char *menu_get_prompt(struct menu *menu);
-struct menu *menu_get_root_menu(struct menu *menu);
 struct menu *menu_get_parent_menu(struct menu *menu);
 bool menu_has_help(struct menu *menu);
 const char *menu_get_help(struct menu *menu);
+int get_jump_key_char(void);
 struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head);
 void menu_get_ext_help(struct menu *menu, struct gstr *help);
 
@@ -126,11 +126,6 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym)
 	return (struct symbol *)sym->curr.val;
 }
 
-static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
-{
-	return sym_set_tristate_value(chval, yes);
-}
-
 static inline bool sym_is_choice(struct symbol *sym)
 {
 	return sym->flags & SYMBOL_CHOICE ? true : false;
diff --git a/scripts/config/lkc_proto.h b/scripts/config/lkc_proto.h
index ebedd230b3..4babf6435a 100644
--- a/scripts/config/lkc_proto.h
+++ b/scripts/config/lkc_proto.h
@@ -19,7 +19,7 @@ extern struct symbol * symbol_hash[SYMBOL_HASHSIZE];
 
 struct symbol * sym_lookup(const char *name, int flags);
 struct symbol * sym_find(const char *name);
-const char * sym_escape_string_value(const char *in);
+void print_symbol_for_listconfig(struct symbol *sym);
 struct symbol ** sym_re_search(const char *pattern);
 const char * sym_type_name(enum symbol_type type);
 void sym_calc_value(struct symbol *sym);
diff --git a/scripts/config/lxdialog/dialog.h b/scripts/config/lxdialog/dialog.h
index 3930d93a4a..3128bd6d76 100644
--- a/scripts/config/lxdialog/dialog.h
+++ b/scripts/config/lxdialog/dialog.h
@@ -18,22 +18,6 @@
 #endif
 #include <ncurses.h>
 
-/*
- * Colors in ncurses 1.9.9e do not work properly since foreground and
- * background colors are OR'd rather than separately masked.  This version
- * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
- * with standard curses.  The simplest fix (to make this work with standard
- * curses) uses the wbkgdset() function, not used in the original hack.
- * Turn it off if we're building with 1.9.9e, since it just confuses things.
- */
-#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
-#define OLD_NCURSES 1
-#undef  wbkgdset
-#define wbkgdset(w,p)		/*nothing */
-#else
-#define OLD_NCURSES 0
-#endif
-
 #define TR(params) _tracef params
 
 #define KEY_ESC 27
@@ -212,27 +196,12 @@ int first_alpha(const char *string, const char *exempt);
 int dialog_yesno(const char *title, const char *prompt, int height, int width);
 int dialog_msgbox(const char *title, const char *prompt, int height,
 		  int width, int pause);
-
-
-typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void
-			       *_data);
-int dialog_textbox(const char *title, char *tbuf, int initial_height,
-		   int initial_width, int *keys, int *_vscroll, int *_hscroll,
-		   update_text_fn update_text, void *data);
+int dialog_textbox(const char *title, const char *tbuf, int initial_height,
+		   int initial_width, int *_vscroll, int *_hscroll,
+		   int (*extra_key_cb)(int, size_t, size_t, void *), void *data);
 int dialog_menu(const char *title, const char *prompt,
 		const void *selected, int *s_scroll);
 int dialog_checklist(const char *title, const char *prompt, int height,
 		     int width, int list_height);
 int dialog_inputbox(const char *title, const char *prompt, int height,
 		    int width, const char *init);
-
-/*
- * This is the base for fictitious keys, which activate
- * the buttons.
- *
- * Mouse-generated keys are the following:
- *   -- the first 32 are used as numbers, in addition to '0'-'9'
- *   -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
- *   -- uppercase chars are used to invoke the button (M_EVENT + 'O')
- */
-#define M_EVENT (KEY_MAX+1)
diff --git a/scripts/config/lxdialog/menubox.c b/scripts/config/lxdialog/menubox.c
index 4287745566..bcdf3bbac9 100644
--- a/scripts/config/lxdialog/menubox.c
+++ b/scripts/config/lxdialog/menubox.c
@@ -63,15 +63,7 @@ static void do_print_item(WINDOW * win, const char *item, int line_y,
 	/* Clear 'residue' of last item */
 	wattrset(win, dlg.menubox.atr);
 	wmove(win, line_y, 0);
-#if OLD_NCURSES
-	{
-		int i;
-		for (i = 0; i < menu_width; i++)
-			waddch(win, ' ');
-	}
-#else
 	wclrtoeol(win);
-#endif
 	wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
 	mvwaddstr(win, line_y, item_x, menu_item);
 	if (hotkey) {
diff --git a/scripts/config/lxdialog/textbox.c b/scripts/config/lxdialog/textbox.c
index b5987735b0..e02acb7493 100644
--- a/scripts/config/lxdialog/textbox.c
+++ b/scripts/config/lxdialog/textbox.c
@@ -8,41 +8,149 @@
 
 #include "dialog.h"
 
-static void back_lines(int n);
-static void print_page(WINDOW *win, int height, int width, update_text_fn
-		       update_text, void *data);
-static void print_line(WINDOW *win, int row, int width);
-static char *get_line(void);
-static void print_position(WINDOW * win);
-
 static int hscroll;
 static int begin_reached, end_reached, page_length;
-static char *buf;
-static char *page;
+static const char *buf, *page;
+static size_t start, end;
+
+/*
+ * Go back 'n' lines in text. Called by dialog_textbox().
+ * 'page' will be updated to point to the desired line in 'buf'.
+ */
+static void back_lines(int n)
+{
+	int i;
+
+	begin_reached = 0;
+	/* Go back 'n' lines */
+	for (i = 0; i < n; i++) {
+		if (*page == '\0') {
+			if (end_reached) {
+				end_reached = 0;
+				continue;
+			}
+		}
+		if (page == buf) {
+			begin_reached = 1;
+			return;
+		}
+		page--;
+		do {
+			if (page == buf) {
+				begin_reached = 1;
+				return;
+			}
+			page--;
+		} while (*page != '\n');
+		page++;
+	}
+}
+
+/*
+ * Return current line of text. Called by dialog_textbox() and print_line().
+ * 'page' should point to start of current line before calling, and will be
+ * updated to point to start of next line.
+ */
+static char *get_line(void)
+{
+	int i = 0;
+	static char line[MAX_LEN + 1];
+
+	end_reached = 0;
+	while (*page != '\n') {
+		if (*page == '\0') {
+			end_reached = 1;
+			break;
+		} else if (i < MAX_LEN)
+			line[i++] = *(page++);
+		else {
+			/* Truncate lines longer than MAX_LEN characters */
+			if (i == MAX_LEN)
+				line[i++] = '\0';
+			page++;
+		}
+	}
+	if (i <= MAX_LEN)
+		line[i] = '\0';
+	if (!end_reached)
+		page++;		/* move past '\n' */
+
+	return line;
+}
+
+/*
+ * Print a new line of text.
+ */
+static void print_line(WINDOW *win, int row, int width)
+{
+	char *line;
+
+	line = get_line();
+	line += MIN(strlen(line), hscroll);	/* Scroll horizontally */
+	wmove(win, row, 0);	/* move cursor to correct line */
+	waddch(win, ' ');
+	waddnstr(win, line, MIN(strlen(line), width - 2));
+
+	/* Clear 'residue' of previous line */
+	wclrtoeol(win);
+}
+
+/*
+ * Print a new page of text.
+ */
+static void print_page(WINDOW *win, int height, int width)
+{
+	int i, passed_end = 0;
+
+	page_length = 0;
+	for (i = 0; i < height; i++) {
+		print_line(win, i, width);
+		if (!passed_end)
+			page_length++;
+		if (end_reached && !passed_end)
+			passed_end = 1;
+	}
+	wnoutrefresh(win);
+}
+
+/*
+ * Print current position
+ */
+static void print_position(WINDOW *win)
+{
+	int percent;
+
+	wattrset(win, dlg.position_indicator.atr);
+	wbkgdset(win, dlg.position_indicator.atr & A_COLOR);
+	percent = (page - buf) * 100 / strlen(buf);
+	wmove(win, getmaxy(win) - 3, getmaxx(win) - 9);
+	wprintw(win, "(%3d%%)", percent);
+}
 
 /*
  * refresh window content
  */
 static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw,
-			     int cur_y, int cur_x, update_text_fn update_text,
-			     void *data)
+			     int cur_y, int cur_x)
 {
-	print_page(box, boxh, boxw, update_text, data);
+	start = page - buf;
+
+	print_page(box, boxh, boxw);
 	print_position(dialog);
 	wmove(dialog, cur_y, cur_x);	/* Restore cursor position */
 	wrefresh(dialog);
-}
 
+	end = page - buf;
+}
 
 /*
  * Display text from a file in a dialog box.
  *
  * keys is a null-terminated array
- * update_text() may not add or remove any '\n' or '\0' in tbuf
  */
-int dialog_textbox(const char *title, char *tbuf, int initial_height,
-		   int initial_width, int *keys, int *_vscroll, int *_hscroll,
-		   update_text_fn update_text, void *data)
+int dialog_textbox(const char *title, const char *tbuf, int initial_height,
+		   int initial_width, int *_vscroll, int *_hscroll,
+		   int (*extra_key_cb)(int, size_t, size_t, void *), void *data)
 {
 	int i, x, y, cur_x, cur_y, key = 0;
 	int height, width, boxh, boxw;
@@ -122,8 +230,7 @@ do_resize:
 
 	/* Print first page of text */
 	attr_clear(box, boxh, boxw, dlg.dialog.atr);
-	refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text,
-			 data);
+	refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
 
 	while (!done) {
 		key = wgetch(dialog);
@@ -142,8 +249,7 @@ do_resize:
 				begin_reached = 1;
 				page = buf;
 				refresh_text_box(dialog, box, boxh, boxw,
-						 cur_y, cur_x, update_text,
-						 data);
+						 cur_y, cur_x);
 			}
 			break;
 		case 'G':	/* Last page */
@@ -153,8 +259,7 @@ do_resize:
 			/* point to last char in buf */
 			page = buf + strlen(buf);
 			back_lines(boxh);
-			refresh_text_box(dialog, box, boxh, boxw, cur_y,
-					 cur_x, update_text, data);
+			refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
 			break;
 		case 'K':	/* Previous line */
 		case 'k':
@@ -163,8 +268,7 @@ do_resize:
 				break;
 
 			back_lines(page_length + 1);
-			refresh_text_box(dialog, box, boxh, boxw, cur_y,
-					 cur_x, update_text, data);
+			refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
 			break;
 		case 'B':	/* Previous page */
 		case 'b':
@@ -173,8 +277,7 @@ do_resize:
 			if (begin_reached)
 				break;
 			back_lines(page_length + boxh);
-			refresh_text_box(dialog, box, boxh, boxw, cur_y,
-					 cur_x, update_text, data);
+			refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
 			break;
 		case 'J':	/* Next line */
 		case 'j':
@@ -183,8 +286,7 @@ do_resize:
 				break;
 
 			back_lines(page_length - 1);
-			refresh_text_box(dialog, box, boxh, boxw, cur_y,
-					 cur_x, update_text, data);
+			refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
 			break;
 		case KEY_NPAGE:	/* Next page */
 		case ' ':
@@ -193,8 +295,7 @@ do_resize:
 				break;
 
 			begin_reached = 0;
-			refresh_text_box(dialog, box, boxh, boxw, cur_y,
-					 cur_x, update_text, data);
+			refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
 			break;
 		case '0':	/* Beginning of line */
 		case 'H':	/* Scroll left */
@@ -209,8 +310,7 @@ do_resize:
 				hscroll--;
 			/* Reprint current page to scroll horizontally */
 			back_lines(page_length);
-			refresh_text_box(dialog, box, boxh, boxw, cur_y,
-					 cur_x, update_text, data);
+			refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
 			break;
 		case 'L':	/* Scroll right */
 		case 'l':
@@ -220,8 +320,7 @@ do_resize:
 			hscroll++;
 			/* Reprint current page to scroll horizontally */
 			back_lines(page_length);
-			refresh_text_box(dialog, box, boxh, boxw, cur_y,
-					 cur_x, update_text, data);
+			refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
 			break;
 		case KEY_ESC:
 			if (on_key_esc(dialog) == KEY_ESC)
@@ -234,11 +333,9 @@ do_resize:
 			on_key_resize();
 			goto do_resize;
 		default:
-			for (i = 0; keys[i]; i++) {
-				if (key == keys[i]) {
-					done = true;
-					break;
-				}
+			if (extra_key_cb && extra_key_cb(key, start, end, data)) {
+				done = true;
+				break;
 			}
 		}
 	}
@@ -259,137 +356,3 @@ do_resize:
 		*_hscroll = hscroll;
 	return key;
 }
-
-/*
- * Go back 'n' lines in text. Called by dialog_textbox().
- * 'page' will be updated to point to the desired line in 'buf'.
- */
-static void back_lines(int n)
-{
-	int i;
-
-	begin_reached = 0;
-	/* Go back 'n' lines */
-	for (i = 0; i < n; i++) {
-		if (*page == '\0') {
-			if (end_reached) {
-				end_reached = 0;
-				continue;
-			}
-		}
-		if (page == buf) {
-			begin_reached = 1;
-			return;
-		}
-		page--;
-		do {
-			if (page == buf) {
-				begin_reached = 1;
-				return;
-			}
-			page--;
-		} while (*page != '\n');
-		page++;
-	}
-}
-
-/*
- * Print a new page of text.
- */
-static void print_page(WINDOW *win, int height, int width, update_text_fn
-		       update_text, void *data)
-{
-	int i, passed_end = 0;
-
-	if (update_text) {
-		char *end;
-
-		for (i = 0; i < height; i++)
-			get_line();
-		end = page;
-		back_lines(height);
-		update_text(buf, page - buf, end - buf, data);
-	}
-
-	page_length = 0;
-	for (i = 0; i < height; i++) {
-		print_line(win, i, width);
-		if (!passed_end)
-			page_length++;
-		if (end_reached && !passed_end)
-			passed_end = 1;
-	}
-	wnoutrefresh(win);
-}
-
-/*
- * Print a new line of text.
- */
-static void print_line(WINDOW * win, int row, int width)
-{
-	char *line;
-
-	line = get_line();
-	line += MIN(strlen(line), hscroll);	/* Scroll horizontally */
-	wmove(win, row, 0);	/* move cursor to correct line */
-	waddch(win, ' ');
-	waddnstr(win, line, MIN(strlen(line), width - 2));
-
-	/* Clear 'residue' of previous line */
-#if OLD_NCURSES
-	{
-		int x = getcurx(win);
-		int i;
-		for (i = 0; i < width - x; i++)
-			waddch(win, ' ');
-	}
-#else
-	wclrtoeol(win);
-#endif
-}
-
-/*
- * Return current line of text. Called by dialog_textbox() and print_line().
- * 'page' should point to start of current line before calling, and will be
- * updated to point to start of next line.
- */
-static char *get_line(void)
-{
-	int i = 0;
-	static char line[MAX_LEN + 1];
-
-	end_reached = 0;
-	while (*page != '\n') {
-		if (*page == '\0') {
-			end_reached = 1;
-			break;
-		} else if (i < MAX_LEN)
-			line[i++] = *(page++);
-		else {
-			/* Truncate lines longer than MAX_LEN characters */
-			if (i == MAX_LEN)
-				line[i++] = '\0';
-			page++;
-		}
-	}
-	if (i <= MAX_LEN)
-		line[i] = '\0';
-	if (!end_reached)
-		page++;		/* move past '\n' */
-
-	return line;
-}
-
-/*
- * Print current position
- */
-static void print_position(WINDOW * win)
-{
-	int percent;
-
-	wattrset(win, dlg.position_indicator.atr);
-	wbkgdset(win, dlg.position_indicator.atr & A_COLOR);
-	percent = (page - buf) * 100 / strlen(buf);
-	wmove(win, getmaxy(win) - 3, getmaxx(win) - 9);
-	wprintw(win, "(%3d%%)", percent);
-}
diff --git a/scripts/config/mconf-cfg.sh b/scripts/config/mconf-cfg.sh
index 3572369288..4e48cc1d57 100755
--- a/scripts/config/mconf-cfg.sh
+++ b/scripts/config/mconf-cfg.sh
@@ -1,19 +1,22 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0-only
 
+cflags=$1
+libs=$2
+
 PKG="ncursesw"
 PKG2="ncurses"
 
-if [ -n "$(command -v pkg-config)" ]; then
-	if pkg-config --exists $PKG; then
-		echo cflags=\"$(pkg-config --cflags $PKG)\"
-		echo libs=\"$(pkg-config --libs $PKG)\"
+if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
+	if ${HOSTPKG_CONFIG} --exists $PKG; then
+		${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
+		${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}
 		exit 0
 	fi
 
-	if pkg-config --exists $PKG2; then
-		echo cflags=\"$(pkg-config --cflags $PKG2)\"
-		echo libs=\"$(pkg-config --libs $PKG2)\"
+	if ${HOSTPKG_CONFIG} --exists ${PKG2}; then
+		${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags}
+		${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs}
 		exit 0
 	fi
 fi
@@ -22,22 +25,22 @@ fi
 # (Even if it is installed, some distributions such as openSUSE cannot
 # find ncurses by pkg-config.)
 if [ -f /usr/include/ncursesw/ncurses.h ]; then
-	echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\"
-	echo libs=\"-lncursesw\"
+	echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags}
+	echo -lncursesw > ${libs}
 	exit 0
 fi
 
 if [ -f /usr/include/ncurses/ncurses.h ]; then
-	echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\"
-	echo libs=\"-lncurses\"
+	echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags}
+	echo -lncurses > ${libs}
 	exit 0
 fi
 
 # As a final fallback before giving up, check if $HOSTCC knows of a default
 # ncurses installation (e.g. from a vendor-specific sysroot).
 if echo '#include <ncurses.h>' | ${HOSTCC} -E - >/dev/null 2>&1; then
-	echo cflags=\"-D_GNU_SOURCE\"
-	echo libs=\"-lncurses\"
+	echo -D_GNU_SOURCE > ${cflags}
+	echo -lncurses > ${libs}
 	exit 0
 fi
 
@@ -46,7 +49,7 @@ echo >&2 "* Unable to find the ncurses package."
 echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev"
 echo >&2 "* depending on your distribution)."
 echo >&2 "*"
-echo >&2 "* You may also need to install pkg-config to find the"
+echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the"
 echo >&2 "* ncurses installed in a non-default location."
 echo >&2 "*"
 exit 1
diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c
index 81d232b665..d357cf1100 100644
--- a/scripts/config/mconf.c
+++ b/scripts/config/mconf.c
@@ -22,8 +22,6 @@
 #include "lkc.h"
 #include "lxdialog/dialog.h"
 
-#define JUMP_NB			9
-
 static const char mconf_readme[] =
 "OpenWrt config is based on Kernel kconfig\n"
 "so ipkg packages are referred here as modules.\n"
@@ -164,6 +162,12 @@ static const char mconf_readme[] =
 "(especially with a larger number of unrolled categories) than the\n"
 "default mode.\n"
 "\n"
+
+"Search\n"
+"-------\n"
+"Pressing the forward-slash (/) anywhere brings up a search dialog box.\n"
+"\n"
+
 "Different color themes available\n"
 "--------------------------------\n"
 "It is possible to select different color themes using the variable\n"
@@ -285,18 +289,9 @@ static int single_menu_mode;
 static int show_all_options;
 static int save_and_exit;
 static int silent;
+static int jump_key_char;
 
 static void conf(struct menu *menu, struct menu *active_menu);
-static void conf_choice(struct menu *menu);
-static void conf_string(struct menu *menu);
-static void conf_load(void);
-static void conf_save(void);
-static int show_textbox_ext(const char *title, char *text, int r, int c,
-			    int *keys, int *vscroll, int *hscroll,
-			    update_text_fn update_text, void *data);
-static void show_textbox(const char *title, const char *text, int r, int c);
-static void show_helptext(const char *title, const char *text);
-static void show_help(struct menu *menu);
 
 static char filename[PATH_MAX+1];
 static void set_config_filename(const char *config_filename)
@@ -355,37 +350,87 @@ static void reset_subtitle(void)
 	set_dialog_subtitles(subtitles);
 }
 
+static int show_textbox_ext(const char *title, const char *text, int r, int c,
+			    int *vscroll, int *hscroll,
+			    int (*extra_key_cb)(int, size_t, size_t, void *),
+			    void *data)
+{
+	dialog_clear();
+	return dialog_textbox(title, text, r, c, vscroll, hscroll,
+			      extra_key_cb, data);
+}
+
+static void show_textbox(const char *title, const char *text, int r, int c)
+{
+	show_textbox_ext(title, text, r, c, NULL, NULL, NULL, NULL);
+}
+
+static void show_helptext(const char *title, const char *text)
+{
+	show_textbox(title, text, 0, 0);
+}
+
+static void show_help(struct menu *menu)
+{
+	struct gstr help = str_new();
+
+	help.max_width = getmaxx(stdscr) - 10;
+	menu_get_ext_help(menu, &help);
+
+	show_helptext(menu_get_prompt(menu), str_get(&help));
+	str_free(&help);
+}
+
 struct search_data {
 	struct list_head *head;
-	struct menu **targets;
-	int *keys;
+	struct menu *target;
 };
 
-static void update_text(char *buf, size_t start, size_t end, void *_data)
+static int next_jump_key(int key)
+{
+	if (key < '1' || key > '9')
+		return '1';
+
+	key++;
+
+	if (key > '9')
+		key = '1';
+
+	return key;
+}
+
+static int handle_search_keys(int key, size_t start, size_t end, void *_data)
 {
 	struct search_data *data = _data;
 	struct jump_key *pos;
-	int k = 0;
+	int index = 0;
+
+	if (key < '1' || key > '9')
+		return 0;
 
 	list_for_each_entry(pos, data->head, entries) {
-		if (pos->offset >= start && pos->offset < end) {
-			char header[4];
+		index = next_jump_key(index);
 
-			if (k < JUMP_NB) {
-				int key = '0' + (pos->index % JUMP_NB) + 1;
+		if (pos->offset < start)
+			continue;
 
-				sprintf(header, "(%c)", key);
-				data->keys[k] = key;
-				data->targets[k] = pos->target;
-				k++;
-			} else {
-				sprintf(header, "   ");
-			}
+		if (pos->offset >= end)
+			break;
 
-			memcpy(buf + pos->offset, header, sizeof(header) - 1);
+		if (key == index) {
+			data->target = pos->target;
+			return 1;
 		}
 	}
-	data->keys[k] = 0;
+
+	return 0;
+}
+
+int get_jump_key_char(void)
+{
+	jump_key_char = next_jump_key(jump_key_char);
+
+	return jump_key_char;
 }
 
 static void search_conf(void)
@@ -432,27 +477,23 @@ again:
 	sym_arr = sym_re_search(dialog_input);
 	do {
 		LIST_HEAD(head);
-		struct menu *targets[JUMP_NB];
-		int keys[JUMP_NB + 1], i;
 		struct search_data data = {
 			.head = &head,
-			.targets = targets,
-			.keys = keys,
 		};
 		struct jump_key *pos, *tmp;
 
+		jump_key_char = 0;
 		res = get_relations_str(sym_arr, &head);
 		set_subtitle();
-		dres = show_textbox_ext("Search Results", (char *)
-					str_get(&res), 0, 0, keys, &vscroll,
-					&hscroll, &update_text, (void *)
-					&data);
+		dres = show_textbox_ext("Search Results", str_get(&res), 0, 0,
+					&vscroll, &hscroll,
+					handle_search_keys, &data);
 		again = false;
-		for (i = 0; i < JUMP_NB && keys[i]; i++)
-			if (dres == keys[i]) {
-				conf(targets[i]->parent, targets[i]);
-				again = true;
-			}
+		if (dres >= '1' && dres <= '9') {
+			assert(data.target != NULL);
+			conf(data.target->parent, data.target);
+			again = true;
+		}
 		str_free(&res);
 		list_for_each_entry_safe(pos, tmp, &head, entries)
 			free(pos);
@@ -641,158 +682,6 @@ conf_childs:
 	indent -= doint;
 }
 
-static void conf(struct menu *menu, struct menu *active_menu)
-{
-	struct menu *submenu;
-	const char *prompt = menu_get_prompt(menu);
-	struct subtitle_part stpart;
-	struct symbol *sym;
-	int res;
-	int s_scroll = 0;
-
-	if (menu != &rootmenu)
-		stpart.text = menu_get_prompt(menu);
-	else
-		stpart.text = NULL;
-	list_add_tail(&stpart.entries, &trail);
-
-	while (1) {
-		item_reset();
-		current_menu = menu;
-		build_conf(menu);
-		if (!child_count)
-			break;
-		set_subtitle();
-		dialog_clear();
-		res = dialog_menu(prompt ? prompt : "Main Menu",
-				  menu_instructions,
-				  active_menu, &s_scroll);
-		if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)
-			break;
-		if (item_count() != 0) {
-			if (!item_activate_selected())
-				continue;
-			if (!item_tag())
-				continue;
-		}
-		submenu = item_data();
-		active_menu = item_data();
-		if (submenu)
-			sym = submenu->sym;
-		else
-			sym = NULL;
-
-		switch (res) {
-		case 0:
-			switch (item_tag()) {
-			case 'm':
-				if (single_menu_mode)
-					submenu->data = (void *) (long) !submenu->data;
-				else
-					conf(submenu, NULL);
-				break;
-			case 't':
-				if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
-					conf_choice(submenu);
-				else if (submenu->prompt->type == P_MENU)
-					conf(submenu, NULL);
-				break;
-			case 's':
-				conf_string(submenu);
-				break;
-			}
-			break;
-		case 2:
-			if (sym)
-				show_help(submenu);
-			else {
-				reset_subtitle();
-				show_helptext("README", mconf_readme);
-			}
-			break;
-		case 3:
-			reset_subtitle();
-			conf_save();
-			break;
-		case 4:
-			reset_subtitle();
-			conf_load();
-			break;
-		case 5:
-			if (item_is_tag('t')) {
-				if (sym_set_tristate_value(sym, yes))
-					break;
-				if (sym_set_tristate_value(sym, mod))
-					show_textbox(NULL, setmod_text, 6, 74);
-			}
-			break;
-		case 6:
-			if (item_is_tag('t'))
-				sym_set_tristate_value(sym, no);
-			break;
-		case 7:
-			if (item_is_tag('t'))
-				sym_set_tristate_value(sym, mod);
-			break;
-		case 8:
-			if (item_is_tag('t'))
-				sym_toggle_tristate_value(sym);
-			else if (item_is_tag('m'))
-				conf(submenu, NULL);
-			break;
-		case 9:
-			search_conf();
-			break;
-		case 10:
-			show_all_options = !show_all_options;
-			break;
-		}
-	}
-
-	list_del(trail.prev);
-}
-
-static int show_textbox_ext(const char *title, char *text, int r, int c, int
-			    *keys, int *vscroll, int *hscroll, update_text_fn
-			    update_text, void *data)
-{
-	dialog_clear();
-	return dialog_textbox(title, text, r, c, keys, vscroll, hscroll,
-			      update_text, data);
-}
-
-static void show_textbox(const char *title, const char *text, int r, int c)
-{
-	show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL,
-			 NULL, NULL);
-}
-
-static void show_helptext(const char *title, const char *text)
-{
-	show_textbox(title, text, 0, 0);
-}
-
-static void conf_message_callback(const char *s)
-{
-	if (save_and_exit) {
-		if (!silent)
-			printf("%s", s);
-	} else {
-		show_textbox(NULL, s, 6, 60);
-	}
-}
-
-static void show_help(struct menu *menu)
-{
-	struct gstr help = str_new();
-
-	help.max_width = getmaxx(stdscr) - 10;
-	menu_get_ext_help(menu, &help);
-
-	show_helptext(menu_get_prompt(menu), str_get(&help));
-	str_free(&help);
-}
-
 static void conf_choice(struct menu *menu)
 {
 	const char *prompt = menu_get_prompt(menu);
@@ -958,6 +847,127 @@ static void conf_save(void)
 	}
 }
 
+static void conf(struct menu *menu, struct menu *active_menu)
+{
+	struct menu *submenu;
+	const char *prompt = menu_get_prompt(menu);
+	struct subtitle_part stpart;
+	struct symbol *sym;
+	int res;
+	int s_scroll = 0;
+
+	if (menu != &rootmenu)
+		stpart.text = menu_get_prompt(menu);
+	else
+		stpart.text = NULL;
+	list_add_tail(&stpart.entries, &trail);
+
+	while (1) {
+		item_reset();
+		current_menu = menu;
+		build_conf(menu);
+		if (!child_count)
+			break;
+		set_subtitle();
+		dialog_clear();
+		res = dialog_menu(prompt ? prompt : "Main Menu",
+				  menu_instructions,
+				  active_menu, &s_scroll);
+		if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)
+			break;
+		if (item_count() != 0) {
+			if (!item_activate_selected())
+				continue;
+			if (!item_tag())
+				continue;
+		}
+		submenu = item_data();
+		active_menu = item_data();
+		if (submenu)
+			sym = submenu->sym;
+		else
+			sym = NULL;
+
+		switch (res) {
+		case 0:
+			switch (item_tag()) {
+			case 'm':
+				if (single_menu_mode)
+					submenu->data = (void *) (long) !submenu->data;
+				else
+					conf(submenu, NULL);
+				break;
+			case 't':
+				if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
+					conf_choice(submenu);
+				else if (submenu->prompt->type == P_MENU)
+					conf(submenu, NULL);
+				break;
+			case 's':
+				conf_string(submenu);
+				break;
+			}
+			break;
+		case 2:
+			if (sym)
+				show_help(submenu);
+			else {
+				reset_subtitle();
+				show_helptext("README", mconf_readme);
+			}
+			break;
+		case 3:
+			reset_subtitle();
+			conf_save();
+			break;
+		case 4:
+			reset_subtitle();
+			conf_load();
+			break;
+		case 5:
+			if (item_is_tag('t')) {
+				if (sym_set_tristate_value(sym, yes))
+					break;
+				if (sym_set_tristate_value(sym, mod))
+					show_textbox(NULL, setmod_text, 6, 74);
+			}
+			break;
+		case 6:
+			if (item_is_tag('t'))
+				sym_set_tristate_value(sym, no);
+			break;
+		case 7:
+			if (item_is_tag('t'))
+				sym_set_tristate_value(sym, mod);
+			break;
+		case 8:
+			if (item_is_tag('t'))
+				sym_toggle_tristate_value(sym);
+			else if (item_is_tag('m'))
+				conf(submenu, NULL);
+			break;
+		case 9:
+			search_conf();
+			break;
+		case 10:
+			show_all_options = !show_all_options;
+			break;
+		}
+	}
+
+	list_del(trail.prev);
+}
+
+static void conf_message_callback(const char *s)
+{
+	if (save_and_exit) {
+		if (!silent)
+			printf("%s", s);
+	} else {
+		show_textbox(NULL, s, 6, 60);
+	}
+}
+
 static int handle_exit(void)
 {
 	int res;
diff --git a/scripts/config/menu.c b/scripts/config/menu.c
index 22fd26a9f7..d41a61a73a 100644
--- a/scripts/config/menu.c
+++ b/scripts/config/menu.c
@@ -661,11 +661,6 @@ const char *menu_get_prompt(struct menu *menu)
 	return NULL;
 }
 
-struct menu *menu_get_root_menu(struct menu *menu)
-{
-	return &rootmenu;
-}
-
 struct menu *menu_get_parent_menu(struct menu *menu)
 {
 	enum prop_type type;
@@ -706,6 +701,11 @@ static void get_dep_str(struct gstr *r, struct expr *expr, const char *prefix)
 	}
 }
 
+int __attribute__((weak)) get_jump_key_char(void)
+{
+	return -1;
+}
+
 static void get_prompt_str(struct gstr *r, struct property *prop,
 			   struct list_head *head)
 {
@@ -727,52 +727,41 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 	if (!expr_eq(prop->menu->dep, prop->visible.expr))
 		get_dep_str(r, prop->visible.expr, "  Visible if: ");
 
-	menu = prop->menu->parent;
+	menu = prop->menu;
 	for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {
-		bool accessible = menu_is_visible(menu);
-
 		submenu[i++] = menu;
-		if (location == NULL && accessible)
+		if (location == NULL && menu_is_visible(menu))
 			location = menu;
 	}
 	if (head && location) {
 		jump = xmalloc(sizeof(struct jump_key));
+		jump->target = location;
+		list_add_tail(&jump->entries, head);
+	}
 
-		if (menu_is_visible(prop->menu)) {
-			/*
-			 * There is not enough room to put the hint at the
-			 * beginning of the "Prompt" line. Put the hint on the
-			 * last "Location" line even when it would belong on
-			 * the former.
-			 */
-			jump->target = prop->menu;
-		} else
-			jump->target = location;
+	str_printf(r, "  Location:\n");
+	for (j = 0; --i >= 0; j++) {
+		int jk = -1;
+		int indent = 2 * j + 4;
 
-		if (list_empty(head))
-			jump->index = 0;
-		else
-			jump->index = list_entry(head->prev, struct jump_key,
-						 entries)->index + 1;
+		menu = submenu[i];
+		if (jump && menu == location) {
+			jump->offset = strlen(r->s);
+			jk = get_jump_key_char();
+		}
 
-		list_add_tail(&jump->entries, head);
-	}
+		if (jk >= 0) {
+			str_printf(r, "(%c)", jk);
+			indent -= 3;
+		}
 
-	if (i > 0) {
-		str_printf(r, "  Location:\n");
-		for (j = 4; --i >= 0; j += 2) {
-			menu = submenu[i];
-			if (jump && menu == location)
-				jump->offset = strlen(r->s);
-			str_printf(r, "%*c-> %s", j, ' ',
-				   menu_get_prompt(menu));
-			if (menu->sym) {
-				str_printf(r, " (%s [=%s])", menu->sym->name ?
-					menu->sym->name : "<choice>",
-					sym_get_string_value(menu->sym));
-			}
-			str_append(r, "\n");
+		str_printf(r, "%*c-> %s", indent, ' ', menu_get_prompt(menu));
+		if (menu->sym) {
+			str_printf(r, " (%s [=%s])", menu->sym->name ?
+				menu->sym->name : "<choice>",
+				sym_get_string_value(menu->sym));
 		}
+		str_append(r, "\n");
 	}
 }
 
diff --git a/scripts/config/nconf-cfg.sh b/scripts/config/nconf-cfg.sh
index a227309283..9d40960749 100755
--- a/scripts/config/nconf-cfg.sh
+++ b/scripts/config/nconf-cfg.sh
@@ -1,19 +1,22 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0-only
 
+cflags=$1
+libs=$2
+
 PKG="ncursesw menuw panelw"
 PKG2="ncurses menu panel"
 
-if [ -n "$(command -v pkg-config)" ]; then
-	if pkg-config --exists $PKG; then
-		echo cflags=\"$(pkg-config --cflags $PKG)\"
-		echo libs=\"$(pkg-config --libs $PKG)\"
+if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
+	if ${HOSTPKG_CONFIG} --exists $PKG; then
+		${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
+		${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}
 		exit 0
 	fi
 
-	if pkg-config --exists $PKG2; then
-		echo cflags=\"$(pkg-config --cflags $PKG2)\"
-		echo libs=\"$(pkg-config --libs $PKG2)\"
+	if ${HOSTPKG_CONFIG} --exists $PKG2; then
+		${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags}
+		${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs}
 		exit 0
 	fi
 fi
@@ -22,20 +25,20 @@ fi
 # (Even if it is installed, some distributions such as openSUSE cannot
 # find ncurses by pkg-config.)
 if [ -f /usr/include/ncursesw/ncurses.h ]; then
-	echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\"
-	echo libs=\"-lncursesw -lmenuw -lpanelw\"
+	echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags}
+	echo -lncursesw -lmenuw -lpanelw > ${libs}
 	exit 0
 fi
 
 if [ -f /usr/include/ncurses/ncurses.h ]; then
-	echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\"
-	echo libs=\"-lncurses -lmenu -lpanel\"
+	echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags}
+	echo -lncurses -lmenu -lpanel > ${libs}
 	exit 0
 fi
 
 if [ -f /usr/include/ncurses.h ]; then
-	echo cflags=\"-D_GNU_SOURCE\"
-	echo libs=\"-lncurses -lmenu -lpanel\"
+	echo -D_GNU_SOURCE > ${cflags}
+	echo -lncurses -lmenu -lpanel > ${libs}
 	exit 0
 fi
 
@@ -44,7 +47,7 @@ echo >&2 "* Unable to find the ncurses package."
 echo >&2 "* Install ncurses (ncurses-devel or libncurses-dev"
 echo >&2 "* depending on your distribution)."
 echo >&2 "*"
-echo >&2 "* You may also need to install pkg-config to find the"
+echo >&2 "* You may also need to install ${HOSTPKG_CONFIG} to find the"
 echo >&2 "* ncurses installed in a non-default location."
 echo >&2 "*"
 exit 1
diff --git a/scripts/config/nconf.c b/scripts/config/nconf.c
index b75cabe017..ece86726ef 100644
--- a/scripts/config/nconf.c
+++ b/scripts/config/nconf.c
@@ -55,8 +55,8 @@ static const char nconf_global_help[] =
 "\n"
 "Menu navigation keys\n"
 "----------------------------------------------------------------------\n"
-"Linewise up                 <Up>\n"
-"Linewise down               <Down>\n"
+"Linewise up                 <Up>    <k>\n"
+"Linewise down               <Down>  <j>\n"
 "Pagewise up                 <Page Up>\n"
 "Pagewise down               <Page Down>\n"
 "First entry                 <Home>\n"
@@ -223,7 +223,7 @@ search_help[] =
 "Location:\n"
 "  -> Bus options (PCI, PCMCIA, EISA, ISA)\n"
 "    -> PCI support (PCI [ = y])\n"
-"      -> PCI access mode (<choice> [ = y])\n"
+"(1)   -> PCI access mode (<choice> [ = y])\n"
 "Selects: LIBCRC32\n"
 "Selected by: BAR\n"
 "-----------------------------------------------------------------\n"
@@ -234,9 +234,13 @@ search_help[] =
 "o  The 'Depends on:' line lists symbols that need to be defined for\n"
 "   this symbol to be visible and selectable in the menu.\n"
 "o  The 'Location:' lines tell, where in the menu structure this symbol\n"
-"   is located.  A location followed by a [ = y] indicates that this is\n"
-"   a selectable menu item, and the current value is displayed inside\n"
-"   brackets.\n"
+"   is located.\n"
+"     A location followed by a [ = y] indicates that this is\n"
+"     a selectable menu item, and the current value is displayed inside\n"
+"     brackets.\n"
+"     Press the key in the (#) prefix to jump directly to that\n"
+"     location. You will be returned to the current search results\n"
+"     after exiting this new menu.\n"
 "o  The 'Selects:' line tells, what symbol will be automatically selected\n"
 "   if this symbol is selected (y or m).\n"
 "o  The 'Selected by' line tells what symbol has selected this symbol.\n"
@@ -278,7 +282,9 @@ static const char *current_instructions = menu_instructions;
 
 static char *dialog_input_result;
 static int dialog_input_result_len;
+static int jump_key_char;
 
+static void selected_conf(struct menu *menu, struct menu *active_menu);
 static void conf(struct menu *menu);
 static void conf_choice(struct menu *menu);
 static void conf_string(struct menu *menu);
@@ -688,6 +694,57 @@ static int do_exit(void)
 	return 0;
 }
 
+struct search_data {
+	struct list_head *head;
+	struct menu *target;
+};
+
+static int next_jump_key(int key)
+{
+	if (key < '1' || key > '9')
+		return '1';
+
+	key++;
+
+	if (key > '9')
+		key = '1';
+
+	return key;
+}
+
+static int handle_search_keys(int key, size_t start, size_t end, void *_data)
+{
+	struct search_data *data = _data;
+	struct jump_key *pos;
+	int index = 0;
+
+	if (key < '1' || key > '9')
+		return 0;
+
+	list_for_each_entry(pos, data->head, entries) {
+		index = next_jump_key(index);
+
+		if (pos->offset < start)
+			continue;
+
+		if (pos->offset >= end)
+			break;
+
+		if (key == index) {
+			data->target = pos->target;
+			return 1;
+		}
+	}
+
+	return 0;
+}
+
+int get_jump_key_char(void)
+{
+	jump_key_char = next_jump_key(jump_key_char);
+
+	return jump_key_char;
+}
 
 static void search_conf(void)
 {
@@ -695,7 +752,8 @@ static void search_conf(void)
 	struct gstr res;
 	struct gstr title;
 	char *dialog_input;
-	int dres;
+	int dres, vscroll = 0, hscroll = 0;
+	bool again;
 
 	title = str_new();
 	str_printf( &title, "Enter (sub)string or regexp to search for "
@@ -724,11 +782,28 @@ again:
 		dialog_input += strlen(CONFIG_);
 
 	sym_arr = sym_re_search(dialog_input);
-	res = get_relations_str(sym_arr, NULL);
+
+	do {
+		LIST_HEAD(head);
+		struct search_data data = {
+			.head = &head,
+			.target = NULL,
+		};
+		jump_key_char = 0;
+		res = get_relations_str(sym_arr, &head);
+		dres = show_scroll_win_ext(main_window,
+				"Search Results", str_get(&res),
+				&vscroll, &hscroll,
+				handle_search_keys, &data);
+		again = false;
+		if (dres >= '1' && dres <= '9') {
+			assert(data.target != NULL);
+			selected_conf(data.target->parent, data.target);
+			again = true;
+		}
+		str_free(&res);
+	} while (again);
 	free(sym_arr);
-	show_scroll_win(main_window,
-			"Search Results", str_get(&res));
-	str_free(&res);
 	str_free(&title);
 }
 
@@ -1065,10 +1140,15 @@ static int do_match(int key, struct match_state *state, int *ans)
 }
 
 static void conf(struct menu *menu)
+{
+	selected_conf(menu, NULL);
+}
+
+static void selected_conf(struct menu *menu, struct menu *active_menu)
 {
 	struct menu *submenu = NULL;
 	struct symbol *sym;
-	int res;
+	int i, res;
 	int current_index = 0;
 	int last_top_row = 0;
 	struct match_state match_state = {
@@ -1084,6 +1164,19 @@ static void conf(struct menu *menu)
 		if (!child_count)
 			break;
 
+		if (active_menu != NULL) {
+			for (i = 0; i < items_num; i++) {
+				struct mitem *mcur;
+
+				mcur = (struct mitem *) item_userptr(curses_menu_items[i]);
+				if ((struct menu *) mcur->usrptr == active_menu) {
+					current_index = i;
+					break;
+				}
+			}
+			active_menu = NULL;
+		}
+
 		show_menu(menu_get_prompt(menu), menu_instructions,
 			  current_index, &last_top_row);
 		keypad((menu_win(curses_menu)), TRUE);
@@ -1108,9 +1201,11 @@ static void conf(struct menu *menu)
 				break;
 			switch (res) {
 			case KEY_DOWN:
+			case 'j':
 				menu_driver(curses_menu, REQ_DOWN_ITEM);
 				break;
 			case KEY_UP:
+			case 'k':
 				menu_driver(curses_menu, REQ_UP_ITEM);
 				break;
 			case KEY_NPAGE:
@@ -1291,9 +1386,11 @@ static void conf_choice(struct menu *menu)
 				break;
 			switch (res) {
 			case KEY_DOWN:
+			case 'j':
 				menu_driver(curses_menu, REQ_DOWN_ITEM);
 				break;
 			case KEY_UP:
+			case 'k':
 				menu_driver(curses_menu, REQ_UP_ITEM);
 				break;
 			case KEY_NPAGE:
diff --git a/scripts/config/nconf.gui.c b/scripts/config/nconf.gui.c
index c72d61a772..48ba1c1a07 100644
--- a/scripts/config/nconf.gui.c
+++ b/scripts/config/nconf.gui.c
@@ -497,10 +497,17 @@ void refresh_all_windows(WINDOW *main_window)
 	refresh();
 }
 
-/* layman's scrollable window... */
 void show_scroll_win(WINDOW *main_window,
 		const char *title,
 		const char *text)
+{
+	(void)show_scroll_win_ext(main_window, title, (char *)text, NULL, NULL, NULL, NULL);
+}
+
+/* layman's scrollable window... */
+int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text,
+			int *vscroll, int *hscroll,
+			extra_key_cb_fn extra_key_cb, void *data)
 {
 	int res;
 	int total_lines = get_line_no(text);
@@ -514,6 +521,12 @@ void show_scroll_win(WINDOW *main_window,
 	WINDOW *win;
 	WINDOW *pad;
 	PANEL *panel;
+	bool done = false;
+
+	if (hscroll)
+		start_x = *hscroll;
+	if (vscroll)
+		start_y = *vscroll;
 
 	getmaxyx(stdscr, lines, columns);
 
@@ -549,8 +562,7 @@ void show_scroll_win(WINDOW *main_window,
 	panel = new_panel(win);
 
 	/* handle scrolling */
-	do {
-
+	while (!done) {
 		copywin(pad, win, start_y, start_x, 2, 2, text_lines,
 				text_cols, 0);
 		print_in_middle(win,
@@ -593,8 +605,18 @@ void show_scroll_win(WINDOW *main_window,
 		case 'l':
 			start_x++;
 			break;
+		default:
+			if (extra_key_cb) {
+				size_t start = (get_line(text, start_y) - text);
+				size_t end = (get_line(text, start_y + text_lines) - text);
+
+				if (extra_key_cb(res, start, end, data)) {
+					done = true;
+					break;
+				}
+			}
 		}
-		if (res == 10 || res == 27 || res == 'q' ||
+		if (res == 0 || res == 10 || res == 27 || res == 'q' ||
 			res == KEY_F(F_HELP) || res == KEY_F(F_BACK) ||
 			res == KEY_F(F_EXIT))
 			break;
@@ -606,9 +628,14 @@ void show_scroll_win(WINDOW *main_window,
 			start_x = 0;
 		if (start_x >= total_cols-text_cols)
 			start_x = total_cols-text_cols;
-	} while (res);
+	}
 
+	if (hscroll)
+		*hscroll = start_x;
+	if (vscroll)
+		*vscroll = start_y;
 	del_panel(panel);
 	delwin(win);
 	refresh_all_windows(main_window);
+	return res;
 }
diff --git a/scripts/config/nconf.h b/scripts/config/nconf.h
index 6e127c63d5..174b035fde 100644
--- a/scripts/config/nconf.h
+++ b/scripts/config/nconf.h
@@ -67,6 +67,8 @@ typedef enum {
 
 void set_colors(void);
 
+typedef int (*extra_key_cb_fn)(int, size_t, size_t, void *);
+
 /* this changes the windows attributes !!! */
 void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs);
 int get_line_length(const char *line);
@@ -78,6 +80,9 @@ int dialog_inputbox(WINDOW *main_window,
 		const char *title, const char *prompt,
 		const char *init, char **resultp, int *result_len);
 void refresh_all_windows(WINDOW *main_window);
+int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text,
+			int *vscroll, int *hscroll,
+			extra_key_cb_fn extra_key_cb, void *data);
 void show_scroll_win(WINDOW *main_window,
 		const char *title,
 		const char *text);
diff --git a/scripts/config/parser.tab.c b/scripts/config/parser.tab.c
index 18137050a9..93fdc257a6 100644
--- a/scripts/config/parser.tab.c
+++ b/scripts/config/parser.tab.c
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 3.8.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
@@ -46,10 +46,10 @@
    USER NAME SPACE" below.  */
 
 /* Identify Bison output, and Bison version.  */
-#define YYBISON 30706
+#define YYBISON 30802
 
 /* Bison version string.  */
-#define YYBISON_VERSION "3.7.6"
+#define YYBISON_VERSION "3.8.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -379,12 +379,18 @@ typedef int yy_state_fast_t;
 # define YY_USE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
+# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
+#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
+# else
+#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
     _Pragma ("GCC diagnostic push")                                     \
     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# endif
 # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
     _Pragma ("GCC diagnostic pop")
 #else
@@ -603,7 +609,7 @@ static const yytype_int8 yytranslate[] =
 };
 
 #if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
        0,   110,   110,   110,   114,   119,   121,   122,   123,   124,
@@ -661,20 +667,6 @@ yysymbol_name (yysymbol_kind_t yysymbol)
 }
 #endif
 
-#ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_int16 yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305
-};
-#endif
-
 #define YYPACT_NINF (-105)
 
 #define yypact_value_is_default(Yyn) \
@@ -685,8 +677,8 @@ static const yytype_int16 yytoknum[] =
 #define yytable_value_is_error(Yyn) \
   0
 
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
       -5,    17,    37,  -105,    57,     8,  -105,    91,    39,    15,
@@ -710,9 +702,9 @@ static const yytype_int16 yypact[] =
     -105,   136,  -105,  -105,  -105,  -105,  -105
 };
 
-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-     Performed when YYTABLE does not specify something else to do.  Zero
-     means the default is an error.  */
+/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE does not specify something else to do.  Zero
+   means the default is an error.  */
 static const yytype_int8 yydefact[] =
 {
        5,     0,     0,     5,     0,     0,     1,     0,     0,     0,
@@ -736,7 +728,7 @@ static const yytype_int8 yydefact[] =
       30,     0,    32,    31,    48,    44,    34
 };
 
-  /* YYPGOTO[NTERM-NUM].  */
+/* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
     -105,  -105,  -105,     3,    38,  -105,   -55,  -105,  -105,   138,
@@ -746,7 +738,7 @@ static const yytype_int16 yypgoto[] =
      -46,    -8,   -65,  -105,  -105,  -105,  -105
 };
 
-  /* YYDEFGOTO[NTERM-NUM].  */
+/* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_uint8 yydefgoto[] =
 {
        0,     2,     3,     4,    57,    17,    18,    19,    20,    54,
@@ -756,9 +748,9 @@ static const yytype_uint8 yydefgoto[] =
       48,    49,    50,    41,    32,    39,    64
 };
 
-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-     positive, shift that token.  If negative, reduce the rule whose
-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
+/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule whose
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
       68,    69,   116,   118,    44,   120,     7,    52,   134,   135,
@@ -807,8 +799,8 @@ static const yytype_int16 yycheck[] =
       34,    -1,    -1,    -1,    38
 };
 
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
+/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
+   state STATE-NUM.  */
 static const yytype_int8 yystos[] =
 {
        0,    24,    52,    53,    54,     5,     0,    54,     1,     4,
@@ -832,7 +824,7 @@ static const yytype_int8 yystos[] =
       40,    90,    40,    40,    40,    40,    40
 };
 
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
 static const yytype_int8 yyr1[] =
 {
        0,    51,    52,    52,    53,    54,    54,    54,    54,    54,
@@ -848,7 +840,7 @@ static const yytype_int8 yyr1[] =
       94,    95,    96,    96,    96,    97,    97
 };
 
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
 static const yytype_int8 yyr2[] =
 {
        0,     2,     2,     1,     3,     0,     2,     2,     2,     2,
@@ -873,6 +865,7 @@ enum { YYENOMEM = -2 };
 #define YYACCEPT        goto yyacceptlab
 #define YYABORT         goto yyabortlab
 #define YYERROR         goto yyerrorlab
+#define YYNOMEM         goto yyexhaustedlab
 
 
 #define YYRECOVERING()  (!!yyerrstatus)
@@ -913,10 +906,7 @@ do {                                            \
     YYFPRINTF Args;                             \
 } while (0)
 
-/* This macro is provided for backward compatibility. */
-# ifndef YY_LOCATION_PRINT
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+
 
 
 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
@@ -943,10 +933,6 @@ yy_symbol_value_print (FILE *yyo,
   YY_USE (yyoutput);
   if (!yyvaluep)
     return;
-# ifdef YYPRINT
-  if (yykind < YYNTOKENS)
-    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
-# endif
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   YY_USE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
@@ -1162,6 +1148,7 @@ yyparse (void)
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yychar = YYEMPTY; /* Cause a token to be read.  */
+
   goto yysetstate;
 
 
@@ -1187,7 +1174,7 @@ yysetstate:
 
   if (yyss + yystacksize - 1 <= yyssp)
 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
-    goto yyexhaustedlab;
+    YYNOMEM;
 #else
     {
       /* Get the current used size of the three stacks, in elements.  */
@@ -1215,7 +1202,7 @@ yysetstate:
 # else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
+        YYNOMEM;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
         yystacksize = YYMAXDEPTH;
@@ -1226,7 +1213,7 @@ yysetstate:
           YY_CAST (union yyalloc *,
                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
         if (! yyptr)
-          goto yyexhaustedlab;
+          YYNOMEM;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
@@ -1248,6 +1235,7 @@ yysetstate:
     }
 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
+
   if (yystate == YYFINAL)
     YYACCEPT;
 
@@ -1832,6 +1820,7 @@ yyerrorlab:
      label yyerrorlab therefore never appears in user code.  */
   if (0)
     YYERROR;
+  ++yynerrs;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -1892,7 +1881,7 @@ yyerrlab1:
 `-------------------------------------*/
 yyacceptlab:
   yyresult = 0;
-  goto yyreturn;
+  goto yyreturnlab;
 
 
 /*-----------------------------------.
@@ -1900,24 +1889,22 @@ yyacceptlab:
 `-----------------------------------*/
 yyabortlab:
   yyresult = 1;
-  goto yyreturn;
+  goto yyreturnlab;
 
 
-#if !defined yyoverflow
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
+/*-----------------------------------------------------------.
+| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
+`-----------------------------------------------------------*/
 yyexhaustedlab:
   yyerror (YY_("memory exhausted"));
   yyresult = 2;
-  goto yyreturn;
-#endif
+  goto yyreturnlab;
 
 
-/*-------------------------------------------------------.
-| yyreturn -- parsing is finished, clean up and return.  |
-`-------------------------------------------------------*/
-yyreturn:
+/*----------------------------------------------------------.
+| yyreturnlab -- parsing is finished, clean up and return.  |
+`----------------------------------------------------------*/
+yyreturnlab:
   if (yychar != YYEMPTY)
     {
       /* Make sure we have latest lookahead translation.  See comments at
diff --git a/scripts/config/parser.tab.h b/scripts/config/parser.tab.h
index aac457ce39..fa3eb3491b 100644
--- a/scripts/config/parser.tab.h
+++ b/scripts/config/parser.tab.h
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 3.8.2.  */
 
 /* Bison interface for Yacc-like parsers in C
 
@@ -128,6 +128,8 @@ typedef union YYSTYPE YYSTYPE;
 
 extern YYSTYPE yylval;
 
+
 int yyparse (void);
 
+
 #endif /* !YY_YY_PARSER_TAB_H_INCLUDED  */
diff --git a/scripts/config/preprocess.c b/scripts/config/preprocess.c
index 3c7a35a724..3c544b775a 100644
--- a/scripts/config/preprocess.c
+++ b/scripts/config/preprocess.c
@@ -141,7 +141,7 @@ static char *do_lineno(int argc, char *argv[])
 static char *do_shell(int argc, char *argv[])
 {
 	FILE *p;
-	char buf[256];
+	char buf[4096];
 	char *cmd;
 	size_t nread;
 	int i;
@@ -396,6 +396,9 @@ static char *eval_clause(const char *str, size_t len, int argc, char *argv[])
 
 		p++;
 	}
+
+	if (new_argc >= FUNCTION_MAX_ARGS)
+		pperror("too many function arguments");
 	new_argv[new_argc++] = prev;
 
 	/*
diff --git a/scripts/config/qconf-cfg.sh b/scripts/config/qconf-cfg.sh
index 609bb818e8..203ddf4203 100755
--- a/scripts/config/qconf-cfg.sh
+++ b/scripts/config/qconf-cfg.sh
@@ -1,24 +1,40 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0-only
 
-PKG="Qt5Core Qt5Gui Qt5Widgets"
+cflags=$1
+libs=$2
+bin=$3
 
-if [ -z "$(command -v pkg-config)" ]; then
+PKG5="Qt5Core Qt5Gui Qt5Widgets"
+PKG6="Qt6Core Qt6Gui Qt6Widgets"
+
+if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
 	echo >&2 "*"
-	echo >&2 "* 'make xconfig' requires 'pkg-config'. Please install it."
+	echo >&2 "* 'make xconfig' requires '${HOSTPKG_CONFIG}'. Please install it."
 	echo >&2 "*"
 	exit 1
 fi
 
-if pkg-config --exists $PKG; then
-	echo cflags=\"-std=c++11 -fPIC $(pkg-config --cflags $PKG)\"
-	echo libs=\"$(pkg-config --libs $PKG)\"
-	echo moc=\"$(pkg-config --variable=host_bins Qt5Core)/moc\"
+if ${HOSTPKG_CONFIG} --exists $PKG6; then
+	${HOSTPKG_CONFIG} --cflags ${PKG6} > ${cflags}
+	# Qt6 requires C++17.
+	echo -std=c++17 >> ${cflags}
+	${HOSTPKG_CONFIG} --libs ${PKG6} > ${libs}
+	${HOSTPKG_CONFIG} --variable=libexecdir Qt6Core > ${bin}
+	exit 0
+fi
+
+if ${HOSTPKG_CONFIG} --exists $PKG5; then
+	${HOSTPKG_CONFIG} --cflags ${PKG5} > ${cflags}
+	${HOSTPKG_CONFIG} --libs ${PKG5} > ${libs}
+	${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin}
 	exit 0
 fi
 
 echo >&2 "*"
-echo >&2 "* Could not find Qt5 via pkg-config."
-echo >&2 "* Please install Qt5 and make sure it's in PKG_CONFIG_PATH"
+echo >&2 "* Could not find Qt6 or Qt5 via ${HOSTPKG_CONFIG}."
+echo >&2 "* Please install Qt6 or Qt5 and make sure it's in PKG_CONFIG_PATH"
+echo >&2 "* You need $PKG6 for Qt6"
+echo >&2 "* You need $PKG5 for Qt5"
 echo >&2 "*"
 exit 1
diff --git a/scripts/config/qconf.cc b/scripts/config/qconf.cc
index ed7b3e3e20..abf0d0b392 100644
--- a/scripts/config/qconf.cc
+++ b/scripts/config/qconf.cc
@@ -5,10 +5,10 @@
  */
 
 #include <QAction>
+#include <QActionGroup>
 #include <QApplication>
 #include <QCloseEvent>
 #include <QDebug>
-#include <QDesktopWidget>
 #include <QFileDialog>
 #include <QLabel>
 #include <QLayout>
@@ -16,6 +16,8 @@
 #include <QMenu>
 #include <QMenuBar>
 #include <QMessageBox>
+#include <QRegularExpression>
+#include <QScreen>
 #include <QToolBar>
 
 #include <stdlib.h>
@@ -1126,7 +1128,7 @@ QString ConfigInfoView::debug_info(struct symbol *sym)
 
 QString ConfigInfoView::print_filter(const QString &str)
 {
-	QRegExp re("[<>&\"\\n]");
+	QRegularExpression re("[<>&\"\\n]");
 	QString res = str;
 	for (int i = 0; (i = res.indexOf(re, i)) >= 0;) {
 		switch (res[i].toLatin1()) {
@@ -1322,15 +1324,15 @@ ConfigMainWindow::ConfigMainWindow(void)
 	int width, height;
 	char title[256];
 
-	QDesktopWidget *d = configApp->desktop();
 	snprintf(title, sizeof(title), "%s%s",
 		rootmenu.prompt->text,
 		""
 		);
 	setWindowTitle(title);
 
-	width = configSettings->value("/window width", d->width() - 64).toInt();
-	height = configSettings->value("/window height", d->height() - 64).toInt();
+	QRect g = configApp->primaryScreen()->geometry();
+	width = configSettings->value("/window width", g.width() - 64).toInt();
+	height = configSettings->value("/window height", g.height() - 64).toInt();
 	resize(width, height);
 	x = configSettings->value("/window x");
 	y = configSettings->value("/window y");
@@ -1379,17 +1381,17 @@ ConfigMainWindow::ConfigMainWindow(void)
 		this, &ConfigMainWindow::goBack);
 
 	QAction *quitAction = new QAction("&Quit", this);
-	quitAction->setShortcut(Qt::CTRL + Qt::Key_Q);
+	quitAction->setShortcut(Qt::CTRL | Qt::Key_Q);
 	connect(quitAction, &QAction::triggered,
 		this, &ConfigMainWindow::close);
 
 	QAction *loadAction = new QAction(QPixmap(xpm_load), "&Load", this);
-	loadAction->setShortcut(Qt::CTRL + Qt::Key_L);
+	loadAction->setShortcut(Qt::CTRL | Qt::Key_L);
 	connect(loadAction, &QAction::triggered,
 		this, &ConfigMainWindow::loadConfig);
 
 	saveAction = new QAction(QPixmap(xpm_save), "&Save", this);
-	saveAction->setShortcut(Qt::CTRL + Qt::Key_S);
+	saveAction->setShortcut(Qt::CTRL | Qt::Key_S);
 	connect(saveAction, &QAction::triggered,
 		this, &ConfigMainWindow::saveConfig);
 
@@ -1403,7 +1405,7 @@ ConfigMainWindow::ConfigMainWindow(void)
 	connect(saveAsAction, &QAction::triggered,
 		this, &ConfigMainWindow::saveConfigAs);
 	QAction *searchAction = new QAction("&Find", this);
-	searchAction->setShortcut(Qt::CTRL + Qt::Key_F);
+	searchAction->setShortcut(Qt::CTRL | Qt::Key_F);
 	connect(searchAction, &QAction::triggered,
 		this, &ConfigMainWindow::searchConfig);
 	singleViewAction = new QAction(QPixmap(xpm_single_view), "Single View", this);
@@ -1750,11 +1752,21 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e)
 		e->accept();
 		return;
 	}
-	QMessageBox mb("qconf", "Save configuration?", QMessageBox::Warning,
-			QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);
-	mb.setButtonText(QMessageBox::Yes, "&Save Changes");
-	mb.setButtonText(QMessageBox::No, "&Discard Changes");
-	mb.setButtonText(QMessageBox::Cancel, "Cancel Exit");
+
+	QMessageBox mb(QMessageBox::Icon::Warning, "qconf",
+		       "Save configuration?");
+
+	QPushButton *yb = mb.addButton(QMessageBox::Yes);
+	QPushButton *db = mb.addButton(QMessageBox::No);
+	QPushButton *cb = mb.addButton(QMessageBox::Cancel);
+
+	yb->setText("&Save Changes");
+	db->setText("&Discard Changes");
+	cb->setText("Cancel Exit");
+
+	mb.setDefaultButton(yb);
+	mb.setEscapeButton(cb);
+
 	switch (mb.exec()) {
 	case QMessageBox::Yes:
 		if (saveConfig())
diff --git a/scripts/config/symbol.c b/scripts/config/symbol.c
index d97b56ab0e..6ef44adc05 100644
--- a/scripts/config/symbol.c
+++ b/scripts/config/symbol.c
@@ -123,9 +123,9 @@ static long long sym_get_range_val(struct symbol *sym, int base)
 static void sym_validate_range(struct symbol *sym)
 {
 	struct property *prop;
+	struct symbol *range_sym;
 	int base;
 	long long val, val2;
-	char str[64];
 
 	switch (sym->type) {
 	case S_INT:
@@ -141,17 +141,15 @@ static void sym_validate_range(struct symbol *sym)
 	if (!prop)
 		return;
 	val = strtoll(sym->curr.val, NULL, base);
-	val2 = sym_get_range_val(prop->expr->left.sym, base);
+	range_sym = prop->expr->left.sym;
+	val2 = sym_get_range_val(range_sym, base);
 	if (val >= val2) {
-		val2 = sym_get_range_val(prop->expr->right.sym, base);
+		range_sym = prop->expr->right.sym;
+		val2 = sym_get_range_val(range_sym, base);
 		if (val <= val2)
 			return;
 	}
-	if (sym->type == S_INT)
-		sprintf(str, "%lld", val2);
-	else
-		sprintf(str, "0x%llx", val2);
-	sym->curr.val = xstrdup(str);
+	sym->curr.val = range_sym->curr.val;
 }
 
 static void sym_set_changed(struct symbol *sym)
@@ -851,49 +849,6 @@ struct symbol *sym_find(const char *name)
 	return symbol;
 }
 
-const char *sym_escape_string_value(const char *in)
-{
-	const char *p;
-	size_t reslen;
-	char *res;
-	size_t l;
-
-	reslen = strlen(in) + strlen("\"\"") + 1;
-
-	p = in;
-	for (;;) {
-		l = strcspn(p, "\"\\");
-		p += l;
-
-		if (p[0] == '\0')
-			break;
-
-		reslen++;
-		p++;
-	}
-
-	res = xmalloc(reslen);
-	res[0] = '\0';
-
-	strcat(res, "\"");
-
-	p = in;
-	for (;;) {
-		l = strcspn(p, "\"\\");
-		strncat(res, p, l);
-		p += l;
-
-		if (p[0] == '\0')
-			break;
-
-		strcat(res, "\\");
-		strncat(res, p++, 1);
-	}
-
-	strcat(res, "\"");
-	return res;
-}
-
 struct sym_match {
 	struct symbol	*sym;
 	off_t		so, eo;
diff --git a/scripts/config/util.c b/scripts/config/util.c
index 0bc415cd73..53e079e2e8 100644
--- a/scripts/config/util.c
+++ b/scripts/config/util.c
@@ -74,7 +74,7 @@ void str_printf(struct gstr *gs, const char *fmt, ...)
 }
 
 /* Retrieve value of growable string */
-const char *str_get(struct gstr *gs)
+char *str_get(struct gstr *gs)
 {
 	return gs->s;
 }



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:26 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:26 -0500
Subject: [openwrt/openwrt]  mediatek: separate dts/dtsi for Buffalo WSR series
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12530.1709476707.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/65f9f3131e63908672456aa7f628466eb2367017

commit 65f9f3131e63908672456aa7f628466eb2367017
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sun Aug 27 18:21:28 2023 +0900

    mediatek: separate dts/dtsi for Buffalo WSR series
    
    Separate dts/dtsi from the dts of Buffalo WSR-2533DHP2 to prepare adding
    suppport for WSR-3200AX4S.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    (cherry picked from commit 9f640cae75ec987f29bf697cee559a0a4ff497e0)
---
 .../mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts   | 230 +--------------------
 ...lo-wsr-2533dhp2.dts => mt7622-buffalo-wsr.dtsi} | 123 +----------
 2 files changed, 6 insertions(+), 347 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
index 8b0dc1aa98..a9f2959191 100644
--- a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
+++ b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
@@ -1,120 +1,20 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 /dts-v1/;
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/leds/common.h>
 
-#include "mt7622.dtsi"
-#include "mt6380.dtsi"
+#include "mt7622-buffalo-wsr.dtsi"
 
 / {
 	model = "Buffalo WSR-2533DHP2";
 	compatible = "buffalo,wsr-2533dhp2", "mediatek,mt7622";
 
 	aliases {
-		serial0 = &uart0;
-		led-boot = &power_green;
-		led-failsafe = &power_amber;
-		led-running = &power_green;
-		led-upgrade = &power_green;
 		label-mac-device = &gmac0;
 	};
 
-	chosen {
-		bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8 swiotlb=512";
-	};
-
 	memory {
 		reg = <0 0x40000000 0 0x0F000000>;
 	};
 
-	leds {
-		compatible = "gpio-leds";
-
-		led-0 {
-			label = "amber:wireless";
-			gpios = <&pio 2 GPIO_ACTIVE_HIGH>;
-			color = <LED_COLOR_ID_AMBER>;
-			function = LED_FUNCTION_WLAN;
-		};
-
-		power_amber: led-1 {
-			label = "amber:power";
-			gpios = <&pio 3 GPIO_ACTIVE_LOW>;
-			color = <LED_COLOR_ID_AMBER>;
-			function = LED_FUNCTION_POWER;
-		};
-
-		power_green: led-2 {
-			label = "green:power";
-			gpios = <&pio 4 GPIO_ACTIVE_LOW>;
-			color = <LED_COLOR_ID_GREEN>;
-			function = LED_FUNCTION_POWER;
-		};
-
-		led-3 {
-			label = "green:wireless";
-			gpios = <&pio 15 GPIO_ACTIVE_HIGH>;
-			color = <LED_COLOR_ID_GREEN>;
-			function = LED_FUNCTION_WLAN;
-		};
-
-		led-4 {
-			label = "green:internet";
-			gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
-			color = <LED_COLOR_ID_GREEN>;
-			function = LED_FUNCTION_WAN;
-		};
-
-		led-5 {
-			label = "green:router";
-			gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
-			color = <LED_COLOR_ID_GREEN>;
-			function = LED_FUNCTION_INDICATOR;
-		};
-	};
-
-	keys {
-		compatible = "gpio-keys";
-
-		key-reset {
-			label = "reset";
-			gpios = <&pio 0 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_RESTART>;
-		};
-
-		/* GPIO 1 and 16 are a tri-state switch button with
-		 * ROUTER / AP / WB.
-		 */
-		key-router {
-			label = "router";
-			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
-			linux,code = <BTN_0>;
-			linux,input-type = <EV_SW>;
-		};
-
-		key-bridge {
-			label = "wb";
-			gpios = <&pio 16 GPIO_ACTIVE_LOW>;
-			linux,code = <BTN_1>;
-			linux,input-type = <EV_SW>;
-		};
-
-		/* GPIO 18 is a switch button with AUTO / MANUAL. */
-		key-manual {
-			label = "manual";
-			gpios = <&pio 18 GPIO_ACTIVE_LOW>;
-			linux,code = <BTN_2>;
-			linux,input-type = <EV_SW>;
-		};
-
-		key-wps {
-			label = "wps";
-			gpios = <&pio 102 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_WPS_BUTTON>;
-		};
-	};
-
 	rtkgsw: rtkgsw at 0 {
 		compatible = "mediatek,rtk-gsw";
 		mediatek,ethsys = <&ethsys>;
@@ -123,41 +23,7 @@
 	};
 };
 
-&cpu0 {
-	proc-supply = <&mt6380_vcpu_reg>;
-	sram-supply = <&mt6380_vm_reg>;
-};
-
-&cpu1 {
-	proc-supply = <&mt6380_vcpu_reg>;
-	sram-supply = <&mt6380_vm_reg>;
-};
-
-&pcie0 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pcie0_pins>;
-	status = "okay";
-};
-
-&slot0 {
-	status = "okay";
-
-	wifi at 0,0 {
-		compatible = "mediatek,mt76";
-		reg = <0x0000 0 0 0 0>;
-		mediatek,mtd-eeprom = <&factory 0x5000>;
-		ieee80211-freq-limit = <5000000 6000000>;
-	};
-};
-
 &pio {
-	eth_pins: eth-pins {
-		mux {
-			function = "eth";
-			groups = "mdc_mdio", "rgmii_via_gmac2";
-		};
-	};
-
 	/* Parallel nand is shared pin with eMMC */
 	parallel_nand_pins: parallel-nand-pins {
 		mux {
@@ -176,67 +42,11 @@
 			bias-pull-up;
 		};
 	};
-
-	pcie0_pins: pcie0-pins {
-		mux {
-			function = "pcie";
-			groups = "pcie0_pad_perst",
-				 "pcie0_1_waken",
-				 "pcie0_1_clkreq";
-		};
-	};
-
-	pmic_bus_pins: pmic-bus-pins {
-		mux {
-			function = "pmic";
-			groups = "pmic_bus";
-		};
-	};
-
-	uart0_pins: uart0-pins {
-		mux {
-			function = "uart";
-			groups = "uart0_0_tx_rx" ;
-		};
-	};
-
-	watchdog_pins: watchdog-pins {
-		mux {
-			function = "watchdog";
-			groups = "watchdog";
-		};
-	};
-};
-
-&bch {
-	status = "okay";
 };
 
-&eth {
-	pinctrl-names = "default";
-	pinctrl-0 = <&eth_pins>;
-	status = "okay";
-
-	gmac0: mac at 0 {
-		compatible = "mediatek,eth-mac";
-		reg = <0>;
-
-		phy-connection-type = "2500base-x";
-
-		nvmem-cells = <&macaddr_factory_4 (-1)>;
-		nvmem-cell-names = "mac-address";
-
-		fixed-link {
-			speed = <2500>;
-			full-duplex;
-			pause;
-		};
-	};
-
-	mdio: mdio-bus {
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_4 (-1)>;
+	nvmem-cell-names = "mac-address";
 };
 
 &nandc {
@@ -321,35 +131,3 @@
 		};
 	};
 };
-
-&pwm {
-	status = "okay";
-};
-
-&pwrap {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pmic_bus_pins>;
-	status = "okay";
-};
-
-&uart0 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart0_pins>;
-	status = "okay";
-};
-
-&watchdog {
-	pinctrl-names = "default";
-	pinctrl-0 = <&watchdog_pins>;
-	status = "okay";
-};
-
-&wmac {
-	status = "okay";
-
-	mediatek,mtd-eeprom = <&factory 0x0>;
-};
-
-&rtc {
-	status = "disabled";
-};
diff --git a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts b/target/linux/mediatek/dts/mt7622-buffalo-wsr.dtsi
similarity index 64%
copy from target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
copy to target/linux/mediatek/dts/mt7622-buffalo-wsr.dtsi
index 8b0dc1aa98..e77f83d354 100644
--- a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
+++ b/target/linux/mediatek/dts/mt7622-buffalo-wsr.dtsi
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 /dts-v1/;
+
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/leds/common.h>
@@ -8,26 +9,18 @@
 #include "mt6380.dtsi"
 
 / {
-	model = "Buffalo WSR-2533DHP2";
-	compatible = "buffalo,wsr-2533dhp2", "mediatek,mt7622";
-
 	aliases {
 		serial0 = &uart0;
 		led-boot = &power_green;
 		led-failsafe = &power_amber;
 		led-running = &power_green;
 		led-upgrade = &power_green;
-		label-mac-device = &gmac0;
 	};
 
 	chosen {
 		bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8 swiotlb=512";
 	};
 
-	memory {
-		reg = <0 0x40000000 0 0x0F000000>;
-	};
-
 	leds {
 		compatible = "gpio-leds";
 
@@ -114,13 +107,6 @@
 			linux,code = <KEY_WPS_BUTTON>;
 		};
 	};
-
-	rtkgsw: rtkgsw at 0 {
-		compatible = "mediatek,rtk-gsw";
-		mediatek,ethsys = <&ethsys>;
-		mediatek,mdio = <&mdio>;
-		mediatek,reset-pin = <&pio 54 GPIO_ACTIVE_HIGH>;
-	};
 };
 
 &cpu0 {
@@ -158,25 +144,6 @@
 		};
 	};
 
-	/* Parallel nand is shared pin with eMMC */
-	parallel_nand_pins: parallel-nand-pins {
-		mux {
-			function = "flash";
-			groups = "par_nand";
-		};
-
-		conf-cmd-dat {
-			pins = "NCEB", "NWEB", "NREB",
-				  "NDL4", "NDL5", "NDL6",
-				  "NDL7", "NRB", "NCLE",
-				  "NALE", "NDL0", "NDL1",
-				  "NDL2", "NDL3";
-			input-enable;
-			drive-strength = <8>;
-			bias-pull-up;
-		};
-	};
-
 	pcie0_pins: pcie0-pins {
 		mux {
 			function = "pcie";
@@ -208,10 +175,6 @@
 	};
 };
 
-&bch {
-	status = "okay";
-};
-
 &eth {
 	pinctrl-names = "default";
 	pinctrl-0 = <&eth_pins>;
@@ -223,9 +186,6 @@
 
 		phy-connection-type = "2500base-x";
 
-		nvmem-cells = <&macaddr_factory_4 (-1)>;
-		nvmem-cell-names = "mac-address";
-
 		fixed-link {
 			speed = <2500>;
 			full-duplex;
@@ -239,87 +199,8 @@
 	};
 };
 
-&nandc {
-	pinctrl-names = "default";
-	pinctrl-0 = <&parallel_nand_pins>;
+&bch {
 	status = "okay";
-
-	nand at 0 {
-		reg = <0>;
-		nand-ecc-mode = "hw";
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition at 0 {
-				label = "Preloader";
-				reg = <0x0 0x80000>;
-				read-only;
-			};
-
-			partition at 80000 {
-				label = "ATF";
-				reg = <0x80000 0x40000>;
-				read-only;
-			};
-
-			partition at c0000 {
-				label = "Bootloader";
-				reg = <0xc0000 0x80000>;
-				read-only;
-			};
-
-			partition at 140000 {
-				label = "Config";
-				reg = <0x140000 0x80000>;
-			};
-
-			factory: partition at 1c0000 {
-				compatible = "nvmem-cells";
-				label = "factory";
-				reg = <0x1c0000 0x40000>;
-				read-only;
-
-				nvmem-layout {
-					compatible = "fixed-layout";
-					#address-cells = <1>;
-					#size-cells = <1>;
-
-					macaddr_factory_4: macaddr at 4 {
-						compatible = "mac-base";
-						reg = <0x4 0x6>;
-						#nvmem-cell-cells = <1>;
-					};
-				};
-			};
-
-			partition at 200000 {
-				compatible = "brcm,trx";
-				brcm,trx-magic = <0x32504844>;
-				label = "firmware";
-				reg = <0x200000 0x3a00000>;
-			};
-
-			partition at 3C00000 {
-				label = "Kernel2";
-				reg = <0x3c00000 0x3a00000>;
-			};
-
-			partition at 7600000 {
-				label = "glbcfg";
-				reg = <0x7600000 0x200000>;
-				read-only;
-			};
-
-			partition at 7800000 {
-				label = "board_data";
-				reg = <0x7800000 0x200000>;
-				read-only;
-			};
-		};
-	};
 };
 
 &pwm {



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:29 -0500
Subject: [openwrt/openwrt]  mediatek: Add support for TP-Link EAP225v5
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12531.1709476707.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/e2954a1e1b6825e9a8f8ad2a39b77a93292eb202

commit e2954a1e1b6825e9a8f8ad2a39b77a93292eb202
Author: Roland Reinl <reinlroland+github at gmail.com>
AuthorDate: Sun Oct 1 11:25:40 2023 +0200

    mediatek: Add support for TP-Link EAP225v5
    
    Device specification:
    - MT7629 with 16MB NOR flash W25Q128 and 128 MB DDR3 RAM.
    - MT7761N and MT7762N wireless chips (currenlty no driver in OpenWrt available)
      - WiFi is NOT working on this device
    - Dual core but second CPU doesn't seem to work (Error message during boot: "CPU1: failed to come online")
    
    There are two similar merge requests for similar devices with the same issues:
    - https://github.com/openwrt/openwrt/pull/12286
    - https://github.com/openwrt/openwrt/pull/5084
    
    UART interface is next to the reset button, pinout:
    - 1: TX (the pin with the arrow marker)
    - 2: RX
    - 3: GND
    - 4: VCC
    
    UART settings: 115200,8n1, 3.3V
    
    U-Boot menu can be entered by pressing Ctrl+B during startup.
    
    Booting initramfs:
    - Set your computers IP adress to 192.168.1.110
    - Run a TFTP server providing the initramfs image
    - Power on the AP, press Ctrl+B to get to the U-Boot menu
    - Select "1. System Load Linux to SDRAM via TFTP"
    - Update kernel file name, input server IP and input device IP (if they deviate from the defaults)
    - After booting, create a backup of all partitions, especially for kernel and root_fs. They are required for reverting back to stock firmware
    - The sysupgrade image can be flashed now
    
    MAC adresses:
    - LAN and 2.4GHz use the same MAC (the one printed on the device)
    - 5GHz WiFi MAC is LAN MAC + 1
    
    GPIOs:
    - GPIO 21 is the reset pin (low active)
    - GPIO 55 is for the green LED (active high)
    - GPIO 56 is for the yellow/amber LED (active high)
    
    Signed-off-by: Roland Reinl <reinlroland+github at gmail.com>
    (cherry picked from commit 44cd32d764fe1daed3b6d0595530df0c4d1c3464)
---
 .../linux/mediatek/dts/mt7629-tplink_eap225-v5.dts | 188 +++++++++++++++++++++
 target/linux/mediatek/image/mt7629.mk              |   9 +
 .../mt7629/base-files/etc/board.d/02_network       |   3 +-
 3 files changed, 199 insertions(+), 1 deletion(-)

diff --git a/target/linux/mediatek/dts/mt7629-tplink_eap225-v5.dts b/target/linux/mediatek/dts/mt7629-tplink_eap225-v5.dts
new file mode 100644
index 0000000000..52e22541fa
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7629-tplink_eap225-v5.dts
@@ -0,0 +1,188 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include "mt7629.dtsi"
+
+/ {
+	model = "TP-Link EAP225 v5";
+	compatible = "tplink,eap225-v5", "mediatek,mt7629";
+
+	aliases {
+		led-boot = &led_status_green;
+		led-failsafe = &led_status_amber;
+		led-running = &led_status_green;
+		led-upgrade = &led_status_amber;
+		serial0 = &uart0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+		bootargs-override = "console=ttyS0,115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&pio 21 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_status_green: status_green {
+			label = "green:status";
+			gpios = <&pio 55 GPIO_ACTIVE_HIGH>;
+			default-state = "on";
+		};
+
+		led_status_amber: status_amber {
+			label = "amber:status";
+			gpios = <&pio 56 GPIO_ACTIVE_HIGH>;
+		};
+	};
+};
+
+&eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&eth_pins>;
+	pinctrl-1 = <&ephy_leds_pins>;
+	status = "okay";
+
+	mac at 1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&phy0>;
+		nvmem-cells = <&macaddr_factory_8>;
+		nvmem-cell-names = "mac-address";
+	};
+
+	mdio-bus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		phy0: ethernet-phy at 0 {
+			reg = <0>;
+		};
+	};
+};
+
+&qspi {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&qspi_pins>;
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "Bootloader";
+				reg = <0x0 0x00080000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "Partition";
+				reg = <0x00080000 0x00010000>;
+				read-only;
+			};
+
+			partition at 90000 {
+				label = "Factory";
+				reg = <0x00090000 0x00010000>;
+				compatible = "nvmem-cells";
+				read-only;
+
+				macaddr_factory_8: macaddr at 8 {
+					reg = <0x8 0x6>;
+				};
+			};
+
+			partition at A0000 {
+				label = "Radio";
+				reg = <0x000A0000 0x00010000>;
+				read-only;
+			};
+
+			partition at B0000 {
+				label = "Extra";
+				reg = <0x000B0000 0x00010000>;
+				read-only;
+			};
+
+			/* Vendor layout: kernel (0x000C0000 0x001A0000) - rootfs (0x00260000 0x00BE0000) */
+			/* OpenWrt flash layout: combine kernel and rootfs from OEM layout */
+			partition at C0000 {
+				label = "firmware";
+				reg = <0x000C0000 0x00D80000>;
+			};
+
+			partition at E40000 {
+				label = "Config";
+				reg = <0x00E40000 0x0001B0000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&pio {
+	eth_pins: eth-pins {
+		mux {
+			function = "eth";
+			groups = "mdc_mdio";
+		};
+	};
+
+	ephy_leds_pins: ephy-leds-pins {
+		mux {
+			function = "led";
+			groups = "ephy_leds";
+		};
+	};
+
+	qspi_pins: qspi-pins {
+		mux {
+			function = "flash";
+			groups = "spi_nor";
+		};
+	};
+
+	uart0_pins: uart0-pins {
+		mux {
+			function = "uart";
+			groups = "uart0_txd_rxd" ;
+		};
+	};
+
+	watchdog_pins: watchdog-pins {
+		mux {
+			function = "watchdog";
+			groups = "watchdog";
+		};
+	};
+};
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_pins>;
+	status = "okay";
+};
+
+&watchdog {
+	pinctrl-names = "default";
+	pinctrl-0 = <&watchdog_pins>;
+	status = "okay";
+};
diff --git a/target/linux/mediatek/image/mt7629.mk b/target/linux/mediatek/image/mt7629.mk
index 33c557190f..9374228808 100644
--- a/target/linux/mediatek/image/mt7629.mk
+++ b/target/linux/mediatek/image/mt7629.mk
@@ -48,3 +48,12 @@ define Device/netgear_ex6250-v2
 	pad-rootfs | check-size | netgear-encrypted-factory
 endef
 TARGET_DEVICES += netgear_ex6250-v2
+
+define Device/tplink_eap225-v5
+  DEVICE_VENDOR := TP-Link
+  DEVICE_MODEL := EAP225
+  DEVICE_VARIANT := v5
+  DEVICE_DTS := mt7629-tplink_eap225-v5
+  DEVICE_DTS_DIR := ../dts
+endef
+TARGET_DEVICES += tplink_eap225-v5
diff --git a/target/linux/mediatek/mt7629/base-files/etc/board.d/02_network b/target/linux/mediatek/mt7629/base-files/etc/board.d/02_network
index db931c8334..df042f8ad2 100644
--- a/target/linux/mediatek/mt7629/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/mt7629/base-files/etc/board.d/02_network
@@ -16,7 +16,8 @@ mediatek_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0:lan" "1:lan" "2:lan" "3:lan" "6 at eth0"
 		;;
-	netgear,ex6250-v2)
+	netgear,ex6250-v2|\
+	tplink,eap225-v5)
 		ucidef_set_interface_lan "eth0"
 		;;
 	esac



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:20 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:20 -0500
Subject: [openwrt/openwrt]  mediatek: mt7981: improve fan behaviour
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12533.1709476710.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/91ef14a487a51b5f6d20f8f2cc9d1b485535fddc

commit 91ef14a487a51b5f6d20f8f2cc9d1b485535fddc
Author: ?ukasz M <lukasz1992m at gmail.com>
AuthorDate: Tue Oct 31 16:15:06 2023 +0100

    mediatek: mt7981: improve fan behaviour
    
    This doubles the number of cooling-levels.
    In addition the fan is turned on with a low speed at lower temperatures
    and with a higher speed at higher temperatures.
    This also attempts to reduce the likelihood of constant start-stop actions.
    
    The change only affects the GL.iNet MT3000 and has been tested with it.
    
    Signed-off-by: ?ukasz M <lukasz1992m at gmail.com>
    (cherry picked from commit 5a603c7a316c3fb4bae4c7cb5c666232864126f2)
---
 .../arch/arm64/boot/dts/mediatek/mt7981.dtsi       | 52 +++++++++++++---------
 1 file changed, 32 insertions(+), 20 deletions(-)

diff --git a/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7981.dtsi b/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7981.dtsi
index 05d4b7d91d..cb161df81e 100644
--- a/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7981.dtsi
+++ b/target/linux/mediatek/files-5.15/arch/arm64/boot/dts/mediatek/mt7981.dtsi
@@ -55,8 +55,8 @@
 
 	fan: pwm-fan {
 		compatible = "pwm-fan";
-		/* cooling level (0, 1, 2, 3) : (0% duty, 50% duty, 75% duty, 100% duty) */
-		cooling-levels = <0 128 192 255>;
+		/* cooling level (0, 1, 2, 3, 4, 5, 6, 7) : (0%/25%/37.5%/50%/62.5%/75%/87.5%/100% duty) */
+		cooling-levels = <0 63 95 127 159 191 223 255>;
 		#cooling-cells = <2>;
 		status = "disabled";
 	};
@@ -67,55 +67,67 @@
 			polling-delay = <1000>;
 			thermal-sensors = <&thermal 0>;
 			trips {
-				cpu_trip_crit: crit {
-					temperature = <125000>;
+				cpu_trip_active_highest: active-highest {
+					temperature = <70000>;
 					hysteresis = <2000>;
-					type = "critical";
-				};
-
-				cpu_trip_hot: hot {
-					temperature = <120000>;
-					hysteresis = <2000>;
-					type = "hot";
+					type = "active";
 				};
 
 				cpu_trip_active_high: active-high {
-					temperature = <115000>;
+					temperature = <60000>;
 					hysteresis = <2000>;
 					type = "active";
 				};
 
 				cpu_trip_active_med: active-med {
-					temperature = <85000>;
+					temperature = <50000>;
 					hysteresis = <2000>;
 					type = "active";
 				};
 
 				cpu_trip_active_low: active-low {
-					temperature = <60000>;
+					temperature = <45000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+
+				cpu_trip_active_lowest: active-lowest {
+					temperature = <40000>;
 					hysteresis = <2000>;
 					type = "active";
 				};
 			};
 
 			cooling-maps {
+				cpu-active-highest {
+					/* active: set fan to cooling level 7 */
+					cooling-device = <&fan 7 7>;
+					trip = <&cpu_trip_active_highest>;
+				};
+
 				cpu-active-high {
-					/* active: set fan to cooling level 3 */
-					cooling-device = <&fan 3 3>;
+					/* active: set fan to cooling level 5 */
+					cooling-device = <&fan 5 5>;
 					trip = <&cpu_trip_active_high>;
 				};
 
 				cpu-active-med {
-					/* active: set fan to cooling level 2 */
-					cooling-device = <&fan 2 2>;
+					/* active: set fan to cooling level 3 */
+					cooling-device = <&fan 3 3>;
 					trip = <&cpu_trip_active_med>;
 				};
 
 				cpu-active-low {
-					/* passive: set fan to cooling level 1 */
-					cooling-device = <&fan 1 1>;
+					/* active: set fan to cooling level 2 */
+					cooling-device = <&fan 2 2>;
 					trip = <&cpu_trip_active_low>;
 				};
+
+				cpu-active-lowest {
+					/* active: set fan to cooling level 1 */
+					cooling-device = <&fan 1 1>;
+					trip = <&cpu_trip_active_lowest>;
+				};
 			};
 		};
 	};



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:23 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:23 -0500
Subject: [openwrt/openwrt]  mediatek: add label-mac-device for Buffalo
 WSR-2533DHP2
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12532.1709476710.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/9c793c44c98d37f210072d4c60cb3255160e8c95

commit 9c793c44c98d37f210072d4c60cb3255160e8c95
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sun Aug 27 18:04:04 2023 +0900

    mediatek: add label-mac-device for Buffalo WSR-2533DHP2
    
    Add label-mac-device with "&gmac0" phandle for Buffalo WSR-2533DHP2.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    (cherry picked from commit 94606abf63c22dfda9b9a63c603339505ed5f5b4)
---
 target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
index 9a44152a91..f8990b25cf 100644
--- a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
+++ b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
@@ -17,6 +17,7 @@
 		led-failsafe = &power_amber;
 		led-running = &power_green;
 		led-upgrade = &power_green;
+		label-mac-device = &gmac0;
 	};
 
 	chosen {



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:27 -0500
Subject: [openwrt/openwrt]  mediatek: add support for Buffalo WSR-3200AX4S
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12536.1709476710.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/5b4df9a27e842e4f02c3591300ce92f7b494cec3

commit 5b4df9a27e842e4f02c3591300ce92f7b494cec3
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sun Aug 27 23:23:20 2023 +0900

    mediatek: add support for Buffalo WSR-3200AX4S
    
    Buffalo WSR-3200AX4S is a 2.4/5 GHz band 11ax (Wi-Fi 6) router, based on
    MT7622B.
    
    Specification:
    
    - SoC         : MediaTek MT7622B
    - RAM         : DDR3 512 MiB
    - Flash       : SPI-NAND 128 MiB (Winbond W25N01GVZEIG)
    - WLAN        : 2.4/5 GHz 4T4R
      - 2.4 GHz   : MediaTek MT7622B (SoC)
      - 5 GHz     : MediaTek MT7915
    - Ethernet    : 5x 10/100/1000 Mbps
      - Switch    : MediaTek MT7531
    - LEDs/Keys   : 6x/5x (2x: buttons, 3x: slide-switches)
    - UART        : through-hole on PCB (J4)
      - assignment: 3.3V, GND, TX, RX from tri-angle marking
      - settings  : 115200n8
    - Power       : 12 VDC, 1.5 A
    
    Flash instruction using factory.bin image:
    
    1. Boot WSR-3200AX4S with "Router" mode
    2. Access to "http://192.168.11.1/" and open firmware update page
       ("?????????")
    3. Select the OpenWrt factory.bin image and click update ("????")
       button
    4. Wait ~120 seconds to complete flashing
    
    Note:
    
    - This device has 2x OS images on flash. The first one will always be
      used for booting and the secondary is for backup.
    
    - This support generates multiple factory*.bin image:
    
      - factory.bin      : for flashing from OEM WebUI
      - factory-uboot.bin: for flashing from U-Boot or clean installation
                           via sysupgrade (don't use for normal sysupgrade)
    
    Known issues:
    
    - Wi-Fi MAC addresses won't be applied to each adapter.
    
    MAC Addresses:
    
    LAN    : C4:3C:EA:xx:xx:60 (board_data, mac (text))
    WAN    : C4:3C:EA:xx:xx:60 (board_data, mac (text))
    2.4 GHz: C4:3C:EA:xx:xx:61
    5 GHz  : C4:3C:EA:xx:xx:68
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    (cherry picked from commit 7383eb266b64f374c7109ad1db5360bf91dc11c3)
---
 .../mediatek/dts/mt7622-buffalo-wsr-3200ax4s.dts   | 175 +++++++++++++++++++++
 target/linux/mediatek/image/mt7622.mk              |  31 ++++
 .../mt7622/base-files/etc/board.d/02_network       |   6 +
 .../etc/hotplug.d/ieee80211/11_fix_wifi_mac        |   5 +
 .../mt7622/base-files/etc/uci-defaults/09_fix_crc  |   4 +
 .../mt7622/base-files/lib/upgrade/platform.sh      |   6 +-
 6 files changed, 225 insertions(+), 2 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7622-buffalo-wsr-3200ax4s.dts b/target/linux/mediatek/dts/mt7622-buffalo-wsr-3200ax4s.dts
new file mode 100644
index 0000000000..678c31b711
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7622-buffalo-wsr-3200ax4s.dts
@@ -0,0 +1,175 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7622-buffalo-wsr.dtsi"
+
+/ {
+	model = "Buffalo WSR-3200AX4S";
+	compatible = "buffalo,wsr-3200ax4s", "mediatek,mt7622";
+
+	memory {
+		reg = <0 0x40000000 0 0x1f000000>;
+	};
+};
+
+&pio {
+	/* Serial NAND is shared pin with SPI-NOR */
+	serial_nand_pins: serial-nand-pins {
+		mux {
+			function = "flash";
+			groups = "snfi";
+		};
+
+		conf-cmd-dat {
+			pins = "SPI_WP", "SPI_HOLD", "SPI_MOSI",
+			       "SPI_MISO", "SPI_CS";
+			input-enable;
+			drive-strength = <16>;
+			bias-pull-up;
+		};
+
+		conf-clk {
+			pins = "SPI_CLK";
+			drive-strength = <16>;
+			bias-pull-down;
+		};
+	};
+};
+
+&mdio {
+	switch at 1f {
+		compatible = "mediatek,mt7531";
+		reg = <0x1f>;
+		reset-gpios = <&pio 54 GPIO_ACTIVE_HIGH>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port at 0 {
+				reg = <0>;
+				label = "lan4";
+			};
+
+			port at 1 {
+				reg = <1>;
+				label = "lan3";
+			};
+
+			port at 2 {
+				reg = <2>;
+				label = "lan2";
+			};
+
+			port at 3 {
+				reg = <3>;
+				label = "lan1";
+			};
+
+			port at 4 {
+				reg = <4>;
+				label = "wan";
+			};
+
+			port at 6 {
+				reg = <6>;
+				label = "cpu";
+				ethernet = <&gmac0>;
+				phy-connection-type = "2500base-x";
+
+				fixed-link {
+					speed = <2500>;
+					full-duplex;
+					pause;
+				};
+			};
+		};
+	};
+};
+
+&snfi {
+	pinctrl-names = "default";
+	pinctrl-0 = <&serial_nand_pins>;
+	status = "okay";
+
+	flash at 0 {
+		compatible = "spi-nand";
+		reg = <0>;
+		spi-max-frequency = <104000000>;
+		nand-ecc-engine = <&snfi>;
+		mediatek,bmt-v2;
+		mediatek,bmt-table-size = <0x1000>;
+		/*
+		 * - Preloader - (kernel (6MiB, in firmware))
+		 * - Kernel2 - WTB
+		 */
+		mediatek,bmt-remap-range = <0x0 0x8c0000>,
+					   <0x1ac0000 0x5200000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "Preloader";
+				reg = <0x0 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "ATF";
+				reg = <0x80000 0x40000>;
+				read-only;
+			};
+
+			partition at c0000 {
+				label = "u-boot";
+				reg = <0xc0000 0x80000>;
+				read-only;
+			};
+
+			partition at 140000 {
+				label = "u-boot-env";
+				reg = <0x140000 0x80000>;
+				read-only;
+			};
+
+			factory: partition at 1c0000 {
+				label = "factory";
+				reg = <0x1c0000 0x100000>;
+				read-only;
+			};
+
+			partition at 2c0000 {
+				compatible = "brcm,trx";
+				brcm,trx-magic = <0x33504844>;
+				label = "firmware";
+				reg = <0x2c0000 0x1800000>;
+			};
+
+			partition at 1ac0000 {
+				label = "Kernel2";
+				reg = <0x1ac0000 0x1800000>;
+			};
+
+			partition at 32c0000 {
+				label = "glbcfg";
+				reg = <0x32c0000 0x200000>;
+				read-only;
+			};
+
+			partition at 34c0000 {
+				label = "board_data";
+				reg = <0x34c0000 0x200000>;
+				read-only;
+			};
+
+			partition at 36c0000 {
+				label = "WTB";
+				reg = <0x36c0000 0x3600000>;
+				read-only;
+			};
+		};
+	};
+};
diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk
index 2a5e60989f..50166669e2 100644
--- a/target/linux/mediatek/image/mt7622.mk
+++ b/target/linux/mediatek/image/mt7622.mk
@@ -128,6 +128,37 @@ define Device/buffalo_wsr-2533dhp2
 endef
 TARGET_DEVICES += buffalo_wsr-2533dhp2
 
+define Device/buffalo_wsr-3200ax4s
+  DEVICE_VENDOR := Buffalo
+  DEVICE_MODEL := WSR-3200AX4S
+  DEVICE_DTS := mt7622-buffalo-wsr-3200ax4s
+  IMAGE_SIZE := 24576k
+  BUFFALO_TRX_MAGIC := 0x33504844
+  DEVICE_PACKAGES := kmod-mt7915-firmware
+  DEVICE_DTS_DIR := ../dts
+  KERNEL_SIZE := 6144k
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  UBINIZE_OPTS := -E 5
+  BUFFALO_TAG_PLATFORM := MTK
+  BUFFALO_TAG_VERSION := 9.99
+  BUFFALO_TAG_MINOR := 9.99
+  IMAGES += factory.bin factory-uboot.bin
+  KERNEL_INITRAMFS = kernel-bin | lzma | \
+	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | \
+	buffalo-trx
+  IMAGE/factory.bin = append-ubi | \
+	buffalo-trx $$$$(BUFFALO_TRX_MAGIC) $$$$@ $(KDIR)/ubi_mark | \
+	buffalo-enc $$(DEVICE_MODEL) $$(BUFFALO_TAG_VERSION) -l | \
+	buffalo-tag-dhp $$(DEVICE_MODEL) JP JP | buffalo-enc-tag -l | buffalo-dhp-image
+  IMAGE/factory-uboot.bin := append-ubi | \
+	buffalo-trx $$$$(BUFFALO_TRX_MAGIC) $$$$@ $(KDIR)/ubi_mark
+  IMAGE/sysupgrade.bin := \
+	buffalo-trx $$$$(BUFFALO_TRX_MAGIC) $(KDIR)/tmp/$$(DEVICE_NAME).null | \
+	sysupgrade-tar kernel=$$$$@ | append-metadata
+endef
+TARGET_DEVICES += buffalo_wsr-3200ax4s
+
 define Device/elecom_wrc-2533gent
   DEVICE_VENDOR := Elecom
   DEVICE_MODEL := WRC-2533GENT
diff --git a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
index 38db921f5c..d1341099bc 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
@@ -9,6 +9,7 @@ mediatek_setup_interfaces()
 
 	case $board in
 	bananapi,bpi-r64|\
+	buffalo,wsr-3200ax4s|\
 	elecom,wrc-x3200gst3|\
 	linksys,e8450|\
 	linksys,e8450-ubi|\
@@ -55,6 +56,11 @@ mediatek_setup_macs()
 	local label_mac=""
 
 	case $board in
+	buffalo,wsr-3200ax4s)
+		lan_mac=$(mtd_get_mac_ascii board_data "mac")
+		wan_mac=$lan_mac
+		label_mac=$lan_mac
+		;;
 	reyee,ax3200-e5|\
 	ruijie,rg-ew3200gx-pro)
 		lan_mac=$(macaddr_add $(get_mac_label) 1)
diff --git a/target/linux/mediatek/mt7622/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/mt7622/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index f8639e9f40..7ee9f24071 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/mt7622/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -13,6 +13,11 @@ case "$board" in
 	bananapi,bpi-r64)
 		[ "$PHYNBR" = "0" ] && macaddr_add $(cat /sys/class/net/eth0/address) 2 > /sys${DEVPATH}/macaddress
 		;;
+	buffalo,wsr-3200ax4s)
+		basemac=$(mtd_get_mac_ascii board_data "mac")
+		[ "$PHYNBR" = "0" ] && macaddr_add $basemac 1 > /sys${DEVPATH}/macaddress
+		[ "$PHYNBR" = "1" ] && macaddr_add $basemac 8 > /sys${DEVPATH}/macaddress
+		;;
 	reyee,ax3200-e5|\
 	ruijie,rg-ew3200gx-pro)
 		[ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) 3 > /sys${DEVPATH}/macaddress
diff --git a/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/09_fix_crc b/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/09_fix_crc
index 81cb6b18b7..59b00a6e69 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/09_fix_crc
+++ b/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/09_fix_crc
@@ -7,4 +7,8 @@ buffalo,wsr-2533dhp2)
 	mtd -M 0x44485032 ${kernel_size:+-c 0x$kernel_size} fixtrx firmware && exit 0
 	exit 1
 	;;
+buffalo,wsr-3200ax4s)
+	mtd -M 0x44485033 ${kernel_size:+-c 0x$kernel_size} fixtrx firmware && exit 0
+	exit 1
+	;;
 esac
diff --git a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
index b37b7b1c6e..ea3176d2d1 100755
--- a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
@@ -21,7 +21,8 @@ platform_do_upgrade() {
 			;;
 		esac
 		;;
-	buffalo,wsr-2533dhp2)
+	buffalo,wsr-2533dhp2|\
+	buffalo,wsr-3200ax4s)
 		local magic="$(get_magic_long "$1")"
 
 		# use "mtd write" if the magic is "DHP2 (0x44485032)"
@@ -67,7 +68,8 @@ platform_check_image() {
 	[ "$#" -gt 1 ] && return 1
 
 	case "$board" in
-	buffalo,wsr-2533dhp2)
+	buffalo,wsr-2533dhp2|\
+	buffalo,wsr-3200ax4s)
 		buffalo_check_image "$board" "$magic" "$1" || return 1
 		;;
 	elecom,wrc-x3200gst3|\



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:22 -0500
Subject: [openwrt/openwrt]  mediatek: update NVMEM bindings for Buffalo
 WSR-2533DHP2
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12537.1709476710.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/7e47913ef66fc01337f8b909c4b5811deee2cf85

commit 7e47913ef66fc01337f8b909c4b5811deee2cf85
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sun Aug 27 15:10:53 2023 +0900

    mediatek: update NVMEM bindings for Buffalo WSR-2533DHP2
    
    Update NVMEM-related nodes and use newer binding for MAC addresses on
    Buffalo WSR-2533DHP2.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    (cherry picked from commit de62e0165264fb2872e87116ddceb8c7e12c5a5a)
---
 .../mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts   | 26 ++++++++++++----------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
index fec559c8af..9a44152a91 100644
--- a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
+++ b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
@@ -229,9 +229,8 @@
 
 		phy-connection-type = "2500base-x";
 
-		nvmem-cells = <&macaddr_factory_4>;
+		nvmem-cells = <&macaddr_factory_4 (-1)>;
 		nvmem-cell-names = "mac-address";
-		mac-address-increment = <(-1)>;
 
 		fixed-link {
 			speed = <2500>;
@@ -284,9 +283,22 @@
 			};
 
 			factory: partition at 1c0000 {
+				compatible = "nvmem-cells";
 				label = "factory";
 				reg = <0x1c0000 0x40000>;
 				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_factory_4: macaddr at 4 {
+						compatible = "mac-base";
+						reg = <0x4 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
 			};
 
 			partition at 200000 {
@@ -349,13 +361,3 @@
 &rtc {
 	status = "disabled";
 };
-
-&factory {
-	compatible = "nvmem-cells";
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	macaddr_factory_4: macaddr at 4 {
-		reg = <0x4 0x6>;
-	};
-};



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:28 -0500
Subject: [openwrt/openwrt]  mediatek: Add support for D-Link EAGLE PRO AI M32
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12538.1709476710.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/f555fa6fd07bd9715d70a447eb92c75ade59e24b

commit f555fa6fd07bd9715d70a447eb92c75ade59e24b
Author: Roland Reinl <reinlroland+github at gmail.com>
AuthorDate: Thu Jul 20 16:00:50 2023 +0200

    mediatek: Add support for D-Link EAGLE PRO AI M32
    
    Specification:
     - MT7622BV SoC with 2.4GHz wifi
     - MT7975AN + MT7915AN for 5GHz
     - MT7531BE Switch
     - 512MB RAM
     - 128 MB flash
     - 3 LEDs (red, orange, white)
     - 2 buttons (WPS and Reset)
    
    MAC addresses:
     - WAN MAC is stored in partition "Odm" at offset 0x83
     - LAN (as printed on the device) is WAN MAC + 1
     - WLAN MAC (2.4 GHz) is WAN MAC + 2
     - WLAN MAC (5GHz) is WAN MAC + 3
    
    Disassembly: Remove 4 screws in the bottom and 2 screws in the top (after removing the blue cover on the top), then the board can be pulled out.
    
    The pins for the serial console are already labeled on the board (VCC, TX, RX, GND). Serial settings: 3.3V, 115200,8n1
    
    Flashing via Recovery Web Interface:
    - Set your IP address to 192.168.0.10, subnetmask 255.255.255.25
    - Press the reset button while powering on the deivce
    - Keep the reset button pressed until the status LED blinks fast
    - Open a Chromium based and goto http://192.168.0.1
    - Download openwrt-mediatek-mt7622-dlink_eagle-pro-ai-m32-a1-squashfs-recovery.bin
    
    Flashing via uBoot:
    - Open the case, connect to the UART console
    - Set your IP address to 10.10.10.3, subnet mask 255.255.255.0. Connect to one of the LAN interfaces of the router
    - Run a tftp server which provides openwrt-mediatek-mt7622-dlink_eagle-pro-ai-m32-initramfs-kernel.bin. You can rename the file to iverson_uImage (no extension), then you don't have to enter the whole file name in uboot later.
    - Power on the device and select "1. System Load Linux to SDRAM via TFTP." in the boot menu
    - Enter image file, tftp server IP and device IP (if they differ from the default).
    - TFTP download to RAM will start. After a few seconds OpenWrt initramfs should start
    - The initramfs is accessible via 192.168.1.1, change your IP address accordingly (or use multiple IP addresses on your interface)
    - Create a backup of the Kernel1 partition, this file is required if a revert to stock should be done later
    - Perform a sysupgrade using openwrt-mediatek-mt7622-dlink_eagle-pro-ai-m32-squashfs-sysupgrade.bin
    - Reboot the device. OpenWrt should start from flash now
    
    Revert back to stock using the Recovery Web Interface:
    - Set your IP address to 192.168.0.10, subnetmask 255.255.255.25
    - Press the reset button while powering on the deivce
    - Keep the reset button pressed until the status LED blinks fast
    - Open a Chromium based and goto http://192.168.0.1
    - Flash a decrypted firmware image from D-Link. Decrypting an firmware image is described below.
    
    Decrypting a D-Link firmware image:
    - Download https://github.com/RolandoMagico/firmware-utils/blob/M32/src/m32-firmware-util.c
    - Compile a binary from the downloaded file, e.g. gcc m32-firmware-util.c -lcrypto -o m32-firmware-util
    - Run ./m32-firmware-util M32 --DecryptFactoryImage <OriginalFirmware> <OutputFile>
    - Example for firmware 1.03.01_HOTFIX: ./m32-firmware-util M32 --DecryptFactoryImage M32-REVA_1.03.01_HOTFIX.enc.bin M32-REVA_1.03.01_HOTFIX.decrypted.bin
    
    Revert back to stock using uBoot:
    - Open the case, connect to the UART console
    - Set your IP address to 10.10.10.3, subnet mask 255.255.255.0. Connect to one of the LAN interfaces of the router
    - Run a tftp server which provides the previously created backup of the Kernel1 partition. You can rename the file to iverson_uImage (no extension), then you don't have to enter the whole file name in uboot later.
    - Power on the device and select "2. System Load Linux Kernel then write to Flash via TFTP." in the boot menu
    - Enter image file, tftp server IP and device IP (if they differ from the default).
    - TFTP download to FLASH will start. After a few seconds the stock firmware should start again
    
    There is also an image openwrt-mediatek-mt7622-dlink_eagle-pro-ai-m32-a1-squashfs-tftp.bin which can directly be flashed via U-Boot and TFTP. It can be used if no backup of the Kernel1 partition is reuqired.
    
    Flahsing via OEM web interface is currently not possible, the OEM images are encrypted and require a specific memory layout which is not compatible to the partition layout of OpenWrt.
    
    Signed-off-by: Roland Reinl <reinlroland+github at gmail.com>
    (cherry picked from commit e3a6945b58daf0cda1db1b356bed304404cb77f5)
---
 .../dts/mt7622-dlink-eagle-pro-ai-m32-a1.dts       | 399 +++++++++++++++++++++
 target/linux/mediatek/image/mt7622.mk              |  38 ++
 .../mt7622/base-files/etc/board.d/02_network       |   7 +
 .../etc/hotplug.d/ieee80211/11_fix_wifi_mac        |   4 +
 .../mt7622/base-files/lib/upgrade/platform.sh      |   2 +
 5 files changed, 450 insertions(+)

diff --git a/target/linux/mediatek/dts/mt7622-dlink-eagle-pro-ai-m32-a1.dts b/target/linux/mediatek/dts/mt7622-dlink-eagle-pro-ai-m32-a1.dts
new file mode 100644
index 0000000000..ca680e4c29
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7622-dlink-eagle-pro-ai-m32-a1.dts
@@ -0,0 +1,399 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/dts-v1/;
+#include "mt7622.dtsi"
+#include "mt6380.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link EAGLE PRO AI M32 A1";
+	compatible = "dlink,eagle-pro-ai-m32-a1", "mediatek,mt7622";
+
+	aliases {
+		led-boot = &status_orange;
+		led-failsafe = &status_red;
+		led-running = &status_white;
+		led-upgrade = &status_red;
+		serial0 = &uart0;
+		label-mac-device = &gmac0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+		bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8 swiotlb=512";
+	};
+
+	cpus {
+		cpu at 0 {
+			proc-supply = <&mt6380_vcpu_reg>;
+			sram-supply = <&mt6380_vm_reg>;
+		};
+
+		cpu at 1 {
+			proc-supply = <&mt6380_vcpu_reg>;
+			sram-supply = <&mt6380_vm_reg>;
+		};
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		reset {
+			gpios = <&pio 0 GPIO_ACTIVE_LOW>;
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+		};
+
+		wps {
+			gpios = <&pio 102 GPIO_ACTIVE_LOW>;
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		status_white: status_white {
+			label = "white:status";
+			gpios = <&pio 85 GPIO_ACTIVE_LOW>;
+		};
+
+		status_orange: status_orange {
+			label = "orange:status";
+			gpios = <&pio 20 GPIO_ACTIVE_LOW>;
+			default-state = "on";
+		};
+
+		status_red: status_red {
+			label = "red:status";
+			gpios = <&pio 17 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	memory {
+		reg = <0 0x40000000 0 0x40000000>;
+	};
+};
+
+&bch {
+	status = "okay";
+};
+
+&btif {
+	status = "okay";
+};
+
+&eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&eth_pins>;
+	status = "okay";
+
+	gmac0: mac at 0 {
+		compatible = "mediatek,eth-mac";
+		nvmem-cells = <&macaddr_odm_83>;
+		nvmem-cell-names = "mac-address";
+		phy-mode = "2500base-x";
+		reg = <0>;
+
+		fixed-link {
+			full-duplex;
+			pause;
+			speed = <2500>;
+		};
+	};
+
+	mdio-bus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		switch at 0 {
+			compatible = "mediatek,mt7531";
+			reg = <0>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			interrupt-parent = <&pio>;
+			interrupts = <53 IRQ_TYPE_LEVEL_HIGH>;
+			reset-gpios = <&pio 54 0>;
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port at 2 {
+					reg = <2>;
+					label = "lan2";
+				};
+
+				port at 3 {
+					reg = <3>;
+					label = "lan1";
+				};
+
+				wan: port at 4 {
+					reg = <4>;
+					label = "wan";
+				};
+
+				port at 6 {
+					reg = <6>;
+					ethernet = <&gmac0>;
+					phy-mode = "2500base-x";
+
+					fixed-link {
+						speed = <2500>;
+						full-duplex;
+						pause;
+					};
+				};
+			};
+		};
+	};
+};
+
+&pcie0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie0_pins>;
+	status = "okay";
+};
+
+&pcie1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie1_pins>;
+	status = "okay";
+};
+
+&pio {
+    epa_elna_pins: epa-elna-pins {
+		mux {
+			function = "antsel";
+			groups = "antsel0", "antsel1", "antsel2", "antsel3",
+				  "antsel4", "antsel5", "antsel6", "antsel7",
+      				  "antsel8", "antsel9", "antsel12", "antsel13",
+    				  "antsel14", "antsel15", "antsel16", "antsel17";
+		};
+	};
+
+	eth_pins: eth-pins {
+		mux {
+			function = "eth";
+			groups = "mdc_mdio", "rgmii_via_gmac2";
+		};
+	};
+
+	pcie0_pins: pcie0-pins {
+		mux {
+			function = "pcie";
+			groups = "pcie0_pad_perst",
+				 "pcie0_1_waken",
+				 "pcie0_1_clkreq";
+		};
+	};
+
+	pcie1_pins: pcie1-pins {
+		mux {
+			function = "pcie";
+			groups = "pcie1_pad_perst",
+				 "pcie1_0_waken",
+				 "pcie1_0_clkreq";
+		};
+	};
+
+	pmic_bus_pins: pmic-bus-pins {
+		mux {
+			function = "pmic";
+			groups = "pmic_bus";
+		};
+	};
+
+	/* Serial NAND is shared pin with SPI-NOR */
+	serial_nand_pins: serial-nand-pins {
+		mux {
+			function = "flash";
+			groups = "snfi";
+		};
+	};
+
+	uart0_pins: uart0-pins {
+		mux {
+			function = "uart";
+			groups = "uart0_0_tx_rx";
+		};
+	};
+
+	watchdog_pins: watchdog-pins {
+		mux {
+			function = "watchdog";
+			groups = "watchdog";
+		};
+	};
+};
+
+&pwrap {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pmic_bus_pins>;
+	status = "okay";
+};
+
+&rtc {
+	status = "disabled";
+};
+
+&sata {
+	status = "disabled";
+};
+
+&sata_phy {
+	status = "disabled";
+};
+
+&slot0 {
+	wmac1: mt7915 at 0,0 {
+		reg = <0x0000 0 0 0 0>;
+		ieee80211-freq-limit = <5000000 6000000>;
+		mediatek,mtd-eeprom = <&factory 0x05000>;
+	};
+};
+
+&snfi {
+	pinctrl-names = "default";
+	pinctrl-0 = <&serial_nand_pins>;
+	status = "okay";
+
+	snand: flash at 0 {
+		compatible = "spi-nand";
+		mediatek,bmt-table-size = <0x1000>;
+		mediatek,bmt-v2;
+		nand-ecc-engine = <&snfi>;
+		reg = <0>;
+		spi-rx-bus-width = <4>;
+		spi-tx-bus-width = <4>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "Preloader";
+				reg = <0x00000000 0x00080000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "ATF";
+				reg = <0x00080000 0x00040000>;
+				read-only;
+			};
+
+			partition at C0000 {
+				label = "Bootloader";
+				reg = <0x000C0000 0x00080000>;
+				read-only;
+			};
+
+			partition at 140000 {
+				label = "BootConfig";
+				reg = <0x00140000 0x00040000>;
+				read-only;
+			};
+
+			odm: partition at 180000 {
+				compatible = "nvmem-cells";
+				label = "Odm";
+				reg = <0x00180000 0x00040000>;
+				read-only;
+
+				macaddr_odm_83: macaddr at 83 {
+					reg = <0x83 0x6>;
+				};
+			};
+
+			config1: partition at 1C0000 {
+				compatible = "nvmem-cells";
+				label = "Config1";
+				reg = <0x001C0000 0x00080000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				read-only;
+			};
+
+			partition at 240000 {
+				label = "Config2";
+				reg = <0x00240000 0x00080000>;
+				read-only;
+			};
+
+			partition at 2C0000 {
+				label = "Kernel1";
+				reg = <0x002C0000 0x02D00000>;
+
+				compatible = "fixed-partitions";
+				#address-cells = <1>;
+				#size-cells = <1>;
+				partition at 0 {
+					label = "kernel";
+					reg = <0x00000000 0x00800000>;
+				};
+
+				partition at 800000 {
+					label = "ubi";
+					reg = <0x00800000 0x02500000>;
+				};
+			};
+
+			partition at 2FC0000 {
+				label = "Kernel2";
+				reg = <0x02FC0000 0x02D00000>;
+				read-only;
+			};
+
+			factory: partition at 5CC0000 {
+				label = "Factory";
+				reg = <0x05CC0000 0x00100000>;
+				read-only;
+			};
+
+			partition at 5DC0000 {
+				label = "Mydlink";
+				reg = <0x05DC0000 0x00200000>;
+				read-only;
+			};
+
+			partition at 5FC0000 {
+				label = "Storage";
+				reg = <0x05FC0000 0x00300000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&ssusb {
+	status = "disabled";
+};
+
+&u3phy {
+	status = "disabled";
+};
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_pins>;
+	status = "okay";
+};
+
+&watchdog {
+	pinctrl-names = "default";
+	pinctrl-0 = <&watchdog_pins>;
+	status = "okay";
+};
+
+&wmac {
+	pinctrl-names = "default";
+	pinctrl-0 = <&epa_elna_pins>;
+	mediatek,mtd-eeprom = <&factory 0x0000>;
+	status = "okay";
+};
+
diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk
index 50166669e2..294e23c855 100644
--- a/target/linux/mediatek/image/mt7622.mk
+++ b/target/linux/mediatek/image/mt7622.mk
@@ -35,6 +35,25 @@ define Build/bl31-uboot
 	cat $(STAGING_DIR_IMAGE)/mt7622_$1-u-boot.fip >> $@
 endef
 
+# Append header to a D-Link M32 Kernel 1 partition
+define Build/m32-recovery-header-kernel1
+	echo -en "DLK6E6010001\x00\x00\xCF\x33" > "$@.header"
+	echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x8D\x57\x30\x0B" >> "$@.header"
+# Byte 0-3: Erase Start 0x002C0000
+# Byte 4-7: Erase Length 0x02D00000
+# Byte 8-11: Data offset: 0x002C0000
+# Byte 12-15: Data Length: 0x02D00000
+	echo -en "\x00\x00\x2C\x00\x00\x00\xD0\x02\x00\x00\x2C\x00\x00\x00\xD0\x02" >> "$@.header"
+# Only zeros
+	echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" >> "$@.header"
+# Note: The last 2 bytes of the following line are the checksum of the header
+# If any data in the header will be changed, the checksum must be re-calculated
+	echo -en "\x42\x48\x02\x00\x00\x00\x08\x00\x00\x00\x00\x00\x60\x6E\x68\x61" >> "$@.header"
+	cat "$@.header" "$@" > "$@.new"
+	mv "$@.new" "$@"
+	rm "$@.header"
+endef
+
 define Build/mt7622-gpt
 	cp $@ $@.tmp 2>/dev/null || true
 	ptgen -g -o $@.tmp -a 1 -l 1024 \
@@ -159,6 +178,25 @@ define Device/buffalo_wsr-3200ax4s
 endef
 TARGET_DEVICES += buffalo_wsr-3200ax4s
 
+define Device/dlink_eagle-pro-ai-m32-a1
+  IMAGE_SIZE := 46080k
+  DEVICE_VENDOR := D-Link
+  DEVICE_MODEL := EAGLE PRO AI M32
+  DEVICE_VARIANT := A1
+  DEVICE_DTS := mt7622-dlink-eagle-pro-ai-m32-a1
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_PACKAGES := kmod-mt7915-firmware
+  KERNEL_SIZE := 8192k
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  UBINIZE_OPTS := -E 5
+  IMAGES += tftp.bin recovery.bin
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  IMAGE/tftp.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | check-size
+  IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | pad-to $$(IMAGE_SIZE) | m32-recovery-header-kernel1
+endef
+TARGET_DEVICES += dlink_eagle-pro-ai-m32-a1
+
 define Device/elecom_wrc-2533gent
   DEVICE_VENDOR := Elecom
   DEVICE_MODEL := WRC-2533GENT
diff --git a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
index d1341099bc..75c5e37be1 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
@@ -24,6 +24,9 @@ mediatek_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6 at eth0"
 		;;
+	dlink,eagle-pro-ai-m32-a1)
+		ucidef_set_interfaces_lan_wan "lan1 lan2" wan
+		;;
 	ubnt,unifi-6-lr*)
 		ucidef_set_interface_lan "eth0"
 		;;
@@ -61,6 +64,10 @@ mediatek_setup_macs()
 		wan_mac=$lan_mac
 		label_mac=$lan_mac
 		;;
+	dlink,eagle-pro-ai-m32-a1)
+		wan_mac=$(get_mac_label)
+		lan_mac=$(macaddr_add $(get_mac_label) 1)
+		;;
 	reyee,ax3200-e5|\
 	ruijie,rg-ew3200gx-pro)
 		lan_mac=$(macaddr_add $(get_mac_label) 1)
diff --git a/target/linux/mediatek/mt7622/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/mt7622/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index 7ee9f24071..e9cc592237 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/mt7622/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -18,6 +18,10 @@ case "$board" in
 		[ "$PHYNBR" = "0" ] && macaddr_add $basemac 1 > /sys${DEVPATH}/macaddress
 		[ "$PHYNBR" = "1" ] && macaddr_add $basemac 8 > /sys${DEVPATH}/macaddress
 		;;
+	dlink,eagle-pro-ai-m32-a1)
+		[ "$PHYNBR" = "0" ] && macaddr_add $(cat /sys/class/net/eth0/address) 2 > /sys${DEVPATH}/macaddress
+		[ "$PHYNBR" = "1" ] && macaddr_add $(cat /sys/class/net/eth0/address) 3 > /sys${DEVPATH}/macaddress
+		;;
 	reyee,ax3200-e5|\
 	ruijie,rg-ew3200gx-pro)
 		[ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) 3 > /sys${DEVPATH}/macaddress
diff --git a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
index ea3176d2d1..e256d2b533 100755
--- a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
@@ -34,6 +34,7 @@ platform_do_upgrade() {
 			nand_do_upgrade "$1"
 		fi
 		;;
+	dlink,eagle-pro-ai-m32-a1|\
 	elecom,wrc-x3200gst3|\
 	mediatek,mt7622-rfb1-ubi|\
 	netgear,wax206|\
@@ -72,6 +73,7 @@ platform_check_image() {
 	buffalo,wsr-3200ax4s)
 		buffalo_check_image "$board" "$magic" "$1" || return 1
 		;;
+  	dlink,eagle-pro-ai-m32-a1|\
 	elecom,wrc-x3200gst3|\
 	mediatek,mt7622-rfb1-ubi|\
 	netgear,wax206|\



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:24 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:24 -0500
Subject: [openwrt/openwrt]  mediatek: drop pwm7_pins from Buffalo WSR-2533DHP2
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12541.1709476712.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/a26ea172946c407d8cefdccd34b738b9e12691c5

commit a26ea172946c407d8cefdccd34b738b9e12691c5
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sun Aug 27 23:26:01 2023 +0900

    mediatek: drop pwm7_pins from Buffalo WSR-2533DHP2
    
    MediaTek MT7622 doesn't support ch7 of PWM and pinctrl groups were dropped from
    driver source[0]. So pwm7-related groups are unavailable now, then, kernel shows a
    warning.
    
    [    0.370264] mt7622-pinctrl 10211000.pinctrl: invalid group "pwm_ch7_2" for function "pwm"
    
    Drop that pinmux from pinctrl node.
    
    [0]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/pinctrl/mediatek/pinctrl-mt7622.c?id=57972641810a97566ffd13e4be3f6a66d61eb3b5
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    (cherry picked from commit 4d9113017b2d401e821fb008518cdd660dafb8a3)
---
 target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
index f8990b25cf..8b0dc1aa98 100644
--- a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
+++ b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
@@ -193,13 +193,6 @@
 		};
 	};
 
-	pwm7_pins: pwm1-2-pins {
-		mux {
-			function = "pwm";
-			groups = "pwm_ch7_2";
-		};
-	};
-
 	uart0_pins: uart0-pins {
 		mux {
 			function = "uart";
@@ -330,8 +323,6 @@
 };
 
 &pwm {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pwm7_pins>;
 	status = "okay";
 };
 



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:21 -0500
Subject: [openwrt/openwrt]  mediatek: update LED/Key bindings for Buffalo
 WSR-2533DHP2
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12542.1709476714.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/04ec453970eab87b90725df959d7f3caa21de590

commit 04ec453970eab87b90725df959d7f3caa21de590
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sun Aug 27 14:49:41 2023 +0900

    mediatek: update LED/Key bindings for Buffalo WSR-2533DHP2
    
    Update LED and key nodes with newer DeviceTree bindings for WSR-2533DHP2.
    
    - LED
      - use led-[0-9] for node name of LEDs
      - add "color" and "function" properties
      - drop default-state = "on" from green:power LED
        - this LED will be turned on by led-running alias
    
    - key
      - drop unnecessary poll-interval property
      - use key-[0-9] for node name of keys
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    (cherry picked from commit 6b8e7144c8863686a8ddef6f4fcebb3b8cf85f36)
---
 .../mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts   | 37 ++++++++++++++--------
 1 file changed, 24 insertions(+), 13 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
index 6d77be532b..fec559c8af 100644
--- a/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
+++ b/target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
@@ -2,6 +2,7 @@
 /dts-v1/;
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
 
 #include "mt7622.dtsi"
 #include "mt6380.dtsi"
@@ -29,43 +30,53 @@
 	leds {
 		compatible = "gpio-leds";
 
-		wireless_amber {
+		led-0 {
 			label = "amber:wireless";
 			gpios = <&pio 2 GPIO_ACTIVE_HIGH>;
+			color = <LED_COLOR_ID_AMBER>;
+			function = LED_FUNCTION_WLAN;
 		};
 
-		power_amber: power_amber {
+		power_amber: led-1 {
 			label = "amber:power";
 			gpios = <&pio 3 GPIO_ACTIVE_LOW>;
+			color = <LED_COLOR_ID_AMBER>;
+			function = LED_FUNCTION_POWER;
 		};
 
-		power_green: power_green {
+		power_green: led-2 {
 			label = "green:power";
 			gpios = <&pio 4 GPIO_ACTIVE_LOW>;
-			default-state = "on";
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_POWER;
 		};
 
-		wireless_green {
+		led-3 {
 			label = "green:wireless";
 			gpios = <&pio 15 GPIO_ACTIVE_HIGH>;
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
 		};
 
-		internet {
+		led-4 {
 			label = "green:internet";
 			gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WAN;
 		};
 
-		router {
+		led-5 {
 			label = "green:router";
 			gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_INDICATOR;
 		};
 	};
 
 	keys {
 		compatible = "gpio-keys";
-		poll-interval = <100>;
 
-		reset {
+		key-reset {
 			label = "reset";
 			gpios = <&pio 0 GPIO_ACTIVE_LOW>;
 			linux,code = <KEY_RESTART>;
@@ -74,14 +85,14 @@
 		/* GPIO 1 and 16 are a tri-state switch button with
 		 * ROUTER / AP / WB.
 		 */
-		router {
+		key-router {
 			label = "router";
 			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
 			linux,code = <BTN_0>;
 			linux,input-type = <EV_SW>;
 		};
 
-		bridge {
+		key-bridge {
 			label = "wb";
 			gpios = <&pio 16 GPIO_ACTIVE_LOW>;
 			linux,code = <BTN_1>;
@@ -89,14 +100,14 @@
 		};
 
 		/* GPIO 18 is a switch button with AUTO / MANUAL. */
-		manual {
+		key-manual {
 			label = "manual";
 			gpios = <&pio 18 GPIO_ACTIVE_LOW>;
 			linux,code = <BTN_2>;
 			linux,input-type = <EV_SW>;
 		};
 
-		wps {
+		key-wps {
 			label = "wps";
 			gpios = <&pio 102 GPIO_ACTIVE_LOW>;
 			linux,code = <KEY_WPS_BUTTON>;



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:25 -0500
Subject: [openwrt/openwrt]  mediatek: merge trx helpers in image/mt7622.mk
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12543.1709476717.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/882d20e25b574024442284c433d26f33cbac76f9

commit 882d20e25b574024442284c433d26f33cbac76f9
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sun Aug 27 17:29:12 2023 +0900

    mediatek: merge trx helpers in image/mt7622.mk
    
    Merge similar helpers of trx image generation, "buffalo-kernel-trx" and
    "trx-nand".
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    (cherry picked from commit d0929006f2290307f6b9ba37d221f44a145d8d1b)
---
 target/linux/mediatek/image/mt7622.mk | 42 +++++++++++++++--------------------
 1 file changed, 18 insertions(+), 24 deletions(-)

diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk
index 8f29843f3c..2a5e60989f 100644
--- a/target/linux/mediatek/image/mt7622.mk
+++ b/target/linux/mediatek/image/mt7622.mk
@@ -6,19 +6,24 @@ define Image/Prepare
 	echo -ne '\xde\xad\xc0\xde' > $(KDIR)/ubi_mark
 endef
 
-define Build/buffalo-kernel-trx
+define Build/buffalo-trx
 	$(eval magic=$(word 1,$(1)))
-	$(eval dummy=$(word 2,$(1)))
+	$(eval kern_bin=$(if $(1),$(IMAGE_KERNEL),$@))
+	$(eval rtfs_bin=$(word 2,$(1)))
+	$(eval apnd_bin=$(word 3,$(1)))
 	$(eval kern_size=$(if $(KERNEL_SIZE),$(KERNEL_SIZE),0x400000))
 
-	$(if $(dummy),touch $(dummy))
+	$(if $(rtfs_bin),touch $(rtfs_bin))
 	$(STAGING_DIR_HOST)/bin/otrx create $@.new \
 		$(if $(magic),-M $(magic),) \
-		-f $@ \
-		$(if $(dummy),\
+		-f $(kern_bin) \
+		$(if $(rtfs_bin),\
 			-a 0x20000 \
 			-b $$(( $(subst k, * 1024,$(kern_size)) )) \
-			-f $(dummy),)
+			-f $(rtfs_bin),) \
+		$(if $(apnd_bin),\
+			-A $(apnd_bin) \
+			-a 0x20000)
 	mv $@.new $@
 endef
 
@@ -51,19 +56,6 @@ define Build/mt7622-gpt
 	rm $@.tmp
 endef
 
-define Build/trx-nand
-	# kernel: always use 4 MiB (-28 B or TRX header) to allow upgrades even
-	#	  if it grows up between releases
-	# root: UBI with one extra block containing UBI mark to trigger erasing
-	#	rest of partition
-	$(STAGING_DIR_HOST)/bin/otrx create $@.new \
-		-M 0x32504844 \
-		-f $(IMAGE_KERNEL) -a 0x20000 -b 0x400000 \
-		-f $@ \
-		-A $(KDIR)/ubi_mark -a 0x20000
-	mv $@.new $@
-endef
-
 define Device/bananapi_bpi-r64
   DEVICE_VENDOR := Bananapi
   DEVICE_MODEL := BPi-R64
@@ -122,13 +114,15 @@ define Device/buffalo_wsr-2533dhp2
   IMAGES += factory.bin factory-uboot.bin
   KERNEL_INITRAMFS := kernel-bin | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | \
-	buffalo-kernel-trx
-  IMAGE/factory.bin := append-ubi | trx-nand | \
+	buffalo-trx
+  IMAGE/factory.bin := append-ubi | \
+	buffalo-trx 0x32504844 $$$$@ $(KDIR)/ubi_mark | \
 	buffalo-enc WSR-2533DHP2 $$(BUFFALO_TAG_VERSION) -l | \
 	buffalo-tag-dhp WSR-2533DHP2 JP JP | buffalo-enc-tag -l | buffalo-dhp-image
-  IMAGE/factory-uboot.bin := append-ubi | trx-nand
-  IMAGE/sysupgrade.bin := append-kernel | \
-	buffalo-kernel-trx 0x32504844 $(KDIR)/tmp/$$(DEVICE_NAME).null | \
+  IMAGE/factory-uboot.bin := append-ubi | \
+	buffalo-trx 0x32504844 $$$$@ $(KDIR)/ubi_mark
+  IMAGE/sysupgrade.bin := \
+	buffalo-trx 0x32504844 $(KDIR)/tmp/$$(DEVICE_NAME).null | \
 	sysupgrade-tar kernel=$$$$@ | append-metadata
   DEVICE_PACKAGES := kmod-mt7615-firmware swconfig
 endef



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:30 -0500
Subject: [openwrt/openwrt]  mediatek: add Zyxel EX5601-T0 with uboot custom
 partition
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12550.1709478280.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/6bec68062b83b86ed65a96fe4a7e1ed30e5423b9

commit 6bec68062b83b86ed65a96fe4a7e1ed30e5423b9
Author: Valerio 'ftp21' Mancini <ftp21 at ftp21.eu>
AuthorDate: Wed Oct 4 11:43:25 2023 +0200

    mediatek: add Zyxel EX5601-T0 with uboot custom partition
    
    The flash procedure is similar to the Xiaomi AX6000 router.
    
    Load openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-initramfs-recovery.itb from original Zyxel U-Boot:
    
    tftpboot openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-initramfs-recovery.itb
    bootm 0x46000000
    Load mtd-rw
    insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1
    
    Format ubi and create ubootenv partitions
    
    ubidetach -p /dev/mtd5; ubiformat /dev/mtd5 -y; ubiattach -p /dev/mtd5
    ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
    ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
    Copy openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-initramfs-recovery.itb to /tmp and create recovery partition.
    If your recovery image is larger than 10MiB, size the recovery partition accordingly to make it fit.
    
    ubimkvol /dev/ubi0 -n 2 -N recovery -s 10MiB
    ubiupdatevol /dev/ubi0_2  openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-initramfs-recovery.itb
    Copy preloader and uboot to /tmp and write them in the mtd
    
    mtd write /tmp/openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-preloader.bin bl2
    mtd write /tmp/openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-bl31-uboot.fip fip
    Now write the firmware:
    sysupgrade -n  /tmp/openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-squashfs-sysupgrade.itb
    
    To create a correct BL2, I had to add a profile for 'spim:4k+256' as I could not find a way to value the variable 'NAND_TYPE'.
    
    Features and fixes from hitech95 tree has been squashed, I'm attaching his commit message:
    
    The Power LED was not working correctly and not reacting
     to the boot process and statuses.
    
    The board has space (footprint) for an unpopulated Zigbee chip,
     while we dont know the device model having this chip populated
     we have to assure that the common dts doesnt enable
     interfaces that share pins with such device.
    
    In this instance the PCIe and the uart1 and uart2 are disabled.
    Some of the control PCIE pins seems to be used for the Zigbee chip,
     UART1 seems to be used as a flash port while UART2 should be the
     main comunication interface of Zigbee chip.
    
    The Zigbee chip should be a EFR32MG21. But the pins used for UART
     seems to be not on standard PINS used by other adapters.
     So it cannot run firmwares shared on the web.
     But it should be possible to build a custom firmware with
     the corrtect pinmux.
    
    This commit also contains the following squashed commit from hitech95
     - mediatek: fix sysupgrade for Zyxel EX7601-T0 ubootmod
    
    Changes and fixes added in common board:
     - added aliases for boot status leds.
     - added aliases for the mac-label-device.
     - added pin claims for core features (MDIO and UART 0)
     - added default LEDs configuration (01_leds)
     - added default network configuration (02_network)
     - added missing kmod-usb3 module for USB3
     - fixed LED names
     - fixed reset pin for SLIC chip
     - removed unused pinmux configurations and devices
     - fix LAN (switch) port numbering
     - using nvmem cells for wifi eeprom, dropping deprecated "mediatek,mtd-eeprom"
     - proper factory partition and mac address handling
     - cleaned up spi_nand sections and partition
    
    Changes and fixxes added in stock layout:
     - added NMBM, if u-boot has it, the kernel must be informed.
    
    Co-authored-by: Nicol? Veronese <nicveronese at gmail.com>
    Co-developed-by: Nicol? Veronese <nicveronese at gmail.com>
    Signed-off-by: Nicol? Veronese <nicveronese at gmail.com>
    Signed-off-by: Valerio 'ftp21' Mancini <ftp21 at ftp21.eu>
    (cherry picked from commit b5df398a36f153f036c0a5ff9b221abb0f6f240a)
---
 ...ock.dts => mt7986a-zyxel-ex5601-t0-common.dtsi} | 289 +++-------
 .../mediatek/dts/mt7986a-zyxel-ex5601-t0-stock.dts | 582 +++------------------
 .../dts/mt7986a-zyxel-ex5601-t0-ubootmod.dts       | 106 ++++
 .../filogic/base-files/etc/board.d/01_leds         |   7 +
 .../filogic/base-files/etc/board.d/02_network      |   4 +
 .../etc/hotplug.d/ieee80211/11_fix_wifi_mac        |   3 +-
 .../filogic/base-files/lib/upgrade/platform.sh     |   5 +
 target/linux/mediatek/image/filogic.mk             |  34 +-
 8 files changed, 302 insertions(+), 728 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-stock.dts b/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-common.dtsi
similarity index 61%
copy from target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-stock.dts
copy to target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-common.dtsi
index 331150d85d..04e86a737d 100644
--- a/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-stock.dts
+++ b/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-common.dtsi
@@ -4,17 +4,18 @@
  * Author: Sam.Shih <sam.shih at mediatek.com>
  */
 
-/dts-v1/;
 #include "mt7986a.dtsi"
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 
 / {
-	model = "Zyxel EX5601-T0";
-	compatible = "zyxel,ex5601-t0", "mediatek,mt7986a-rfb-snand";
-
 	aliases {
 		serial0 = &uart0;
+		label-mac-device = &gmac0;
+		led-boot = &led_status_green;
+		led-failsafe = &led_status_red;
+		led-running = &led_status_green;
+		led-upgrade = &led_status_red;
 	};
 
 	chosen {
@@ -74,87 +75,112 @@
 		};
 	};
 
-	zyleds {
+	leds {
 		compatible = "gpio-leds";
 
 		led_green_wifi24g {
-			label = "zyled-green-wifi24g";
+			label = "green:wifi24g";
 			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
 			default-state = "off";
 		};
 
 		led_green_wifi5g {
-			label = "zyled-green-wifi5g";
+			label = "green:wifi5g";
 			gpios = <&pio 2 GPIO_ACTIVE_LOW>;
 			default-state = "off";
 		};
 
 		led_green_inet {
-			label = "zyled-green-inet";
+			label = "green:inet";
 			gpios = <&pio 14 GPIO_ACTIVE_LOW>;
 			default-state = "off";
 		};
 
 		led_red_inet {
-			label = "zyled-red-inet";
+			label = "red:inet";
 			gpios = <&pio 15 GPIO_ACTIVE_LOW>;
 			default-state = "off";
 		};
 
-		led_green_pwr {
-			label = "zyled-green-pwr";
+		led_status_green: led_green_pwr {
+			label = "green:pwr";
 			gpios = <&pio 13 GPIO_ACTIVE_LOW>;
 			linux,default-trigger = "timer"; /* Default blinking */
 			led-pattern = <125 125>; /* Fast blink is 4 HZ */
 		};
 
-		led_red_pwr {
-			label = "zyled-red-pwr";
+		led_status_red: led_red_pwr {
+			label = "red:pwr";
 			gpios = <&pio 12 GPIO_ACTIVE_LOW>;
 			default-state = "off";
 		};
 
 		led_green_fxs {
-			label = "zyled-green-fxs";
+			label = "green:fxs";
 			gpios = <&pio 16 GPIO_ACTIVE_HIGH>;
 			default-state = "off";
 		};
 
 		led_amber_fxs {
-			label = "zyled-amber-fxs";
+			label = "amber:fxs";
 			gpios = <&pio 17 GPIO_ACTIVE_HIGH>;
 			default-state = "off";
 		};
 
 		led_amber_wps24g {
-			label = "zyled-amber-wps24g";
+			label = "amber:wps24g";
 			gpios = <&pio 18 GPIO_ACTIVE_HIGH>;
 			default-state = "off";
 		};
 
 		led_amber_wps5g {
-			label = "zyled-amber-wps5g";
+			label = "amber:wps5g";
 			gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
 			default-state = "off";
 		};
 
 		led_green_lan {
-			label = "zyled-green-lan";
+			label = "green:lan";
 			gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
 			default-state = "off";
 		};
 
 		led_green_sfp {
-			label = "zyled-green-sfp";
+			label = "green:sfp";
 			gpios = <&pio 24 GPIO_ACTIVE_HIGH>;
 			default-state = "off";
 		};
-
 	};
+};
 
+&spi0 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&spi_flash_pins>;
+        cs-gpios = <0>, <0>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        status = "okay";
+
+        spi_nand: spi_nand at 0 {
+                #address-cells = <1>;
+                #size-cells = <1>;
+                compatible = "spi-nand";
+                reg = <1>;
+                spi-max-frequency = <10000000>;
+                spi-tx-bus-width = <4>;
+                spi-rx-bus-width = <4>;
+
+		nand_partitions: partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+		};
+	};
 };
 
 &eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&eth_pins>;
 	status = "okay";
 
 	gmac0: mac at 0 {
@@ -162,9 +188,6 @@
 		reg = <0>;
 		phy-mode = "2500base-x";
 
-		nvmem-cells = <&macaddr_factory_002a>;
-		nvmem-cell-names = "mac-address";
-
 		fixed-link {
 			speed = <2500>;
 			full-duplex;
@@ -177,9 +200,6 @@
 		reg = <1>;
 		phy-mode = "2500base-x";
 		phy = <&phy6>;
-
-		nvmem-cells = <&macaddr_factory_0024>;
-		nvmem-cell-names = "mac-address";
 	};
 
 	mdio: mdio-bus {
@@ -192,11 +212,13 @@
 		phy5: phy at 5 {
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reg = <5>;
+			mxl,led-config = <0x03f0 0x0 0x0 0x0>;
 		};
 
 		phy6: phy at 6 {
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reg = <6>;
+			mxl,led-config = <0x00f0 0x0 0x0 0x0>;
 		};
 
 		switch at 1f {
@@ -210,22 +232,22 @@
 
 				port at 1 {
 					reg = <1>;
-					label = "lan1";
+					label = "lan2";
 				};
 
 				port at 2 {
 					reg = <2>;
-					label = "lan2";
+					label = "lan3";
 				};
 
 				port at 3 {
 					reg = <3>;
-					label = "lan3";
+					label = "lan4";
 				};
 
 				port at 5 {
 					reg = <5>;
-					label = "lan4";
+					label = "lan1";
 					phy-mode = "2500base-x";
 					phy = <&phy5>;
 				};
@@ -255,106 +277,17 @@
 	pinctrl-names = "default", "dbdc";
 	pinctrl-0 = <&wf_2g_5g_pins>;
 	pinctrl-1 = <&wf_dbdc_pins>;
-	mediatek,mtd-eeprom = <&factory 0x0>;
-	nvmem-cells = <&macaddr_factory_0004>;
-	nvmem-cell-names = "mac-address";
 };
 
 &crypto {
 	status = "okay";
 };
 
-&mmc0 {
-	pinctrl-names = "default", "state_uhs";
-	pinctrl-0 = <&mmc0_pins_default>;
-	pinctrl-1 = <&mmc0_pins_uhs>;
-	bus-width = <8>;
-	max-frequency = <200000000>;
-	cap-mmc-highspeed;
-	mmc-hs200-1_8v;
-	mmc-hs400-1_8v;
-	hs400-ds-delay = <0x14014>;
-	vmmc-supply = <&reg_3p3v>;
-	vqmmc-supply = <&reg_1p8v>;
-	non-removable;
-	no-sd;
-	no-sdio;
-	status = "disabled";
-};
-
-&pcie {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pcie_pins>;
-	status = "okay";
-};
-
-&pcie_phy {
-	status = "okay";
-};
-
 &pio {
-	mmc0_pins_default: mmc0-pins {
-		mux {
-			function = "emmc";
-			groups = "emmc_51";
-		};
-		conf-cmd-dat {
-			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
-			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
-			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
-			input-enable;
-			drive-strength = <4>;
-			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
-		};
-		conf-clk {
-			pins = "EMMC_CK";
-			drive-strength = <6>;
-			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
-		};
-		conf-ds {
-			pins = "EMMC_DSL";
-			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
-		};
-		conf-rst {
-			pins = "EMMC_RSTB";
-			drive-strength = <4>;
-			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
-		};
-	};
-
-	mmc0_pins_uhs: mmc0-uhs-pins {
-		mux {
-			function = "emmc";
-			groups = "emmc_51";
-		};
-		conf-cmd-dat {
-			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
-			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
-			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
-			input-enable;
-			drive-strength = <4>;
-			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
-		};
-		conf-clk {
-			pins = "EMMC_CK";
-			drive-strength = <6>;
-			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
-		};
-		conf-ds {
-			pins = "EMMC_DSL";
-			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
-		};
-		conf-rst {
-			pins = "EMMC_RSTB";
-			drive-strength = <4>;
-			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
-		};
-	};
-
-	pcie_pins: pcie-pins {
+	eth_pins: eth-pins {
 		mux {
-			function = "pcie";
-			groups = "pcie_clk", "pcie_wake", "pcie_pereset";
+			function = "eth";
+			groups = "switch_int", "mdc_mdio";
 		};
 	};
 
@@ -382,6 +315,13 @@
 		};
 	};
 
+	uart0_pins: uart0-pins {
+                mux {
+                        function = "uart";
+                        groups = "uart0";
+                };
+        };
+
 	uart1_pins: uart1-pins {
 		mux {
 			function = "uart";
@@ -429,76 +369,13 @@
 			drive-strength = <4>;
 		};
 	};
-};
-
-&spi0 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spi_flash_pins>;
-	cs-gpios = <0>, <0>;
-	#address-cells = <1>;
-	#size-cells = <0>;
-	status = "okay";
-
-	spi_nand: spi_nand at 0 {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "spi-nand";
-		reg = <1>;
-		spi-max-frequency = <10000000>;
-		spi-tx-bus-width = <4>;
-		spi-rx-bus-width = <4>;
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition at 0 {
-				label = "BL2";
-				reg = <0x00000 0x0100000>;
-				read-only;
-			};
-
-			partition at 100000 {
-				label = "u-boot-env";
-				reg = <0x0100000 0x0080000>;
-			};
-
-			factory: partition at 180000 {
-				label = "Factory";
-				reg = <0x180000 0x0200000>;
-				read-only;
-			};
-
-			partition at 380000 {
-				label = "FIP";
-				reg = <0x380000 0x01C0000>;
-				read-only;
-			};
 
-			partition at 540000 {
-				label = "zloader";
-				reg = <0x540000 0x0040000>;
-				read-only;
-			};
-
-			partition at 580000 {
-				label = "ubi";
-				reg = <0x580000 0x4000000>;
-			};
-
-			partition at 4580000 {
-				label = "ubi2";
-				reg = <0x4580000 0x4000000>;
-				read-only;
-			};
-
-			partition at 8580000 {
-				label = "zyubi";
-				reg = <0x8580000 0x15A80000>;
-			};
-		};
-	};
+        usb-oc-hog {
+                gpio-hog;
+                gpios = <7 GPIO_ACTIVE_LOW>;
+                input;
+                line-name = "usb-oc";
+        };
 };
 
 &spi1 {
@@ -514,7 +391,7 @@
 		spi-cpol = <1>;
 		channel_count = <1>;
 		debug_level = <4>;       /* 1 = TRC, 2 = DBG, 4 = ERR */
-		reset_gpio = <&pio 7 GPIO_ACTIVE_HIGH>;
+		reset_gpio = <&pio 25 GPIO_ACTIVE_HIGH>;
 		ig,enable-spi = <1>;     /* 1: Enable, 0: Disable */
 	};
 };
@@ -530,39 +407,27 @@
 };
 
 &uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_pins>;
 	status = "okay";
 };
 
 &uart1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart1_pins>;
-	status = "okay";
+	status = "disabled";
+
+	/* EFR32MG21 Zigbee (BOOT)*/
 };
 
 &uart2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart2_pins>;
-	status = "okay";
+	status = "disabled";
+
+	/* EFR32MG21 Zigbee */
 };
 
 &usb_phy {
 	status = "okay";
 };
-
-&factory {
-	compatible = "nvmem-cells";
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	macaddr_factory_0004: macaddr at 0004 {
-		reg = <0x0004 0x6>;
-	};
-
-	macaddr_factory_0024: macaddr at 0024 {
-		reg = <0x0024 0x6>;
-	};
-
-	macaddr_factory_002a: macaddr at 002a {
-		reg = <0x002a 0x6>;
-	};
-};
diff --git a/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-stock.dts b/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-stock.dts
index 331150d85d..987510d486 100644
--- a/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-stock.dts
+++ b/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-stock.dts
@@ -6,6 +6,7 @@
 
 /dts-v1/;
 #include "mt7986a.dtsi"
+#include "mt7986a-zyxel-ex5601-t0-common.dtsi"
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 
@@ -13,556 +14,111 @@
 	model = "Zyxel EX5601-T0";
 	compatible = "zyxel,ex5601-t0", "mediatek,mt7986a-rfb-snand";
 
-	aliases {
-		serial0 = &uart0;
+	memory at 40000000 {
+		device_type = "memory";
+		reg = <0x40000000 0x20000000>;
 	};
-
-	chosen {
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory {
-		reg = <0 0x40000000 0 0x40000000>;
-	};
-
-	reg_1p8v: regulator-1p8v {
-		compatible = "regulator-fixed";
-		regulator-name = "fixed-1.8V";
-		regulator-min-microvolt = <1800000>;
-		regulator-max-microvolt = <1800000>;
-		regulator-boot-on;
-		regulator-always-on;
-	};
-
-	reg_3p3v: regulator-3p3v {
-		compatible = "regulator-fixed";
-		regulator-name = "fixed-3.3V";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-boot-on;
-		regulator-always-on;
-	};
-
-	reg_5v: regulator-5v {
-		compatible = "regulator-fixed";
-		regulator-name = "fixed-5V";
-		regulator-min-microvolt = <5000000>;
-		regulator-max-microvolt = <5000000>;
-		regulator-boot-on;
-		regulator-always-on;
-	};
-
-	gpio-keys {
-		compatible = "gpio-keys";
-		poll-interval = <20>;
-
-		reset-button {
-			label = "reset";
-			gpios = <&pio 21 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_RESTART>;
-		};
-
-		wlan-button {
-			label = "wlan";
-			gpios = <&pio 11 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_WLAN>;
-		};
-		wps-button {
-			label = "wps";
-			gpios = <&pio 56 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_WPS_BUTTON>;
-		};
-	};
-
-	zyleds {
-		compatible = "gpio-leds";
-
-		led_green_wifi24g {
-			label = "zyled-green-wifi24g";
-			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led_green_wifi5g {
-			label = "zyled-green-wifi5g";
-			gpios = <&pio 2 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led_green_inet {
-			label = "zyled-green-inet";
-			gpios = <&pio 14 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led_red_inet {
-			label = "zyled-red-inet";
-			gpios = <&pio 15 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led_green_pwr {
-			label = "zyled-green-pwr";
-			gpios = <&pio 13 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "timer"; /* Default blinking */
-			led-pattern = <125 125>; /* Fast blink is 4 HZ */
-		};
-
-		led_red_pwr {
-			label = "zyled-red-pwr";
-			gpios = <&pio 12 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led_green_fxs {
-			label = "zyled-green-fxs";
-			gpios = <&pio 16 GPIO_ACTIVE_HIGH>;
-			default-state = "off";
-		};
-
-		led_amber_fxs {
-			label = "zyled-amber-fxs";
-			gpios = <&pio 17 GPIO_ACTIVE_HIGH>;
-			default-state = "off";
-		};
-
-		led_amber_wps24g {
-			label = "zyled-amber-wps24g";
-			gpios = <&pio 18 GPIO_ACTIVE_HIGH>;
-			default-state = "off";
-		};
-
-		led_amber_wps5g {
-			label = "zyled-amber-wps5g";
-			gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
-			default-state = "off";
-		};
-
-		led_green_lan {
-			label = "zyled-green-lan";
-			gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
-			default-state = "off";
-		};
-
-		led_green_sfp {
-			label = "zyled-green-sfp";
-			gpios = <&pio 24 GPIO_ACTIVE_HIGH>;
-			default-state = "off";
-		};
-
-	};
-
 };
 
-&eth {
-	status = "okay";
-
-	gmac0: mac at 0 {
-		compatible = "mediatek,eth-mac";
-		reg = <0>;
-		phy-mode = "2500base-x";
-
-		nvmem-cells = <&macaddr_factory_002a>;
-		nvmem-cell-names = "mac-address";
-
-		fixed-link {
-			speed = <2500>;
-			full-duplex;
-			pause;
-		};
-	};
-
-	gmac1: mac at 1 {
-		compatible = "mediatek,eth-mac";
-		reg = <1>;
-		phy-mode = "2500base-x";
-		phy = <&phy6>;
-
-		nvmem-cells = <&macaddr_factory_0024>;
-		nvmem-cell-names = "mac-address";
-	};
-
-	mdio: mdio-bus {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		reset-gpios = <&pio 6 GPIO_ACTIVE_LOW>;
-		reset-delay-us = <1500000>;
-		reset-post-delay-us = <1000000>;
-
-		phy5: phy at 5 {
-			compatible = "ethernet-phy-ieee802.3-c45";
-			reg = <5>;
-		};
-
-		phy6: phy at 6 {
-			compatible = "ethernet-phy-ieee802.3-c45";
-			reg = <6>;
-		};
-
-		switch at 1f {
-			compatible = "mediatek,mt7531";
-			reg = <31>;
-			reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
-
-			ports {
-				#address-cells = <1>;
-				#size-cells = <0>;
-
-				port at 1 {
-					reg = <1>;
-					label = "lan1";
-				};
-
-				port at 2 {
-					reg = <2>;
-					label = "lan2";
-				};
-
-				port at 3 {
-					reg = <3>;
-					label = "lan3";
-				};
-
-				port at 5 {
-					reg = <5>;
-					label = "lan4";
-					phy-mode = "2500base-x";
-					phy = <&phy5>;
-				};
-
-				port at 6 {
-					reg = <6>;
-					ethernet = <&gmac0>;
-					phy-mode = "2500base-x";
-
-					fixed-link {
-						speed = <2500>;
-						full-duplex;
-						pause;
-					};
-				};
-			};
-		};
-	};
+&spi_nand {
+	mediatek,nmbm;
+	mediatek,bmt-max-ratio = <1>;
+	mediatek,bmt-max-reserved-blocks = <64>;
 };
 
-&watchdog {
-	status = "okay";
-};
+&nand_partitions {
 
-&wifi {
-	status = "okay";
-	pinctrl-names = "default", "dbdc";
-	pinctrl-0 = <&wf_2g_5g_pins>;
-	pinctrl-1 = <&wf_dbdc_pins>;
-	mediatek,mtd-eeprom = <&factory 0x0>;
-	nvmem-cells = <&macaddr_factory_0004>;
-	nvmem-cell-names = "mac-address";
-};
-
-&crypto {
-	status = "okay";
-};
-
-&mmc0 {
-	pinctrl-names = "default", "state_uhs";
-	pinctrl-0 = <&mmc0_pins_default>;
-	pinctrl-1 = <&mmc0_pins_uhs>;
-	bus-width = <8>;
-	max-frequency = <200000000>;
-	cap-mmc-highspeed;
-	mmc-hs200-1_8v;
-	mmc-hs400-1_8v;
-	hs400-ds-delay = <0x14014>;
-	vmmc-supply = <&reg_3p3v>;
-	vqmmc-supply = <&reg_1p8v>;
-	non-removable;
-	no-sd;
-	no-sdio;
-	status = "disabled";
-};
-
-&pcie {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pcie_pins>;
-	status = "okay";
-};
-
-&pcie_phy {
-	status = "okay";
-};
-
-&pio {
-	mmc0_pins_default: mmc0-pins {
-		mux {
-			function = "emmc";
-			groups = "emmc_51";
-		};
-		conf-cmd-dat {
-			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
-			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
-			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
-			input-enable;
-			drive-strength = <4>;
-			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
-		};
-		conf-clk {
-			pins = "EMMC_CK";
-			drive-strength = <6>;
-			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
-		};
-		conf-ds {
-			pins = "EMMC_DSL";
-			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
-		};
-		conf-rst {
-			pins = "EMMC_RSTB";
-			drive-strength = <4>;
-			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
-		};
+	partition at 0 {
+		label = "BL2";
+		reg = <0x00000 0x0100000>;
+		read-only;
 	};
 
-	mmc0_pins_uhs: mmc0-uhs-pins {
-		mux {
-			function = "emmc";
-			groups = "emmc_51";
-		};
-		conf-cmd-dat {
-			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
-			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
-			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
-			input-enable;
-			drive-strength = <4>;
-			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
-		};
-		conf-clk {
-			pins = "EMMC_CK";
-			drive-strength = <6>;
-			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
-		};
-		conf-ds {
-			pins = "EMMC_DSL";
-			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
-		};
-		conf-rst {
-			pins = "EMMC_RSTB";
-			drive-strength = <4>;
-			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
-		};
+	partition at 100000 {
+		label = "u-boot-env";
+		reg = <0x0100000 0x0080000>;
 	};
 
-	pcie_pins: pcie-pins {
-		mux {
-			function = "pcie";
-			groups = "pcie_clk", "pcie_wake", "pcie_pereset";
-		};
+	factory: partition at 180000 {
+		label = "Factory";
+		reg = <0x180000 0x0200000>;
+		read-only;
 	};
 
-	spic_pins_g2: spic-pins-29-to-32 {
-		mux {
-			function = "spi";
-			groups = "spi1_2";
-		};
+	partition at 380000 {
+		label = "FIP";
+		reg = <0x380000 0x01C0000>;
+		read-only;
 	};
 
-	spi_flash_pins: spi-flash-pins-33-to-38 {
-		mux {
-			function = "spi";
-			groups = "spi0", "spi0_wp_hold";
-		};
-		conf-pu {
-			pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
-			drive-strength = <8>;
-			mediatek,pull-up-adv = <0>;	/* bias-disable */
-		};
-		conf-pd {
-			pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
-			drive-strength = <8>;
-			mediatek,pull-down-adv = <0>;	/* bias-disable */
-		};
+	partition at 540000 {
+		label = "zloader";
+		reg = <0x540000 0x0040000>;
+		read-only;
 	};
 
-	uart1_pins: uart1-pins {
-		mux {
-			function = "uart";
-			groups = "uart1";
-		};
+	partition at 580000 {
+		label = "ubi";
+		reg = <0x580000 0x4000000>;
 	};
 
-	uart2_pins: uart2-pins {
-		mux {
-			function = "uart";
-			groups = "uart2";
-		};
-	};
-
-	wf_2g_5g_pins: wf_2g_5g-pins {
-		mux {
-			function = "wifi";
-			groups = "wf_2g", "wf_5g";
-		};
-		conf {
-			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
-			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
-			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
-			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
-			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
-			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
-			       "WF1_TOP_CLK", "WF1_TOP_DATA";
-			drive-strength = <4>;
-		};
+	partition at 4580000 {
+		label = "ubi2";
+		reg = <0x4580000 0x4000000>;
+		read-only;
 	};
 
-	wf_dbdc_pins: wf_dbdc-pins {
-		mux {
-			function = "wifi";
-			groups = "wf_dbdc";
-		};
-		conf {
-			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
-			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
-			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
-			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
-			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
-			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
-			       "WF1_TOP_CLK", "WF1_TOP_DATA";
-			drive-strength = <4>;
-		};
+	partition at 8580000 {
+		label = "zyubi";
+		reg = <0x8580000 0x15A80000>;
 	};
 };
 
-&spi0 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spi_flash_pins>;
-	cs-gpios = <0>, <0>;
+&factory {
+	compatible = "nvmem-cells";
 	#address-cells = <1>;
-	#size-cells = <0>;
-	status = "okay";
+	#size-cells = <1>;
 
-	spi_nand: spi_nand at 0 {
+	nvmem-layout {
+		compatible = "fixed-layout";
 		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "spi-nand";
-		reg = <1>;
-		spi-max-frequency = <10000000>;
-		spi-tx-bus-width = <4>;
-		spi-rx-bus-width = <4>;
 
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
+		eeprom_factory: eeprom at 0 {
 			#size-cells = <1>;
+			reg = <0x0 0x1000>;
+		};
 
-			partition at 0 {
-				label = "BL2";
-				reg = <0x00000 0x0100000>;
-				read-only;
-			};
-
-			partition at 100000 {
-				label = "u-boot-env";
-				reg = <0x0100000 0x0080000>;
-			};
-
-			factory: partition at 180000 {
-				label = "Factory";
-				reg = <0x180000 0x0200000>;
-				read-only;
-			};
-
-			partition at 380000 {
-				label = "FIP";
-				reg = <0x380000 0x01C0000>;
-				read-only;
-			};
-
-			partition at 540000 {
-				label = "zloader";
-				reg = <0x540000 0x0040000>;
-				read-only;
-			};
-
-			partition at 580000 {
-				label = "ubi";
-				reg = <0x580000 0x4000000>;
-			};
-
-			partition at 4580000 {
-				label = "ubi2";
-				reg = <0x4580000 0x4000000>;
-				read-only;
-			};
-
-			partition at 8580000 {
-				label = "zyubi";
-				reg = <0x8580000 0x15A80000>;
-			};
+		macaddr_factory_0004: macaddr at 0004 {
+			compatible = "mac-base";
+			reg = <0x0004 0x6>;
+			#nvmem-cell-cells = <1>;
 		};
-	};
-};
 
-&spi1 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spic_pins_g2>;
-	status = "okay";
+		macaddr_factory_0024: macaddr at 0024 {
+			compatible = "mac-base";
+			reg = <0x0024 0x6>;
+			#nvmem-cell-cells = <1>;
+		};
 
-	proslic_spi: proslic_spi at 0 {
-		compatible = "silabs,proslic_spi";
-		reg = <0>;
-		spi-max-frequency = <10000000>;
-		spi-cpha = <1>;
-		spi-cpol = <1>;
-		channel_count = <1>;
-		debug_level = <4>;       /* 1 = TRC, 2 = DBG, 4 = ERR */
-		reset_gpio = <&pio 7 GPIO_ACTIVE_HIGH>;
-		ig,enable-spi = <1>;     /* 1: Enable, 0: Disable */
+		macaddr_factory_002a: macaddr at 002a {
+			compatible = "mac-base";
+			reg = <0x002a 0x6>;
+			#nvmem-cell-cells = <1>;
+		};
 	};
 };
 
-&ssusb {
-	vusb33-supply = <&reg_3p3v>;
-	vbus-supply = <&reg_5v>;
-	status = "okay";
-};
-
-&trng {
-	status = "okay";
-};
-
-&uart0 {
-	status = "okay";
-};
-
-&uart1 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart1_pins>;
-	status = "okay";
-};
-
-&uart2 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart2_pins>;
-	status = "okay";
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_002a 0>;
+	nvmem-cell-names = "mac-address";
 };
 
-&usb_phy {
-	status = "okay";
+&gmac1 {
+	nvmem-cells = <&macaddr_factory_0024 0>;
+	nvmem-cell-names = "mac-address";
 };
 
-&factory {
-	compatible = "nvmem-cells";
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	macaddr_factory_0004: macaddr at 0004 {
-		reg = <0x0004 0x6>;
-	};
-
-	macaddr_factory_0024: macaddr at 0024 {
-		reg = <0x0024 0x6>;
-	};
-
-	macaddr_factory_002a: macaddr at 002a {
-		reg = <0x002a 0x6>;
-	};
+&wifi {
+	nvmem-cells = <&eeprom_factory>;
+	nvmem-cell-names = "eeprom";
 };
diff --git a/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-ubootmod.dts b/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-ubootmod.dts
new file mode 100644
index 0000000000..a300e2052d
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7986a-zyxel-ex5601-t0-ubootmod.dts
@@ -0,0 +1,106 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2021 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+#include "mt7986a.dtsi"
+#include "mt7986a-zyxel-ex5601-t0-common.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Zyxel EX5601-T0 ubootmod";
+	compatible = "zyxel,ex5601-t0-ubootmod", "mediatek,mt7986a";
+	memory at 40000000 {
+		device_type = "memory";
+		reg = <0x40000000 0x20000000>;
+	};
+};
+
+&nand_partitions {
+	partition at 0 {
+		label = "bl2";
+		reg = <0x0 0x100000>;
+		read-only;
+	};
+
+	partition at 100000 {
+		label = "u-boot-env";
+		reg = <0x0100000 0x0080000>;
+		read-only;
+	};
+
+	factory: partition at 180000 {
+		label = "Factory";
+		reg = <0x180000 0x0200000>;
+		read-only;
+	};
+
+	partition at 380000 {
+		label = "fip";
+		reg = <0x380000 0x0200000>;
+		read-only;
+	};
+			
+	partition at 540000 {
+		label = "zloader";
+		reg = <0x540000 0x0040000>;
+		read-only;
+	};
+			
+	partition at 580000 {
+		label = "ubi";
+		reg = <0x580000 0x1da80000>;
+	};
+};
+
+&factory {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	nvmem-layout {
+		compatible = "fixed-layout";
+		#address-cells = <1>; 
+
+		eeprom_factory: eeprom at 0 {
+			#size-cells = <1>;
+			reg = <0x0 0x1000>;
+		};
+
+		macaddr_factory_0004: macaddr at 0004 {
+			compatible = "mac-base";
+			reg = <0x0004 0x6>;
+			#nvmem-cell-cells = <1>;
+		};
+
+		macaddr_factory_0024: macaddr at 0024 {
+			compatible = "mac-base";
+			reg = <0x0024 0x6>;
+			#nvmem-cell-cells = <1>;
+		};
+
+		macaddr_factory_002a: macaddr at 002a {
+			compatible = "mac-base";
+			reg = <0x002a 0x6>;
+			#nvmem-cell-cells = <1>;
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_002a 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	nvmem-cells = <&macaddr_factory_0024 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wifi {
+	nvmem-cells = <&eeprom_factory>;
+	nvmem-cell-names = "eeprom";
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
index cdeaa6c5c5..75c8fcda9b 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
@@ -42,6 +42,13 @@ xiaomi,redmi-router-ax6000-stock|\
 xiaomi,redmi-router-ax6000-ubootmod)
 	ucidef_set_led_netdev "wan" "wan" "rgb:network" "wan"
 	;;
+zyxel_ex5601-t0-stock|\
+zyxel,ex5601-t0-ubootmod)
+	ucidef_set_led_netdev "lan" "LAN" "green:lan" "eth0" "link tx rx"
+	ucidef_set_led_netdev "wan" "WAN" "green:inet" "eth1" "link tx rx"
+	ucidef_set_led_netdev "wifi-24g" "WIFI-2.4G" "green:wifi24g" "phy0-ap0" "link tx rx"
+	ucidef_set_led_netdev "wifi-5g" "WIFI-5G" "green:wifi5g" "phy1-ap0" "link tx rx"
+        ;;
 esac
 
 board_config_flush
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index 2e978be680..a48fbbc79c 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -73,6 +73,10 @@ mediatek_setup_interfaces()
 	xiaomi,redmi-router-ax6000-ubootmod)
 		ucidef_set_interfaces_lan_wan "lan2 lan3 lan4" wan
 		;;
+	zyxel,ex5601-t0-stock|\
+	zyxel,ex5601-t0-ubootmod)
+		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" eth1
+		;;
 	*)
 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" wan
 		;;
diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index f8ebc1da42..e6378dd498 100644
--- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -107,7 +107,8 @@ case "$board" in
 		;;
 	routerich,ax3000|\
 	zbtlink,zbt-z8102ax|\
-	zyxel,ex5601-t0)
+	zyxel,ex5601-t0|\
+	zyxel,ex5601-t0-ubootmod)
 		addr=$(mtd_get_mac_binary "Factory" 0x4)
 		[ "$PHYNBR" = "1" ] && macaddr_add $addr 1 > /sys${DEVPATH}/macaddress
 		;;
diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
index e3b042c876..9b3ebe92f1 100755
--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
@@ -142,6 +142,11 @@ platform_do_upgrade() {
 		CI_ROOT_UBIPART=ubi
 		nand_do_upgrade "$1"
 		;;
+        zyxel,ex5601-t0-ubootmod)
+		CI_KERNPART="fit"
+		CI_ROOTPART="ubi_rootfs"
+                nand_do_upgrade "$1"
+                ;;
 	*)
 		nand_do_upgrade "$1"
 		;;
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index 194319a228..7daac6a1fa 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -801,10 +801,11 @@ TARGET_DEVICES += zbtlink_zbt-z8102ax
 
 define Device/zyxel_ex5601-t0-stock
   DEVICE_VENDOR := Zyxel
-  DEVICE_MODEL := EX5601-T0  (stock layout)
+  DEVICE_MODEL := EX5601-T0
+  DEVICE_VARIANT := (stock layout)
   DEVICE_DTS := mt7986a-zyxel-ex5601-t0-stock
   DEVICE_DTS_DIR := ../dts
-  DEVICE_PACKAGES := kmod-mt7986-firmware mt7986-wo-firmware
+  DEVICE_PACKAGES := kmod-mt7986-firmware mt7986-wo-firmware kmod-usb3
   SUPPORTED_DEVICES := mediatek,mt7986a-rfb-snand
   UBINIZE_OPTS := -E 5
   BLOCKSIZE := 256k
@@ -821,6 +822,35 @@ define Device/zyxel_ex5601-t0-stock
 endef
 TARGET_DEVICES += zyxel_ex5601-t0-stock
 
+define Device/zyxel_ex5601-t0-ubootmod
+  DEVICE_VENDOR := Zyxel
+  DEVICE_MODEL := EX5601-T0
+  DEVICE_VARIANT := (OpenWrt U-Boot layout)
+  DEVICE_DTS := mt7986a-zyxel-ex5601-t0-ubootmod
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_PACKAGES := kmod-mt7986-firmware mt7986-wo-firmware kmod-usb3
+  KERNEL_INITRAMFS_SUFFIX := -recovery.itb
+  IMAGES := sysupgrade.itb
+  UBINIZE_OPTS := -E 5
+  BLOCKSIZE := 256k
+  PAGESIZE := 4096
+  KERNEL_IN_UBI := 1
+  UBOOTENV_IN_UBI := 1
+  KERNEL := kernel-bin | lzma
+  KERNEL_INITRAMFS := kernel-bin | lzma | \
+        fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd
+  IMAGE/sysupgrade.itb := append-kernel | \
+        fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
+  ARTIFACTS := preloader.bin bl31-uboot.fip
+  ARTIFACT/preloader.bin := mt7986-bl2 spim-nand-4k-ddr4
+  ARTIFACT/bl31-uboot.fip := mt7986-bl31-uboot zyxel_ex5601-t0
+ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
+  ARTIFACTS += initramfs-factory.ubi
+  ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-recovery.itb | ubinize-kernel
+endif
+endef
+TARGET_DEVICES += zyxel_ex5601-t0-ubootmod
+
 define Device/zyxel_ex5700-telenor
   DEVICE_VENDOR := ZyXEL
   DEVICE_MODEL := EX5700 (Telenor)



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:32 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:32 -0500
Subject: [openwrt/openwrt]  mediatek: fixes for Ethernet on MT7988 SoC
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12553.1709478283.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/37c2bc4397c1f7152ab9cb2f4235cb65a6d501bb

commit 37c2bc4397c1f7152ab9cb2f4235cb65a6d501bb
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Jan 24 05:01:43 2024 +0000

    mediatek: fixes for Ethernet on MT7988 SoC
    
     * fix switch ports with modes other than 1000M/Full
     * set 32-bit dma_coherent_mask to get PPE to work with 4 GiB of RAM
     * sync driver for built-in 1GE PHY with MediaTek SDK sources
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    (cherry picked from commit 4ae2f43b3a24e8a74963852f9d2fb8fee0872f31)
---
 ...t-mtk_eth_soc-set-coherent-mask-to-get-PP.patch |  46 ++++
 ...t7530-fix-10M-100M-speed-on-MT7988-switch.patch |  45 ++++
 ...iatek-ge-soc-sync-driver-with-MediaTek-SD.patch | 270 +++++++++++++++++++++
 ...t-mediatek-split-tx-and-rx-fields-in-mtk_.patch |  18 +-
 ...t-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch |   4 +-
 5 files changed, 372 insertions(+), 11 deletions(-)

diff --git a/target/linux/generic/pending-5.15/738-net-ethernet-mtk_eth_soc-set-coherent-mask-to-get-PP.patch b/target/linux/generic/pending-5.15/738-net-ethernet-mtk_eth_soc-set-coherent-mask-to-get-PP.patch
new file mode 100644
index 0000000000..29dca26018
--- /dev/null
+++ b/target/linux/generic/pending-5.15/738-net-ethernet-mtk_eth_soc-set-coherent-mask-to-get-PP.patch
@@ -0,0 +1,46 @@
+From dee3f591103910c8d8b2a6d57879ccd2a4be4b10 Mon Sep 17 00:00:00 2001
+Message-ID: <dee3f591103910c8d8b2a6d57879ccd2a4be4b10.1706067287.git.daniel at makrotopia.org>
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Wed, 24 Jan 2024 03:19:49 +0000
+Subject: [PATCH net] net: ethernet: mtk_eth_soc: set coherent mask to get PPE
+ working
+To: Felix Fietkau <nbd at nbd.name>,
+    Sean Wang <sean.wang at mediatek.com>,
+    Mark Lee <Mark-MC.Lee at mediatek.com>,
+    Lorenzo Bianconi <lorenzo at kernel.org>,
+    David S. Miller <davem at davemloft.net>,
+    Eric Dumazet <edumazet at google.com>,
+    Jakub Kicinski <kuba at kernel.org>,
+    Paolo Abeni <pabeni at redhat.com>,
+    Matthias Brugger <matthias.bgg at gmail.com>,
+    AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>,
+    Daniel Golle <daniel at makrotopia.org>,
+    netdev at vger.kernel.org,
+    linux-kernel at vger.kernel.org,
+    linux-arm-kernel at lists.infradead.org,
+    linux-mediatek at lists.infradead.org
+
+Set DMA coherent mask to 32-bit which makes PPE offloading engine start
+working on BPi-R4 which got 4 GiB of RAM.
+
+Fixes: 2d75891ebc09 ("net: ethernet: mtk_eth_soc: support 36-bit DMA addressing on MT7988")
+Suggested-by: Elad Yifee <eladwf at users.github.com>
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+@@ -4830,7 +4830,10 @@ static int mtk_probe(struct platform_dev
+ 	}
+ 
+ 	if (MTK_HAS_CAPS(eth->soc->caps, MTK_36BIT_DMA)) {
+-		err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(36));
++		err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(36));
++		if (!err)
++			err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
++
+ 		if (err) {
+ 			dev_err(&pdev->dev, "Wrong DMA config\n");
+ 			return -EINVAL;
diff --git a/target/linux/generic/pending-5.15/796-net-dsa-mt7530-fix-10M-100M-speed-on-MT7988-switch.patch b/target/linux/generic/pending-5.15/796-net-dsa-mt7530-fix-10M-100M-speed-on-MT7988-switch.patch
new file mode 100644
index 0000000000..f2e91d3fe5
--- /dev/null
+++ b/target/linux/generic/pending-5.15/796-net-dsa-mt7530-fix-10M-100M-speed-on-MT7988-switch.patch
@@ -0,0 +1,45 @@
+From a444877c10a665cd8a869e6d37facdb89fd95f79 Mon Sep 17 00:00:00 2001
+Message-ID: <a444877c10a665cd8a869e6d37facdb89fd95f79.1706070008.git.daniel at makrotopia.org>
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Wed, 24 Jan 2024 04:17:11 +0000
+Subject: [PATCH net] net: dsa: mt7530: fix 10M/100M speed on MT7988 switch
+To: Ar?n? ?NAL <arinc.unal at arinc9.com>,
+    Daniel Golle <daniel at makrotopia.org>,
+    DENG Qingfang <dqfext at gmail.com>,
+    Sean Wang <sean.wang at mediatek.com>,
+    Andrew Lunn <andrew at lunn.ch>,
+    Florian Fainelli <f.fainelli at gmail.com>,
+    Vladimir Oltean <olteanv at gmail.com>,
+    David S. Miller <davem at davemloft.net>,
+    Eric Dumazet <edumazet at google.com>,
+    Jakub Kicinski <kuba at kernel.org>,
+    Paolo Abeni <pabeni at redhat.com>,
+    Matthias Brugger <matthias.bgg at gmail.com>,
+    AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>,
+    netdev at vger.kernel.org,
+    linux-kernel at vger.kernel.org,
+    linux-arm-kernel at lists.infradead.org,
+    linux-mediatek at lists.infradead.org
+
+Setup PMCR port register for actual speed and duplex on internally
+connected PHYs of the MT7988 built-in switch. This fixes links with
+speeds other than 1000M.
+
+Fixes: ("110c18bfed414 net: dsa: mt7530: introduce driver for MT7988 built-in switch")
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/dsa/mt7530.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
+@@ -2832,8 +2832,7 @@ static void mt753x_phylink_mac_link_up(s
+ 	/* MT753x MAC works in 1G full duplex mode for all up-clocked
+ 	 * variants.
+ 	 */
+-	if (interface == PHY_INTERFACE_MODE_INTERNAL ||
+-	    interface == PHY_INTERFACE_MODE_TRGMII ||
++	if (interface == PHY_INTERFACE_MODE_TRGMII ||
+ 	    (phy_interface_mode_is_8023z(interface))) {
+ 		speed = SPEED_1000;
+ 		duplex = DUPLEX_FULL;
diff --git a/target/linux/mediatek/patches-5.15/734-net-phy-mediatek-ge-soc-sync-driver-with-MediaTek-SD.patch b/target/linux/mediatek/patches-5.15/734-net-phy-mediatek-ge-soc-sync-driver-with-MediaTek-SD.patch
new file mode 100644
index 0000000000..f983be4e44
--- /dev/null
+++ b/target/linux/mediatek/patches-5.15/734-net-phy-mediatek-ge-soc-sync-driver-with-MediaTek-SD.patch
@@ -0,0 +1,270 @@
+From f2195279c234c0f618946424b8236026126bc595 Mon Sep 17 00:00:00 2001
+Message-ID: <f2195279c234c0f618946424b8236026126bc595.1706071311.git.daniel at makrotopia.org>
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Wed, 24 Jan 2024 02:27:04 +0000
+Subject: [PATCH net] net: phy: mediatek-ge-soc: sync driver with MediaTek SDK
+To: Daniel Golle <daniel at makrotopia.org>,
+    Qingfang Deng <dqfext at gmail.com>,
+    SkyLake Huang <SkyLake.Huang at mediatek.com>,
+    Andrew Lunn <andrew at lunn.ch>,
+    Heiner Kallweit <hkallweit1 at gmail.com>,
+    Russell King <linux at armlinux.org.uk>,
+    David S. Miller <davem at davemloft.net>,
+    Eric Dumazet <edumazet at google.com>,
+    Jakub Kicinski <kuba at kernel.org>,
+    Paolo Abeni <pabeni at redhat.com>,
+    Matthias Brugger <matthias.bgg at gmail.com>,
+    AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>,
+    netdev at vger.kernel.org,
+    linux-kernel at vger.kernel.org,
+    linux-arm-kernel at lists.infradead.org,
+    linux-mediatek at lists.infradead.org
+
+Sync initialization and calibration routines with MediaTek's reference
+driver. Improves compliance and resolves link stability issues with
+CH340 IoT devices connected to MT798x built-in PHYs.
+
+Fixes: 98c485eaf509 ("net: phy: add driver for MediaTek SoC built-in GE PHYs")
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/phy/mediatek-ge-soc.c | 147 ++++++++++++++++--------------
+ 1 file changed, 81 insertions(+), 66 deletions(-)
+
+--- a/drivers/net/phy/mediatek-ge-soc.c
++++ b/drivers/net/phy/mediatek-ge-soc.c
+@@ -479,7 +479,7 @@ static int tx_r50_fill_result(struct phy
+ 	u16 reg, val;
+ 
+ 	if (phydev->drv->phy_id == MTK_GPHY_ID_MT7988)
+-		bias = -2;
++		bias = -1;
+ 
+ 	val = clamp_val(bias + tx_r50_cal_val, 0, 63);
+ 
+@@ -695,6 +695,11 @@ restore:
+ static void mt798x_phy_common_finetune(struct phy_device *phydev)
+ {
+ 	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
++	/* SlvDSPreadyTime = 24, MasDSPreadyTime = 24 */
++	__phy_write(phydev, 0x11, 0xc71);
++	__phy_write(phydev, 0x12, 0xc);
++	__phy_write(phydev, 0x10, 0x8fae);
++
+ 	/* EnabRandUpdTrig = 1 */
+ 	__phy_write(phydev, 0x11, 0x2f00);
+ 	__phy_write(phydev, 0x12, 0xe);
+@@ -705,15 +710,56 @@ static void mt798x_phy_common_finetune(s
+ 	__phy_write(phydev, 0x12, 0x0);
+ 	__phy_write(phydev, 0x10, 0x83aa);
+ 
+-	/* TrFreeze = 0 */
++	/* FfeUpdGainForce = 1(Enable), FfeUpdGainForceVal = 4 */
++	__phy_write(phydev, 0x11, 0x240);
++	__phy_write(phydev, 0x12, 0x0);
++	__phy_write(phydev, 0x10, 0x9680);
++
++	/* TrFreeze = 0 (mt7988 default) */
+ 	__phy_write(phydev, 0x11, 0x0);
+ 	__phy_write(phydev, 0x12, 0x0);
+ 	__phy_write(phydev, 0x10, 0x9686);
+ 
++	/* SSTrKp100 = 5 */
++	/* SSTrKf100 = 6 */
++	/* SSTrKp1000Mas = 5 */
++	/* SSTrKf1000Mas = 6 */
+ 	/* SSTrKp1000Slv = 5 */
++	/* SSTrKf1000Slv = 6 */
+ 	__phy_write(phydev, 0x11, 0xbaef);
+ 	__phy_write(phydev, 0x12, 0x2e);
+ 	__phy_write(phydev, 0x10, 0x968c);
++	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
++}
++
++static void mt7981_phy_finetune(struct phy_device *phydev)
++{
++	u16 val[8] = { 0x01ce, 0x01c1,
++		       0x020f, 0x0202,
++		       0x03d0, 0x03c0,
++		       0x0013, 0x0005 };
++	int i, k;
++
++	/* 100M eye finetune:
++	 * Keep middle level of TX MLT3 shapper as default.
++	 * Only change TX MLT3 overshoot level here.
++	 */
++	for (k = 0, i = 1; i < 12; i++) {
++		if (i % 3 == 0)
++			continue;
++		phy_write_mmd(phydev, MDIO_MMD_VEND1, i, val[k++]);
++	}
++
++	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
++	/* ResetSyncOffset = 6 */
++	__phy_write(phydev, 0x11, 0x600);
++	__phy_write(phydev, 0x12, 0x0);
++	__phy_write(phydev, 0x10, 0x8fc0);
++
++	/* VgaDecRate = 1 */
++	__phy_write(phydev, 0x11, 0x4c2a);
++	__phy_write(phydev, 0x12, 0x3e);
++	__phy_write(phydev, 0x10, 0x8fa4);
+ 
+ 	/* MrvlTrFix100Kp = 3, MrvlTrFix100Kf = 2,
+ 	 * MrvlTrFix1000Kp = 3, MrvlTrFix1000Kf = 2
+@@ -728,7 +774,7 @@ static void mt798x_phy_common_finetune(s
+ 	__phy_write(phydev, 0x10, 0x8ec0);
+ 	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
+ 
+-	/* TR_OPEN_LOOP_EN = 1, lpf_x_average = 9*/
++	/* TR_OPEN_LOOP_EN = 1, lpf_x_average = 9 */
+ 	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG234,
+ 		       MTK_PHY_TR_OPEN_LOOP_EN_MASK | MTK_PHY_LPF_X_AVERAGE_MASK,
+ 		       BIT(0) | FIELD_PREP(MTK_PHY_LPF_X_AVERAGE_MASK, 0x9));
+@@ -761,48 +807,6 @@ static void mt798x_phy_common_finetune(s
+ 	phy_write_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_LDO_OUTPUT_V, 0x2222);
+ }
+ 
+-static void mt7981_phy_finetune(struct phy_device *phydev)
+-{
+-	u16 val[8] = { 0x01ce, 0x01c1,
+-		       0x020f, 0x0202,
+-		       0x03d0, 0x03c0,
+-		       0x0013, 0x0005 };
+-	int i, k;
+-
+-	/* 100M eye finetune:
+-	 * Keep middle level of TX MLT3 shapper as default.
+-	 * Only change TX MLT3 overshoot level here.
+-	 */
+-	for (k = 0, i = 1; i < 12; i++) {
+-		if (i % 3 == 0)
+-			continue;
+-		phy_write_mmd(phydev, MDIO_MMD_VEND1, i, val[k++]);
+-	}
+-
+-	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
+-	/* SlvDSPreadyTime = 24, MasDSPreadyTime = 24 */
+-	__phy_write(phydev, 0x11, 0xc71);
+-	__phy_write(phydev, 0x12, 0xc);
+-	__phy_write(phydev, 0x10, 0x8fae);
+-
+-	/* ResetSyncOffset = 6 */
+-	__phy_write(phydev, 0x11, 0x600);
+-	__phy_write(phydev, 0x12, 0x0);
+-	__phy_write(phydev, 0x10, 0x8fc0);
+-
+-	/* VgaDecRate = 1 */
+-	__phy_write(phydev, 0x11, 0x4c2a);
+-	__phy_write(phydev, 0x12, 0x3e);
+-	__phy_write(phydev, 0x10, 0x8fa4);
+-
+-	/* FfeUpdGainForce = 4 */
+-	__phy_write(phydev, 0x11, 0x240);
+-	__phy_write(phydev, 0x12, 0x0);
+-	__phy_write(phydev, 0x10, 0x9680);
+-
+-	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
+-}
+-
+ static void mt7988_phy_finetune(struct phy_device *phydev)
+ {
+ 	u16 val[12] = { 0x0187, 0x01cd, 0x01c8, 0x0182,
+@@ -817,17 +821,7 @@ static void mt7988_phy_finetune(struct p
+ 	/* TCT finetune */
+ 	phy_write_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_TX_FILTER, 0x5);
+ 
+-	/* Disable TX power saving */
+-	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RXADC_CTRL_RG7,
+-		       MTK_PHY_DA_AD_BUF_BIAS_LP_MASK, 0x3 << 8);
+-
+ 	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
+-
+-	/* SlvDSPreadyTime = 24, MasDSPreadyTime = 12 */
+-	__phy_write(phydev, 0x11, 0x671);
+-	__phy_write(phydev, 0x12, 0xc);
+-	__phy_write(phydev, 0x10, 0x8fae);
+-
+ 	/* ResetSyncOffset = 5 */
+ 	__phy_write(phydev, 0x11, 0x500);
+ 	__phy_write(phydev, 0x12, 0x0);
+@@ -835,13 +829,27 @@ static void mt7988_phy_finetune(struct p
+ 
+ 	/* VgaDecRate is 1 at default on mt7988 */
+ 
+-	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
++	/* MrvlTrFix100Kp = 6, MrvlTrFix100Kf = 7,
++	 * MrvlTrFix1000Kp = 6, MrvlTrFix1000Kf = 7
++	 */
++	__phy_write(phydev, 0x11, 0xb90a);
++	__phy_write(phydev, 0x12, 0x6f);
++	__phy_write(phydev, 0x10, 0x8f82);
++
++	/* RemAckCntLimitCtrl = 1 */
++	__phy_write(phydev, 0x11, 0xfbba);
++	__phy_write(phydev, 0x12, 0xc3);
++	__phy_write(phydev, 0x10, 0x87f8);
+ 
+-	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_2A30);
+-	/* TxClkOffset = 2 */
+-	__phy_modify(phydev, MTK_PHY_ANARG_RG, MTK_PHY_TCLKOFFSET_MASK,
+-		     FIELD_PREP(MTK_PHY_TCLKOFFSET_MASK, 0x2));
+ 	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
++
++	/* TR_OPEN_LOOP_EN = 1, lpf_x_average = 10 */
++	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG234,
++		       MTK_PHY_TR_OPEN_LOOP_EN_MASK | MTK_PHY_LPF_X_AVERAGE_MASK,
++		       BIT(0) | FIELD_PREP(MTK_PHY_LPF_X_AVERAGE_MASK, 0xa));
++
++	/* rg_tr_lpf_cnt_val = 1023 */
++	phy_write_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_LPF_CNT_VAL, 0x3ff);
+ }
+ 
+ static void mt798x_phy_eee(struct phy_device *phydev)
+@@ -874,11 +882,11 @@ static void mt798x_phy_eee(struct phy_de
+ 		       MTK_PHY_LPI_SLV_SEND_TX_EN,
+ 		       FIELD_PREP(MTK_PHY_LPI_SLV_SEND_TX_TIMER_MASK, 0x120));
+ 
+-	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG239,
+-		       MTK_PHY_LPI_SEND_LOC_TIMER_MASK |
+-		       MTK_PHY_LPI_TXPCS_LOC_RCV,
+-		       FIELD_PREP(MTK_PHY_LPI_SEND_LOC_TIMER_MASK, 0x117));
++	/* Keep MTK_PHY_LPI_SEND_LOC_TIMER as 375 */
++	phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG239,
++			   MTK_PHY_LPI_TXPCS_LOC_RCV);
+ 
++	/* This also fixes some IoT issues, such as CH340 */
+ 	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG2C7,
+ 		       MTK_PHY_MAX_GAIN_MASK | MTK_PHY_MIN_GAIN_MASK,
+ 		       FIELD_PREP(MTK_PHY_MAX_GAIN_MASK, 0x8) |
+@@ -912,7 +920,7 @@ static void mt798x_phy_eee(struct phy_de
+ 	__phy_write(phydev, 0x12, 0x0);
+ 	__phy_write(phydev, 0x10, 0x9690);
+ 
+-	/* REG_EEE_st2TrKf1000 = 3 */
++	/* REG_EEE_st2TrKf1000 = 2 */
+ 	__phy_write(phydev, 0x11, 0x114f);
+ 	__phy_write(phydev, 0x12, 0x2);
+ 	__phy_write(phydev, 0x10, 0x969a);
+@@ -937,7 +945,7 @@ static void mt798x_phy_eee(struct phy_de
+ 	__phy_write(phydev, 0x12, 0x0);
+ 	__phy_write(phydev, 0x10, 0x96b8);
+ 
+-	/* REGEEE_wake_slv_tr_wait_dfesigdet_en = 1 */
++	/* REGEEE_wake_slv_tr_wait_dfesigdet_en = 0 */
+ 	__phy_write(phydev, 0x11, 0x1463);
+ 	__phy_write(phydev, 0x12, 0x0);
+ 	__phy_write(phydev, 0x10, 0x96ca);
+@@ -1198,6 +1206,13 @@ static int mt7988_phy_probe(struct phy_d
+ 
+ 	mt798x_phy_setup_led(phydev, mt7988_phy_get_boottrap_polarity(phydev));
+ 
++	/* Disable TX power saving at probing to:
++	 * 1. Meet common mode compliance test criteria
++	 * 2. Make sure that TX-VCM calibration works fine
++	 */
++	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RXADC_CTRL_RG7,
++		       MTK_PHY_DA_AD_BUF_BIAS_LP_MASK, 0x3 << 8);
++
+ 	return mt798x_phy_calibration(phydev);
+ }
+ 
diff --git a/target/linux/mediatek/patches-5.15/961-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch b/target/linux/mediatek/patches-5.15/961-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch
index 7b78033ffb..af95dcf8d2 100644
--- a/target/linux/mediatek/patches-5.15/961-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch
+++ b/target/linux/mediatek/patches-5.15/961-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch
@@ -347,7 +347,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
  
  	if (mtk_is_netsys_v3_or_greater(eth)) {
-@@ -5163,11 +5163,15 @@ static const struct mtk_soc_data mt2701_
+@@ -5166,11 +5166,15 @@ static const struct mtk_soc_data mt2701_
  	.required_clks = MT7623_CLKS_BITMAP,
  	.required_pctl = true,
  	.version = 1,
@@ -368,7 +368,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5183,11 +5187,15 @@ static const struct mtk_soc_data mt7621_
+@@ -5186,11 +5190,15 @@ static const struct mtk_soc_data mt7621_
  	.offload_version = 1,
  	.hash_offset = 2,
  	.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
@@ -389,7 +389,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5205,11 +5213,15 @@ static const struct mtk_soc_data mt7622_
+@@ -5208,11 +5216,15 @@ static const struct mtk_soc_data mt7622_
  	.hash_offset = 2,
  	.has_accounting = true,
  	.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
@@ -410,7 +410,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5226,11 +5238,15 @@ static const struct mtk_soc_data mt7623_
+@@ -5229,11 +5241,15 @@ static const struct mtk_soc_data mt7623_
  	.hash_offset = 2,
  	.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
  	.disable_pll_modes = true,
@@ -431,7 +431,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5245,11 +5261,15 @@ static const struct mtk_soc_data mt7629_
+@@ -5248,11 +5264,15 @@ static const struct mtk_soc_data mt7629_
  	.required_pctl = false,
  	.has_accounting = true,
  	.version = 1,
@@ -452,7 +452,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5267,11 +5287,15 @@ static const struct mtk_soc_data mt7981_
+@@ -5270,11 +5290,15 @@ static const struct mtk_soc_data mt7981_
  	.hash_offset = 4,
  	.has_accounting = true,
  	.foe_entry_size = MTK_FOE_ENTRY_V2_SIZE,
@@ -473,7 +473,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
  		.dma_len_offset = 8,
  	},
-@@ -5289,11 +5313,15 @@ static const struct mtk_soc_data mt7986_
+@@ -5292,11 +5316,15 @@ static const struct mtk_soc_data mt7986_
  	.hash_offset = 4,
  	.has_accounting = true,
  	.foe_entry_size = MTK_FOE_ENTRY_V2_SIZE,
@@ -494,7 +494,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
  		.dma_len_offset = 8,
  	},
-@@ -5311,11 +5339,15 @@ static const struct mtk_soc_data mt7988_
+@@ -5314,11 +5342,15 @@ static const struct mtk_soc_data mt7988_
  	.hash_offset = 4,
  	.has_accounting = true,
  	.foe_entry_size = MTK_FOE_ENTRY_V3_SIZE,
@@ -515,7 +515,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
  		.dma_len_offset = 8,
  	},
-@@ -5328,11 +5360,15 @@ static const struct mtk_soc_data rt5350_
+@@ -5331,11 +5363,15 @@ static const struct mtk_soc_data rt5350_
  	.required_clks = MT7628_CLKS_BITMAP,
  	.required_pctl = false,
  	.version = 1,
diff --git a/target/linux/mediatek/patches-5.15/962-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch b/target/linux/mediatek/patches-5.15/962-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch
index df8e988eb5..ea94bb5e05 100644
--- a/target/linux/mediatek/patches-5.15/962-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch
+++ b/target/linux/mediatek/patches-5.15/962-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch
@@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		/* Set FE to PDMAv2 if necessary */
  		val = mtk_r32(eth, MTK_FE_GLO_MISC);
  		mtk_w32(eth,  val | BIT(4), MTK_FE_GLO_MISC);
-@@ -5293,11 +5293,11 @@ static const struct mtk_soc_data mt7981_
+@@ -5296,11 +5296,11 @@ static const struct mtk_soc_data mt7981_
  		.dma_len_offset = 8,
  	},
  	.rx = {
@@ -105,7 +105,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	},
  };
  
-@@ -5319,11 +5319,11 @@ static const struct mtk_soc_data mt7986_
+@@ -5322,11 +5322,11 @@ static const struct mtk_soc_data mt7986_
  		.dma_len_offset = 8,
  	},
  	.rx = {



From lede-commits at lists.infradead.org  Sun Mar  3 06:38:31 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 09:38:31 -0500
Subject: [openwrt/openwrt]  mediatek: Cetron CT3003: fixes typo for spi
 properties
In-Reply-To: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
References: <170947670098.2383814.4600593150022338869@git-01.infra.openwrt.org>
Message-ID: <mailman.12554.1709479114.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/9627654277ca307597028e0b8c2c449ab35bbd5e

commit 9627654277ca307597028e0b8c2c449ab35bbd5e
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Sat Nov 4 23:50:20 2023 +0800

    mediatek: Cetron CT3003: fixes typo for spi properties
    
    Same as commit 3674689, correct 'buswidth' to 'bus-width'.
    Also move the nmbm properties outside the partition definition.
    
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
    (cherry picked from commit 1be6347b7d5cbbe944c9e5bab29aea4ec7de6349)
---
 target/linux/mediatek/dts/mt7981b-cetron-ct3003.dts | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7981b-cetron-ct3003.dts b/target/linux/mediatek/dts/mt7981b-cetron-ct3003.dts
index ae4404466e..aea6f02da2 100644
--- a/target/linux/mediatek/dts/mt7981b-cetron-ct3003.dts
+++ b/target/linux/mediatek/dts/mt7981b-cetron-ct3003.dts
@@ -100,18 +100,18 @@
 		reg = <0>;
 
 		spi-max-frequency = <52000000>;
-		spi-tx-buswidth = <4>;
-		spi-rx-buswidth = <4>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+
+		mediatek,nmbm;
+		mediatek,bmt-max-ratio = <1>;
+		mediatek,bmt-max-reserved-blocks = <64>;
 
 		partitions {
 			compatible = "fixed-partitions";
 			#address-cells = <1>;
 			#size-cells = <1>;
 
-			mediatek,nmbm;
-			mediatek,bmt-max-ratio = <1>;
-			mediatek,bmt-max-reserved-blocks = <64>;
-
 			partition at 0 {
 				label = "BL2";
 				reg = <0x0000000 0x0100000>;



From lede-commits at lists.infradead.org  Sun Mar  3 07:46:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 10:46:04 -0500
Subject: [openwrt/openwrt]  kernel: lantiq: ltq-vmmc: introduce user group for
 vmmc
In-Reply-To: <170948076448.2504327.15836359317741443246@git-01.infra.openwrt.org>
References: <170948076448.2504327.15836359317741443246@git-01.infra.openwrt.org>
Message-ID: <mailman.12557.1709480768.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/37bbed6f95856a507d727ffc863b20f8a8b35332

commit 37bbed6f95856a507d727ffc863b20f8a8b35332
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 3 15:22:54 2024 +0000

    kernel: lantiq: ltq-vmmc: introduce user group for vmmc
    
    asterisk-chan-lantiq is by now the only user of the VMMC interface.
    And asterisk runs as user 'asterisk' which doesn't give it permission
    to open the /dev/vmmc* devices.
    Introduce a new user group 'vmmc' and give permission to access the
    /dev/vmmc* devices to that group.
    Another commit for asterisk-chan-lantiq will add the 'asterisk' user
    to that group.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/kernel/lantiq/ltq-vmmc/Makefile        | 1 +
 package/kernel/lantiq/ltq-vmmc/files/vmmc.init | 1 +
 2 files changed, 2 insertions(+)

diff --git a/package/kernel/lantiq/ltq-vmmc/Makefile b/package/kernel/lantiq/ltq-vmmc/Makefile
index c96cee819b..4972f1c374 100644
--- a/package/kernel/lantiq/ltq-vmmc/Makefile
+++ b/package/kernel/lantiq/ltq-vmmc/Makefile
@@ -29,6 +29,7 @@ define KernelPackage/ltq-vmmc
   DEPENDS:=@(TARGET_lantiq_xway||TARGET_lantiq_xrx200) +kmod-ltq-tapi
   FILES:=$(PKG_BUILD_DIR)/src/drv_vmmc.ko
   AUTOLOAD:=$(call AutoProbe,drv_vmmc)
+  USERID:=:vmmc=386
 endef
 
 define KernelPackage/ltq-vmmc/description
diff --git a/package/kernel/lantiq/ltq-vmmc/files/vmmc.init b/package/kernel/lantiq/ltq-vmmc/files/vmmc.init
index 402376e294..78efe80b98 100644
--- a/package/kernel/lantiq/ltq-vmmc/files/vmmc.init
+++ b/package/kernel/lantiq/ltq-vmmc/files/vmmc.init
@@ -8,6 +8,7 @@ start() {
 	for i in 10 11 12 13 14 15 16 17 18; do
 		if ! [ -e /dev/vmmc$i ]; then
 			mknod -m 664 /dev/vmmc$i c 122 $i
+			chown root:vmmc /dev/vmmc$i
 		fi
 	done
 }



From lede-commits at lists.infradead.org  Sun Mar  3 08:18:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 11:18:30 -0500
Subject: [openwrt/openwrt]  kernel: lantiq: ltq-vmmc: introduce user group for
 vmmc
In-Reply-To: <170948271021.2580401.1776597532255117005@git-01.infra.openwrt.org>
References: <170948271021.2580401.1776597532255117005@git-01.infra.openwrt.org>
Message-ID: <mailman.12560.1709482719.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/c8898f46f9d35b2b5a82a689a3d87f9afe517c50

commit c8898f46f9d35b2b5a82a689a3d87f9afe517c50
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 3 15:22:54 2024 +0000

    kernel: lantiq: ltq-vmmc: introduce user group for vmmc
    
    asterisk-chan-lantiq is by now the only user of the VMMC interface.
    And asterisk runs as user 'asterisk' which doesn't give it permission
    to open the /dev/vmmc* devices.
    Introduce a new user group 'vmmc' and give permission to access the
    /dev/vmmc* devices to that group.
    Another commit for asterisk-chan-lantiq will add the 'asterisk' user
    to that group.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    (cherry picked from commit 37bbed6f95856a507d727ffc863b20f8a8b35332)
---
 package/kernel/lantiq/ltq-vmmc/Makefile        | 1 +
 package/kernel/lantiq/ltq-vmmc/files/vmmc.init | 1 +
 2 files changed, 2 insertions(+)

diff --git a/package/kernel/lantiq/ltq-vmmc/Makefile b/package/kernel/lantiq/ltq-vmmc/Makefile
index c96cee819b..4972f1c374 100644
--- a/package/kernel/lantiq/ltq-vmmc/Makefile
+++ b/package/kernel/lantiq/ltq-vmmc/Makefile
@@ -29,6 +29,7 @@ define KernelPackage/ltq-vmmc
   DEPENDS:=@(TARGET_lantiq_xway||TARGET_lantiq_xrx200) +kmod-ltq-tapi
   FILES:=$(PKG_BUILD_DIR)/src/drv_vmmc.ko
   AUTOLOAD:=$(call AutoProbe,drv_vmmc)
+  USERID:=:vmmc=386
 endef
 
 define KernelPackage/ltq-vmmc/description
diff --git a/package/kernel/lantiq/ltq-vmmc/files/vmmc.init b/package/kernel/lantiq/ltq-vmmc/files/vmmc.init
index 402376e294..78efe80b98 100644
--- a/package/kernel/lantiq/ltq-vmmc/files/vmmc.init
+++ b/package/kernel/lantiq/ltq-vmmc/files/vmmc.init
@@ -8,6 +8,7 @@ start() {
 	for i in 10 11 12 13 14 15 16 17 18; do
 		if ! [ -e /dev/vmmc$i ]; then
 			mknod -m 664 /dev/vmmc$i c 122 $i
+			chown root:vmmc /dev/vmmc$i
 		fi
 	done
 }



From lede-commits at lists.infradead.org  Sun Mar  3 14:16:17 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 03 Mar 2024 17:16:17 -0500
Subject: [openwrt/openwrt]  build: add $(STAGING_DIR) and $(BIN_DIR)
 preparation to target and package subdir compile dependencies
In-Reply-To: <170950417741.3324506.13187940433613795714@git-01.infra.openwrt.org>
References: <170950417741.3324506.13187940433613795714@git-01.infra.openwrt.org>
Message-ID: <mailman.12573.1709504183.1280.lede-commits@lists.infradead.org>

neocturne pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fbb924abff8af9e69ec90d7bf099046c24145b74

commit fbb924abff8af9e69ec90d7bf099046c24145b74
Author: Matthias Schiffer <mschiffer at universe-factory.net>
AuthorDate: Fri Feb 2 00:46:58 2024 +0100

    build: add $(STAGING_DIR) and $(BIN_DIR) preparation to target and package subdir compile dependencies
    
    In a pristine build, these directories are created as dependencies of
    the tools subdir compile, however this step never runs when the tools
    compile stamp already exists. Since commit ed6ba2801c0a ("tools: keep
    stamp file in $(STAGING_DIR_HOST)"), this will happen after `make clean`:
    $(STAGING_DIR) has been deleted, but the tools stamp still exists, so
    the next build will fail because $(STAGING_DIR) has not been set up
    correctly.
    
    Fix builds after `make clean` by adding the preparation as dependencies
    for the target and package directories as well.
    
    Fixes: ed6ba2801c0a ("tools: keep stamp file in $(STAGING_DIR_HOST)")
    Signed-off-by: Matthias Schiffer <mschiffer at universe-factory.net>
---
 package/Makefile | 2 ++
 target/Makefile  | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/package/Makefile b/package/Makefile
index 8e72d4ec72..4663b41de4 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -117,6 +117,8 @@ endif
 
 $(curdir)/flags-install:= -j1
 
+$(curdir)//compile = $(STAGING_DIR)/.prepared $(BIN_DIR)
+
 $(eval $(call stampfile,$(curdir),package,prereq,.config))
 $(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build))
 $(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build))
diff --git a/target/Makefile b/target/Makefile
index 83f9c4b093..3bbb9f4131 100644
--- a/target/Makefile
+++ b/target/Makefile
@@ -19,6 +19,8 @@ $(curdir)/builddirs-install:=\
 $(curdir)/sdk/install:=$(curdir)/linux/install
 $(curdir)/imagebuilder/install:=$(curdir)/linux/install
 
+$(curdir)//compile = $(STAGING_DIR)/.prepared $(BIN_DIR)
+
 $(eval $(call stampfile,$(curdir),target,prereq,.config))
 $(eval $(call stampfile,$(curdir),target,compile,$(TMP_DIR)/.build))
 $(eval $(call stampfile,$(curdir),target,install,$(TMP_DIR)/.build))



From lede-commits at lists.infradead.org  Mon Mar  4 05:58:57 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 08:58:57 -0500
Subject: [openwrt/openwrt]  base-files: sysupgrade: fix streaming backup
 archives to stdout
In-Reply-To: <170956073775.1356777.15693417474621570014@git-01.infra.openwrt.org>
References: <170956073775.1356777.15693417474621570014@git-01.infra.openwrt.org>
Message-ID: <mailman.12833.1709560743.1280.lede-commits@lists.infradead.org>

jow pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6f6406a1321b4ead1d61abdea450d7c76bd5a927

commit 6f6406a1321b4ead1d61abdea450d7c76bd5a927
Author: Jo-Philipp Wich <jo at mein.io>
AuthorDate: Mon Mar 4 14:50:46 2024 +0100

    base-files: sysupgrade: fix streaming backup archives to stdout
    
    Due to previous refactoring in sysupgrade, writing backup archives to
    stdout became impossible since the hardcoded gzip output redirection
    did not account for the `-` special case filename.
    
    Fix this issue by substituting `-` with `/proc/self/fd/1` in the tar
    archive output path variable.
    
    Also remove a redundant `rm -f` of the target file path that occurs
    before the file could've possibly been written.
    
    Fixes: #14773
    Fixes: https://github.com/openwrt/luci/issues/6961
    Fixes: e36cc53092 ("base-files: sysupgrade: use tar helper to include installed_packages.txt")
    Signed-off-by: Jo-Philipp Wich <jo at mein.io>
---
 package/base-files/files/sbin/sysupgrade | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade
index 78ec455067..720f3da3fa 100755
--- a/package/base-files/files/sbin/sysupgrade
+++ b/package/base-files/files/sbin/sysupgrade
@@ -241,12 +241,13 @@ create_backup_archive() {
 	[ "$(rootfs_type)" = "tmpfs" ] && {
 		echo "Cannot save config while running from ramdisk." >&2
 		ask_bool 0 "Abort" && exit
-		rm -f "$conf_tar"
 		return 0
 	}
 	run_hooks "$CONFFILES" $sysupgrade_init_conffiles
 	ask_bool 0 "Edit config file list" && vi "$CONFFILES"
 
+	[ "$conf_tar" != "-" ] || conf_tar=""
+
 	v "Saving config files..."
 	[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
 	sed -i -e 's,^/,,' "$CONFFILES"
@@ -272,12 +273,12 @@ create_backup_archive() {
 
 		# Rest of archive with config files and ending padding
 		tar c${TAR_V} -C / -T "$CONFFILES"
-	} | gzip > "$conf_tar"
+	} | gzip > "${conf_tar:-/proc/self/fd/1}"
 
 	local err=$?
 	if [ "$err" -ne 0 ]; then
 		echo "Failed to create the configuration backup."
-		rm -f "$conf_tar"
+		[ -f "$conf_tar" ] && rm -f "$conf_tar"
 	fi
 
 	rm -f "$CONFFILES"



From lede-commits at lists.infradead.org  Mon Mar  4 07:25:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 10:25:30 -0500
Subject: [openwrt/openwrt]  bcm27xx: base-files: fix platform_copy_config
In-Reply-To: <170956593057.1558472.16773036587527101517@git-01.infra.openwrt.org>
References: <170956593057.1558472.16773036587527101517@git-01.infra.openwrt.org>
Message-ID: <mailman.12873.1709565936.1280.lede-commits@lists.infradead.org>

noltari pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/552c6b24724d81a9651a0e64a01135c18c6487ea

commit 552c6b24724d81a9651a0e64a01135c18c6487ea
Author: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
AuthorDate: Mon Mar 4 16:20:55 2024 +0100

    bcm27xx: base-files: fix platform_copy_config
    
    /boot/kernel*.img wildcard only works without quotation marks.
    
    Fixes: 1a5e51ab0011 ("bcm27xx: base-files: fix platform_copy_config")
    Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
---
 target/linux/bcm27xx/base-files/lib/upgrade/platform.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
index 956bc1c788..3182a555a9 100644
--- a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
@@ -90,7 +90,7 @@ platform_copy_config() {
 
 	if export_partdevice partdev 1; then
 		mkdir -p /boot
-		[ -f "/boot/kernel*.img" ] || mount -t vfat -o rw,noatime "/dev/$partdev" /boot
+		[ -f /boot/kernel*.img ] || mount -t vfat -o rw,noatime "/dev/$partdev" /boot
 		cp -af "$UPGRADE_BACKUP" "/boot/$BACKUP_FILE"
 		tar -C / -zxvf "$UPGRADE_BACKUP" boot/cmdline.txt boot/config.txt
 		sync



From lede-commits at lists.infradead.org  Mon Mar  4 07:27:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 10:27:04 -0500
Subject: [openwrt/openwrt]  bcm27xx: base-files: fix platform_copy_config
In-Reply-To: <170956602450.1561528.16951001748872958904@git-01.infra.openwrt.org>
References: <170956602450.1561528.16951001748872958904@git-01.infra.openwrt.org>
Message-ID: <mailman.12874.1709566029.1280.lede-commits@lists.infradead.org>

noltari pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/e87be1bc0e024040cc452f1e4ae956a1204f6f70

commit e87be1bc0e024040cc452f1e4ae956a1204f6f70
Author: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
AuthorDate: Mon Mar 4 16:20:55 2024 +0100

    bcm27xx: base-files: fix platform_copy_config
    
    /boot/kernel*.img wildcard only works without quotation marks.
    
    (cherry picked from commit 552c6b24724d81a9651a0e64a01135c18c6487ea)
    Fixes: 1a5e51ab0011 ("bcm27xx: base-files: fix platform_copy_config")
    Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
---
 target/linux/bcm27xx/base-files/lib/upgrade/platform.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
index 956bc1c788..3182a555a9 100644
--- a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
@@ -90,7 +90,7 @@ platform_copy_config() {
 
 	if export_partdevice partdev 1; then
 		mkdir -p /boot
-		[ -f "/boot/kernel*.img" ] || mount -t vfat -o rw,noatime "/dev/$partdev" /boot
+		[ -f /boot/kernel*.img ] || mount -t vfat -o rw,noatime "/dev/$partdev" /boot
 		cp -af "$UPGRADE_BACKUP" "/boot/$BACKUP_FILE"
 		tar -C / -zxvf "$UPGRADE_BACKUP" boot/cmdline.txt boot/config.txt
 		sync



From lede-commits at lists.infradead.org  Mon Mar  4 07:33:51 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 10:33:51 -0500
Subject: [openwrt/openwrt]  base-files: sysupgrade: allow overriding config
 restore
In-Reply-To: <170956643063.1578771.11742923964340276789@git-01.infra.openwrt.org>
References: <170956643063.1578771.11742923964340276789@git-01.infra.openwrt.org>
Message-ID: <mailman.12875.1709566446.1280.lede-commits@lists.infradead.org>

noltari pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/4b3c1251a4b511c36b6fdbb6f249ccd3114b00c5

commit 4b3c1251a4b511c36b6fdbb6f249ccd3114b00c5
Author: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
AuthorDate: Wed Jan 31 11:43:55 2024 +0100

    base-files: sysupgrade: allow overriding config restore
    
    Some platforms like Raspberry Pi require patching some backup files like
    cmdline.txt in order to set the correct root PARTUUID.
    
    Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
---
 package/base-files/files/sbin/sysupgrade | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade
index 720f3da3fa..ed8871b892 100755
--- a/package/base-files/files/sbin/sysupgrade
+++ b/package/base-files/files/sbin/sysupgrade
@@ -307,7 +307,11 @@ if [ -n "$CONF_RESTORE" ]; then
 
 	[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
 	v "Restoring config files..."
-	tar -C / -x${TAR_V}zf "$CONF_RESTORE"
+	if [ "$(type -t platform_restore_backup)" == 'platform_restore_backup' ]; then
+		platform_restore_backup "$TAR_V"
+	else
+		tar -C / -x${TAR_V}zf "$CONF_RESTORE"
+	fi
 	exit $?
 fi
 



From lede-commits at lists.infradead.org  Mon Mar  4 07:33:50 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 10:33:50 -0500
Subject: [openwrt/openwrt]  bcm27xx: pass signature to partition generation
In-Reply-To: <170956643063.1578771.11742923964340276789@git-01.infra.openwrt.org>
References: <170956643063.1578771.11742923964340276789@git-01.infra.openwrt.org>
Message-ID: <mailman.12876.1709566446.1280.lede-commits@lists.infradead.org>

noltari pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fb80be694427e9d692c02c6ab7b10caf4e539a62

commit fb80be694427e9d692c02c6ab7b10caf4e539a62
Author: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
AuthorDate: Tue Jan 30 21:28:54 2024 +0100

    bcm27xx: pass signature to partition generation
    
    Passes IMG_PART_SIGNATURE to ptgen instead of using the default "OWRT"
    signature.
    
    Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
---
 target/linux/bcm27xx/image/Makefile              | 1 +
 target/linux/bcm27xx/image/gen_rpi_sdcard_img.sh | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/target/linux/bcm27xx/image/Makefile b/target/linux/bcm27xx/image/Makefile
index 12ac0012a4..e45f53de8e 100644
--- a/target/linux/bcm27xx/image/Makefile
+++ b/target/linux/bcm27xx/image/Makefile
@@ -49,6 +49,7 @@ define Build/boot-2711
 endef
 
 define Build/sdcard-img
+	SIGNATURE="$(IMG_PART_SIGNATURE)" \
 	./gen_rpi_sdcard_img.sh $@ $@.boot $(IMAGE_ROOTFS) \
 		$(CONFIG_TARGET_KERNEL_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
 endef
diff --git a/target/linux/bcm27xx/image/gen_rpi_sdcard_img.sh b/target/linux/bcm27xx/image/gen_rpi_sdcard_img.sh
index 488a3517c7..8d33e4f54c 100755
--- a/target/linux/bcm27xx/image/gen_rpi_sdcard_img.sh
+++ b/target/linux/bcm27xx/image/gen_rpi_sdcard_img.sh
@@ -19,7 +19,7 @@ kernel_type=c
 rootfs_type=83
 sect=63
 
-set $(ptgen -o $OUTPUT -h $head -s $sect -l $align -t $kernel_type -p ${BOOTFSSIZE}M -t $rootfs_type -p ${ROOTFSSIZE}M)
+set $(ptgen -o $OUTPUT -h $head -s $sect -l $align -t $kernel_type -p ${BOOTFSSIZE}M -t $rootfs_type -p ${ROOTFSSIZE}M ${SIGNATURE:+-S 0x$SIGNATURE})
 
 BOOTOFFSET="$(($1 / 512))"
 ROOTFSOFFSET="$(($3 / 512))"



From lede-commits at lists.infradead.org  Mon Mar  4 07:33:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 10:33:52 -0500
Subject: [openwrt/openwrt]  bcm27xx: use PARTUUID for root in cmdline
In-Reply-To: <170956643063.1578771.11742923964340276789@git-01.infra.openwrt.org>
References: <170956643063.1578771.11742923964340276789@git-01.infra.openwrt.org>
Message-ID: <mailman.12877.1709566448.1280.lede-commits@lists.infradead.org>

noltari pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fe0081eecf43bfd92ac68aa0f3ce7165aaddb4f2

commit fe0081eecf43bfd92ac68aa0f3ce7165aaddb4f2
Author: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
AuthorDate: Tue Jan 30 21:30:20 2024 +0100

    bcm27xx: use PARTUUID for root in cmdline
    
    This allows booting from USB/NVME while keeping SD compatibility.
    
    Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
---
 .../bcm27xx/base-files/lib/preinit/79_move_config  |  5 +++-
 .../base-files/lib/preinit/81_set_root_part        | 12 ++++++++
 .../bcm27xx/base-files/lib/upgrade/platform.sh     | 33 +++++++++++++++++++++-
 target/linux/bcm27xx/image/Makefile                |  8 +++++-
 target/linux/bcm27xx/image/cmdline.txt             |  2 +-
 5 files changed, 56 insertions(+), 4 deletions(-)

diff --git a/target/linux/bcm27xx/base-files/lib/preinit/79_move_config b/target/linux/bcm27xx/base-files/lib/preinit/79_move_config
index db5bf93b62..fed5278130 100644
--- a/target/linux/bcm27xx/base-files/lib/preinit/79_move_config
+++ b/target/linux/bcm27xx/base-files/lib/preinit/79_move_config
@@ -16,7 +16,10 @@ move_config() {
 		insmod vfat
 		mkdir -p /boot
 		mount -t vfat -o rw,noatime /dev/$partdev /boot
-		[ -f "/boot/$BACKUP_FILE" ] && mv -f "/boot/$BACKUP_FILE" /
+		if [ -f "/boot/$BACKUP_FILE" ]; then
+			mv -f "/boot/$BACKUP_FILE" /
+			export BCM27XX_SET_ROOT_PART=1
+		fi
 	fi
 }
 
diff --git a/target/linux/bcm27xx/base-files/lib/preinit/81_set_root_part b/target/linux/bcm27xx/base-files/lib/preinit/81_set_root_part
new file mode 100644
index 0000000000..a915150213
--- /dev/null
+++ b/target/linux/bcm27xx/base-files/lib/preinit/81_set_root_part
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+. /lib/upgrade/platform.sh
+
+do_set_root_part() {
+	if [ "$BCM27XX_SET_ROOT_PART" -eq "1" ]; then
+		bcm27xx_set_root_part
+		unset BCM27XX_SET_ROOT_PART
+	fi
+}
+
+[ "$INITRAMFS" = "1" ] || boot_hook_add preinit_main do_set_root_part
diff --git a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
index 3182a555a9..69cc60e2bc 100644
--- a/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/bcm27xx/base-files/lib/upgrade/platform.sh
@@ -85,15 +85,46 @@ platform_do_upgrade() {
 	get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync
 }
 
+bcm27xx_set_root_part() {
+	local root_part
+
+	if [ -f "/boot/partuuid.txt" ]; then
+		root_part="PARTUUID=$(cat "/boot/partuuid.txt")-02"
+	else
+		root_part="/dev/mmcblk0p2"
+	fi
+
+	sed -i "s#\broot=[^ ]*#root=${root_part}#g" "/boot/cmdline.txt"
+}
+
 platform_copy_config() {
 	local partdev
 
 	if export_partdevice partdev 1; then
 		mkdir -p /boot
 		[ -f /boot/kernel*.img ] || mount -t vfat -o rw,noatime "/dev/$partdev" /boot
-		cp -af "$UPGRADE_BACKUP" "/boot/$BACKUP_FILE"
+
 		tar -C / -zxvf "$UPGRADE_BACKUP" boot/cmdline.txt boot/config.txt
+		bcm27xx_set_root_part
+
+		local backup_tmp="/tmp/backup-update"
+		mkdir -p $backup_tmp
+		tar -C $backup_tmp -zxvf $UPGRADE_BACKUP
+		cp -af /boot/cmdline.txt $backup_tmp/boot/
+
+		local work_dir=$(pwd)
+		cd $backup_tmp
+		tar -C $backup_tmp -zcvf /boot/$BACKUP_FILE *
+		cd $work_dir
+
 		sync
 		umount /boot
 	fi
 }
+
+platform_restore_backup() {
+	local TAR_V=$1
+
+	tar -C / -x${TAR_V}zf "$CONF_RESTORE"
+	bcm27xx_set_root_part
+}
diff --git a/target/linux/bcm27xx/image/Makefile b/target/linux/bcm27xx/image/Makefile
index e45f53de8e..9d41e47bac 100644
--- a/target/linux/bcm27xx/image/Makefile
+++ b/target/linux/bcm27xx/image/Makefile
@@ -15,13 +15,19 @@ endef
 
 ### Image scripts ###
 define Build/boot-common
+	echo $(IMG_PART_SIGNATURE) > $@-partuuid.txt
+	sed \
+		-e 's#@ROOT@#PARTUUID=$(IMG_PART_SIGNATURE)-02#g' \
+		cmdline.txt > $@-cmdline.txt
+
 	rm -f $@.boot
 	mkfs.fat -n boot -C $@.boot $(FAT32_BLOCKS)
 	mcopy -i $@.boot $(KDIR)/COPYING.linux ::
 	mcopy -i $@.boot $(KDIR)/LICENCE.broadcom ::
-	mcopy -i $@.boot cmdline.txt ::
+	mcopy -i $@.boot $@-cmdline.txt ::cmdline.txt
 	mcopy -i $@.boot config.txt ::
 	mcopy -i $@.boot distroconfig.txt ::
+	mcopy -i $@.boot $@-partuuid.txt ::partuuid.txt
 	mcopy -i $@.boot $(IMAGE_KERNEL) ::$(KERNEL_IMG)
 	$(foreach dts,$(shell echo $(DEVICE_DTS)),mcopy -i $@.boot $(DTS_DIR)/$(dts).dtb ::;)
 	mmd -i $@.boot ::/overlays
diff --git a/target/linux/bcm27xx/image/cmdline.txt b/target/linux/bcm27xx/image/cmdline.txt
index d9b7d867a7..41f76f10af 100644
--- a/target/linux/bcm27xx/image/cmdline.txt
+++ b/target/linux/bcm27xx/image/cmdline.txt
@@ -1 +1 @@
-console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=squashfs,ext4 rootwait
+console=serial0,115200 console=tty1 root=@ROOT@ rootfstype=squashfs,ext4 rootwait



From lede-commits at lists.infradead.org  Mon Mar  4 14:58:47 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 17:58:47 -0500
Subject: [openwrt/openwrt]  build: do not depend on $(STAGING_DIR)/.prepared
 when in SDK
In-Reply-To: <170959312766.2539495.10448747716672594791@git-01.infra.openwrt.org>
References: <170959312766.2539495.10448747716672594791@git-01.infra.openwrt.org>
Message-ID: <mailman.13054.1709593143.1280.lede-commits@lists.infradead.org>

neocturne pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2b46cbef8179b4a131bd008c520339441bc87c97

commit 2b46cbef8179b4a131bd008c520339441bc87c97
Author: Matthias Schiffer <mschiffer at universe-factory.net>
AuthorDate: Mon Mar 4 23:45:15 2024 +0100

    build: do not depend on $(STAGING_DIR)/.prepared when in SDK
    
    The dependency can't be satisfied when building using the SDK, breaking
    package builds. As the staging and bin dirs are distributed with the SDK
    archive, ignoring the dependency is fine when SDK is set.
    
    Fixes: fbb924abff8a ("build: add $(STAGING_DIR) and $(BIN_DIR) ...")
    Signed-off-by: Matthias Schiffer <mschiffer at universe-factory.net>
---
 package/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/package/Makefile b/package/Makefile
index 4663b41de4..d72ce09a81 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -59,6 +59,7 @@ $(curdir)/merge-index: $(curdir)/merge
 	(cd $(PACKAGE_DIR_ALL) && $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages; )
 
 ifndef SDK
+  $(curdir)//compile = $(STAGING_DIR)/.prepared $(BIN_DIR)
   $(curdir)/compile: $(curdir)/system/opkg/host/compile
 endif
 
@@ -117,8 +118,6 @@ endif
 
 $(curdir)/flags-install:= -j1
 
-$(curdir)//compile = $(STAGING_DIR)/.prepared $(BIN_DIR)
-
 $(eval $(call stampfile,$(curdir),package,prereq,.config))
 $(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build))
 $(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build))



From lede-commits at lists.infradead.org  Mon Mar  4 14:59:40 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 17:59:40 -0500
Subject: [openwrt/openwrt]  build: do not depend on $(STAGING_DIR)/.prepared
 when in SDK
In-Reply-To: <170959318072.2541407.11096074608447824416@git-01.infra.openwrt.org>
References: <170959318072.2541407.11096074608447824416@git-01.infra.openwrt.org>
Message-ID: <mailman.13055.1709593185.1280.lede-commits@lists.infradead.org>

neocturne pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/a527b34390f1cbe9b0bcffbc3b6e4e0059b0e251

commit a527b34390f1cbe9b0bcffbc3b6e4e0059b0e251
Author: Matthias Schiffer <mschiffer at universe-factory.net>
AuthorDate: Mon Mar 4 23:45:15 2024 +0100

    build: do not depend on $(STAGING_DIR)/.prepared when in SDK
    
    The dependency can't be satisfied when building using the SDK, breaking
    package builds. As the staging and bin dirs are distributed with the SDK
    archive, ignoring the dependency is fine when SDK is set.
    
    Fixes: fbb924abff8a ("build: add $(STAGING_DIR) and $(BIN_DIR) ...")
    Signed-off-by: Matthias Schiffer <mschiffer at universe-factory.net>
    (cherry picked from commit 2b46cbef8179b4a131bd008c520339441bc87c97)
---
 package/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/package/Makefile b/package/Makefile
index 4663b41de4..d72ce09a81 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -59,6 +59,7 @@ $(curdir)/merge-index: $(curdir)/merge
 	(cd $(PACKAGE_DIR_ALL) && $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages; )
 
 ifndef SDK
+  $(curdir)//compile = $(STAGING_DIR)/.prepared $(BIN_DIR)
   $(curdir)/compile: $(curdir)/system/opkg/host/compile
 endif
 
@@ -117,8 +118,6 @@ endif
 
 $(curdir)/flags-install:= -j1
 
-$(curdir)//compile = $(STAGING_DIR)/.prepared $(BIN_DIR)
-
 $(eval $(call stampfile,$(curdir),package,prereq,.config))
 $(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build))
 $(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build))



From lede-commits at lists.infradead.org  Mon Mar  4 15:26:06 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 18:26:06 -0500
Subject: [openwrt/openwrt]  kernel: Remove dsmark support
In-Reply-To: <170959476689.2595532.10549938284665535951@git-01.infra.openwrt.org>
References: <170959476689.2595532.10549938284665535951@git-01.infra.openwrt.org>
Message-ID: <mailman.13058.1709594773.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/bd6b37f463d0530b887e052860207448c82d6ee2

commit bd6b37f463d0530b887e052860207448c82d6ee2
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Sun Mar 3 09:49:03 2024 -0500

    kernel: Remove dsmark support
    
    dsmark support was removed in kernel 5.15.150 and 6.1.80. Remove it from
    the kmod package as well
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
---
 package/kernel/linux/modules/netsupport.mk | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk
index fcf327b434..535c087dec 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_skbmod act_csum em_cmp em_nbyte em_meta em_text
+SCHED_MODULES_EXTRA = sch_codel 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
@@ -1002,7 +1002,6 @@ define KernelPackage/sched
   DEPENDS:=+kmod-sched-core +kmod-lib-crc32c +kmod-lib-textsearch
   KCONFIG:= \
 	CONFIG_NET_SCH_CODEL \
-	CONFIG_NET_SCH_DSMARK \
 	CONFIG_NET_SCH_GRED \
 	CONFIG_NET_SCH_MULTIQ \
 	CONFIG_NET_SCH_SFQ \



From lede-commits at lists.infradead.org  Mon Mar  4 15:26:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 04 Mar 2024 18:26:07 -0500
Subject: [openwrt/openwrt]  kernel: bump 6.1 to 6.1.80
In-Reply-To: <170959476689.2595532.10549938284665535951@git-01.infra.openwrt.org>
References: <170959476689.2595532.10549938284665535951@git-01.infra.openwrt.org>
Message-ID: <mailman.13059.1709594776.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/13cdc8955cec40c461f3092125a29f4dc9c4c324

commit 13cdc8955cec40c461f3092125a29f4dc9c4c324
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Fri Mar 1 16:08:40 2024 -0500

    kernel: bump 6.1 to 6.1.80
    
    Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.80
    
    Manually rebased:
            generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch[1]
    
    All other patches automatically rebased.
    
    1. Acknowledgement to @heheb and @DragonBluep. Upstream commit for ref: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.80&id=9c5662e95a8dcc232c3ef4deb21033badcd260f6
    
    Build system: x86/64
    Build-tested: x86/64/AMD Cezanne, ramips/tplink_archer-a6-v3
    Run-tested: x86/64/AMD Cezanne, ramips/tplink_archer-a6-v3
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
---
 include/kernel-6.1                                    |  4 ++--
 .../patches-6.1/900-unaligned_access_hacks.patch      |  2 +-
 ...ba_pl011-Insert-mb-for-correct-FIFO-handling.patch |  2 +-
 .../950-0238-zswap-Defer-zswap-initialisation.patch   |  4 ++--
 ...odix-Add-option-to-poll-instead-of-relying-o.patch |  6 +++---
 ...odix-Include-I2C-details-in-names-for-the-de.patch |  2 +-
 ...sifive-plic-Enable-oneshot-safe-threaded-EOI.patch |  2 +-
 .../0013-irqchip-sifive-plic-Support-wake-IRQs.patch  |  4 ++--
 ...4i-spdif-Assert-reset-when-removing-the-devi.patch |  2 +-
 ...4i-spdif-Simplify-code-around-optional-reset.patch |  2 +-
 ...4i-spdif-Add-support-for-separate-RX-TX-cloc.patch |  6 +++---
 .../020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch |  2 +-
 .../650-netfilter-add-xt_FLOWOFFLOAD-target.patch     | 19 +++++++++++--------
 ...r-nft_flow_offload-handle-netdevice-events-f.patch |  8 ++++----
 ...r-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 ...r-nf_tables-fix-bidirectional-offload-regres.patch |  2 +-
 ...realtek-rtl8221-allow-to-configure-SERDES-mo.patch |  6 +++---
 ...realtek-support-switching-between-SGMII-and-.patch |  4 ++--
 ...-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch | 12 ++++++------
 ...altek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch |  4 ++--
 ...realtek-make-sure-paged-read-is-protected-by.patch |  2 +-
 ...realtek-use-inline-functions-for-10GbE-adver.patch |  4 ++--
 ...realtek-check-validity-of-10GbE-link-partner.patch |  2 +-
 .../729-net-phy-realtek-introduce-rtl822x_probe.patch | 10 +++++-----
 ...phy-realtek-detect-early-version-of-RTL8221B.patch |  4 ++--
 ...et-phy-realtek-support-interrupt-of-RTL8221B.patch |  4 ++--
 .../generic/pending-6.1/834-ledtrig-libata.patch      |  8 ++++----
 27 files changed, 66 insertions(+), 63 deletions(-)

diff --git a/include/kernel-6.1 b/include/kernel-6.1
index 6c05ca0236..d00860a68c 100644
--- a/include/kernel-6.1
+++ b/include/kernel-6.1
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.1 = .79
-LINUX_KERNEL_HASH-6.1.79 = faa49ca22fb55ed4d5ca2a55e07dd10e4e171cfc3b92568a631453cd2068b39b
+LINUX_VERSION-6.1 = .80
+LINUX_KERNEL_HASH-6.1.80 = 568ecaaebb8b87c7c8246bba67bc83402972bf34f5811651a2d3cd548ff7b671
diff --git a/target/linux/ath79/patches-6.1/900-unaligned_access_hacks.patch b/target/linux/ath79/patches-6.1/900-unaligned_access_hacks.patch
index 945143867a..e1c6835afd 100644
--- a/target/linux/ath79/patches-6.1/900-unaligned_access_hacks.patch
+++ b/target/linux/ath79/patches-6.1/900-unaligned_access_hacks.patch
@@ -312,7 +312,7 @@ SVN-Revision: 35130
  		case IPV6_2292HOPOPTS:
 --- a/net/ipv6/exthdrs.c
 +++ b/net/ipv6/exthdrs.c
-@@ -1003,7 +1003,7 @@ static bool ipv6_hop_jumbo(struct sk_buf
+@@ -1013,7 +1013,7 @@ static bool ipv6_hop_jumbo(struct sk_buf
  		goto drop;
  	}
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0101-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch b/target/linux/bcm27xx/patches-6.1/950-0101-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
index 67a9eb9745..8a351aebe3 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0101-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0101-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
@@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/tty/serial/amba-pl011.c
 +++ b/drivers/tty/serial/amba-pl011.c
-@@ -1426,6 +1426,7 @@ static bool pl011_tx_char(struct uart_am
+@@ -1456,6 +1456,7 @@ static bool pl011_tx_char(struct uart_am
  		return false; /* unable to transmit character */
  
  	pl011_write(c, uap, REG_DR);
diff --git a/target/linux/bcm27xx/patches-6.1/950-0238-zswap-Defer-zswap-initialisation.patch b/target/linux/bcm27xx/patches-6.1/950-0238-zswap-Defer-zswap-initialisation.patch
index 845b3466de..b27bc25e15 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0238-zswap-Defer-zswap-initialisation.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0238-zswap-Defer-zswap-initialisation.patch
@@ -80,7 +80,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  }
  
  /*********************************
-@@ -1496,7 +1512,6 @@ static int __init zswap_debugfs_init(voi
+@@ -1498,7 +1514,6 @@ static int __init zswap_debugfs_init(voi
  **********************************/
  static int __init init_zswap(void)
  {
@@ -88,7 +88,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  	int ret;
  
  	zswap_init_started = true;
-@@ -1520,33 +1535,23 @@ static int __init init_zswap(void)
+@@ -1522,33 +1537,23 @@ static int __init init_zswap(void)
  	if (ret)
  		goto hp_fail;
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0689-input-goodix-Add-option-to-poll-instead-of-relying-o.patch b/target/linux/bcm27xx/patches-6.1/950-0689-input-goodix-Add-option-to-poll-instead-of-relying-o.patch
index 23877809ff..bc119c1d3a 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0689-input-goodix-Add-option-to-poll-instead-of-relying-o.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0689-input-goodix-Add-option-to-poll-instead-of-relying-o.patch
@@ -96,7 +96,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
  }
  
  static int goodix_check_cfg_8(struct goodix_ts_data *ts, const u8 *cfg, int len)
-@@ -1425,6 +1478,11 @@ static void goodix_ts_remove(struct i2c_
+@@ -1426,6 +1479,11 @@ static void goodix_ts_remove(struct i2c_
  {
  	struct goodix_ts_data *ts = i2c_get_clientdata(client);
  
@@ -108,7 +108,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
  	if (ts->load_cfg_from_disk)
  		wait_for_completion(&ts->firmware_loading_complete);
  }
-@@ -1440,7 +1498,7 @@ static int __maybe_unused goodix_suspend
+@@ -1441,7 +1499,7 @@ static int __maybe_unused goodix_suspend
  
  	/* We need gpio pins to suspend/resume */
  	if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_NONE) {
@@ -117,7 +117,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
  		return 0;
  	}
  
-@@ -1484,7 +1542,7 @@ static int __maybe_unused goodix_resume(
+@@ -1485,7 +1543,7 @@ static int __maybe_unused goodix_resume(
  	int error;
  
  	if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_NONE) {
diff --git a/target/linux/bcm27xx/patches-6.1/950-1165-input-goodix-Include-I2C-details-in-names-for-the-de.patch b/target/linux/bcm27xx/patches-6.1/950-1165-input-goodix-Include-I2C-details-in-names-for-the-de.patch
index 4b529e66f5..6bbe2208f4 100644
--- a/target/linux/bcm27xx/patches-6.1/950-1165-input-goodix-Include-I2C-details-in-names-for-the-de.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-1165-input-goodix-Include-I2C-details-in-names-for-the-de.patch
@@ -19,7 +19,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
 
 --- a/drivers/input/touchscreen/goodix.c
 +++ b/drivers/input/touchscreen/goodix.c
-@@ -1211,7 +1211,10 @@ static int goodix_configure_dev(struct g
+@@ -1212,7 +1212,10 @@ static int goodix_configure_dev(struct g
  		return -ENOMEM;
  	}
  
diff --git a/target/linux/d1/patches-6.1/0012-irqchip-sifive-plic-Enable-oneshot-safe-threaded-EOI.patch b/target/linux/d1/patches-6.1/0012-irqchip-sifive-plic-Enable-oneshot-safe-threaded-EOI.patch
index 429a5d6824..8cb949f186 100644
--- a/target/linux/d1/patches-6.1/0012-irqchip-sifive-plic-Enable-oneshot-safe-threaded-EOI.patch
+++ b/target/linux/d1/patches-6.1/0012-irqchip-sifive-plic-Enable-oneshot-safe-threaded-EOI.patch
@@ -11,7 +11,7 @@ Signed-off-by: Samuel Holland <samuel at sholland.org>
 
 --- a/drivers/irqchip/irq-sifive-plic.c
 +++ b/drivers/irqchip/irq-sifive-plic.c
-@@ -201,7 +201,9 @@ static struct irq_chip plic_chip = {
+@@ -207,7 +207,9 @@ static struct irq_chip plic_chip = {
  	.irq_set_affinity = plic_set_affinity,
  #endif
  	.irq_set_type	= plic_irq_set_type,
diff --git a/target/linux/d1/patches-6.1/0013-irqchip-sifive-plic-Support-wake-IRQs.patch b/target/linux/d1/patches-6.1/0013-irqchip-sifive-plic-Support-wake-IRQs.patch
index e9033b7d66..209d97597c 100644
--- a/target/linux/d1/patches-6.1/0013-irqchip-sifive-plic-Support-wake-IRQs.patch
+++ b/target/linux/d1/patches-6.1/0013-irqchip-sifive-plic-Support-wake-IRQs.patch
@@ -10,7 +10,7 @@ Signed-off-by: Samuel Holland <samuel at sholland.org>
 
 --- a/drivers/irqchip/irq-sifive-plic.c
 +++ b/drivers/irqchip/irq-sifive-plic.c
-@@ -187,7 +187,8 @@ static struct irq_chip plic_edge_chip =
+@@ -193,7 +193,8 @@ static struct irq_chip plic_edge_chip =
  	.irq_set_affinity = plic_set_affinity,
  #endif
  	.irq_set_type	= plic_irq_set_type,
@@ -20,7 +20,7 @@ Signed-off-by: Samuel Holland <samuel at sholland.org>
  };
  
  static struct irq_chip plic_chip = {
-@@ -201,7 +202,8 @@ static struct irq_chip plic_chip = {
+@@ -207,7 +208,8 @@ static struct irq_chip plic_chip = {
  	.irq_set_affinity = plic_set_affinity,
  #endif
  	.irq_set_type	= plic_irq_set_type,
diff --git a/target/linux/d1/patches-6.1/0068-ASoC-sun4i-spdif-Assert-reset-when-removing-the-devi.patch b/target/linux/d1/patches-6.1/0068-ASoC-sun4i-spdif-Assert-reset-when-removing-the-devi.patch
index 794fd8c1db..06d2f4892f 100644
--- a/target/linux/d1/patches-6.1/0068-ASoC-sun4i-spdif-Assert-reset-when-removing-the-devi.patch
+++ b/target/linux/d1/patches-6.1/0068-ASoC-sun4i-spdif-Assert-reset-when-removing-the-devi.patch
@@ -13,7 +13,7 @@ Signed-off-by: Samuel Holland <samuel at sholland.org>
 
 --- a/sound/soc/sunxi/sun4i-spdif.c
 +++ b/sound/soc/sunxi/sun4i-spdif.c
-@@ -705,10 +705,14 @@ err_unregister:
+@@ -710,10 +710,14 @@ err_unregister:
  
  static int sun4i_spdif_remove(struct platform_device *pdev)
  {
diff --git a/target/linux/d1/patches-6.1/0069-ASoC-sun4i-spdif-Simplify-code-around-optional-reset.patch b/target/linux/d1/patches-6.1/0069-ASoC-sun4i-spdif-Simplify-code-around-optional-reset.patch
index 0cd39d0b19..42d59bc92d 100644
--- a/target/linux/d1/patches-6.1/0069-ASoC-sun4i-spdif-Simplify-code-around-optional-reset.patch
+++ b/target/linux/d1/patches-6.1/0069-ASoC-sun4i-spdif-Simplify-code-around-optional-reset.patch
@@ -52,7 +52,7 @@ Signed-off-by: Samuel Holland <samuel at sholland.org>
  };
  
  static const struct of_device_id sun4i_spdif_of_match[] = {
-@@ -667,17 +662,12 @@ static int sun4i_spdif_probe(struct plat
+@@ -672,17 +667,12 @@ static int sun4i_spdif_probe(struct plat
  
  	platform_set_drvdata(pdev, host);
  
diff --git a/target/linux/d1/patches-6.1/0070-ASoC-sun4i-spdif-Add-support-for-separate-RX-TX-cloc.patch b/target/linux/d1/patches-6.1/0070-ASoC-sun4i-spdif-Add-support-for-separate-RX-TX-cloc.patch
index 99a198bd82..91262eca03 100644
--- a/target/linux/d1/patches-6.1/0070-ASoC-sun4i-spdif-Add-support-for-separate-RX-TX-cloc.patch
+++ b/target/linux/d1/patches-6.1/0070-ASoC-sun4i-spdif-Add-support-for-separate-RX-TX-cloc.patch
@@ -75,7 +75,7 @@ Signed-off-by: Samuel Holland <samuel at sholland.org>
  	.reg_dac_txdata = SUN8I_SPDIF_TXFIFO,
  	.val_fctl_ftx   = SUN50I_H6_SPDIF_FCTL_FTX,
  };
-@@ -586,7 +592,7 @@ static int sun4i_spdif_runtime_suspend(s
+@@ -591,7 +597,7 @@ static int sun4i_spdif_runtime_suspend(s
  {
  	struct sun4i_spdif_dev *host  = dev_get_drvdata(dev);
  
@@ -84,7 +84,7 @@ Signed-off-by: Samuel Holland <samuel at sholland.org>
  	clk_disable_unprepare(host->apb_clk);
  
  	return 0;
-@@ -597,12 +603,12 @@ static int sun4i_spdif_runtime_resume(st
+@@ -602,12 +608,12 @@ static int sun4i_spdif_runtime_resume(st
  	struct sun4i_spdif_dev *host  = dev_get_drvdata(dev);
  	int ret;
  
@@ -99,7 +99,7 @@ Signed-off-by: Samuel Holland <samuel at sholland.org>
  
  	return ret;
  }
-@@ -650,10 +656,10 @@ static int sun4i_spdif_probe(struct plat
+@@ -655,10 +661,10 @@ static int sun4i_spdif_probe(struct plat
  		return PTR_ERR(host->apb_clk);
  	}
  
diff --git a/target/linux/generic/backport-6.1/020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch b/target/linux/generic/backport-6.1/020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch
index faa7d1d9bf..67fe4f96ec 100644
--- a/target/linux/generic/backport-6.1/020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch
+++ b/target/linux/generic/backport-6.1/020-v6.3-10-UPSTREAM-mm-add-vma_has_recency.patch
@@ -87,7 +87,7 @@ Signed-off-by: T.J. Mercier <tjmercier at google.com>
  					mark_page_accessed(page);
  			}
  			rss[mm_counter(page)]--;
-@@ -5199,8 +5198,8 @@ static inline void mm_account_fault(stru
+@@ -5219,8 +5218,8 @@ static inline void mm_account_fault(stru
  #ifdef CONFIG_LRU_GEN
  static void lru_gen_enter_fault(struct vm_area_struct *vma)
  {
diff --git a/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index f753b590e7..59a5fb4d91 100644
--- a/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
 --- /dev/null
 +++ b/net/netfilter/xt_FLOWOFFLOAD.c
-@@ -0,0 +1,699 @@
+@@ -0,0 +1,702 @@
 +/*
 + * Copyright (C) 2018-2021 Felix Fietkau <nbd at nbd.name>
 + *
@@ -482,9 +482,14 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +		break;
 +	}
 +
++	if (!dst_hold_safe(this_dst))
++		return -ENOENT;
++
 +	nf_route(xt_net(par), &other_dst, &fl, false, xt_family(par));
-+	if (!other_dst)
++	if (!other_dst) {
++		dst_release(this_dst);
 +		return -ENOENT;
++	}
 +
 +	nf_default_forward_path(route, this_dst, dir, devs);
 +	nf_default_forward_path(route, other_dst, !dir, devs);
@@ -560,8 +565,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (!flow)
 +		goto err_flow_alloc;
 +
-+	if (flow_offload_route_init(flow, &route) < 0)
-+		goto err_flow_add;
++	flow_offload_route_init(flow, &route);
 +
 +	if (tcph) {
 +		ct->proto.tcp.seen[0].flags |= IP_CT_TCP_FLAG_BE_LIBERAL;
@@ -581,13 +585,12 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	xt_flowoffload_check_device(table, devs[0]);
 +	xt_flowoffload_check_device(table, devs[1]);
 +
-+	dst_release(route.tuple[!dir].dst);
-+
 +	return XT_CONTINUE;
 +
 +err_flow_add:
 +	flow_offload_free(flow);
 +err_flow_alloc:
++	dst_release(route.tuple[dir].dst);
 +	dst_release(route.tuple[!dir].dst);
 +err_flow_route:
 +	clear_bit(IPS_OFFLOAD_BIT, &ct->status);
@@ -746,7 +749,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <net/netfilter/nf_flow_table.h>
  #include <net/netfilter/nf_conntrack.h>
  #include <net/netfilter/nf_conntrack_core.h>
-@@ -381,8 +380,7 @@ flow_offload_lookup(struct nf_flowtable
+@@ -374,8 +373,7 @@ flow_offload_lookup(struct nf_flowtable
  }
  EXPORT_SYMBOL_GPL(flow_offload_lookup);
  
@@ -756,7 +759,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		      void (*iter)(struct nf_flowtable *flowtable,
  				   struct flow_offload *flow, void *data),
  		      void *data)
-@@ -443,6 +441,7 @@ static void nf_flow_offload_gc_step(stru
+@@ -436,6 +434,7 @@ static void nf_flow_offload_gc_step(stru
  		nf_flow_offload_stats(flow_table, flow);
  	}
  }
diff --git a/target/linux/generic/pending-6.1/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-6.1/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index a3897a9fd1..b335748705 100644
--- a/target/linux/generic/pending-6.1/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/pending-6.1/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
 
 --- a/net/netfilter/nf_flow_table_core.c
 +++ b/net/netfilter/nf_flow_table_core.c
-@@ -666,6 +666,23 @@ static struct pernet_operations nf_flow_
+@@ -659,6 +659,23 @@ static struct pernet_operations nf_flow_
  	.exit_batch = nf_flow_table_pernet_exit,
  };
  
@@ -34,7 +34,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  static int __init nf_flow_table_module_init(void)
  {
  	int ret;
-@@ -678,8 +695,14 @@ static int __init nf_flow_table_module_i
+@@ -671,8 +688,14 @@ static int __init nf_flow_table_module_i
  	if (ret)
  		goto out_offload;
  
@@ -49,7 +49,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  out_offload:
  	unregister_pernet_subsys(&nf_flow_table_net_ops);
  	return ret;
-@@ -687,6 +710,7 @@ out_offload:
+@@ -680,6 +703,7 @@ out_offload:
  
  static void __exit nf_flow_table_module_exit(void)
  {
@@ -59,7 +59,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  }
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -475,47 +475,14 @@ static struct nft_expr_type nft_flow_off
+@@ -479,47 +479,14 @@ static struct nft_expr_type nft_flow_off
  	.owner		= THIS_MODULE,
  };
  
diff --git a/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index db95e28af3..757c0b2449 100644
--- a/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7908,7 +7908,7 @@ static int nft_register_flowtable_net_ho
+@@ -7911,7 +7911,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);
diff --git a/target/linux/generic/pending-6.1/704-netfilter-nf_tables-fix-bidirectional-offload-regres.patch b/target/linux/generic/pending-6.1/704-netfilter-nf_tables-fix-bidirectional-offload-regres.patch
index 70724cb3a2..d1d6fa3fe1 100644
--- a/target/linux/generic/pending-6.1/704-netfilter-nf_tables-fix-bidirectional-offload-regres.patch
+++ b/target/linux/generic/pending-6.1/704-netfilter-nf_tables-fix-bidirectional-offload-regres.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -357,6 +357,7 @@ static void nft_flow_offload_eval(const
+@@ -361,6 +361,7 @@ static void nft_flow_offload_eval(const
  		ct->proto.tcp.seen[1].flags |= IP_CT_TCP_FLAG_BE_LIBERAL;
  	}
  
diff --git a/target/linux/generic/pending-6.1/721-net-phy-realtek-rtl8221-allow-to-configure-SERDES-mo.patch b/target/linux/generic/pending-6.1/721-net-phy-realtek-rtl8221-allow-to-configure-SERDES-mo.patch
index f29e690350..ed13b004e4 100644
--- a/target/linux/generic/pending-6.1/721-net-phy-realtek-rtl8221-allow-to-configure-SERDES-mo.patch
+++ b/target/linux/generic/pending-6.1/721-net-phy-realtek-rtl8221-allow-to-configure-SERDES-mo.patch
@@ -39,7 +39,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
  #define RTL8366RB_POWER_SAVE			0x15
  #define RTL8366RB_POWER_SAVE_ON			BIT(12)
  
-@@ -849,6 +858,48 @@ static irqreturn_t rtl9000a_handle_inter
+@@ -851,6 +860,48 @@ static irqreturn_t rtl9000a_handle_inter
  	return IRQ_HANDLED;
  }
  
@@ -88,7 +88,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
  static struct phy_driver realtek_drvs[] = {
  	{
  		PHY_ID_MATCH_EXACT(0x00008201),
-@@ -1001,6 +1052,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1003,6 +1054,7 @@ static struct phy_driver realtek_drvs[]
  		PHY_ID_MATCH_EXACT(0x001cc849),
  		.name           = "RTL8221B-VB-CG 2.5Gbps PHY",
  		.get_features   = rtl822x_get_features,
@@ -96,7 +96,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
  		.config_aneg    = rtl822x_config_aneg,
  		.read_status    = rtl822x_read_status,
  		.suspend        = genphy_suspend,
-@@ -1012,6 +1064,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1014,6 +1066,7 @@ static struct phy_driver realtek_drvs[]
  		.name           = "RTL8221B-VM-CG 2.5Gbps PHY",
  		.get_features   = rtl822x_get_features,
  		.config_aneg    = rtl822x_config_aneg,
diff --git a/target/linux/generic/pending-6.1/722-net-phy-realtek-support-switching-between-SGMII-and-.patch b/target/linux/generic/pending-6.1/722-net-phy-realtek-support-switching-between-SGMII-and-.patch
index b236c0816c..abe31e66af 100644
--- a/target/linux/generic/pending-6.1/722-net-phy-realtek-support-switching-between-SGMII-and-.patch
+++ b/target/linux/generic/pending-6.1/722-net-phy-realtek-support-switching-between-SGMII-and-.patch
@@ -16,7 +16,7 @@ Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -684,6 +684,25 @@ static int rtl822x_config_aneg(struct ph
+@@ -686,6 +686,25 @@ static int rtl822x_config_aneg(struct ph
  	return __genphy_config_aneg(phydev, ret);
  }
  
@@ -42,7 +42,7 @@ Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
  static int rtl822x_read_status(struct phy_device *phydev)
  {
  	int ret;
-@@ -702,11 +721,14 @@ static int rtl822x_read_status(struct ph
+@@ -704,11 +723,14 @@ static int rtl822x_read_status(struct ph
  			phydev->lp_advertising, lpadv & RTL_LPADV_2500FULL);
  	}
  
diff --git a/target/linux/generic/pending-6.1/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch b/target/linux/generic/pending-6.1/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
index cdc1817637..8e0e4b1fdd 100644
--- a/target/linux/generic/pending-6.1/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
+++ b/target/linux/generic/pending-6.1/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
@@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -1038,6 +1038,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1040,6 +1040,7 @@ static struct phy_driver realtek_drvs[]
  		.write_page	= rtl821x_write_page,
  		.read_mmd	= rtl822x_read_mmd,
  		.write_mmd	= rtl822x_write_mmd,
@@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc840),
  		.name		= "RTL8226B_RTL8221B 2.5Gbps PHY",
-@@ -1050,6 +1051,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1052,6 +1053,7 @@ static struct phy_driver realtek_drvs[]
  		.write_page	= rtl821x_write_page,
  		.read_mmd	= rtl822x_read_mmd,
  		.write_mmd	= rtl822x_write_mmd,
@@ -31,7 +31,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc838),
  		.name           = "RTL8226-CG 2.5Gbps PHY",
-@@ -1060,6 +1062,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1062,6 +1064,7 @@ static struct phy_driver realtek_drvs[]
  		.resume         = rtlgen_resume,
  		.read_page      = rtl821x_read_page,
  		.write_page     = rtl821x_write_page,
@@ -39,7 +39,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc848),
  		.name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
-@@ -1070,6 +1073,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1072,6 +1075,7 @@ static struct phy_driver realtek_drvs[]
  		.resume         = rtlgen_resume,
  		.read_page      = rtl821x_read_page,
  		.write_page     = rtl821x_write_page,
@@ -47,7 +47,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc849),
  		.name           = "RTL8221B-VB-CG 2.5Gbps PHY",
-@@ -1081,6 +1085,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1083,6 +1087,7 @@ static struct phy_driver realtek_drvs[]
  		.resume         = rtlgen_resume,
  		.read_page      = rtl821x_read_page,
  		.write_page     = rtl821x_write_page,
@@ -55,7 +55,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc84a),
  		.name           = "RTL8221B-VM-CG 2.5Gbps PHY",
-@@ -1092,6 +1097,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1094,6 +1099,7 @@ static struct phy_driver realtek_drvs[]
  		.resume         = rtlgen_resume,
  		.read_page      = rtl821x_read_page,
  		.write_page     = rtl821x_write_page,
diff --git a/target/linux/generic/pending-6.1/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch b/target/linux/generic/pending-6.1/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch
index d709a79099..babaa47aed 100644
--- a/target/linux/generic/pending-6.1/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch
+++ b/target/linux/generic/pending-6.1/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch
@@ -19,7 +19,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -883,6 +883,7 @@ static irqreturn_t rtl9000a_handle_inter
+@@ -885,6 +885,7 @@ static irqreturn_t rtl9000a_handle_inter
  static int rtl8221b_config_init(struct phy_device *phydev)
  {
  	u16 option_mode;
@@ -27,7 +27,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  	switch (phydev->interface) {
  	case PHY_INTERFACE_MODE_2500BASEX:
-@@ -919,6 +920,13 @@ static int rtl8221b_config_init(struct p
+@@ -921,6 +922,13 @@ static int rtl8221b_config_init(struct p
  		break;
  	}
  
diff --git a/target/linux/generic/pending-6.1/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch b/target/linux/generic/pending-6.1/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch
index 986e842e1c..6e338d9474 100644
--- a/target/linux/generic/pending-6.1/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch
+++ b/target/linux/generic/pending-6.1/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch
@@ -18,7 +18,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -735,9 +735,11 @@ static bool rtlgen_supports_2_5gbps(stru
+@@ -737,9 +737,11 @@ static bool rtlgen_supports_2_5gbps(stru
  {
  	int val;
  
diff --git a/target/linux/generic/pending-6.1/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch b/target/linux/generic/pending-6.1/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch
index 717ece0d5e..cafaefd3bf 100644
--- a/target/linux/generic/pending-6.1/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch
+++ b/target/linux/generic/pending-6.1/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch
@@ -25,7 +25,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  #define RTL9000A_GINMR				0x14
  #define RTL9000A_GINMR_LINK_STATUS		BIT(4)
-@@ -669,14 +665,11 @@ static int rtl822x_config_aneg(struct ph
+@@ -671,14 +667,11 @@ static int rtl822x_config_aneg(struct ph
  	int ret = 0;
  
  	if (phydev->autoneg == AUTONEG_ENABLE) {
@@ -44,7 +44,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		if (ret < 0)
  			return ret;
  	}
-@@ -713,12 +706,7 @@ static int rtl822x_read_status(struct ph
+@@ -715,12 +708,7 @@ static int rtl822x_read_status(struct ph
  		if (lpadv < 0)
  			return lpadv;
  
diff --git a/target/linux/generic/pending-6.1/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch b/target/linux/generic/pending-6.1/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch
index bae24a2ec9..8be1af6e50 100644
--- a/target/linux/generic/pending-6.1/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch
+++ b/target/linux/generic/pending-6.1/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch
@@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -706,6 +706,10 @@ static int rtl822x_read_status(struct ph
+@@ -708,6 +708,10 @@ static int rtl822x_read_status(struct ph
  		if (lpadv < 0)
  			return lpadv;
  
diff --git a/target/linux/generic/pending-6.1/729-net-phy-realtek-introduce-rtl822x_probe.patch b/target/linux/generic/pending-6.1/729-net-phy-realtek-introduce-rtl822x_probe.patch
index 2eca27310f..92e7a8742a 100644
--- a/target/linux/generic/pending-6.1/729-net-phy-realtek-introduce-rtl822x_probe.patch
+++ b/target/linux/generic/pending-6.1/729-net-phy-realtek-introduce-rtl822x_probe.patch
@@ -24,7 +24,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #define RTL8366RB_POWER_SAVE			0x15
  #define RTL8366RB_POWER_SAVE_ON			BIT(12)
  
-@@ -748,6 +752,25 @@ static int rtl8226_match_phy_device(stru
+@@ -750,6 +754,25 @@ static int rtl8226_match_phy_device(stru
  	       rtlgen_supports_2_5gbps(phydev);
  }
  
@@ -50,7 +50,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int rtlgen_resume(struct phy_device *phydev)
  {
  	int ret = genphy_resume(phydev);
-@@ -1059,6 +1082,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1061,6 +1084,7 @@ static struct phy_driver realtek_drvs[]
  		.name           = "RTL8226-CG 2.5Gbps PHY",
  		.get_features   = rtl822x_get_features,
  		.config_aneg    = rtl822x_config_aneg,
@@ -58,7 +58,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		.read_status    = rtl822x_read_status,
  		.suspend        = genphy_suspend,
  		.resume         = rtlgen_resume,
-@@ -1070,6 +1094,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1072,6 +1096,7 @@ static struct phy_driver realtek_drvs[]
  		.name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
  		.get_features   = rtl822x_get_features,
  		.config_aneg    = rtl822x_config_aneg,
@@ -66,7 +66,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		.read_status    = rtl822x_read_status,
  		.suspend        = genphy_suspend,
  		.resume         = rtlgen_resume,
-@@ -1082,6 +1107,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1084,6 +1109,7 @@ static struct phy_driver realtek_drvs[]
  		.get_features   = rtl822x_get_features,
  		.config_init    = rtl8221b_config_init,
  		.config_aneg    = rtl822x_config_aneg,
@@ -74,7 +74,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		.read_status    = rtl822x_read_status,
  		.suspend        = genphy_suspend,
  		.resume         = rtlgen_resume,
-@@ -1094,6 +1120,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1096,6 +1122,7 @@ static struct phy_driver realtek_drvs[]
  		.get_features   = rtl822x_get_features,
  		.config_aneg    = rtl822x_config_aneg,
  		.config_init    = rtl8221b_config_init,
diff --git a/target/linux/generic/pending-6.1/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch b/target/linux/generic/pending-6.1/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
index 97e128ccdb..f5987109f6 100644
--- a/target/linux/generic/pending-6.1/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
+++ b/target/linux/generic/pending-6.1/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -752,6 +752,38 @@ static int rtl8226_match_phy_device(stru
+@@ -754,6 +754,38 @@ static int rtl8226_match_phy_device(stru
  	       rtlgen_supports_2_5gbps(phydev);
  }
  
@@ -52,7 +52,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int rtl822x_probe(struct phy_device *phydev)
  {
  	struct device *dev = &phydev->mdio.dev;
-@@ -1102,7 +1134,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1104,7 +1136,7 @@ static struct phy_driver realtek_drvs[]
  		.write_page     = rtl821x_write_page,
  		.soft_reset     = genphy_soft_reset,
  	}, {
diff --git a/target/linux/generic/pending-6.1/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch b/target/linux/generic/pending-6.1/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
index 55a9e3529d..51cd98c883 100644
--- a/target/linux/generic/pending-6.1/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
+++ b/target/linux/generic/pending-6.1/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -979,6 +979,51 @@ static int rtl8221b_config_init(struct p
+@@ -981,6 +981,51 @@ static int rtl8221b_config_init(struct p
  	return 0;
  }
  
@@ -52,7 +52,7 @@
  static struct phy_driver realtek_drvs[] = {
  	{
  		PHY_ID_MATCH_EXACT(0x00008201),
-@@ -1139,6 +1184,8 @@ static struct phy_driver realtek_drvs[]
+@@ -1141,6 +1186,8 @@ static struct phy_driver realtek_drvs[]
  		.get_features   = rtl822x_get_features,
  		.config_init    = rtl8221b_config_init,
  		.config_aneg    = rtl822x_config_aneg,
diff --git a/target/linux/generic/pending-6.1/834-ledtrig-libata.patch b/target/linux/generic/pending-6.1/834-ledtrig-libata.patch
index 930610c7e5..050c3515f6 100644
--- a/target/linux/generic/pending-6.1/834-ledtrig-libata.patch
+++ b/target/linux/generic/pending-6.1/834-ledtrig-libata.patch
@@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  /**
   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
   *	@qc: Metadata associated with the taskfile to build
-@@ -4712,6 +4725,9 @@ void __ata_qc_complete(struct ata_queued
+@@ -4716,6 +4729,9 @@ void __ata_qc_complete(struct ata_queued
  		link->active_tag = ATA_TAG_POISON;
  		ap->nr_active_links--;
  	}
@@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  	/* clear exclusive status */
  	if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL &&
-@@ -5434,6 +5450,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5438,6 +5454,9 @@ struct ata_port *ata_port_alloc(struct a
  	ap->stats.unhandled_irq = 1;
  	ap->stats.idle_irq = 1;
  #endif
@@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -5469,6 +5488,12 @@ static void ata_host_release(struct kref
+@@ -5473,6 +5492,12 @@ static void ata_host_release(struct kref
  
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
@@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		kfree(ap);
  		host->ports[i] = NULL;
  	}
-@@ -5871,7 +5896,23 @@ int ata_host_register(struct ata_host *h
+@@ -5875,7 +5900,23 @@ int ata_host_register(struct ata_host *h
  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
  		host->ports[i]->local_port_no = i + 1;
  	}



From lede-commits at lists.infradead.org  Tue Mar  5 00:08:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 05 Mar 2024 03:08:25 -0500
Subject: [openwrt/openwrt]  qualcommax: ipq60xx: add support for netgear
 wax214
In-Reply-To: <170962610421.3777969.7876774203484424986@git-01.infra.openwrt.org>
References: <170962610421.3777969.7876774203484424986@git-01.infra.openwrt.org>
Message-ID: <mailman.13161.1709626114.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/93610492b634c94e882dc048fde23d67a056ea1a

commit 93610492b634c94e882dc048fde23d67a056ea1a
Author: Dirk Buchwalder <buchwalder at posteo.de>
AuthorDate: Sun Mar 3 16:00:46 2024 +0100

    qualcommax: ipq60xx: add support for netgear wax214
    
        Netgear WAX214 is a 802.11 ax dual-band AP
        with PoE. (similar to Engenius EWS357APV3)
    
        Specifications:
    
            ?     CPU: Qualcomm IPQ6010 Quad core Cortex-A53
            ?     RAM: 512MB of DDR3
            ?     Storage: 128MB NAND (Macronix MX30UF1G18AC)
            ?     Ethernet: 1x 1G RJ45 port (QCA8072) PoE
            ?     WIFI:
                  2.4GHz: Qualcomm QCN5022 2x2 802.11b/g/n/ax 574 Mbps PHY rate
                  5GHz: Qualcomm QCN5052 2x2 802.11a/b/g/n/ac/ax 1201 PHY rate
    
            ?     LEDs:
                  4 x GPIO-controlled LEDs
                    - 1 Power LED (orange)
                    - 1 LAN LED (blue)
                    - 1 WIFI 5g LED (blue)
                    - 1 WIFI 2g LED (blue)
                    black_small_square  Buttons: 1x soft reset
                    black_small_square  Power: 12V DC jack or PoE (802.3af )
    
                An populated serial header is onboard, format is
                 1.25mm 4p (DF13A-4P-1.25H)
                RX/TX is working, bootwait is active, secure boot is not
                enabled.
    
                The root password of the stock firmware is unknown,
                but failsafe mode can be entered to reset the password.
    
                Installation Instructions:
    
                    - obtain serial access
                    - stop auto boot (press "4", Entr boot command line
                      interface)
                    - setenv active_fw 0 (to boot from the primary rootfs,
                      or set to 1 to boot from the secondary rootfs
                      partition)
                    - saveenv
    
                    - tftpboot the initramfs image
                    - bootm
    
                    - copy
                      openwrt-qualcommax-ipq60xx-netgear_wax214-squashfs-factory.ubi
                      to the device
                    - write the image to the NAND:
                       - cat /proc/mtd and look for rootfs partition (should
                         be mtd11,
                         or mtd12 if you choose active_fw 1)
                       - ubiformat /dev/mtd11 -f -y
                         openwrt-qualcommax-ipq60xx-netgear_wax214-squashfs-factory.ubi
                    - reboot
    
                Note: the firmware is senao-based. But I was unable to build
                      a valid senao-header into the image.
                      Maybe they changed the header format and senaoFW isn't
                      working any more.
    
    Signed-off-by: Dirk Buchwalder <buchwalder at posteo.de>
---
 .../boot/uboot-envtools/files/qualcommax_ipq60xx   |   5 +
 package/firmware/ipq-wifi/Makefile                 |   2 +
 .../arch/arm64/boot/dts/qcom/ipq6010-wax214.dts    | 172 +++++++++++++++++++++
 target/linux/qualcommax/image/ipq60xx.mk           |  13 ++
 .../ipq60xx/base-files/etc/board.d/02_network      |   3 +
 .../etc/hotplug.d/firmware/11-ath11-caldata        |   3 +
 .../ipq60xx/base-files/lib/upgrade/platform.sh     |   3 +
 7 files changed, 201 insertions(+)

diff --git a/package/boot/uboot-envtools/files/qualcommax_ipq60xx b/package/boot/uboot-envtools/files/qualcommax_ipq60xx
index df19a30335..33cb94f99d 100644
--- a/package/boot/uboot-envtools/files/qualcommax_ipq60xx
+++ b/package/boot/uboot-envtools/files/qualcommax_ipq60xx
@@ -14,6 +14,11 @@ case "$board" in
 	[ -n "$idx" ] && \
 		ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000"
 	;;
+netgear,wax214)
+	idx="$(find_mtd_index 0:appsblenv)"
+	[ -n "$idx" ] && \
+		ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x40000" "0x20000" "2"
+	;;
 esac
 
 config_load ubootenv
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index 959e7e4b10..b6c1a34bde 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -40,6 +40,7 @@ ALLWIFIBOARDS:= \
 	linksys_mx5300 \
 	netgear_lbr20 \
 	netgear_rax120v2 \
+	netgear_wax214 \
 	netgear_wax218 \
 	netgear_wax620 \
 	netgear_wax630 \
@@ -157,6 +158,7 @@ $(eval $(call generate-ipq-wifi-package,linksys_mx4200,Linksys MX4200))
 $(eval $(call generate-ipq-wifi-package,linksys_mx5300,Linksys MX5300))
 $(eval $(call generate-ipq-wifi-package,netgear_lbr20,Netgear LBR20))
 $(eval $(call generate-ipq-wifi-package,netgear_rax120v2,Netgear RAX120v2))
+$(eval $(call generate-ipq-wifi-package,netgear_wax214,Netgear WAX214))
 $(eval $(call generate-ipq-wifi-package,netgear_wax218,Netgear WAX218))
 $(eval $(call generate-ipq-wifi-package,netgear_wax620,Netgear WAX620))
 $(eval $(call generate-ipq-wifi-package,netgear_wax630,Netgear WAX630))
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax214.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax214.dts
new file mode 100644
index 0000000000..90a4828c17
--- /dev/null
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax214.dts
@@ -0,0 +1,172 @@
+// SPDX-License-Identifier: (GPL-2.0+)
+
+/dts-v1/;
+
+#include "ipq6018.dtsi"
+#include "ipq6018-cp-cpu.dtsi"
+#include "ipq6018-ess.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	model = "Netgear WAX214";
+	compatible = "netgear,wax214", "qcom,ipq6018";
+
+	aliases {
+		serial0 = &blsp1_uart3;
+		ethernet0 = &dp3;
+		label-mac-device = &dp3;
+		led-boot = &pwr;
+		led-failsafe = &pwr;
+		led-running = &pwr;
+		led-upgrade = &pwr;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+		bootargs-append = " root=/dev/ubiblock0_1";
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		pwr: pwr {
+			color = <LED_COLOR_ID_ORANGE>;
+			function = LED_FUNCTION_POWER;
+			gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>;
+		};
+
+		lan  {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_LAN;
+			gpios = <&tlmm 29 GPIO_ACTIVE_HIGH>;
+		};
+
+		wlan2g  {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <0>;
+			gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "phy0radio";
+		};
+
+		wlan5g  {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <1>;
+			gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "phy1radio";
+		};
+	};
+};
+
+&blsp1_uart3 {
+	pinctrl-0 = <&serial_3_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&tlmm {
+	mdio_pins: mdio-pins {
+		mdc {
+			pins = "gpio64";
+			function = "mdc";
+			drive-strength = <8>;
+			bias-pull-up;
+		};
+
+		mdio {
+			pins = "gpio65";
+			function = "mdio";
+			drive-strength = <8>;
+			bias-pull-up;
+		};
+	};
+};
+
+&dp3 {
+	status = "okay";
+
+	phy-handle = <&qca8072_4>;
+	label = "lan";
+};
+
+&edma {
+	status = "okay";
+};
+
+&mdio {
+	status = "okay";
+	pinctrl-0 = <&mdio_pins>;
+	pinctrl-names = "default";
+	reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>;
+	reset-delay-us = <10000>;
+	reset-post-delay-us = <50000>;
+
+	ethernet-phy-package at 0 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "qcom,qca8075-package";
+		reg = <0>;
+
+		qcom,package-mode = "psgmii";
+
+		qca8072_4: ethernet-phy at 4 {
+			compatible = "ethernet-phy-ieee802.3-c22";
+			reg = <4>;
+		};
+	};
+};
+
+&switch {
+	status = "okay";
+
+	switch_lan_bmp = <ESS_PORT3>;
+	switch_mac_mode = <MAC_MODE_PSGMII>;
+	port3_pcs_channel = <4>;
+
+	qcom,port_phyinfo {
+		port at 3 {
+			port_id = <3>;
+			phy_address = <4>;
+		};
+	};
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&qpic_nand {
+	status = "okay";
+
+	nand at 0 {
+		reg = <0>;
+
+		nand-ecc-strength = <4>;
+		nand-ecc-step-size = <512>;
+		nand-bus-width = <8>;
+
+		partitions {
+			compatible = "qcom,smem-part";
+		};
+	};
+};
+
+
+&wifi {
+	status = "okay";
+	qcom,ath11k-fw-memory-mode = <1>;
+	qcom,ath11k-calibration-variant = "Netgear-WAX214";
+};
\ No newline at end of file
diff --git a/target/linux/qualcommax/image/ipq60xx.mk b/target/linux/qualcommax/image/ipq60xx.mk
index 00dead93ad..a7851e3dc5 100644
--- a/target/linux/qualcommax/image/ipq60xx.mk
+++ b/target/linux/qualcommax/image/ipq60xx.mk
@@ -10,3 +10,16 @@ define Device/8devices_mango-dvk
 	DEVICE_PACKAGES := ipq-wifi-8devices_mango
 endef
 TARGET_DEVICES += 8devices_mango-dvk
+
+define Device/netgear_wax214
+       $(call Device/FitImage)
+       $(call Device/UbiFit)
+       DEVICE_VENDOR := Netgear
+       DEVICE_MODEL := WAX214
+       BLOCKSIZE := 128k
+       PAGESIZE := 2048
+       DEVICE_DTS_CONFIG := config at cp03-c1
+       SOC := ipq6010
+       DEVICE_PACKAGES := ipq-wifi-netgear_wax214
+endef
+TARGET_DEVICES += netgear_wax214
diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network
index 081d894e1e..aaa2522c92 100644
--- a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network
+++ b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network
@@ -14,6 +14,9 @@ ipq60xx_setup_interfaces()
 	8devices,mango-dvk)
 		ucidef_set_interfaces_lan_wan "lan1 lan2" "wan"
 		;;
+	netgear,wax214)
+		ucidef_set_interfaces_lan_wan "lan"
+		;;
 	*)
 		echo "Unsupported hardware. Network interfaces not initialized"
 		;;
diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11-caldata b/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11-caldata
index c14722c799..89d4c265ab 100644
--- a/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11-caldata
+++ b/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11-caldata
@@ -12,6 +12,9 @@ case "$FIRMWARE" in
 	8devices,mango-dvk)
 		caldata_extract "0:ART" 0x1000 0x20000
 		;;
+	netgear,wax214)
+		caldata_extract "0:art" 0x1000 0x10000
+		;;
 	esac
 	;;
 *)
diff --git a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh
index 3d3c17b3b9..4008cb0224 100644
--- a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh
@@ -10,6 +10,9 @@ platform_check_image() {
 
 platform_do_upgrade() {
 	case "$(board_name)" in
+	netgear,wax214)
+		nand_do_upgrade "$1"
+		;;
 	*)
 		default_do_upgrade "$1"
 		;;



From lede-commits at lists.infradead.org  Tue Mar  5 00:08:24 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 05 Mar 2024 03:08:24 -0500
Subject: [openwrt/openwrt]  ipq-wifi: update to version 2024-03-04
In-Reply-To: <170962610421.3777969.7876774203484424986@git-01.infra.openwrt.org>
References: <170962610421.3777969.7876774203484424986@git-01.infra.openwrt.org>
Message-ID: <mailman.13162.1709626116.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e8a2fd241d270097b938cae4d11c7d2fd43561d8

commit e8a2fd241d270097b938cae4d11c7d2fd43561d8
Author: Dirk Buchwalder <buchwalder at posteo.de>
AuthorDate: Mon Mar 4 21:33:32 2024 +0100

    ipq-wifi: update to version 2024-03-04
    
    The new version adds support for the Netgear WAX214.
    
    Signed-off-by: Dirk Buchwalder <buchwalder at posteo.de>
---
 package/firmware/ipq-wifi/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index 0da6b58b2c..959e7e4b10 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -6,9 +6,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git
-PKG_SOURCE_DATE:=2024-02-25
-PKG_SOURCE_VERSION:=fc30aeeb8ec5d069710a446f4eb5e30fc26145c1
-PKG_MIRROR_HASH:=7fe83e3f36541444e0385a56fa8a048772d0531e16787cc10bce29775c7db235
+PKG_SOURCE_DATE:=2024-03-04
+PKG_SOURCE_VERSION:=38c02ae4302f9cb73f6914574239fe84799caa84
+PKG_MIRROR_HASH:=0f6a2dea8466ea0e8df3262bff643d60b1725f2218589c41d9f87fb37843c362
 
 PKG_FLAGS:=nonshared
 



From lede-commits at lists.infradead.org  Tue Mar  5 12:36:38 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 05 Mar 2024 15:36:38 -0500
Subject: [openwrt/openwrt]  kernel: crypto: package SHA3
In-Reply-To: <170967099808.1395435.13923280617832894660@git-01.infra.openwrt.org>
References: <170967099808.1395435.13923280617832894660@git-01.infra.openwrt.org>
Message-ID: <mailman.13599.1709671005.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/3e6f64d443f476a6e936de4f36f22db51fc1340f

commit 3e6f64d443f476a6e936de4f36f22db51fc1340f
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 5 20:15:55 2024 +0100

    kernel: crypto: package SHA3
    
    SHA3 is now required by jitterentropy_rng in kernel 6.6, so lets start
    preparing by packaging SHA3 support as its supported in 5.15 and 6.1
    kernels as well.
    
    AFAIK, only ARMv8.2 has a crypto extension for SHA3, however I am not aware
    of any SoC we support that uses ARMv8.2 ISA so its not enabled currently.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index dd17d868fa..84c4668b97 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -958,6 +958,18 @@ endif
 $(eval $(call KernelPackage,crypto-sha1))
 
 
+define KernelPackage/crypto-sha3
+  TITLE:=SHA3 digest CryptoAPI module
+  DEPENDS:=+kmod-crypto-hash
+  KCONFIG:= CONFIG_CRYPTO_SHA3
+  FILES:=$(LINUX_DIR)/crypto/sha3_generic.ko
+  AUTOLOAD:=$(call AutoLoad,09,sha3_generic)
+  $(call AddDepends/crypto)
+endef
+
+$(eval $(call KernelPackage,crypto-sha3))
+
+
 define KernelPackage/crypto-sha256
   TITLE:=SHA224 SHA256 digest CryptoAPI module
   DEPENDS:=+kmod-crypto-hash



From lede-commits at lists.infradead.org  Wed Mar  6 00:46:20 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 06 Mar 2024 03:46:20 -0500
Subject: [openwrt/openwrt]  kernel: qca-ssdk: refresh PCS patch
In-Reply-To: <170971478086.3653066.6599017434500074075@git-01.infra.openwrt.org>
References: <170971478086.3653066.6599017434500074075@git-01.infra.openwrt.org>
Message-ID: <mailman.13739.1709714786.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fdb563c1a55ea15c6dcd3da75315297db8010e6b

commit fdb563c1a55ea15c6dcd3da75315297db8010e6b
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Feb 29 22:18:20 2024 +0100

    kernel: qca-ssdk: refresh PCS patch
    
    Recently added PCS patch requires a refresh, so lets do it.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 ...pport-selecting-PCS-channel-for-PORT3-on-.patch | 25 ++++++----------------
 1 file changed, 7 insertions(+), 18 deletions(-)

diff --git a/package/kernel/qca-ssdk/patches/102-qca-ssdk-support-selecting-PCS-channel-for-PORT3-on-.patch b/package/kernel/qca-ssdk/patches/102-qca-ssdk-support-selecting-PCS-channel-for-PORT3-on-.patch
index a8863bf463..5e390d8ee3 100644
--- a/package/kernel/qca-ssdk/patches/102-qca-ssdk-support-selecting-PCS-channel-for-PORT3-on-.patch
+++ b/package/kernel/qca-ssdk/patches/102-qca-ssdk-support-selecting-PCS-channel-for-PORT3-on-.patch
@@ -22,8 +22,6 @@ Signed-off-by: Mantas Pucka <mantas at 8devices.com>
  src/init/ssdk_dts.c                | 27 +++++++++++++++++++++++++++
  4 files changed, 32 insertions(+), 8 deletions(-)
 
-diff --git a/include/init/ssdk_dts.h b/include/init/ssdk_dts.h
-index 00fa4c1..210c788 100755
 --- a/include/init/ssdk_dts.h
 +++ b/include/init/ssdk_dts.h
 @@ -101,6 +101,7 @@ typedef struct
@@ -34,7 +32,7 @@ index 00fa4c1..210c788 100755
  } ssdk_dt_cfg;
  
  #define SSDK_MAX_NR_ETH 6
-@@ -163,6 +164,7 @@ a_uint32_t ssdk_device_id_get(a_uint32_t index);
+@@ -162,6 +163,7 @@ a_uint32_t ssdk_device_id_get(a_uint32_t
  struct device_node *ssdk_dts_node_get(a_uint32_t dev_id);
  struct clk *ssdk_dts_essclk_get(a_uint32_t dev_id);
  struct clk *ssdk_dts_cmnclk_get(a_uint32_t dev_id);
@@ -42,8 +40,6 @@ index 00fa4c1..210c788 100755
  
  int ssdk_switch_device_num_init(void);
  void ssdk_switch_device_num_exit(void);
-diff --git a/src/adpt/cppe/adpt_cppe_portctrl.c b/src/adpt/cppe/adpt_cppe_portctrl.c
-index 00d0404..6b32f79 100755
 --- a/src/adpt/cppe/adpt_cppe_portctrl.c
 +++ b/src/adpt/cppe/adpt_cppe_portctrl.c
 @@ -33,6 +33,7 @@
@@ -54,7 +50,7 @@ index 00d0404..6b32f79 100755
  #include "adpt.h"
  #include "adpt_hppe.h"
  #include "adpt_cppe_portctrl.h"
-@@ -60,8 +61,7 @@ _adpt_cppe_port_mux_mac_set(a_uint32_t dev_id, fal_port_t port_id,
+@@ -60,8 +61,7 @@ _adpt_cppe_port_mux_mac_set(a_uint32_t d
  		case SSDK_PHYSICAL_PORT3:
  		case SSDK_PHYSICAL_PORT4:
  			if (mode0 == PORT_WRAPPER_PSGMII) {
@@ -64,11 +60,9 @@ index 00d0404..6b32f79 100755
  					cppe_port_mux_ctrl.bf.port3_pcs_sel =
  						CPPE_PORT3_PCS_SEL_PCS0_CHANNEL4;
  					cppe_port_mux_ctrl.bf.port4_pcs_sel =
-diff --git a/src/adpt/hppe/adpt_hppe_uniphy.c b/src/adpt/hppe/adpt_hppe_uniphy.c
-index 5e36602..bad1eab 100644
 --- a/src/adpt/hppe/adpt_hppe_uniphy.c
 +++ b/src/adpt/hppe/adpt_hppe_uniphy.c
-@@ -1122,9 +1122,6 @@ __adpt_hppe_uniphy_psgmii_mode_set(a_uint32_t dev_id, a_uint32_t uniphy_index)
+@@ -1122,9 +1122,6 @@ __adpt_hppe_uniphy_psgmii_mode_set(a_uin
  {
  	a_uint32_t i;
  	sw_error_t rv = SW_OK;
@@ -78,7 +72,7 @@ index 5e36602..bad1eab 100644
  
  	union uniphy_mode_ctrl_u uniphy_mode_ctrl;
  
-@@ -1134,9 +1131,7 @@ __adpt_hppe_uniphy_psgmii_mode_set(a_uint32_t dev_id, a_uint32_t uniphy_index)
+@@ -1134,9 +1131,7 @@ __adpt_hppe_uniphy_psgmii_mode_set(a_uin
  	SSDK_DEBUG("uniphy %d is psgmii mode\n", uniphy_index);
  #if defined(CPPE)
  	if (adpt_ppe_type_get(dev_id) == CPPE_TYPE) {
@@ -89,11 +83,9 @@ index 5e36602..bad1eab 100644
  			SSDK_INFO("cypress uniphy %d is qca8072 psgmii mode\n", uniphy_index);
  			rv = __adpt_cppe_uniphy_mode_set(dev_id, uniphy_index,
  				PORT_WRAPPER_PSGMII);
-diff --git a/src/init/ssdk_dts.c b/src/init/ssdk_dts.c
-index 686b6d2..70b0a09 100644
 --- a/src/init/ssdk_dts.c
 +++ b/src/init/ssdk_dts.c
-@@ -279,6 +279,13 @@ struct clk *ssdk_dts_cmnclk_get(a_uint32_t dev_id)
+@@ -272,6 +272,13 @@ struct clk *ssdk_dts_cmnclk_get(a_uint32
  	return cfg->cmnblk_clk;
  }
  
@@ -107,7 +99,7 @@ index 686b6d2..70b0a09 100644
  #ifndef BOARD_AR71XX
  #if defined(CONFIG_OF) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
  static void ssdk_dt_parse_mac_mode(a_uint32_t dev_id,
-@@ -313,6 +320,25 @@ static void ssdk_dt_parse_mac_mode(a_uint32_t dev_id,
+@@ -306,6 +313,25 @@ static void ssdk_dt_parse_mac_mode(a_uin
  
  	return;
  }
@@ -133,7 +125,7 @@ index 686b6d2..70b0a09 100644
  #ifdef IN_UNIPHY
  static void ssdk_dt_parse_uniphy(a_uint32_t dev_id)
  {
-@@ -1307,6 +1333,7 @@ sw_error_t ssdk_dt_parse(ssdk_init_cfg *cfg, a_uint32_t num, a_uint32_t *dev_id)
+@@ -1292,6 +1318,7 @@ sw_error_t ssdk_dt_parse(ssdk_init_cfg *
  	rv = ssdk_dt_parse_access_mode(switch_node, ssdk_dt_priv);
  	SW_RTN_ON_ERROR(rv);
  	ssdk_dt_parse_mac_mode(*dev_id, switch_node, cfg);
@@ -141,6 +133,3 @@ index 686b6d2..70b0a09 100644
  	ssdk_dt_parse_mdio(*dev_id, switch_node, cfg);
  	ssdk_dt_parse_port_bmp(*dev_id, switch_node, cfg);
  	ssdk_dt_parse_interrupt(*dev_id, switch_node);
--- 
-2.7.4
-



From lede-commits at lists.infradead.org  Wed Mar  6 01:17:56 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 06 Mar 2024 04:17:56 -0500
Subject: [openwrt/openwrt]  cryptodev-linux: update to 1.13
In-Reply-To: <170971667649.3734693.9363884113459460993@git-01.infra.openwrt.org>
References: <170971667649.3734693.9363884113459460993@git-01.infra.openwrt.org>
Message-ID: <mailman.13744.1709716691.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d40d64fc62f51a83b48a6c21b68d8a00e83c72c3

commit d40d64fc62f51a83b48a6c21b68d8a00e83c72c3
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sun Jan 7 13:42:00 2024 +0800

    cryptodev-linux: update to 1.13
    
    Update to 1.13 with upstream backports.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/cryptodev-linux/Makefile            |  4 +-
 ...yptodev_verbosity-fix-build-for-linux-6.4.patch | 41 +++++++++++++++
 .../0001-zero-copy-fix-build-for-linux-6.4.patch   | 34 ++++++++++++
 ...nt-linux-version-ifdefs-from-v6.4-to-v6.5.patch | 60 ++++++++++++++++++++++
 .../patches/0004-fix-build-for-linux-6.7-rc1.patch | 35 +++++++++++++
 5 files changed, 172 insertions(+), 2 deletions(-)

diff --git a/package/kernel/cryptodev-linux/Makefile b/package/kernel/cryptodev-linux/Makefile
index 0c1f63a605..0b794a3cd9 100644
--- a/package/kernel/cryptodev-linux/Makefile
+++ b/package/kernel/cryptodev-linux/Makefile
@@ -10,12 +10,12 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=cryptodev-linux
-PKG_VERSION:=1.12
+PKG_VERSION:=1.13
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=https://codeload.github.com/$(PKG_NAME)/$(PKG_NAME)/tar.gz/$(PKG_NAME)-$(PKG_VERSION)?
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=f51c2254749233b1b1d7ec9445158bd709f124f88e1c650fe2faac83c3a81938
+PKG_HASH:=33b7915c46eb39a37110e88c681423c0dd0df25d784b6e1475ac3196367f0db5
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
 
diff --git a/package/kernel/cryptodev-linux/patches/0001-cryptodev_verbosity-fix-build-for-linux-6.4.patch b/package/kernel/cryptodev-linux/patches/0001-cryptodev_verbosity-fix-build-for-linux-6.4.patch
new file mode 100644
index 0000000000..390faec9c2
--- /dev/null
+++ b/package/kernel/cryptodev-linux/patches/0001-cryptodev_verbosity-fix-build-for-linux-6.4.patch
@@ -0,0 +1,41 @@
+From 99ae2a39ddc3f89c66d9f09783b591c0f2dbf2e9 Mon Sep 17 00:00:00 2001
+From: Gaurav Jain <gaurav.jain at nxp.com>
+Date: Wed, 28 Jun 2023 12:44:32 +0530
+Subject: [PATCH] cryptodev_verbosity: Fix build for Linux 6.4
+
+register_sysctl_table api is removed in kernel.
+migrate to the new api register_sysctl.
+
+child is also removed in linux 6.4 ctl_table struct.
+
+Signed-off-by: Gaurav Jain <gaurav.jain at nxp.com>
+---
+ ioctl.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/ioctl.c b/ioctl.c
+index 8f241b86..4262bbd5 100644
+--- a/ioctl.c
++++ b/ioctl.c
+@@ -1246,7 +1246,9 @@ static struct ctl_table verbosity_ctl_root[] = {
+ 	{
+ 		.procname       = "ioctl",
+ 		.mode           = 0555,
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0))
+ 		.child          = verbosity_ctl_dir,
++#endif
+ 	},
+ 	{},
+ };
+@@ -1267,7 +1269,11 @@ static int __init init_cryptodev(void)
+ 		return rc;
+ 	}
+ 
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0))
+ 	verbosity_sysctl_header = register_sysctl_table(verbosity_ctl_root);
++#else
++	verbosity_sysctl_header = register_sysctl(verbosity_ctl_root->procname, verbosity_ctl_dir);
++#endif
+ 
+ 	pr_info(PFX "driver %s loaded.\n", VERSION);
+ 
diff --git a/package/kernel/cryptodev-linux/patches/0001-zero-copy-fix-build-for-linux-6.4.patch b/package/kernel/cryptodev-linux/patches/0001-zero-copy-fix-build-for-linux-6.4.patch
new file mode 100644
index 0000000000..0b8147d56e
--- /dev/null
+++ b/package/kernel/cryptodev-linux/patches/0001-zero-copy-fix-build-for-linux-6.4.patch
@@ -0,0 +1,34 @@
+From 592017c3a910a3905b1925aee88c4674e9a596b7 Mon Sep 17 00:00:00 2001
+From: Gaurav Jain <gaurav.jain at nxp.com>
+Date: Tue, 30 May 2023 17:09:42 +0530
+Subject: [PATCH] zero copy: Fix build for Linux 6.4
+
+get_user_pages_remote api prototype is changed in kernel.
+struct vm_area_struct **vmas argument is removed.
+Migrate to the new API.
+
+Signed-off-by: Gaurav Jain <gaurav.jain at nxp.com>
+---
+ zc.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/zc.c b/zc.c
+index fdf7da17..6637945a 100644
+--- a/zc.c
++++ b/zc.c
+@@ -80,10 +80,14 @@ int __get_userbuf(uint8_t __user *addr, uint32_t len, int write,
+ 	ret = get_user_pages_remote(task, mm,
+ 			(unsigned long)addr, pgcount, write ? FOLL_WRITE : 0,
+ 			pg, NULL, NULL);
+-#else
++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0))
+ 	ret = get_user_pages_remote(mm,
+ 			(unsigned long)addr, pgcount, write ? FOLL_WRITE : 0,
+ 			pg, NULL, NULL);
++#else
++	ret = get_user_pages_remote(mm,
++			(unsigned long)addr, pgcount, write ? FOLL_WRITE : 0,
++			pg, NULL);
+ #endif
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0))
+ 	up_read(&mm->mmap_sem);
diff --git a/package/kernel/cryptodev-linux/patches/0003-move-recent-linux-version-ifdefs-from-v6.4-to-v6.5.patch b/package/kernel/cryptodev-linux/patches/0003-move-recent-linux-version-ifdefs-from-v6.4-to-v6.5.patch
new file mode 100644
index 0000000000..baf5b805cd
--- /dev/null
+++ b/package/kernel/cryptodev-linux/patches/0003-move-recent-linux-version-ifdefs-from-v6.4-to-v6.5.patch
@@ -0,0 +1,60 @@
+From bb8bc7cf60d2c0b097c8b3b0e807f805b577a53f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram at gmail.com>
+Date: Mon, 3 Jul 2023 00:46:02 +0000
+Subject: [PATCH] Move recent Linux version #ifdefs from v6.4 to v6.5
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The latest commits, meant to fix the build on Linux 6.4, are actually
+fixing the build for API changes introduced in the merge window of the
+yet-unreleased Linux 6.5, and actually break the build for Linux 6.4.
+
+In particular, the upstream commits introducing the API changes are the
+following, which are *not* included in the Linux v6.4 tag:
+* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=19c4e618a1bc3d0cad1f04c857be8076cb05bbb2
+* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ca5e863233e8f6acd1792fd85d6bc2729a1b2c10
+
+Change to #ifdef's to v6.5, where they will most likely be included.
+
+Signed-off-by: Joan Bruguera Mic? <joanbrugueram at gmail.com>
+---
+ ioctl.c | 4 ++--
+ zc.c    | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ioctl.c b/ioctl.c
+index 4262bbd..e3eefe1 100644
+--- a/ioctl.c
++++ b/ioctl.c
+@@ -1246,7 +1246,7 @@ static struct ctl_table verbosity_ctl_root[] = {
+ 	{
+ 		.procname       = "ioctl",
+ 		.mode           = 0555,
+-#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0))
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 5, 0))
+ 		.child          = verbosity_ctl_dir,
+ #endif
+ 	},
+@@ -1269,7 +1269,7 @@ static int __init init_cryptodev(void)
+ 		return rc;
+ 	}
+ 
+-#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0))
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 5, 0))
+ 	verbosity_sysctl_header = register_sysctl_table(verbosity_ctl_root);
+ #else
+ 	verbosity_sysctl_header = register_sysctl(verbosity_ctl_root->procname, verbosity_ctl_dir);
+diff --git a/zc.c b/zc.c
+index 6637945..00e00c1 100644
+--- a/zc.c
++++ b/zc.c
+@@ -80,7 +80,7 @@ int __get_userbuf(uint8_t __user *addr, uint32_t len, int write,
+ 	ret = get_user_pages_remote(task, mm,
+ 			(unsigned long)addr, pgcount, write ? FOLL_WRITE : 0,
+ 			pg, NULL, NULL);
+-#elif (LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0))
++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(6, 5, 0))
+ 	ret = get_user_pages_remote(mm,
+ 			(unsigned long)addr, pgcount, write ? FOLL_WRITE : 0,
+ 			pg, NULL, NULL);
diff --git a/package/kernel/cryptodev-linux/patches/0004-fix-build-for-linux-6.7-rc1.patch b/package/kernel/cryptodev-linux/patches/0004-fix-build-for-linux-6.7-rc1.patch
new file mode 100644
index 0000000000..3ef9e28ce7
--- /dev/null
+++ b/package/kernel/cryptodev-linux/patches/0004-fix-build-for-linux-6.7-rc1.patch
@@ -0,0 +1,35 @@
+From 5e7121e45ff283d30097da381fd7e97c4bb61364 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram at gmail.com>
+Date: Sun, 10 Dec 2023 13:57:55 +0000
+Subject: [PATCH] Fix build for Linux 6.7-rc1
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Since Linux 6.7-rc1, no ahash algorithms set a nonzero alignmask,
+and therefore `crypto_ahash_alignmask` has been removed.
+
+See also: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0f8660c82b79af595b056f6b9f4f227edeb88574
+          https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c626910f3f1bbce6ad18bc613d895d2a089ed95e
+
+Signed-off-by: Joan Bruguera Mic? <joanbrugueram at gmail.com>
+---
+ cryptlib.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/cryptlib.c b/cryptlib.c
+index 4d739e5..0e59d4c 100644
+--- a/cryptlib.c
++++ b/cryptlib.c
+@@ -381,7 +381,11 @@ int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name,
+ 	}
+ 
+ 	hdata->digestsize = crypto_ahash_digestsize(hdata->async.s);
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 7, 0))
+ 	hdata->alignmask = crypto_ahash_alignmask(hdata->async.s);
++#else
++	hdata->alignmask = 0;
++#endif
+ 
+ 	init_completion(&hdata->async.result.completion);
+ 



From lede-commits at lists.infradead.org  Wed Mar  6 05:02:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 06 Mar 2024 08:02:04 -0500
Subject: [openwrt/openwrt]  hostapd: fix 11r defaults when using SAE
In-Reply-To: <170973012431.4111176.10438209659737926434@git-01.infra.openwrt.org>
References: <170973012431.4111176.10438209659737926434@git-01.infra.openwrt.org>
Message-ID: <mailman.13812.1709730130.1280.lede-commits@lists.infradead.org>

jow pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/e5a12edb883fe246afdb6bf897286865b0d4eeb5

commit e5a12edb883fe246afdb6bf897286865b0d4eeb5
Author: Jesus Fernandez Manzano <jesus.manzano at galgus.ai>
AuthorDate: Mon Jan 22 13:52:18 2024 +0100

    hostapd: fix 11r defaults when using SAE
    
    When using WPA3-SAE or WPA2/WPA3 Personal Mixed, we can not use
    ft_psk_generate_local because it will break FT for SAE. Instead
    use the r0kh and r1kh configuration approach.
    
    Signed-off-by: Jesus Fernandez Manzano <jesus.manzano at galgus.ai>
    (cherry picked from commit e2f6bfb833a1ba099e1dcf0e569e4ef11c31c391)
    Fixes: https://github.com/openwrt/luci/issues/6930
    Signed-off-by: Jo-Philipp Wich <jo at mein.io>
---
 package/network/services/hostapd/files/hostapd.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
index 5d588b3bde..73bd1bbeeb 100644
--- a/package/network/services/hostapd/files/hostapd.sh
+++ b/package/network/services/hostapd/files/hostapd.sh
@@ -909,7 +909,7 @@ hostapd_set_bss_options() {
 			set_default reassociation_deadline 1000
 
 			case "$auth_type" in
-				psk|sae|psk-sae)
+				psk)
 					set_default ft_psk_generate_local 1
 				;;
 				*)



From lede-commits at lists.infradead.org  Wed Mar  6 05:05:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 06 Mar 2024 08:05:29 -0500
Subject: [openwrt/openwrt]  hostapd: fix 11r defaults when using WPA
In-Reply-To: <170973032953.4116561.16682484650726399537@git-01.infra.openwrt.org>
References: <170973032953.4116561.16682484650726399537@git-01.infra.openwrt.org>
Message-ID: <mailman.13813.1709730338.1280.lede-commits@lists.infradead.org>

jow pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/503f78f91cddd4ba77731b5fc872b23455d45264

commit 503f78f91cddd4ba77731b5fc872b23455d45264
Author: Jesus Fernandez Manzano <jesus.manzano at galgus.ai>
AuthorDate: Mon Jan 22 13:46:14 2024 +0100

    hostapd: fix 11r defaults when using WPA
    
    802.11r can not be used when selecting WPA. It needs at least WPA2.
    
    This is because 802.11r advertises FT support in-part through the
    Authentication and Key Management (AKM) suites in the Robust
    Security Network (RSN) Information Element, which was included in
    the 802.11i amendment and WPA2 certification program.
    
    Pre-standard WPA did not include the RSN IE, but the WPA IE.
    This IE can not advertise the AKM suite for FT.
    
    Signed-off-by: Jesus Fernandez Manzano <jesus.manzano at galgus.ai>
    (cherry picked from commit cdc4c551755115e0e1047a0c90a658e6238e96ee)
---
 package/network/services/hostapd/files/hostapd.sh | 28 +++++++++++------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
index 73bd1bbeeb..8e0cf4f091 100644
--- a/package/network/services/hostapd/files/hostapd.sh
+++ b/package/network/services/hostapd/files/hostapd.sh
@@ -43,7 +43,7 @@ hostapd_append_wpa_key_mgmt() {
 	case "$auth_type" in
 		psk|eap)
 			append wpa_key_mgmt "WPA-$auth_type_l"
-			[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-${auth_type_l}"
+			[ "${wpa:-2}" -ge 2 ] && [ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-${auth_type_l}"
 			[ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-${auth_type_l}-SHA256"
 		;;
 		eap192)
@@ -897,10 +897,21 @@ hostapd_set_bss_options() {
 		}
 	fi
 
+	json_get_vars ieee80211r
+	set_default ieee80211r 0
 	if [ "$wpa" -ge "1" ]; then
-		json_get_vars ieee80211r
-		set_default ieee80211r 0
+		if [ "$fils" -gt 0 ]; then
+			json_get_vars fils_realm
+			set_default fils_realm "$(echo "$ssid" | md5sum | head -c 8)"
+		fi
+
+		append bss_conf "wpa_disable_eapol_key_retries=$wpa_disable_eapol_key_retries" "$N"
+
+		hostapd_append_wpa_key_mgmt
+		[ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N"
+	fi
 
+	if [ "$wpa" -ge "2" ]; then
 		if [ "$ieee80211r" -gt "0" ]; then
 			json_get_vars mobility_domain ft_psk_generate_local ft_over_ds reassociation_deadline
 
@@ -950,18 +961,7 @@ hostapd_set_bss_options() {
 				done
 			fi
 		fi
-		if [ "$fils" -gt 0 ]; then
-			json_get_vars fils_realm
-			set_default fils_realm "$(echo "$ssid" | md5sum | head -c 8)"
-		fi
-
-		append bss_conf "wpa_disable_eapol_key_retries=$wpa_disable_eapol_key_retries" "$N"
 
-		hostapd_append_wpa_key_mgmt
-		[ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N"
-	fi
-
-	if [ "$wpa" -ge "2" ]; then
 		if [ -n "$network_bridge" -a "$rsn_preauth" = 1 ]; then
 			set_default auth_cache 1
 			append bss_conf "rsn_preauth=1" "$N"



From lede-commits at lists.infradead.org  Wed Mar  6 08:57:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 06 Mar 2024 11:57:03 -0500
Subject: [openwrt/openwrt]  kernel: crypto: add SHA1 ARM64 CE optimized module
In-Reply-To: <170974422366.568977.9401890459769783917@git-01.infra.openwrt.org>
References: <170974422366.568977.9401890459769783917@git-01.infra.openwrt.org>
Message-ID: <mailman.13886.1709744228.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9425064bdbc873a285f476da101199433d3a80e4

commit 9425064bdbc873a285f476da101199433d3a80e4
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Mar 6 11:47:45 2024 +0100

    kernel: crypto: add SHA1 ARM64 CE optimized module
    
    Kernel has optimized version of SHA1 using the ARMv8 Crypto Extensions,
    so lets package it.
    
    Use it by default for qualcommax as it uses Cortex-A53 core and has ARMv8
    CE extensions present.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 84c4668b97..9d5c80f8e5 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -908,6 +908,7 @@ define KernelPackage/crypto-sha1
 	CONFIG_CRYPTO_SHA1 \
 	CONFIG_CRYPTO_SHA1_ARM \
 	CONFIG_CRYPTO_SHA1_ARM_NEON \
+	CONFIG_CRYPTO_SHA1_ARM64_CE \
 	CONFIG_CRYPTO_SHA1_OCTEON \
 	CONFIG_CRYPTO_SHA1_PPC_SPE \
 	CONFIG_CRYPTO_SHA1_SSSE3
@@ -927,9 +928,15 @@ define KernelPackage/crypto-sha1/arm-neon
   AUTOLOAD+=$(call AutoLoad,09,sha1-arm-neon)
 endef
 
+define KernelPackage/crypto-sha1/aarch64-ce
+  FILES+=$(LINUX_DIR)/arch/arm64/crypto/sha1-ce.ko
+  AUTOLOAD+=$(call AutoLoad,09,sha1-ce)
+endef
+
 KernelPackage/crypto-sha1/imx=$(KernelPackage/crypto-sha1/arm-neon)
 KernelPackage/crypto-sha1/ipq40xx=$(KernelPackage/crypto-sha1/arm-neon)
 KernelPackage/crypto-sha1/mvebu/cortexa9=$(KernelPackage/crypto-sha1/arm-neon)
+KernelPackage/crypto-sha1/qualcommax=$(KernelPackage/crypto-sha1/aarch64-ce)
 
 define KernelPackage/crypto-sha1/octeon
   FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha1.ko



From lede-commits at lists.infradead.org  Wed Mar  6 13:00:16 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 06 Mar 2024 16:00:16 -0500
Subject: [openwrt/openwrt]  kernel: crypto: add SHA256 ARM64 ASM optimized
 module
In-Reply-To: <170975881674.1102536.6746820275505066396@git-01.infra.openwrt.org>
References: <170975881674.1102536.6746820275505066396@git-01.infra.openwrt.org>
Message-ID: <mailman.13945.1709758824.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/09207c0348299e0760dfc4e97dfaab27135a9ad1

commit 09207c0348299e0760dfc4e97dfaab27135a9ad1
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Mar 6 18:30:21 2024 +0100

    kernel: crypto: add SHA256 ARM64 ASM optimized module
    
    Kernel has an ASM optimized version of SHA256 that was ported from
    OpenSSL, so lets package it as it provides significant perfomance
    improvement compared to the generic implementation.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 9d5c80f8e5..839e1bd45f 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -984,6 +984,7 @@ define KernelPackage/crypto-sha256
 	CONFIG_CRYPTO_SHA256 \
 	CONFIG_CRYPTO_SHA256_OCTEON \
 	CONFIG_CRYPTO_SHA256_PPC_SPE \
+	CONFIG_CRYPTO_SHA256_ARM64 \
 	CONFIG_CRYPTO_SHA256_SSSE3
   FILES:= \
 	$(LINUX_DIR)/crypto/sha256_generic.ko \
@@ -992,6 +993,11 @@ define KernelPackage/crypto-sha256
   $(call AddDepends/crypto)
 endef
 
+define KernelPackage/crypto-sha256/aarch64
+  FILES+=$(LINUX_DIR)/arch/arm64/crypto/sha256-arm64.ko
+  AUTOLOAD+=$(call AutoLoad,09,sha256-arm64)
+endef
+
 define KernelPackage/crypto-sha256/octeon
   FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha256.ko
   AUTOLOAD+=$(call AutoLoad,09,octeon-sha256)



From lede-commits at lists.infradead.org  Wed Mar  6 13:00:17 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 06 Mar 2024 16:00:17 -0500
Subject: [openwrt/openwrt]  kernel: crypto: add SHA2(224 and 256) ARM64 CE
 optimized module
In-Reply-To: <170975881674.1102536.6746820275505066396@git-01.infra.openwrt.org>
References: <170975881674.1102536.6746820275505066396@git-01.infra.openwrt.org>
Message-ID: <mailman.13946.1709758824.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/4443470a575b6fd775ff7c9d5eb40024db003213

commit 4443470a575b6fd775ff7c9d5eb40024db003213
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Mar 6 18:38:28 2024 +0100

    kernel: crypto: add SHA2(224 and 256) ARM64 CE optimized module
    
    Kernel has optimized version of SHA2(224 and 256) using the ARMv8 Crypto
    Extensions, so lets package it.
    
    Use it by default for qualcommax as it uses Cortex-A53 core and has ARMv8
    CE extensions present.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 839e1bd45f..f7ba0a7b29 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -985,6 +985,7 @@ define KernelPackage/crypto-sha256
 	CONFIG_CRYPTO_SHA256_OCTEON \
 	CONFIG_CRYPTO_SHA256_PPC_SPE \
 	CONFIG_CRYPTO_SHA256_ARM64 \
+	CONFIG_CRYPTO_SHA2_ARM64_CE \
 	CONFIG_CRYPTO_SHA256_SSSE3
   FILES:= \
 	$(LINUX_DIR)/crypto/sha256_generic.ko \
@@ -998,6 +999,12 @@ define KernelPackage/crypto-sha256/aarch64
   AUTOLOAD+=$(call AutoLoad,09,sha256-arm64)
 endef
 
+define KernelPackage/crypto-sha256/aarch64-ce
+  $(call KernelPackage/crypto-sha256/aarch64)
+  FILES+=$(LINUX_DIR)/arch/arm64/crypto/sha2-ce.ko
+  AUTOLOAD+=$(call AutoLoad,09,sha2-ce)
+endef
+
 define KernelPackage/crypto-sha256/octeon
   FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha256.ko
   AUTOLOAD+=$(call AutoLoad,09,octeon-sha256)
@@ -1015,6 +1022,8 @@ define KernelPackage/crypto-sha256/x86_64
 endef
 endif
 
+KernelPackage/crypto-sha256/qualcommax=$(KernelPackage/crypto-sha256/aarch64-ce)
+
 ifdef KernelPackage/crypto-sha256/$(ARCH)
   KernelPackage/crypto-sha256/$(CRYPTO_TARGET)=\
 	  $(KernelPackage/crypto-sha256/$(ARCH))



From lede-commits at lists.infradead.org  Wed Mar  6 13:24:46 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 06 Mar 2024 16:24:46 -0500
Subject: [openwrt/openwrt]  kernel: crypto: add SHA512 ARM64 ASM optimized
 module
In-Reply-To: <170976028618.1158271.3635804302607189603@git-01.infra.openwrt.org>
References: <170976028618.1158271.3635804302607189603@git-01.infra.openwrt.org>
Message-ID: <mailman.13947.1709760291.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5b1d6d4607e4a062319225dd8930541cd1974ebe

commit 5b1d6d4607e4a062319225dd8930541cd1974ebe
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Mar 6 21:54:07 2024 +0100

    kernel: crypto: add SHA512 ARM64 ASM optimized module
    
    Kernel has an ASM optimized version of SHA512 that was ported from
    OpenSSL, so lets package it as it provides significant perfomance
    improvement compared to the generic implementation.
    
    There is a Cryptographic Extension based version as well, but that relies
    on ARMv8.2 ISA which I am not aware any of the OpenWrt supported SoC-s use.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index f7ba0a7b29..55988ba92c 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -1038,6 +1038,7 @@ define KernelPackage/crypto-sha512
   KCONFIG:= \
 	CONFIG_CRYPTO_SHA512 \
 	CONFIG_CRYPTO_SHA512_ARM \
+	CONFIG_CRYPTO_SHA512_ARM64 \
 	CONFIG_CRYPTO_SHA512_OCTEON \
 	CONFIG_CRYPTO_SHA512_SSSE3
   FILES:=$(LINUX_DIR)/crypto/sha512_generic.ko
@@ -1050,6 +1051,11 @@ define KernelPackage/crypto-sha512/arm
   AUTOLOAD+=$(call AutoLoad,09,sha512-arm)
 endef
 
+define KernelPackage/crypto-sha512/aarch64
+  FILES+=$(LINUX_DIR)/arch/arm64/crypto/sha512-arm64.ko
+  AUTOLOAD+=$(call AutoLoad,09,sha512-arm64)
+endef
+
 KernelPackage/crypto-sha512/imx=$(KernelPackage/crypto-sha512/arm)
 KernelPackage/crypto-sha512/ipq40xx=$(KernelPackage/crypto-sha512/arm)
 KernelPackage/crypto-sha512/mvebu/cortexa9=$(KernelPackage/crypto-sha512/arm)



From lede-commits at lists.infradead.org  Thu Mar  7 02:15:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 05:15:21 -0500
Subject: [openwrt/openwrt]  ath11k-firmware: Move from kvalo to new upstream
 repository
In-Reply-To: <170980652126.3060807.4602823485005897046@git-01.infra.openwrt.org>
References: <170980652126.3060807.4602823485005897046@git-01.infra.openwrt.org>
Message-ID: <mailman.14073.1709806526.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/71411cb8b8eeae4521eadfcdf47f1dda15a199a5

commit 71411cb8b8eeae4521eadfcdf47f1dda15a199a5
Author: Sven Eckelmann <sven at narfation.org>
AuthorDate: Thu Mar 7 09:24:20 2024 +0100

    ath11k-firmware: Move from kvalo to new upstream repository
    
    It was announced [1] that the original staging repositories are no longer
    used for staging of new firmware binaries. And that the old repository will
    be removed [2] in June 2024.
    
    The ath11k-firmware package must therefore point to the new repository
    before the old one is no longer accessible.
    
    [1] https://lore.kernel.org/r/bac97f31-4a70-4c4c-8179-4ede0b32f869 at quicinc.com
    [2] https://github.com/kvalo/ath11k-firmware/commit/8d2cc160f390badd62970a66483214773c3fbea1
    
    Signed-off-by: Sven Eckelmann <sven at narfation.org>
---
 package/firmware/ath11k-firmware/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/firmware/ath11k-firmware/Makefile b/package/firmware/ath11k-firmware/Makefile
index 384595f10d..2af34354cf 100644
--- a/package/firmware/ath11k-firmware/Makefile
+++ b/package/firmware/ath11k-firmware/Makefile
@@ -55,7 +55,7 @@ QCN9074_BOARD_REV:=8e140c65f36137714b6d8934e09dcd73cb05c2f6
 QCN9074_BOARD_FILE:=board-2.bin.$(QCN9074_BOARD_REV)
 
 define Download/qcn9074-board
-  URL:=https://github.com/kvalo/ath11k-firmware/raw/master/QCN9074/hw1.0/
+  URL:=https://git.codelinaro.org/clo/ath-firmware/ath11k-firmware/-/raw/main/QCN9074/hw1.0/
   URL_FILE:=board-2.bin
   FILE:=$(QCN9074_BOARD_FILE)
   HASH:=dbf0ca14aa1229eccd48f26f1026901b9718b143bd30b51b8ea67c84ba6207f1
@@ -63,7 +63,7 @@ endef
 $(eval $(call Download,qcn9074-board))
 
 define Download/ath11k-firmware-old
-  URL:=https://github.com/kvalo/ath11k-firmware.git
+  URL:=https://git.codelinaro.org/clo/ath-firmware/ath11k-firmware.git
   VERSION:=540105aa5c0903b5f773d4e80b8501e8da5217e7
   PROTO:=git
   FILE:=ath11k-firmware-old.tar.xz



From lede-commits at lists.infradead.org  Thu Mar  7 02:16:16 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 05:16:16 -0500
Subject: [openwrt/openwrt]  ath11k-firmware: Move to new upstream repository
 for board-2.bin
In-Reply-To: <170980657648.3064795.6999165365993540478@git-01.infra.openwrt.org>
References: <170980657648.3064795.6999165365993540478@git-01.infra.openwrt.org>
Message-ID: <mailman.14074.1709806580.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/97f6a6bfaafa7a55ce319cad41879681737e46a6

commit 97f6a6bfaafa7a55ce319cad41879681737e46a6
Author: Sven Eckelmann <sven at narfation.org>
AuthorDate: Thu Mar 7 09:24:20 2024 +0100

    ath11k-firmware: Move to new upstream repository for board-2.bin
    
    It was announced [1] that the original staging repositories are no longer
    used for staging of new firmware binaries. And that the old repository will
    be removed [2] in June 2024.
    
    The ath11k-firmware package must therefore point to the new repository
    before the old one is no longer accessible.
    
    [1] https://lore.kernel.org/r/bac97f31-4a70-4c4c-8179-4ede0b32f869 at quicinc.com
    [2] https://github.com/kvalo/ath11k-firmware/commit/8d2cc160f390badd62970a66483214773c3fbea1
    
    Signed-off-by: Sven Eckelmann <sven at narfation.org>
---
 package/firmware/ath11k-firmware/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/firmware/ath11k-firmware/Makefile b/package/firmware/ath11k-firmware/Makefile
index fc7968a957..318ed90b65 100644
--- a/package/firmware/ath11k-firmware/Makefile
+++ b/package/firmware/ath11k-firmware/Makefile
@@ -50,7 +50,7 @@ QCN9074_BOARD_REV:=8e140c65f36137714b6d8934e09dcd73cb05c2f6
 QCN9074_BOARD_FILE:=board-2.bin.$(QCN9074_BOARD_REV)
 
 define Download/qcn9074-board
-  URL:=https://github.com/kvalo/ath11k-firmware/raw/master/QCN9074/hw1.0/
+  URL:=https://git.codelinaro.org/clo/ath-firmware/ath11k-firmware/-/raw/main/QCN9074/hw1.0/
   URL_FILE:=board-2.bin
   FILE:=$(QCN9074_BOARD_FILE)
   HASH:=dbf0ca14aa1229eccd48f26f1026901b9718b143bd30b51b8ea67c84ba6207f1



From lede-commits at lists.infradead.org  Thu Mar  7 03:15:55 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 06:15:55 -0500
Subject: [openwrt/openwrt]  ath25: drop target
In-Reply-To: <170981015508.3560237.13011823682726877266@git-01.infra.openwrt.org>
References: <170981015508.3560237.13011823682726877266@git-01.infra.openwrt.org>
Message-ID: <mailman.14095.1709810197.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e247763617ef749a97cad609564ff85878c0aec8

commit e247763617ef749a97cad609564ff85878c0aec8
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 5 10:31:48 2024 +0100

    ath25: drop target
    
    ath25 has been on life support for the last couple of releases, eventually
    leading to marking it as source-only in 2023.
    
    It has been basically only touched to do a kernel bump so that we can make
    the new OpenWrt release which was a challenge due to small RAM amount.
    
    However, with the attempt of kernel 6.1 update it turns out that kernel
    cannot even finish booting due to RAM constraints, so its time to let this
    target go.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .github/labeler.yml                                |    2 -
 package/kernel/mac80211/ath.mk                     |   11 +-
 target/linux/ath25/Makefile                        |   23 -
 target/linux/ath25/base-files/etc/board.d/01_leds  |   12 -
 .../linux/ath25/base-files/etc/board.d/02_network  |   27 -
 .../lib/preinit/15_preinit_iface_atheros           |   29 -
 .../linux/ath25/base-files/lib/upgrade/platform.sh |   76 -
 target/linux/ath25/config-5.15                     |  132 --
 .../linux/ath25/files/drivers/net/phy/mvswitch.c   |  454 -----
 .../linux/ath25/files/drivers/net/phy/mvswitch.h   |  145 --
 target/linux/ath25/generic/target.mk               |    1 -
 target/linux/ath25/image/Makefile                  |  118 --
 .../linux/ath25/patches-5.15/107-ar5312_gpio.patch |  212 ---
 .../linux/ath25/patches-5.15/108-ar2315_gpio.patch |  363 ----
 .../ath25/patches-5.15/110-ar2313_ethernet.patch   | 1733 --------------------
 target/linux/ath25/patches-5.15/120-spiflash.patch |  631 -------
 target/linux/ath25/patches-5.15/130-watchdog.patch |  277 ----
 .../patches-5.15/140-redboot_boardconfig.patch     |   60 -
 .../patches-5.15/141-redboot_partition_scan.patch  |   44 -
 .../142-redboot_various_erase_size_fix.patch       |   83 -
 .../ath25/patches-5.15/210-reset_button.patch      |   71 -
 .../patches-5.15/220-enet_micrel_workaround.patch  |  111 --
 .../linux/ath25/patches-5.15/330-board_leds.patch  |  116 --
 .../ath25/patches-5.15/700-swconfig_mvswitch.patch |   23 -
 target/linux/ath25/profiles/00-default.mk          |   13 -
 .../430-mtd-add-myloader-partition-parser.patch    |    2 +-
 .../430-mtd-add-myloader-partition-parser.patch    |    2 +-
 27 files changed, 5 insertions(+), 4766 deletions(-)

diff --git a/.github/labeler.yml b/.github/labeler.yml
index c8f8466d4a..1813b7f849 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -11,8 +11,6 @@
   - "target/linux/at91/**"
   - "package/boot/at91bootstrap/**"
   - "package/boot/uboot-at91/**"
-"target/ath25":
-  - "target/linux/ath25/**"
 "target/ath79":
   - "target/linux/ath79/**"
 "target/bcm27xx":
diff --git a/package/kernel/mac80211/ath.mk b/package/kernel/mac80211/ath.mk
index dd200a89d4..b0c3691a57 100644
--- a/package/kernel/mac80211/ath.mk
+++ b/package/kernel/mac80211/ath.mk
@@ -64,12 +64,7 @@ config-$(call config_package,ath11k) += ATH11K
 config-$(call config_package,ath11k-ahb) += ATH11K_AHB
 config-$(call config_package,ath11k-pci) += ATH11K_PCI
 
-config-$(call config_package,ath5k) += ATH5K
-ifdef CONFIG_TARGET_ath25
-  config-y += ATH5K_AHB
-else
-  config-y += ATH5K_PCI
-endif
+config-$(call config_package,ath5k) += ATH5K ATH5K_PCI
 
 config-$(call config_package,ath6kl) += ATH6KL
 config-$(call config_package,ath6kl-sdio) += ATH6KL_SDIO
@@ -133,7 +128,7 @@ endef
 define KernelPackage/ath
   $(call KernelPackage/mac80211/Default)
   TITLE:=Atheros common driver part
-  DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ath79||TARGET_ath25 +kmod-mac80211
+  DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ath79 +kmod-mac80211
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.ko
   MENU:=1
 endef
@@ -146,7 +141,7 @@ define KernelPackage/ath5k
   $(call KernelPackage/mac80211/Default)
   TITLE:=Atheros 5xxx wireless cards support
   URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath5k
-  DEPENDS+= @(PCI_SUPPORT||TARGET_ath25) +kmod-ath
+  DEPENDS+= @PCI_SUPPORT +kmod-ath
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath5k/ath5k.ko
   AUTOLOAD:=$(call AutoProbe,ath5k)
 endef
diff --git a/target/linux/ath25/Makefile b/target/linux/ath25/Makefile
deleted file mode 100644
index 84d22ca361..0000000000
--- a/target/linux/ath25/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# Copyright (C) 2006-2013 OpenWrt.org
-
-include $(TOPDIR)/rules.mk
-
-ARCH:=mips
-BOARD:=ath25
-BOARDNAME:=Atheros AR231x/AR5312
-FEATURES:=squashfs low_mem small_flash source-only
-SUBTARGETS:=generic
-
-KERNEL_PATCHVER:=5.15
-
-define Target/Description
-	Build firmware images for Atheros SoC boards
-endef
-
-include $(INCLUDE_DIR)/target.mk
-
-DEFAULT_PACKAGES += wpad-basic-mbedtls kmod-ath5k swconfig kmod-gpio-button-hotplug
-
-$(eval $(call BuildTarget))
diff --git a/target/linux/ath25/base-files/etc/board.d/01_leds b/target/linux/ath25/base-files/etc/board.d/01_leds
deleted file mode 100644
index b417d8acef..0000000000
--- a/target/linux/ath25/base-files/etc/board.d/01_leds
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright 2012-2015 OpenWrt.org
-#
-
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-ucidef_set_led_netdev "wlan" "wlan" "wlan" "wlan0"
-
-board_config_flush
-
-exit 0
diff --git a/target/linux/ath25/base-files/etc/board.d/02_network b/target/linux/ath25/base-files/etc/board.d/02_network
deleted file mode 100644
index 618ffddae8..0000000000
--- a/target/linux/ath25/base-files/etc/board.d/02_network
+++ /dev/null
@@ -1,27 +0,0 @@
-
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-if [ -e "/sys/bus/mdio_bus/drivers/IC+ IP175C/0:00" -o \
-     -e "/sys/bus/mdio_bus/drivers/IC+ IP17xx/0:00" ] && \
-   [ -x /sbin/swconfig ];
-then
-	ucidef_add_switch "eth0" \
-		"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5 at eth0"
-
-elif [ -e "/sys/bus/mdio_bus/drivers/Infineon ADM6996/0:00" -o \
-       -e "/sys/bus/mdio_bus/drivers/Marvell 88E6060/0:10" ];
-then
-	ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
-
-elif [ -d /sys/class/net/eth1 ]; then
-	ucidef_set_interfaces_lan_wan "eth0" "eth1"
-
-else
-	ucidef_set_interface_lan "eth0"
-fi
-
-board_config_flush
-
-exit 0
diff --git a/target/linux/ath25/base-files/lib/preinit/15_preinit_iface_atheros b/target/linux/ath25/base-files/lib/preinit/15_preinit_iface_atheros
deleted file mode 100644
index b795aac45f..0000000000
--- a/target/linux/ath25/base-files/lib/preinit/15_preinit_iface_atheros
+++ /dev/null
@@ -1,29 +0,0 @@
-preinit_ip() {
-	if [ -z "$pi_ifname" ]; then
-		grep -q 'Atheros AR231[567]' /proc/cpuinfo && {
-			if [ -e "/sys/bus/mdio_bus/drivers/Infineon ADM6996/0:00" -o \
-			     -e "/sys/bus/mdio_bus/drivers/Marvell 88E6060/0:10" ]; then
-				ip link set eth0 up
-				ip link add link eth0 name eth0.1 type vlan id 1
-				ifname=eth0.1
-			else
-				ifname=eth0
-			fi
-			pi_ifname=$ifname
-		}
-	fi
-	[ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
-		ip addr add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $pi_ifname
-		ip link set $pi_ifname up
-	}
-}
-
-preinit_ip_deconfig() {
-	if [ -e "/sys/bus/mdio_bus/drivers/Infineon ADM6996/0:00" -o \
-	     -e "/sys/bus/mdio_bus/drivers/Marvell 88E6060/0:10" ]; then
-		ip link del eth0.1 2>/dev/null
-		ip link set $pi_ifname down
-	elif [ -n "$pi_ifname" ]; then
-		ip -4 addr flush dev $pi_ifname
-	fi
-}
diff --git a/target/linux/ath25/base-files/lib/upgrade/platform.sh b/target/linux/ath25/base-files/lib/upgrade/platform.sh
deleted file mode 100644
index 778bbf5a39..0000000000
--- a/target/linux/ath25/base-files/lib/upgrade/platform.sh
+++ /dev/null
@@ -1,76 +0,0 @@
-CI_BLKSZ=65536
-CI_LDADR=0x80041000
-
-platform_find_partitions() {
-	local first dev size erasesize name
-	while read dev size erasesize name; do
-		name=${name#'"'}; name=${name%'"'}
-		case "$name" in
-			vmlinux.bin.l7|kernel|linux|rootfs)
-				if [ -z "$first" ]; then
-					first="$name"
-				else
-					echo "$erasesize:$first:$name"
-					break
-				fi
-			;;
-		esac
-	done < /proc/mtd
-}
-
-platform_find_kernelpart() {
-	local part
-	for part in "${1%:*}" "${1#*:}"; do
-		case "$part" in
-			vmlinux.bin.l7|kernel|linux)
-				echo "$part"
-				break
-			;;
-		esac
-	done
-}
-
-platform_check_image() {
-	[ "$#" -gt 1 ] && return 1
-
-	case "$(get_magic_word "$1")" in
-		# Combined Image
-		4349)
-			local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null)
-			local md5_chk=$(dd if="$1" bs=$CI_BLKSZ skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}"
-
-			if [ -n "$md5_img" -a -n "$md5_chk" ] && [ "$md5_img" = "$md5_chk" ]; then
-				return 0
-			else
-				echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)"
-				return 1
-			fi
-		;;
-		*)
-			echo "Invalid image. Use combined .img files on this platform"
-			return 1
-		;;
-	esac
-}
-
-platform_do_upgrade() {
-	local partitions=$(platform_find_partitions)
-	local kernelpart=$(platform_find_kernelpart "${partitions#*:}")
-	local erase_size=$((0x${partitions%%:*})); partitions="${partitions#*:}"
-	local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null)
-	local kern_blocks=$(($kern_length / $CI_BLKSZ))
-	local root_blocks=$((0x$(dd if="$1" bs=2 skip=5 count=4 2>/dev/null) / $CI_BLKSZ))
-
-	if [ -n "$partitions" ] && [ -n "$kernelpart" ] && \
-	   [ ${kern_blocks:-0} -gt 0 ] && \
-	   [ ${root_blocks:-0} -gt ${kern_blocks:-0} ] && \
-	   [ ${erase_size:-0} -gt 0 ];
-	then
-		local append=""
-		[ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
-
-		( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null; \
-		  dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null ) | \
-			mtd -r $append -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions
-	fi
-}
diff --git a/target/linux/ath25/config-5.15 b/target/linux/ath25/config-5.15
deleted file mode 100644
index a27ad4980f..0000000000
--- a/target/linux/ath25/config-5.15
+++ /dev/null
@@ -1,132 +0,0 @@
-CONFIG_ADM6996_PHY=y
-CONFIG_AR2315_WDT=y
-CONFIG_AR8216_PHY=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ATH25=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="console=ttyS0,9600 rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-# CONFIG_COMMON_CLK is not set
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPS32_R1=y
-CONFIG_CPU_MIPSR1=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CSRC_R4K=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ETHERNET_PACKET_MANGLE=y
-CONFIG_FORCE_PCI=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_LIB_ASHLDI3=y
-CONFIG_GENERIC_LIB_ASHRDI3=y
-CONFIG_GENERIC_LIB_CMPDI2=y
-CONFIG_GENERIC_LIB_LSHRDI3=y
-CONFIG_GENERIC_LIB_UCMPDI2=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GPIO_AR2315=y
-CONFIG_GPIO_AR5312=y
-CONFIG_GPIO_CDEV=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HW_RANDOM=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IP17XX_PHY=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LEDS_GPIO=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MIGRATION=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y
-CONFIG_MIPS_EBPF_JIT=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-CONFIG_MIPS_LD_CAN_LINK_VDSO=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_MTD_AR2315=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-# CONFIG_MTD_CFI_GEOMETRY is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_MYLOADER_PARTS=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-3
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MVSWITCH_PHY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_AR231X=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-# CONFIG_OF is not set
-CONFIG_PCI=y
-CONFIG_PCI_AR2315=y
-CONFIG_PCI_DISABLE_COMMON_QUIRKS=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_SERIAL_8250_NR_UARTS=1
-CONFIG_SERIAL_8250_RUNTIME_UARTS=1
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SOC_AR2315=y
-CONFIG_SOC_AR5312=y
-CONFIG_SRCU=y
-# CONFIG_SWAP is not set
-CONFIG_SWCONFIG=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
-CONFIG_TARGET_ISA_REV=1
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TINY_SRCU=y
-CONFIG_USB_SUPPORT=y
diff --git a/target/linux/ath25/files/drivers/net/phy/mvswitch.c b/target/linux/ath25/files/drivers/net/phy/mvswitch.c
deleted file mode 100644
index 285d306ef0..0000000000
--- a/target/linux/ath25/files/drivers/net/phy/mvswitch.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- * Marvell 88E6060 switch driver
- * Copyright (c) 2008 Felix Fietkau <nbd at nbd.name>
- *
- * This program is free software; you can redistribute  it and/or modify it
- * under  the terms of the GNU General Public License v2 as published by the
- * Free Software Foundation
- */
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/errno.h>
-#include <linux/unistd.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/spinlock.h>
-#include <linux/mm.h>
-#include <linux/module.h>
-#include <linux/mii.h>
-#include <linux/ethtool.h>
-#include <linux/phy.h>
-#include <linux/if_vlan.h>
-#include <linux/version.h>
-
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/uaccess.h>
-#include "mvswitch.h"
-
-/* Undefine this to use trailer mode instead.
- * I don't know if header mode works with all chips */
-#define HEADER_MODE	1
-
-MODULE_DESCRIPTION("Marvell 88E6060 Switch driver");
-MODULE_AUTHOR("Felix Fietkau");
-MODULE_LICENSE("GPL");
-
-#define MVSWITCH_MAGIC 0x88E6060
-
-struct mvswitch_priv {
-	netdev_features_t orig_features;
-	u8 vlans[16];
-};
-
-#define to_mvsw(_phy) ((struct mvswitch_priv *) (_phy)->priv)
-
-static inline u16
-r16(struct phy_device *phydev, int addr, int reg)
-{
-	struct mii_bus *bus = phydev->mdio.bus;
-
-	return bus->read(bus, addr, reg);
-}
-
-static inline void
-w16(struct phy_device *phydev, int addr, int reg, u16 val)
-{
-	struct mii_bus *bus = phydev->mdio.bus;
-
-	bus->write(bus, addr, reg, val);
-}
-
-
-static struct sk_buff *
-mvswitch_mangle_tx(struct net_device *dev, struct sk_buff *skb)
-{
-	struct mvswitch_priv *priv;
-	char *buf = NULL;
-	u16 vid;
-
-	priv = dev->phy_ptr;
-	if (unlikely(!priv))
-		goto error;
-
-	if (unlikely(skb->len < 16))
-		goto error;
-
-#ifdef HEADER_MODE
-	if (__vlan_hwaccel_get_tag(skb, &vid))
-		goto error;
-
-	if (skb_cloned(skb) || (skb->len <= 62) || (skb_headroom(skb) < MV_HEADER_SIZE)) {
-		if (pskb_expand_head(skb, MV_HEADER_SIZE, (skb->len < 62 ? 62 - skb->len : 0), GFP_ATOMIC))
-			goto error_expand;
-		if (skb->len < 62)
-			skb->len = 62;
-	}
-	buf = skb_push(skb, MV_HEADER_SIZE);
-#else
-	if (__vlan_get_tag(skb, &vid))
-		goto error;
-
-	if (unlikely((vid > 15 || !priv->vlans[vid])))
-		goto error;
-
-	if (skb->len <= 64) {
-		if (pskb_expand_head(skb, 0, 64 + MV_TRAILER_SIZE - skb->len, GFP_ATOMIC))
-			goto error_expand;
-
-		buf = skb->data + 64;
-		skb->len = 64 + MV_TRAILER_SIZE;
-	} else {
-		if (skb_cloned(skb) || unlikely(skb_tailroom(skb) < 4)) {
-			if (pskb_expand_head(skb, 0, 4, GFP_ATOMIC))
-				goto error_expand;
-		}
-		buf = skb_put(skb, 4);
-	}
-
-	/* move the ethernet header 4 bytes forward, overwriting the vlan tag */
-	memmove(skb->data + 4, skb->data, 12);
-	skb->data += 4;
-	skb->len -= 4;
-	skb->mac_header += 4;
-#endif
-
-	if (!buf)
-		goto error;
-
-
-#ifdef HEADER_MODE
-	/* prepend the tag */
-	*((__be16 *) buf) = cpu_to_be16(
-		((vid << MV_HEADER_VLAN_S) & MV_HEADER_VLAN_M) |
-		((priv->vlans[vid] << MV_HEADER_PORTS_S) & MV_HEADER_PORTS_M)
-	);
-#else
-	/* append the tag */
-	*((__be32 *) buf) = cpu_to_be32((
-		(MV_TRAILER_OVERRIDE << MV_TRAILER_FLAGS_S) |
-		((priv->vlans[vid] & MV_TRAILER_PORTS_M) << MV_TRAILER_PORTS_S)
-	));
-#endif
-
-	return skb;
-
-error_expand:
-	if (net_ratelimit())
-		printk("%s: failed to expand/update skb for the switch\n", dev->name);
-
-error:
-	/* any errors? drop the packet! */
-	dev_kfree_skb_any(skb);
-	return NULL;
-}
-
-static void
-mvswitch_mangle_rx(struct net_device *dev, struct sk_buff *skb)
-{
-	struct mvswitch_priv *priv;
-	unsigned char *buf;
-	int vlan = -1;
-	int i;
-
-	priv = dev->phy_ptr;
-	if (WARN_ON_ONCE(!priv))
-		return;
-
-#ifdef HEADER_MODE
-	buf = skb->data;
-	skb_pull(skb, MV_HEADER_SIZE);
-#else
-	buf = skb->data + skb->len - MV_TRAILER_SIZE;
-	if (buf[0] != 0x80)
-		return;
-#endif
-
-	/* look for the vlan matching the incoming port */
-	for (i = 0; i < ARRAY_SIZE(priv->vlans); i++) {
-		if ((1 << buf[1]) & priv->vlans[i])
-			vlan = i;
-	}
-
-	if (vlan == -1)
-		return;
-
-	__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan);
-}
-
-
-static int
-mvswitch_wait_mask(struct phy_device *pdev, int addr, int reg, u16 mask, u16 val)
-{
-	int i = 100;
-	u16 r;
-
-	do {
-		r = r16(pdev, addr, reg) & mask;
-		if (r == val)
-			return 0;
-	} while(--i > 0);
-	return -ETIMEDOUT;
-}
-
-static int
-mvswitch_config_init(struct phy_device *pdev)
-{
-	struct mvswitch_priv *priv = to_mvsw(pdev);
-	struct net_device *dev = pdev->attached_dev;
-	u8 vlmap = 0;
-	int i;
-
-	if (!dev)
-		return -EINVAL;
-
-	printk("%s: Marvell 88E6060 PHY driver attached.\n", dev->name);
-	linkmode_zero(pdev->supported);
-	linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, pdev->supported);
-	linkmode_copy(pdev->advertising, pdev->supported);
-	dev->phy_ptr = priv;
-	pdev->irq = PHY_POLL;
-#ifdef HEADER_MODE
-	dev->flags |= IFF_PROMISC;
-#endif
-
-	/* initialize default vlans */
-	for (i = 0; i < MV_PORTS; i++)
-		priv->vlans[(i == MV_WANPORT ? 2 : 1)] |= (1 << i);
-
-	/* before entering reset, disable all ports */
-	for (i = 0; i < MV_PORTS; i++)
-		w16(pdev, MV_PORTREG(CONTROL, i), 0x00);
-
-	msleep(2); /* wait for the status change to settle in */
-
-	/* put the ATU in reset */
-	w16(pdev, MV_SWITCHREG(ATU_CTRL), MV_ATUCTL_RESET);
-
-	i = mvswitch_wait_mask(pdev, MV_SWITCHREG(ATU_CTRL), MV_ATUCTL_RESET, 0);
-	if (i < 0) {
-		printk("%s: Timeout waiting for the switch to reset.\n", dev->name);
-		return i;
-	}
-
-	/* set the ATU flags */
-	w16(pdev, MV_SWITCHREG(ATU_CTRL),
-		MV_ATUCTL_NO_LEARN |
-		MV_ATUCTL_ATU_1K |
-		MV_ATUCTL_AGETIME(MV_ATUCTL_AGETIME_MIN) /* minimum without disabling ageing */
-	);
-
-	/* initialize the cpu port */
-	w16(pdev, MV_PORTREG(CONTROL, MV_CPUPORT),
-#ifdef HEADER_MODE
-		MV_PORTCTRL_HEADER |
-#else
-		MV_PORTCTRL_RXTR |
-		MV_PORTCTRL_TXTR |
-#endif
-		MV_PORTCTRL_ENABLED
-	);
-	/* wait for the phy change to settle in */
-	msleep(2);
-	for (i = 0; i < MV_PORTS; i++) {
-		u8 pvid = 0;
-		int j;
-
-		vlmap = 0;
-
-		/* look for the matching vlan */
-		for (j = 0; j < ARRAY_SIZE(priv->vlans); j++) {
-			if (priv->vlans[j] & (1 << i)) {
-				vlmap = priv->vlans[j];
-				pvid = j;
-			}
-		}
-		/* leave port unconfigured if it's not part of a vlan */
-		if (!vlmap)
-			continue;
-
-		/* add the cpu port to the allowed destinations list */
-		vlmap |= (1 << MV_CPUPORT);
-
-		/* take port out of its own vlan destination map */
-		vlmap &= ~(1 << i);
-
-		/* apply vlan settings */
-		w16(pdev, MV_PORTREG(VLANMAP, i),
-			MV_PORTVLAN_PORTS(vlmap) |
-			MV_PORTVLAN_ID(i)
-		);
-
-		/* re-enable port */
-		w16(pdev, MV_PORTREG(CONTROL, i),
-			MV_PORTCTRL_ENABLED
-		);
-	}
-
-	w16(pdev, MV_PORTREG(VLANMAP, MV_CPUPORT),
-		MV_PORTVLAN_ID(MV_CPUPORT)
-	);
-
-	/* set the port association vector */
-	for (i = 0; i <= MV_PORTS; i++) {
-		w16(pdev, MV_PORTREG(ASSOC, i),
-			MV_PORTASSOC_PORTS(1 << i)
-		);
-	}
-
-	/* init switch control */
-	w16(pdev, MV_SWITCHREG(CTRL),
-		MV_SWITCHCTL_MSIZE |
-		MV_SWITCHCTL_DROP
-	);
-
-	dev->eth_mangle_rx = mvswitch_mangle_rx;
-	dev->eth_mangle_tx = mvswitch_mangle_tx;
-	priv->orig_features = dev->features;
-
-#ifdef HEADER_MODE
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)
-	dev->priv_flags |= IFF_NO_IP_ALIGN;
-#else
-	dev->extra_priv_flags |= IFF_NO_IP_ALIGN;
-#endif
-	dev->features |= NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_HW_VLAN_CTAG_TX;
-#else
-	dev->features |= NETIF_F_HW_VLAN_CTAG_RX;
-#endif
-
-	return 0;
-}
-
-static int
-mvswitch_read_status(struct phy_device *pdev)
-{
-	pdev->speed = SPEED_100;
-	pdev->duplex = DUPLEX_FULL;
-	pdev->link = 1;
-
-	/* XXX ugly workaround: we can't force the switch
-	 * to gracefully handle hosts moving from one port to another,
-	 * so we have to regularly clear the ATU database */
-
-	/* wait for the ATU to become available */
-	mvswitch_wait_mask(pdev, MV_SWITCHREG(ATU_OP), MV_ATUOP_INPROGRESS, 0);
-
-	/* flush the ATU */
-	w16(pdev, MV_SWITCHREG(ATU_OP),
-		MV_ATUOP_INPROGRESS |
-		MV_ATUOP_FLUSH_ALL
-	);
-
-	/* wait for operation to complete */
-	mvswitch_wait_mask(pdev, MV_SWITCHREG(ATU_OP), MV_ATUOP_INPROGRESS, 0);
-
-	return 0;
-}
-
-static int
-mvswitch_aneg_done(struct phy_device *phydev)
-{
-	return 1;	/* Return any positive value */
-}
-
-static int
-mvswitch_config_aneg(struct phy_device *phydev)
-{
-	return 0;
-}
-
-static void
-mvswitch_detach(struct phy_device *pdev)
-{
-	struct mvswitch_priv *priv = to_mvsw(pdev);
-	struct net_device *dev = pdev->attached_dev;
-
-	if (!dev)
-		return;
-
-	dev->phy_ptr = NULL;
-	dev->eth_mangle_rx = NULL;
-	dev->eth_mangle_tx = NULL;
-	dev->features = priv->orig_features;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)
-	dev->priv_flags &= ~IFF_NO_IP_ALIGN;
-#else
-	dev->extra_priv_flags &= ~IFF_NO_IP_ALIGN;
-#endif
-}
-
-static void
-mvswitch_remove(struct phy_device *pdev)
-{
-	struct mvswitch_priv *priv = to_mvsw(pdev);
-
-	kfree(priv);
-}
-
-static int
-mvswitch_probe(struct phy_device *pdev)
-{
-	struct mvswitch_priv *priv;
-
-	priv = kzalloc(sizeof(struct mvswitch_priv), GFP_KERNEL);
-	if (priv == NULL)
-		return -ENOMEM;
-
-	pdev->priv = priv;
-
-	return 0;
-}
-
-static int
-mvswitch_fixup(struct phy_device *dev)
-{
-	struct mii_bus *bus = dev->mdio.bus;
-	u16 reg;
-
-	if (dev->mdio.addr != 0x10)
-		return 0;
-
-	reg = bus->read(bus, MV_PORTREG(IDENT, 0)) & MV_IDENT_MASK;
-	if (reg != MV_IDENT_VALUE)
-		return 0;
-
-	dev->phy_id = MVSWITCH_MAGIC;
-	return 0;
-}
-
-
-static struct phy_driver mvswitch_driver = {
-	.name		= "Marvell 88E6060",
-	.phy_id		= MVSWITCH_MAGIC,
-	.phy_id_mask	= 0xffffffff,
-	.features	= PHY_BASIC_FEATURES,
-	.probe		= &mvswitch_probe,
-	.remove		= &mvswitch_remove,
-	.detach		= &mvswitch_detach,
-	.config_init	= &mvswitch_config_init,
-	.config_aneg	= &mvswitch_config_aneg,
-	.aneg_done	= &mvswitch_aneg_done,
-	.read_status	= &mvswitch_read_status,
-};
-
-static int __init
-mvswitch_init(void)
-{
-	phy_register_fixup_for_id(PHY_ANY_ID, mvswitch_fixup);
-	return phy_driver_register(&mvswitch_driver, THIS_MODULE);
-}
-
-static void __exit
-mvswitch_exit(void)
-{
-	phy_driver_unregister(&mvswitch_driver);
-}
-
-module_init(mvswitch_init);
-module_exit(mvswitch_exit);
diff --git a/target/linux/ath25/files/drivers/net/phy/mvswitch.h b/target/linux/ath25/files/drivers/net/phy/mvswitch.h
deleted file mode 100644
index ab2a1a126e..0000000000
--- a/target/linux/ath25/files/drivers/net/phy/mvswitch.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Marvell 88E6060 switch driver
- * Copyright (c) 2008 Felix Fietkau <nbd at nbd.name>
- *
- * This program is free software; you can redistribute  it and/or modify it
- * under  the terms of the GNU General Public License v2 as published by the
- * Free Software Foundation
- */
-#ifndef __MVSWITCH_H
-#define __MVSWITCH_H
-
-#define MV_HEADER_SIZE	2
-#define MV_HEADER_PORTS_M	0x001f
-#define MV_HEADER_PORTS_S	0
-#define MV_HEADER_VLAN_M	0xf000
-#define MV_HEADER_VLAN_S	12
-
-#define MV_TRAILER_SIZE	4
-#define MV_TRAILER_PORTS_M	0x1f
-#define MV_TRAILER_PORTS_S	16
-#define MV_TRAILER_FLAGS_S	24
-#define MV_TRAILER_OVERRIDE	0x80
-
-
-#define MV_PORTS	5
-#define MV_WANPORT	4
-#define MV_CPUPORT	5
-
-#define MV_BASE		0x10
-
-#define MV_PHYPORT_BASE		(MV_BASE + 0x0)
-#define MV_PHYPORT(_n)		(MV_PHYPORT_BASE + (_n))
-#define MV_SWITCHPORT_BASE	(MV_BASE + 0x8)
-#define MV_SWITCHPORT(_n)	(MV_SWITCHPORT_BASE + (_n))
-#define MV_SWITCHREGS		(MV_BASE + 0xf)
-
-enum {
-	MV_PHY_CONTROL      = 0x00,
-	MV_PHY_STATUS       = 0x01,
-	MV_PHY_IDENT0       = 0x02,
-	MV_PHY_IDENT1       = 0x03,
-	MV_PHY_ANEG         = 0x04,
-	MV_PHY_LINK_ABILITY = 0x05,
-	MV_PHY_ANEG_EXPAND  = 0x06,
-	MV_PHY_XMIT_NEXTP   = 0x07,
-	MV_PHY_LINK_NEXTP   = 0x08,
-	MV_PHY_CONTROL1     = 0x10,
-	MV_PHY_STATUS1      = 0x11,
-	MV_PHY_INTR_EN      = 0x12,
-	MV_PHY_INTR_STATUS  = 0x13,
-	MV_PHY_INTR_PORT    = 0x14,
-	MV_PHY_RECV_COUNTER = 0x16,
-	MV_PHY_LED_PARALLEL = 0x16,
-	MV_PHY_LED_STREAM   = 0x17,
-	MV_PHY_LED_CTRL     = 0x18,
-	MV_PHY_LED_OVERRIDE = 0x19,
-	MV_PHY_VCT_CTRL     = 0x1a,
-	MV_PHY_VCT_STATUS   = 0x1b,
-	MV_PHY_CONTROL2     = 0x1e
-};
-#define MV_PHYREG(_type, _port) MV_PHYPORT(_port), MV_PHY_##_type
-
-enum {
-	MV_PORT_STATUS      = 0x00,
-	MV_PORT_IDENT       = 0x03,
-	MV_PORT_CONTROL     = 0x04,
-	MV_PORT_VLANMAP     = 0x06,
-	MV_PORT_ASSOC       = 0x0b,
-	MV_PORT_RXCOUNT     = 0x10,
-	MV_PORT_TXCOUNT     = 0x11,
-};
-#define MV_PORTREG(_type, _port) MV_SWITCHPORT(_port), MV_PORT_##_type
-
-enum {
-	MV_PORTCTRL_BLOCK   =  (1 << 0),
-	MV_PORTCTRL_LEARN   =  (2 << 0),
-	MV_PORTCTRL_ENABLED =  (3 << 0),
-	MV_PORTCTRL_VLANTUN =  (1 << 7),	/* Enforce VLANs on packets */
-	MV_PORTCTRL_RXTR    =  (1 << 8),	/* Enable Marvell packet trailer for ingress */
-	MV_PORTCTRL_HEADER	= (1 << 11),	/* Enable Marvell packet header mode for port */
-	MV_PORTCTRL_TXTR    = (1 << 14),	/* Enable Marvell packet trailer for egress */
-	MV_PORTCTRL_FORCEFL = (1 << 15),	/* force flow control */
-};
-
-#define MV_PORTVLAN_ID(_n) (((_n) & 0xf) << 12)
-#define MV_PORTVLAN_PORTS(_n) ((_n) & 0x3f)
-
-#define MV_PORTASSOC_PORTS(_n) ((_n) & 0x1f)
-#define MV_PORTASSOC_MONITOR	(1 << 15)
-
-enum {
-	MV_SWITCH_MAC0      = 0x01,
-	MV_SWITCH_MAC1      = 0x02,
-	MV_SWITCH_MAC2      = 0x03,
-	MV_SWITCH_CTRL      = 0x04,
-	MV_SWITCH_ATU_CTRL  = 0x0a,
-	MV_SWITCH_ATU_OP    = 0x0b,
-	MV_SWITCH_ATU_DATA  = 0x0c,
-	MV_SWITCH_ATU_MAC0  = 0x0d,
-	MV_SWITCH_ATU_MAC1  = 0x0e,
-	MV_SWITCH_ATU_MAC2  = 0x0f,
-};
-#define MV_SWITCHREG(_type) MV_SWITCHREGS, MV_SWITCH_##_type
-
-enum {
-	MV_SWITCHCTL_EEIE   =  (1 << 0),	/* EEPROM interrupt enable */
-	MV_SWITCHCTL_PHYIE  =  (1 << 1),	/* PHY interrupt enable */
-	MV_SWITCHCTL_ATUDONE=  (1 << 2),	/* ATU done interrupt enable */
-	MV_SWITCHCTL_ATUIE  =  (1 << 3),	/* ATU interrupt enable */
-	MV_SWITCHCTL_CTRMODE=  (1 << 8),	/* statistics for rx and tx errors */
-	MV_SWITCHCTL_RELOAD =  (1 << 9),	/* reload registers from eeprom */
-	MV_SWITCHCTL_MSIZE  = (1 << 10),	/* increase maximum frame size */
-	MV_SWITCHCTL_DROP   = (1 << 13),	/* discard frames with excessive collisions */
-};
-
-enum {
-#define MV_ATUCTL_AGETIME_MIN	16
-#define MV_ATUCTL_AGETIME_MAX	4080
-#define MV_ATUCTL_AGETIME(_n)	((((_n) / 16) & 0xff) << 4)
-	MV_ATUCTL_ATU_256   = (0 << 12),
-	MV_ATUCTL_ATU_512   = (1 << 12),
-	MV_ATUCTL_ATU_1K	= (2 << 12),
-	MV_ATUCTL_ATUMASK   = (3 << 12),
-	MV_ATUCTL_NO_LEARN  = (1 << 14),
-	MV_ATUCTL_RESET     = (1 << 15),
-};
-
-enum {
-#define MV_ATUOP_DBNUM(_n)	((_n) & 0x0f)
-
-	MV_ATUOP_NOOP       = (0 << 12),
-	MV_ATUOP_FLUSH_ALL  = (1 << 12),
-	MV_ATUOP_FLUSH_U    = (2 << 12),
-	MV_ATUOP_LOAD_DB    = (3 << 12),
-	MV_ATUOP_GET_NEXT   = (4 << 12),
-	MV_ATUOP_FLUSH_DB   = (5 << 12),
-	MV_ATUOP_FLUSH_DB_UU= (6 << 12),
-
-	MV_ATUOP_INPROGRESS = (1 << 15),
-};
-
-#define MV_IDENT_MASK		0xfff0
-#define MV_IDENT_VALUE		0x0600
-
-#endif
diff --git a/target/linux/ath25/generic/target.mk b/target/linux/ath25/generic/target.mk
deleted file mode 100644
index f5cb1fb19b..0000000000
--- a/target/linux/ath25/generic/target.mk
+++ /dev/null
@@ -1 +0,0 @@
-BOARDNAME:=Generic
diff --git a/target/linux/ath25/image/Makefile b/target/linux/ath25/image/Makefile
deleted file mode 100644
index 9cdcdf9e95..0000000000
--- a/target/linux/ath25/image/Makefile
+++ /dev/null
@@ -1,118 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# Copyright (C) 2006-2010 OpenWrt.org
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/image.mk
-
-define Build/mkfwimage
-	$(STAGING_DIR_HOST)/bin/mkfwimage \
-		-B $(1).$(VERSION_DIST).$(REVISION) \
-		-k $(IMAGE_KERNEL) \
-		-r $(IMAGE_ROOTFS) \
-		-o $@.new && \
-	mv $@.new $@
-endef
-
-define Build/combined-image
-	-sh $(TOPDIR)/scripts/combined-image.sh \
-		"$(IMAGE_KERNEL)" \
-		"$(IMAGE_ROOTFS)" \
-		"$@.new" && \
-	mv $@.new $@
-endef
-
-define Build/mkmylofw
-	$(STAGING_DIR_HOST)/bin/mkmylofw -B $(1) \
-		-p0x020000:0x130000:ah:0x80041000:linux:$(IMAGE_KERNEL) \
-		-p0x150000:0x2a0000:::rootfs:$(IMAGE_ROOTFS) \
-		$@.new && \
-	mv $@.new $@
-endef
-
-define Build/gzip-kernel
-	gzip -9n -c $@ > $@.gz
-	dd if=$@.gz of=$@ bs=65536 conv=sync
-endef
-
-define Build/lzma-kernel
-	$(STAGING_DIR_HOST)/bin/lzma e $@ $@.l7
-	dd if=$@.l7 of=$@ bs=65536 conv=sync
-endef
-
-define Build/copy-kernel
-	rm -f $@ $@.elf
-	cp $< $@
-	cp $<.elf $@.elf
-endef
-
-define Build/elf-kernel
-	cp $(IMAGE_KERNEL).elf $@
-endef
-
-
-define Device/Default
-  PROFILES = Default $$(DEVICE_NAME)
-  KERNEL := copy-kernel | lzma-kernel
-  KERNEL_INITRAMFS = kernel-bin
-  KERNEL_INITRAMFS_NAME := vmlinux-initramfs.elf
-  KERNEL_INITRAMFS_SUFFIX := -kernel.elf
-  IMAGES := sysupgrade.bin
-  FILESYSTEMS := squashfs
-endef
-
-define Device/generic
-  DEVICE_VENDOR := Atheros
-  DEVICE_MODEL := Generic AR2xxx board
-  IMAGES := kernel.lzma kernel.elf kernel.gz rootfs.bin sysupgrade.bin
-  IMAGE/kernel.gz := elf-kernel | gzip-kernel
-  IMAGE/kernel.elf := elf-kernel
-  IMAGE/kernel.lzma := elf-kernel | lzma-kernel
-  IMAGE/rootfs.bin := append-rootfs | pad-rootfs | pad-to 128k
-  IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | combined-image
-  DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(if $$(findstring kernel,$$(2)),,$$(1)-)$$(2)
-endef
-TARGET_DEVICES += generic
-
-define Device/ubnt_picostation-2
-  DEVICE_VENDOR := Ubiquiti
-  DEVICE_MODEL := Picostation 2 (XS2-8)
-  IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkfwimage XS2-8 -v XS2.ar2316
-endef
-TARGET_DEVICES += ubnt_picostation-2
-
-define Device/ubnt_nanostation-2
-  DEVICE_VENDOR := Ubiquiti
-  DEVICE_MODEL := Nanostation 2 (XS2)
-  IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkfwimage XS2 -v XS2.ar2316
-  DEFAULT := n
-endef
-TARGET_DEVICES += ubnt_nanostation-2
-
-define Device/ubnt_nanostation-5
-  DEVICE_VENDOR := Ubiquiti
-  DEVICE_MODEL := Nanostation 5 (XS5)
-  IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkfwimage XS5 -v XS5.ar2313
-  DEFAULT := n
-endef
-TARGET_DEVICES += ubnt_nanostation-5
-
-define Device/compex_np25g
-  DEVICE_VENDOR := Compex
-  DEVICE_MODEL := NP25G
-  KERNEL := kernel-bin | gzip-kernel
-  IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkmylofw np25g
-  BROKEN := y
-endef
-TARGET_DEVICES += compex_np25g
-
-define Device/compex_wpe53g
-  DEVICE_VENDOR := Compex
-  DEVICE_MODEL := WPE53G
-  KERNEL := kernel-bin | gzip-kernel
-  IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkmylofw wpe53g
-  BROKEN := y
-endef
-TARGET_DEVICES += compex_wpe53g
-
-$(eval $(call BuildImage))
diff --git a/target/linux/ath25/patches-5.15/107-ar5312_gpio.patch b/target/linux/ath25/patches-5.15/107-ar5312_gpio.patch
deleted file mode 100644
index 70d139621a..0000000000
--- a/target/linux/ath25/patches-5.15/107-ar5312_gpio.patch
+++ /dev/null
@@ -1,212 +0,0 @@
---- a/arch/mips/ath25/Kconfig
-+++ b/arch/mips/ath25/Kconfig
-@@ -2,6 +2,7 @@
- config SOC_AR5312
- 	bool "Atheros AR5312/AR2312+ SoC support"
- 	depends on ATH25
-+	select GPIO_AR5312
- 	default y
- 
- config SOC_AR2315
---- a/arch/mips/ath25/ar5312.c
-+++ b/arch/mips/ath25/ar5312.c
-@@ -23,6 +23,7 @@
- #include <linux/platform_device.h>
- #include <linux/mtd/physmap.h>
- #include <linux/reboot.h>
-+#include <linux/gpio.h>
- #include <asm/bootinfo.h>
- #include <asm/reboot.h>
- #include <asm/time.h>
-@@ -177,6 +178,22 @@ static struct platform_device ar5312_phy
- 	.num_resources = 1,
- };
- 
-+static struct resource ar5312_gpio_res[] = {
-+	{
-+		.name = "ar5312-gpio",
-+		.flags = IORESOURCE_MEM,
-+		.start = AR5312_GPIO_BASE,
-+		.end = AR5312_GPIO_BASE + AR5312_GPIO_SIZE - 1,
-+	},
-+};
-+
-+static struct platform_device ar5312_gpio = {
-+	.name = "ar5312-gpio",
-+	.id = -1,
-+	.resource = ar5312_gpio_res,
-+	.num_resources = ARRAY_SIZE(ar5312_gpio_res),
-+};
-+
- static void __init ar5312_flash_init(void)
- {
- 	void __iomem *flashctl_base;
-@@ -244,6 +261,8 @@ void __init ar5312_init_devices(void)
- 
- 	platform_device_register(&ar5312_physmap_flash);
- 
-+	platform_device_register(&ar5312_gpio);
-+
- 	switch (ath25_soc) {
- 	case ATH25_SOC_AR5312:
- 		if (!ath25_board.radio)
---- a/drivers/gpio/Kconfig
-+++ b/drivers/gpio/Kconfig
-@@ -143,6 +143,13 @@ config GPIO_AMDPT
- 	  driver for GPIO functionality on Promontory IOHub
- 	  Require ACPI ASL code to enumerate as a platform device.
- 
-+config GPIO_AR5312
-+	bool "AR5312 SoC GPIO support"
-+	default y if SOC_AR5312
-+	depends on SOC_AR5312
-+	help
-+	  Say yes here to enable GPIO support for Atheros AR5312/AR2312+ SoCs.
-+
- config GPIO_ASPEED
- 	tristate "Aspeed GPIO support"
- 	depends on (ARCH_ASPEED || COMPILE_TEST) && OF_GPIO
---- a/drivers/gpio/Makefile
-+++ b/drivers/gpio/Makefile
-@@ -32,6 +32,7 @@ obj-$(CONFIG_GPIO_ALTERA)  		+= gpio-alt
- obj-$(CONFIG_GPIO_AMD8111)		+= gpio-amd8111.o
- obj-$(CONFIG_GPIO_AMD_FCH)		+= gpio-amd-fch.o
- obj-$(CONFIG_GPIO_AMDPT)		+= gpio-amdpt.o
-+obj-$(CONFIG_GPIO_AR5312)		+= gpio-ar5312.o
- obj-$(CONFIG_GPIO_ARIZONA)		+= gpio-arizona.o
- obj-$(CONFIG_GPIO_ASPEED)		+= gpio-aspeed.o
- obj-$(CONFIG_GPIO_ASPEED_SGPIO)		+= gpio-aspeed-sgpio.o
---- /dev/null
-+++ b/drivers/gpio/gpio-ar5312.c
-@@ -0,0 +1,121 @@
-+/*
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License.  See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 2003 Atheros Communications, Inc.,  All Rights Reserved.
-+ * Copyright (C) 2006 FON Technology, SL.
-+ * Copyright (C) 2006 Imre Kaloz <kaloz at openwrt.org>
-+ * Copyright (C) 2006-2009 Felix Fietkau <nbd at nbd.name>
-+ * Copyright (C) 2012 Alexandros C. Couloumbis <alex at ozo.com>
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/gpio.h>
-+
-+#define DRIVER_NAME	"ar5312-gpio"
-+
-+#define AR5312_GPIO_DO		0x00		/* output register */
-+#define AR5312_GPIO_DI		0x04		/* intput register */
-+#define AR5312_GPIO_CR		0x08		/* control register */
-+
-+#define AR5312_GPIO_CR_M(x)	(1 << (x))	/* mask for i/o */
-+#define AR5312_GPIO_CR_O(x)	(0 << (x))	/* mask for output */
-+#define AR5312_GPIO_CR_I(x)	(1 << (x))	/* mask for input */
-+#define AR5312_GPIO_CR_INT(x)	(1 << ((x)+8))	/* mask for interrupt */
-+#define AR5312_GPIO_CR_UART(x)	(1 << ((x)+16))	/* uart multiplex */
-+
-+#define AR5312_GPIO_NUM		8
-+
-+static void __iomem *ar5312_mem;
-+
-+static inline u32 ar5312_gpio_reg_read(unsigned reg)
-+{
-+	return __raw_readl(ar5312_mem + reg);
-+}
-+
-+static inline void ar5312_gpio_reg_write(unsigned reg, u32 val)
-+{
-+	__raw_writel(val, ar5312_mem + reg);
-+}
-+
-+static inline void ar5312_gpio_reg_mask(unsigned reg, u32 mask, u32 val)
-+{
-+	ar5312_gpio_reg_write(reg, (ar5312_gpio_reg_read(reg) & ~mask) | val);
-+}
-+
-+static int ar5312_gpio_get_val(struct gpio_chip *chip, unsigned gpio)
-+{
-+	return (ar5312_gpio_reg_read(AR5312_GPIO_DI) >> gpio) & 1;
-+}
-+
-+static void ar5312_gpio_set_val(struct gpio_chip *chip, unsigned gpio, int val)
-+{
-+	u32 reg = ar5312_gpio_reg_read(AR5312_GPIO_DO);
-+
-+	reg = val ? reg | (1 << gpio) : reg & ~(1 << gpio);
-+	ar5312_gpio_reg_write(AR5312_GPIO_DO, reg);
-+}
-+
-+static int ar5312_gpio_dir_in(struct gpio_chip *chip, unsigned gpio)
-+{
-+	ar5312_gpio_reg_mask(AR5312_GPIO_CR, 0, 1 << gpio);
-+	return 0;
-+}
-+
-+static int ar5312_gpio_dir_out(struct gpio_chip *chip, unsigned gpio, int val)
-+{
-+	ar5312_gpio_reg_mask(AR5312_GPIO_CR, 1 << gpio, 0);
-+	ar5312_gpio_set_val(chip, gpio, val);
-+	return 0;
-+}
-+
-+static struct gpio_chip ar5312_gpio_chip = {
-+	.label			= DRIVER_NAME,
-+	.direction_input	= ar5312_gpio_dir_in,
-+	.direction_output	= ar5312_gpio_dir_out,
-+	.set			= ar5312_gpio_set_val,
-+	.get			= ar5312_gpio_get_val,
-+	.base			= 0,
-+	.ngpio			= AR5312_GPIO_NUM,
-+};
-+
-+static int ar5312_gpio_probe(struct platform_device *pdev)
-+{
-+	struct device *dev = &pdev->dev;
-+	struct resource *res;
-+	int ret;
-+
-+	if (ar5312_mem)
-+		return -EBUSY;
-+
-+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+	ar5312_mem = devm_ioremap_resource(dev, res);
-+	if (IS_ERR(ar5312_mem))
-+		return PTR_ERR(ar5312_mem);
-+
-+	ar5312_gpio_chip.parent = dev;
-+	ret = gpiochip_add(&ar5312_gpio_chip);
-+	if (ret) {
-+		dev_err(dev, "failed to add gpiochip\n");
-+		return ret;
-+	}
-+
-+	return 0;
-+}
-+
-+static struct platform_driver ar5312_gpio_driver = {
-+	.probe = ar5312_gpio_probe,
-+	.driver = {
-+		.name = DRIVER_NAME,
-+		.owner = THIS_MODULE,
-+	}
-+};
-+
-+static int __init ar5312_gpio_init(void)
-+{
-+	return platform_driver_register(&ar5312_gpio_driver);
-+}
-+subsys_initcall(ar5312_gpio_init);
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -232,6 +232,7 @@ config ATH25
- 	select CEVT_R4K
- 	select CSRC_R4K
- 	select DMA_NONCOHERENT
-+	select GPIOLIB
- 	select IRQ_MIPS_CPU
- 	select IRQ_DOMAIN
- 	select SYS_HAS_CPU_MIPS32_R1
diff --git a/target/linux/ath25/patches-5.15/108-ar2315_gpio.patch b/target/linux/ath25/patches-5.15/108-ar2315_gpio.patch
deleted file mode 100644
index f2e1e4a9a3..0000000000
--- a/target/linux/ath25/patches-5.15/108-ar2315_gpio.patch
+++ /dev/null
@@ -1,363 +0,0 @@
---- a/arch/mips/ath25/Kconfig
-+++ b/arch/mips/ath25/Kconfig
-@@ -8,6 +8,7 @@ config SOC_AR5312
- config SOC_AR2315
- 	bool "Atheros AR2315+ SoC support"
- 	depends on ATH25
-+	select GPIO_AR2315
- 	default y
- 
- config PCI_AR2315
---- a/arch/mips/ath25/ar2315.c
-+++ b/arch/mips/ath25/ar2315.c
-@@ -22,6 +22,8 @@
- #include <linux/memblock.h>
- #include <linux/platform_device.h>
- #include <linux/reboot.h>
-+#include <linux/delay.h>
-+#include <linux/gpio.h>
- #include <asm/bootinfo.h>
- #include <asm/reboot.h>
- #include <asm/time.h>
-@@ -165,11 +167,42 @@ void __init ar2315_arch_init_irq(void)
- 	ar2315_misc_irq_domain = domain;
- }
- 
-+static struct resource ar2315_gpio_res[] = {
-+	{
-+		.name = "ar2315-gpio",
-+		.flags = IORESOURCE_MEM,
-+		.start = AR2315_RST_BASE + AR2315_GPIO,
-+		.end = AR2315_RST_BASE + AR2315_GPIO + 0x10 - 1,
-+	},
-+	{
-+		.name = "ar2315-gpio",
-+		.flags = IORESOURCE_IRQ,
-+	},
-+	{
-+		.name = "ar2315-gpio-irq-base",
-+		.flags = IORESOURCE_IRQ,
-+		.start = AR231X_GPIO_IRQ_BASE,
-+		.end = AR231X_GPIO_IRQ_BASE,
-+	}
-+};
-+
-+static struct platform_device ar2315_gpio = {
-+	.id = -1,
-+	.name = "ar2315-gpio",
-+	.resource = ar2315_gpio_res,
-+	.num_resources = ARRAY_SIZE(ar2315_gpio_res)
-+};
-+
- void __init ar2315_init_devices(void)
- {
- 	/* Find board configuration */
- 	ath25_find_config(AR2315_SPI_READ_BASE, AR2315_SPI_READ_SIZE);
- 
-+	ar2315_gpio_res[1].start = irq_create_mapping(ar2315_misc_irq_domain,
-+						      AR2315_MISC_IRQ_GPIO);
-+	ar2315_gpio_res[1].end = ar2315_gpio_res[1].start;
-+	platform_device_register(&ar2315_gpio);
-+
- 	ath25_add_wmac(0, AR2315_WLAN0_BASE, AR2315_IRQ_WLAN0);
- }
- 
-@@ -185,8 +218,8 @@ static void ar2315_restart(char *command
- 	/* Cold reset does not work on the AR2315/6, use the GPIO reset bits
- 	 * a workaround. Give it some time to attempt a gpio based hardware
- 	 * reset (atheros reference design workaround) */
--
--	/* TODO: implement the GPIO reset workaround */
-+	gpio_request_one(AR2315_RESET_GPIO, GPIOF_OUT_INIT_LOW, "Reset");
-+	mdelay(100);
- 
- 	/* Some boards (e.g. Senao EOC-2610) don't implement the reset logic
- 	 * workaround. Attempt to jump to the mips reset location -
---- a/drivers/gpio/Kconfig
-+++ b/drivers/gpio/Kconfig
-@@ -143,6 +143,13 @@ config GPIO_AMDPT
- 	  driver for GPIO functionality on Promontory IOHub
- 	  Require ACPI ASL code to enumerate as a platform device.
- 
-+config GPIO_AR2315
-+	bool "AR2315 SoC GPIO support"
-+	default y if SOC_AR2315
-+	depends on SOC_AR2315
-+	help
-+	  Say yes here to enable GPIO support for Atheros AR2315+ SoCs.
-+
- config GPIO_AR5312
- 	bool "AR5312 SoC GPIO support"
- 	default y if SOC_AR5312
---- a/drivers/gpio/Makefile
-+++ b/drivers/gpio/Makefile
-@@ -32,6 +32,7 @@ obj-$(CONFIG_GPIO_ALTERA)  		+= gpio-alt
- obj-$(CONFIG_GPIO_AMD8111)		+= gpio-amd8111.o
- obj-$(CONFIG_GPIO_AMD_FCH)		+= gpio-amd-fch.o
- obj-$(CONFIG_GPIO_AMDPT)		+= gpio-amdpt.o
-+obj-$(CONFIG_GPIO_AR2315)		+= gpio-ar2315.o
- obj-$(CONFIG_GPIO_AR5312)		+= gpio-ar5312.o
- obj-$(CONFIG_GPIO_ARIZONA)		+= gpio-arizona.o
- obj-$(CONFIG_GPIO_ASPEED)		+= gpio-aspeed.o
---- /dev/null
-+++ b/drivers/gpio/gpio-ar2315.c
-@@ -0,0 +1,233 @@
-+/*
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License.  See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 2003 Atheros Communications, Inc.,  All Rights Reserved.
-+ * Copyright (C) 2006 FON Technology, SL.
-+ * Copyright (C) 2006 Imre Kaloz <kaloz at openwrt.org>
-+ * Copyright (C) 2006 Felix Fietkau <nbd at nbd.name>
-+ * Copyright (C) 2012 Alexandros C. Couloumbis <alex at ozo.com>
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/gpio.h>
-+#include <linux/irq.h>
-+
-+#define DRIVER_NAME	"ar2315-gpio"
-+
-+#define AR2315_GPIO_DI			0x0000
-+#define AR2315_GPIO_DO			0x0008
-+#define AR2315_GPIO_DIR			0x0010
-+#define AR2315_GPIO_INT			0x0018
-+
-+#define AR2315_GPIO_DIR_M(x)		(1 << (x))	/* mask for i/o */
-+#define AR2315_GPIO_DIR_O(x)		(1 << (x))	/* output */
-+#define AR2315_GPIO_DIR_I(x)		(0)		/* input */
-+
-+#define AR2315_GPIO_INT_NUM_M		0x3F		/* mask for GPIO num */
-+#define AR2315_GPIO_INT_TRIG(x)		((x) << 6)	/* interrupt trigger */
-+#define AR2315_GPIO_INT_TRIG_M		(0x3 << 6)	/* mask for int trig */
-+
-+#define AR2315_GPIO_INT_TRIG_OFF	0	/* Triggerring off */
-+#define AR2315_GPIO_INT_TRIG_LOW	1	/* Low Level Triggered */
-+#define AR2315_GPIO_INT_TRIG_HIGH	2	/* High Level Triggered */
-+#define AR2315_GPIO_INT_TRIG_EDGE	3	/* Edge Triggered */
-+
-+#define AR2315_GPIO_NUM		22
-+
-+static u32 ar2315_gpio_intmask;
-+static u32 ar2315_gpio_intval;
-+static unsigned ar2315_gpio_irq_base;
-+static void __iomem *ar2315_mem;
-+
-+static inline u32 ar2315_gpio_reg_read(unsigned reg)
-+{
-+	return __raw_readl(ar2315_mem + reg);
-+}
-+
-+static inline void ar2315_gpio_reg_write(unsigned reg, u32 val)
-+{
-+	__raw_writel(val, ar2315_mem + reg);
-+}
-+
-+static inline void ar2315_gpio_reg_mask(unsigned reg, u32 mask, u32 val)
-+{
-+	ar2315_gpio_reg_write(reg, (ar2315_gpio_reg_read(reg) & ~mask) | val);
-+}
-+
-+static void ar2315_gpio_irq_handler(struct irq_desc *desc)
-+{
-+	u32 pend;
-+	int bit = -1;
-+
-+	/* only do one gpio interrupt at a time */
-+	pend = ar2315_gpio_reg_read(AR2315_GPIO_DI);
-+	pend ^= ar2315_gpio_intval;
-+	pend &= ar2315_gpio_intmask;
-+
-+	if (pend) {
-+		bit = fls(pend) - 1;
-+		pend &= ~(1 << bit);
-+		ar2315_gpio_intval ^= (1 << bit);
-+	}
-+
-+	/* Enable interrupt with edge detection */
-+	if ((ar2315_gpio_reg_read(AR2315_GPIO_DIR) & AR2315_GPIO_DIR_M(bit)) !=
-+	    AR2315_GPIO_DIR_I(bit))
-+		return;
-+
-+	if (bit >= 0)
-+		generic_handle_irq(ar2315_gpio_irq_base + bit);
-+}
-+
-+static void ar2315_gpio_int_setup(unsigned gpio, int trig)
-+{
-+	u32 reg = ar2315_gpio_reg_read(AR2315_GPIO_INT);
-+
-+	reg &= ~(AR2315_GPIO_INT_NUM_M | AR2315_GPIO_INT_TRIG_M);
-+	reg |= gpio | AR2315_GPIO_INT_TRIG(trig);
-+	ar2315_gpio_reg_write(AR2315_GPIO_INT, reg);
-+}
-+
-+static void ar2315_gpio_irq_unmask(struct irq_data *d)
-+{
-+	unsigned gpio = d->irq - ar2315_gpio_irq_base;
-+	u32 dir = ar2315_gpio_reg_read(AR2315_GPIO_DIR);
-+
-+	/* Enable interrupt with edge detection */
-+	if ((dir & AR2315_GPIO_DIR_M(gpio)) != AR2315_GPIO_DIR_I(gpio))
-+		return;
-+
-+	ar2315_gpio_intmask |= (1 << gpio);
-+	ar2315_gpio_int_setup(gpio, AR2315_GPIO_INT_TRIG_EDGE);
-+}
-+
-+static void ar2315_gpio_irq_mask(struct irq_data *d)
-+{
-+	unsigned gpio = d->irq - ar2315_gpio_irq_base;
-+
-+	/* Disable interrupt */
-+	ar2315_gpio_intmask &= ~(1 << gpio);
-+	ar2315_gpio_int_setup(gpio, AR2315_GPIO_INT_TRIG_OFF);
-+}
-+
-+static struct irq_chip ar2315_gpio_irq_chip = {
-+	.name		= DRIVER_NAME,
-+	.irq_unmask	= ar2315_gpio_irq_unmask,
-+	.irq_mask	= ar2315_gpio_irq_mask,
-+};
-+
-+static void ar2315_gpio_irq_init(unsigned irq)
-+{
-+	unsigned i;
-+
-+	ar2315_gpio_intval = ar2315_gpio_reg_read(AR2315_GPIO_DI);
-+	for (i = 0; i < AR2315_GPIO_NUM; i++) {
-+		unsigned _irq = ar2315_gpio_irq_base + i;
-+
-+		irq_set_chip_and_handler(_irq, &ar2315_gpio_irq_chip,
-+					 handle_level_irq);
-+	}
-+	irq_set_chained_handler(irq, ar2315_gpio_irq_handler);
-+}
-+
-+static int ar2315_gpio_get_val(struct gpio_chip *chip, unsigned gpio)
-+{
-+	return (ar2315_gpio_reg_read(AR2315_GPIO_DI) >> gpio) & 1;
-+}
-+
-+static void ar2315_gpio_set_val(struct gpio_chip *chip, unsigned gpio, int val)
-+{
-+	u32 reg = ar2315_gpio_reg_read(AR2315_GPIO_DO);
-+
-+	reg = val ? reg | (1 << gpio) : reg & ~(1 << gpio);
-+	ar2315_gpio_reg_write(AR2315_GPIO_DO, reg);
-+}
-+
-+static int ar2315_gpio_dir_in(struct gpio_chip *chip, unsigned gpio)
-+{
-+	ar2315_gpio_reg_mask(AR2315_GPIO_DIR, 1 << gpio, 0);
-+	return 0;
-+}
-+
-+static int ar2315_gpio_dir_out(struct gpio_chip *chip, unsigned gpio, int val)
-+{
-+	ar2315_gpio_reg_mask(AR2315_GPIO_DIR, 0, 1 << gpio);
-+	ar2315_gpio_set_val(chip, gpio, val);
-+	return 0;
-+}
-+
-+static int ar2315_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
-+{
-+	return ar2315_gpio_irq_base + gpio;
-+}
-+
-+static struct gpio_chip ar2315_gpio_chip = {
-+	.label			= DRIVER_NAME,
-+	.direction_input	= ar2315_gpio_dir_in,
-+	.direction_output	= ar2315_gpio_dir_out,
-+	.set			= ar2315_gpio_set_val,
-+	.get			= ar2315_gpio_get_val,
-+	.to_irq			= ar2315_gpio_to_irq,
-+	.base			= 0,
-+	.ngpio			= AR2315_GPIO_NUM,
-+};
-+
-+static int ar2315_gpio_probe(struct platform_device *pdev)
-+{
-+	struct device *dev = &pdev->dev;
-+	struct resource *res;
-+	unsigned irq;
-+	int ret;
-+
-+	if (ar2315_mem)
-+		return -EBUSY;
-+
-+	res = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
-+					   "ar2315-gpio-irq-base");
-+	if (!res) {
-+		dev_err(dev, "not found GPIO IRQ base\n");
-+		return -ENXIO;
-+	}
-+	ar2315_gpio_irq_base = res->start;
-+
-+	res = platform_get_resource_byname(pdev, IORESOURCE_IRQ, DRIVER_NAME);
-+	if (!res) {
-+		dev_err(dev, "not found IRQ number\n");
-+		return -ENXIO;
-+	}
-+	irq = res->start;
-+
-+	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, DRIVER_NAME);
-+	ar2315_mem = devm_ioremap_resource(dev, res);
-+	if (IS_ERR(ar2315_mem))
-+		return PTR_ERR(ar2315_mem);
-+
-+	ar2315_gpio_chip.parent = dev;
-+	ret = gpiochip_add(&ar2315_gpio_chip);
-+	if (ret) {
-+		dev_err(dev, "failed to add gpiochip\n");
-+		return ret;
-+	}
-+
-+	ar2315_gpio_irq_init(irq);
-+
-+	return 0;
-+}
-+
-+static struct platform_driver ar2315_gpio_driver = {
-+	.probe = ar2315_gpio_probe,
-+	.driver = {
-+		.name = DRIVER_NAME,
-+		.owner = THIS_MODULE,
-+	}
-+};
-+
-+static int __init ar2315_gpio_init(void)
-+{
-+	return platform_driver_register(&ar2315_gpio_driver);
-+}
-+subsys_initcall(ar2315_gpio_init);
---- a/arch/mips/ath25/devices.h
-+++ b/arch/mips/ath25/devices.h
-@@ -4,6 +4,11 @@
- 
- #include <linux/cpu.h>
- 
-+#define AR231X_GPIO_IRQ_BASE		0x30
-+
-+/* GPIO number for AR2315/16 reset issue workaround */
-+#define AR2315_RESET_GPIO		5
-+
- #define ATH25_REG_MS(_val, _field)	(((_val) & _field##_M) >> _field##_S)
- 
- #define ATH25_IRQ_CPU_CLOCK	(MIPS_CPU_IRQ_BASE + 7)	/* C0_CAUSE: 0x8000 */
---- a/arch/mips/ath25/ar2315_regs.h
-+++ b/arch/mips/ath25/ar2315_regs.h
-@@ -315,6 +315,9 @@
- #define AR2315_MEM_CFG_BANKADDR_BITS_M	0x00000018
- #define AR2315_MEM_CFG_BANKADDR_BITS_S	3
- 
-+/* GPIO MMR base address */
-+#define AR2315_GPIO			0x0088
-+
- /*
-  * Local Bus Interface Registers
-  */
diff --git a/target/linux/ath25/patches-5.15/110-ar2313_ethernet.patch b/target/linux/ath25/patches-5.15/110-ar2313_ethernet.patch
deleted file mode 100644
index fcb6abff7d..0000000000
--- a/target/linux/ath25/patches-5.15/110-ar2313_ethernet.patch
+++ /dev/null
@@ -1,1733 +0,0 @@
---- a/drivers/net/ethernet/atheros/Makefile
-+++ b/drivers/net/ethernet/atheros/Makefile
-@@ -9,3 +9,4 @@ obj-$(CONFIG_ATL2) += atlx/
- obj-$(CONFIG_ATL1E) += atl1e/
- obj-$(CONFIG_ATL1C) += atl1c/
- obj-$(CONFIG_ALX) += alx/
-+obj-$(CONFIG_NET_AR231X) += ar231x/
---- a/drivers/net/ethernet/atheros/Kconfig
-+++ b/drivers/net/ethernet/atheros/Kconfig
-@@ -6,7 +6,7 @@
- config NET_VENDOR_ATHEROS
- 	bool "Atheros devices"
- 	default y
--	depends on (PCI || ATH79)
-+	depends on (PCI || ATH25 || ATH79)
- 	help
- 	  If you have a network (Ethernet) card belonging to this class, say Y.
- 
-@@ -88,4 +88,10 @@ config ALX
- 	  To compile this driver as a module, choose M here.  The module
- 	  will be called alx.
- 
-+config NET_AR231X
-+	tristate "Atheros AR231X built-in Ethernet support"
-+	depends on ATH25
-+	help
-+	  Support for the AR231x/531x ethernet controller
-+
- endif # NET_VENDOR_ATHEROS
---- /dev/null
-+++ b/drivers/net/ethernet/atheros/ar231x/Makefile
-@@ -0,0 +1 @@
-+obj-$(CONFIG_NET_AR231X) += ar231x.o
---- /dev/null
-+++ b/drivers/net/ethernet/atheros/ar231x/ar231x.c
-@@ -0,0 +1,1117 @@
-+/*
-+ * ar231x.c: Linux driver for the Atheros AR231x Ethernet device.
-+ *
-+ * Copyright (C) 2004 by Sameer Dekate <sdekate at arubanetworks.com>
-+ * Copyright (C) 2006 Imre Kaloz <kaloz at openwrt.org>
-+ * Copyright (C) 2006-2009 Felix Fietkau <nbd at nbd.name>
-+ *
-+ * Thanks to Atheros for providing hardware and documentation
-+ * enabling me to write this driver.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * Additional credits:
-+ * This code is taken from John Taylor's Sibyte driver and then
-+ * modified for the AR2313.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/ioport.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/interrupt.h>
-+#include <linux/skbuff.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/mm.h>
-+#include <linux/mii.h>
-+#include <linux/phy.h>
-+#include <linux/platform_device.h>
-+#include <linux/io.h>
-+
-+#define AR2313_MTU                     1692
-+#define AR2313_PRIOS                   1
-+#define AR2313_QUEUES                  (2*AR2313_PRIOS)
-+#define AR2313_DESCR_ENTRIES           64
-+
-+#ifndef min
-+#define min(a, b)	(((a) < (b)) ? (a) : (b))
-+#endif
-+
-+#ifndef SMP_CACHE_BYTES
-+#define SMP_CACHE_BYTES	L1_CACHE_BYTES
-+#endif
-+
-+#define AR2313_MBOX_SET_BIT  0x8
-+
-+#include "ar231x.h"
-+
-+/**
-+ * New interrupt handler strategy:
-+ *
-+ * An old interrupt handler worked using the traditional method of
-+ * replacing an skbuff with a new one when a packet arrives. However
-+ * the rx rings do not need to contain a static number of buffer
-+ * descriptors, thus it makes sense to move the memory allocation out
-+ * of the main interrupt handler and do it in a bottom half handler
-+ * and only allocate new buffers when the number of buffers in the
-+ * ring is below a certain threshold. In order to avoid starving the
-+ * NIC under heavy load it is however necessary to force allocation
-+ * when hitting a minimum threshold. The strategy for alloction is as
-+ * follows:
-+ *
-+ *     RX_LOW_BUF_THRES    - allocate buffers in the bottom half
-+ *     RX_PANIC_LOW_THRES  - we are very low on buffers, allocate
-+ *                           the buffers in the interrupt handler
-+ *     RX_RING_THRES       - maximum number of buffers in the rx ring
-+ *
-+ * One advantagous side effect of this allocation approach is that the
-+ * entire rx processing can be done without holding any spin lock
-+ * since the rx rings and registers are totally independent of the tx
-+ * ring and its registers.  This of course includes the kmalloc's of
-+ * new skb's. Thus start_xmit can run in parallel with rx processing
-+ * and the memory allocation on SMP systems.
-+ *
-+ * Note that running the skb reallocation in a bottom half opens up
-+ * another can of races which needs to be handled properly. In
-+ * particular it can happen that the interrupt handler tries to run
-+ * the reallocation while the bottom half is either running on another
-+ * CPU or was interrupted on the same CPU. To get around this the
-+ * driver uses bitops to prevent the reallocation routines from being
-+ * reentered.
-+ *
-+ * TX handling can also be done without holding any spin lock, wheee
-+ * this is fun! since tx_csm is only written to by the interrupt
-+ * handler.
-+ */
-+
-+/**
-+ * Threshold values for RX buffer allocation - the low water marks for
-+ * when to start refilling the rings are set to 75% of the ring
-+ * sizes. It seems to make sense to refill the rings entirely from the
-+ * intrrupt handler once it gets below the panic threshold, that way
-+ * we don't risk that the refilling is moved to another CPU when the
-+ * one running the interrupt handler just got the slab code hot in its
-+ * cache.
-+ */
-+#define RX_RING_SIZE		AR2313_DESCR_ENTRIES
-+#define RX_PANIC_THRES	        (RX_RING_SIZE/4)
-+#define RX_LOW_THRES	        ((3*RX_RING_SIZE)/4)
-+#define CRC_LEN                 4
-+#define RX_OFFSET               2
-+
-+#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
-+#define VLAN_HDR                4
-+#else
-+#define VLAN_HDR                0
-+#endif
-+
-+#define AR2313_BUFSIZE		(AR2313_MTU + VLAN_HDR + ETH_HLEN + CRC_LEN + \
-+				 RX_OFFSET)
-+
-+#ifdef MODULE
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Sameer Dekate <sdekate at arubanetworks.com>, Imre Kaloz <kaloz at openwrt.org>, Felix Fietkau <nbd at nbd.name>");
-+MODULE_DESCRIPTION("AR231x Ethernet driver");
-+#endif
-+
-+/* prototypes */
-+static void ar231x_halt(struct net_device *dev);
-+static void rx_tasklet_func(unsigned long data);
-+static void rx_tasklet_cleanup(struct net_device *dev);
-+static void ar231x_multicast_list(struct net_device *dev);
-+static void ar231x_tx_timeout(struct net_device *dev, unsigned int txqueue);
-+
-+static int ar231x_mdiobus_read(struct mii_bus *bus, int phy_addr, int regnum);
-+static int ar231x_mdiobus_write(struct mii_bus *bus, int phy_addr, int regnum,
-+				u16 value);
-+static int ar231x_mdiobus_reset(struct mii_bus *bus);
-+static int ar231x_mdiobus_probe(struct net_device *dev);
-+static void ar231x_adjust_link(struct net_device *dev);
-+
-+#ifndef ERR
-+#define ERR(fmt, args...) printk("%s: " fmt, __func__, ##args)
-+#endif
-+
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+static void
-+ar231x_netpoll(struct net_device *dev)
-+{
-+	unsigned long flags;
-+
-+	local_irq_save(flags);
-+	ar231x_interrupt(dev->irq, dev);
-+	local_irq_restore(flags);
-+}
-+#endif
-+
-+static const struct net_device_ops ar231x_ops = {
-+	.ndo_open		= ar231x_open,
-+	.ndo_stop		= ar231x_close,
-+	.ndo_start_xmit		= ar231x_start_xmit,
-+	.ndo_set_rx_mode	= ar231x_multicast_list,
-+	.ndo_do_ioctl		= ar231x_ioctl,
-+	.ndo_validate_addr	= eth_validate_addr,
-+	.ndo_set_mac_address	= eth_mac_addr,
-+	.ndo_tx_timeout		= ar231x_tx_timeout,
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+	.ndo_poll_controller	= ar231x_netpoll,
-+#endif
-+};
-+
-+static int ar231x_probe(struct platform_device *pdev)
-+{
-+	struct net_device *dev;
-+	struct ar231x_private *sp;
-+	struct resource *res;
-+	unsigned long ar_eth_base;
-+	char buf[64];
-+
-+	dev = alloc_etherdev(sizeof(struct ar231x_private));
-+
-+	if (dev == NULL) {
-+		printk(KERN_ERR
-+			   "ar231x: Unable to allocate net_device structure!\n");
-+		return -ENOMEM;
-+	}
-+
-+	platform_set_drvdata(pdev, dev);
-+
-+	SET_NETDEV_DEV(dev, &pdev->dev);
-+
-+	sp = netdev_priv(dev);
-+	sp->dev = dev;
-+	sp->pdev = pdev;
-+	sp->cfg = pdev->dev.platform_data;
-+
-+	sprintf(buf, "eth%d_membase", pdev->id);
-+	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, buf);
-+	if (!res)
-+		return -ENODEV;
-+
-+	sp->link = 0;
-+	ar_eth_base = res->start;
-+
-+	sprintf(buf, "eth%d_irq", pdev->id);
-+	dev->irq = platform_get_irq_byname(pdev, buf);
-+
-+	spin_lock_init(&sp->lock);
-+
-+	dev->features |= NETIF_F_HIGHDMA;
-+	dev->netdev_ops = &ar231x_ops;
-+
-+	tasklet_init(&sp->rx_tasklet, rx_tasklet_func, (unsigned long)dev);
-+	tasklet_disable(&sp->rx_tasklet);
-+
-+	sp->eth_regs = ioremap(ar_eth_base, sizeof(*sp->eth_regs));
-+	if (!sp->eth_regs) {
-+		printk("Can't remap eth registers\n");
-+		return -ENXIO;
-+	}
-+
-+	/**
-+	 * When there's only one MAC, PHY regs are typically on ENET0,
-+	 * even though the MAC might be on ENET1.
-+	 * So remap PHY regs separately.
-+	 */
-+	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "eth0_mii");
-+	if (!res) {
-+		res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
-+						   "eth1_mii");
-+		if (!res)
-+			return -ENODEV;
-+	}
-+	sp->phy_regs = ioremap(res->start, resource_size(res));
-+	if (!sp->phy_regs) {
-+		printk("Can't remap phy registers\n");
-+		return -ENXIO;
-+	}
-+
-+	sp->dma_regs = ioremap(ar_eth_base + 0x1000,
-+			       sizeof(*sp->dma_regs));
-+	if (!sp->dma_regs) {
-+		printk("Can't remap DMA registers\n");
-+		return -ENXIO;
-+	}
-+	dev->base_addr = ar_eth_base + 0x1000;
-+
-+	strncpy(sp->name, "Atheros AR231x", sizeof(sp->name) - 1);
-+	sp->name[sizeof(sp->name) - 1] = '\0';
-+	memcpy(dev->dev_addr, sp->cfg->macaddr, 6);
-+
-+	if (ar231x_init(dev)) {
-+		/* ar231x_init() calls ar231x_init_cleanup() on error */
-+		kfree(dev);
-+		return -ENODEV;
-+	}
-+
-+	if (register_netdev(dev)) {
-+		printk("%s: register_netdev failed\n", __func__);
-+		return -1;
-+	}
-+
-+	printk("%s: %s: %pM, irq %d\n", dev->name, sp->name, dev->dev_addr,
-+	       dev->irq);
-+
-+	sp->mii_bus = mdiobus_alloc();
-+	if (sp->mii_bus == NULL)
-+		return -1;
-+
-+	sp->mii_bus->priv = dev;
-+	sp->mii_bus->read = ar231x_mdiobus_read;
-+	sp->mii_bus->write = ar231x_mdiobus_write;
-+	sp->mii_bus->reset = ar231x_mdiobus_reset;
-+	sp->mii_bus->name = "ar231x_eth_mii";
-+	snprintf(sp->mii_bus->id, MII_BUS_ID_SIZE, "%d", pdev->id);
-+
-+	mdiobus_register(sp->mii_bus);
-+
-+	if (ar231x_mdiobus_probe(dev) != 0) {
-+		printk(KERN_ERR "%s: mdiobus_probe failed\n", dev->name);
-+		rx_tasklet_cleanup(dev);
-+		ar231x_init_cleanup(dev);
-+		unregister_netdev(dev);
-+		kfree(dev);
-+		return -ENODEV;
-+	}
-+
-+	return 0;
-+}
-+
-+static void ar231x_multicast_list(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	unsigned int filter;
-+
-+	filter = sp->eth_regs->mac_control;
-+
-+	if (dev->flags & IFF_PROMISC)
-+		filter |= MAC_CONTROL_PR;
-+	else
-+		filter &= ~MAC_CONTROL_PR;
-+	if ((dev->flags & IFF_ALLMULTI) || (netdev_mc_count(dev) > 0))
-+		filter |= MAC_CONTROL_PM;
-+	else
-+		filter &= ~MAC_CONTROL_PM;
-+
-+	sp->eth_regs->mac_control = filter;
-+}
-+
-+static void rx_tasklet_cleanup(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+
-+	/**
-+	 * Tasklet may be scheduled. Need to get it removed from the list
-+	 * since we're about to free the struct.
-+	 */
-+
-+	sp->unloading = 1;
-+	tasklet_enable(&sp->rx_tasklet);
-+	tasklet_kill(&sp->rx_tasklet);
-+}
-+
-+static int ar231x_remove(struct platform_device *pdev)
-+{
-+	struct net_device *dev = platform_get_drvdata(pdev);
-+	struct ar231x_private *sp = netdev_priv(dev);
-+
-+	rx_tasklet_cleanup(dev);
-+	ar231x_init_cleanup(dev);
-+	unregister_netdev(dev);
-+	mdiobus_unregister(sp->mii_bus);
-+	mdiobus_free(sp->mii_bus);
-+	kfree(dev);
-+	return 0;
-+}
-+
-+/**
-+ * Restart the AR2313 ethernet controller.
-+ */
-+static int ar231x_restart(struct net_device *dev)
-+{
-+	/* disable interrupts */
-+	disable_irq(dev->irq);
-+
-+	/* stop mac */
-+	ar231x_halt(dev);
-+
-+	/* initialize */
-+	ar231x_init(dev);
-+
-+	/* enable interrupts */
-+	enable_irq(dev->irq);
-+
-+	return 0;
-+}
-+
-+static struct platform_driver ar231x_driver = {
-+	.driver.name = "ar231x-eth",
-+	.probe = ar231x_probe,
-+	.remove = ar231x_remove,
-+};
-+
-+module_platform_driver(ar231x_driver);
-+
-+static void ar231x_free_descriptors(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+
-+	if (sp->rx_ring != NULL) {
-+		kfree((void *)KSEG0ADDR(sp->rx_ring));
-+		sp->rx_ring = NULL;
-+		sp->tx_ring = NULL;
-+	}
-+}
-+
-+static int ar231x_allocate_descriptors(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	int size;
-+	int j;
-+	ar231x_descr_t *space;
-+
-+	if (sp->rx_ring != NULL) {
-+		printk("%s: already done.\n", __func__);
-+		return 0;
-+	}
-+
-+	size = sizeof(ar231x_descr_t) * (AR2313_DESCR_ENTRIES * AR2313_QUEUES);
-+	space = kmalloc(size, GFP_KERNEL);
-+	if (space == NULL)
-+		return 1;
-+
-+	/* invalidate caches */
-+	dma_cache_inv((unsigned int)space, size);
-+
-+	/* now convert pointer to KSEG1 */
-+	space = (ar231x_descr_t *)KSEG1ADDR(space);
-+
-+	memset((void *)space, 0, size);
-+
-+	sp->rx_ring = space;
-+	space += AR2313_DESCR_ENTRIES;
-+
-+	sp->tx_ring = space;
-+	space += AR2313_DESCR_ENTRIES;
-+
-+	/* Initialize the transmit Descriptors */
-+	for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
-+		ar231x_descr_t *td = &sp->tx_ring[j];
-+
-+		td->status = 0;
-+		td->devcs = DMA_TX1_CHAINED;
-+		td->addr = 0;
-+		td->descr = virt_to_phys(&sp->tx_ring[DSC_NEXT(j)]);
-+	}
-+
-+	return 0;
-+}
-+
-+/**
-+ * Generic cleanup handling data allocated during init. Used when the
-+ * module is unloaded or if an error occurs during initialization
-+ */
-+static void ar231x_init_cleanup(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	struct sk_buff *skb;
-+	int j;
-+
-+	ar231x_free_descriptors(dev);
-+
-+	if (sp->eth_regs)
-+		iounmap((void *)sp->eth_regs);
-+	if (sp->dma_regs)
-+		iounmap((void *)sp->dma_regs);
-+	if (sp->phy_regs)
-+		iounmap((void *)sp->phy_regs);
-+
-+	if (sp->rx_skb) {
-+		for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
-+			skb = sp->rx_skb[j];
-+			if (skb) {
-+				sp->rx_skb[j] = NULL;
-+				dev_kfree_skb(skb);
-+			}
-+		}
-+		kfree(sp->rx_skb);
-+		sp->rx_skb = NULL;
-+	}
-+
-+	if (sp->tx_skb) {
-+		for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
-+			skb = sp->tx_skb[j];
-+			if (skb) {
-+				sp->tx_skb[j] = NULL;
-+				dev_kfree_skb(skb);
-+			}
-+		}
-+		kfree(sp->tx_skb);
-+		sp->tx_skb = NULL;
-+	}
-+}
-+
-+static int ar231x_reset_reg(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	unsigned int ethsal, ethsah;
-+	unsigned int flags;
-+
-+	sp->cfg->reset_set(sp->cfg->reset_mac);
-+	mdelay(10);
-+	sp->cfg->reset_clear(sp->cfg->reset_mac);
-+	mdelay(10);
-+	sp->cfg->reset_set(sp->cfg->reset_phy);
-+	mdelay(10);
-+	sp->cfg->reset_clear(sp->cfg->reset_phy);
-+	mdelay(10);
-+
-+	sp->dma_regs->bus_mode = (DMA_BUS_MODE_SWR);
-+	mdelay(10);
-+	sp->dma_regs->bus_mode =
-+		((32 << DMA_BUS_MODE_PBL_SHIFT) | DMA_BUS_MODE_BLE);
-+
-+	/* enable interrupts */
-+	sp->dma_regs->intr_ena = DMA_STATUS_AIS | DMA_STATUS_NIS |
-+				 DMA_STATUS_RI | DMA_STATUS_TI |
-+				 DMA_STATUS_FBE;
-+	sp->dma_regs->xmt_base = virt_to_phys(sp->tx_ring);
-+	sp->dma_regs->rcv_base = virt_to_phys(sp->rx_ring);
-+	sp->dma_regs->control =
-+		(DMA_CONTROL_SR | DMA_CONTROL_ST | DMA_CONTROL_SF);
-+
-+	sp->eth_regs->flow_control = (FLOW_CONTROL_FCE);
-+	sp->eth_regs->vlan_tag = (0x8100);
-+
-+	/* Enable Ethernet Interface */
-+	flags = (MAC_CONTROL_TE |	/* transmit enable */
-+			 MAC_CONTROL_PM |	/* pass mcast */
-+			 MAC_CONTROL_F |	/* full duplex */
-+			 MAC_CONTROL_HBD);	/* heart beat disabled */
-+
-+	if (dev->flags & IFF_PROMISC) {	/* set promiscuous mode */
-+		flags |= MAC_CONTROL_PR;
-+	}
-+	sp->eth_regs->mac_control = flags;
-+
-+	/* Set all Ethernet station address registers to their initial values */
-+	ethsah = (((u_int) (dev->dev_addr[5]) << 8) & (u_int) 0x0000FF00) |
-+		 (((u_int) (dev->dev_addr[4]) << 0) & (u_int) 0x000000FF);
-+
-+	ethsal = (((u_int) (dev->dev_addr[3]) << 24) & (u_int) 0xFF000000) |
-+		 (((u_int) (dev->dev_addr[2]) << 16) & (u_int) 0x00FF0000) |
-+		 (((u_int) (dev->dev_addr[1]) << 8) & (u_int) 0x0000FF00) |
-+		 (((u_int) (dev->dev_addr[0]) << 0) & (u_int) 0x000000FF);
-+
-+	sp->eth_regs->mac_addr[0] = ethsah;
-+	sp->eth_regs->mac_addr[1] = ethsal;
-+
-+	mdelay(10);
-+
-+	return 0;
-+}
-+
-+static int ar231x_init(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	int ecode = 0;
-+
-+	/* Allocate descriptors */
-+	if (ar231x_allocate_descriptors(dev)) {
-+		printk("%s: %s: ar231x_allocate_descriptors failed\n",
-+		       dev->name, __func__);
-+		ecode = -EAGAIN;
-+		goto init_error;
-+	}
-+
-+	/* Get the memory for the skb rings */
-+	if (sp->rx_skb == NULL) {
-+		sp->rx_skb =
-+			kmalloc(sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES,
-+				GFP_KERNEL);
-+		if (!(sp->rx_skb)) {
-+			printk("%s: %s: rx_skb kmalloc failed\n",
-+			       dev->name, __func__);
-+			ecode = -EAGAIN;
-+			goto init_error;
-+		}
-+	}
-+	memset(sp->rx_skb, 0, sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES);
-+
-+	if (sp->tx_skb == NULL) {
-+		sp->tx_skb =
-+			kmalloc(sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES,
-+				GFP_KERNEL);
-+		if (!(sp->tx_skb)) {
-+			printk("%s: %s: tx_skb kmalloc failed\n",
-+			       dev->name, __func__);
-+			ecode = -EAGAIN;
-+			goto init_error;
-+		}
-+	}
-+	memset(sp->tx_skb, 0, sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES);
-+
-+	/**
-+	 * Set tx_csm before we start receiving interrupts, otherwise
-+	 * the interrupt handler might think it is supposed to process
-+	 * tx ints before we are up and running, which may cause a null
-+	 * pointer access in the int handler.
-+	 */
-+	sp->rx_skbprd = 0;
-+	sp->cur_rx = 0;
-+	sp->tx_prd = 0;
-+	sp->tx_csm = 0;
-+
-+	/* Zero the stats before starting the interface */
-+	memset(&dev->stats, 0, sizeof(dev->stats));
-+
-+	/**
-+	 * We load the ring here as there seem to be no way to tell the
-+	 * firmware to wipe the ring without re-initializing it.
-+	 */
-+	ar231x_load_rx_ring(dev, RX_RING_SIZE);
-+
-+	/* Init hardware */
-+	ar231x_reset_reg(dev);
-+
-+	/* Get the IRQ */
-+	ecode = request_irq(dev->irq, &ar231x_interrupt, 0,
-+			    dev->name, dev);
-+	if (ecode) {
-+		printk(KERN_WARNING "%s: %s: Requested IRQ %d is busy\n",
-+		       dev->name, __func__, dev->irq);
-+		goto init_error;
-+	}
-+
-+	tasklet_enable(&sp->rx_tasklet);
-+
-+	return 0;
-+
-+init_error:
-+	ar231x_init_cleanup(dev);
-+	return ecode;
-+}
-+
-+/**
-+ * Load the rx ring.
-+ *
-+ * Loading rings is safe without holding the spin lock since this is
-+ * done only before the device is enabled, thus no interrupts are
-+ * generated and by the interrupt handler/tasklet handler.
-+ */
-+static void ar231x_load_rx_ring(struct net_device *dev, int nr_bufs)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	short i, idx;
-+
-+	idx = sp->rx_skbprd;
-+
-+	for (i = 0; i < nr_bufs; i++) {
-+		struct sk_buff *skb;
-+		ar231x_descr_t *rd;
-+
-+		if (sp->rx_skb[idx])
-+			break;
-+
-+		skb = netdev_alloc_skb_ip_align(dev, AR2313_BUFSIZE);
-+		if (!skb) {
-+			printk("\n\n\n\n %s: No memory in system\n\n\n\n",
-+			       __func__);
-+			break;
-+		}
-+
-+		/* Make sure IP header starts on a fresh cache line */
-+		skb->dev = dev;
-+		sp->rx_skb[idx] = skb;
-+
-+		rd = (ar231x_descr_t *)&sp->rx_ring[idx];
-+
-+		/* initialize dma descriptor */
-+		rd->devcs = ((AR2313_BUFSIZE << DMA_RX1_BSIZE_SHIFT) |
-+					 DMA_RX1_CHAINED);
-+		rd->addr = virt_to_phys(skb->data);
-+		rd->descr = virt_to_phys(&sp->rx_ring[DSC_NEXT(idx)]);
-+		rd->status = DMA_RX_OWN;
-+
-+		idx = DSC_NEXT(idx);
-+	}
-+
-+	if (i)
-+		sp->rx_skbprd = idx;
-+}
-+
-+#define AR2313_MAX_PKTS_PER_CALL        64
-+
-+static int ar231x_rx_int(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	struct sk_buff *skb, *skb_new;
-+	ar231x_descr_t *rxdesc;
-+	unsigned int status;
-+	u32 idx;
-+	int pkts = 0;
-+	int rval;
-+
-+	idx = sp->cur_rx;
-+
-+	/* process at most the entire ring and then wait for another int */
-+	while (1) {
-+		rxdesc = &sp->rx_ring[idx];
-+		status = rxdesc->status;
-+
-+		if (status & DMA_RX_OWN) {
-+			/* SiByte owns descriptor or descr not yet filled in */
-+			rval = 0;
-+			break;
-+		}
-+
-+		if (++pkts > AR2313_MAX_PKTS_PER_CALL) {
-+			rval = 1;
-+			break;
-+		}
-+
-+		if ((status & DMA_RX_ERROR) && !(status & DMA_RX_LONG)) {
-+			dev->stats.rx_errors++;
-+			dev->stats.rx_dropped++;
-+
-+			/* add statistics counters */
-+			if (status & DMA_RX_ERR_CRC)
-+				dev->stats.rx_crc_errors++;
-+			if (status & DMA_RX_ERR_COL)
-+				dev->stats.rx_over_errors++;
-+			if (status & DMA_RX_ERR_LENGTH)
-+				dev->stats.rx_length_errors++;
-+			if (status & DMA_RX_ERR_RUNT)
-+				dev->stats.rx_over_errors++;
-+			if (status & DMA_RX_ERR_DESC)
-+				dev->stats.rx_over_errors++;
-+
-+		} else {
-+			/* alloc new buffer. */
-+			skb_new = netdev_alloc_skb_ip_align(dev,
-+							    AR2313_BUFSIZE);
-+			if (skb_new != NULL) {
-+				skb = sp->rx_skb[idx];
-+				/* set skb */
-+				skb_put(skb, ((status >> DMA_RX_LEN_SHIFT) &
-+					0x3fff) - CRC_LEN);
-+
-+				dev->stats.rx_bytes += skb->len;
-+				skb->protocol = eth_type_trans(skb, dev);
-+				/* pass the packet to upper layers */
-+				netif_rx(skb);
-+
-+				skb_new->dev = dev;
-+				/* reset descriptor's curr_addr */
-+				rxdesc->addr = virt_to_phys(skb_new->data);
-+
-+				dev->stats.rx_packets++;
-+				sp->rx_skb[idx] = skb_new;
-+			} else {
-+				dev->stats.rx_dropped++;
-+			}
-+		}
-+
-+		rxdesc->devcs = ((AR2313_BUFSIZE << DMA_RX1_BSIZE_SHIFT) |
-+						 DMA_RX1_CHAINED);
-+		rxdesc->status = DMA_RX_OWN;
-+
-+		idx = DSC_NEXT(idx);
-+	}
-+
-+	sp->cur_rx = idx;
-+
-+	return rval;
-+}
-+
-+static void ar231x_tx_int(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	u32 idx;
-+	struct sk_buff *skb;
-+	ar231x_descr_t *txdesc;
-+	unsigned int status = 0;
-+
-+	idx = sp->tx_csm;
-+
-+	while (idx != sp->tx_prd) {
-+		txdesc = &sp->tx_ring[idx];
-+		status = txdesc->status;
-+
-+		if (status & DMA_TX_OWN) {
-+			/* ar231x dma still owns descr */
-+			break;
-+		}
-+		/* done with this descriptor */
-+		dma_unmap_single(&sp->pdev->dev, txdesc->addr,
-+				 txdesc->devcs & DMA_TX1_BSIZE_MASK,
-+				 DMA_TO_DEVICE);
-+		txdesc->status = 0;
-+
-+		if (status & DMA_TX_ERROR) {
-+			dev->stats.tx_errors++;
-+			dev->stats.tx_dropped++;
-+			if (status & DMA_TX_ERR_UNDER)
-+				dev->stats.tx_fifo_errors++;
-+			if (status & DMA_TX_ERR_HB)
-+				dev->stats.tx_heartbeat_errors++;
-+			if (status & (DMA_TX_ERR_LOSS | DMA_TX_ERR_LINK))
-+				dev->stats.tx_carrier_errors++;
-+			if (status & (DMA_TX_ERR_LATE | DMA_TX_ERR_COL |
-+			    DMA_TX_ERR_JABBER | DMA_TX_ERR_DEFER))
-+				dev->stats.tx_aborted_errors++;
-+		} else {
-+			/* transmit OK */
-+			dev->stats.tx_packets++;
-+		}
-+
-+		skb = sp->tx_skb[idx];
-+		sp->tx_skb[idx] = NULL;
-+		idx = DSC_NEXT(idx);
-+		dev->stats.tx_bytes += skb->len;
-+		dev_kfree_skb_irq(skb);
-+	}
-+
-+	sp->tx_csm = idx;
-+}
-+
-+static void rx_tasklet_func(unsigned long data)
-+{
-+	struct net_device *dev = (struct net_device *)data;
-+	struct ar231x_private *sp = netdev_priv(dev);
-+
-+	if (sp->unloading)
-+		return;
-+
-+	if (ar231x_rx_int(dev)) {
-+		tasklet_hi_schedule(&sp->rx_tasklet);
-+	} else {
-+		unsigned long flags;
-+
-+		spin_lock_irqsave(&sp->lock, flags);
-+		sp->dma_regs->intr_ena |= DMA_STATUS_RI;
-+		spin_unlock_irqrestore(&sp->lock, flags);
-+	}
-+}
-+
-+static void rx_schedule(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+
-+	sp->dma_regs->intr_ena &= ~DMA_STATUS_RI;
-+
-+	tasklet_hi_schedule(&sp->rx_tasklet);
-+}
-+
-+static irqreturn_t ar231x_interrupt(int irq, void *dev_id)
-+{
-+	struct net_device *dev = (struct net_device *)dev_id;
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	unsigned int status, enabled;
-+
-+	/* clear interrupt */
-+	/* Don't clear RI bit if currently disabled */
-+	status = sp->dma_regs->status;
-+	enabled = sp->dma_regs->intr_ena;
-+	sp->dma_regs->status = status & enabled;
-+
-+	if (status & DMA_STATUS_NIS) {
-+		/* normal status */
-+		/**
-+		 * Don't schedule rx processing if interrupt
-+		 * is already disabled.
-+		 */
-+		if (status & enabled & DMA_STATUS_RI) {
-+			/* receive interrupt */
-+			rx_schedule(dev);
-+		}
-+		if (status & DMA_STATUS_TI) {
-+			/* transmit interrupt */
-+			ar231x_tx_int(dev);
-+		}
-+	}
-+
-+	/* abnormal status */
-+	if (status & (DMA_STATUS_FBE | DMA_STATUS_TPS))
-+		ar231x_restart(dev);
-+
-+	return IRQ_HANDLED;
-+}
-+
-+static int ar231x_open(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	unsigned int ethsal, ethsah;
-+
-+	/* reset the hardware, in case the MAC address changed */
-+	ethsah = (((u_int) (dev->dev_addr[5]) << 8) & (u_int) 0x0000FF00) |
-+		 (((u_int) (dev->dev_addr[4]) << 0) & (u_int) 0x000000FF);
-+
-+	ethsal = (((u_int) (dev->dev_addr[3]) << 24) & (u_int) 0xFF000000) |
-+		 (((u_int) (dev->dev_addr[2]) << 16) & (u_int) 0x00FF0000) |
-+		 (((u_int) (dev->dev_addr[1]) << 8) & (u_int) 0x0000FF00) |
-+		 (((u_int) (dev->dev_addr[0]) << 0) & (u_int) 0x000000FF);
-+
-+	sp->eth_regs->mac_addr[0] = ethsah;
-+	sp->eth_regs->mac_addr[1] = ethsal;
-+
-+	mdelay(10);
-+
-+	dev->mtu = 1500;
-+	netif_start_queue(dev);
-+
-+	sp->eth_regs->mac_control |= MAC_CONTROL_RE;
-+
-+	phy_start(sp->phy_dev);
-+
-+	return 0;
-+}
-+
-+static void ar231x_tx_timeout(struct net_device *dev, unsigned int txqueue)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	unsigned long flags;
-+
-+	spin_lock_irqsave(&sp->lock, flags);
-+	ar231x_restart(dev);
-+	spin_unlock_irqrestore(&sp->lock, flags);
-+}
-+
-+static void ar231x_halt(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	int j;
-+
-+	tasklet_disable(&sp->rx_tasklet);
-+
-+	/* kill the MAC */
-+	sp->eth_regs->mac_control &= ~(MAC_CONTROL_RE |	/* disable Receives */
-+				       MAC_CONTROL_TE);	/* disable Transmits */
-+	/* stop dma */
-+	sp->dma_regs->control = 0;
-+	sp->dma_regs->bus_mode = DMA_BUS_MODE_SWR;
-+
-+	/* place phy and MAC in reset */
-+	sp->cfg->reset_set(sp->cfg->reset_mac);
-+	sp->cfg->reset_set(sp->cfg->reset_phy);
-+
-+	/* free buffers on tx ring */
-+	for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
-+		struct sk_buff *skb;
-+		ar231x_descr_t *txdesc;
-+
-+		txdesc = &sp->tx_ring[j];
-+		txdesc->descr = 0;
-+
-+		skb = sp->tx_skb[j];
-+		if (skb) {
-+			dev_kfree_skb(skb);
-+			sp->tx_skb[j] = NULL;
-+		}
-+	}
-+}
-+
-+/**
-+ * close should do nothing. Here's why. It's called when
-+ * 'ifconfig bond0 down' is run. If it calls free_irq then
-+ * the irq is gone forever ! When bond0 is made 'up' again,
-+ * the ar231x_open () does not call request_irq (). Worse,
-+ * the call to ar231x_halt() generates a WDOG reset due to
-+ * the write to reset register and the box reboots.
-+ * Commenting this out is good since it allows the
-+ * system to resume when bond0 is made up again.
-+ */
-+static int ar231x_close(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+#if 0
-+	/* Disable interrupts */
-+	disable_irq(dev->irq);
-+
-+	/**
-+	 * Without (or before) releasing irq and stopping hardware, this
-+	 * is an absolute non-sense, by the way. It will be reset instantly
-+	 * by the first irq.
-+	 */
-+	netif_stop_queue(dev);
-+
-+	/* stop the MAC and DMA engines */
-+	ar231x_halt(dev);
-+
-+	/* release the interrupt */
-+	free_irq(dev->irq, dev);
-+
-+#endif
-+
-+	phy_stop(sp->phy_dev);
-+
-+	return 0;
-+}
-+
-+static int ar231x_start_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	ar231x_descr_t *td;
-+	u32 idx;
-+
-+	idx = sp->tx_prd;
-+	td = &sp->tx_ring[idx];
-+
-+	if (td->status & DMA_TX_OWN) {
-+		/* free skbuf and lie to the caller that we sent it out */
-+		dev->stats.tx_dropped++;
-+		dev_kfree_skb(skb);
-+
-+		/* restart transmitter in case locked */
-+		sp->dma_regs->xmt_poll = 0;
-+		return 0;
-+	}
-+
-+	/* Setup the transmit descriptor. */
-+	td->devcs = ((skb->len << DMA_TX1_BSIZE_SHIFT) |
-+				 (DMA_TX1_LS | DMA_TX1_IC | DMA_TX1_CHAINED));
-+	td->addr = dma_map_single(&sp->pdev->dev, skb->data, skb->len, DMA_TO_DEVICE);
-+	td->status = DMA_TX_OWN;
-+
-+	/* kick transmitter last */
-+	sp->dma_regs->xmt_poll = 0;
-+
-+	sp->tx_skb[idx] = skb;
-+	idx = DSC_NEXT(idx);
-+	sp->tx_prd = idx;
-+
-+	return 0;
-+}
-+
-+static int ar231x_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+
-+	switch (cmd) {
-+	case SIOCGMIIPHY:
-+	case SIOCGMIIREG:
-+	case SIOCSMIIREG:
-+		return phy_mii_ioctl(sp->phy_dev, ifr, cmd);
-+
-+	default:
-+		break;
-+	}
-+
-+	return -EOPNOTSUPP;
-+}
-+
-+static void ar231x_adjust_link(struct net_device *dev)
-+{
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	struct phy_device *phydev = sp->phy_dev;
-+	u32 mc;
-+
-+	if (!phydev->link) {
-+		if (sp->link) {
-+			pr_info("%s: link down\n", dev->name);
-+			sp->link = 0;
-+		}
-+		return;
-+	}
-+	sp->link = 1;
-+
-+	pr_info("%s: link up (%uMbps/%s duplex)\n", dev->name,
-+		phydev->speed, phydev->duplex ? "full" : "half");
-+
-+	mc = sp->eth_regs->mac_control;
-+	if (phydev->duplex)
-+		mc = (mc | MAC_CONTROL_F) & ~MAC_CONTROL_DRO;
-+	else
-+		mc = (mc | MAC_CONTROL_DRO) & ~MAC_CONTROL_F;
-+	sp->eth_regs->mac_control = mc;
-+	sp->duplex = phydev->duplex;
-+}
-+
-+#define MII_ADDR(phy, reg) \
-+	((reg << MII_ADDR_REG_SHIFT) | (phy << MII_ADDR_PHY_SHIFT))
-+
-+static int
-+ar231x_mdiobus_read(struct mii_bus *bus, int phy_addr, int regnum)
-+{
-+	struct net_device *const dev = bus->priv;
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	volatile MII *ethernet = sp->phy_regs;
-+
-+	ethernet->mii_addr = MII_ADDR(phy_addr, regnum);
-+	while (ethernet->mii_addr & MII_ADDR_BUSY)
-+		;
-+	return ethernet->mii_data >> MII_DATA_SHIFT;
-+}
-+
-+static int
-+ar231x_mdiobus_write(struct mii_bus *bus, int phy_addr, int regnum, u16 value)
-+{
-+	struct net_device *const dev = bus->priv;
-+	struct ar231x_private *sp = netdev_priv(dev);
-+	volatile MII *ethernet = sp->phy_regs;
-+
-+	while (ethernet->mii_addr & MII_ADDR_BUSY)
-+		;
-+	ethernet->mii_data = value << MII_DATA_SHIFT;
-+	ethernet->mii_addr = MII_ADDR(phy_addr, regnum) | MII_ADDR_WRITE;
-+
-+	return 0;
-+}
-+
-+static int ar231x_mdiobus_reset(struct mii_bus *bus)
-+{
-+	struct net_device *const dev = bus->priv;
-+
-+	ar231x_reset_reg(dev);
-+
-+	return 0;
-+}
-+
-+static int ar231x_mdiobus_probe(struct net_device *dev)
-+{
-+	__ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
-+	struct ar231x_private *const sp = netdev_priv(dev);
-+	struct phy_device *phydev = NULL;
-+
-+	/* find the first (lowest address) PHY on the current MAC's MII bus */
-+	phydev = phy_find_first(sp->mii_bus);
-+	if (!phydev) {
-+		printk(KERN_ERR "ar231x: %s: no PHY found\n", dev->name);
-+		return -1;
-+	}
-+
-+	/* now we are supposed to have a proper phydev, to attach to... */
-+	BUG_ON(phydev->attached_dev);
-+
-+	phydev = phy_connect(dev, phydev_name(phydev), &ar231x_adjust_link,
-+			     PHY_INTERFACE_MODE_MII);
-+	if (IS_ERR(phydev)) {
-+		printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
-+		return PTR_ERR(phydev);
-+	}
-+
-+	/* mask with MAC supported features */
-+	linkmode_set_bit_array(phy_10_100_features_array,
-+			       ARRAY_SIZE(phy_10_100_features_array),
-+			       mask);
-+	linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, mask);
-+	linkmode_set_bit(ETHTOOL_LINK_MODE_MII_BIT, mask);
-+	linkmode_set_bit(ETHTOOL_LINK_MODE_TP_BIT, mask);
-+
-+	linkmode_and(phydev->supported, phydev->supported, mask);
-+	linkmode_copy(phydev->advertising, phydev->supported);
-+
-+	sp->phy_dev = phydev;
-+
-+	printk(KERN_INFO "%s: attached PHY driver [%s] (mii_bus:phy_addr=%s)\n",
-+	       dev->name, phydev->drv->name, phydev_name(phydev));
-+
-+	return 0;
-+}
-+
---- /dev/null
-+++ b/drivers/net/ethernet/atheros/ar231x/ar231x.h
-@@ -0,0 +1,282 @@
-+/*
-+ * ar231x.h: Linux driver for the Atheros AR231x Ethernet device.
-+ *
-+ * Copyright (C) 2004 by Sameer Dekate <sdekate at arubanetworks.com>
-+ * Copyright (C) 2006 Imre Kaloz <kaloz at openwrt.org>
-+ * Copyright (C) 2006-2009 Felix Fietkau <nbd at nbd.name>
-+ *
-+ * Thanks to Atheros for providing hardware and documentation
-+ * enabling me to write this driver.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ */
-+
-+#ifndef _AR2313_H_
-+#define _AR2313_H_
-+
-+#include <linux/interrupt.h>
-+#include <generated/autoconf.h>
-+#include <linux/bitops.h>
-+#include <ath25_platform.h>
-+
-+/* probe link timer - 5 secs */
-+#define LINK_TIMER    (5*HZ)
-+
-+#define IS_DMA_TX_INT(X)   (((X) & (DMA_STATUS_TI)) != 0)
-+#define IS_DMA_RX_INT(X)   (((X) & (DMA_STATUS_RI)) != 0)
-+#define IS_DRIVER_OWNED(X) (((X) & (DMA_TX_OWN))    == 0)
-+
-+#define AR2313_TX_TIMEOUT (HZ/4)
-+
-+/* Rings */
-+#define DSC_RING_ENTRIES_SIZE	(AR2313_DESCR_ENTRIES * sizeof(struct desc))
-+#define DSC_NEXT(idx)	        ((idx + 1) & (AR2313_DESCR_ENTRIES - 1))
-+
-+#define AR2313_MBGET		2
-+#define AR2313_MBSET		3
-+#define AR2313_PCI_RECONFIG	4
-+#define AR2313_PCI_DUMP		5
-+#define AR2313_TEST_PANIC	6
-+#define AR2313_TEST_NULLPTR	7
-+#define AR2313_READ_DATA	8
-+#define AR2313_WRITE_DATA	9
-+#define AR2313_GET_VERSION	10
-+#define AR2313_TEST_HANG	11
-+#define AR2313_SYNC		12
-+
-+#define DMA_RX_ERR_CRC		BIT(1)
-+#define DMA_RX_ERR_DRIB		BIT(2)
-+#define DMA_RX_ERR_MII		BIT(3)
-+#define DMA_RX_EV2		BIT(5)
-+#define DMA_RX_ERR_COL		BIT(6)
-+#define DMA_RX_LONG		BIT(7)
-+#define DMA_RX_LS		BIT(8)	/* last descriptor */
-+#define DMA_RX_FS		BIT(9)	/* first descriptor */
-+#define DMA_RX_MF		BIT(10)	/* multicast frame */
-+#define DMA_RX_ERR_RUNT		BIT(11)	/* runt frame */
-+#define DMA_RX_ERR_LENGTH	BIT(12)	/* length error */
-+#define DMA_RX_ERR_DESC		BIT(14)	/* descriptor error */
-+#define DMA_RX_ERROR		BIT(15)	/* error summary */
-+#define DMA_RX_LEN_MASK		0x3fff0000
-+#define DMA_RX_LEN_SHIFT	16
-+#define DMA_RX_FILT		BIT(30)
-+#define DMA_RX_OWN		BIT(31)	/* desc owned by DMA controller */
-+
-+#define DMA_RX1_BSIZE_MASK	0x000007ff
-+#define DMA_RX1_BSIZE_SHIFT	0
-+#define DMA_RX1_CHAINED		BIT(24)
-+#define DMA_RX1_RER		BIT(25)
-+
-+#define DMA_TX_ERR_UNDER	BIT(1)	/* underflow error */
-+#define DMA_TX_ERR_DEFER	BIT(2)	/* excessive deferral */
-+#define DMA_TX_COL_MASK		0x78
-+#define DMA_TX_COL_SHIFT	3
-+#define DMA_TX_ERR_HB		BIT(7)	/* hearbeat failure */
-+#define DMA_TX_ERR_COL		BIT(8)	/* excessive collisions */
-+#define DMA_TX_ERR_LATE		BIT(9)	/* late collision */
-+#define DMA_TX_ERR_LINK		BIT(10)	/* no carrier */
-+#define DMA_TX_ERR_LOSS		BIT(11)	/* loss of carrier */
-+#define DMA_TX_ERR_JABBER	BIT(14)	/* transmit jabber timeout */
-+#define DMA_TX_ERROR		BIT(15)	/* frame aborted */
-+#define DMA_TX_OWN		BIT(31)	/* descr owned by DMA controller */
-+
-+#define DMA_TX1_BSIZE_MASK	0x000007ff
-+#define DMA_TX1_BSIZE_SHIFT	0
-+#define DMA_TX1_CHAINED		BIT(24)	/* chained descriptors */
-+#define DMA_TX1_TER		BIT(25)	/* transmit end of ring */
-+#define DMA_TX1_FS		BIT(29)	/* first segment */
-+#define DMA_TX1_LS		BIT(30)	/* last segment */
-+#define DMA_TX1_IC		BIT(31)	/* interrupt on completion */
-+
-+#define RCVPKT_LENGTH(X)	(X  >> 16)	/* Received pkt Length */
-+
-+#define MAC_CONTROL_RE		BIT(2)	/* receive enable */
-+#define MAC_CONTROL_TE		BIT(3)	/* transmit enable */
-+#define MAC_CONTROL_DC		BIT(5)	/* Deferral check */
-+#define MAC_CONTROL_ASTP	BIT(8)	/* Auto pad strip */
-+#define MAC_CONTROL_DRTY	BIT(10)	/* Disable retry */
-+#define MAC_CONTROL_DBF		BIT(11)	/* Disable bcast frames */
-+#define MAC_CONTROL_LCC		BIT(12)	/* late collision ctrl */
-+#define MAC_CONTROL_HP		BIT(13)	/* Hash Perfect filtering */
-+#define MAC_CONTROL_HASH	BIT(14)	/* Unicast hash filtering */
-+#define MAC_CONTROL_HO		BIT(15)	/* Hash only filtering */
-+#define MAC_CONTROL_PB		BIT(16)	/* Pass Bad frames */
-+#define MAC_CONTROL_IF		BIT(17)	/* Inverse filtering */
-+#define MAC_CONTROL_PR		BIT(18)	/* promis mode (valid frames only) */
-+#define MAC_CONTROL_PM		BIT(19)	/* pass multicast */
-+#define MAC_CONTROL_F		BIT(20)	/* full-duplex */
-+#define MAC_CONTROL_DRO		BIT(23)	/* Disable Receive Own */
-+#define MAC_CONTROL_HBD		BIT(28)	/* heart-beat disabled (MUST BE SET) */
-+#define MAC_CONTROL_BLE		BIT(30)	/* big endian mode */
-+#define MAC_CONTROL_RA		BIT(31)	/* rcv all (valid and invalid frames) */
-+
-+#define MII_ADDR_BUSY		BIT(0)
-+#define MII_ADDR_WRITE		BIT(1)
-+#define MII_ADDR_REG_SHIFT	6
-+#define MII_ADDR_PHY_SHIFT	11
-+#define MII_DATA_SHIFT		0
-+
-+#define FLOW_CONTROL_FCE	BIT(1)
-+
-+#define DMA_BUS_MODE_SWR	BIT(0)	/* software reset */
-+#define DMA_BUS_MODE_BLE	BIT(7)	/* big endian mode */
-+#define DMA_BUS_MODE_PBL_SHIFT	8	/* programmable burst length 32 */
-+#define DMA_BUS_MODE_DBO	BIT(20)	/* big-endian descriptors */
-+
-+#define DMA_STATUS_TI		BIT(0)	/* transmit interrupt */
-+#define DMA_STATUS_TPS		BIT(1)	/* transmit process stopped */
-+#define DMA_STATUS_TU		BIT(2)	/* transmit buffer unavailable */
-+#define DMA_STATUS_TJT		BIT(3)	/* transmit buffer timeout */
-+#define DMA_STATUS_UNF		BIT(5)	/* transmit underflow */
-+#define DMA_STATUS_RI		BIT(6)	/* receive interrupt */
-+#define DMA_STATUS_RU		BIT(7)	/* receive buffer unavailable */
-+#define DMA_STATUS_RPS		BIT(8)	/* receive process stopped */
-+#define DMA_STATUS_ETI		BIT(10)	/* early transmit interrupt */
-+#define DMA_STATUS_FBE		BIT(13)	/* fatal bus interrupt */
-+#define DMA_STATUS_ERI		BIT(14)	/* early receive interrupt */
-+#define DMA_STATUS_AIS		BIT(15)	/* abnormal interrupt summary */
-+#define DMA_STATUS_NIS		BIT(16)	/* normal interrupt summary */
-+#define DMA_STATUS_RS_SHIFT	17	/* receive process state */
-+#define DMA_STATUS_TS_SHIFT	20	/* transmit process state */
-+#define DMA_STATUS_EB_SHIFT	23	/* error bits */
-+
-+#define DMA_CONTROL_SR		BIT(1)	/* start receive */
-+#define DMA_CONTROL_ST		BIT(13)	/* start transmit */
-+#define DMA_CONTROL_SF		BIT(21)	/* store and forward */
-+
-+typedef struct {
-+	volatile unsigned int status;	/* OWN, Device control and status. */
-+	volatile unsigned int devcs;	/* pkt Control bits + Length */
-+	volatile unsigned int addr;	/* Current Address. */
-+	volatile unsigned int descr;	/* Next descriptor in chain. */
-+} ar231x_descr_t;
-+
-+/**
-+ * New Combo structure for Both Eth0 AND eth1
-+ *
-+ * Don't directly access MII related regs since phy chip could be actually
-+ * connected to another ethernet block.
-+ */
-+typedef struct {
-+	volatile unsigned int mac_control;	/* 0x00 */
-+	volatile unsigned int mac_addr[2];	/* 0x04 - 0x08 */
-+	volatile unsigned int mcast_table[2];	/* 0x0c - 0x10 */
-+	volatile unsigned int __mii_addr;	/* 0x14 */
-+	volatile unsigned int __mii_data;	/* 0x18 */
-+	volatile unsigned int flow_control;	/* 0x1c */
-+	volatile unsigned int vlan_tag;	/* 0x20 */
-+	volatile unsigned int pad[7];	/* 0x24 - 0x3c */
-+	volatile unsigned int ucast_table[8];	/* 0x40-0x5c */
-+} ETHERNET_STRUCT;
-+
-+typedef struct {
-+	volatile unsigned int mii_addr;
-+	volatile unsigned int mii_data;
-+} MII;
-+
-+/********************************************************************
-+ * Interrupt controller
-+ ********************************************************************/
-+
-+typedef struct {
-+	volatile unsigned int wdog_control;	/* 0x08 */
-+	volatile unsigned int wdog_timer;	/* 0x0c */
-+	volatile unsigned int misc_status;	/* 0x10 */
-+	volatile unsigned int misc_mask;	/* 0x14 */
-+	volatile unsigned int global_status;	/* 0x18 */
-+	volatile unsigned int reserved;	/* 0x1c */
-+	volatile unsigned int reset_control;	/* 0x20 */
-+} INTERRUPT;
-+
-+/********************************************************************
-+ * DMA controller
-+ ********************************************************************/
-+typedef struct {
-+	volatile unsigned int bus_mode;	/* 0x00 (CSR0) */
-+	volatile unsigned int xmt_poll;	/* 0x04 (CSR1) */
-+	volatile unsigned int rcv_poll;	/* 0x08 (CSR2) */
-+	volatile unsigned int rcv_base;	/* 0x0c (CSR3) */
-+	volatile unsigned int xmt_base;	/* 0x10 (CSR4) */
-+	volatile unsigned int status;	/* 0x14 (CSR5) */
-+	volatile unsigned int control;	/* 0x18 (CSR6) */
-+	volatile unsigned int intr_ena;	/* 0x1c (CSR7) */
-+	volatile unsigned int rcv_missed;	/* 0x20 (CSR8) */
-+	volatile unsigned int reserved[11];	/* 0x24-0x4c (CSR9-19) */
-+	volatile unsigned int cur_tx_buf_addr;	/* 0x50 (CSR20) */
-+	volatile unsigned int cur_rx_buf_addr;	/* 0x50 (CSR21) */
-+} DMA;
-+
-+/**
-+ * Struct private for the Sibyte.
-+ *
-+ * Elements are grouped so variables used by the tx handling goes
-+ * together, and will go into the same cache lines etc. in order to
-+ * avoid cache line contention between the rx and tx handling on SMP.
-+ *
-+ * Frequently accessed variables are put at the beginning of the
-+ * struct to help the compiler generate better/shorter code.
-+ */
-+struct ar231x_private {
-+	struct net_device *dev;
-+	struct platform_device *pdev;
-+	int version;
-+	u32 mb[2];
-+
-+	volatile MII *phy_regs;
-+	volatile ETHERNET_STRUCT *eth_regs;
-+	volatile DMA *dma_regs;
-+	struct ar231x_eth *cfg;
-+
-+	spinlock_t lock;			/* Serialise access to device */
-+
-+	/* RX and TX descriptors, must be adjacent */
-+	ar231x_descr_t *rx_ring;
-+	ar231x_descr_t *tx_ring;
-+
-+	struct sk_buff **rx_skb;
-+	struct sk_buff **tx_skb;
-+
-+	/* RX elements */
-+	u32 rx_skbprd;
-+	u32 cur_rx;
-+
-+	/* TX elements */
-+	u32 tx_prd;
-+	u32 tx_csm;
-+
-+	/* Misc elements */
-+	char name[48];
-+	struct {
-+		u32 address;
-+		u32 length;
-+		char *mapping;
-+	} desc;
-+
-+	unsigned short link;		/* 0 - link down, 1 - link up */
-+	unsigned short duplex;		/* 0 - half, 1 - full */
-+
-+	struct tasklet_struct rx_tasklet;
-+	int unloading;
-+
-+	struct phy_device *phy_dev;
-+	struct mii_bus *mii_bus;
-+};
-+
-+/* Prototypes */
-+static int ar231x_init(struct net_device *dev);
-+#ifdef TX_TIMEOUT
-+static void ar231x_tx_timeout(struct net_device *dev);
-+#endif
-+static int ar231x_restart(struct net_device *dev);
-+static void ar231x_load_rx_ring(struct net_device *dev, int bufs);
-+static irqreturn_t ar231x_interrupt(int irq, void *dev_id);
-+static int ar231x_open(struct net_device *dev);
-+static int ar231x_start_xmit(struct sk_buff *skb, struct net_device *dev);
-+static int ar231x_close(struct net_device *dev);
-+static int ar231x_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
-+static void ar231x_init_cleanup(struct net_device *dev);
-+
-+#endif	/* _AR2313_H_ */
---- a/arch/mips/ath25/ar2315_regs.h
-+++ b/arch/mips/ath25/ar2315_regs.h
-@@ -57,6 +57,9 @@
- #define AR2315_PCI_EXT_BASE	0x80000000	/* PCI external */
- #define AR2315_PCI_EXT_SIZE	0x40000000
- 
-+/* MII registers offset inside Ethernet MMR region */
-+#define AR2315_ENET0_MII_BASE	(AR2315_ENET0_BASE + 0x14)
-+
- /*
-  * Configuration registers
-  */
---- a/arch/mips/ath25/ar5312_regs.h
-+++ b/arch/mips/ath25/ar5312_regs.h
-@@ -64,6 +64,10 @@
- #define AR5312_AR5312_REV7	0x0057		/* AR5312 WMAC (AP30-040) */
- #define AR5312_AR2313_REV8	0x0058		/* AR2313 WMAC (AP43-030) */
- 
-+/* MII registers offset inside Ethernet MMR region */
-+#define AR5312_ENET0_MII_BASE	(AR5312_ENET0_BASE + 0x14)
-+#define AR5312_ENET1_MII_BASE	(AR5312_ENET1_BASE + 0x14)
-+
- /* Reset/Timer Block Address Map */
- #define AR5312_TIMER		0x0000 /* countdown timer */
- #define AR5312_RELOAD		0x0004 /* timer reload value */
---- a/arch/mips/ath25/ar2315.c
-+++ b/arch/mips/ath25/ar2315.c
-@@ -132,6 +132,8 @@ static void ar2315_irq_dispatch(void)
- 
- 	if (pending & CAUSEF_IP3)
- 		do_IRQ(AR2315_IRQ_WLAN0);
-+	else if (pending & CAUSEF_IP4)
-+		do_IRQ(AR2315_IRQ_ENET0);
- #ifdef CONFIG_PCI_AR2315
- 	else if (pending & CAUSEF_IP5)
- 		do_IRQ(AR2315_IRQ_LCBUS_PCI);
-@@ -167,6 +169,29 @@ void __init ar2315_arch_init_irq(void)
- 	ar2315_misc_irq_domain = domain;
- }
- 
-+static void ar2315_device_reset_set(u32 mask)
-+{
-+	u32 val;
-+
-+	val = ar2315_rst_reg_read(AR2315_RESET);
-+	ar2315_rst_reg_write(AR2315_RESET, val | mask);
-+}
-+
-+static void ar2315_device_reset_clear(u32 mask)
-+{
-+	u32 val;
-+
-+	val = ar2315_rst_reg_read(AR2315_RESET);
-+	ar2315_rst_reg_write(AR2315_RESET, val & ~mask);
-+}
-+
-+static struct ar231x_eth ar2315_eth_data = {
-+	.reset_set = ar2315_device_reset_set,
-+	.reset_clear = ar2315_device_reset_clear,
-+	.reset_mac = AR2315_RESET_ENET0,
-+	.reset_phy = AR2315_RESET_EPHY0,
-+};
-+
- static struct resource ar2315_gpio_res[] = {
- 	{
- 		.name = "ar2315-gpio",
-@@ -203,6 +228,11 @@ void __init ar2315_init_devices(void)
- 	ar2315_gpio_res[1].end = ar2315_gpio_res[1].start;
- 	platform_device_register(&ar2315_gpio);
- 
-+	ar2315_eth_data.macaddr = ath25_board.config->enet0_mac;
-+	ath25_add_ethernet(0, AR2315_ENET0_BASE, "eth0_mii",
-+			   AR2315_ENET0_MII_BASE, AR2315_IRQ_ENET0,
-+			   &ar2315_eth_data);
-+
- 	ath25_add_wmac(0, AR2315_WLAN0_BASE, AR2315_IRQ_WLAN0);
- }
- 
---- a/arch/mips/ath25/ar5312.c
-+++ b/arch/mips/ath25/ar5312.c
-@@ -127,6 +127,10 @@ static void ar5312_irq_dispatch(void)
- 
- 	if (pending & CAUSEF_IP2)
- 		do_IRQ(AR5312_IRQ_WLAN0);
-+	else if (pending & CAUSEF_IP3)
-+		do_IRQ(AR5312_IRQ_ENET0);
-+	else if (pending & CAUSEF_IP4)
-+		do_IRQ(AR5312_IRQ_ENET1);
- 	else if (pending & CAUSEF_IP5)
- 		do_IRQ(AR5312_IRQ_WLAN1);
- 	else if (pending & CAUSEF_IP6)
-@@ -160,6 +164,36 @@ void __init ar5312_arch_init_irq(void)
- 	ar5312_misc_irq_domain = domain;
- }
- 
-+static void ar5312_device_reset_set(u32 mask)
-+{
-+	u32 val;
-+
-+	val = ar5312_rst_reg_read(AR5312_RESET);
-+	ar5312_rst_reg_write(AR5312_RESET, val | mask);
-+}
-+
-+static void ar5312_device_reset_clear(u32 mask)
-+{
-+	u32 val;
-+
-+	val = ar5312_rst_reg_read(AR5312_RESET);
-+	ar5312_rst_reg_write(AR5312_RESET, val & ~mask);
-+}
-+
-+static struct ar231x_eth ar5312_eth0_data = {
-+	.reset_set = ar5312_device_reset_set,
-+	.reset_clear = ar5312_device_reset_clear,
-+	.reset_mac = AR5312_RESET_ENET0,
-+	.reset_phy = AR5312_RESET_EPHY0,
-+};
-+
-+static struct ar231x_eth ar5312_eth1_data = {
-+	.reset_set = ar5312_device_reset_set,
-+	.reset_clear = ar5312_device_reset_clear,
-+	.reset_mac = AR5312_RESET_ENET1,
-+	.reset_phy = AR5312_RESET_EPHY1,
-+};
-+
- static struct physmap_flash_data ar5312_flash_data = {
- 	.width = 2,
- };
-@@ -240,6 +274,7 @@ static void __init ar5312_flash_init(voi
- void __init ar5312_init_devices(void)
- {
- 	struct ath25_boarddata *config;
-+	u8 *c;
- 
- 	ar5312_flash_init();
- 
-@@ -263,8 +298,30 @@ void __init ar5312_init_devices(void)
- 
- 	platform_device_register(&ar5312_gpio);
- 
-+	/* Fix up MAC addresses if necessary */
-+	if (is_broadcast_ether_addr(config->enet0_mac))
-+		ether_addr_copy(config->enet0_mac, config->enet1_mac);
-+
-+	/* If ENET0 and ENET1 have the same mac address,
-+	 * increment the one from ENET1 */
-+	if (ether_addr_equal(config->enet0_mac, config->enet1_mac)) {
-+		c = config->enet1_mac + 5;
-+		while ((c >= config->enet1_mac) && !(++(*c)))
-+			c--;
-+	}
-+
- 	switch (ath25_soc) {
- 	case ATH25_SOC_AR5312:
-+		ar5312_eth0_data.macaddr = config->enet0_mac;
-+		ath25_add_ethernet(0, AR5312_ENET0_BASE, "eth0_mii",
-+				   AR5312_ENET0_MII_BASE, AR5312_IRQ_ENET0,
-+				   &ar5312_eth0_data);
-+
-+		ar5312_eth1_data.macaddr = config->enet1_mac;
-+		ath25_add_ethernet(1, AR5312_ENET1_BASE, "eth1_mii",
-+				   AR5312_ENET1_MII_BASE, AR5312_IRQ_ENET1,
-+				   &ar5312_eth1_data);
-+
- 		if (!ath25_board.radio)
- 			return;
- 
-@@ -273,8 +330,18 @@ void __init ar5312_init_devices(void)
- 
- 		ath25_add_wmac(0, AR5312_WLAN0_BASE, AR5312_IRQ_WLAN0);
- 		break;
-+	/*
-+	 * AR2312/3 ethernet uses the PHY of ENET0, but the MAC
-+	 * of ENET1. Atheros calls it 'twisted' for a reason :)
-+	 */
- 	case ATH25_SOC_AR2312:
- 	case ATH25_SOC_AR2313:
-+		ar5312_eth1_data.reset_phy = ar5312_eth0_data.reset_phy;
-+		ar5312_eth1_data.macaddr = config->enet0_mac;
-+		ath25_add_ethernet(1, AR5312_ENET1_BASE, "eth0_mii",
-+				   AR5312_ENET0_MII_BASE, AR5312_IRQ_ENET1,
-+				   &ar5312_eth1_data);
-+
- 		if (!ath25_board.radio)
- 			return;
- 		break;
---- a/arch/mips/ath25/devices.h
-+++ b/arch/mips/ath25/devices.h
-@@ -33,6 +33,8 @@ extern struct ar231x_board_config ath25_
- extern void (*ath25_irq_dispatch)(void);
- 
- int ath25_find_config(phys_addr_t offset, unsigned long size);
-+int ath25_add_ethernet(int nr, u32 base, const char *mii_name, u32 mii_base,
-+		       int irq, void *pdata);
- void ath25_serial_setup(u32 mapbase, int irq, unsigned int uartclk);
- int ath25_add_wmac(int nr, u32 base, int irq);
- 
---- a/arch/mips/ath25/devices.c
-+++ b/arch/mips/ath25/devices.c
-@@ -13,6 +13,51 @@
- struct ar231x_board_config ath25_board;
- enum ath25_soc_type ath25_soc = ATH25_SOC_UNKNOWN;
- 
-+static struct resource ath25_eth0_res[] = {
-+	{
-+		.name = "eth0_membase",
-+		.flags = IORESOURCE_MEM,
-+	},
-+	{
-+		.name = "eth0_mii",
-+		.flags = IORESOURCE_MEM,
-+	},
-+	{
-+		.name = "eth0_irq",
-+		.flags = IORESOURCE_IRQ,
-+	}
-+};
-+
-+static struct resource ath25_eth1_res[] = {
-+	{
-+		.name = "eth1_membase",
-+		.flags = IORESOURCE_MEM,
-+	},
-+	{
-+		.name = "eth1_mii",
-+		.flags = IORESOURCE_MEM,
-+	},
-+	{
-+		.name = "eth1_irq",
-+		.flags = IORESOURCE_IRQ,
-+	}
-+};
-+
-+static struct platform_device ath25_eth[] = {
-+	{
-+		.id = 0,
-+		.name = "ar231x-eth",
-+		.resource = ath25_eth0_res,
-+		.num_resources = ARRAY_SIZE(ath25_eth0_res)
-+	},
-+	{
-+		.id = 1,
-+		.name = "ar231x-eth",
-+		.resource = ath25_eth1_res,
-+		.num_resources = ARRAY_SIZE(ath25_eth1_res)
-+	}
-+};
-+
- static struct resource ath25_wmac0_res[] = {
- 	{
- 		.name = "wmac0_membase",
-@@ -71,6 +116,25 @@ const char *get_system_type(void)
- 	return soc_type_strings[ath25_soc];
- }
- 
-+int __init ath25_add_ethernet(int nr, u32 base, const char *mii_name,
-+			      u32 mii_base, int irq, void *pdata)
-+{
-+	struct resource *res;
-+
-+	ath25_eth[nr].dev.platform_data = pdata;
-+	res = &ath25_eth[nr].resource[0];
-+	res->start = base;
-+	res->end = base + 0x2000 - 1;
-+	res++;
-+	res->name = mii_name;
-+	res->start = mii_base;
-+	res->end = mii_base + 8 - 1;
-+	res++;
-+	res->start = irq;
-+	res->end = irq;
-+	return platform_device_register(&ath25_eth[nr]);
-+}
-+
- void __init ath25_serial_setup(u32 mapbase, int irq, unsigned int uartclk)
- {
- #ifdef CONFIG_SERIAL_8250_CONSOLE
---- a/arch/mips/include/asm/mach-ath25/ath25_platform.h
-+++ b/arch/mips/include/asm/mach-ath25/ath25_platform.h
-@@ -71,4 +71,15 @@ struct ar231x_board_config {
- 	const char *radio;
- };
- 
-+/*
-+ * Platform device information for the Ethernet MAC
-+ */
-+struct ar231x_eth {
-+	void (*reset_set)(u32);
-+	void (*reset_clear)(u32);
-+	u32 reset_mac;
-+	u32 reset_phy;
-+	char *macaddr;
-+};
-+
- #endif /* __ASM_MACH_ATH25_PLATFORM_H */
diff --git a/target/linux/ath25/patches-5.15/120-spiflash.patch b/target/linux/ath25/patches-5.15/120-spiflash.patch
deleted file mode 100644
index b7a9607ac9..0000000000
--- a/target/linux/ath25/patches-5.15/120-spiflash.patch
+++ /dev/null
@@ -1,631 +0,0 @@
---- a/drivers/mtd/devices/Kconfig
-+++ b/drivers/mtd/devices/Kconfig
-@@ -120,6 +120,10 @@ config MTD_BCM47XXSFLASH
- 	  registered by bcma as platform devices. This enables driver for
- 	  serial flash memories.
- 
-+config MTD_AR2315
-+	tristate "Atheros AR2315+ SPI Flash support"
-+	depends on SOC_AR2315
-+
- config MTD_SLRAM
- 	tristate "Uncached system RAM"
- 	help
---- a/drivers/mtd/devices/Makefile
-+++ b/drivers/mtd/devices/Makefile
-@@ -16,6 +16,7 @@ obj-$(CONFIG_MTD_MCHP23K256)	+= mchp23k2
- obj-$(CONFIG_MTD_MCHP48L640)	+= mchp48l640.o
- obj-$(CONFIG_MTD_SPEAR_SMI)	+= spear_smi.o
- obj-$(CONFIG_MTD_SST25L)	+= sst25l.o
-+obj-$(CONFIG_MTD_AR2315)	+= ar2315.o
- obj-$(CONFIG_MTD_BCM47XXSFLASH)	+= bcm47xxsflash.o
- obj-$(CONFIG_MTD_ST_SPI_FSM)    += st_spi_fsm.o
- obj-$(CONFIG_MTD_POWERNV_FLASH)	+= powernv_flash.o
---- /dev/null
-+++ b/drivers/mtd/devices/ar2315.c
-@@ -0,0 +1,456 @@
-+
-+/*
-+ * MTD driver for the SPI Flash Memory support on Atheros AR2315
-+ *
-+ * Copyright (c) 2005-2006 Atheros Communications Inc.
-+ * Copyright (C) 2006-2007 FON Technology, SL.
-+ * Copyright (C) 2006-2007 Imre Kaloz <kaloz at openwrt.org>
-+ * Copyright (C) 2006-2009 Felix Fietkau <nbd at nbd.name>
-+ * Copyright (C) 2012 Alexandros C. Couloumbis <alex at ozo.com>
-+ *
-+ * This code is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/partitions.h>
-+#include <linux/platform_device.h>
-+#include <linux/sched.h>
-+#include <linux/delay.h>
-+#include <linux/io.h>
-+#include <linux/mutex.h>
-+
-+#include "ar2315_spiflash.h"
-+
-+#define DRIVER_NAME "ar2315-spiflash"
-+
-+#define busy_wait(_priv, _condition, _wait) do { \
-+	while (_condition) { \
-+		if (_wait > 1) \
-+			msleep(_wait); \
-+		else if ((_wait == 1) && need_resched()) \
-+			schedule(); \
-+		else \
-+			udelay(1); \
-+	} \
-+} while (0)
-+
-+enum {
-+	FLASH_NONE,
-+	FLASH_1MB,
-+	FLASH_2MB,
-+	FLASH_4MB,
-+	FLASH_8MB,
-+	FLASH_16MB,
-+};
-+
-+/* Flash configuration table */
-+struct flashconfig {
-+	u32 byte_cnt;
-+	u32 sector_cnt;
-+	u32 sector_size;
-+};
-+
-+static const struct flashconfig flashconfig_tbl[] = {
-+	[FLASH_NONE] = { 0, 0, 0},
-+	[FLASH_1MB]  = { STM_1MB_BYTE_COUNT, STM_1MB_SECTOR_COUNT,
-+			 STM_1MB_SECTOR_SIZE},
-+	[FLASH_2MB]  = { STM_2MB_BYTE_COUNT, STM_2MB_SECTOR_COUNT,
-+			 STM_2MB_SECTOR_SIZE},
-+	[FLASH_4MB]  = { STM_4MB_BYTE_COUNT, STM_4MB_SECTOR_COUNT,
-+			 STM_4MB_SECTOR_SIZE},
-+	[FLASH_8MB]  = { STM_8MB_BYTE_COUNT, STM_8MB_SECTOR_COUNT,
-+			 STM_8MB_SECTOR_SIZE},
-+	[FLASH_16MB] = { STM_16MB_BYTE_COUNT, STM_16MB_SECTOR_COUNT,
-+			 STM_16MB_SECTOR_SIZE}
-+};
-+
-+/* Mapping of generic opcodes to STM serial flash opcodes */
-+enum {
-+	SPI_WRITE_ENABLE,
-+	SPI_WRITE_DISABLE,
-+	SPI_RD_STATUS,
-+	SPI_WR_STATUS,
-+	SPI_RD_DATA,
-+	SPI_FAST_RD_DATA,
-+	SPI_PAGE_PROGRAM,
-+	SPI_SECTOR_ERASE,
-+	SPI_BULK_ERASE,
-+	SPI_DEEP_PWRDOWN,
-+	SPI_RD_SIG,
-+};
-+
-+struct opcodes {
-+	__u16 code;
-+	__s8 tx_cnt;
-+	__s8 rx_cnt;
-+};
-+
-+static const struct opcodes stm_opcodes[] = {
-+	[SPI_WRITE_ENABLE] = {STM_OP_WR_ENABLE, 1, 0},
-+	[SPI_WRITE_DISABLE] = {STM_OP_WR_DISABLE, 1, 0},
-+	[SPI_RD_STATUS] = {STM_OP_RD_STATUS, 1, 1},
-+	[SPI_WR_STATUS] = {STM_OP_WR_STATUS, 1, 0},
-+	[SPI_RD_DATA] = {STM_OP_RD_DATA, 4, 4},
-+	[SPI_FAST_RD_DATA] = {STM_OP_FAST_RD_DATA, 5, 0},
-+	[SPI_PAGE_PROGRAM] = {STM_OP_PAGE_PGRM, 8, 0},
-+	[SPI_SECTOR_ERASE] = {STM_OP_SECTOR_ERASE, 4, 0},
-+	[SPI_BULK_ERASE] = {STM_OP_BULK_ERASE, 1, 0},
-+	[SPI_DEEP_PWRDOWN] = {STM_OP_DEEP_PWRDOWN, 1, 0},
-+	[SPI_RD_SIG] = {STM_OP_RD_SIG, 4, 1},
-+};
-+
-+/* Driver private data structure */
-+struct spiflash_priv {
-+	struct mtd_info mtd;
-+	void __iomem *readaddr; /* memory mapped data for read  */
-+	void __iomem *mmraddr;  /* memory mapped register space */
-+	struct mutex lock;	/* serialize registers access */
-+};
-+
-+#define to_spiflash(_mtd) container_of(_mtd, struct spiflash_priv, mtd)
-+
-+enum {
-+	FL_READY,
-+	FL_READING,
-+	FL_ERASING,
-+	FL_WRITING
-+};
-+
-+/*****************************************************************************/
-+
-+static u32
-+spiflash_read_reg(struct spiflash_priv *priv, int reg)
-+{
-+	return ioread32(priv->mmraddr + reg);
-+}
-+
-+static void
-+spiflash_write_reg(struct spiflash_priv *priv, int reg, u32 data)
-+{
-+	iowrite32(data, priv->mmraddr + reg);
-+}
-+
-+static u32
-+spiflash_wait_busy(struct spiflash_priv *priv)
-+{
-+	u32 reg;
-+
-+	busy_wait(priv, (reg = spiflash_read_reg(priv, SPI_FLASH_CTL)) &
-+		SPI_CTL_BUSY, 0);
-+	return reg;
-+}
-+
-+static u32
-+spiflash_sendcmd(struct spiflash_priv *priv, int opcode, u32 addr)
-+{
-+	const struct opcodes *op;
-+	u32 reg, mask;
-+
-+	op = &stm_opcodes[opcode];
-+	reg = spiflash_wait_busy(priv);
-+	spiflash_write_reg(priv, SPI_FLASH_OPCODE,
-+			   ((u32)op->code) | (addr << 8));
-+
-+	reg &= ~SPI_CTL_TX_RX_CNT_MASK;
-+	reg |= SPI_CTL_START | op->tx_cnt | (op->rx_cnt << 4);
-+
-+	spiflash_write_reg(priv, SPI_FLASH_CTL, reg);
-+	spiflash_wait_busy(priv);
-+
-+	if (!op->rx_cnt)
-+		return 0;
-+
-+	reg = spiflash_read_reg(priv, SPI_FLASH_DATA);
-+
-+	switch (op->rx_cnt) {
-+	case 1:
-+		mask = 0x000000ff;
-+		break;
-+	case 2:
-+		mask = 0x0000ffff;
-+		break;
-+	case 3:
-+		mask = 0x00ffffff;
-+		break;
-+	default:
-+		mask = 0xffffffff;
-+		break;
-+	}
-+	reg &= mask;
-+
-+	return reg;
-+}
-+
-+/*
-+ * Probe SPI flash device
-+ * Function returns 0 for failure.
-+ * and flashconfig_tbl array index for success.
-+ */
-+static int
-+spiflash_probe_chip(struct platform_device *pdev, struct spiflash_priv *priv)
-+{
-+	u32 sig = spiflash_sendcmd(priv, SPI_RD_SIG, 0);
-+	int flash_size;
-+
-+	switch (sig) {
-+	case STM_8MBIT_SIGNATURE:
-+		flash_size = FLASH_1MB;
-+		break;
-+	case STM_16MBIT_SIGNATURE:
-+		flash_size = FLASH_2MB;
-+		break;
-+	case STM_32MBIT_SIGNATURE:
-+		flash_size = FLASH_4MB;
-+		break;
-+	case STM_64MBIT_SIGNATURE:
-+		flash_size = FLASH_8MB;
-+		break;
-+	case STM_128MBIT_SIGNATURE:
-+		flash_size = FLASH_16MB;
-+		break;
-+	default:
-+		dev_warn(&pdev->dev, "read of flash device signature failed!\n");
-+		return 0;
-+	}
-+
-+	return flash_size;
-+}
-+
-+static void
-+spiflash_wait_complete(struct spiflash_priv *priv, unsigned int timeout)
-+{
-+	busy_wait(priv, spiflash_sendcmd(priv, SPI_RD_STATUS, 0) &
-+		SPI_STATUS_WIP, timeout);
-+}
-+
-+static int
-+spiflash_erase(struct mtd_info *mtd, struct erase_info *instr)
-+{
-+	struct spiflash_priv *priv = to_spiflash(mtd);
-+	const struct opcodes *op;
-+	u32 temp, reg;
-+
-+	if (instr->addr + instr->len > mtd->size)
-+		return -EINVAL;
-+
-+	mutex_lock(&priv->lock);
-+
-+	spiflash_sendcmd(priv, SPI_WRITE_ENABLE, 0);
-+	reg = spiflash_wait_busy(priv);
-+
-+	op = &stm_opcodes[SPI_SECTOR_ERASE];
-+	temp = ((u32)instr->addr << 8) | (u32)(op->code);
-+	spiflash_write_reg(priv, SPI_FLASH_OPCODE, temp);
-+
-+	reg &= ~SPI_CTL_TX_RX_CNT_MASK;
-+	reg |= op->tx_cnt | SPI_CTL_START;
-+	spiflash_write_reg(priv, SPI_FLASH_CTL, reg);
-+
-+	spiflash_wait_complete(priv, 20);
-+
-+	mutex_unlock(&priv->lock);
-+
-+	return 0;
-+}
-+
-+static int
-+spiflash_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,
-+	      u_char *buf)
-+{
-+	struct spiflash_priv *priv = to_spiflash(mtd);
-+
-+	if (!len)
-+		return 0;
-+
-+	if (from + len > mtd->size)
-+		return -EINVAL;
-+
-+	*retlen = len;
-+
-+	mutex_lock(&priv->lock);
-+
-+	memcpy_fromio(buf, priv->readaddr + from, len);
-+
-+	mutex_unlock(&priv->lock);
-+
-+	return 0;
-+}
-+
-+static int
-+spiflash_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen,
-+	       const u8 *buf)
-+{
-+	struct spiflash_priv *priv = to_spiflash(mtd);
-+	u32 opcode, bytes_left;
-+
-+	*retlen = 0;
-+
-+	if (!len)
-+		return 0;
-+
-+	if (to + len > mtd->size)
-+		return -EINVAL;
-+
-+	bytes_left = len;
-+
-+	do {
-+		u32 read_len, reg, page_offset, spi_data = 0;
-+
-+		read_len = min(bytes_left, sizeof(u32));
-+
-+		/* 32-bit writes cannot span across a page boundary
-+		 * (256 bytes). This types of writes require two page
-+		 * program operations to handle it correctly. The STM part
-+		 * will write the overflow data to the beginning of the
-+		 * current page as opposed to the subsequent page.
-+		 */
-+		page_offset = (to & (STM_PAGE_SIZE - 1)) + read_len;
-+
-+		if (page_offset > STM_PAGE_SIZE)
-+			read_len -= (page_offset - STM_PAGE_SIZE);
-+
-+		mutex_lock(&priv->lock);
-+
-+		spiflash_sendcmd(priv, SPI_WRITE_ENABLE, 0);
-+		spi_data = 0;
-+		switch (read_len) {
-+		case 4:
-+			spi_data |= buf[3] << 24;
-+			fallthrough;
-+		case 3:
-+			spi_data |= buf[2] << 16;
-+			fallthrough;
-+		case 2:
-+			spi_data |= buf[1] << 8;
-+			fallthrough;
-+		case 1:
-+			spi_data |= buf[0] & 0xff;
-+			break;
-+		default:
-+			break;
-+		}
-+
-+		spiflash_write_reg(priv, SPI_FLASH_DATA, spi_data);
-+		opcode = stm_opcodes[SPI_PAGE_PROGRAM].code |
-+			(to & 0x00ffffff) << 8;
-+		spiflash_write_reg(priv, SPI_FLASH_OPCODE, opcode);
-+
-+		reg = spiflash_read_reg(priv, SPI_FLASH_CTL);
-+		reg &= ~SPI_CTL_TX_RX_CNT_MASK;
-+		reg |= (read_len + 4) | SPI_CTL_START;
-+		spiflash_write_reg(priv, SPI_FLASH_CTL, reg);
-+
-+		spiflash_wait_complete(priv, 1);
-+
-+		mutex_unlock(&priv->lock);
-+
-+		bytes_left -= read_len;
-+		to += read_len;
-+		buf += read_len;
-+
-+		*retlen += read_len;
-+	} while (bytes_left != 0);
-+
-+	return 0;
-+}
-+
-+#if defined CONFIG_MTD_REDBOOT_PARTS || CONFIG_MTD_MYLOADER_PARTS
-+static const char * const part_probe_types[] = {
-+	"cmdlinepart", "RedBoot", "MyLoader", NULL
-+};
-+#endif
-+
-+static int
-+spiflash_probe(struct platform_device *pdev)
-+{
-+	struct spiflash_priv *priv;
-+	struct mtd_info *mtd;
-+	struct resource *res;
-+	int index;
-+	int result = 0;
-+
-+	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
-+	if (!priv)
-+		return -ENOMEM;
-+
-+	mutex_init(&priv->lock);
-+	mtd = &priv->mtd;
-+
-+	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-+	priv->mmraddr = devm_ioremap_resource(&pdev->dev, res);
-+	if (IS_ERR(priv->mmraddr)) {
-+		dev_warn(&pdev->dev, "failed to map flash MMR\n");
-+		return PTR_ERR(priv->mmraddr);
-+	}
-+
-+	index = spiflash_probe_chip(pdev, priv);
-+	if (!index) {
-+		dev_warn(&pdev->dev, "found no flash device\n");
-+		return -ENODEV;
-+	}
-+
-+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+	priv->readaddr = devm_ioremap_resource(&pdev->dev, res);
-+	if (IS_ERR(priv->readaddr)) {
-+		dev_warn(&pdev->dev, "failed to map flash read mem\n");
-+		return PTR_ERR(priv->readaddr);
-+	}
-+
-+	platform_set_drvdata(pdev, priv);
-+	mtd->name = "spiflash";
-+	mtd->type = MTD_NORFLASH;
-+	mtd->flags = (MTD_CAP_NORFLASH|MTD_WRITEABLE);
-+	mtd->size = flashconfig_tbl[index].byte_cnt;
-+	mtd->erasesize = flashconfig_tbl[index].sector_size;
-+	mtd->writesize = 1;
-+	mtd->numeraseregions = 0;
-+	mtd->eraseregions = NULL;
-+	mtd->_erase = spiflash_erase;
-+	mtd->_read = spiflash_read;
-+	mtd->_write = spiflash_write;
-+	mtd->owner = THIS_MODULE;
-+
-+	dev_info(&pdev->dev, "%lld Kbytes flash detected\n", mtd->size >> 10);
-+
-+#if defined CONFIG_MTD_REDBOOT_PARTS || CONFIG_MTD_MYLOADER_PARTS
-+	/* parse redboot partitions */
-+
-+	result = mtd_device_parse_register(mtd, part_probe_types,
-+					   NULL, NULL, 0);
-+#endif
-+
-+	return result;
-+}
-+
-+static int
-+spiflash_remove(struct platform_device *pdev)
-+{
-+	struct spiflash_priv *priv = platform_get_drvdata(pdev);
-+
-+	mtd_device_unregister(&priv->mtd);
-+
-+	return 0;
-+}
-+
-+static struct platform_driver spiflash_driver = {
-+	.driver.name = DRIVER_NAME,
-+	.probe = spiflash_probe,
-+	.remove = spiflash_remove,
-+};
-+
-+module_platform_driver(spiflash_driver);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("OpenWrt.org");
-+MODULE_AUTHOR("Atheros Communications Inc");
-+MODULE_DESCRIPTION("MTD driver for SPI Flash on Atheros AR2315+ SOC");
-+MODULE_ALIAS("platform:" DRIVER_NAME);
-+
---- /dev/null
-+++ b/drivers/mtd/devices/ar2315_spiflash.h
-@@ -0,0 +1,106 @@
-+/*
-+ * Atheros AR2315 SPI Flash Memory support header file.
-+ *
-+ * Copyright (c) 2005, Atheros Communications Inc.
-+ * Copyright (C) 2006 FON Technology, SL.
-+ * Copyright (C) 2006 Imre Kaloz <kaloz at openwrt.org>
-+ * Copyright (C) 2006-2009 Felix Fietkau <nbd at nbd.name>
-+ *
-+ * This code is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+#ifndef __AR2315_SPIFLASH_H
-+#define __AR2315_SPIFLASH_H
-+
-+#define STM_PAGE_SIZE           256
-+
-+#define SFI_WRITE_BUFFER_SIZE   4
-+#define SFI_FLASH_ADDR_MASK     0x00ffffff
-+
-+#define STM_8MBIT_SIGNATURE     0x13
-+#define STM_M25P80_BYTE_COUNT   1048576
-+#define STM_M25P80_SECTOR_COUNT 16
-+#define STM_M25P80_SECTOR_SIZE  0x10000
-+
-+#define STM_16MBIT_SIGNATURE    0x14
-+#define STM_M25P16_BYTE_COUNT   2097152
-+#define STM_M25P16_SECTOR_COUNT 32
-+#define STM_M25P16_SECTOR_SIZE  0x10000
-+
-+#define STM_32MBIT_SIGNATURE    0x15
-+#define STM_M25P32_BYTE_COUNT   4194304
-+#define STM_M25P32_SECTOR_COUNT 64
-+#define STM_M25P32_SECTOR_SIZE  0x10000
-+
-+#define STM_64MBIT_SIGNATURE    0x16
-+#define STM_M25P64_BYTE_COUNT   8388608
-+#define STM_M25P64_SECTOR_COUNT 128
-+#define STM_M25P64_SECTOR_SIZE  0x10000
-+
-+#define STM_128MBIT_SIGNATURE   0x17
-+#define STM_M25P128_BYTE_COUNT   16777216
-+#define STM_M25P128_SECTOR_COUNT 256
-+#define STM_M25P128_SECTOR_SIZE  0x10000
-+
-+#define STM_1MB_BYTE_COUNT   STM_M25P80_BYTE_COUNT
-+#define STM_1MB_SECTOR_COUNT STM_M25P80_SECTOR_COUNT
-+#define STM_1MB_SECTOR_SIZE  STM_M25P80_SECTOR_SIZE
-+#define STM_2MB_BYTE_COUNT   STM_M25P16_BYTE_COUNT
-+#define STM_2MB_SECTOR_COUNT STM_M25P16_SECTOR_COUNT
-+#define STM_2MB_SECTOR_SIZE  STM_M25P16_SECTOR_SIZE
-+#define STM_4MB_BYTE_COUNT   STM_M25P32_BYTE_COUNT
-+#define STM_4MB_SECTOR_COUNT STM_M25P32_SECTOR_COUNT
-+#define STM_4MB_SECTOR_SIZE  STM_M25P32_SECTOR_SIZE
-+#define STM_8MB_BYTE_COUNT   STM_M25P64_BYTE_COUNT
-+#define STM_8MB_SECTOR_COUNT STM_M25P64_SECTOR_COUNT
-+#define STM_8MB_SECTOR_SIZE  STM_M25P64_SECTOR_SIZE
-+#define STM_16MB_BYTE_COUNT   STM_M25P128_BYTE_COUNT
-+#define STM_16MB_SECTOR_COUNT STM_M25P128_SECTOR_COUNT
-+#define STM_16MB_SECTOR_SIZE  STM_M25P128_SECTOR_SIZE
-+
-+/*
-+ * ST Microelectronics Opcodes for Serial Flash
-+ */
-+
-+#define STM_OP_WR_ENABLE       0x06     /* Write Enable */
-+#define STM_OP_WR_DISABLE      0x04     /* Write Disable */
-+#define STM_OP_RD_STATUS       0x05     /* Read Status */
-+#define STM_OP_WR_STATUS       0x01     /* Write Status */
-+#define STM_OP_RD_DATA         0x03     /* Read Data */
-+#define STM_OP_FAST_RD_DATA    0x0b     /* Fast Read Data */
-+#define STM_OP_PAGE_PGRM       0x02     /* Page Program */
-+#define STM_OP_SECTOR_ERASE    0xd8     /* Sector Erase */
-+#define STM_OP_BULK_ERASE      0xc7     /* Bulk Erase */
-+#define STM_OP_DEEP_PWRDOWN    0xb9     /* Deep Power-Down Mode */
-+#define STM_OP_RD_SIG          0xab     /* Read Electronic Signature */
-+
-+#define STM_STATUS_WIP       0x01       /* Write-In-Progress */
-+#define STM_STATUS_WEL       0x02       /* Write Enable Latch */
-+#define STM_STATUS_BP0       0x04       /* Block Protect 0 */
-+#define STM_STATUS_BP1       0x08       /* Block Protect 1 */
-+#define STM_STATUS_BP2       0x10       /* Block Protect 2 */
-+#define STM_STATUS_SRWD      0x80       /* Status Register Write Disable */
-+
-+/*
-+ * SPI Flash Interface Registers
-+ */
-+
-+#define SPI_FLASH_CTL           0x00
-+#define SPI_FLASH_OPCODE        0x04
-+#define SPI_FLASH_DATA          0x08
-+
-+#define SPI_CTL_START           0x00000100
-+#define SPI_CTL_BUSY            0x00010000
-+#define SPI_CTL_TXCNT_MASK      0x0000000f
-+#define SPI_CTL_RXCNT_MASK      0x000000f0
-+#define SPI_CTL_TX_RX_CNT_MASK  0x000000ff
-+#define SPI_CTL_SIZE_MASK       0x00060000
-+
-+#define SPI_CTL_CLK_SEL_MASK    0x03000000
-+#define SPI_OPCODE_MASK         0x000000ff
-+
-+#define SPI_STATUS_WIP		STM_STATUS_WIP
-+
-+#endif
---- a/arch/mips/ath25/ar2315.c
-+++ b/arch/mips/ath25/ar2315.c
-@@ -218,6 +218,28 @@ static struct platform_device ar2315_gpi
- 	.num_resources = ARRAY_SIZE(ar2315_gpio_res)
- };
- 
-+static struct resource ar2315_spiflash_res[] = {
-+	{
-+		.name = "spiflash_read",
-+		.flags = IORESOURCE_MEM,
-+		.start = AR2315_SPI_READ_BASE,
-+		.end = AR2315_SPI_READ_BASE + AR2315_SPI_READ_SIZE - 1,
-+	},
-+	{
-+		.name = "spiflash_mmr",
-+		.flags = IORESOURCE_MEM,
-+		.start = AR2315_SPI_MMR_BASE,
-+		.end = AR2315_SPI_MMR_BASE + AR2315_SPI_MMR_SIZE - 1,
-+	},
-+};
-+
-+static struct platform_device ar2315_spiflash = {
-+	.id = 0,
-+	.name = "ar2315-spiflash",
-+	.resource = ar2315_spiflash_res,
-+	.num_resources = ARRAY_SIZE(ar2315_spiflash_res)
-+};
-+
- void __init ar2315_init_devices(void)
- {
- 	/* Find board configuration */
-@@ -228,6 +250,8 @@ void __init ar2315_init_devices(void)
- 	ar2315_gpio_res[1].end = ar2315_gpio_res[1].start;
- 	platform_device_register(&ar2315_gpio);
- 
-+	platform_device_register(&ar2315_spiflash);
-+
- 	ar2315_eth_data.macaddr = ath25_board.config->enet0_mac;
- 	ath25_add_ethernet(0, AR2315_ENET0_BASE, "eth0_mii",
- 			   AR2315_ENET0_MII_BASE, AR2315_IRQ_ENET0,
diff --git a/target/linux/ath25/patches-5.15/130-watchdog.patch b/target/linux/ath25/patches-5.15/130-watchdog.patch
deleted file mode 100644
index eb0bc5630d..0000000000
--- a/target/linux/ath25/patches-5.15/130-watchdog.patch
+++ /dev/null
@@ -1,277 +0,0 @@
---- /dev/null
-+++ b/drivers/watchdog/ar2315-wtd.c
-@@ -0,0 +1,209 @@
-+/*
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ *
-+ * Copyright (C) 2008 John Crispin <blogic at openwrt.org>
-+ * Based on EP93xx and ifxmips wdt driver
-+ */
-+
-+#include <linux/interrupt.h>
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/types.h>
-+#include <linux/miscdevice.h>
-+#include <linux/watchdog.h>
-+#include <linux/fs.h>
-+#include <linux/ioport.h>
-+#include <linux/notifier.h>
-+#include <linux/reboot.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/io.h>
-+#include <linux/uaccess.h>
-+
-+#define DRIVER_NAME	"ar2315-wdt"
-+
-+#define CLOCK_RATE 40000000
-+#define HEARTBEAT(x) (x < 1 || x > 90 ? 20 : x)
-+
-+#define WDT_REG_TIMER		0x00
-+#define WDT_REG_CTRL		0x04
-+
-+#define WDT_CTRL_ACT_NONE	0x00000000	/* No action */
-+#define WDT_CTRL_ACT_NMI	0x00000001	/* NMI on watchdog */
-+#define WDT_CTRL_ACT_RESET	0x00000002	/* reset on watchdog */
-+
-+static int wdt_timeout = 20;
-+static int started;
-+static int in_use;
-+static void __iomem *wdt_base;
-+
-+static inline void ar2315_wdt_wr(unsigned reg, u32 val)
-+{
-+	iowrite32(val, wdt_base + reg);
-+}
-+
-+static void
-+ar2315_wdt_enable(void)
-+{
-+	ar2315_wdt_wr(WDT_REG_TIMER, wdt_timeout * CLOCK_RATE);
-+}
-+
-+static ssize_t
-+ar2315_wdt_write(struct file *file, const char __user *data, size_t len,
-+		 loff_t *ppos)
-+{
-+	if (len)
-+		ar2315_wdt_enable();
-+	return len;
-+}
-+
-+static int
-+ar2315_wdt_open(struct inode *inode, struct file *file)
-+{
-+	if (in_use)
-+		return -EBUSY;
-+	ar2315_wdt_enable();
-+	in_use = 1;
-+	started = 1;
-+	return nonseekable_open(inode, file);
-+}
-+
-+static int
-+ar2315_wdt_release(struct inode *inode, struct file *file)
-+{
-+	in_use = 0;
-+	return 0;
-+}
-+
-+static irqreturn_t
-+ar2315_wdt_interrupt(int irq, void *dev)
-+{
-+	struct platform_device *pdev = (struct platform_device *)dev;
-+
-+	if (started) {
-+		dev_crit(&pdev->dev, "watchdog expired, rebooting system\n");
-+		emergency_restart();
-+	} else {
-+		ar2315_wdt_wr(WDT_REG_CTRL, 0);
-+		ar2315_wdt_wr(WDT_REG_TIMER, 0);
-+	}
-+	return IRQ_HANDLED;
-+}
-+
-+static struct watchdog_info ident = {
-+	.options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
-+	.identity = "ar2315 Watchdog",
-+};
-+
-+static long
-+ar2315_wdt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
-+{
-+	int new_wdt_timeout;
-+	int ret = -ENOIOCTLCMD;
-+
-+	switch (cmd) {
-+	case WDIOC_GETSUPPORT:
-+		ret = copy_to_user((void __user *)arg, &ident, sizeof(ident)) ?
-+		      -EFAULT : 0;
-+		break;
-+	case WDIOC_KEEPALIVE:
-+		ar2315_wdt_enable();
-+		ret = 0;
-+		break;
-+	case WDIOC_SETTIMEOUT:
-+		ret = get_user(new_wdt_timeout, (int __user *)arg);
-+		if (ret)
-+			break;
-+		wdt_timeout = HEARTBEAT(new_wdt_timeout);
-+		ar2315_wdt_enable();
-+		break;
-+	case WDIOC_GETTIMEOUT:
-+		ret = put_user(wdt_timeout, (int __user *)arg);
-+		break;
-+	}
-+	return ret;
-+}
-+
-+static const struct file_operations ar2315_wdt_fops = {
-+	.owner		= THIS_MODULE,
-+	.llseek		= no_llseek,
-+	.write		= ar2315_wdt_write,
-+	.unlocked_ioctl	= ar2315_wdt_ioctl,
-+	.open		= ar2315_wdt_open,
-+	.release	= ar2315_wdt_release,
-+};
-+
-+static struct miscdevice ar2315_wdt_miscdev = {
-+	.minor	= WATCHDOG_MINOR,
-+	.name	= "watchdog",
-+	.fops	= &ar2315_wdt_fops,
-+};
-+
-+static int
-+ar2315_wdt_probe(struct platform_device *dev)
-+{
-+	struct resource *mem_res, *irq_res;
-+	int ret = 0;
-+
-+	if (wdt_base)
-+		return -EBUSY;
-+
-+	irq_res = platform_get_resource(dev, IORESOURCE_IRQ, 0);
-+	if (!irq_res) {
-+		dev_err(&dev->dev, "no IRQ resource\n");
-+		return -ENOENT;
-+	}
-+
-+	mem_res = platform_get_resource(dev, IORESOURCE_MEM, 0);
-+	wdt_base = devm_ioremap_resource(&dev->dev, mem_res);
-+	if (IS_ERR(wdt_base))
-+		return PTR_ERR(wdt_base);
-+
-+	ret = devm_request_irq(&dev->dev, irq_res->start, ar2315_wdt_interrupt,
-+			       0, DRIVER_NAME, dev);
-+	if (ret) {
-+		dev_err(&dev->dev, "failed to register inetrrupt\n");
-+		goto out;
-+	}
-+
-+	ret = misc_register(&ar2315_wdt_miscdev);
-+	if (ret)
-+		dev_err(&dev->dev, "failed to register miscdev\n");
-+
-+out:
-+	return ret;
-+}
-+
-+static int
-+ar2315_wdt_remove(struct platform_device *dev)
-+{
-+	misc_deregister(&ar2315_wdt_miscdev);
-+	return 0;
-+}
-+
-+static struct platform_driver ar2315_wdt_driver = {
-+	.probe = ar2315_wdt_probe,
-+	.remove = ar2315_wdt_remove,
-+	.driver = {
-+		.name = DRIVER_NAME,
-+		.owner = THIS_MODULE,
-+	},
-+};
-+
-+module_platform_driver(ar2315_wdt_driver);
-+
-+MODULE_DESCRIPTION("Atheros AR2315 hardware watchdog driver");
-+MODULE_AUTHOR("John Crispin <blogic at openwrt.org>");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:" DRIVER_NAME);
---- a/drivers/watchdog/Kconfig
-+++ b/drivers/watchdog/Kconfig
-@@ -1829,6 +1829,13 @@ config PIC32_DMT
- 	  To compile this driver as a loadable module, choose M here.
- 	  The module will be called pic32-dmt.
- 
-+config AR2315_WDT
-+	tristate "Atheros AR2315+ WiSoCs Watchdog Timer"
-+	depends on ATH25
-+	help
-+	  Hardware driver for the built-in watchdog timer on the Atheros
-+	  AR2315/AR2316 WiSoCs.
-+
- # PARISC Architecture
- 
- # POWERPC Architecture
---- a/drivers/watchdog/Makefile
-+++ b/drivers/watchdog/Makefile
-@@ -161,6 +161,7 @@ obj-$(CONFIG_JZ4740_WDT) += jz4740_wdt.o
- obj-$(CONFIG_WDT_MTX1) += mtx-1_wdt.o
- obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o
- obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
-+obj-$(CONFIG_AR2315_WDT) += ar2315-wtd.o
- obj-$(CONFIG_TXX9_WDT) += txx9wdt.o
- obj-$(CONFIG_OCTEON_WDT) += octeon-wdt.o
- octeon-wdt-y := octeon-wdt-main.o octeon-wdt-nmi.o
---- a/arch/mips/ath25/ar2315.c
-+++ b/arch/mips/ath25/ar2315.c
-@@ -218,6 +218,24 @@ static struct platform_device ar2315_gpi
- 	.num_resources = ARRAY_SIZE(ar2315_gpio_res)
- };
- 
-+static struct resource ar2315_wdt_res[] = {
-+	{
-+		.flags = IORESOURCE_MEM,
-+		.start = AR2315_RST_BASE + AR2315_WDT_TIMER,
-+		.end = AR2315_RST_BASE + AR2315_WDT_TIMER + 8 - 1,
-+	},
-+	{
-+		.flags = IORESOURCE_IRQ,
-+	}
-+};
-+
-+static struct platform_device ar2315_wdt = {
-+	.id = 0,
-+	.name = "ar2315-wdt",
-+	.resource = ar2315_wdt_res,
-+	.num_resources = ARRAY_SIZE(ar2315_wdt_res)
-+};
-+
- static struct resource ar2315_spiflash_res[] = {
- 	{
- 		.name = "spiflash_read",
-@@ -250,6 +268,11 @@ void __init ar2315_init_devices(void)
- 	ar2315_gpio_res[1].end = ar2315_gpio_res[1].start;
- 	platform_device_register(&ar2315_gpio);
- 
-+	ar2315_wdt_res[1].start = irq_create_mapping(ar2315_misc_irq_domain,
-+						     AR2315_MISC_IRQ_WATCHDOG);
-+	ar2315_wdt_res[1].end = ar2315_wdt_res[1].start;
-+	platform_device_register(&ar2315_wdt);
-+
- 	platform_device_register(&ar2315_spiflash);
- 
- 	ar2315_eth_data.macaddr = ath25_board.config->enet0_mac;
diff --git a/target/linux/ath25/patches-5.15/140-redboot_boardconfig.patch b/target/linux/ath25/patches-5.15/140-redboot_boardconfig.patch
deleted file mode 100644
index 5f506aaa3a..0000000000
--- a/target/linux/ath25/patches-5.15/140-redboot_boardconfig.patch
+++ /dev/null
@@ -1,60 +0,0 @@
---- a/drivers/mtd/parsers/redboot.c
-+++ b/drivers/mtd/parsers/redboot.c
-@@ -16,6 +16,8 @@
- #include <linux/mtd/partitions.h>
- #include <linux/module.h>
- 
-+#define BOARD_CONFIG_PART		"boardconfig"
-+
- struct fis_image_desc {
- 	unsigned char name[16];      // Null terminated name
- 	u32	  flash_base;    // Address within FLASH of image
-@@ -73,6 +75,7 @@ static int parse_redboot_partitions(stru
- 				    const struct mtd_partition **pparts,
- 				    struct mtd_part_parser_data *data)
- {
-+	unsigned long max_offset = 0;
- 	int nrparts = 0;
- 	struct fis_image_desc *buf;
- 	struct mtd_partition *parts;
-@@ -239,14 +242,15 @@ nogood:
- 		}
- 	}
- #endif
--	parts = kzalloc(sizeof(*parts) * nrparts + nulllen + namelen, GFP_KERNEL);
-+	parts = kzalloc(sizeof(*parts) * (nrparts + 1) + nulllen + namelen +
-+			sizeof(BOARD_CONFIG_PART), GFP_KERNEL);
- 
- 	if (!parts) {
- 		ret = -ENOMEM;
- 		goto out;
- 	}
- 
--	nullname = (char *)&parts[nrparts];
-+	nullname = (char *)&parts[nrparts + 1];
- #ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
- 	if (nulllen > 0)
- 		strcpy(nullname, nullstring);
-@@ -264,6 +268,8 @@ nogood:
- 	}
- #endif
- 	for ( ; i < nrparts; i++) {
-+		if (max_offset < buf[i].flash_base + buf[i].size)
-+				max_offset = buf[i].flash_base + buf[i].size;
- 		parts[i].size = fl->img->size;
- 		parts[i].offset = fl->img->flash_base;
- 		parts[i].name = names;
-@@ -297,6 +303,13 @@ nogood:
- 		fl = fl->next;
- 		kfree(tmp_fl);
- 	}
-+	if (master->size - max_offset >= master->erasesize) {
-+		parts[nrparts].size = master->size - max_offset;
-+		parts[nrparts].offset = max_offset;
-+		parts[nrparts].name = names;
-+		strcpy(names, BOARD_CONFIG_PART);
-+		nrparts++;
-+	}
- 	ret = nrparts;
- 	*pparts = parts;
-  out:
diff --git a/target/linux/ath25/patches-5.15/141-redboot_partition_scan.patch b/target/linux/ath25/patches-5.15/141-redboot_partition_scan.patch
deleted file mode 100644
index f9c98c9a37..0000000000
--- a/target/linux/ath25/patches-5.15/141-redboot_partition_scan.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- a/drivers/mtd/parsers/redboot.c
-+++ b/drivers/mtd/parsers/redboot.c
-@@ -94,12 +94,18 @@ static int parse_redboot_partitions(stru
- 
- 	parse_redboot_of(master);
- 
-+	buf = vmalloc(master->erasesize);
-+	if (!buf)
-+		return -ENOMEM;
-+
-+restart:
- 	if (directory < 0) {
- 		offset = master->size + directory * master->erasesize;
- 		while (mtd_block_isbad(master, offset)) {
- 			if (!offset) {
- nogood:
- 				pr_notice("Failed to find a non-bad block to check for RedBoot partition table\n");
-+				vfree(buf);
- 				return -EIO;
- 			}
- 			offset -= master->erasesize;
-@@ -112,10 +118,6 @@ nogood:
- 				goto nogood;
- 		}
- 	}
--	buf = vmalloc(master->erasesize);
--
--	if (!buf)
--		return -ENOMEM;
- 
- 	pr_notice("Searching for RedBoot partition table in %s at offset 0x%lx\n",
- 		  master->name, offset);
-@@ -187,6 +189,11 @@ nogood:
- 	}
- 	if (i == numslots) {
- 		/* Didn't find it */
-+		if (offset + master->erasesize < master->size) {
-+			/* not at the end of the flash yet, maybe next block */
-+			directory++;
-+			goto restart;
-+		}
- 		pr_notice("No RedBoot partition table detected in %s\n",
- 			  master->name);
- 		ret = 0;
diff --git a/target/linux/ath25/patches-5.15/142-redboot_various_erase_size_fix.patch b/target/linux/ath25/patches-5.15/142-redboot_various_erase_size_fix.patch
deleted file mode 100644
index ca9e686177..0000000000
--- a/target/linux/ath25/patches-5.15/142-redboot_various_erase_size_fix.patch
+++ /dev/null
@@ -1,83 +0,0 @@
---- a/drivers/mtd/parsers/redboot.c
-+++ b/drivers/mtd/parsers/redboot.c
-@@ -71,6 +71,22 @@ static void parse_redboot_of(struct mtd_
- 	directory = dirblock;
- }
- 
-+static uint32_t mtd_get_offset_erasesize(struct mtd_info *mtd, uint64_t offset)
-+{
-+	struct mtd_erase_region_info *regions = mtd->eraseregions;
-+	int i;
-+
-+	for (i = 0; i < mtd->numeraseregions; i++) {
-+		if (regions[i].offset +
-+		    regions[i].numblocks * regions[i].erasesize <= offset)
-+			continue;
-+
-+		return regions[i].erasesize;
-+	}
-+
-+	return mtd->erasesize;
-+}
-+
- static int parse_redboot_partitions(struct mtd_info *master,
- 				    const struct mtd_partition **pparts,
- 				    struct mtd_part_parser_data *data)
-@@ -87,6 +103,7 @@ static int parse_redboot_partitions(stru
- 	int namelen = 0;
- 	int nulllen = 0;
- 	int numslots;
-+	int first_slot;
- 	unsigned long offset;
- #ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
- 	static char nullstring[] = "unallocated";
-@@ -134,7 +151,9 @@ nogood:
- 	}
- 
- 	numslots = (master->erasesize / sizeof(struct fis_image_desc));
--	for (i = 0; i < numslots; i++) {
-+	first_slot = (buf[i].flash_base & (master->erasesize - 1)) /
-+				  sizeof(struct fis_image_desc);
-+	for (i = first_slot; i < first_slot + numslots; i++) {
- 		if (!memcmp(buf[i].name, "FIS directory", 14)) {
- 			/* This is apparently the FIS directory entry for the
- 			 * FIS directory itself.  The FIS directory size is
-@@ -200,7 +219,10 @@ nogood:
- 		goto out;
- 	}
- 
--	for (i = 0; i < numslots; i++) {
-+	first_slot = (buf[i].flash_base & (master->erasesize - 1)) /
-+		     sizeof(struct fis_image_desc);
-+
-+	for (i = first_slot; i < first_slot + numslots; i++) {
- 		struct fis_list *new_fl, **prev;
- 
- 		if (buf[i].name[0] == 0xff) {
-@@ -275,12 +297,13 @@ nogood:
- 	}
- #endif
- 	for ( ; i < nrparts; i++) {
--		if (max_offset < buf[i].flash_base + buf[i].size)
--				max_offset = buf[i].flash_base + buf[i].size;
- 		parts[i].size = fl->img->size;
- 		parts[i].offset = fl->img->flash_base;
- 		parts[i].name = names;
- 
-+		if (max_offset < parts[i].offset + parts[i].size)
-+				max_offset = parts[i].offset + parts[i].size;
-+
- 		strcpy(names, fl->img->name);
- #ifdef CONFIG_MTD_REDBOOT_PARTS_READONLY
- 		if (!memcmp(names, "RedBoot", 8) ||
-@@ -310,7 +333,9 @@ nogood:
- 		fl = fl->next;
- 		kfree(tmp_fl);
- 	}
--	if (master->size - max_offset >= master->erasesize) {
-+
-+	if (master->size - max_offset >=
-+	    mtd_get_offset_erasesize(master, max_offset)) {
- 		parts[nrparts].size = master->size - max_offset;
- 		parts[nrparts].offset = max_offset;
- 		parts[nrparts].name = names;
diff --git a/target/linux/ath25/patches-5.15/210-reset_button.patch b/target/linux/ath25/patches-5.15/210-reset_button.patch
deleted file mode 100644
index b3f7a14cda..0000000000
--- a/target/linux/ath25/patches-5.15/210-reset_button.patch
+++ /dev/null
@@ -1,71 +0,0 @@
---- a/arch/mips/ath25/Makefile
-+++ b/arch/mips/ath25/Makefile
-@@ -8,7 +8,7 @@
- # Copyright (C) 2006-2009 Felix Fietkau <nbd at openwrt.org>
- #
- 
--obj-y += board.o prom.o devices.o
-+obj-y += board.o prom.o devices.o reset.o
- 
- obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
- 
---- /dev/null
-+++ b/arch/mips/ath25/reset.c
-@@ -0,0 +1,57 @@
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/platform_device.h>
-+#include <linux/gpio_keys.h>
-+#include <linux/input.h>
-+#include <ath25_platform.h>
-+#include "devices.h"
-+
-+static int __init
-+ar231x_init_reset(void)
-+{
-+	struct platform_device *pdev;
-+	struct gpio_keys_platform_data pdata;
-+	struct gpio_keys_button *p;
-+	int err;
-+
-+	if (ath25_board.config->reset_config_gpio == 0xffff)
-+		return -ENODEV;
-+
-+	p = kzalloc(sizeof(*p), GFP_KERNEL);
-+	if (!p)
-+		goto err;
-+
-+	p->desc = "reset";
-+	p->type = EV_KEY;
-+	p->code = KEY_RESTART;
-+	p->debounce_interval = 60;
-+	p->gpio = ath25_board.config->reset_config_gpio;
-+
-+	memset(&pdata, 0, sizeof(pdata));
-+	pdata.poll_interval = 20;
-+	pdata.buttons = p;
-+	pdata.nbuttons = 1;
-+
-+	pdev = platform_device_alloc("gpio-keys-polled", 0);
-+	if (!pdev)
-+		goto err_free;
-+
-+	err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
-+	if (err)
-+		goto err_put_pdev;
-+
-+	err = platform_device_add(pdev);
-+	if (err)
-+		goto err_put_pdev;
-+
-+	return 0;
-+
-+err_put_pdev:
-+	platform_device_put(pdev);
-+err_free:
-+	kfree(p);
-+err:
-+	return -ENOMEM;
-+}
-+
-+device_initcall(ar231x_init_reset);
diff --git a/target/linux/ath25/patches-5.15/220-enet_micrel_workaround.patch b/target/linux/ath25/patches-5.15/220-enet_micrel_workaround.patch
deleted file mode 100644
index b97cb3622f..0000000000
--- a/target/linux/ath25/patches-5.15/220-enet_micrel_workaround.patch
+++ /dev/null
@@ -1,111 +0,0 @@
---- a/drivers/net/ethernet/atheros/ar231x/ar231x.c
-+++ b/drivers/net/ethernet/atheros/ar231x/ar231x.c
-@@ -133,6 +133,7 @@ static int ar231x_mdiobus_write(struct m
- static int ar231x_mdiobus_reset(struct mii_bus *bus);
- static int ar231x_mdiobus_probe(struct net_device *dev);
- static void ar231x_adjust_link(struct net_device *dev);
-+static bool no_phy;
- 
- #ifndef ERR
- #define ERR(fmt, args...) printk("%s: " fmt, __func__, ##args)
-@@ -164,6 +165,32 @@ static const struct net_device_ops ar231
- #endif
- };
- 
-+static int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id)
-+{
-+	int phy_reg;
-+
-+	/**
-+	 * Grab the bits from PHYIR1, and put them
-+	 * in the upper half.
-+	 */
-+	phy_reg = mdiobus_read(bus, addr, MII_PHYSID1);
-+
-+	if (phy_reg < 0)
-+		return -EIO;
-+
-+	*phy_id = (phy_reg & 0xffff) << 16;
-+
-+	/* Grab the bits from PHYIR2, and put them in the lower half */
-+	phy_reg = mdiobus_read(bus, addr, MII_PHYSID2);
-+
-+	if (phy_reg < 0)
-+		return -EIO;
-+
-+	*phy_id |= (phy_reg & 0xffff);
-+
-+	return 0;
-+}
-+
- static int ar231x_probe(struct platform_device *pdev)
- {
- 	struct net_device *dev;
-@@ -271,6 +298,24 @@ static int ar231x_probe(struct platform_
- 
- 	mdiobus_register(sp->mii_bus);
- 
-+	/**
-+	 * Workaround for Micrel switch, which is only available on
-+	 * one PHY and cannot be configured through MDIO.
-+	 */
-+	if (!no_phy) {
-+		u32 phy_id = 0;
-+
-+		get_phy_id(sp->mii_bus, 1, &phy_id);
-+		if (phy_id == 0x00221450)
-+			no_phy = true;
-+	}
-+	if (no_phy) {
-+		sp->link = 1;
-+		netif_carrier_on(dev);
-+		return 0;
-+	}
-+	no_phy = true;
-+
- 	if (ar231x_mdiobus_probe(dev) != 0) {
- 		printk(KERN_ERR "%s: mdiobus_probe failed\n", dev->name);
- 		rx_tasklet_cleanup(dev);
-@@ -324,8 +369,10 @@ static int ar231x_remove(struct platform
- 	rx_tasklet_cleanup(dev);
- 	ar231x_init_cleanup(dev);
- 	unregister_netdev(dev);
--	mdiobus_unregister(sp->mii_bus);
--	mdiobus_free(sp->mii_bus);
-+	if (sp->mii_bus) {
-+		mdiobus_unregister(sp->mii_bus);
-+		mdiobus_free(sp->mii_bus);
-+	}
- 	kfree(dev);
- 	return 0;
- }
-@@ -868,7 +915,8 @@ static int ar231x_open(struct net_device
- 
- 	sp->eth_regs->mac_control |= MAC_CONTROL_RE;
- 
--	phy_start(sp->phy_dev);
-+	if (sp->phy_dev)
-+		phy_start(sp->phy_dev);
- 
- 	return 0;
- }
-@@ -949,7 +997,8 @@ static int ar231x_close(struct net_devic
- 
- #endif
- 
--	phy_stop(sp->phy_dev);
-+	if (sp->phy_dev)
-+		phy_stop(sp->phy_dev);
- 
- 	return 0;
- }
-@@ -993,6 +1042,9 @@ static int ar231x_ioctl(struct net_devic
- {
- 	struct ar231x_private *sp = netdev_priv(dev);
- 
-+	if (!sp->phy_dev)
-+		return -ENODEV;
-+
- 	switch (cmd) {
- 	case SIOCGMIIPHY:
- 	case SIOCGMIIREG:
diff --git a/target/linux/ath25/patches-5.15/330-board_leds.patch b/target/linux/ath25/patches-5.15/330-board_leds.patch
deleted file mode 100644
index 3d762db80e..0000000000
--- a/target/linux/ath25/patches-5.15/330-board_leds.patch
+++ /dev/null
@@ -1,116 +0,0 @@
---- a/arch/mips/ath25/ar2315.c
-+++ b/arch/mips/ath25/ar2315.c
-@@ -24,6 +24,7 @@
- #include <linux/reboot.h>
- #include <linux/delay.h>
- #include <linux/gpio.h>
-+#include <linux/leds.h>
- #include <asm/bootinfo.h>
- #include <asm/reboot.h>
- #include <asm/time.h>
-@@ -258,6 +259,50 @@ static struct platform_device ar2315_spi
- 	.num_resources = ARRAY_SIZE(ar2315_spiflash_res)
- };
- 
-+#ifdef CONFIG_LEDS_GPIO
-+static struct gpio_led ar2315_leds[6];
-+static struct gpio_led_platform_data ar2315_led_data = {
-+	.leds = (void *)ar2315_leds,
-+};
-+
-+static struct platform_device ar2315_gpio_leds = {
-+	.name = "leds-gpio",
-+	.id = -1,
-+	.dev = {
-+		.platform_data = (void *)&ar2315_led_data,
-+	}
-+};
-+
-+static void __init ar2315_init_gpio_leds(void)
-+{
-+	static char led_names[6][6];
-+	int i, led = 0;
-+
-+	ar2315_led_data.num_leds = 0;
-+	for (i = 1; i < 8; i++) {
-+		if ((i == AR2315_RESET_GPIO) ||
-+		    (i == ath25_board.config->reset_config_gpio))
-+			continue;
-+
-+		if (i == ath25_board.config->sys_led_gpio)
-+			strcpy(led_names[led], "wlan");
-+		else
-+			sprintf(led_names[led], "gpio%d", i);
-+
-+		ar2315_leds[led].name = led_names[led];
-+		ar2315_leds[led].gpio = i;
-+		ar2315_leds[led].active_low = 0;
-+		led++;
-+	}
-+	ar2315_led_data.num_leds = led;
-+	platform_device_register(&ar2315_gpio_leds);
-+}
-+#else
-+static inline void ar2315_init_gpio_leds(void)
-+{
-+}
-+#endif
-+
- void __init ar2315_init_devices(void)
- {
- 	/* Find board configuration */
-@@ -268,6 +313,8 @@ void __init ar2315_init_devices(void)
- 	ar2315_gpio_res[1].end = ar2315_gpio_res[1].start;
- 	platform_device_register(&ar2315_gpio);
- 
-+	ar2315_init_gpio_leds();
-+
- 	ar2315_wdt_res[1].start = irq_create_mapping(ar2315_misc_irq_domain,
- 						     AR2315_MISC_IRQ_WATCHDOG);
- 	ar2315_wdt_res[1].end = ar2315_wdt_res[1].start;
---- a/arch/mips/ath25/ar5312.c
-+++ b/arch/mips/ath25/ar5312.c
-@@ -24,6 +24,7 @@
- #include <linux/mtd/physmap.h>
- #include <linux/reboot.h>
- #include <linux/gpio.h>
-+#include <linux/leds.h>
- #include <asm/bootinfo.h>
- #include <asm/reboot.h>
- #include <asm/time.h>
-@@ -228,6 +229,23 @@ static struct platform_device ar5312_gpi
- 	.num_resources = ARRAY_SIZE(ar5312_gpio_res),
- };
- 
-+#ifdef CONFIG_LEDS_GPIO
-+static struct gpio_led ar5312_leds[] = {
-+	{ .name = "wlan", .gpio = 0, .active_low = 1, },
-+};
-+
-+static const struct gpio_led_platform_data ar5312_led_data = {
-+	.num_leds = ARRAY_SIZE(ar5312_leds),
-+	.leds = (void *)ar5312_leds,
-+};
-+
-+static struct platform_device ar5312_gpio_leds = {
-+	.name = "leds-gpio",
-+	.id = -1,
-+	.dev.platform_data = (void *)&ar5312_led_data,
-+};
-+#endif
-+
- static void __init ar5312_flash_init(void)
- {
- 	void __iomem *flashctl_base;
-@@ -298,6 +316,11 @@ void __init ar5312_init_devices(void)
- 
- 	platform_device_register(&ar5312_gpio);
- 
-+#ifdef CONFIG_LEDS_GPIO
-+	ar5312_leds[0].gpio = config->sys_led_gpio;
-+	platform_device_register(&ar5312_gpio_leds);
-+#endif
-+
- 	/* Fix up MAC addresses if necessary */
- 	if (is_broadcast_ether_addr(config->enet0_mac))
- 		ether_addr_copy(config->enet0_mac, config->enet1_mac);
diff --git a/target/linux/ath25/patches-5.15/700-swconfig_mvswitch.patch b/target/linux/ath25/patches-5.15/700-swconfig_mvswitch.patch
deleted file mode 100644
index dcfc019f12..0000000000
--- a/target/linux/ath25/patches-5.15/700-swconfig_mvswitch.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/drivers/net/phy/Kconfig
-+++ b/drivers/net/phy/Kconfig
-@@ -96,6 +96,10 @@ config IP17XX_PHY
- 	tristate "Driver for IC+ IP17xx switches"
- 	select SWCONFIG
- 
-+config MVSWITCH_PHY
-+	tristate "Driver for Marvell 88E6060 switches"
-+	select ETHERNET_PACKET_MANGLE
-+
- config PSB6970_PHY
- 	tristate "Lantiq XWAY Tantos (PSB6970) Ethernet switch"
- 	select SWCONFIG
---- a/drivers/net/phy/Makefile
-+++ b/drivers/net/phy/Makefile
-@@ -31,6 +31,7 @@ ar8xxx-y			+= ar8216.o
- ar8xxx-y			+= ar8327.o
- obj-$(CONFIG_SWCONFIG_B53)	+= b53/
- obj-$(CONFIG_IP17XX_PHY)	+= ip17xx.o
-+obj-$(CONFIG_MVSWITCH_PHY)	+= mvswitch.o
- obj-$(CONFIG_PSB6970_PHY)	+= psb6970.o
- obj-$(CONFIG_RTL8306_PHY)	+= rtl8306.o
- obj-$(CONFIG_RTL8366_SMI)	+= rtl8366_smi.o
diff --git a/target/linux/ath25/profiles/00-default.mk b/target/linux/ath25/profiles/00-default.mk
deleted file mode 100644
index 3aeb31064a..0000000000
--- a/target/linux/ath25/profiles/00-default.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# Copyright (C) 2011 OpenWrt.org
-
-define Profile/Default
-	NAME:=Default Profile
-	PRIORITY:=1
-endef
-
-define Profile/Default/Description
-	Default package set compatible with most boards.
-endef
-$(eval $(call Profile,Default))
diff --git a/target/linux/generic/pending-5.15/430-mtd-add-myloader-partition-parser.patch b/target/linux/generic/pending-5.15/430-mtd-add-myloader-partition-parser.patch
index 8a6e630530..c7a8d9d7b7 100644
--- a/target/linux/generic/pending-5.15/430-mtd-add-myloader-partition-parser.patch
+++ b/target/linux/generic/pending-5.15/430-mtd-add-myloader-partition-parser.patch
@@ -16,7 +16,7 @@ Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
  
 +config MTD_MYLOADER_PARTS
 +	tristate "MyLoader partition parsing"
-+	depends on ADM5120 || ATH25 || ATH79
++	depends on ADM5120 || ATH79
 +	help
 +	  MyLoader is a bootloader which allows the user to define partitions
 +	  in flash devices, by putting a table in the second erase block
diff --git a/target/linux/generic/pending-6.1/430-mtd-add-myloader-partition-parser.patch b/target/linux/generic/pending-6.1/430-mtd-add-myloader-partition-parser.patch
index c8cf3f5d3b..35e80d6dcc 100644
--- a/target/linux/generic/pending-6.1/430-mtd-add-myloader-partition-parser.patch
+++ b/target/linux/generic/pending-6.1/430-mtd-add-myloader-partition-parser.patch
@@ -16,7 +16,7 @@ Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
  
 +config MTD_MYLOADER_PARTS
 +	tristate "MyLoader partition parsing"
-+	depends on ADM5120 || ATH25 || ATH79
++	depends on ADM5120 || ATH79
 +	help
 +	  MyLoader is a bootloader which allows the user to define partitions
 +	  in flash devices, by putting a table in the second erase block



From lede-commits at lists.infradead.org  Thu Mar  7 10:36:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 13:36:42 -0500
Subject: [openwrt/openwrt]  kernel: Remove unused schedulers
In-Reply-To: <170983660028.568164.5451742957420091763@git-01.infra.openwrt.org>
References: <170983660028.568164.5451742957420091763@git-01.infra.openwrt.org>
Message-ID: <mailman.14326.1709836605.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cd450923ab066ce35e8ce55340e66986f14a42d8

commit cd450923ab066ce35e8ce55340e66986f14a42d8
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sun Mar 3 12:34:19 2024 +0100

    kernel: Remove unused schedulers
    
    These schedulers were removed in kernel 5.15.150 and 6.1.180.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 target/linux/generic/config-5.15 | 3 ---
 target/linux/generic/config-6.1  | 3 ---
 2 files changed, 6 deletions(-)

diff --git a/target/linux/generic/config-5.15 b/target/linux/generic/config-5.15
index 5f82f0937d..6070000dd4 100644
--- a/target/linux/generic/config-5.15
+++ b/target/linux/generic/config-5.15
@@ -4139,15 +4139,12 @@ CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_NET_RX_BUSY_POLL=y
 # CONFIG_NET_SB1000 is not set
 CONFIG_NET_SCHED=y
-# CONFIG_NET_SCH_ATM is not set
 # CONFIG_NET_SCH_CAKE is not set
-# CONFIG_NET_SCH_CBQ is not set
 # CONFIG_NET_SCH_CBS is not set
 # CONFIG_NET_SCH_CHOKE is not set
 # CONFIG_NET_SCH_CODEL is not set
 CONFIG_NET_SCH_DEFAULT=y
 # CONFIG_NET_SCH_DRR is not set
-# CONFIG_NET_SCH_DSMARK is not set
 # CONFIG_NET_SCH_ETF is not set
 # CONFIG_NET_SCH_ETS is not set
 CONFIG_NET_SCH_FIFO=y
diff --git a/target/linux/generic/config-6.1 b/target/linux/generic/config-6.1
index b4aeeb9a70..8ad4700f73 100644
--- a/target/linux/generic/config-6.1
+++ b/target/linux/generic/config-6.1
@@ -4298,15 +4298,12 @@ CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_NET_RX_BUSY_POLL=y
 # CONFIG_NET_SB1000 is not set
 CONFIG_NET_SCHED=y
-# CONFIG_NET_SCH_ATM is not set
 # CONFIG_NET_SCH_CAKE is not set
-# CONFIG_NET_SCH_CBQ is not set
 # CONFIG_NET_SCH_CBS is not set
 # CONFIG_NET_SCH_CHOKE is not set
 # CONFIG_NET_SCH_CODEL is not set
 CONFIG_NET_SCH_DEFAULT=y
 # CONFIG_NET_SCH_DRR is not set
-# CONFIG_NET_SCH_DSMARK is not set
 # CONFIG_NET_SCH_ETF is not set
 # CONFIG_NET_SCH_ETS is not set
 CONFIG_NET_SCH_FIFO=y



From lede-commits at lists.infradead.org  Thu Mar  7 10:36:41 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 13:36:41 -0500
Subject: [openwrt/openwrt]  kernel: bump 5.15 to 5.15.150
In-Reply-To: <170983660028.568164.5451742957420091763@git-01.infra.openwrt.org>
References: <170983660028.568164.5451742957420091763@git-01.infra.openwrt.org>
Message-ID: <mailman.14327.1709836606.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/387fde0da0e8fd51ab95f35ab33dfbd4969f32bb

commit 387fde0da0e8fd51ab95f35ab33dfbd4969f32bb
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sun Mar 3 12:25:27 2024 +0100

    kernel: bump 5.15 to 5.15.150
    
    Removed because it is upstream:
    bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=cb1003c07e746e4e82bdd3959c9ea37018ed41a3
    
    Removed because it is upstream:
    bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c65a23e98e38dc991f495d6bdb3cfa6163a88a0c
    
    Removed because it is upstream:
    bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=71475bcee001cae3844644c2787eef93b26489d1
    
    Adapted hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch to match
    the changes from the upstream flow offload patch:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7c71b831220edeab7ce603d818dc1708d9ea4137
    
    Manually Adapted the following patch:
    bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/kernel-5.15                                |  4 +-
 ...-clk_core_get_rate_recalc-in-clk_rate_get.patch |  2 +-
 ...53573-Describe-on-SoC-BCM53125-rev-4-swit.patch | 44 -----------------
 ...adcom-align-gpio-key-node-names-with-dtsc.patch |  4 +-
 ...oadcom-align-LED-node-names-with-dtschema.patch |  8 ++-
 ...53573-Drop-nonexistent-default-off-LED-tr.patch | 57 ----------------------
 ...M-dts-BCM53573-Drop-nonexistent-usb-cells.patch | 32 ------------
 ...-add-support-for-performing-fake-doorbell.patch |  2 +-
 .../020-v6.1-05-mm-multi-gen-LRU-groundwork.patch  |  2 +-
 ...ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch |  4 +-
 ...t-stmicro-stmmac-move-queue-reset-to-dedi.patch |  8 +--
 ...t-stmicro-stmmac-move-dma-conf-to-dedicat.patch | 42 ++++++++--------
 ...t-stmicro-stmmac-generate-stmmac-dma-conf.patch | 16 +++---
 .../650-netfilter-add-xt_FLOWOFFLOAD-target.patch  | 19 +++++---
 ...ft_flow_offload-handle-netdevice-events-f.patch |  4 +-
 ...f_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 .../lantiq/patches-5.15/0152-lantiq-VPE.patch      |  8 +--
 .../patches-5.15/0155-lantiq-VPE-nosmp.patch       |  2 +-
 ...-enable-all-hardware-interrupts-on-second.patch |  6 +--
 ...tiq-register-smp_ops-on-non-smp-platforms.patch |  2 +-
 20 files changed, 68 insertions(+), 200 deletions(-)

diff --git a/include/kernel-5.15 b/include/kernel-5.15
index 9ab2d04fc6..58573657d6 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .149
-LINUX_KERNEL_HASH-5.15.149 = bd84809a367eb400eb04e0e70294e6ba12fc03b6bfb5a7dfaca548f8947501b0
+LINUX_VERSION-5.15 = .150
+LINUX_KERNEL_HASH-5.15.150 = ee05592b458e7fcdc515b43605883a10cc2f65f2e2b58d60af8a72b93467e4d4
diff --git a/target/linux/at91/patches-5.15/109-clk-use-clk_core_get_rate_recalc-in-clk_rate_get.patch b/target/linux/at91/patches-5.15/109-clk-use-clk_core_get_rate_recalc-in-clk_rate_get.patch
index 32e760ac17..9d9715381a 100644
--- a/target/linux/at91/patches-5.15/109-clk-use-clk_core_get_rate_recalc-in-clk_rate_get.patch
+++ b/target/linux/at91/patches-5.15/109-clk-use-clk_core_get_rate_recalc-in-clk_rate_get.patch
@@ -18,7 +18,7 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -3131,7 +3131,10 @@ static int clk_rate_get(void *data, u64
+@@ -3142,7 +3142,10 @@ static int clk_rate_get(void *data, u64
  {
  	struct clk_core *core = data;
  
diff --git a/target/linux/bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch b/target/linux/bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch
deleted file mode 100644
index 914117cb2c..0000000000
--- a/target/linux/bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 9fb90ae6cae7f8fe4fbf626945f32cd9da2c3892 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
-Date: Mon, 20 Sep 2021 16:10:23 +0200
-Subject: [PATCH] ARM: dts: BCM53573: Describe on-SoC BCM53125 rev 4 switch
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-BCM53573 family SoC have Ethernet switch connected to the first Ethernet
-controller (accessible over MDIO).
-
-Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
-Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
----
- arch/arm/boot/dts/bcm53573.dtsi | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
---- a/arch/arm/boot/dts/bcm53573.dtsi
-+++ b/arch/arm/boot/dts/bcm53573.dtsi
-@@ -183,6 +183,24 @@
- 
- 		gmac0: ethernet at 5000 {
- 			reg = <0x5000 0x1000>;
-+
-+			mdio {
-+				#address-cells = <1>;
-+				#size-cells = <0>;
-+
-+				switch: switch at 1e {
-+					compatible = "brcm,bcm53125";
-+					reg = <0x1e>;
-+
-+					status = "disabled";
-+
-+					/* ports are defined in board DTS */
-+					ports {
-+						#address-cells = <1>;
-+						#size-cells = <0>;
-+					};
-+				};
-+			};
- 		};
- 
- 		gmac1: ethernet at b000 {
diff --git a/target/linux/bcm53xx/patches-5.15/034-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch b/target/linux/bcm53xx/patches-5.15/034-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
index f929dc3b60..1c0708a5f0 100644
--- a/target/linux/bcm53xx/patches-5.15/034-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
+++ b/target/linux/bcm53xx/patches-5.15/034-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
@@ -781,7 +781,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -39,7 +39,7 @@
+@@ -38,7 +38,7 @@
  	gpio-keys {
  		compatible = "gpio-keys";
  
@@ -792,7 +792,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>;
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -49,7 +49,7 @@
+@@ -47,7 +47,7 @@
  	gpio-keys {
  		compatible = "gpio-keys";
  
diff --git a/target/linux/bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch b/target/linux/bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
index d6bf49d0cd..a53070a506 100644
--- a/target/linux/bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
+++ b/target/linux/bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
@@ -1514,7 +1514,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  		};
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -23,13 +23,13 @@
+@@ -23,12 +23,12 @@
  	leds {
  		compatible = "gpio-leds";
  
@@ -1522,7 +1522,6 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-wlan {
  			label = "bcm53xx:blue:wlan";
  			gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
- 			linux,default-trigger = "default-off";
  		};
  
 -		system {
@@ -1532,7 +1531,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			linux,default-trigger = "timer";
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -20,26 +20,26 @@
+@@ -20,25 +20,25 @@
  		reg = <0x00000000 0x08000000>;
  	};
  
@@ -1544,7 +1543,6 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-5ghz {
  			label = "bcm53xx:blue:5ghz";
  			gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
- 			linux,default-trigger = "default-off";
  		};
  
 -		system {
@@ -1563,7 +1561,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-2ghz {
  			label = "bcm53xx:blue:2ghz";
  			gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
- 			linux,default-trigger = "default-off";
+ 		};
 --- a/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
 +++ b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
 @@ -20,37 +20,37 @@
diff --git a/target/linux/bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch b/target/linux/bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
deleted file mode 100644
index 8bad76edca..0000000000
--- a/target/linux/bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From be7e1e5b0f67c58ec4be0a54db23b6a4fa6e2116 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
-Date: Fri, 7 Jul 2023 13:40:01 +0200
-Subject: [PATCH] ARM: dts: BCM53573: Drop nonexistent "default-off" LED
- trigger
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There is no such trigger documented or implemented in Linux. It was a
-copy & paste mistake.
-
-This fixes:
-arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dtb: leds: led-wlan:linux,default-trigger: 'oneOf' conditional failed, one must be fixed:
-        'default-off' is not one of ['backlight', 'default-on', 'heartbeat', 'disk-activity', 'disk-read', 'disk-write', 'timer', 'pattern', 'audio-micmute', 'audio-mute', 'bluetooth-power', 'flash', 'kbd-capslock', 'mtd', 'nand-disk', 'none', 'torch', 'usb-gadget', 'usb-host', 'usbport']
-        'default-off' does not match '^cpu[0-9]*$'
-        'default-off' does not match '^hci[0-9]+-power$'
-        'default-off' does not match '^mmc[0-9]+$'
-        'default-off' does not match '^phy[0-9]+tx$'
-        From schema: Documentation/devicetree/bindings/leds/leds-gpio.yaml
-
-Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
-Link: https://lore.kernel.org/r/20230707114004.2740-1-zajec5 at gmail.com
-Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
----
- arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dts | 1 -
- arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-810.dts  | 2 --
- 2 files changed, 3 deletions(-)
-
---- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -26,7 +26,6 @@
- 		led-wlan {
- 			label = "bcm53xx:blue:wlan";
- 			gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
--			linux,default-trigger = "default-off";
- 		};
- 
- 		led-system {
---- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -26,7 +26,6 @@
- 		led-5ghz {
- 			label = "bcm53xx:blue:5ghz";
- 			gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
--			linux,default-trigger = "default-off";
- 		};
- 
- 		led-system {
-@@ -42,7 +41,6 @@
- 		led-2ghz {
- 			label = "bcm53xx:blue:2ghz";
- 			gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
--			linux,default-trigger = "default-off";
- 		};
- 	};
- 
diff --git a/target/linux/bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch b/target/linux/bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch
deleted file mode 100644
index e7a1835d47..0000000000
--- a/target/linux/bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 05d2c3d552b8c92fc397377d9d1112fc58e2cd59 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
-Date: Fri, 7 Jul 2023 13:40:02 +0200
-Subject: [PATCH] ARM: dts: BCM53573: Drop nonexistent #usb-cells
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Such property simply doesn't exist (is not documented or used anywhere).
-
-This fixes:
-arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dtb: usb at d000: Unevaluated properties are not allowed ('#usb-cells' was unexpected)
-        From schema: Documentation/devicetree/bindings/usb/generic-ohci.yaml
-
-Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
-Link: https://lore.kernel.org/r/20230707114004.2740-2-zajec5 at gmail.com
-Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
----
- arch/arm/boot/dts/broadcom/bcm53573.dtsi | 2 --
- 1 file changed, 2 deletions(-)
-
---- a/arch/arm/boot/dts/bcm53573.dtsi
-+++ b/arch/arm/boot/dts/bcm53573.dtsi
-@@ -159,8 +159,6 @@
- 			};
- 
- 			ohci: usb at d000 {
--				#usb-cells = <0>;
--
- 				compatible = "generic-ohci";
- 				reg = <0xd000 0x1000>;
- 				interrupt-parent = <&gic>;
diff --git a/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
index 49277ab251..1d3a21b6cd 100644
--- a/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
+++ b/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
@@ -109,7 +109,7 @@ it on BCM4708 family.
  
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1908,6 +1908,7 @@ struct xhci_hcd {
+@@ -1907,6 +1907,7 @@ struct xhci_hcd {
  #define XHCI_RESET_TO_DEFAULT	BIT_ULL(44)
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
diff --git a/target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch b/target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch
index 769384f500..969d721da6 100644
--- a/target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch
+++ b/target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch
@@ -538,7 +538,7 @@ Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
  	(1UL << PG_private | 1UL << PG_private_2)
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -911,6 +911,10 @@ struct task_struct {
+@@ -907,6 +907,10 @@ struct task_struct {
  #ifdef CONFIG_MEMCG
  	unsigned			in_user_fault:1;
  #endif
diff --git a/target/linux/generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch b/target/linux/generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
index f225a21057..35bc19c1ef 100644
--- a/target/linux/generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
+++ b/target/linux/generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
@@ -31,15 +31,15 @@ Signed-off-by: Vinod Koul <vkoul at kernel.org>
 
 --- a/drivers/ata/ahci.h
 +++ b/drivers/ata/ahci.h
-@@ -241,8 +241,6 @@ enum {
+@@ -240,8 +240,6 @@ enum {
  						      as default lpm_policy */
  	AHCI_HFLAG_SUSPEND_PHYS		= BIT(26), /* handle PHYs during
  						      suspend/resume */
 -	AHCI_HFLAG_IGN_NOTSUPP_POWER_ON	= BIT(27), /* ignore -EOPNOTSUPP
 -						      from phy_power_on() */
  	AHCI_HFLAG_NO_SXS		= BIT(28), /* SXS not supported */
+ 	AHCI_HFLAG_43BIT_ONLY		= BIT(29), /* 43bit DMA addr limit */
  
- 	/* ap->flags bits */
 --- a/drivers/ata/ahci_mvebu.c
 +++ b/drivers/ata/ahci_mvebu.c
 @@ -227,7 +227,7 @@ static const struct ahci_mvebu_plat_data
diff --git a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
index 7742c4a958..32dab26eb5 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
@@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	ret = stmmac_hw_setup(dev, true);
  	if (ret < 0) {
  		netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
-@@ -6430,6 +6423,7 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6410,6 +6403,7 @@ void stmmac_enable_rx_queue(struct stmma
  		return;
  	}
  
@@ -79,7 +79,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_rx_descriptors(priv, queue);
  
  	stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -6491,6 +6485,7 @@ void stmmac_enable_tx_queue(struct stmma
+@@ -6471,6 +6465,7 @@ void stmmac_enable_tx_queue(struct stmma
  		return;
  	}
  
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_tx_descriptors(priv, queue);
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -7418,6 +7413,25 @@ int stmmac_suspend(struct device *dev)
+@@ -7398,6 +7393,25 @@ int stmmac_suspend(struct device *dev)
  }
  EXPORT_SYMBOL_GPL(stmmac_suspend);
  
@@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  /**
   * stmmac_reset_queues_param - reset queue parameters
   * @priv: device pointer
-@@ -7428,22 +7442,11 @@ static void stmmac_reset_queues_param(st
+@@ -7408,22 +7422,11 @@ static void stmmac_reset_queues_param(st
  	u32 tx_cnt = priv->plat->tx_queues_to_use;
  	u32 queue;
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
index e259668b86..0f8ca79d60 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
@@ -1033,7 +1033,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  			/* Data payload appended into SKB */
  			page_pool_release_page(rx_q->page_pool, buf->sec_page);
-@@ -5768,11 +5768,13 @@ static irqreturn_t stmmac_safety_interru
+@@ -5758,11 +5758,13 @@ static irqreturn_t stmmac_safety_interru
  static irqreturn_t stmmac_msi_intr_tx(int irq, void *data)
  {
  	struct stmmac_tx_queue *tx_q = (struct stmmac_tx_queue *)data;
@@ -1046,9 +1046,9 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 +	dma_conf = container_of(tx_q, struct stmmac_dma_conf, tx_queue[chan]);
 +	priv = container_of(dma_conf, struct stmmac_priv, dma_conf);
  
- 	if (unlikely(!data)) {
- 		netdev_err(priv->dev, "%s: invalid dev pointer\n", __func__);
-@@ -5812,10 +5814,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
+ 	/* Check if adapter is up */
+ 	if (test_bit(STMMAC_DOWN, &priv->state))
+@@ -5797,10 +5799,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
  static irqreturn_t stmmac_msi_intr_rx(int irq, void *data)
  {
  	struct stmmac_rx_queue *rx_q = (struct stmmac_rx_queue *)data;
@@ -1060,9 +1060,9 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 +	dma_conf = container_of(rx_q, struct stmmac_dma_conf, rx_queue[chan]);
 +	priv = container_of(dma_conf, struct stmmac_priv, dma_conf);
  
- 	if (unlikely(!data)) {
- 		netdev_err(priv->dev, "%s: invalid dev pointer\n", __func__);
-@@ -5846,10 +5850,10 @@ static void stmmac_poll_controller(struc
+ 	/* Check if adapter is up */
+ 	if (test_bit(STMMAC_DOWN, &priv->state))
+@@ -5826,10 +5830,10 @@ static void stmmac_poll_controller(struc
  
  	if (priv->plat->multi_msi_en) {
  		for (i = 0; i < priv->plat->rx_queues_to_use; i++)
@@ -1075,7 +1075,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	} else {
  		disable_irq(dev->irq);
  		stmmac_interrupt(dev->irq, dev);
-@@ -6030,34 +6034,34 @@ static int stmmac_rings_status_show(stru
+@@ -6010,34 +6014,34 @@ static int stmmac_rings_status_show(stru
  		return 0;
  
  	for (queue = 0; queue < rx_count; queue++) {
@@ -1116,7 +1116,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		}
  	}
  
-@@ -6404,7 +6408,7 @@ void stmmac_disable_rx_queue(struct stmm
+@@ -6384,7 +6388,7 @@ void stmmac_disable_rx_queue(struct stmm
  
  void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1125,7 +1125,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned long flags;
  	u32 buf_size;
-@@ -6441,7 +6445,7 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6421,7 +6425,7 @@ void stmmac_enable_rx_queue(struct stmma
  				      rx_q->queue_index);
  	} else {
  		stmmac_set_dma_bfsize(priv, priv->ioaddr,
@@ -1134,7 +1134,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  				      rx_q->queue_index);
  	}
  
-@@ -6467,7 +6471,7 @@ void stmmac_disable_tx_queue(struct stmm
+@@ -6447,7 +6451,7 @@ void stmmac_disable_tx_queue(struct stmm
  
  void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1143,7 +1143,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned long flags;
  	int ret;
-@@ -6517,7 +6521,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6497,7 +6501,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1152,7 +1152,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Free the IRQ lines */
  	stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
-@@ -6576,7 +6580,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6556,7 +6560,7 @@ int stmmac_xdp_open(struct net_device *d
  
  	/* DMA RX Channel Configuration */
  	for (chan = 0; chan < rx_cnt; chan++) {
@@ -1161,7 +1161,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  		stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  				    rx_q->dma_rx_phy, chan);
-@@ -6594,7 +6598,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6574,7 +6578,7 @@ int stmmac_xdp_open(struct net_device *d
  					      rx_q->queue_index);
  		} else {
  			stmmac_set_dma_bfsize(priv, priv->ioaddr,
@@ -1170,7 +1170,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  					      rx_q->queue_index);
  		}
  
-@@ -6603,7 +6607,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6583,7 +6587,7 @@ int stmmac_xdp_open(struct net_device *d
  
  	/* DMA TX Channel Configuration */
  	for (chan = 0; chan < tx_cnt; chan++) {
@@ -1179,7 +1179,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  		stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  				    tx_q->dma_tx_phy, chan);
-@@ -6636,7 +6640,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6616,7 +6620,7 @@ int stmmac_xdp_open(struct net_device *d
  
  irq_error:
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1188,7 +1188,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -6663,8 +6667,8 @@ int stmmac_xsk_wakeup(struct net_device
+@@ -6643,8 +6647,8 @@ int stmmac_xsk_wakeup(struct net_device
  	    queue >= priv->plat->tx_queues_to_use)
  		return -EINVAL;
  
@@ -1199,7 +1199,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	ch = &priv->channel[queue];
  
  	if (!rx_q->xsk_pool && !tx_q->xsk_pool)
-@@ -6924,8 +6928,8 @@ int stmmac_reinit_ringparam(struct net_d
+@@ -6904,8 +6908,8 @@ int stmmac_reinit_ringparam(struct net_d
  	if (netif_running(dev))
  		stmmac_release(dev);
  
@@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (netif_running(dev))
  		ret = stmmac_open(dev);
-@@ -7363,7 +7367,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7343,7 +7347,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (priv->eee_enabled) {
  		priv->tx_path_in_lpi_mode = false;
-@@ -7415,7 +7419,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
+@@ -7395,7 +7399,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
  
  static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	rx_q->cur_rx = 0;
  	rx_q->dirty_rx = 0;
-@@ -7423,7 +7427,7 @@ static void stmmac_reset_rx_queue(struct
+@@ -7403,7 +7407,7 @@ static void stmmac_reset_rx_queue(struct
  
  static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
diff --git a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
index e82f6d6943..b3ca0d5c71 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
@@ -1045,7 +1045,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Disable the MAC Rx/Tx */
  	stmmac_mac_set(priv, priv->ioaddr, false);
-@@ -6403,7 +6519,7 @@ void stmmac_disable_rx_queue(struct stmm
+@@ -6383,7 +6499,7 @@ void stmmac_disable_rx_queue(struct stmm
  	spin_unlock_irqrestore(&ch->lock, flags);
  
  	stmmac_stop_rx_dma(priv, queue);
@@ -1054,7 +1054,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
-@@ -6414,21 +6530,21 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6394,21 +6510,21 @@ void stmmac_enable_rx_queue(struct stmma
  	u32 buf_size;
  	int ret;
  
@@ -1080,7 +1080,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  			    rx_q->dma_rx_phy, rx_q->queue_index);
-@@ -6466,7 +6582,7 @@ void stmmac_disable_tx_queue(struct stmm
+@@ -6446,7 +6562,7 @@ void stmmac_disable_tx_queue(struct stmm
  	spin_unlock_irqrestore(&ch->lock, flags);
  
  	stmmac_stop_tx_dma(priv, queue);
@@ -1089,7 +1089,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
-@@ -6476,21 +6592,21 @@ void stmmac_enable_tx_queue(struct stmma
+@@ -6456,21 +6572,21 @@ void stmmac_enable_tx_queue(struct stmma
  	unsigned long flags;
  	int ret;
  
@@ -1115,7 +1115,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  			    tx_q->dma_tx_phy, tx_q->queue_index);
-@@ -6530,7 +6646,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6510,7 +6626,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_stop_all_dma(priv);
  
  	/* Release and free the Rx/Tx resources */
@@ -1124,7 +1124,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Disable the MAC Rx/Tx */
  	stmmac_mac_set(priv, priv->ioaddr, false);
-@@ -6555,14 +6671,14 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6535,14 +6651,14 @@ int stmmac_xdp_open(struct net_device *d
  	u32 chan;
  	int ret;
  
@@ -1141,7 +1141,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	if (ret < 0) {
  		netdev_err(dev, "%s: DMA descriptors initialization failed\n",
  			   __func__);
-@@ -6644,7 +6760,7 @@ irq_error:
+@@ -6624,7 +6740,7 @@ irq_error:
  
  	stmmac_hw_teardown(dev);
  init_error:
@@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  dma_desc_error:
  	return ret;
  }
-@@ -7510,7 +7626,7 @@ int stmmac_resume(struct device *dev)
+@@ -7490,7 +7606,7 @@ int stmmac_resume(struct device *dev)
  	stmmac_reset_queues_param(priv);
  
  	stmmac_free_tx_skbufs(priv);
diff --git a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index aa6c668558..da60334498 100644
--- a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
 --- /dev/null
 +++ b/net/netfilter/xt_FLOWOFFLOAD.c
-@@ -0,0 +1,698 @@
+@@ -0,0 +1,701 @@
 +/*
 + * Copyright (C) 2018-2021 Felix Fietkau <nbd at nbd.name>
 + *
@@ -544,9 +544,14 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +		break;
 +	}
 +
++	if (!dst_hold_safe(this_dst))
++		return -ENOENT;
++
 +	nf_route(xt_net(par), &other_dst, &fl, false, xt_family(par));
-+	if (!other_dst)
++	if (!other_dst) {
++		dst_release(this_dst);
 +		return -ENOENT;
++	}
 +
 +	nf_default_forward_path(route, this_dst, dir, devs);
 +	nf_default_forward_path(route, other_dst, !dir, devs);
@@ -622,8 +627,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (!flow)
 +		goto err_flow_alloc;
 +
-+	if (flow_offload_route_init(flow, &route) < 0)
-+		goto err_flow_add;
++	flow_offload_route_init(flow, &route);
 +
 +	if (tcph) {
 +		ct->proto.tcp.seen[0].flags |= IP_CT_TCP_FLAG_BE_LIBERAL;
@@ -642,13 +646,12 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	xt_flowoffload_check_device(table, devs[0]);
 +	xt_flowoffload_check_device(table, devs[1]);
 +
-+	dst_release(route.tuple[!dir].dst);
-+
 +	return XT_CONTINUE;
 +
 +err_flow_add:
 +	flow_offload_free(flow);
 +err_flow_alloc:
++	dst_release(route.tuple[dir].dst);
 +	dst_release(route.tuple[!dir].dst);
 +err_flow_route:
 +	clear_bit(IPS_OFFLOAD_BIT, &ct->status);
@@ -807,7 +810,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <net/netfilter/nf_flow_table.h>
  #include <net/netfilter/nf_conntrack.h>
  #include <net/netfilter/nf_conntrack_core.h>
-@@ -380,8 +379,7 @@ flow_offload_lookup(struct nf_flowtable
+@@ -373,8 +372,7 @@ flow_offload_lookup(struct nf_flowtable
  }
  EXPORT_SYMBOL_GPL(flow_offload_lookup);
  
@@ -817,7 +820,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		      void (*iter)(struct nf_flowtable *flowtable,
  				   struct flow_offload *flow, void *data),
  		      void *data)
-@@ -435,6 +433,7 @@ static void nf_flow_offload_gc_step(stru
+@@ -428,6 +426,7 @@ static void nf_flow_offload_gc_step(stru
  		nf_flow_offload_stats(flow_table, flow);
  	}
  }
diff --git a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index df5bef9fcd..8c75554033 100644
--- a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
 
 --- a/net/netfilter/nf_flow_table_core.c
 +++ b/net/netfilter/nf_flow_table_core.c
-@@ -613,13 +613,41 @@ void nf_flow_table_free(struct nf_flowta
+@@ -606,13 +606,41 @@ void nf_flow_table_free(struct nf_flowta
  }
  EXPORT_SYMBOL_GPL(nf_flow_table_free);
  
@@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -451,47 +451,14 @@ static struct nft_expr_type nft_flow_off
+@@ -455,47 +455,14 @@ static struct nft_expr_type nft_flow_off
  	.owner		= THIS_MODULE,
  };
  
diff --git a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 69ff9d5797..196beffecf 100644
--- a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7760,7 +7760,7 @@ static int nft_register_flowtable_net_ho
+@@ -7763,7 +7763,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);
diff --git a/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch b/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
index e6a1361022..00917331c2 100644
--- a/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
+++ b/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
@@ -51,7 +51,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  #define read_vpe_c0_status()		mftc0(12, 0)
 --- a/arch/mips/include/asm/vpe.h
 +++ b/arch/mips/include/asm/vpe.h
-@@ -124,4 +124,13 @@ void cleanup_tc(struct tc *tc);
+@@ -123,4 +123,13 @@ void cleanup_tc(struct tc *tc);
  
  int __init vpe_module_init(void);
  void __exit vpe_module_exit(void);
@@ -75,7 +75,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  
  	/* check we are the Master VPE */
  	local_irq_save(flags);
-@@ -416,6 +417,8 @@ int __init vpe_module_init(void)
+@@ -415,6 +416,8 @@ int __init vpe_module_init(void)
  			}
  
  			v->ntcs = hw_tcs - aprp_cpu_index();
@@ -84,7 +84,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  
  			/* add the tc to the list of this vpe's tc's. */
  			list_add(&t->tc, &v->tc);
-@@ -519,3 +522,47 @@ void __exit vpe_module_exit(void)
+@@ -518,3 +521,47 @@ void __exit vpe_module_exit(void)
  			release_vpe(v);
  	}
  }
@@ -178,7 +178,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  {
 --- a/arch/mips/lantiq/prom.c
 +++ b/arch/mips/lantiq/prom.c
-@@ -34,10 +34,14 @@ unsigned long physical_memsize = 0L;
+@@ -28,10 +28,14 @@ EXPORT_SYMBOL_GPL(ebu_lock);
   */
  static struct ltq_soc_info soc_info;
  
diff --git a/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch b/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
index 6562dc8bda..015acabcfe 100644
--- a/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
+++ b/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
@@ -10,7 +10,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
 
 --- a/arch/mips/kernel/vpe-mt.c
 +++ b/arch/mips/kernel/vpe-mt.c
-@@ -132,7 +132,10 @@ int vpe_run(struct vpe *v)
+@@ -131,7 +131,10 @@ int vpe_run(struct vpe *v)
  	 * kernels need to turn it on, even if that wasn't the pre-dvpe() state.
  	 */
  #ifdef CONFIG_SMP
diff --git a/target/linux/lantiq/patches-5.15/0320-v6.1-MIPS-lantiq-enable-all-hardware-interrupts-on-second.patch b/target/linux/lantiq/patches-5.15/0320-v6.1-MIPS-lantiq-enable-all-hardware-interrupts-on-second.patch
index d83a3616b3..d98664c478 100644
--- a/target/linux/lantiq/patches-5.15/0320-v6.1-MIPS-lantiq-enable-all-hardware-interrupts-on-second.patch
+++ b/target/linux/lantiq/patches-5.15/0320-v6.1-MIPS-lantiq-enable-all-hardware-interrupts-on-second.patch
@@ -39,7 +39,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
 
 --- a/arch/mips/lantiq/prom.c
 +++ b/arch/mips/lantiq/prom.c
-@@ -37,6 +37,14 @@ static struct ltq_soc_info soc_info;
+@@ -31,6 +31,14 @@ static struct ltq_soc_info soc_info;
  /* for Multithreading (APRP), vpe.c will use it */
  unsigned long cp0_memsize;
  
@@ -54,7 +54,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
  const char *get_system_type(void)
  {
  	return soc_info.sys_type;
-@@ -93,6 +101,17 @@ void __init device_tree_init(void)
+@@ -87,6 +95,17 @@ void __init device_tree_init(void)
  	unflatten_and_copy_device_tree();
  }
  
@@ -72,7 +72,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
  void __init prom_init(void)
  {
  	/* call the soc specific detetcion code and get it to fill soc_info */
-@@ -104,7 +123,10 @@ void __init prom_init(void)
+@@ -98,7 +117,10 @@ void __init prom_init(void)
  	prom_init_cmdline();
  
  #if defined(CONFIG_MIPS_MT_SMP)
diff --git a/target/linux/lantiq/patches-5.15/0321-v6.8-MIPS-lantiq-register-smp_ops-on-non-smp-platforms.patch b/target/linux/lantiq/patches-5.15/0321-v6.8-MIPS-lantiq-register-smp_ops-on-non-smp-platforms.patch
index 5339350e2f..1acf73b2d5 100644
--- a/target/linux/lantiq/patches-5.15/0321-v6.8-MIPS-lantiq-register-smp_ops-on-non-smp-platforms.patch
+++ b/target/linux/lantiq/patches-5.15/0321-v6.8-MIPS-lantiq-register-smp_ops-on-non-smp-platforms.patch
@@ -18,7 +18,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
 
 --- a/arch/mips/lantiq/prom.c
 +++ b/arch/mips/lantiq/prom.c
-@@ -123,10 +123,9 @@ void __init prom_init(void)
+@@ -117,10 +117,9 @@ void __init prom_init(void)
  	prom_init_cmdline();
  
  #if defined(CONFIG_MIPS_MT_SMP)



From lede-commits at lists.infradead.org  Thu Mar  7 10:36:40 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 13:36:40 -0500
Subject: [openwrt/openwrt]  kernel: bump 5.15 to 5.15.149
In-Reply-To: <170983660028.568164.5451742957420091763@git-01.infra.openwrt.org>
References: <170983660028.568164.5451742957420091763@git-01.infra.openwrt.org>
Message-ID: <mailman.14330.1709836614.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/26d1d5240356e2c286ca87dbaea3308c0e9bc97f

commit 26d1d5240356e2c286ca87dbaea3308c0e9bc97f
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sat Mar 2 19:14:22 2024 +0100

    kernel: bump 5.15 to 5.15.149
    
    Removed because it is upstream:
    generic/pending-5.15/540-ksmbd-only-v2-leases-handle-the-directory.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=81ea755b8fa57ce186f56f14b709cf491c2a5505
    
    Manually Adapted the following patch:
    ath79/patches-5.15/900-unaligned_access_hacks.patch
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/kernel-5.15                                |  4 +--
 .../patches-5.15/900-unaligned_access_hacks.patch  |  7 +++--
 .../ath79/patches-5.15/910-mikrotik-rb4xx.patch    |  2 +-
 ...x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch |  2 +-
 ...host-xhci-mvebu-make-USB-3.0-PHY-optional.patch |  2 +-
 ...nvert-users-of-bitmap_foo-to-linkmode_foo.patch |  2 +-
 ...t-stmicro-stmmac-move-queue-reset-to-dedi.patch |  4 +--
 ...t-stmicro-stmmac-move-dma-conf-to-dedicat.patch |  6 ++--
 ...t-stmicro-stmmac-generate-stmmac-dma-conf.patch |  2 +-
 .../pending-5.15/203-kallsyms_uncompressed.patch   |  2 +-
 ...ksmbd-only-v2-leases-handle-the-directory.patch | 32 ----------------------
 .../666-Add-support-for-MAP-E-FMRs-mesh-mode.patch | 28 +++++++++----------
 ...ft_flow_offload-handle-netdevice-events-f.patch |  2 +-
 ...f_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 ...page-pool-and-page-referenced-frags-in-GR.patch |  2 +-
 .../790-bus-mhi-core-add-SBL-state-callback.patch  |  2 +-
 .../810-pci_disable_common_quirks.patch            |  6 ++--
 ...rk-for-Gateworks-PLX-PEX860x-switch-with-.patch |  2 +-
 18 files changed, 39 insertions(+), 70 deletions(-)

diff --git a/include/kernel-5.15 b/include/kernel-5.15
index d93ae194b8..9ab2d04fc6 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .148
-LINUX_KERNEL_HASH-5.15.148 = c48575c97fd9f4767cbe50a13b1b2b40ee42830aba3182fabd35a03259a6e5d8
+LINUX_VERSION-5.15 = .149
+LINUX_KERNEL_HASH-5.15.149 = bd84809a367eb400eb04e0e70294e6ba12fc03b6bfb5a7dfaca548f8947501b0
diff --git a/target/linux/ath79/patches-5.15/900-unaligned_access_hacks.patch b/target/linux/ath79/patches-5.15/900-unaligned_access_hacks.patch
index 7bd6ae8b56..3c15a016ff 100644
--- a/target/linux/ath79/patches-5.15/900-unaligned_access_hacks.patch
+++ b/target/linux/ath79/patches-5.15/900-unaligned_access_hacks.patch
@@ -86,7 +86,7 @@ SVN-Revision: 35130
  	} while (word != stop);
  
  	return csum_fold(csum);
-@@ -182,73 +186,6 @@ static inline __sum16 ip_compute_csum(co
+@@ -182,74 +186,6 @@ static inline __sum16 ip_compute_csum(co
  	return csum_fold(csum_partial(buff, len, 0));
  }
  
@@ -152,7 +152,8 @@ SVN-Revision: 35130
 -	"	.set	pop"
 -	: "=&r" (sum), "=&r" (tmp)
 -	: "r" (saddr), "r" (daddr),
--	  "0" (htonl(len)), "r" (htonl(proto)), "r" (sum));
+-	  "0" (htonl(len)), "r" (htonl(proto)), "r" (sum)
+-	: "memory");
 -
 -	return csum_fold(sum);
 -}
@@ -336,7 +337,7 @@ SVN-Revision: 35130
  #endif /* _LINUX_TYPES_H */
 --- a/net/ipv4/af_inet.c
 +++ b/net/ipv4/af_inet.c
-@@ -1477,8 +1477,8 @@ struct sk_buff *inet_gro_receive(struct
+@@ -1480,8 +1480,8 @@ struct sk_buff *inet_gro_receive(struct
  	if (unlikely(ip_fast_csum((u8 *)iph, 5)))
  		goto out_unlock;
  
diff --git a/target/linux/ath79/patches-5.15/910-mikrotik-rb4xx.patch b/target/linux/ath79/patches-5.15/910-mikrotik-rb4xx.patch
index 4743ad46e2..16c8f11af7 100644
--- a/target/linux/ath79/patches-5.15/910-mikrotik-rb4xx.patch
+++ b/target/linux/ath79/patches-5.15/910-mikrotik-rb4xx.patch
@@ -45,7 +45,7 @@ Submitted-by: Christopher Hill <ch6574 at gmail.com>
 
 --- a/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
-@@ -2176,6 +2176,14 @@ config RAVE_SP_CORE
+@@ -2177,6 +2177,14 @@ config RAVE_SP_CORE
  	  Select this to get support for the Supervisory Processor
  	  device found on several devices in RAVE line of hardware.
  
diff --git a/target/linux/generic/backport-5.15/020-v6.1-02-mm-x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch b/target/linux/generic/backport-5.15/020-v6.1-02-mm-x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch
index 27c85a333b..2ea2e2497a 100644
--- a/target/linux/generic/backport-5.15/020-v6.1-02-mm-x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch
+++ b/target/linux/generic/backport-5.15/020-v6.1-02-mm-x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch
@@ -73,7 +73,7 @@ Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
 
 --- a/arch/Kconfig
 +++ b/arch/Kconfig
-@@ -1298,6 +1298,14 @@ config ARCH_HAS_ELFCORE_COMPAT
+@@ -1299,6 +1299,14 @@ config ARCH_HAS_ELFCORE_COMPAT
  config ARCH_HAS_PARANOID_L1D_FLUSH
  	bool
  
diff --git a/target/linux/generic/backport-5.15/346-v5.18-02-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch b/target/linux/generic/backport-5.15/346-v5.18-02-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
index 1e8afb7bbf..8cd86e0fcb 100644
--- a/target/linux/generic/backport-5.15/346-v5.18-02-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
+++ b/target/linux/generic/backport-5.15/346-v5.18-02-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
@@ -138,7 +138,7 @@ Signed-off-by: Vinod Koul <vkoul at kernel.org>
  	.init_quirk = xhci_mvebu_a3700_init_quirk,
  };
  
-@@ -341,14 +330,7 @@ static int xhci_plat_probe(struct platfo
+@@ -344,14 +333,7 @@ static int xhci_plat_probe(struct platfo
  
  	hcd->tpl_support = of_usb_host_tpl_support(sysdev->of_node);
  	xhci->shared_hcd->tpl_support = hcd->tpl_support;
diff --git a/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch b/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch
index eca3c7ff9f..5737da6e10 100644
--- a/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch
+++ b/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch
@@ -726,7 +726,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	 * to advertise both, only report advertising at 2500BaseX.
 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
 +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
-@@ -6352,15 +6352,14 @@ static void mvpp2_phylink_validate(struc
+@@ -6377,15 +6377,14 @@ static void mvpp2_phylink_validate(struc
  		goto empty_set;
  	}
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
index 931c589cfa..7742c4a958 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_tx_descriptors(priv, queue);
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -7415,6 +7410,25 @@ int stmmac_suspend(struct device *dev)
+@@ -7418,6 +7413,25 @@ int stmmac_suspend(struct device *dev)
  }
  EXPORT_SYMBOL_GPL(stmmac_suspend);
  
@@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  /**
   * stmmac_reset_queues_param - reset queue parameters
   * @priv: device pointer
-@@ -7425,22 +7439,11 @@ static void stmmac_reset_queues_param(st
+@@ -7428,22 +7442,11 @@ static void stmmac_reset_queues_param(st
  	u32 tx_cnt = priv->plat->tx_queues_to_use;
  	u32 queue;
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
index c59a5d1fe1..e259668b86 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
@@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (netif_running(dev))
  		ret = stmmac_open(dev);
-@@ -7360,7 +7364,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7363,7 +7367,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (priv->eee_enabled) {
  		priv->tx_path_in_lpi_mode = false;
-@@ -7412,7 +7416,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
+@@ -7415,7 +7419,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
  
  static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	rx_q->cur_rx = 0;
  	rx_q->dirty_rx = 0;
-@@ -7420,7 +7424,7 @@ static void stmmac_reset_rx_queue(struct
+@@ -7423,7 +7427,7 @@ static void stmmac_reset_rx_queue(struct
  
  static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
diff --git a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
index bdf8b8585e..e82f6d6943 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
@@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  dma_desc_error:
  	return ret;
  }
-@@ -7507,7 +7623,7 @@ int stmmac_resume(struct device *dev)
+@@ -7510,7 +7626,7 @@ int stmmac_resume(struct device *dev)
  	stmmac_reset_queues_param(priv);
  
  	stmmac_free_tx_skbufs(priv);
diff --git a/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch
index e469b7229c..fc4fe6d6b0 100644
--- a/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch
@@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		}
 --- a/scripts/link-vmlinux.sh
 +++ b/scripts/link-vmlinux.sh
-@@ -257,6 +257,10 @@ kallsyms()
+@@ -262,6 +262,10 @@ kallsyms()
  		kallsymopt="${kallsymopt} --base-relative"
  	fi
  
diff --git a/target/linux/generic/pending-5.15/540-ksmbd-only-v2-leases-handle-the-directory.patch b/target/linux/generic/pending-5.15/540-ksmbd-only-v2-leases-handle-the-directory.patch
deleted file mode 100644
index 1bc0e72418..0000000000
--- a/target/linux/generic/pending-5.15/540-ksmbd-only-v2-leases-handle-the-directory.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From cb1d41b99e4afa062f904339666fae2578559718 Mon Sep 17 00:00:00 2001
-From: Namjae Jeon <linkinjeon at kernel.org>
-Date: Mon, 15 Jan 2024 10:24:54 +0900
-Subject: [PATCH] ksmbd: only v2 leases handle the directory
-
-When smb2 leases is disable, ksmbd can send oplock break notification
-and cause wait oplock break ack timeout. It may appear like hang when
-accessing a directory. This patch make only v2 leases handle the
-directory.
-
-Cc: stable at vger.kernel.org
-Signed-off-by: Namjae Jeon <linkinjeon at kernel.org>
-Signed-off-by: Steve French <stfrench at microsoft.com>
----
- fs/ksmbd/oplock.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
---- a/fs/ksmbd/oplock.c
-+++ b/fs/ksmbd/oplock.c
-@@ -1191,6 +1191,12 @@ int smb_grant_oplock(struct ksmbd_work *
- 	bool prev_op_has_lease;
- 	__le32 prev_op_state = 0;
- 
-+	/* Only v2 leases handle the directory */
-+	if (S_ISDIR(file_inode(fp->filp)->i_mode)) {
-+		if (!lctx || lctx->version != 2)
-+			return 0;
-+	}
-+
- 	opinfo = alloc_opinfo(work, pid, tid);
- 	if (!opinfo)
- 		return -ENOMEM;
diff --git a/target/linux/generic/pending-5.15/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-5.15/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index 2f6fbd59e4..3931278a6d 100644
--- a/target/linux/generic/pending-5.15/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-5.15/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -275,8 +275,8 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
  			 const struct tnl_ptk_info *tpi,
  			 struct metadata_dst *tun_dst,
-@@ -843,6 +969,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
- 	skb_reset_network_header(skb);
+@@ -857,6 +983,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
+ 
  	memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
  
 +	if (tpi->proto == htons(ETH_P_IP) && tunnel->parms.fmrs &&
@@ -303,7 +303,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
  
  	err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
-@@ -994,6 +1141,7 @@ static void init_tel_txopt(struct ipv6_t
+@@ -1004,6 +1151,7 @@ static void init_tel_txopt(struct ipv6_t
  	opt->ops.opt_nflen = 8;
  }
  
@@ -311,7 +311,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  /**
   * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
   *   @t: the outgoing tunnel device
-@@ -1274,6 +1422,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1284,6 +1432,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
  		u8 protocol)
  {
  	struct ip6_tnl *t = netdev_priv(dev);
@@ -319,7 +319,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	struct ipv6hdr *ipv6h;
  	const struct iphdr  *iph;
  	int encap_limit = -1;
-@@ -1373,6 +1522,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1383,6 +1532,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
  	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
  	dsfield = INET_ECN_encapsulate(dsfield, orig_dsfield);
  
@@ -338,7 +338,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
  		return -1;
  
-@@ -1526,6 +1687,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1536,6 +1697,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
  	t->parms.fwmark = p->fwmark;
@@ -353,7 +353,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1564,6 +1733,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1574,6 +1743,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
  	p->flowinfo = u->flowinfo;
  	p->link = u->link;
  	p->proto = u->proto;
@@ -361,7 +361,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1950,6 +2120,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1960,6 +2130,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -377,7 +377,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -1987,6 +2166,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1997,6 +2176,46 @@ static void ip6_tnl_netlink_parms(struct
  
  	if (data[IFLA_IPTUN_FWMARK])
  		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
@@ -424,7 +424,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  }
  
  static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2102,6 +2321,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2112,6 +2331,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -437,7 +437,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -2131,6 +2356,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2141,6 +2366,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(0) +
  		/* IFLA_IPTUN_FWMARK */
  		nla_total_size(4) +
@@ -462,7 +462,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  		0;
  }
  
-@@ -2138,6 +2381,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2148,6 +2391,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
  	struct ip6_tnl *tunnel = netdev_priv(dev);
  	struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -472,7 +472,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2147,9 +2393,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2157,9 +2403,27 @@ static int ip6_tnl_fill_info(struct sk_b
  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
  	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
@@ -501,7 +501,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2189,6 +2453,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2199,6 +2463,7 @@ static const struct nla_policy ip6_tnl_p
  	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 },
  	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG },
  	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 },
diff --git a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index 606e053513..df5bef9fcd 100644
--- a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -446,47 +446,14 @@ static struct nft_expr_type nft_flow_off
+@@ -451,47 +451,14 @@ static struct nft_expr_type nft_flow_off
  	.owner		= THIS_MODULE,
  };
  
diff --git a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 892887c423..69ff9d5797 100644
--- a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7752,7 +7752,7 @@ static int nft_register_flowtable_net_ho
+@@ -7760,7 +7760,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);
diff --git a/target/linux/generic/pending-5.15/750-skb-Do-mix-page-pool-and-page-referenced-frags-in-GR.patch b/target/linux/generic/pending-5.15/750-skb-Do-mix-page-pool-and-page-referenced-frags-in-GR.patch
index 2a57a7ef03..8e2f3a9475 100644
--- a/target/linux/generic/pending-5.15/750-skb-Do-mix-page-pool-and-page-referenced-frags-in-GR.patch
+++ b/target/linux/generic/pending-5.15/750-skb-Do-mix-page-pool-and-page-referenced-frags-in-GR.patch
@@ -17,7 +17,7 @@ Signed-off-by: Alexander Duyck <alexanderduyck at fb.com>
 
 --- a/net/core/skbuff.c
 +++ b/net/core/skbuff.c
-@@ -4358,6 +4358,15 @@ int skb_gro_receive(struct sk_buff *p, s
+@@ -4359,6 +4359,15 @@ int skb_gro_receive(struct sk_buff *p, s
  	if (unlikely(p->len + len >= 65536 || NAPI_GRO_CB(skb)->flush))
  		return -E2BIG;
  
diff --git a/target/linux/generic/pending-5.15/790-bus-mhi-core-add-SBL-state-callback.patch b/target/linux/generic/pending-5.15/790-bus-mhi-core-add-SBL-state-callback.patch
index 2f728fefd7..6402dd9066 100644
--- a/target/linux/generic/pending-5.15/790-bus-mhi-core-add-SBL-state-callback.patch
+++ b/target/linux/generic/pending-5.15/790-bus-mhi-core-add-SBL-state-callback.patch
@@ -20,7 +20,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/drivers/bus/mhi/host/main.c
 +++ b/drivers/bus/mhi/host/main.c
-@@ -891,6 +891,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
+@@ -896,6 +896,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
  			switch (event) {
  			case MHI_EE_SBL:
  				st = DEV_ST_TRANSITION_SBL;
diff --git a/target/linux/generic/pending-5.15/810-pci_disable_common_quirks.patch b/target/linux/generic/pending-5.15/810-pci_disable_common_quirks.patch
index 153b5d06cf..f7f16ee37d 100644
--- a/target/linux/generic/pending-5.15/810-pci_disable_common_quirks.patch
+++ b/target/linux/generic/pending-5.15/810-pci_disable_common_quirks.patch
@@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * The Mellanox Tavor device gives false positive parity errors.  Disable
   * parity error reporting.
-@@ -3365,6 +3366,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -3368,6 +3369,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
  
@@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
   * To work around this, query the size it should be configured to by the
-@@ -3390,6 +3393,8 @@ static void quirk_intel_ntb(struct pci_d
+@@ -3393,6 +3396,8 @@ static void quirk_intel_ntb(struct pci_d
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
  
@@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * Some BIOS implementations leave the Intel GPU interrupts enabled, even
   * though no one is handling them (e.g., if the i915 driver is never
-@@ -3428,6 +3433,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3431,6 +3436,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
  
diff --git a/target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch b/target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
index 6dd02bed54..bb2dbeb4f8 100644
--- a/target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
+++ b/target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
@@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey at gateworks.com>
  #include <linux/platform_data/x86/apple.h>
  #include <linux/pm_runtime.h>
  #include <linux/suspend.h>
-@@ -5883,3 +5884,34 @@ static void nvidia_ion_ahci_fixup(struct
+@@ -5899,3 +5900,34 @@ static void nvidia_ion_ahci_fixup(struct
  	pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
  }
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);



From lede-commits at lists.infradead.org  Thu Mar  7 10:39:32 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 13:39:32 -0500
Subject: [openwrt/openwrt]  linux-firmware: Update to version 20240220
In-Reply-To: <170983677231.574017.17061080086937606501@git-01.infra.openwrt.org>
References: <170983677231.574017.17061080086937606501@git-01.infra.openwrt.org>
Message-ID: <mailman.14331.1709836776.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/662e05258895f068db6f9ab0eb48d356b6fe934f

commit 662e05258895f068db6f9ab0eb48d356b6fe934f
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Thu Feb 22 21:33:45 2024 +0100

    linux-firmware: Update to version 20240220
    
    This updates the following firmware files:
    airoha-en8811h-firmware/lib/firmware/airoha/EthMD32.DSP.bin
    airoha-en8811h-firmware/lib/firmware/airoha/EthMD32.dm.bin
    amdgpu-firmware (Many files)
    ar3k-firmware/lib/firmware/qca/hpnv21.bin
    ar3k-firmware/lib/firmware/qca/hpnv21g.bin
    ath10k-board-qca4019/lib/firmware/ath10k/QCA4019/hw1.0/board-2.bin
    ath10k-board-qca9888/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
    ath10k-firmware-qca6174/lib/firmware/ath10k/QCA6174/hw3.0/firmware-6.bin
    ath11k-firmware-wcn6750/lib/firmware/ath11k/WCN6750/hw1.0/board-2.bin
    ath11k-firmware-wcn6855/lib/firmware/ath11k/WCN6855/hw2.0/amss.bin
    ath11k-firmware-wcn6855/lib/firmware/ath11k/WCN6855/hw2.0/board-2.bin
    ath11k-firmware-wcn6855/lib/firmware/ath11k/WCN6855/hw2.1/amss.bin
    ath11k-firmware-wcn6855/lib/firmware/ath11k/WCN6855/hw2.1/board-2.bin
    ibt-firmware/lib/firmware/intel/ibt-0040-0041.ddc
    ibt-firmware/lib/firmware/intel/ibt-0040-0041.sfi
    ibt-firmware/lib/firmware/intel/ibt-0040-1050.sfi
    ibt-firmware/lib/firmware/intel/ibt-0040-4150.sfi
    ibt-firmware/lib/firmware/intel/ibt-0041-0041.sfi
    ibt-firmware/lib/firmware/intel/ibt-0180-0041.sfi
    ibt-firmware/lib/firmware/intel/ibt-0180-1050.sfi
    ibt-firmware/lib/firmware/intel/ibt-0180-4150.sfi
    ibt-firmware/lib/firmware/intel/ibt-1040-0041.sfi
    ibt-firmware/lib/firmware/intel/ibt-1040-4150.sfi
    iwlwifi-firmware-be200/lib/firmware/iwlwifi-gl-c0-fm-c0-83.ucode
    iwlwifi-firmware-be200/lib/firmware/iwlwifi-gl-c0-fm-c0.pnvm
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/firmware/linux-firmware/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/firmware/linux-firmware/Makefile b/package/firmware/linux-firmware/Makefile
index f7f1f978e3..d056140f45 100644
--- a/package/firmware/linux-firmware/Makefile
+++ b/package/firmware/linux-firmware/Makefile
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=linux-firmware
-PKG_VERSION:=20231211
-PKG_RELEASE:=2
+PKG_VERSION:=20240220
+PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=96af7e4b5eabd37869cdb3dcbb7ab36911106d39b76e799fa1caab16a9dbe8bb
+PKG_HASH:=bf0f239dc0801e9d6bf5d5fb3e2f549575632cf4688f4348184199cb02c2bcd7
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 



From lede-commits at lists.infradead.org  Thu Mar  7 11:49:55 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 14:49:55 -0500
Subject: [openwrt/openwrt]  kernel: Remove dsmark support
In-Reply-To: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
References: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
Message-ID: <mailman.14360.1709840999.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/d7e5cab0265c90beb5cf4ee60eae4fa9677d92ba

commit d7e5cab0265c90beb5cf4ee60eae4fa9677d92ba
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Sun Mar 3 09:49:03 2024 -0500

    kernel: Remove dsmark support
    
    dsmark support was removed in kernel 5.15.150 and 6.1.80. Remove it from
    the kmod package as well
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
    (cherry picked from commit bd6b37f463d0530b887e052860207448c82d6ee2)
---
 package/kernel/linux/modules/netsupport.mk | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk
index ffcb5b4843..b105d346d2 100644
--- a/package/kernel/linux/modules/netsupport.mk
+++ b/package/kernel/linux/modules/netsupport.mk
@@ -979,7 +979,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_gred sch_multiq sch_sfq sch_teql sch_fq act_pedit act_simple 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
@@ -988,7 +988,6 @@ define KernelPackage/sched
   DEPENDS:=+kmod-sched-core +kmod-lib-crc32c +kmod-lib-textsearch
   KCONFIG:= \
 	CONFIG_NET_SCH_CODEL \
-	CONFIG_NET_SCH_DSMARK \
 	CONFIG_NET_SCH_GRED \
 	CONFIG_NET_SCH_MULTIQ \
 	CONFIG_NET_SCH_SFQ \



From lede-commits at lists.infradead.org  Thu Mar  7 11:49:56 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 14:49:56 -0500
Subject: [openwrt/openwrt]  kernel: bump 5.10 to 5.10.211
In-Reply-To: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
References: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
Message-ID: <mailman.14361.1709841002.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/a352312f0dd3dec317ad1ef294523c91db9f232a

commit a352312f0dd3dec317ad1ef294523c91db9f232a
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sat Mar 2 21:01:35 2024 +0100

    kernel: bump 5.10 to 5.10.211
    
    Removed because it is upstream:
    bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=ef6128a1bafe90ceb14d71cd0e69f44f00ec8b0a
    
    Manually adapted the following patch:
    bcm53xx/patches-5.10/038-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/kernel-5.10                                |  4 +-
 ...-Pass-the-full-state-to-CRTC-atomic_check.patch |  4 +-
 ...or-Create-a-helper-to-attach-the-hdr_outp.patch |  2 +-
 ...nector-Add-helper-to-compare-HDR-metadata.patch |  4 +-
 ...0-0689-drm-automatic-legacy-gamma-support.patch |  2 +-
 ...adcom-align-gpio-key-node-names-with-dtsc.patch |  4 +-
 ...oadcom-align-LED-node-names-with-dtschema.patch |  8 ++-
 ...53573-Drop-nonexistent-default-off-LED-tr.patch | 57 ----------------------
 ...ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch |  2 +-
 9 files changed, 14 insertions(+), 73 deletions(-)

diff --git a/include/kernel-5.10 b/include/kernel-5.10
index c4d422a394..af4de7a926 100644
--- a/include/kernel-5.10
+++ b/include/kernel-5.10
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.10 = .210
-LINUX_KERNEL_HASH-5.10.210 = 4ea63c5a90fdc3c459ab35c11ee8c93d2364a7cdbfb101100f8cab70d490ef6d
+LINUX_VERSION-5.10 = .211
+LINUX_KERNEL_HASH-5.10.211 = 3a780a0b107fb45443f8f08bab6f9c96360e9eb4dd846e8836d42533b41939b2
diff --git a/target/linux/bcm27xx/patches-5.10/950-0409-drm-atomic-Pass-the-full-state-to-CRTC-atomic_check.patch b/target/linux/bcm27xx/patches-5.10/950-0409-drm-atomic-Pass-the-full-state-to-CRTC-atomic_check.patch
index 775df8d9ac..853915cc64 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0409-drm-atomic-Pass-the-full-state-to-CRTC-atomic_check.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0409-drm-atomic-Pass-the-full-state-to-CRTC-atomic_check.patch
@@ -201,7 +201,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20201028123222.1732139-1-max
 
 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
 +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -5641,17 +5641,19 @@ static void dm_update_crtc_active_planes
+@@ -5642,17 +5642,19 @@ static void dm_update_crtc_active_planes
  }
  
  static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc,
@@ -225,7 +225,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20201028123222.1732139-1-max
  		WARN_ON(1);
  		return ret;
  	}
-@@ -5662,8 +5664,8 @@ static int dm_crtc_helper_atomic_check(s
+@@ -5663,8 +5665,8 @@ static int dm_crtc_helper_atomic_check(s
  	 * planes are disabled, which is not supported by the hardware. And there is legacy
  	 * userspace which stops using the HW cursor altogether in response to the resulting EINVAL.
  	 */
diff --git a/target/linux/bcm27xx/patches-5.10/950-0527-drm-connector-Create-a-helper-to-attach-the-hdr_outp.patch b/target/linux/bcm27xx/patches-5.10/950-0527-drm-connector-Create-a-helper-to-attach-the-hdr_outp.patch
index 7d5bc2afd1..b09b5e22da 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0527-drm-connector-Create-a-helper-to-attach-the-hdr_outp.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0527-drm-connector-Create-a-helper-to-attach-the-hdr_outp.patch
@@ -22,7 +22,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
 +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -6567,9 +6567,7 @@ void amdgpu_dm_connector_init_helper(str
+@@ -6568,9 +6568,7 @@ void amdgpu_dm_connector_init_helper(str
  	if (connector_type == DRM_MODE_CONNECTOR_HDMIA ||
  	    connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
  	    connector_type == DRM_MODE_CONNECTOR_eDP) {
diff --git a/target/linux/bcm27xx/patches-5.10/950-0528-drm-connector-Add-helper-to-compare-HDR-metadata.patch b/target/linux/bcm27xx/patches-5.10/950-0528-drm-connector-Add-helper-to-compare-HDR-metadata.patch
index d4705d5b89..c4fff4701d 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0528-drm-connector-Add-helper-to-compare-HDR-metadata.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0528-drm-connector-Add-helper-to-compare-HDR-metadata.patch
@@ -21,7 +21,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
 +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -5512,25 +5512,6 @@ static int fill_hdr_info_packet(const st
+@@ -5513,25 +5513,6 @@ static int fill_hdr_info_packet(const st
  	return 0;
  }
  
@@ -47,7 +47,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  static int
  amdgpu_dm_connector_atomic_check(struct drm_connector *conn,
  				 struct drm_atomic_state *state)
-@@ -5546,7 +5527,7 @@ amdgpu_dm_connector_atomic_check(struct
+@@ -5547,7 +5528,7 @@ amdgpu_dm_connector_atomic_check(struct
  	if (!crtc)
  		return 0;
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0689-drm-automatic-legacy-gamma-support.patch b/target/linux/bcm27xx/patches-5.10/950-0689-drm-automatic-legacy-gamma-support.patch
index c8ece2b211..a25fb8b72c 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0689-drm-automatic-legacy-gamma-support.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0689-drm-automatic-legacy-gamma-support.patch
@@ -42,7 +42,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20201211114237.213288-2-tomi
 
 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
 +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -5028,7 +5028,6 @@ static void dm_disable_vblank(struct drm
+@@ -5029,7 +5029,6 @@ static void dm_disable_vblank(struct drm
  static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
  	.reset = dm_crtc_reset_state,
  	.destroy = amdgpu_dm_crtc_destroy,
diff --git a/target/linux/bcm53xx/patches-5.10/037-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch b/target/linux/bcm53xx/patches-5.10/037-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
index f929dc3b60..1c0708a5f0 100644
--- a/target/linux/bcm53xx/patches-5.10/037-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
+++ b/target/linux/bcm53xx/patches-5.10/037-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
@@ -781,7 +781,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -39,7 +39,7 @@
+@@ -38,7 +38,7 @@
  	gpio-keys {
  		compatible = "gpio-keys";
  
@@ -792,7 +792,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>;
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -49,7 +49,7 @@
+@@ -47,7 +47,7 @@
  	gpio-keys {
  		compatible = "gpio-keys";
  
diff --git a/target/linux/bcm53xx/patches-5.10/038-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch b/target/linux/bcm53xx/patches-5.10/038-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
index d6bf49d0cd..a53070a506 100644
--- a/target/linux/bcm53xx/patches-5.10/038-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
+++ b/target/linux/bcm53xx/patches-5.10/038-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
@@ -1514,7 +1514,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  		};
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -23,13 +23,13 @@
+@@ -23,12 +23,12 @@
  	leds {
  		compatible = "gpio-leds";
  
@@ -1522,7 +1522,6 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-wlan {
  			label = "bcm53xx:blue:wlan";
  			gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
- 			linux,default-trigger = "default-off";
  		};
  
 -		system {
@@ -1532,7 +1531,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			linux,default-trigger = "timer";
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -20,26 +20,26 @@
+@@ -20,25 +20,25 @@
  		reg = <0x00000000 0x08000000>;
  	};
  
@@ -1544,7 +1543,6 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-5ghz {
  			label = "bcm53xx:blue:5ghz";
  			gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
- 			linux,default-trigger = "default-off";
  		};
  
 -		system {
@@ -1563,7 +1561,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-2ghz {
  			label = "bcm53xx:blue:2ghz";
  			gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
- 			linux,default-trigger = "default-off";
+ 		};
 --- a/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
 +++ b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
 @@ -20,37 +20,37 @@
diff --git a/target/linux/bcm53xx/patches-5.10/040-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch b/target/linux/bcm53xx/patches-5.10/040-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
deleted file mode 100644
index 8bad76edca..0000000000
--- a/target/linux/bcm53xx/patches-5.10/040-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From be7e1e5b0f67c58ec4be0a54db23b6a4fa6e2116 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
-Date: Fri, 7 Jul 2023 13:40:01 +0200
-Subject: [PATCH] ARM: dts: BCM53573: Drop nonexistent "default-off" LED
- trigger
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There is no such trigger documented or implemented in Linux. It was a
-copy & paste mistake.
-
-This fixes:
-arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dtb: leds: led-wlan:linux,default-trigger: 'oneOf' conditional failed, one must be fixed:
-        'default-off' is not one of ['backlight', 'default-on', 'heartbeat', 'disk-activity', 'disk-read', 'disk-write', 'timer', 'pattern', 'audio-micmute', 'audio-mute', 'bluetooth-power', 'flash', 'kbd-capslock', 'mtd', 'nand-disk', 'none', 'torch', 'usb-gadget', 'usb-host', 'usbport']
-        'default-off' does not match '^cpu[0-9]*$'
-        'default-off' does not match '^hci[0-9]+-power$'
-        'default-off' does not match '^mmc[0-9]+$'
-        'default-off' does not match '^phy[0-9]+tx$'
-        From schema: Documentation/devicetree/bindings/leds/leds-gpio.yaml
-
-Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
-Link: https://lore.kernel.org/r/20230707114004.2740-1-zajec5 at gmail.com
-Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
----
- arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dts | 1 -
- arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-810.dts  | 2 --
- 2 files changed, 3 deletions(-)
-
---- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -26,7 +26,6 @@
- 		led-wlan {
- 			label = "bcm53xx:blue:wlan";
- 			gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
--			linux,default-trigger = "default-off";
- 		};
- 
- 		led-system {
---- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -26,7 +26,6 @@
- 		led-5ghz {
- 			label = "bcm53xx:blue:5ghz";
- 			gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
--			linux,default-trigger = "default-off";
- 		};
- 
- 		led-system {
-@@ -42,7 +41,6 @@
- 		led-2ghz {
- 			label = "bcm53xx:blue:2ghz";
- 			gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
--			linux,default-trigger = "default-off";
- 		};
- 	};
- 
diff --git a/target/linux/generic/pending-5.10/851-0004-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch b/target/linux/generic/pending-5.10/851-0004-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
index b227ba5f03..10bd4c2985 100644
--- a/target/linux/generic/pending-5.10/851-0004-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
+++ b/target/linux/generic/pending-5.10/851-0004-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
@@ -35,8 +35,8 @@ Acked-by: Miquel Raynal <miquel.raynal at bootlin.com>
 -	AHCI_HFLAG_IGN_NOTSUPP_POWER_ON	= BIT(27), /* ignore -EOPNOTSUPP
 -						      from phy_power_on() */
  	AHCI_HFLAG_NO_SXS		= BIT(28), /* SXS not supported */
+ 	AHCI_HFLAG_43BIT_ONLY		= BIT(29), /* 43bit DMA addr limit */
  
- 	/* ap->flags bits */
 --- a/drivers/ata/ahci_mvebu.c
 +++ b/drivers/ata/ahci_mvebu.c
 @@ -227,7 +227,7 @@ static const struct ahci_mvebu_plat_data



From lede-commits at lists.infradead.org  Thu Mar  7 11:49:57 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 14:49:57 -0500
Subject: [openwrt/openwrt]  kernel: Remove unused schedulers
In-Reply-To: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
References: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
Message-ID: <mailman.14362.1709841003.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/f60a5f2dd36a59a36e11b711ce950877e8dbed40

commit f60a5f2dd36a59a36e11b711ce950877e8dbed40
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sun Mar 3 12:34:19 2024 +0100

    kernel: Remove unused schedulers
    
    These schedulers were removed in kernel 5.15.150 and 6.1.180.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    (cherry picked from commit cd450923ab066ce35e8ce55340e66986f14a42d8)
---
 target/linux/generic/config-5.10 | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/target/linux/generic/config-5.10 b/target/linux/generic/config-5.10
index e179915004..c9a49cd1e0 100644
--- a/target/linux/generic/config-5.10
+++ b/target/linux/generic/config-5.10
@@ -3931,15 +3931,12 @@ CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_NET_RX_BUSY_POLL=y
 # CONFIG_NET_SB1000 is not set
 CONFIG_NET_SCHED=y
-# CONFIG_NET_SCH_ATM is not set
 # CONFIG_NET_SCH_CAKE is not set
-# CONFIG_NET_SCH_CBQ is not set
 # CONFIG_NET_SCH_CBS is not set
 # CONFIG_NET_SCH_CHOKE is not set
 # CONFIG_NET_SCH_CODEL is not set
 CONFIG_NET_SCH_DEFAULT=y
 # CONFIG_NET_SCH_DRR is not set
-# CONFIG_NET_SCH_DSMARK is not set
 # CONFIG_NET_SCH_ETF is not set
 # CONFIG_NET_SCH_ETS is not set
 CONFIG_NET_SCH_FIFO=y



From lede-commits at lists.infradead.org  Thu Mar  7 11:49:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 14:49:58 -0500
Subject: [openwrt/openwrt]  x86: Fix compile problem with kernel 5.10.211
In-Reply-To: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
References: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
Message-ID: <mailman.14363.1709841005.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/4895ab23a75cafc6c984f2f931c9e209838d8d3f

commit 4895ab23a75cafc6c984f2f931c9e209838d8d3f
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sun Mar 3 19:59:25 2024 +0100

    x86: Fix compile problem with kernel 5.10.211
    
    Fix a compile problem in upstream kernel.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 .../patches-5.10/020-x86-Fix-compile-problem.patch | 40 ++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/target/linux/x86/patches-5.10/020-x86-Fix-compile-problem.patch b/target/linux/x86/patches-5.10/020-x86-Fix-compile-problem.patch
new file mode 100644
index 0000000000..ad33085f98
--- /dev/null
+++ b/target/linux/x86/patches-5.10/020-x86-Fix-compile-problem.patch
@@ -0,0 +1,40 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <hauke at hauke-m.de>
+Date: Sun, 3 Mar 2024 19:57:11 +0100
+Subject: x86: Fix compile problem
+
+This fixes the following compile problem:
+  CC      arch/x86/kernel/paravirt.o
+arch/x86/kernel/paravirt.c: In function 'paravirt_patch_call':
+arch/x86/kernel/paravirt.c:65:9: error: implicit declaration of function '__text_gen_insn' [-Werror=implicit-function-declaration]
+   65 |         __text_gen_insn(insn_buff, CALL_INSN_OPCODE,
+      |         ^~~~~~~~~~~~~~~
+arch/x86/kernel/paravirt.c:65:36: error: 'CALL_INSN_OPCODE' undeclared (first use in this function)
+   65 |         __text_gen_insn(insn_buff, CALL_INSN_OPCODE,
+      |                                    ^~~~~~~~~~~~~~~~
+arch/x86/kernel/paravirt.c:65:36: note: each undeclared identifier is reported only once for each function it appears in
+arch/x86/kernel/paravirt.c:66:47: error: 'CALL_INSN_SIZE' undeclared (first use in this function)
+   66 |                         (void *)addr, target, CALL_INSN_SIZE);
+      |                                               ^~~~~~~~~~~~~~
+arch/x86/kernel/paravirt.c:68:1: error: control reaches end of non-void function [-Werror=return-type]
+   68 | }
+      | ^
+cc1: some warnings being treated as errors
+make[7]: *** [scripts/Makefile.build:286: arch/x86/kernel/paravirt.o] Error 1
+
+Fixes: b253061d4b86 ("x86/ibt,paravirt: Use text_gen_insn() for paravirt_patch()")
+Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
+---
+ arch/x86/kernel/paravirt.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/x86/kernel/paravirt.c
++++ b/arch/x86/kernel/paravirt.c
+@@ -14,6 +14,7 @@
+ #include <linux/highmem.h>
+ #include <linux/kprobes.h>
+ #include <linux/pgtable.h>
++#include <linux/static_call.h>
+ 
+ #include <asm/bug.h>
+ #include <asm/paravirt.h>



From lede-commits at lists.infradead.org  Thu Mar  7 11:49:54 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 14:49:54 -0500
Subject: [openwrt/openwrt]  kernel: bump 5.10 to 5.10.210
In-Reply-To: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
References: <170984099418.776424.6810292892121733450@git-01.infra.openwrt.org>
Message-ID: <mailman.14364.1709841007.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/f2e8d5974c062fa3b125e70e0bd247f3be23ca96

commit f2e8d5974c062fa3b125e70e0bd247f3be23ca96
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sat Mar 2 19:17:28 2024 +0100

    kernel: bump 5.10 to 5.10.210
    
    All patches refreshed automatically.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/kernel-5.10                                |  4 ++--
 ...ore-validate-selector-against-linear_min_.patch |  6 ++---
 ...or-core-do-not-continue-if-selector-match.patch |  2 +-
 ...ore-return-zero-for-selectors-lower-than-.patch |  4 ++--
 ...03-leds-add-reset-controller-based-driver.patch |  2 +-
 .../patches-5.10/910-unaligned_access_hacks.patch  |  7 +++---
 .../ath79/patches-5.10/920-mikrotik-rb4xx.patch    |  2 +-
 ...-bcm2835-Support-setting-reboot-partition.patch |  6 ++---
 .../patches-5.10/950-0040-Add-dwc_otg-driver.patch |  2 +-
 ...950-0046-MMC-added-alternative-MMC-driver.patch |  6 ++---
 ...-sc16is7xx-Don-t-spin-if-no-data-received.patch |  2 +-
 ...enet-Better-coalescing-parameter-defaults.patch |  4 ++--
 ...nable-link-energy-detect-powerdown-for-ex.patch |  2 +-
 ...-device-quirks-for-Freeway-Airmouse-T3-an.patch |  4 ++--
 ...mgenet-Workaround-2-for-Pi4-Ethernet-fail.patch |  2 +-
 ...6-sc16is7xx-Fix-for-hardware-flow-control.patch |  6 ++---
 ...334-net-bcmgenet-Reset-RBUF-on-first-open.patch |  8 +++----
 ...m2835-Ignore-params-after-the-partition-n.patch |  2 +-
 ...Pass-the-full-state-to-CRTC-atomic-enable.patch |  2 +-
 ...-Pass-the-full-state-to-CRTC-atomic_check.patch |  2 +-
 ...Pass-the-full-state-to-CRTC-atomic-begin-.patch |  2 +-
 ...i-DPI-interface-in-mode6-for-18-bit-color.patch |  2 +-
 ...-removed-syscon_regmap_lookup_by_pdevname.patch |  2 +-
 ...ft_flow_offload-handle-netdevice-events-f.patch |  2 +-
 ...t-mtk_eth_soc-add-support-for-initializin.patch | 13 +++++-----
 ...t-mtk_eth_soc-add-flow-offloading-support.patch |  4 ++--
 ...t-mtk_eth_soc-implement-dynamic-interrupt.patch | 10 ++++----
 ...net-ethernet-mediatek-support-setting-MTU.patch |  6 ++---
 ...pass-the-dst-buffer-to-of_get_mac_address.patch |  4 ++--
 ...3-advertise-lack-of-built-in-msi-handling.patch |  4 ++--
 ...63138-add-support-for-BCM63138-controller.patch |  2 +-
 .../generic/hack-5.10/800-ubnt-ledbar-driver.patch |  2 +-
 .../pending-5.10/203-kallsyms_uncompressed.patch   |  2 +-
 .../666-Add-support-for-MAP-E-FMRs-mesh-mode.patch | 28 +++++++++++-----------
 ...t-mtk_eth_soc-add-support-for-coherent-DM.patch | 10 ++++----
 ...t-mtk_eth_soc-add-support-for-Wireless-Et.patch |  2 +-
 ...t-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch |  6 ++---
 ...t-mtk_eth_soc-rework-hardware-flow-table-.patch |  2 +-
 .../810-pci_disable_common_quirks.patch            |  6 ++---
 ...host-xhci-mvebu-make-USB-3.0-PHY-optional.patch |  2 +-
 ...-net-mediatek-add-flow-offload-for-mt7623.patch |  2 +-
 ...ek-Use-regmap-to-get-shared-pcie-cfg-base.patch |  8 +++----
 ...cie-mediatek-add-support-for-coherent-DMA.patch |  2 +-
 ...-omnia-support-HW-controlled-mode-via-pri.patch |  2 +-
 ...-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch |  2 +-
 ...ds-Add-the-IEI-WT61P803-PUZZLE-LED-driver.patch |  2 +-
 ...rk-for-Gateworks-PLX-PEX860x-switch-with-.patch |  2 +-
 ...-net-ethernet-mediatek-support-net-labels.patch |  4 ++--
 ...mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch |  2 +-
 49 files changed, 106 insertions(+), 106 deletions(-)

diff --git a/include/kernel-5.10 b/include/kernel-5.10
index bf56897044..c4d422a394 100644
--- a/include/kernel-5.10
+++ b/include/kernel-5.10
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.10 = .208
-LINUX_KERNEL_HASH-5.10.208 = 9025147a09547f28ec8f496c12efc30bd2fc03b2824a668e8636b2ca0ef1fb6e
+LINUX_VERSION-5.10 = .210
+LINUX_KERNEL_HASH-5.10.210 = 4ea63c5a90fdc3c459ab35c11ee8c93d2364a7cdbfb101100f8cab70d490ef6d
diff --git a/target/linux/at91/patches-5.10/127-regulator-core-validate-selector-against-linear_min_.patch b/target/linux/at91/patches-5.10/127-regulator-core-validate-selector-against-linear_min_.patch
index 1915e13a31..ad810f4fc4 100644
--- a/target/linux/at91/patches-5.10/127-regulator-core-validate-selector-against-linear_min_.patch
+++ b/target/linux/at91/patches-5.10/127-regulator-core-validate-selector-against-linear_min_.patch
@@ -20,7 +20,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
 
 --- a/drivers/regulator/core.c
 +++ b/drivers/regulator/core.c
-@@ -3074,7 +3074,8 @@ static int _regulator_list_voltage(struc
+@@ -3078,7 +3078,8 @@ static int _regulator_list_voltage(struc
  		return rdev->desc->fixed_uV;
  
  	if (ops->list_voltage) {
@@ -30,7 +30,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  			return -EINVAL;
  		if (lock)
  			regulator_lock(rdev);
-@@ -3225,7 +3226,8 @@ int regulator_list_hardware_vsel(struct
+@@ -3229,7 +3230,8 @@ int regulator_list_hardware_vsel(struct
  	struct regulator_dev *rdev = regulator->rdev;
  	const struct regulator_ops *ops = rdev->desc->ops;
  
@@ -40,7 +40,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  		return -EINVAL;
  	if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap)
  		return -EOPNOTSUPP;
-@@ -4148,6 +4150,9 @@ int regulator_set_voltage_time(struct re
+@@ -4152,6 +4154,9 @@ int regulator_set_voltage_time(struct re
  
  	for (i = 0; i < rdev->desc->n_voltages; i++) {
  		/* We only look for exact voltage matches here */
diff --git a/target/linux/at91/patches-5.10/128-regulator-core-do-not-continue-if-selector-match.patch b/target/linux/at91/patches-5.10/128-regulator-core-do-not-continue-if-selector-match.patch
index 5e7f5c446c..445975b1f2 100644
--- a/target/linux/at91/patches-5.10/128-regulator-core-do-not-continue-if-selector-match.patch
+++ b/target/linux/at91/patches-5.10/128-regulator-core-do-not-continue-if-selector-match.patch
@@ -14,7 +14,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
 
 --- a/drivers/regulator/core.c
 +++ b/drivers/regulator/core.c
-@@ -4153,6 +4153,9 @@ int regulator_set_voltage_time(struct re
+@@ -4157,6 +4157,9 @@ int regulator_set_voltage_time(struct re
  		if (i < rdev->desc->linear_min_sel)
  			continue;
  
diff --git a/target/linux/at91/patches-5.10/129-regulator-core-return-zero-for-selectors-lower-than-.patch b/target/linux/at91/patches-5.10/129-regulator-core-return-zero-for-selectors-lower-than-.patch
index 878f1c9c71..f8f4a024f1 100644
--- a/target/linux/at91/patches-5.10/129-regulator-core-return-zero-for-selectors-lower-than-.patch
+++ b/target/linux/at91/patches-5.10/129-regulator-core-return-zero-for-selectors-lower-than-.patch
@@ -21,7 +21,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
 
 --- a/drivers/regulator/core.c
 +++ b/drivers/regulator/core.c
-@@ -3074,9 +3074,10 @@ static int _regulator_list_voltage(struc
+@@ -3078,9 +3078,10 @@ static int _regulator_list_voltage(struc
  		return rdev->desc->fixed_uV;
  
  	if (ops->list_voltage) {
@@ -34,7 +34,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  		if (lock)
  			regulator_lock(rdev);
  		ret = ops->list_voltage(rdev, selector);
-@@ -3226,9 +3227,10 @@ int regulator_list_hardware_vsel(struct
+@@ -3230,9 +3231,10 @@ int regulator_list_hardware_vsel(struct
  	struct regulator_dev *rdev = regulator->rdev;
  	const struct regulator_ops *ops = rdev->desc->ops;
  
diff --git a/target/linux/ath79/patches-5.10/0003-leds-add-reset-controller-based-driver.patch b/target/linux/ath79/patches-5.10/0003-leds-add-reset-controller-based-driver.patch
index c1fa96ab44..2a825afd1f 100644
--- a/target/linux/ath79/patches-5.10/0003-leds-add-reset-controller-based-driver.patch
+++ b/target/linux/ath79/patches-5.10/0003-leds-add-reset-controller-based-driver.patch
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/drivers/leds/Kconfig
 +++ b/drivers/leds/Kconfig
-@@ -941,6 +941,17 @@ config LEDS_UBNT_LEDBAR
+@@ -942,6 +942,17 @@ config LEDS_UBNT_LEDBAR
  	  To compile this driver as a module, choose M here: the module
  	  will be called leds-ubnt-ledbar.
  
diff --git a/target/linux/ath79/patches-5.10/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-5.10/910-unaligned_access_hacks.patch
index 94cd779eb0..2a7ea0e1c2 100644
--- a/target/linux/ath79/patches-5.10/910-unaligned_access_hacks.patch
+++ b/target/linux/ath79/patches-5.10/910-unaligned_access_hacks.patch
@@ -42,7 +42,7 @@
  	} while (word != stop);
  
  	return csum_fold(csum);
-@@ -180,73 +184,6 @@ static inline __sum16 ip_compute_csum(co
+@@ -180,74 +184,6 @@ static inline __sum16 ip_compute_csum(co
  	return csum_fold(csum_partial(buff, len, 0));
  }
  
@@ -108,7 +108,8 @@
 -	"	.set	pop"
 -	: "=&r" (sum), "=&r" (tmp)
 -	: "r" (saddr), "r" (daddr),
--	  "0" (htonl(len)), "r" (htonl(proto)), "r" (sum));
+-	  "0" (htonl(len)), "r" (htonl(proto)), "r" (sum)
+-	: "memory");
 -
 -	return csum_fold(sum);
 -}
@@ -292,7 +293,7 @@
  #endif /* _LINUX_TYPES_H */
 --- a/net/ipv4/af_inet.c
 +++ b/net/ipv4/af_inet.c
-@@ -1471,8 +1471,8 @@ struct sk_buff *inet_gro_receive(struct
+@@ -1474,8 +1474,8 @@ struct sk_buff *inet_gro_receive(struct
  	if (unlikely(ip_fast_csum((u8 *)iph, 5)))
  		goto out_unlock;
  
diff --git a/target/linux/ath79/patches-5.10/920-mikrotik-rb4xx.patch b/target/linux/ath79/patches-5.10/920-mikrotik-rb4xx.patch
index 4ed13deb5c..d7bd449026 100644
--- a/target/linux/ath79/patches-5.10/920-mikrotik-rb4xx.patch
+++ b/target/linux/ath79/patches-5.10/920-mikrotik-rb4xx.patch
@@ -1,6 +1,6 @@
 --- a/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
-@@ -2142,6 +2142,14 @@ config RAVE_SP_CORE
+@@ -2143,6 +2143,14 @@ config RAVE_SP_CORE
  	  Select this to get support for the Supervisory Processor
  	  device found on several devices in RAVE line of hardware.
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0017-watchdog-bcm2835-Support-setting-reboot-partition.patch b/target/linux/bcm27xx/patches-5.10/950-0017-watchdog-bcm2835-Support-setting-reboot-partition.patch
index e33b5d4bcf..cc936d90c6 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0017-watchdog-bcm2835-Support-setting-reboot-partition.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0017-watchdog-bcm2835-Support-setting-reboot-partition.patch
@@ -36,7 +36,7 @@ Signed-off-by: Noralf Tr?nnes <noralf at tronnes.org>
  
  #define SECS_TO_WDOG_TICKS(x) ((x) << 16)
  #define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
-@@ -97,9 +91,24 @@ static unsigned int bcm2835_wdt_get_time
+@@ -98,9 +92,24 @@ static unsigned int bcm2835_wdt_get_time
  	return WDOG_TICKS_TO_SECS(ret & PM_WDOG_TIME_SET);
  }
  
@@ -63,7 +63,7 @@ Signed-off-by: Noralf Tr?nnes <noralf at tronnes.org>
  
  	/* use a timeout of 10 ticks (~150us) */
  	writel_relaxed(10 | PM_PASSWORD, wdt->base + PM_WDOG);
-@@ -117,7 +126,13 @@ static int bcm2835_restart(struct watchd
+@@ -118,7 +127,13 @@ static int bcm2835_restart(struct watchd
  {
  	struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog);
  
@@ -78,7 +78,7 @@ Signed-off-by: Noralf Tr?nnes <noralf at tronnes.org>
  
  	return 0;
  }
-@@ -152,19 +167,9 @@ static struct watchdog_device bcm2835_wd
+@@ -153,19 +168,9 @@ static struct watchdog_device bcm2835_wd
  static void bcm2835_power_off(void)
  {
  	struct bcm2835_wdt *wdt = bcm2835_power_off_wdt;
diff --git a/target/linux/bcm27xx/patches-5.10/950-0040-Add-dwc_otg-driver.patch b/target/linux/bcm27xx/patches-5.10/950-0040-Add-dwc_otg-driver.patch
index 92c4986d5f..f206556df2 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0040-Add-dwc_otg-driver.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0040-Add-dwc_otg-driver.patch
@@ -1123,7 +1123,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
  }
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -5663,7 +5663,7 @@ static void port_event(struct usb_hub *h
+@@ -5671,7 +5671,7 @@ static void port_event(struct usb_hub *h
  		port_dev->over_current_count++;
  		port_over_current_notify(port_dev);
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0046-MMC-added-alternative-MMC-driver.patch b/target/linux/bcm27xx/patches-5.10/950-0046-MMC-added-alternative-MMC-driver.patch
index 26f3e72673..0e134a6f39 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0046-MMC-added-alternative-MMC-driver.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0046-MMC-added-alternative-MMC-driver.patch
@@ -221,7 +221,7 @@ Signed-off-by: Yaroslav Rosomakho <yaroslavros at gmail.com>
  static inline int mmc_blk_part_switch(struct mmc_card *card,
  				      unsigned int part_type);
  static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
-@@ -2911,6 +2918,7 @@ static int mmc_blk_probe(struct mmc_card
+@@ -2951,6 +2958,7 @@ static int mmc_blk_probe(struct mmc_card
  {
  	struct mmc_blk_data *md, *part_md;
  	char cap_str[10];
@@ -229,7 +229,7 @@ Signed-off-by: Yaroslav Rosomakho <yaroslavros at gmail.com>
  
  	/*
  	 * Check that the card supports the command class(es) we need.
-@@ -2918,7 +2926,16 @@ static int mmc_blk_probe(struct mmc_card
+@@ -2958,7 +2966,16 @@ static int mmc_blk_probe(struct mmc_card
  	if (!(card->csd.cmdclass & CCC_BLOCK_READ))
  		return -ENODEV;
  
@@ -247,7 +247,7 @@ Signed-off-by: Yaroslav Rosomakho <yaroslavros at gmail.com>
  
  	card->complete_wq = alloc_workqueue("mmc_complete",
  					WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
-@@ -2933,9 +2950,14 @@ static int mmc_blk_probe(struct mmc_card
+@@ -2973,9 +2990,14 @@ static int mmc_blk_probe(struct mmc_card
  
  	string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2,
  			cap_str, sizeof(cap_str));
diff --git a/target/linux/bcm27xx/patches-5.10/950-0088-sc16is7xx-Don-t-spin-if-no-data-received.patch b/target/linux/bcm27xx/patches-5.10/950-0088-sc16is7xx-Don-t-spin-if-no-data-received.patch
index ec1a252d49..46a904988a 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0088-sc16is7xx-Don-t-spin-if-no-data-received.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0088-sc16is7xx-Don-t-spin-if-no-data-received.patch
@@ -12,7 +12,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/tty/serial/sc16is7xx.c
 +++ b/drivers/tty/serial/sc16is7xx.c
-@@ -708,6 +708,8 @@ static bool sc16is7xx_port_irq(struct sc
+@@ -709,6 +709,8 @@ static bool sc16is7xx_port_irq(struct sc
  
  			if (rxlen)
  				sc16is7xx_handle_rx(port, rxlen, iir);
diff --git a/target/linux/bcm27xx/patches-5.10/950-0131-bcmgenet-Better-coalescing-parameter-defaults.patch b/target/linux/bcm27xx/patches-5.10/950-0131-bcmgenet-Better-coalescing-parameter-defaults.patch
index d1813cd1e4..8f6ad0eebd 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0131-bcmgenet-Better-coalescing-parameter-defaults.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0131-bcmgenet-Better-coalescing-parameter-defaults.patch
@@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -2614,7 +2614,7 @@ static void bcmgenet_init_tx_ring(struct
+@@ -2611,7 +2611,7 @@ static void bcmgenet_init_tx_ring(struct
  
  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
@@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  	/* Disable rate control for now */
  	bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
  				  TDMA_FLOW_PERIOD);
-@@ -4084,9 +4084,12 @@ static int bcmgenet_probe(struct platfor
+@@ -4081,9 +4081,12 @@ static int bcmgenet_probe(struct platfor
  	netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
  
  	/* Set default coalescing parameters */
diff --git a/target/linux/bcm27xx/patches-5.10/950-0132-net-genet-enable-link-energy-detect-powerdown-for-ex.patch b/target/linux/bcm27xx/patches-5.10/950-0132-net-genet-enable-link-energy-detect-powerdown-for-ex.patch
index 5ed0367290..c61ba66c9f 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0132-net-genet-enable-link-energy-detect-powerdown-for-ex.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0132-net-genet-enable-link-energy-detect-powerdown-for-ex.patch
@@ -20,7 +20,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-@@ -286,6 +286,8 @@ int bcmgenet_mii_probe(struct net_device
+@@ -292,6 +292,8 @@ int bcmgenet_mii_probe(struct net_device
  	/* Communicate the integrated PHY revision */
  	if (priv->internal_phy)
  		phy_flags = priv->gphy_rev;
diff --git a/target/linux/bcm27xx/patches-5.10/950-0151-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch b/target/linux/bcm27xx/patches-5.10/950-0151-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch
index b8bcf445bc..eb0a7fb189 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0151-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0151-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch
@@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
 
 --- a/drivers/hid/hid-ids.h
 +++ b/drivers/hid/hid-ids.h
-@@ -221,6 +221,9 @@
+@@ -222,6 +222,9 @@
  #define USB_VENDOR_ID_BAANTO		0x2453
  #define USB_DEVICE_ID_BAANTO_MT_190W2	0x0100
  
@@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
  #define USB_VENDOR_ID_BELKIN		0x050d
  #define USB_DEVICE_ID_FLIP_KVM		0x3201
  
-@@ -1286,6 +1289,9 @@
+@@ -1287,6 +1290,9 @@
  #define USB_VENDOR_ID_XAT	0x2505
  #define USB_DEVICE_ID_XAT_CSR	0x0220
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0153-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch b/target/linux/bcm27xx/patches-5.10/950-0153-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch
index 9977b3efe5..6724b38f27 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0153-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0153-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch
@@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  
  static inline void bcmgenet_writel(u32 value, void __iomem *offset)
  {
-@@ -2445,6 +2448,11 @@ static void reset_umac(struct bcmgenet_p
+@@ -2442,6 +2445,11 @@ static void reset_umac(struct bcmgenet_p
  	bcmgenet_rbuf_ctrl_set(priv, 0);
  	udelay(10);
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0246-sc16is7xx-Fix-for-hardware-flow-control.patch b/target/linux/bcm27xx/patches-5.10/950-0246-sc16is7xx-Fix-for-hardware-flow-control.patch
index 053e32c26a..16d831493f 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0246-sc16is7xx-Fix-for-hardware-flow-control.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0246-sc16is7xx-Fix-for-hardware-flow-control.patch
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
 
 --- a/drivers/tty/serial/sc16is7xx.c
 +++ b/drivers/tty/serial/sc16is7xx.c
-@@ -523,8 +523,9 @@ static int sc16is7xx_set_baud(struct uar
+@@ -524,8 +524,9 @@ static int sc16is7xx_set_baud(struct uar
  
  	/* Enable enhanced features */
  	regcache_cache_bypass(s->regmap, true);
@@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  	regcache_cache_bypass(s->regmap, false);
  
  	/* Put LCR back to the normal mode */
-@@ -854,7 +855,7 @@ static unsigned int sc16is7xx_get_mctrl(
+@@ -855,7 +856,7 @@ static unsigned int sc16is7xx_get_mctrl(
  	/* DCD and DSR are not wired and CTS/RTS is handled automatically
  	 * so just indicate DSR and CAR asserted
  	 */
@@ -47,7 +47,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  }
  
  static void sc16is7xx_set_mctrl(struct uart_port *port, unsigned int mctrl)
-@@ -941,14 +942,19 @@ static void sc16is7xx_set_termios(struct
+@@ -942,14 +943,19 @@ static void sc16is7xx_set_termios(struct
  	regcache_cache_bypass(s->regmap, true);
  	sc16is7xx_port_write(port, SC16IS7XX_XON1_REG, termios->c_cc[VSTART]);
  	sc16is7xx_port_write(port, SC16IS7XX_XOFF1_REG, termios->c_cc[VSTOP]);
diff --git a/target/linux/bcm27xx/patches-5.10/950-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch b/target/linux/bcm27xx/patches-5.10/950-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch
index dc6c2b745b..4464a6dc74 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch
@@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -3263,7 +3263,7 @@ static void bcmgenet_get_hw_addr(struct
+@@ -3260,7 +3260,7 @@ static void bcmgenet_get_hw_addr(struct
  }
  
  /* Returns a reusable dma control register value */
@@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  {
  	unsigned int i;
  	u32 reg;
-@@ -3288,6 +3288,14 @@ static u32 bcmgenet_dma_disable(struct b
+@@ -3285,6 +3285,14 @@ static u32 bcmgenet_dma_disable(struct b
  	udelay(10);
  	bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH);
  
@@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  	return dma_ctrl;
  }
  
-@@ -3351,8 +3359,8 @@ static int bcmgenet_open(struct net_devi
+@@ -3348,8 +3356,8 @@ static int bcmgenet_open(struct net_devi
  
  	bcmgenet_set_hw_addr(priv, dev->dev_addr);
  
@@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  
  	/* Reinitialize TDMA and RDMA and SW housekeeping */
  	ret = bcmgenet_init_dma(priv);
-@@ -4213,7 +4221,7 @@ static int bcmgenet_resume(struct device
+@@ -4210,7 +4218,7 @@ static int bcmgenet_resume(struct device
  			bcmgenet_hfb_create_rxnfc_filter(priv, rule);
  
  	/* Disable RX/TX DMA and flush TX queues */
diff --git a/target/linux/bcm27xx/patches-5.10/950-0369-watchdog-bcm2835-Ignore-params-after-the-partition-n.patch b/target/linux/bcm27xx/patches-5.10/950-0369-watchdog-bcm2835-Ignore-params-after-the-partition-n.patch
index dba18c6fc6..4c83f65233 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0369-watchdog-bcm2835-Ignore-params-after-the-partition-n.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0369-watchdog-bcm2835-Ignore-params-after-the-partition-n.patch
@@ -12,7 +12,7 @@ which are only relevant to other reboot notifiers.
 
 --- a/drivers/watchdog/bcm2835_wdt.c
 +++ b/drivers/watchdog/bcm2835_wdt.c
-@@ -126,10 +126,12 @@ static int bcm2835_restart(struct watchd
+@@ -127,10 +127,12 @@ static int bcm2835_restart(struct watchd
  {
  	struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog);
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0408-drm-atomic-Pass-the-full-state-to-CRTC-atomic-enable.patch b/target/linux/bcm27xx/patches-5.10/950-0408-drm-atomic-Pass-the-full-state-to-CRTC-atomic-enable.patch
index a4a29ba4fd..6a6d565968 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0408-drm-atomic-Pass-the-full-state-to-CRTC-atomic-enable.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0408-drm-atomic-Pass-the-full-state-to-CRTC-atomic-enable.patch
@@ -667,7 +667,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/845aa10ef171fc0ea060495efef1
  {
  	struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
  	struct mdp4_kms *mdp4_kms = get_kms(crtc);
-@@ -284,7 +284,7 @@ static void mdp4_crtc_atomic_disable(str
+@@ -293,7 +293,7 @@ static void mdp4_crtc_atomic_disable(str
  }
  
  static void mdp4_crtc_atomic_enable(struct drm_crtc *crtc,
diff --git a/target/linux/bcm27xx/patches-5.10/950-0409-drm-atomic-Pass-the-full-state-to-CRTC-atomic_check.patch b/target/linux/bcm27xx/patches-5.10/950-0409-drm-atomic-Pass-the-full-state-to-CRTC-atomic_check.patch
index 1a56db5b99..775df8d9ac 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0409-drm-atomic-Pass-the-full-state-to-CRTC-atomic_check.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0409-drm-atomic-Pass-the-full-state-to-CRTC-atomic_check.patch
@@ -570,7 +570,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20201028123222.1732139-1-max
  				crtc->base.id, rc);
 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
 +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
-@@ -307,7 +307,7 @@ static void mdp4_crtc_atomic_enable(stru
+@@ -316,7 +316,7 @@ static void mdp4_crtc_atomic_enable(stru
  }
  
  static int mdp4_crtc_atomic_check(struct drm_crtc *crtc,
diff --git a/target/linux/bcm27xx/patches-5.10/950-0410-drm-atomic-Pass-the-full-state-to-CRTC-atomic-begin-.patch b/target/linux/bcm27xx/patches-5.10/950-0410-drm-atomic-Pass-the-full-state-to-CRTC-atomic-begin-.patch
index 9803d702ef..72b8abb20a 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0410-drm-atomic-Pass-the-full-state-to-CRTC-atomic-begin-.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0410-drm-atomic-Pass-the-full-state-to-CRTC-atomic-begin-.patch
@@ -654,7 +654,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20201028123222.1732139-2-max
  	struct drm_device *dev;
 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
 +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
-@@ -316,14 +316,14 @@ static int mdp4_crtc_atomic_check(struct
+@@ -325,14 +325,14 @@ static int mdp4_crtc_atomic_check(struct
  }
  
  static void mdp4_crtc_atomic_begin(struct drm_crtc *crtc,
diff --git a/target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch b/target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
index 1d1d6ab118..a4a79e6769 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0650-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
@@ -157,7 +157,7 @@ Signed-off-by: Joerg Quinten <aBUGSworstnightmare at gmail.com>
  static const struct drm_display_mode innolux_at070tn92_mode = {
  	.clock = 33333,
  	.hdisplay = 800,
-@@ -4085,6 +4117,9 @@ static const struct of_device_id platfor
+@@ -4087,6 +4119,9 @@ static const struct of_device_id platfor
  		.compatible = "innolux,at043tn24",
  		.data = &innolux_at043tn24,
  	}, {
diff --git a/target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch b/target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch
index 683b1bbfce..bf1c418621 100644
--- a/target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch
+++ b/target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch
@@ -16,7 +16,7 @@ Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
 
 --- a/drivers/mfd/syscon.c
 +++ b/drivers/mfd/syscon.c
-@@ -205,6 +205,27 @@ struct regmap *syscon_regmap_lookup_by_c
+@@ -209,6 +209,27 @@ struct regmap *syscon_regmap_lookup_by_c
  }
  EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_compatible);
  
diff --git a/target/linux/generic/backport-5.10/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/backport-5.10/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index 82a62b0f2d..7f524dc900 100644
--- a/target/linux/generic/backport-5.10/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/backport-5.10/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -239,47 +239,14 @@ static struct nft_expr_type nft_flow_off
+@@ -244,47 +244,14 @@ static struct nft_expr_type nft_flow_off
  	.owner		= THIS_MODULE,
  };
  
diff --git a/target/linux/generic/backport-5.10/610-v5.13-32-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch b/target/linux/generic/backport-5.10/610-v5.13-32-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch
index e77530ba1f..bececca214 100644
--- a/target/linux/generic/backport-5.10/610-v5.13-32-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch
+++ b/target/linux/generic/backport-5.10/610-v5.13-32-net-ethernet-mtk_eth_soc-add-support-for-initializin.patch
@@ -27,7 +27,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  obj-$(CONFIG_NET_MEDIATEK_STAR_EMAC) += mtk_star_emac.o
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2303,7 +2303,10 @@ static int mtk_open(struct net_device *d
+@@ -2303,14 +2303,20 @@ static int mtk_open(struct net_device *d
  
  	/* we run 2 netdevs on the same dma ring so we only bring it up once */
  	if (!refcount_read(&eth->dma_refcnt)) {
@@ -37,9 +37,8 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
 +
 +		err = mtk_start_dma(eth);
  
- 		if (err)
  		if (err) {
-@@ -2311,7 +2314,10 @@ static int mtk_open(struct net_device *d
+ 			phylink_disconnect_phy(mac->phylink);
  			return err;
  		}
  
@@ -51,7 +50,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  
  		napi_enable(&eth->tx_napi);
  		napi_enable(&eth->rx_napi);
-@@ -2378,6 +2384,9 @@ static int mtk_stop(struct net_device *d
+@@ -2377,6 +2383,9 @@ static int mtk_stop(struct net_device *d
  
  	mtk_dma_free(eth);
  
@@ -61,7 +60,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  	return 0;
  }
  
-@@ -3106,6 +3115,13 @@ static int mtk_probe(struct platform_dev
+@@ -3105,6 +3114,13 @@ static int mtk_probe(struct platform_dev
  			goto err_free_dev;
  	}
  
@@ -75,7 +74,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  	for (i = 0; i < MTK_MAX_DEVS; i++) {
  		if (!eth->netdev[i])
  			continue;
-@@ -3180,6 +3196,7 @@ static const struct mtk_soc_data mt7621_
+@@ -3179,6 +3195,7 @@ static const struct mtk_soc_data mt7621_
  	.hw_features = MTK_HW_FEATURES,
  	.required_clks = MT7621_CLKS_BITMAP,
  	.required_pctl = false,
@@ -83,7 +82,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  };
  
  static const struct mtk_soc_data mt7622_data = {
-@@ -3188,6 +3205,7 @@ static const struct mtk_soc_data mt7622_
+@@ -3187,6 +3204,7 @@ static const struct mtk_soc_data mt7622_
  	.hw_features = MTK_HW_FEATURES,
  	.required_clks = MT7622_CLKS_BITMAP,
  	.required_pctl = false,
diff --git a/target/linux/generic/backport-5.10/610-v5.13-33-net-ethernet-mtk_eth_soc-add-flow-offloading-support.patch b/target/linux/generic/backport-5.10/610-v5.13-33-net-ethernet-mtk_eth_soc-add-flow-offloading-support.patch
index 140e413be2..1ce24241f2 100644
--- a/target/linux/generic/backport-5.10/610-v5.13-33-net-ethernet-mtk_eth_soc-add-flow-offloading-support.patch
+++ b/target/linux/generic/backport-5.10/610-v5.13-33-net-ethernet-mtk_eth_soc-add-flow-offloading-support.patch
@@ -21,7 +21,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  obj-$(CONFIG_NET_MEDIATEK_STAR_EMAC) += mtk_star_emac.o
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2862,6 +2862,7 @@ static const struct net_device_ops mtk_n
+@@ -2861,6 +2861,7 @@ static const struct net_device_ops mtk_n
  #ifdef CONFIG_NET_POLL_CONTROLLER
  	.ndo_poll_controller	= mtk_poll_controller,
  #endif
@@ -29,7 +29,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  };
  
  static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
-@@ -3120,6 +3121,10 @@ static int mtk_probe(struct platform_dev
+@@ -3119,6 +3120,10 @@ static int mtk_probe(struct platform_dev
  				   eth->base + MTK_ETH_PPE_BASE, 2);
  		if (err)
  			goto err_free_dev;
diff --git a/target/linux/generic/backport-5.10/610-v5.13-45-net-ethernet-mtk_eth_soc-implement-dynamic-interrupt.patch b/target/linux/generic/backport-5.10/610-v5.13-45-net-ethernet-mtk_eth_soc-implement-dynamic-interrupt.patch
index 3049528cc8..71803e7f4e 100644
--- a/target/linux/generic/backport-5.10/610-v5.13-45-net-ethernet-mtk_eth_soc-implement-dynamic-interrupt.patch
+++ b/target/linux/generic/backport-5.10/610-v5.13-45-net-ethernet-mtk_eth_soc-implement-dynamic-interrupt.patch
@@ -103,7 +103,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	if (likely(napi_schedule_prep(&eth->tx_napi))) {
  		__napi_schedule(&eth->tx_napi);
  		mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
-@@ -2374,6 +2391,9 @@ static int mtk_stop(struct net_device *d
+@@ -2373,6 +2390,9 @@ static int mtk_stop(struct net_device *d
  	napi_disable(&eth->tx_napi);
  	napi_disable(&eth->rx_napi);
  
@@ -113,7 +113,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
  		mtk_stop_dma(eth, MTK_QDMA_GLO_CFG);
  	mtk_stop_dma(eth, MTK_PDMA_GLO_CFG);
-@@ -2426,6 +2446,64 @@ err_disable_clks:
+@@ -2425,6 +2445,64 @@ err_disable_clks:
  	return ret;
  }
  
@@ -178,7 +178,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  static int mtk_hw_init(struct mtk_eth *eth)
  {
  	int i, val, ret;
-@@ -2447,9 +2525,6 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -2446,9 +2524,6 @@ static int mtk_hw_init(struct mtk_eth *e
  			goto err_disable_pm;
  		}
  
@@ -188,7 +188,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		/* disable delay and normal interrupt */
  		mtk_tx_irq_disable(eth, ~0);
  		mtk_rx_irq_disable(eth, ~0);
-@@ -2488,11 +2563,11 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -2487,11 +2562,11 @@ static int mtk_hw_init(struct mtk_eth *e
  	/* Enable RX VLan Offloading */
  	mtk_w32(eth, 1, MTK_CDMP_EG_CTRL);
  
@@ -203,7 +203,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	mtk_tx_irq_disable(eth, ~0);
  	mtk_rx_irq_disable(eth, ~0);
  
-@@ -2997,6 +3072,13 @@ static int mtk_probe(struct platform_dev
+@@ -2996,6 +3071,13 @@ static int mtk_probe(struct platform_dev
  	spin_lock_init(&eth->page_lock);
  	spin_lock_init(&eth->tx_irq_lock);
  	spin_lock_init(&eth->rx_irq_lock);
diff --git a/target/linux/generic/backport-5.10/611-v5.12-net-ethernet-mediatek-support-setting-MTU.patch b/target/linux/generic/backport-5.10/611-v5.12-net-ethernet-mediatek-support-setting-MTU.patch
index 19c7ed12cf..7e373e2d11 100644
--- a/target/linux/generic/backport-5.10/611-v5.12-net-ethernet-mediatek-support-setting-MTU.patch
+++ b/target/linux/generic/backport-5.10/611-v5.12-net-ethernet-mediatek-support-setting-MTU.patch
@@ -48,7 +48,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	return buf_size;
  }
-@@ -2634,6 +2634,35 @@ static void mtk_uninit(struct net_device
+@@ -2633,6 +2633,35 @@ static void mtk_uninit(struct net_device
  	mtk_rx_irq_disable(eth, ~0);
  }
  
@@ -84,7 +84,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  static int mtk_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
  {
  	struct mtk_mac *mac = netdev_priv(dev);
-@@ -2930,6 +2959,7 @@ static const struct net_device_ops mtk_n
+@@ -2929,6 +2958,7 @@ static const struct net_device_ops mtk_n
  	.ndo_set_mac_address	= mtk_set_mac_address,
  	.ndo_validate_addr	= eth_validate_addr,
  	.ndo_do_ioctl		= mtk_do_ioctl,
@@ -92,7 +92,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	.ndo_tx_timeout		= mtk_tx_timeout,
  	.ndo_get_stats64        = mtk_get_stats64,
  	.ndo_fix_features	= mtk_fix_features,
-@@ -3032,7 +3062,10 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3031,7 +3061,10 @@ static int mtk_add_mac(struct mtk_eth *e
  	eth->netdev[id]->irq = eth->irq[0];
  	eth->netdev[id]->dev.of_node = np;
  
diff --git a/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch b/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
index ed951dcab4..c94224cbdb 100644
--- a/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
+++ b/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
@@ -895,7 +895,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2608,14 +2608,11 @@ static int __init mtk_init(struct net_de
+@@ -2607,14 +2607,11 @@ static int __init mtk_init(struct net_de
  {
  	struct mtk_mac *mac = netdev_priv(dev);
  	struct mtk_eth *eth = mac->hw;
@@ -1706,7 +1706,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		eth_random_addr(dev->macaddr);
 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
 +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
-@@ -990,11 +990,7 @@ static void rt2x00lib_rate(struct ieee80
+@@ -991,11 +991,7 @@ static void rt2x00lib_rate(struct ieee80
  
  void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8 *eeprom_mac_addr)
  {
diff --git a/target/linux/generic/backport-5.10/822-v5.13-advertise-lack-of-built-in-msi-handling.patch b/target/linux/generic/backport-5.10/822-v5.13-advertise-lack-of-built-in-msi-handling.patch
index c11aedd814..c8445e3bd9 100644
--- a/target/linux/generic/backport-5.10/822-v5.13-advertise-lack-of-built-in-msi-handling.patch
+++ b/target/linux/generic/backport-5.10/822-v5.13-advertise-lack-of-built-in-msi-handling.patch
@@ -41,7 +41,7 @@ Acked-by: Bjorn Helgaas <bhelgaas at google.com>
  	unsigned int device_id;
  	struct pci_ops *ops;
  	int (*startup)(struct mtk_pcie_port *port);
-@@ -1087,6 +1089,7 @@ static int mtk_pcie_probe(struct platfor
+@@ -1093,6 +1095,7 @@ static int mtk_pcie_probe(struct platfor
  
  	host->ops = pcie->soc->ops;
  	host->sysdata = pcie;
@@ -49,7 +49,7 @@ Acked-by: Bjorn Helgaas <bhelgaas at google.com>
  
  	err = pci_host_probe(host);
  	if (err)
-@@ -1176,6 +1179,7 @@ static const struct dev_pm_ops mtk_pcie_
+@@ -1182,6 +1185,7 @@ static const struct dev_pm_ops mtk_pcie_
  };
  
  static const struct mtk_pcie_soc mtk_pcie_soc_v1 = {
diff --git a/target/linux/generic/backport-5.10/845-v6.0-0002-leds-bcm63138-add-support-for-BCM63138-controller.patch b/target/linux/generic/backport-5.10/845-v6.0-0002-leds-bcm63138-add-support-for-BCM63138-controller.patch
index 8ebe8f180b..fc16dc03d8 100644
--- a/target/linux/generic/backport-5.10/845-v6.0-0002-leds-bcm63138-add-support-for-BCM63138-controller.patch
+++ b/target/linux/generic/backport-5.10/845-v6.0-0002-leds-bcm63138-add-support-for-BCM63138-controller.patch
@@ -351,7 +351,7 @@ Signed-off-by: Pavel Machek <pavel at ucw.cz>
 +MODULE_DEVICE_TABLE(of, bcm63138_leds_of_match_table);
 --- a/drivers/leds/Kconfig
 +++ b/drivers/leds/Kconfig
-@@ -929,6 +929,8 @@ config LEDS_ACER_A500
+@@ -930,6 +930,8 @@ config LEDS_ACER_A500
  	  This option enables support for the Power Button LED of
  	  Acer Iconia Tab A500.
  
diff --git a/target/linux/generic/hack-5.10/800-ubnt-ledbar-driver.patch b/target/linux/generic/hack-5.10/800-ubnt-ledbar-driver.patch
index 2b4baab456..1c72e6bfb0 100644
--- a/target/linux/generic/hack-5.10/800-ubnt-ledbar-driver.patch
+++ b/target/linux/generic/hack-5.10/800-ubnt-ledbar-driver.patch
@@ -1,6 +1,6 @@
 --- a/drivers/leds/Kconfig
 +++ b/drivers/leds/Kconfig
-@@ -931,6 +931,16 @@ config LEDS_ACER_A500
+@@ -932,6 +932,16 @@ config LEDS_ACER_A500
  
  source "drivers/leds/blink/Kconfig"
  
diff --git a/target/linux/generic/pending-5.10/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-5.10/203-kallsyms_uncompressed.patch
index 190ce0720d..4233d90eaa 100644
--- a/target/linux/generic/pending-5.10/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/pending-5.10/203-kallsyms_uncompressed.patch
@@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		}
 --- a/scripts/link-vmlinux.sh
 +++ b/scripts/link-vmlinux.sh
-@@ -192,6 +192,10 @@ kallsyms()
+@@ -197,6 +197,10 @@ kallsyms()
  		kallsymopt="${kallsymopt} --base-relative"
  	fi
  
diff --git a/target/linux/generic/pending-5.10/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-5.10/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index 59f202c4c5..900884aea6 100644
--- a/target/linux/generic/pending-5.10/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-5.10/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -275,8 +275,8 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
  			 const struct tnl_ptk_info *tpi,
  			 struct metadata_dst *tun_dst,
-@@ -873,6 +999,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
- 	skb_reset_network_header(skb);
+@@ -887,6 +1013,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
+ 
  	memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
  
 +	if (tpi->proto == htons(ETH_P_IP) && tunnel->parms.fmrs &&
@@ -303,7 +303,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
  
  	err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
-@@ -1024,6 +1171,7 @@ static void init_tel_txopt(struct ipv6_t
+@@ -1034,6 +1181,7 @@ static void init_tel_txopt(struct ipv6_t
  	opt->ops.opt_nflen = 8;
  }
  
@@ -311,7 +311,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  /**
   * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
   *   @t: the outgoing tunnel device
-@@ -1304,6 +1452,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1314,6 +1462,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
  		u8 protocol)
  {
  	struct ip6_tnl *t = netdev_priv(dev);
@@ -319,7 +319,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	struct ipv6hdr *ipv6h;
  	const struct iphdr  *iph;
  	int encap_limit = -1;
-@@ -1403,6 +1552,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1413,6 +1562,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
  	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
  	dsfield = INET_ECN_encapsulate(dsfield, orig_dsfield);
  
@@ -338,7 +338,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
  		return -1;
  
-@@ -1556,6 +1717,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1566,6 +1727,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
  	t->parms.fwmark = p->fwmark;
@@ -353,7 +353,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1594,6 +1763,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1604,6 +1773,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
  	p->flowinfo = u->flowinfo;
  	p->link = u->link;
  	p->proto = u->proto;
@@ -361,7 +361,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1979,6 +2149,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1989,6 +2159,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -377,7 +377,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -2016,6 +2195,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -2026,6 +2205,46 @@ static void ip6_tnl_netlink_parms(struct
  
  	if (data[IFLA_IPTUN_FWMARK])
  		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
@@ -424,7 +424,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  }
  
  static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2131,6 +2350,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2141,6 +2360,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -437,7 +437,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -2160,6 +2385,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2170,6 +2395,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(0) +
  		/* IFLA_IPTUN_FWMARK */
  		nla_total_size(4) +
@@ -462,7 +462,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  		0;
  }
  
-@@ -2167,6 +2410,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2177,6 +2420,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
  	struct ip6_tnl *tunnel = netdev_priv(dev);
  	struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -472,7 +472,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2176,9 +2422,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2186,9 +2432,27 @@ static int ip6_tnl_fill_info(struct sk_b
  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
  	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
@@ -501,7 +501,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2218,6 +2482,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2228,6 +2492,7 @@ static const struct nla_policy ip6_tnl_p
  	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 },
  	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG },
  	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 },
diff --git a/target/linux/generic/pending-5.10/701-00-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch b/target/linux/generic/pending-5.10/701-00-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch
index c407031c41..650af6208c 100644
--- a/target/linux/generic/pending-5.10/701-00-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch
+++ b/target/linux/generic/pending-5.10/701-00-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch
@@ -205,7 +205,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  				  MTK_DMA_SIZE * sizeof(struct mtk_tx_dma),
  				  eth->scratch_ring,
  				  eth->phy_scratch_ring);
-@@ -2510,6 +2511,8 @@ static void mtk_dim_tx(struct work_struc
+@@ -2509,6 +2510,8 @@ static void mtk_dim_tx(struct work_struc
  
  static int mtk_hw_init(struct mtk_eth *eth)
  {
@@ -214,7 +214,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	int i, val, ret;
  
  	if (test_and_set_bit(MTK_HW_INIT, &eth->state))
-@@ -2522,6 +2525,10 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -2521,6 +2524,10 @@ static int mtk_hw_init(struct mtk_eth *e
  	if (ret)
  		goto err_disable_pm;
  
@@ -225,7 +225,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) {
  		ret = device_reset(eth->dev);
  		if (ret) {
-@@ -3071,6 +3078,35 @@ free_netdev:
+@@ -3070,6 +3077,35 @@ free_netdev:
  	return err;
  }
  
@@ -261,7 +261,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int mtk_probe(struct platform_device *pdev)
  {
  	struct device_node *mac_np;
-@@ -3084,6 +3120,7 @@ static int mtk_probe(struct platform_dev
+@@ -3083,6 +3119,7 @@ static int mtk_probe(struct platform_dev
  	eth->soc = of_device_get_match_data(&pdev->dev);
  
  	eth->dev = &pdev->dev;
@@ -269,7 +269,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	eth->base = devm_platform_ioremap_resource(pdev, 0);
  	if (IS_ERR(eth->base))
  		return PTR_ERR(eth->base);
-@@ -3132,6 +3169,16 @@ static int mtk_probe(struct platform_dev
+@@ -3131,6 +3168,16 @@ static int mtk_probe(struct platform_dev
  		}
  	}
  
diff --git a/target/linux/generic/pending-5.10/701-02-net-ethernet-mtk_eth_soc-add-support-for-Wireless-Et.patch b/target/linux/generic/pending-5.10/701-02-net-ethernet-mtk_eth_soc-add-support-for-Wireless-Et.patch
index db7c2a7839..00ef4a8cdc 100644
--- a/target/linux/generic/pending-5.10/701-02-net-ethernet-mtk_eth_soc-add-support-for-Wireless-Et.patch
+++ b/target/linux/generic/pending-5.10/701-02-net-ethernet-mtk_eth_soc-add-support-for-Wireless-Et.patch
@@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  static int mtk_msg_level = -1;
  module_param_named(msg_level, mtk_msg_level, int, 0);
-@@ -3201,6 +3202,22 @@ static int mtk_probe(struct platform_dev
+@@ -3200,6 +3201,22 @@ static int mtk_probe(struct platform_dev
  		}
  	}
  
diff --git a/target/linux/generic/pending-5.10/701-07-net-ethernet-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch b/target/linux/generic/pending-5.10/701-07-net-ethernet-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch
index 3c73fb30c2..c2dfd8b571 100644
--- a/target/linux/generic/pending-5.10/701-07-net-ethernet-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch
+++ b/target/linux/generic/pending-5.10/701-07-net-ethernet-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2333,7 +2333,7 @@ static int mtk_open(struct net_device *d
+@@ -2332,7 +2332,7 @@ static int mtk_open(struct net_device *d
  			return err;
  		}
  
@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			gdm_config = MTK_GDMA_TO_PPE;
  
  		mtk_gdm_config(eth, gdm_config);
-@@ -2407,7 +2407,7 @@ static int mtk_stop(struct net_device *d
+@@ -2406,7 +2406,7 @@ static int mtk_stop(struct net_device *d
  	mtk_dma_free(eth);
  
  	if (eth->soc->offload_version)
@@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	return 0;
  }
-@@ -3293,10 +3293,11 @@ static int mtk_probe(struct platform_dev
+@@ -3292,10 +3292,11 @@ static int mtk_probe(struct platform_dev
  	}
  
  	if (eth->soc->offload_version) {
diff --git a/target/linux/generic/pending-5.10/701-08-net-ethernet-mtk_eth_soc-rework-hardware-flow-table-.patch b/target/linux/generic/pending-5.10/701-08-net-ethernet-mtk_eth_soc-rework-hardware-flow-table-.patch
index 0b3620ffb6..5a6eb0d44b 100644
--- a/target/linux/generic/pending-5.10/701-08-net-ethernet-mtk_eth_soc-rework-hardware-flow-table-.patch
+++ b/target/linux/generic/pending-5.10/701-08-net-ethernet-mtk_eth_soc-rework-hardware-flow-table-.patch
@@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
  		    (trxd.rxd2 & RX_DMA_VTAG))
  			__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
-@@ -3293,7 +3299,7 @@ static int mtk_probe(struct platform_dev
+@@ -3292,7 +3298,7 @@ static int mtk_probe(struct platform_dev
  	}
  
  	if (eth->soc->offload_version) {
diff --git a/target/linux/generic/pending-5.10/810-pci_disable_common_quirks.patch b/target/linux/generic/pending-5.10/810-pci_disable_common_quirks.patch
index 95b2600aa6..2a70e4cbac 100644
--- a/target/linux/generic/pending-5.10/810-pci_disable_common_quirks.patch
+++ b/target/linux/generic/pending-5.10/810-pci_disable_common_quirks.patch
@@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * The Mellanox Tavor device gives false positive parity errors.  Mark this
   * device with a broken_parity_status to allow PCI scanning code to "skip"
-@@ -3337,6 +3338,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -3340,6 +3341,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
  
@@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
   * To work around this, query the size it should be configured to by the
-@@ -3362,6 +3365,8 @@ static void quirk_intel_ntb(struct pci_d
+@@ -3365,6 +3368,8 @@ static void quirk_intel_ntb(struct pci_d
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
  
@@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * Some BIOS implementations leave the Intel GPU interrupts enabled, even
   * though no one is handling them (e.g., if the i915 driver is never
-@@ -3400,6 +3405,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3403,6 +3408,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
  
diff --git a/target/linux/generic/pending-5.10/851-0005-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch b/target/linux/generic/pending-5.10/851-0005-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
index b8a3e880ce..9a3ca24da3 100644
--- a/target/linux/generic/pending-5.10/851-0005-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
+++ b/target/linux/generic/pending-5.10/851-0005-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
@@ -135,7 +135,7 @@ Acked-by: Miquel Raynal <miquel.raynal at bootlin.com>
  	.init_quirk = xhci_mvebu_a3700_init_quirk,
  };
  
-@@ -341,14 +330,7 @@ static int xhci_plat_probe(struct platfo
+@@ -344,14 +333,7 @@ static int xhci_plat_probe(struct platfo
  
  	hcd->tpl_support = of_usb_host_tpl_support(sysdev->of_node);
  	xhci->shared_hcd->tpl_support = hcd->tpl_support;
diff --git a/target/linux/mediatek/patches-5.10/510-net-mediatek-add-flow-offload-for-mt7623.patch b/target/linux/mediatek/patches-5.10/510-net-mediatek-add-flow-offload-for-mt7623.patch
index 9039f10b3f..ccec218f16 100644
--- a/target/linux/mediatek/patches-5.10/510-net-mediatek-add-flow-offload-for-mt7623.patch
+++ b/target/linux/mediatek/patches-5.10/510-net-mediatek-add-flow-offload-for-mt7623.patch
@@ -14,7 +14,7 @@ Signed-off-by: Frank Wunderlich <frank-w at public-files.de>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3401,6 +3401,7 @@ static const struct mtk_soc_data mt7623_
+@@ -3400,6 +3400,7 @@ static const struct mtk_soc_data mt7623_
  	.hw_features = MTK_HW_FEATURES,
  	.required_clks = MT7623_CLKS_BITMAP,
  	.required_pctl = true,
diff --git a/target/linux/mediatek/patches-5.10/601-PCI-mediatek-Use-regmap-to-get-shared-pcie-cfg-base.patch b/target/linux/mediatek/patches-5.10/601-PCI-mediatek-Use-regmap-to-get-shared-pcie-cfg-base.patch
index fea9486d30..ed851f001a 100644
--- a/target/linux/mediatek/patches-5.10/601-PCI-mediatek-Use-regmap-to-get-shared-pcie-cfg-base.patch
+++ b/target/linux/mediatek/patches-5.10/601-PCI-mediatek-Use-regmap-to-get-shared-pcie-cfg-base.patch
@@ -166,7 +166,7 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu at mediatek.com>
  	struct clk *free_ck;
  
  	struct list_head ports;
-@@ -650,7 +654,7 @@ static int mtk_pcie_setup_irq(struct mtk
+@@ -656,7 +660,7 @@ static int mtk_pcie_setup_irq(struct mtk
  		return err;
  	}
  
@@ -175,7 +175,7 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu at mediatek.com>
  	if (port->irq < 0)
  		return port->irq;
  
-@@ -676,12 +680,11 @@ static int mtk_pcie_startup_port_v2(stru
+@@ -682,12 +686,11 @@ static int mtk_pcie_startup_port_v2(stru
  	if (!mem)
  		return -EINVAL;
  
@@ -193,7 +193,7 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu at mediatek.com>
  	}
  
  	/* Assert all reset signals */
-@@ -985,6 +988,7 @@ static int mtk_pcie_subsys_powerup(struc
+@@ -991,6 +994,7 @@ static int mtk_pcie_subsys_powerup(struc
  	struct device *dev = pcie->dev;
  	struct platform_device *pdev = to_platform_device(dev);
  	struct resource *regs;
@@ -201,7 +201,7 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu at mediatek.com>
  	int err;
  
  	/* get shared registers, which are optional */
-@@ -997,6 +1001,13 @@ static int mtk_pcie_subsys_powerup(struc
+@@ -1003,6 +1007,13 @@ static int mtk_pcie_subsys_powerup(struc
  		}
  	}
  
diff --git a/target/linux/mediatek/patches-5.10/710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch b/target/linux/mediatek/patches-5.10/710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch
index c09c80c046..4b7858756a 100644
--- a/target/linux/mediatek/patches-5.10/710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch
+++ b/target/linux/mediatek/patches-5.10/710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch
@@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  struct mtk_pcie_port;
  
  /**
-@@ -1042,6 +1048,27 @@ static int mtk_pcie_setup(struct mtk_pci
+@@ -1048,6 +1054,27 @@ static int mtk_pcie_setup(struct mtk_pci
  	struct mtk_pcie_port *port, *tmp;
  	int err;
  
diff --git a/target/linux/mvebu/patches-5.10/102-leds-turris-omnia-support-HW-controlled-mode-via-pri.patch b/target/linux/mvebu/patches-5.10/102-leds-turris-omnia-support-HW-controlled-mode-via-pri.patch
index 578124f94d..cb88a54878 100644
--- a/target/linux/mvebu/patches-5.10/102-leds-turris-omnia-support-HW-controlled-mode-via-pri.patch
+++ b/target/linux/mvebu/patches-5.10/102-leds-turris-omnia-support-HW-controlled-mode-via-pri.patch
@@ -44,7 +44,7 @@ Signed-off-by: Marek Beh?n <kabel at kernel.org>
 
 --- a/drivers/leds/Kconfig
 +++ b/drivers/leds/Kconfig
-@@ -182,6 +182,7 @@ config LEDS_TURRIS_OMNIA
+@@ -183,6 +183,7 @@ config LEDS_TURRIS_OMNIA
  	depends on I2C
  	depends on MACH_ARMADA_38X || COMPILE_TEST
  	depends on OF
diff --git a/target/linux/mvebu/patches-5.10/902-drivers-mfd-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch b/target/linux/mvebu/patches-5.10/902-drivers-mfd-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch
index 01c2ecce0d..d577890810 100644
--- a/target/linux/mvebu/patches-5.10/902-drivers-mfd-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch
+++ b/target/linux/mvebu/patches-5.10/902-drivers-mfd-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch
@@ -26,7 +26,7 @@ Cc: Robert Marko <robert.marko at sartura.hr>
 
 --- a/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
-@@ -2155,6 +2155,15 @@ config SGI_MFD_IOC3
+@@ -2156,6 +2156,15 @@ config SGI_MFD_IOC3
  	  If you have an SGI Origin, Octane, or a PCI IOC3 card,
  	  then say Y. Otherwise say N.
  
diff --git a/target/linux/mvebu/patches-5.10/904-drivers-leds-Add-the-IEI-WT61P803-PUZZLE-LED-driver.patch b/target/linux/mvebu/patches-5.10/904-drivers-leds-Add-the-IEI-WT61P803-PUZZLE-LED-driver.patch
index 3ac2427b80..84cef8da11 100644
--- a/target/linux/mvebu/patches-5.10/904-drivers-leds-Add-the-IEI-WT61P803-PUZZLE-LED-driver.patch
+++ b/target/linux/mvebu/patches-5.10/904-drivers-leds-Add-the-IEI-WT61P803-PUZZLE-LED-driver.patch
@@ -30,7 +30,7 @@ Cc: Robert Marko <robert.marko at sartura.hr>
 
 --- a/drivers/leds/Kconfig
 +++ b/drivers/leds/Kconfig
-@@ -334,6 +334,14 @@ config LEDS_IPAQ_MICRO
+@@ -335,6 +335,14 @@ config LEDS_IPAQ_MICRO
  	  Choose this option if you want to use the notification LED on
  	  Compaq/HP iPAQ h3100 and h3600.
  
diff --git a/target/linux/octeontx/patches-5.10/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch b/target/linux/octeontx/patches-5.10/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
index 46076649b4..05eaa9aedf 100644
--- a/target/linux/octeontx/patches-5.10/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
+++ b/target/linux/octeontx/patches-5.10/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
@@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey at gateworks.com>
  #include <linux/platform_data/x86/apple.h>
  #include <linux/pm_runtime.h>
  #include <linux/suspend.h>
-@@ -5838,3 +5839,34 @@ static void nvidia_ion_ahci_fixup(struct
+@@ -5858,3 +5859,34 @@ static void nvidia_ion_ahci_fixup(struct
  	pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
  }
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
diff --git a/target/linux/ramips/patches-5.10/700-net-ethernet-mediatek-support-net-labels.patch b/target/linux/ramips/patches-5.10/700-net-ethernet-mediatek-support-net-labels.patch
index 6c97651d98..7148ec3e81 100644
--- a/target/linux/ramips/patches-5.10/700-net-ethernet-mediatek-support-net-labels.patch
+++ b/target/linux/ramips/patches-5.10/700-net-ethernet-mediatek-support-net-labels.patch
@@ -14,7 +14,7 @@ Signed-off-by: Ren? van Dorst <opensource at vdorst.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2983,6 +2983,7 @@ static const struct net_device_ops mtk_n
+@@ -2982,6 +2982,7 @@ static const struct net_device_ops mtk_n
  
  static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
  {
@@ -22,7 +22,7 @@ Signed-off-by: Ren? van Dorst <opensource at vdorst.com>
  	const __be32 *_id = of_get_property(np, "reg", NULL);
  	phy_interface_t phy_mode;
  	struct phylink *phylink;
-@@ -3078,6 +3079,9 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -3077,6 +3078,9 @@ static int mtk_add_mac(struct mtk_eth *e
  	else
  		eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH_2K - MTK_RX_ETH_HLEN;
  
diff --git a/target/linux/ramips/patches-5.10/830-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch b/target/linux/ramips/patches-5.10/830-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch
index 746a3ac70a..7dad27e7e2 100644
--- a/target/linux/ramips/patches-5.10/830-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch
+++ b/target/linux/ramips/patches-5.10/830-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch
@@ -25,7 +25,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
 
 --- a/drivers/mmc/host/Kconfig
 +++ b/drivers/mmc/host/Kconfig
-@@ -1103,3 +1103,5 @@ config MMC_OWL
+@@ -1105,3 +1105,5 @@ config MMC_OWL
  
  config MMC_SDHCI_EXTERNAL_DMA
  	bool



From lede-commits at lists.infradead.org  Thu Mar  7 12:08:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 15:08:22 -0500
Subject: [openwrt/openwrt]  kernel: 6.1: add missing config symbol for tracing
In-Reply-To: <170984210229.816466.2355780239767152238@git-01.infra.openwrt.org>
References: <170984210229.816466.2355780239767152238@git-01.infra.openwrt.org>
Message-ID: <mailman.14379.1709842107.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/4adba6415678dcdba2dbfa287466edaee30dc057

commit 4adba6415678dcdba2dbfa287466edaee30dc057
Author: Tony Ambardar <itugrok at yahoo.com>
AuthorDate: Thu Mar 7 01:21:40 2024 -0800

    kernel: 6.1: add missing config symbol for tracing
    
    Add missing option CONFIG_FPROBE to generic config, found building x86_64
    arch with tracing enabled.
    
    Signed-off-by: Tony Ambardar <itugrok at yahoo.com>
---
 target/linux/generic/config-6.1 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/generic/config-6.1 b/target/linux/generic/config-6.1
index 8ad4700f73..34a6503ce0 100644
--- a/target/linux/generic/config-6.1
+++ b/target/linux/generic/config-6.1
@@ -2182,6 +2182,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_FORCE_NR_CPUS is not set
 CONFIG_FORTIFY_SOURCE=y
 # CONFIG_FPGA is not set
+# CONFIG_FPROBE is not set
 # CONFIG_FRAMEBUFFER_CONSOLE is not set
 # CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set
 # CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set



From lede-commits at lists.infradead.org  Thu Mar  7 13:18:00 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 07 Mar 2024 16:18:00 -0500
Subject: [openwrt/openwrt]  mediatek: filogic: add support for Cudy RE3000 v1
In-Reply-To: <170984628098.866137.4712406032365623378@git-01.infra.openwrt.org>
References: <170984628098.866137.4712406032365623378@git-01.infra.openwrt.org>
Message-ID: <mailman.14394.1709846289.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/6f70e09a00740e6ffc941247a1ccf3483696cebd

commit 6f70e09a00740e6ffc941247a1ccf3483696cebd
Author: Robert Senderek <robert.senderek at 10g.pl>
AuthorDate: Fri Feb 16 14:04:40 2024 +0100

    mediatek: filogic: add support for Cudy RE3000 v1
    
    MT7981B /256MB /16MB SPI (XM25QH128C)
    AX 2.4Ghz
    AX 5Ghz 160Mhz wide
    1Gbit LAN
    
    OEM:
    root at RE3000:~# ifconfig |grep HWaddr
    br-lan    Link encap:Ethernet  HWaddr 80:XX:XX:08:XX:X0 (label)
    br-wan    Link encap:Ethernet  HWaddr 80:XX:XX:08:XX:X0
    eth0      Link encap:Ethernet  HWaddr 80:XX:XX:08:XX:X0
    ra0       Link encap:Ethernet  HWaddr 80:XX:XX:08:XX:X0
    ra2       Link encap:Ethernet  HWaddr 82:XX:XX:28:XX:X0
    rax0      Link encap:Ethernet  HWaddr 82:XX:XX:38:XX:X0
    rax2      Link encap:Ethernet  HWaddr 82:XX:XX:58:XX:X0
    
    OpenWrt
    root at OpenWrt:/# ifconfig |grep HW
    br-lan    Link encap:Ethernet  HWaddr 80:XX:XX:08:XX:X0
    eth0      Link encap:Ethernet  HWaddr 80:XX:XX:08:XX:X0
    phy0-ap0  Link encap:Ethernet  HWaddr 80:XX:XX:08:XX:X0
    phy1-ap0  Link encap:Ethernet  HWaddr 82:XX:XX:08:XX:X1
    
     tftp Installation via u-boot:
    
    Connect TTL3.3V converter
    connector is under the radiator Set speed 115200 8 N 1
    Interrupt boot process by holding down-arrow key during boot then
    >> 6. Load image
    >> 0 - TFTP client (Default)
    enter IP adresses and initramfs-kernel.bin
    
    write to flash via sysupgrade or gui
    
    Signed-off-by: Robert Senderek <robert.senderek at 10g.pl>
    (cherry picked from commit e8f75973172749874afa13e4f746acd8cb515de2)
---
 .../base-files/lib/preinit/05_set_preinit_iface    |   1 +
 .../linux/mediatek/dts/mt7981b-cudy-re3000-v1.dts  | 221 +++++++++++++++++++++
 .../filogic/base-files/etc/board.d/01_leds         |   3 +
 .../filogic/base-files/etc/board.d/02_network      |   1 +
 .../etc/hotplug.d/ieee80211/11_fix_wifi_mac        |   5 +
 .../filogic/base-files/lib/upgrade/platform.sh     |   3 +-
 target/linux/mediatek/image/filogic.mk             |  19 ++
 7 files changed, 252 insertions(+), 1 deletion(-)

diff --git a/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface b/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface
index fd39b3f65f..d45f20fe62 100644
--- a/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface
+++ b/target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface
@@ -4,6 +4,7 @@ set_preinit_iface() {
 		ip link set eth1 up
 		ifname=eth1
 		;;
+	cudy,re3000-v1|\
 	ubnt,unifi-6-lr|\
 	zyxel,nwa50ax-pro)
 		ip link set eth0 up
diff --git a/target/linux/mediatek/dts/mt7981b-cudy-re3000-v1.dts b/target/linux/mediatek/dts/mt7981b-cudy-re3000-v1.dts
new file mode 100644
index 0000000000..4025e5aaa3
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-cudy-re3000-v1.dts
@@ -0,0 +1,221 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "mt7981.dtsi"
+
+/ {
+	model = "Cudy RE3000 v1";
+	compatible = "cudy,re3000-v1", "mediatek,mt7981";
+
+	aliases {
+		serial0 = &uart0;
+		label-mac-device = &gmac1;
+		led-boot = &led_status;
+		led-failsafe = &led_status;
+		led-running = &led_status;
+		led-upgrade = &led_status;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&pio 0 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_status: led at 0 {
+			function = LED_FUNCTION_STATUS;
+			color = <LED_COLOR_ID_WHITE>;
+			gpios = <&pio 10 GPIO_ACTIVE_LOW>;
+		};
+
+		led at 1 {
+			label = "red:wifi5";
+			gpios = <&pio 7 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+
+		led at 2 {
+			label = "white:wifi2";
+			gpios = <&pio 6 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		led at 3 {
+			function = LED_FUNCTION_LAN;
+			color = <LED_COLOR_ID_GREEN>;
+			gpios = <&pio 9 GPIO_ACTIVE_LOW>;
+		};
+
+		led at 4 {
+			function = LED_FUNCTION_WPS;
+			color = <LED_COLOR_ID_WHITE>;
+			gpios = <&pio 11 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio_pins>;
+	status = "okay";
+
+	gmac1: mac at 1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&int_gbe_phy>;
+		nvmem-cell-names = "mac-address";
+		nvmem-cells = <&macaddr_bdinfo_de00 0>;
+	};
+};
+
+&mdio_bus {
+	switch: switch at 1f {
+		compatible = "mediatek,mt7531";
+		reg = <31>;
+		reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
+	};
+};
+
+&spi0 {
+	status = "disabled";
+};
+
+&spi2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi2_flash_pins>;
+	status = "okay";
+
+	flash at 0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+
+		spi-max-frequency = <25000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 00000 {
+				label = "BL2";
+				reg = <0x00000 0x40000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "u-boot-env";
+				reg = <0x40000 0x10000>;
+				read-only;
+			};
+
+			factory: partition at 50000 {
+				label = "Factory";
+				reg = <0x50000 0x10000>;
+				read-only;
+				
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0x1000>;
+					};
+				};
+			};
+
+			bdinfo: partition at 60000 {
+				label = "bdinfo";
+				reg = <0x60000 0x10000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_bdinfo_de00: macaddr at de00 {
+						compatible = "mac-base";
+						reg = <0xde00 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
+			};
+
+			partition at 70000 {
+				label = "FIP";
+				reg = <0x70000 0x80000>;
+				read-only;
+			};
+
+			partition at f0000 {
+				compatible = "denx,fit";
+				label = "firmware";
+				reg = <0xf0000 0xf10000>;
+			};
+		};
+	};
+};
+
+&pio {
+	spi2_flash_pins: spi2-pins {
+		mux {
+			function = "spi";
+			groups = "spi2", "spi2_wp_hold";
+		};
+
+		conf-pu {
+			pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
+			drive-strength = <8>;
+			bias-pull-up = <103>;
+		};
+
+		conf-pd {
+			pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
+			drive-strength = <8>;
+			bias-pull-down = <103>;
+		};
+	};
+};
+
+&wifi {
+	status = "okay";
+	nvmem-cells = <&eeprom_factory_0>;
+	nvmem-cell-names = "eeprom";
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
index 75c8fcda9b..96793e39cd 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
@@ -12,6 +12,9 @@ confiabits,mt7981)
 	ucidef_set_led_netdev "lan3" "lan3" "blue:lan-3" "lan3" "link tx rx"
 	ucidef_set_led_netdev "wan" "wan" "blue:wan" "wan" "link tx rx"
 	;;
+cudy,re3000-v1)
+	ucidef_set_led_netdev "lan" "lan" "green:lan" "eth0" "link tx rx"
+	;;
 cudy,wr3000-v1)
 	ucidef_set_led_netdev "wan" "wan" "blue:wan" "wan"
 	;;
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index a48fbbc79c..566a5ca82f 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -58,6 +58,7 @@ mediatek_setup_interfaces()
 	mercusys,mr90x-v1)
 		ucidef_set_interfaces_lan_wan "lan0 lan1 lan2" eth1
 		;;
+	cudy,re3000-v1|\
 	netgear,wax220|\
 	ubnt,unifi-6-plus|\
 	zyxel,nwa50ax-pro)
diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index e6378dd498..3441b41861 100644
--- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -57,6 +57,11 @@ case "$board" in
 		esac
 		[ "$PHYNBR" = "1" ] && echo "$addr" > /sys${DEVPATH}/macaddress
 		;;
+	cudy,re3000-v1)
+		addr=$(mtd_get_mac_binary bdinfo 0xde00)
+		[ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress
+		[ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_add $addr 1) > /sys${DEVPATH}/macaddress
+		;;
 	cudy,wr3000-v1)
 		addr=$(mtd_get_mac_binary bdinfo 0xde00)
 		# Originally, phy0 is phy1 mac with LA bit set. However, this would conflict
diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
index 9b3ebe92f1..25cbf98f33 100755
--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
@@ -106,7 +106,8 @@ platform_do_upgrade() {
 			;;
 		esac
 		;;
-	cudy,wr3000-v1)
+	cudy,wr3000-v1|\
+	cudy,re3000-v1)
 		default_do_upgrade "$1"
 		;;
 	glinet,gl-mt6000)
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index 7daac6a1fa..5598a70aca 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -298,6 +298,25 @@ define Device/confiabits_mt7981
 endef
 TARGET_DEVICES += confiabits_mt7981
 
+define Device/cudy_re3000-v1
+  DEVICE_VENDOR := Cudy
+  DEVICE_MODEL := RE3000
+  DEVICE_VARIANT := v1
+  DEVICE_DTS := mt7981b-cudy-re3000-v1
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_DTS_LOADADDR := 0x47000000
+  IMAGES := sysupgrade.bin
+  IMAGE_SIZE := 15424k
+  SUPPORTED_DEVICES += R36
+  KERNEL := kernel-bin | lzma | \
+	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  KERNEL_INITRAMFS := kernel-bin | lzma | \
+	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
+  IMAGE/sysupgrade.bin := append-kernel | pad-to 128k | append-rootfs | pad-rootfs | check-size | append-metadata
+  DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware
+endef
+TARGET_DEVICES += cudy_re3000-v1
+
 define Device/cudy_wr3000-v1
   DEVICE_VENDOR := Cudy
   DEVICE_MODEL := WR3000



From lede-commits at lists.infradead.org  Thu Mar  7 23:29:02 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 02:29:02 -0500
Subject: [openwrt/openwrt]  mediatek: convert LED color/function format for
 Xiaomi Redmi AX6000
In-Reply-To: <170988294284.2241087.10407926396018190931@git-01.infra.openwrt.org>
References: <170988294284.2241087.10407926396018190931@git-01.infra.openwrt.org>
Message-ID: <mailman.14515.1709882947.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1493e8f8cbe2d410227e77f761f5d0123a9117d4

commit 1493e8f8cbe2d410227e77f761f5d0123a9117d4
Author: Furong Xu <xfr at outlook.com>
AuthorDate: Mon Mar 4 20:54:44 2024 +0800

    mediatek: convert LED color/function format for Xiaomi Redmi AX6000
    
    Commit 2d63d42f5e2f ("mediatek: convert to new LED color/function
    format where possible") leaves Xiaomi Redmi AX6000 un-converted,
    the two LEDs become dead.
    Now, LEDs are alive again.
    
    Fixes: 2d63d42f5e2f ("mediatek: convert to new LED color/function
    format where possible")
    
    Signed-off-by: Furong Xu <xfr at outlook.com>
---
 target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
index 30571965bc..4d58fbd2cf 100644
--- a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
+++ b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
@@ -2,6 +2,7 @@
 
 /dts-v1/;
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/leds/common.h>
 
@@ -202,11 +203,18 @@
 
 		led_status_rgb: led at 0 {
 			reg = <0>;
+			function = LED_FUNCTION_STATUS;
+			color = <LED_COLOR_ID_RGB>;
 			color-index = <LED_COLOR_ID_RED LED_COLOR_ID_GREEN LED_COLOR_ID_BLUE>;
 		};
 
 		led_network_rgb: led at 1 {
 			reg = <1>;
+
+			/* Hardcoding here for backward compatibility */
+			function = "network";
+
+			color = <LED_COLOR_ID_RGB>;
 			color-index = <LED_COLOR_ID_RED LED_COLOR_ID_GREEN LED_COLOR_ID_BLUE>;
 		};
 	};



From lede-commits at lists.infradead.org  Thu Mar  7 23:29:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 02:29:03 -0500
Subject: [openwrt/openwrt]  mediatek: filogic: switch to fitblk for Xiaomi
 Redmi AX6000
In-Reply-To: <170988294284.2241087.10407926396018190931@git-01.infra.openwrt.org>
References: <170988294284.2241087.10407926396018190931@git-01.infra.openwrt.org>
Message-ID: <mailman.14516.1709882947.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/8d355b870a9d88a052a49005ba2c811bc6810197

commit 8d355b870a9d88a052a49005ba2c811bc6810197
Author: Furong Xu <xfr at outlook.com>
AuthorDate: Thu Mar 7 10:56:18 2024 +0800

    mediatek: filogic: switch to fitblk for Xiaomi Redmi AX6000
    
    Use the new fitblk driver.
    
    Run-tested: filogic/mt7986a-xiaomi-redmi-router-ax6000-ubootmod
    
    Signed-off-by: Furong Xu <xfr at outlook.com>
---
 .../dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts     | 13 ++++++++++++-
 .../mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi    |  2 +-
 .../mediatek/filogic/base-files/lib/upgrade/platform.sh     |  6 +++---
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts
index 152bbd20f8..a296c768f0 100644
--- a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts
+++ b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts
@@ -8,9 +8,20 @@
 	compatible = "xiaomi,redmi-router-ax6000-ubootmod", "mediatek,mt7986a";
 };
 
+&chosen {
+	rootdisk = <&ubi_rootdisk>;
+};
+
 &partitions {
 	partition at 580000 {
-		label = "ubi";
+		compatible = "linux,ubi";
 		reg = <0x580000 0x7a80000>;
+		label = "ubi";
+
+		volumes {
+			ubi_rootdisk: ubi-volume-fit {
+				volname = "fit";
+			};
+		};
 	};
 };
diff --git a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
index 4d58fbd2cf..723c4f3296 100644
--- a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
+++ b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
@@ -17,7 +17,7 @@
 		led-upgrade = &led_status_rgb;
 	};
 
-	chosen {
+	chosen: chosen {
 		stdout-path = "serial0:115200n8";
 	};
 
diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
index 526de08161..abb692fb41 100755
--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
@@ -82,7 +82,8 @@ platform_do_upgrade() {
 		;;
 	bananapi,bpi-r3|\
 	bananapi,bpi-r3-mini|\
-	bananapi,bpi-r4)
+	bananapi,bpi-r4|\
+	xiaomi,redmi-router-ax6000-ubootmod)
 		[ -e /dev/fit0 ] && fitblk /dev/fit0
 		[ -e /dev/fitrw ] && fitblk /dev/fitrw
 		bootdev="$(fitblk_get_bootdev)"
@@ -132,8 +133,7 @@ platform_do_upgrade() {
 	tplink,tl-xdr6086|\
 	tplink,tl-xdr6088|\
 	xiaomi,mi-router-ax3000t-ubootmod|\
-	xiaomi,mi-router-wr30u-ubootmod|\
-	xiaomi,redmi-router-ax6000-ubootmod)
+	xiaomi,mi-router-wr30u-ubootmod)
 		CI_KERNPART="fit"
 		nand_do_upgrade "$1"
 		;;



From lede-commits at lists.infradead.org  Thu Mar  7 23:38:53 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 02:38:53 -0500
Subject: [openwrt/openwrt]  ubox: make logread as an alternative
In-Reply-To: <170988353396.2256058.15508488175635469758@git-01.infra.openwrt.org>
References: <170988353396.2256058.15508488175635469758@git-01.infra.openwrt.org>
Message-ID: <mailman.14521.1709883544.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9da90971ab32c29eb014eea7094d0b4ebdf256e3

commit 9da90971ab32c29eb014eea7094d0b4ebdf256e3
Author: Sergey Ponomarev <stokito at gmail.com>
AuthorDate: Sat Mar 2 23:50:58 2024 +0200

    ubox: make logread as an alternative
    
    The logread can be replaced with syslog-ng.
    To support this it should be an alternative itself.
    
    Signed-off-by: Sergey Ponomarev <stokito at gmail.com>
---
 package/system/ubox/Makefile | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/package/system/ubox/Makefile b/package/system/ubox/Makefile
index e74ae00b3f..adfb68e55b 100644
--- a/package/system/ubox/Makefile
+++ b/package/system/ubox/Makefile
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ubox
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubox.git
@@ -47,6 +47,7 @@ define Package/logd
   DEPENDS:=+libubox +libubus +libblobmsg-json +libudebug
   TITLE:=OpenWrt system log implementation
   USERID:=logd=514:logd=514
+  ALTERNATIVES:=200:/sbin/logread:/usr/libexec/logread-ubox
 endef
 
 define Package/getrandom/install
@@ -63,9 +64,10 @@ define Package/ubox/install
 endef
 
 define Package/logd/install
-	$(INSTALL_DIR) $(1)/sbin $(1)/etc/init.d/ $(1)/usr/share/acl.d
+	$(INSTALL_DIR) $(1)/sbin $(1)/usr/libexec/ $(1)/etc/init.d/ $(1)/usr/share/acl.d
 
-	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{logd,logread} $(1)/sbin/
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/logd $(1)/sbin/
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/logread $(1)/usr/libexec/logread-ubox
 	$(INSTALL_BIN) ./files/log.init $(1)/etc/init.d/log
 	$(INSTALL_DATA) ./files/logd.json $(1)/usr/share/acl.d
 endef



From lede-commits at lists.infradead.org  Thu Mar  7 23:57:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 02:57:42 -0500
Subject: [openwrt/openwrt]  umdns: update to Git 7c675979 (2024-03-04)
In-Reply-To: <170988466200.2282382.12665629370707893464@git-01.infra.openwrt.org>
References: <170988466200.2282382.12665629370707893464@git-01.infra.openwrt.org>
Message-ID: <mailman.14528.1709884666.1280.lede-commits@lists.infradead.org>

ynezz pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/0844937947ec1c9124dbb332b5fb5d1e3616b1e2

commit 0844937947ec1c9124dbb332b5fb5d1e3616b1e2
Author: Petr ?tetiar <ynezz at true.cz>
AuthorDate: Mon Mar 4 16:12:05 2024 +0000

    umdns: update to Git 7c675979 (2024-03-04)
    
    Backport of single commit 9040335e102 ("interface: fix interface memory
    corruption").
    
    Fixes: openwrt/openwrt/issues/14120
    Signed-off-by: Petr ?tetiar <ynezz at true.cz>
---
 package/network/services/umdns/Makefile | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/package/network/services/umdns/Makefile b/package/network/services/umdns/Makefile
index 4510bdeb68..8684c80596 100644
--- a/package/network/services/umdns/Makefile
+++ b/package/network/services/umdns/Makefile
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=umdns
-PKG_RELEASE:=5
+PKG_RELEASE:=1
 
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/mdnsd.git
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2023-10-19
-PKG_SOURCE_VERSION:=d45c443aa1e6514aab58bbbf9311913e484d31a6
-PKG_MIRROR_HASH:=20d91d867f4f34a37c7b2a600327884375f9f16c1ea9bbb3199347d8b617d856
+PKG_SOURCE_DATE:=2024-03-04
+PKG_SOURCE_VERSION:=7c6759792502fa45ac1e38aa5644f8cf8f290894
+PKG_MIRROR_HASH:=7314ac31559b16d34d381f001037d9679c48778d2738948c8bd361aeab491c22
 
 PKG_MAINTAINER:=John Crispin <john at phrozen.org>
 PKG_LICENSE:=LGPL-2.1



From lede-commits at lists.infradead.org  Fri Mar  8 00:08:12 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 03:08:12 -0500
Subject: [openwrt/openwrt]  kernel: enable KASAN option for more architectures
In-Reply-To: <170988529269.2296234.11245504030687974761@git-01.infra.openwrt.org>
References: <170988529269.2296234.11245504030687974761@git-01.infra.openwrt.org>
Message-ID: <mailman.14531.1709885297.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a646e4f697ca53f9892c98caa49c68d3f1b3a7cf

commit a646e4f697ca53f9892c98caa49c68d3f1b3a7cf
Author: Qingfang Deng <dqfext at gmail.com>
AuthorDate: Fri Mar 8 11:07:49 2024 +0800

    kernel: enable KASAN option for more architectures
    
    KASAN has supported more architectures, such as ARM, PPC32 and RISC-V 64.
    Enable KASAN option for those architectures.
    
    Signed-off-by: Qingfang Deng <dqfext at gmail.com>
---
 config/Config-kernel.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/Config-kernel.in b/config/Config-kernel.in
index 78155eb592..2e59bc9551 100644
--- a/config/Config-kernel.in
+++ b/config/Config-kernel.in
@@ -144,7 +144,7 @@ config KERNEL_UBSAN_TRAP
 config KERNEL_KASAN
 	bool "Compile the kernel with KASan: runtime memory debugger"
 	select KERNEL_SLUB_DEBUG
-	depends on (x86_64 || aarch64)
+	depends on (x86_64 || aarch64 || arm || powerpc || riscv64)
 	help
 	  Enables kernel address sanitizer - runtime memory debugger,
 	  designed to find out-of-bounds accesses and use-after-free bugs.



From lede-commits at lists.infradead.org  Fri Mar  8 01:10:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 04:10:28 -0500
Subject: [openwrt/openwrt]  mediatek: clean duplicated #include in Xiaomi
 Redmi AX6000's dts
In-Reply-To: <170988902861.2412563.14340715662266208444@git-01.infra.openwrt.org>
References: <170988902861.2412563.14340715662266208444@git-01.infra.openwrt.org>
Message-ID: <mailman.14566.1709889034.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/22f24f91076d858775fb7ebb0693508c1df421d0

commit 22f24f91076d858775fb7ebb0693508c1df421d0
Author: Furong Xu <xfr at outlook.com>
AuthorDate: Fri Mar 8 16:43:00 2024 +0800

    mediatek: clean duplicated #include in Xiaomi Redmi AX6000's dts
    
    Clean duplication of #include <dt-bindings/leds/common.h>.
    Thanks musashino205
    
    Fixes: 1493e8f8cbe2 ("mediatek: convert LED color/function format for Xiaomi Redmi AX6000")
    Signed-off-by: Furong Xu <xfr at outlook.com>
---
 target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi | 1 -
 1 file changed, 1 deletion(-)

diff --git a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
index 723c4f3296..c262461106 100644
--- a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
+++ b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000.dtsi
@@ -2,7 +2,6 @@
 
 /dts-v1/;
 #include <dt-bindings/input/input.h>
-#include <dt-bindings/leds/common.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/leds/common.h>
 



From lede-commits at lists.infradead.org  Fri Mar  8 02:29:40 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 05:29:40 -0500
Subject: [openwrt/openwrt]  kernel: Remove dsmark support
In-Reply-To: <170989377906.2571401.3833643534671296260@git-01.infra.openwrt.org>
References: <170989377906.2571401.3833643534671296260@git-01.infra.openwrt.org>
Message-ID: <mailman.14598.1709893785.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/3062b186bf266abc7fa3ca6e0053ab8d3046dc94

commit 3062b186bf266abc7fa3ca6e0053ab8d3046dc94
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Sun Mar 3 09:49:03 2024 -0500

    kernel: Remove dsmark support
    
    dsmark support was removed in kernel 5.15.150 and 6.1.80. Remove it from
    the kmod package as well
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
    (cherry picked from commit bd6b37f463d0530b887e052860207448c82d6ee2)
---
 package/kernel/linux/modules/netsupport.mk | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk
index 27268ee043..4fcb9ed60d 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_gred sch_multiq sch_sfq sch_teql sch_fq act_pedit act_simple 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
@@ -1002,7 +1002,6 @@ define KernelPackage/sched
   DEPENDS:=+kmod-sched-core +kmod-lib-crc32c +kmod-lib-textsearch
   KCONFIG:= \
 	CONFIG_NET_SCH_CODEL \
-	CONFIG_NET_SCH_DSMARK \
 	CONFIG_NET_SCH_GRED \
 	CONFIG_NET_SCH_MULTIQ \
 	CONFIG_NET_SCH_SFQ \



From lede-commits at lists.infradead.org  Fri Mar  8 02:29:41 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 05:29:41 -0500
Subject: [openwrt/openwrt]  kernel: bump 5.15 to 5.15.150
In-Reply-To: <170989377906.2571401.3833643534671296260@git-01.infra.openwrt.org>
References: <170989377906.2571401.3833643534671296260@git-01.infra.openwrt.org>
Message-ID: <mailman.14599.1709893788.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/db7b247fa932e845cd7270b6e474a15d54323a41

commit db7b247fa932e845cd7270b6e474a15d54323a41
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sun Mar 3 12:25:27 2024 +0100

    kernel: bump 5.15 to 5.15.150
    
    Removed because it is upstream:
    bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=cb1003c07e746e4e82bdd3959c9ea37018ed41a3
    
    Removed because it is upstream:
    bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c65a23e98e38dc991f495d6bdb3cfa6163a88a0c
    
    Removed because it is upstream:
    bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=71475bcee001cae3844644c2787eef93b26489d1
    
    Adapted hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch to match
    the changes from the upstream flow offload patch:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7c71b831220edeab7ce603d818dc1708d9ea4137
    
    Manually Adapted the following patch:
    bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    (cherry picked from commit 387fde0da0e8fd51ab95f35ab33dfbd4969f32bb)
---
 include/kernel-5.15                                |  4 +-
 ...-clk_core_get_rate_recalc-in-clk_rate_get.patch |  2 +-
 ...pl011-Insert-mb-for-correct-FIFO-handling.patch |  2 +-
 ...Use-more-event-ring-segment-table-entries.patch |  4 +-
 ...50-0440-clk-Always-clamp-the-rounded-rate.patch |  2 +-
 ...-xhci-quirks-add-link-TRB-quirk-for-VL805.patch |  2 +-
 ...or-out-TRBS_PER_SEGMENT-define-in-runtime.patch |  4 +-
 ...0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch |  2 +-
 ...d-a-quirk-for-Superspeed-bulk-OUT-transfe.patch |  8 +--
 ...hci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch |  6 +--
 ...-Use-clamp-instead-of-open-coding-our-own.patch |  2 +-
 ...Always-set-the-rate-on-clk_set_range_rate.patch |  2 +-
 ...0-0837-clk-Drop-the-rate-range-on-clk_put.patch |  8 +--
 ...to-account-uncached-clocks-in-clk_set_rat.patch |  4 +-
 .../950-0846-clk-Set-req_rate-on-reparenting.patch |  4 +-
 ...kip-set_rate_range-if-our-clock-is-orphan.patch |  2 +-
 ...-request-boundaries-in-clk_core_init_rate.patch |  8 +--
 ...k-Change-clk_core_init_rate_req-prototype.patch |  6 +--
 ...50-clk-Introduce-clk_hw_init_rate_request.patch |  4 +-
 ...-Add-missing-clk_core_init_rate_req-calls.patch |  6 +--
 ...ove-redundant-clk_core_init_rate_req-call.patch |  2 +-
 ...from-__clk_determine_rate-to-clk_core_rou.patch |  6 +--
 ...50-0854-clk-Introduce-clk_core_has_parent.patch |  4 +-
 ...orwarding-clk_rate_requests-to-the-parent.patch | 12 ++---
 ...6-clk-Zero-the-clk_rate_request-structure.patch |  2 +-
 ...Test-the-clock-pointer-in-clk_hw_get_name.patch |  2 +-
 .../950-0865-clk-Add-clk_get_rate_range.patch      |  2 +-
 ...896-clk-Add-locking-to-clk_get_rate_range.patch |  2 +-
 ...53573-Describe-on-SoC-BCM53125-rev-4-swit.patch | 44 -----------------
 ...adcom-align-gpio-key-node-names-with-dtsc.patch |  4 +-
 ...oadcom-align-LED-node-names-with-dtschema.patch |  8 ++-
 ...53573-Drop-nonexistent-default-off-LED-tr.patch | 57 ----------------------
 ...M-dts-BCM53573-Drop-nonexistent-usb-cells.patch | 32 ------------
 ...-add-support-for-performing-fake-doorbell.patch |  2 +-
 .../020-v6.1-05-mm-multi-gen-LRU-groundwork.patch  |  2 +-
 ...ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch |  4 +-
 ...t-stmicro-stmmac-move-queue-reset-to-dedi.patch |  8 +--
 ...t-stmicro-stmmac-move-dma-conf-to-dedicat.patch | 42 ++++++++--------
 ...t-stmicro-stmmac-generate-stmmac-dma-conf.patch | 16 +++---
 .../650-netfilter-add-xt_FLOWOFFLOAD-target.patch  | 19 +++++---
 ...ft_flow_offload-handle-netdevice-events-f.patch |  4 +-
 ...f_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 ...-net-stmmac-Use-hrtimer-for-TX-coalescing.patch |  8 +--
 .../lantiq/patches-5.15/0152-lantiq-VPE.patch      |  8 +--
 .../patches-5.15/0155-lantiq-VPE-nosmp.patch       |  2 +-
 ...-enable-all-hardware-interrupts-on-second.patch |  6 +--
 .../patches-5.15/410-bt-mtk-serial-fix.patch       |  2 +-
 47 files changed, 126 insertions(+), 258 deletions(-)

diff --git a/include/kernel-5.15 b/include/kernel-5.15
index 9ab2d04fc6..58573657d6 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .149
-LINUX_KERNEL_HASH-5.15.149 = bd84809a367eb400eb04e0e70294e6ba12fc03b6bfb5a7dfaca548f8947501b0
+LINUX_VERSION-5.15 = .150
+LINUX_KERNEL_HASH-5.15.150 = ee05592b458e7fcdc515b43605883a10cc2f65f2e2b58d60af8a72b93467e4d4
diff --git a/target/linux/at91/patches-5.15/109-clk-use-clk_core_get_rate_recalc-in-clk_rate_get.patch b/target/linux/at91/patches-5.15/109-clk-use-clk_core_get_rate_recalc-in-clk_rate_get.patch
index 32e760ac17..9d9715381a 100644
--- a/target/linux/at91/patches-5.15/109-clk-use-clk_core_get_rate_recalc-in-clk_rate_get.patch
+++ b/target/linux/at91/patches-5.15/109-clk-use-clk_core_get_rate_recalc-in-clk_rate_get.patch
@@ -18,7 +18,7 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -3131,7 +3131,10 @@ static int clk_rate_get(void *data, u64
+@@ -3142,7 +3142,10 @@ static int clk_rate_get(void *data, u64
  {
  	struct clk_core *core = data;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0058-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch b/target/linux/bcm27xx/patches-5.15/950-0058-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
index 9050784602..d147bd624f 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0058-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0058-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch
@@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/tty/serial/amba-pl011.c
 +++ b/drivers/tty/serial/amba-pl011.c
-@@ -1431,6 +1431,7 @@ static bool pl011_tx_char(struct uart_am
+@@ -1461,6 +1461,7 @@ static bool pl011_tx_char(struct uart_am
  		return false; /* unable to transmit character */
  
  	pl011_write(c, uap, REG_DR);
diff --git a/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch b/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch
index 53dc6fdea5..87c23dd1d9 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch
@@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
 
 --- a/drivers/usb/host/xhci-mem.c
 +++ b/drivers/usb/host/xhci-mem.c
-@@ -2541,9 +2541,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2544,9 +2544,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
  	 * Event ring setup: Allocate a normal ring, but also setup
  	 * the event ring segment table (ERST).  Section 4.9.3.
  	 */
@@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
  	if (!xhci->event_ring)
  		goto fail;
  	if (xhci_check_trb_in_td_math(xhci) < 0)
-@@ -2556,7 +2558,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2559,7 +2561,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
  	/* set ERST count with the number of entries in the segment table */
  	val = readl(&xhci->ir_set->erst_size);
  	val &= ERST_SIZE_MASK;
diff --git a/target/linux/bcm27xx/patches-5.15/950-0440-clk-Always-clamp-the-rounded-rate.patch b/target/linux/bcm27xx/patches-5.15/950-0440-clk-Always-clamp-the-rounded-rate.patch
index 434c91f01e..1adf620c13 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0440-clk-Always-clamp-the-rounded-rate.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0440-clk-Always-clamp-the-rounded-rate.patch
@@ -17,7 +17,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1346,6 +1346,8 @@ static int clk_core_determine_round_nolo
+@@ -1357,6 +1357,8 @@ static int clk_core_determine_round_nolo
  	if (!core)
  		return 0;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
index 78b01e9ba5..9028e49fe5 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
@@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	addr = xhci_trb_virt_to_dma(new_seg, new_deq);
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1908,6 +1908,7 @@ struct xhci_hcd {
+@@ -1907,6 +1907,7 @@ struct xhci_hcd {
  #define XHCI_RESET_TO_DEFAULT	BIT_ULL(44)
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
diff --git a/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch b/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch
index 917e324a00..a7556bcb14 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch
@@ -205,7 +205,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  		xhci_err(xhci, "Tried to move enqueue past ring segment\n");
  		return;
  	}
-@@ -3166,7 +3169,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
+@@ -3165,7 +3168,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
  	 * that clears the EHB.
  	 */
  	while (xhci_handle_event(xhci) > 0) {
@@ -214,7 +214,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  			continue;
  		xhci_update_erst_dequeue(xhci, event_ring_deq);
  		event_ring_deq = xhci->event_ring->dequeue;
-@@ -3308,7 +3311,8 @@ static int prepare_ring(struct xhci_hcd
+@@ -3307,7 +3310,8 @@ static int prepare_ring(struct xhci_hcd
  		}
  	}
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch b/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch
index 4e23eaf936..d33181f371 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch
@@ -63,7 +63,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1910,6 +1910,7 @@ struct xhci_hcd {
+@@ -1909,6 +1909,7 @@ struct xhci_hcd {
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
  #define XHCI_AVOID_DQ_ON_LINK	BIT_ULL(47)
diff --git a/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch b/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch
index e47ab8dac4..fa88a1682e 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch
@@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
 --- a/drivers/usb/host/xhci-ring.c
 +++ b/drivers/usb/host/xhci-ring.c
-@@ -3621,14 +3621,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3620,14 +3620,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  	unsigned int num_trbs;
  	unsigned int start_cycle, num_sgs = 0;
  	unsigned int enqd_len, block_len, trb_buff_len, full_len;
@@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	full_len = urb->transfer_buffer_length;
  	/* If we have scatter/gather list, we use it. */
  	if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
-@@ -3665,6 +3666,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3664,6 +3665,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  	start_cycle = ring->cycle_state;
  	send_addr = addr;
  
@@ -72,7 +72,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	/* Queue the TRBs, even if they are zero-length */
  	for (enqd_len = 0; first_trb || enqd_len < full_len;
  			enqd_len += trb_buff_len) {
-@@ -3677,6 +3689,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3676,6 +3688,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  		if (enqd_len + trb_buff_len > full_len)
  			trb_buff_len = full_len - enqd_len;
  
@@ -86,7 +86,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  			first_trb = false;
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1911,6 +1911,7 @@ struct xhci_hcd {
+@@ -1910,6 +1910,7 @@ struct xhci_hcd {
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
  #define XHCI_AVOID_DQ_ON_LINK	BIT_ULL(47)
  #define XHCI_VLI_TRB_CACHE_BUG	BIT_ULL(48)
diff --git a/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch b/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch
index 79b3d196d3..7c13526ee0 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch
@@ -13,7 +13,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/usb/host/xhci-ring.c
 +++ b/drivers/usb/host/xhci-ring.c
-@@ -3621,7 +3621,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3620,7 +3620,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  	unsigned int num_trbs;
  	unsigned int start_cycle, num_sgs = 0;
  	unsigned int enqd_len, block_len, trb_buff_len, full_len;
@@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	u32 field, length_field, remainder, maxpacket;
  	u64 addr, send_addr;
  
-@@ -3667,14 +3667,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3666,14 +3666,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  	send_addr = addr;
  
  	if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
@@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	}
  
  	/* Queue the TRBs, even if they are zero-length */
-@@ -3689,7 +3684,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3688,7 +3683,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  		if (enqd_len + trb_buff_len > full_len)
  			trb_buff_len = full_len - enqd_len;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0833-clk-Use-clamp-instead-of-open-coding-our-own.patch b/target/linux/bcm27xx/patches-5.15/950-0833-clk-Use-clamp-instead-of-open-coding-our-own.patch
index 290cc631cb..77d21a31a7 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0833-clk-Use-clamp-instead-of-open-coding-our-own.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0833-clk-Use-clamp-instead-of-open-coding-our-own.patch
@@ -18,7 +18,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -2386,11 +2386,7 @@ int clk_set_rate_range(struct clk *clk,
+@@ -2397,11 +2397,7 @@ int clk_set_rate_range(struct clk *clk,
  		 *   this corner case when determining the rate
  		 */
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0834-clk-Always-set-the-rate-on-clk_set_range_rate.patch b/target/linux/bcm27xx/patches-5.15/950-0834-clk-Always-set-the-rate-on-clk_set_range_rate.patch
index 47c3eb131c..1ba30083d0 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0834-clk-Always-set-the-rate-on-clk_set_range_rate.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0834-clk-Always-set-the-rate-on-clk_set_range_rate.patch
@@ -30,7 +30,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -2371,28 +2371,29 @@ int clk_set_rate_range(struct clk *clk,
+@@ -2382,28 +2382,29 @@ int clk_set_rate_range(struct clk *clk,
  		goto out;
  	}
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0837-clk-Drop-the-rate-range-on-clk_put.patch b/target/linux/bcm27xx/patches-5.15/950-0837-clk-Drop-the-rate-range-on-clk_put.patch
index b4af3d0eb2..d6355547c5 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0837-clk-Drop-the-rate-range-on-clk_put.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0837-clk-Drop-the-rate-range-on-clk_put.patch
@@ -29,7 +29,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -2330,19 +2330,15 @@ int clk_set_rate_exclusive(struct clk *c
+@@ -2341,19 +2341,15 @@ int clk_set_rate_exclusive(struct clk *c
  }
  EXPORT_SYMBOL_GPL(clk_set_rate_exclusive);
  
@@ -54,7 +54,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	if (!clk)
  		return 0;
  
-@@ -2355,8 +2351,6 @@ int clk_set_rate_range(struct clk *clk,
+@@ -2366,8 +2362,6 @@ int clk_set_rate_range(struct clk *clk,
  		return -EINVAL;
  	}
  
@@ -63,7 +63,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	if (clk->exclusive_count)
  		clk_core_rate_unprotect(clk->core);
  
-@@ -2400,6 +2394,28 @@ out:
+@@ -2411,6 +2405,28 @@ out:
  	if (clk->exclusive_count)
  		clk_core_rate_protect(clk->core);
  
@@ -92,7 +92,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	clk_prepare_unlock();
  
  	return ret;
-@@ -4362,9 +4378,10 @@ void __clk_put(struct clk *clk)
+@@ -4373,9 +4389,10 @@ void __clk_put(struct clk *clk)
  	}
  
  	hlist_del(&clk->clks_node);
diff --git a/target/linux/bcm27xx/patches-5.15/950-0844-clk-Take-into-account-uncached-clocks-in-clk_set_rat.patch b/target/linux/bcm27xx/patches-5.15/950-0844-clk-Take-into-account-uncached-clocks-in-clk_set_rat.patch
index 8f540b7660..188c22b688 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0844-clk-Take-into-account-uncached-clocks-in-clk_set_rat.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0844-clk-Take-into-account-uncached-clocks-in-clk_set_rat.patch
@@ -22,7 +22,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -2365,6 +2365,10 @@ static int clk_set_rate_range_nolock(str
+@@ -2376,6 +2376,10 @@ static int clk_set_rate_range_nolock(str
  		goto out;
  	}
  
@@ -33,7 +33,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	/*
  	 * Since the boundaries have been changed, let's give the
  	 * opportunity to the provider to adjust the clock rate based on
-@@ -2382,7 +2386,7 @@ static int clk_set_rate_range_nolock(str
+@@ -2393,7 +2397,7 @@ static int clk_set_rate_range_nolock(str
  	 * - the determine_rate() callback does not really check for
  	 *   this corner case when determining the rate
  	 */
diff --git a/target/linux/bcm27xx/patches-5.15/950-0846-clk-Set-req_rate-on-reparenting.patch b/target/linux/bcm27xx/patches-5.15/950-0846-clk-Set-req_rate-on-reparenting.patch
index d45bdcf343..65bf440787 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0846-clk-Set-req_rate-on-reparenting.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0846-clk-Set-req_rate-on-reparenting.patch
@@ -23,7 +23,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1757,6 +1757,23 @@ static void clk_core_update_orphan_statu
+@@ -1768,6 +1768,23 @@ static void clk_core_update_orphan_statu
  		clk_core_update_orphan_status(child, is_orphan);
  }
  
@@ -47,7 +47,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  static void clk_reparent(struct clk_core *core, struct clk_core *new_parent)
  {
  	bool was_orphan = core->orphan;
-@@ -1781,6 +1798,7 @@ static void clk_reparent(struct clk_core
+@@ -1792,6 +1809,7 @@ static void clk_reparent(struct clk_core
  	}
  
  	core->parent = new_parent;
diff --git a/target/linux/bcm27xx/patches-5.15/950-0847-clk-Skip-set_rate_range-if-our-clock-is-orphan.patch b/target/linux/bcm27xx/patches-5.15/950-0847-clk-Skip-set_rate_range-if-our-clock-is-orphan.patch
index d4f281d6fe..3c1a9e44dc 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0847-clk-Skip-set_rate_range-if-our-clock-is-orphan.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0847-clk-Skip-set_rate_range-if-our-clock-is-orphan.patch
@@ -25,7 +25,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -2387,6 +2387,12 @@ static int clk_set_rate_range_nolock(str
+@@ -2398,6 +2398,12 @@ static int clk_set_rate_range_nolock(str
  	if (clk->core->flags & CLK_GET_RATE_NOCACHE)
  		rate = clk_core_get_rate_recalc(clk->core);
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0848-clk-Add-our-request-boundaries-in-clk_core_init_rate.patch b/target/linux/bcm27xx/patches-5.15/950-0848-clk-Add-our-request-boundaries-in-clk_core_init_rate.patch
index f273453031..52f7de571e 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0848-clk-Add-our-request-boundaries-in-clk_core_init_rate.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0848-clk-Add-our-request-boundaries-in-clk_core_init_rate.patch
@@ -26,7 +26,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1380,6 +1380,8 @@ static void clk_core_init_rate_req(struc
+@@ -1391,6 +1391,8 @@ static void clk_core_init_rate_req(struc
  	if (WARN_ON(!core || !req))
  		return;
  
@@ -35,7 +35,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	parent = core->parent;
  	if (parent) {
  		req->best_parent_hw = parent->hw;
-@@ -1454,7 +1456,6 @@ unsigned long clk_hw_round_rate(struct c
+@@ -1465,7 +1467,6 @@ unsigned long clk_hw_round_rate(struct c
  	int ret;
  	struct clk_rate_request req;
  
@@ -43,7 +43,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	req.rate = rate;
  
  	ret = clk_core_round_rate_nolock(hw->core, &req);
-@@ -1487,7 +1488,6 @@ long clk_round_rate(struct clk *clk, uns
+@@ -1498,7 +1499,6 @@ long clk_round_rate(struct clk *clk, uns
  	if (clk->exclusive_count)
  		clk_core_rate_unprotect(clk->core);
  
@@ -51,7 +51,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	req.rate = rate;
  
  	ret = clk_core_round_rate_nolock(clk->core, &req);
-@@ -1994,8 +1994,6 @@ static struct clk_core *clk_calc_new_rat
+@@ -2005,8 +2005,6 @@ static struct clk_core *clk_calc_new_rat
  		struct clk_rate_request req;
  
  		req.rate = rate;
diff --git a/target/linux/bcm27xx/patches-5.15/950-0849-clk-Change-clk_core_init_rate_req-prototype.patch b/target/linux/bcm27xx/patches-5.15/950-0849-clk-Change-clk_core_init_rate_req-prototype.patch
index 7f08b94fa4..d675b81f9f 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0849-clk-Change-clk_core_init_rate_req-prototype.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0849-clk-Change-clk_core_init_rate_req-prototype.patch
@@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1373,13 +1373,15 @@ static int clk_core_determine_round_nolo
+@@ -1384,13 +1384,15 @@ static int clk_core_determine_round_nolo
  }
  
  static void clk_core_init_rate_req(struct clk_core * const core,
@@ -36,7 +36,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	clk_core_get_boundaries(core, &req->min_rate, &req->max_rate);
  
  	parent = core->parent;
-@@ -1407,7 +1409,7 @@ static int clk_core_round_rate_nolock(st
+@@ -1418,7 +1420,7 @@ static int clk_core_round_rate_nolock(st
  		return 0;
  	}
  
@@ -45,7 +45,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  
  	if (clk_core_can_round(core))
  		return clk_core_determine_round_nolock(core, req);
-@@ -1993,9 +1995,7 @@ static struct clk_core *clk_calc_new_rat
+@@ -2004,9 +2006,7 @@ static struct clk_core *clk_calc_new_rat
  	if (clk_core_can_round(core)) {
  		struct clk_rate_request req;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0850-clk-Introduce-clk_hw_init_rate_request.patch b/target/linux/bcm27xx/patches-5.15/950-0850-clk-Introduce-clk_hw_init_rate_request.patch
index 1db5a0ad45..5367765215 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0850-clk-Introduce-clk_hw_init_rate_request.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0850-clk-Introduce-clk_hw_init_rate_request.patch
@@ -22,7 +22,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1394,6 +1394,26 @@ static void clk_core_init_rate_req(struc
+@@ -1405,6 +1405,26 @@ static void clk_core_init_rate_req(struc
  	}
  }
  
@@ -69,5 +69,5 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 +			      unsigned long rate);
 +
  /**
-  * struct clk_duty - Struture encoding the duty cycle ratio of a clock
+  * struct clk_duty - Structure encoding the duty cycle ratio of a clock
   *
diff --git a/target/linux/bcm27xx/patches-5.15/950-0851-clk-Add-missing-clk_core_init_rate_req-calls.patch b/target/linux/bcm27xx/patches-5.15/950-0851-clk-Add-missing-clk_core_init_rate_req-calls.patch
index 1dad2e5006..535d10f8a2 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0851-clk-Add-missing-clk_core_init_rate_req-calls.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0851-clk-Add-missing-clk_core_init_rate_req-calls.patch
@@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1478,7 +1478,7 @@ unsigned long clk_hw_round_rate(struct c
+@@ -1489,7 +1489,7 @@ unsigned long clk_hw_round_rate(struct c
  	int ret;
  	struct clk_rate_request req;
  
@@ -28,7 +28,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  
  	ret = clk_core_round_rate_nolock(hw->core, &req);
  	if (ret)
-@@ -1510,7 +1510,7 @@ long clk_round_rate(struct clk *clk, uns
+@@ -1521,7 +1521,7 @@ long clk_round_rate(struct clk *clk, uns
  	if (clk->exclusive_count)
  		clk_core_rate_unprotect(clk->core);
  
@@ -37,7 +37,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  
  	ret = clk_core_round_rate_nolock(clk->core, &req);
  
-@@ -2214,8 +2214,7 @@ static unsigned long clk_core_req_round_
+@@ -2225,8 +2225,7 @@ static unsigned long clk_core_req_round_
  	if (cnt < 0)
  		return cnt;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0852-clk-Remove-redundant-clk_core_init_rate_req-call.patch b/target/linux/bcm27xx/patches-5.15/950-0852-clk-Remove-redundant-clk_core_init_rate_req-call.patch
index 86e43eec54..ca90ff6393 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0852-clk-Remove-redundant-clk_core_init_rate_req-call.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0852-clk-Remove-redundant-clk_core_init_rate_req-call.patch
@@ -23,7 +23,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1429,8 +1429,6 @@ static int clk_core_round_rate_nolock(st
+@@ -1440,8 +1440,6 @@ static int clk_core_round_rate_nolock(st
  		return 0;
  	}
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0853-clk-Switch-from-__clk_determine_rate-to-clk_core_rou.patch b/target/linux/bcm27xx/patches-5.15/950-0853-clk-Switch-from-__clk_determine_rate-to-clk_core_rou.patch
index 2f5eb06019..b13df66d9a 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0853-clk-Switch-from-__clk_determine_rate-to-clk_core_rou.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0853-clk-Switch-from-__clk_determine_rate-to-clk_core_rou.patch
@@ -24,7 +24,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -542,6 +542,9 @@ static bool mux_is_better_rate(unsigned
+@@ -553,6 +553,9 @@ static bool mux_is_better_rate(unsigned
  	return now <= rate && now > best;
  }
  
@@ -34,7 +34,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  int clk_mux_determine_rate_flags(struct clk_hw *hw,
  				 struct clk_rate_request *req,
  				 unsigned long flags)
-@@ -555,8 +558,12 @@ int clk_mux_determine_rate_flags(struct
+@@ -566,8 +569,12 @@ int clk_mux_determine_rate_flags(struct
  	if (core->flags & CLK_SET_RATE_NO_REPARENT) {
  		parent = core->parent;
  		if (core->flags & CLK_SET_RATE_PARENT) {
@@ -49,7 +49,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  			if (ret)
  				return ret;
  
-@@ -579,7 +586,7 @@ int clk_mux_determine_rate_flags(struct
+@@ -590,7 +597,7 @@ int clk_mux_determine_rate_flags(struct
  
  		if (core->flags & CLK_SET_RATE_PARENT) {
  			parent_req = *req;
diff --git a/target/linux/bcm27xx/patches-5.15/950-0854-clk-Introduce-clk_core_has_parent.patch b/target/linux/bcm27xx/patches-5.15/950-0854-clk-Introduce-clk_core_has_parent.patch
index 73e34ebe5f..8975b9d00c 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0854-clk-Introduce-clk_core_has_parent.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0854-clk-Introduce-clk_core_has_parent.patch
@@ -20,7 +20,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -545,6 +545,26 @@ static bool mux_is_better_rate(unsigned
+@@ -556,6 +556,26 @@ static bool mux_is_better_rate(unsigned
  static int clk_core_round_rate_nolock(struct clk_core *core,
  				      struct clk_rate_request *req);
  
@@ -47,7 +47,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  int clk_mux_determine_rate_flags(struct clk_hw *hw,
  				 struct clk_rate_request *req,
  				 unsigned long flags)
-@@ -2568,25 +2588,11 @@ void clk_hw_reparent(struct clk_hw *hw,
+@@ -2579,25 +2599,11 @@ void clk_hw_reparent(struct clk_hw *hw,
   */
  bool clk_has_parent(struct clk *clk, struct clk *parent)
  {
diff --git a/target/linux/bcm27xx/patches-5.15/950-0855-clk-Stop-forwarding-clk_rate_requests-to-the-parent.patch b/target/linux/bcm27xx/patches-5.15/950-0855-clk-Stop-forwarding-clk_rate_requests-to-the-parent.patch
index 75fcbeee9e..26f4e46b7a 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0855-clk-Stop-forwarding-clk_rate_requests-to-the-parent.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0855-clk-Stop-forwarding-clk_rate_requests-to-the-parent.patch
@@ -35,7 +35,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -542,6 +542,10 @@ static bool mux_is_better_rate(unsigned
+@@ -553,6 +553,10 @@ static bool mux_is_better_rate(unsigned
  	return now <= rate && now > best;
  }
  
@@ -46,7 +46,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  static int clk_core_round_rate_nolock(struct clk_core *core,
  				      struct clk_rate_request *req);
  
-@@ -565,6 +569,24 @@ static bool clk_core_has_parent(struct c
+@@ -576,6 +580,24 @@ static bool clk_core_has_parent(struct c
  	return false;
  }
  
@@ -71,7 +71,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  int clk_mux_determine_rate_flags(struct clk_hw *hw,
  				 struct clk_rate_request *req,
  				 unsigned long flags)
-@@ -572,17 +594,19 @@ int clk_mux_determine_rate_flags(struct
+@@ -583,17 +605,19 @@ int clk_mux_determine_rate_flags(struct
  	struct clk_core *core = hw->core, *parent, *best_parent = NULL;
  	int i, num_parents, ret;
  	unsigned long best = 0;
@@ -92,7 +92,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  			ret = clk_core_round_rate_nolock(parent, &parent_req);
  			if (ret)
  				return ret;
-@@ -600,23 +624,29 @@ int clk_mux_determine_rate_flags(struct
+@@ -611,23 +635,29 @@ int clk_mux_determine_rate_flags(struct
  	/* find the parent that can provide the fastest rate <= rate */
  	num_parents = core->num_parents;
  	for (i = 0; i < num_parents; i++) {
@@ -126,7 +126,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  		}
  	}
  
-@@ -1449,6 +1479,8 @@ static bool clk_core_can_round(struct cl
+@@ -1460,6 +1490,8 @@ static bool clk_core_can_round(struct cl
  static int clk_core_round_rate_nolock(struct clk_core *core,
  				      struct clk_rate_request *req)
  {
@@ -135,7 +135,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
  	lockdep_assert_held(&prepare_lock);
  
  	if (!core) {
-@@ -1458,8 +1490,20 @@ static int clk_core_round_rate_nolock(st
+@@ -1469,8 +1501,20 @@ static int clk_core_round_rate_nolock(st
  
  	if (clk_core_can_round(core))
  		return clk_core_determine_round_nolock(core, req);
diff --git a/target/linux/bcm27xx/patches-5.15/950-0856-clk-Zero-the-clk_rate_request-structure.patch b/target/linux/bcm27xx/patches-5.15/950-0856-clk-Zero-the-clk_rate_request-structure.patch
index dc914aab84..acc37b5bfb 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0856-clk-Zero-the-clk_rate_request-structure.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0856-clk-Zero-the-clk_rate_request-structure.patch
@@ -17,7 +17,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -1438,6 +1438,8 @@ static void clk_core_init_rate_req(struc
+@@ -1449,6 +1449,8 @@ static void clk_core_init_rate_req(struc
  	if (WARN_ON(!core || !req))
  		return;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0857-clk-Test-the-clock-pointer-in-clk_hw_get_name.patch b/target/linux/bcm27xx/patches-5.15/950-0857-clk-Test-the-clock-pointer-in-clk_hw_get_name.patch
index dcb41f9032..a066246b60 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0857-clk-Test-the-clock-pointer-in-clk_hw_get_name.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0857-clk-Test-the-clock-pointer-in-clk_hw_get_name.patch
@@ -18,7 +18,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -269,7 +269,7 @@ EXPORT_SYMBOL_GPL(__clk_get_name);
+@@ -280,7 +280,7 @@ EXPORT_SYMBOL_GPL(__clk_get_name);
  
  const char *clk_hw_get_name(const struct clk_hw *hw)
  {
diff --git a/target/linux/bcm27xx/patches-5.15/950-0865-clk-Add-clk_get_rate_range.patch b/target/linux/bcm27xx/patches-5.15/950-0865-clk-Add-clk_get_rate_range.patch
index febb430a9c..a33db3e206 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0865-clk-Add-clk_get_rate_range.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0865-clk-Add-clk_get_rate_range.patch
@@ -28,7 +28,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -2575,6 +2575,24 @@ int clk_set_max_rate(struct clk *clk, un
+@@ -2586,6 +2586,24 @@ int clk_set_max_rate(struct clk *clk, un
  EXPORT_SYMBOL_GPL(clk_set_max_rate);
  
  /**
diff --git a/target/linux/bcm27xx/patches-5.15/950-0896-clk-Add-locking-to-clk_get_rate_range.patch b/target/linux/bcm27xx/patches-5.15/950-0896-clk-Add-locking-to-clk_get_rate_range.patch
index b932514d09..d39543774c 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0896-clk-Add-locking-to-clk_get_rate_range.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0896-clk-Add-locking-to-clk_get_rate_range.patch
@@ -13,7 +13,7 @@ Signed-off-by: Maxime Ripard <maxime at cerno.tech>
 
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
-@@ -2588,7 +2588,9 @@ void clk_get_rate_range(struct clk *clk,
+@@ -2599,7 +2599,9 @@ void clk_get_rate_range(struct clk *clk,
  	if (!clk || !min || !max)
  		return;
  
diff --git a/target/linux/bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch b/target/linux/bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch
deleted file mode 100644
index 914117cb2c..0000000000
--- a/target/linux/bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 9fb90ae6cae7f8fe4fbf626945f32cd9da2c3892 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
-Date: Mon, 20 Sep 2021 16:10:23 +0200
-Subject: [PATCH] ARM: dts: BCM53573: Describe on-SoC BCM53125 rev 4 switch
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-BCM53573 family SoC have Ethernet switch connected to the first Ethernet
-controller (accessible over MDIO).
-
-Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
-Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
----
- arch/arm/boot/dts/bcm53573.dtsi | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
---- a/arch/arm/boot/dts/bcm53573.dtsi
-+++ b/arch/arm/boot/dts/bcm53573.dtsi
-@@ -183,6 +183,24 @@
- 
- 		gmac0: ethernet at 5000 {
- 			reg = <0x5000 0x1000>;
-+
-+			mdio {
-+				#address-cells = <1>;
-+				#size-cells = <0>;
-+
-+				switch: switch at 1e {
-+					compatible = "brcm,bcm53125";
-+					reg = <0x1e>;
-+
-+					status = "disabled";
-+
-+					/* ports are defined in board DTS */
-+					ports {
-+						#address-cells = <1>;
-+						#size-cells = <0>;
-+					};
-+				};
-+			};
- 		};
- 
- 		gmac1: ethernet at b000 {
diff --git a/target/linux/bcm53xx/patches-5.15/034-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch b/target/linux/bcm53xx/patches-5.15/034-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
index f929dc3b60..1c0708a5f0 100644
--- a/target/linux/bcm53xx/patches-5.15/034-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
+++ b/target/linux/bcm53xx/patches-5.15/034-v6.0-0001-ARM-dts-broadcom-align-gpio-key-node-names-with-dtsc.patch
@@ -781,7 +781,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -39,7 +39,7 @@
+@@ -38,7 +38,7 @@
  	gpio-keys {
  		compatible = "gpio-keys";
  
@@ -792,7 +792,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>;
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -49,7 +49,7 @@
+@@ -47,7 +47,7 @@
  	gpio-keys {
  		compatible = "gpio-keys";
  
diff --git a/target/linux/bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch b/target/linux/bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
index d6bf49d0cd..a53070a506 100644
--- a/target/linux/bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
+++ b/target/linux/bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch
@@ -1514,7 +1514,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  		};
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -23,13 +23,13 @@
+@@ -23,12 +23,12 @@
  	leds {
  		compatible = "gpio-leds";
  
@@ -1522,7 +1522,6 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-wlan {
  			label = "bcm53xx:blue:wlan";
  			gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
- 			linux,default-trigger = "default-off";
  		};
  
 -		system {
@@ -1532,7 +1531,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
  			linux,default-trigger = "timer";
 --- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
 +++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -20,26 +20,26 @@
+@@ -20,25 +20,25 @@
  		reg = <0x00000000 0x08000000>;
  	};
  
@@ -1544,7 +1543,6 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-5ghz {
  			label = "bcm53xx:blue:5ghz";
  			gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
- 			linux,default-trigger = "default-off";
  		};
  
 -		system {
@@ -1563,7 +1561,7 @@ Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
 +		led-2ghz {
  			label = "bcm53xx:blue:2ghz";
  			gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
- 			linux,default-trigger = "default-off";
+ 		};
 --- a/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
 +++ b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
 @@ -20,37 +20,37 @@
diff --git a/target/linux/bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch b/target/linux/bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
deleted file mode 100644
index 8bad76edca..0000000000
--- a/target/linux/bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From be7e1e5b0f67c58ec4be0a54db23b6a4fa6e2116 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
-Date: Fri, 7 Jul 2023 13:40:01 +0200
-Subject: [PATCH] ARM: dts: BCM53573: Drop nonexistent "default-off" LED
- trigger
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There is no such trigger documented or implemented in Linux. It was a
-copy & paste mistake.
-
-This fixes:
-arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dtb: leds: led-wlan:linux,default-trigger: 'oneOf' conditional failed, one must be fixed:
-        'default-off' is not one of ['backlight', 'default-on', 'heartbeat', 'disk-activity', 'disk-read', 'disk-write', 'timer', 'pattern', 'audio-micmute', 'audio-mute', 'bluetooth-power', 'flash', 'kbd-capslock', 'mtd', 'nand-disk', 'none', 'torch', 'usb-gadget', 'usb-host', 'usbport']
-        'default-off' does not match '^cpu[0-9]*$'
-        'default-off' does not match '^hci[0-9]+-power$'
-        'default-off' does not match '^mmc[0-9]+$'
-        'default-off' does not match '^phy[0-9]+tx$'
-        From schema: Documentation/devicetree/bindings/leds/leds-gpio.yaml
-
-Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
-Link: https://lore.kernel.org/r/20230707114004.2740-1-zajec5 at gmail.com
-Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
----
- arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dts | 1 -
- arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-810.dts  | 2 --
- 2 files changed, 3 deletions(-)
-
---- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
-@@ -26,7 +26,6 @@
- 		led-wlan {
- 			label = "bcm53xx:blue:wlan";
- 			gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
--			linux,default-trigger = "default-off";
- 		};
- 
- 		led-system {
---- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
-@@ -26,7 +26,6 @@
- 		led-5ghz {
- 			label = "bcm53xx:blue:5ghz";
- 			gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
--			linux,default-trigger = "default-off";
- 		};
- 
- 		led-system {
-@@ -42,7 +41,6 @@
- 		led-2ghz {
- 			label = "bcm53xx:blue:2ghz";
- 			gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
--			linux,default-trigger = "default-off";
- 		};
- 	};
- 
diff --git a/target/linux/bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch b/target/linux/bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch
deleted file mode 100644
index e7a1835d47..0000000000
--- a/target/linux/bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 05d2c3d552b8c92fc397377d9d1112fc58e2cd59 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
-Date: Fri, 7 Jul 2023 13:40:02 +0200
-Subject: [PATCH] ARM: dts: BCM53573: Drop nonexistent #usb-cells
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Such property simply doesn't exist (is not documented or used anywhere).
-
-This fixes:
-arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dtb: usb at d000: Unevaluated properties are not allowed ('#usb-cells' was unexpected)
-        From schema: Documentation/devicetree/bindings/usb/generic-ohci.yaml
-
-Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
-Link: https://lore.kernel.org/r/20230707114004.2740-2-zajec5 at gmail.com
-Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
----
- arch/arm/boot/dts/broadcom/bcm53573.dtsi | 2 --
- 1 file changed, 2 deletions(-)
-
---- a/arch/arm/boot/dts/bcm53573.dtsi
-+++ b/arch/arm/boot/dts/bcm53573.dtsi
-@@ -159,8 +159,6 @@
- 			};
- 
- 			ohci: usb at d000 {
--				#usb-cells = <0>;
--
- 				compatible = "generic-ohci";
- 				reg = <0xd000 0x1000>;
- 				interrupt-parent = <&gic>;
diff --git a/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
index 49277ab251..1d3a21b6cd 100644
--- a/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
+++ b/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
@@ -109,7 +109,7 @@ it on BCM4708 family.
  
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1908,6 +1908,7 @@ struct xhci_hcd {
+@@ -1907,6 +1907,7 @@ struct xhci_hcd {
  #define XHCI_RESET_TO_DEFAULT	BIT_ULL(44)
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
diff --git a/target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch b/target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch
index 769384f500..969d721da6 100644
--- a/target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch
+++ b/target/linux/generic/backport-5.15/020-v6.1-05-mm-multi-gen-LRU-groundwork.patch
@@ -538,7 +538,7 @@ Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
  	(1UL << PG_private | 1UL << PG_private_2)
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -911,6 +911,10 @@ struct task_struct {
+@@ -907,6 +907,10 @@ struct task_struct {
  #ifdef CONFIG_MEMCG
  	unsigned			in_user_fault:1;
  #endif
diff --git a/target/linux/generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch b/target/linux/generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
index f225a21057..35bc19c1ef 100644
--- a/target/linux/generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
+++ b/target/linux/generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch
@@ -31,15 +31,15 @@ Signed-off-by: Vinod Koul <vkoul at kernel.org>
 
 --- a/drivers/ata/ahci.h
 +++ b/drivers/ata/ahci.h
-@@ -241,8 +241,6 @@ enum {
+@@ -240,8 +240,6 @@ enum {
  						      as default lpm_policy */
  	AHCI_HFLAG_SUSPEND_PHYS		= BIT(26), /* handle PHYs during
  						      suspend/resume */
 -	AHCI_HFLAG_IGN_NOTSUPP_POWER_ON	= BIT(27), /* ignore -EOPNOTSUPP
 -						      from phy_power_on() */
  	AHCI_HFLAG_NO_SXS		= BIT(28), /* SXS not supported */
+ 	AHCI_HFLAG_43BIT_ONLY		= BIT(29), /* 43bit DMA addr limit */
  
- 	/* ap->flags bits */
 --- a/drivers/ata/ahci_mvebu.c
 +++ b/drivers/ata/ahci_mvebu.c
 @@ -227,7 +227,7 @@ static const struct ahci_mvebu_plat_data
diff --git a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
index 7742c4a958..32dab26eb5 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
@@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	ret = stmmac_hw_setup(dev, true);
  	if (ret < 0) {
  		netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
-@@ -6430,6 +6423,7 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6410,6 +6403,7 @@ void stmmac_enable_rx_queue(struct stmma
  		return;
  	}
  
@@ -79,7 +79,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_rx_descriptors(priv, queue);
  
  	stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -6491,6 +6485,7 @@ void stmmac_enable_tx_queue(struct stmma
+@@ -6471,6 +6465,7 @@ void stmmac_enable_tx_queue(struct stmma
  		return;
  	}
  
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_tx_descriptors(priv, queue);
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -7418,6 +7413,25 @@ int stmmac_suspend(struct device *dev)
+@@ -7398,6 +7393,25 @@ int stmmac_suspend(struct device *dev)
  }
  EXPORT_SYMBOL_GPL(stmmac_suspend);
  
@@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  /**
   * stmmac_reset_queues_param - reset queue parameters
   * @priv: device pointer
-@@ -7428,22 +7442,11 @@ static void stmmac_reset_queues_param(st
+@@ -7408,22 +7422,11 @@ static void stmmac_reset_queues_param(st
  	u32 tx_cnt = priv->plat->tx_queues_to_use;
  	u32 queue;
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
index e259668b86..0f8ca79d60 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
@@ -1033,7 +1033,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  			/* Data payload appended into SKB */
  			page_pool_release_page(rx_q->page_pool, buf->sec_page);
-@@ -5768,11 +5768,13 @@ static irqreturn_t stmmac_safety_interru
+@@ -5758,11 +5758,13 @@ static irqreturn_t stmmac_safety_interru
  static irqreturn_t stmmac_msi_intr_tx(int irq, void *data)
  {
  	struct stmmac_tx_queue *tx_q = (struct stmmac_tx_queue *)data;
@@ -1046,9 +1046,9 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 +	dma_conf = container_of(tx_q, struct stmmac_dma_conf, tx_queue[chan]);
 +	priv = container_of(dma_conf, struct stmmac_priv, dma_conf);
  
- 	if (unlikely(!data)) {
- 		netdev_err(priv->dev, "%s: invalid dev pointer\n", __func__);
-@@ -5812,10 +5814,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
+ 	/* Check if adapter is up */
+ 	if (test_bit(STMMAC_DOWN, &priv->state))
+@@ -5797,10 +5799,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
  static irqreturn_t stmmac_msi_intr_rx(int irq, void *data)
  {
  	struct stmmac_rx_queue *rx_q = (struct stmmac_rx_queue *)data;
@@ -1060,9 +1060,9 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 +	dma_conf = container_of(rx_q, struct stmmac_dma_conf, rx_queue[chan]);
 +	priv = container_of(dma_conf, struct stmmac_priv, dma_conf);
  
- 	if (unlikely(!data)) {
- 		netdev_err(priv->dev, "%s: invalid dev pointer\n", __func__);
-@@ -5846,10 +5850,10 @@ static void stmmac_poll_controller(struc
+ 	/* Check if adapter is up */
+ 	if (test_bit(STMMAC_DOWN, &priv->state))
+@@ -5826,10 +5830,10 @@ static void stmmac_poll_controller(struc
  
  	if (priv->plat->multi_msi_en) {
  		for (i = 0; i < priv->plat->rx_queues_to_use; i++)
@@ -1075,7 +1075,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	} else {
  		disable_irq(dev->irq);
  		stmmac_interrupt(dev->irq, dev);
-@@ -6030,34 +6034,34 @@ static int stmmac_rings_status_show(stru
+@@ -6010,34 +6014,34 @@ static int stmmac_rings_status_show(stru
  		return 0;
  
  	for (queue = 0; queue < rx_count; queue++) {
@@ -1116,7 +1116,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		}
  	}
  
-@@ -6404,7 +6408,7 @@ void stmmac_disable_rx_queue(struct stmm
+@@ -6384,7 +6388,7 @@ void stmmac_disable_rx_queue(struct stmm
  
  void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1125,7 +1125,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned long flags;
  	u32 buf_size;
-@@ -6441,7 +6445,7 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6421,7 +6425,7 @@ void stmmac_enable_rx_queue(struct stmma
  				      rx_q->queue_index);
  	} else {
  		stmmac_set_dma_bfsize(priv, priv->ioaddr,
@@ -1134,7 +1134,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  				      rx_q->queue_index);
  	}
  
-@@ -6467,7 +6471,7 @@ void stmmac_disable_tx_queue(struct stmm
+@@ -6447,7 +6451,7 @@ void stmmac_disable_tx_queue(struct stmm
  
  void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1143,7 +1143,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned long flags;
  	int ret;
-@@ -6517,7 +6521,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6497,7 +6501,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1152,7 +1152,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Free the IRQ lines */
  	stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
-@@ -6576,7 +6580,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6556,7 +6560,7 @@ int stmmac_xdp_open(struct net_device *d
  
  	/* DMA RX Channel Configuration */
  	for (chan = 0; chan < rx_cnt; chan++) {
@@ -1161,7 +1161,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  		stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  				    rx_q->dma_rx_phy, chan);
-@@ -6594,7 +6598,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6574,7 +6578,7 @@ int stmmac_xdp_open(struct net_device *d
  					      rx_q->queue_index);
  		} else {
  			stmmac_set_dma_bfsize(priv, priv->ioaddr,
@@ -1170,7 +1170,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  					      rx_q->queue_index);
  		}
  
-@@ -6603,7 +6607,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6583,7 +6587,7 @@ int stmmac_xdp_open(struct net_device *d
  
  	/* DMA TX Channel Configuration */
  	for (chan = 0; chan < tx_cnt; chan++) {
@@ -1179,7 +1179,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  		stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  				    tx_q->dma_tx_phy, chan);
-@@ -6636,7 +6640,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6616,7 +6620,7 @@ int stmmac_xdp_open(struct net_device *d
  
  irq_error:
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1188,7 +1188,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -6663,8 +6667,8 @@ int stmmac_xsk_wakeup(struct net_device
+@@ -6643,8 +6647,8 @@ int stmmac_xsk_wakeup(struct net_device
  	    queue >= priv->plat->tx_queues_to_use)
  		return -EINVAL;
  
@@ -1199,7 +1199,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	ch = &priv->channel[queue];
  
  	if (!rx_q->xsk_pool && !tx_q->xsk_pool)
-@@ -6924,8 +6928,8 @@ int stmmac_reinit_ringparam(struct net_d
+@@ -6904,8 +6908,8 @@ int stmmac_reinit_ringparam(struct net_d
  	if (netif_running(dev))
  		stmmac_release(dev);
  
@@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (netif_running(dev))
  		ret = stmmac_open(dev);
-@@ -7363,7 +7367,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7343,7 +7347,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (priv->eee_enabled) {
  		priv->tx_path_in_lpi_mode = false;
-@@ -7415,7 +7419,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
+@@ -7395,7 +7399,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
  
  static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	rx_q->cur_rx = 0;
  	rx_q->dirty_rx = 0;
-@@ -7423,7 +7427,7 @@ static void stmmac_reset_rx_queue(struct
+@@ -7403,7 +7407,7 @@ static void stmmac_reset_rx_queue(struct
  
  static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
diff --git a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
index e82f6d6943..b3ca0d5c71 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
@@ -1045,7 +1045,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Disable the MAC Rx/Tx */
  	stmmac_mac_set(priv, priv->ioaddr, false);
-@@ -6403,7 +6519,7 @@ void stmmac_disable_rx_queue(struct stmm
+@@ -6383,7 +6499,7 @@ void stmmac_disable_rx_queue(struct stmm
  	spin_unlock_irqrestore(&ch->lock, flags);
  
  	stmmac_stop_rx_dma(priv, queue);
@@ -1054,7 +1054,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
-@@ -6414,21 +6530,21 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6394,21 +6510,21 @@ void stmmac_enable_rx_queue(struct stmma
  	u32 buf_size;
  	int ret;
  
@@ -1080,7 +1080,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  			    rx_q->dma_rx_phy, rx_q->queue_index);
-@@ -6466,7 +6582,7 @@ void stmmac_disable_tx_queue(struct stmm
+@@ -6446,7 +6562,7 @@ void stmmac_disable_tx_queue(struct stmm
  	spin_unlock_irqrestore(&ch->lock, flags);
  
  	stmmac_stop_tx_dma(priv, queue);
@@ -1089,7 +1089,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
-@@ -6476,21 +6592,21 @@ void stmmac_enable_tx_queue(struct stmma
+@@ -6456,21 +6572,21 @@ void stmmac_enable_tx_queue(struct stmma
  	unsigned long flags;
  	int ret;
  
@@ -1115,7 +1115,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  			    tx_q->dma_tx_phy, tx_q->queue_index);
-@@ -6530,7 +6646,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6510,7 +6626,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_stop_all_dma(priv);
  
  	/* Release and free the Rx/Tx resources */
@@ -1124,7 +1124,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Disable the MAC Rx/Tx */
  	stmmac_mac_set(priv, priv->ioaddr, false);
-@@ -6555,14 +6671,14 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6535,14 +6651,14 @@ int stmmac_xdp_open(struct net_device *d
  	u32 chan;
  	int ret;
  
@@ -1141,7 +1141,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	if (ret < 0) {
  		netdev_err(dev, "%s: DMA descriptors initialization failed\n",
  			   __func__);
-@@ -6644,7 +6760,7 @@ irq_error:
+@@ -6624,7 +6740,7 @@ irq_error:
  
  	stmmac_hw_teardown(dev);
  init_error:
@@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  dma_desc_error:
  	return ret;
  }
-@@ -7510,7 +7626,7 @@ int stmmac_resume(struct device *dev)
+@@ -7490,7 +7606,7 @@ int stmmac_resume(struct device *dev)
  	stmmac_reset_queues_param(priv);
  
  	stmmac_free_tx_skbufs(priv);
diff --git a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index aa6c668558..da60334498 100644
--- a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
 --- /dev/null
 +++ b/net/netfilter/xt_FLOWOFFLOAD.c
-@@ -0,0 +1,698 @@
+@@ -0,0 +1,701 @@
 +/*
 + * Copyright (C) 2018-2021 Felix Fietkau <nbd at nbd.name>
 + *
@@ -544,9 +544,14 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +		break;
 +	}
 +
++	if (!dst_hold_safe(this_dst))
++		return -ENOENT;
++
 +	nf_route(xt_net(par), &other_dst, &fl, false, xt_family(par));
-+	if (!other_dst)
++	if (!other_dst) {
++		dst_release(this_dst);
 +		return -ENOENT;
++	}
 +
 +	nf_default_forward_path(route, this_dst, dir, devs);
 +	nf_default_forward_path(route, other_dst, !dir, devs);
@@ -622,8 +627,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (!flow)
 +		goto err_flow_alloc;
 +
-+	if (flow_offload_route_init(flow, &route) < 0)
-+		goto err_flow_add;
++	flow_offload_route_init(flow, &route);
 +
 +	if (tcph) {
 +		ct->proto.tcp.seen[0].flags |= IP_CT_TCP_FLAG_BE_LIBERAL;
@@ -642,13 +646,12 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	xt_flowoffload_check_device(table, devs[0]);
 +	xt_flowoffload_check_device(table, devs[1]);
 +
-+	dst_release(route.tuple[!dir].dst);
-+
 +	return XT_CONTINUE;
 +
 +err_flow_add:
 +	flow_offload_free(flow);
 +err_flow_alloc:
++	dst_release(route.tuple[dir].dst);
 +	dst_release(route.tuple[!dir].dst);
 +err_flow_route:
 +	clear_bit(IPS_OFFLOAD_BIT, &ct->status);
@@ -807,7 +810,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <net/netfilter/nf_flow_table.h>
  #include <net/netfilter/nf_conntrack.h>
  #include <net/netfilter/nf_conntrack_core.h>
-@@ -380,8 +379,7 @@ flow_offload_lookup(struct nf_flowtable
+@@ -373,8 +372,7 @@ flow_offload_lookup(struct nf_flowtable
  }
  EXPORT_SYMBOL_GPL(flow_offload_lookup);
  
@@ -817,7 +820,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		      void (*iter)(struct nf_flowtable *flowtable,
  				   struct flow_offload *flow, void *data),
  		      void *data)
-@@ -435,6 +433,7 @@ static void nf_flow_offload_gc_step(stru
+@@ -428,6 +426,7 @@ static void nf_flow_offload_gc_step(stru
  		nf_flow_offload_stats(flow_table, flow);
  	}
  }
diff --git a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index df5bef9fcd..8c75554033 100644
--- a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
 
 --- a/net/netfilter/nf_flow_table_core.c
 +++ b/net/netfilter/nf_flow_table_core.c
-@@ -613,13 +613,41 @@ void nf_flow_table_free(struct nf_flowta
+@@ -606,13 +606,41 @@ void nf_flow_table_free(struct nf_flowta
  }
  EXPORT_SYMBOL_GPL(nf_flow_table_free);
  
@@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -451,47 +451,14 @@ static struct nft_expr_type nft_flow_off
+@@ -455,47 +455,14 @@ static struct nft_expr_type nft_flow_off
  	.owner		= THIS_MODULE,
  };
  
diff --git a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 69ff9d5797..196beffecf 100644
--- a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7760,7 +7760,7 @@ static int nft_register_flowtable_net_ho
+@@ -7763,7 +7763,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);
diff --git a/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch b/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
index f2b7ed4453..355a0fa8bb 100644
--- a/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
+++ b/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
@@ -116,7 +116,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  
  	netif_tx_disable(dev);
  
-@@ -6655,7 +6648,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6635,7 +6628,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -125,7 +125,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  
  	/* Free the IRQ lines */
  	stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
-@@ -6750,8 +6743,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6730,8 +6723,7 @@ int stmmac_xdp_open(struct net_device *d
  		stmmac_set_tx_tail_ptr(priv, priv->ioaddr,
  				       tx_q->tx_tail_addr, chan);
  
@@ -135,7 +135,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  	}
  
  	/* Enable the MAC Rx/Tx */
-@@ -6774,7 +6766,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6754,7 +6746,7 @@ int stmmac_xdp_open(struct net_device *d
  
  irq_error:
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -144,7 +144,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -7501,7 +7493,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7481,7 +7473,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
diff --git a/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch b/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
index e6a1361022..00917331c2 100644
--- a/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
+++ b/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
@@ -51,7 +51,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  #define read_vpe_c0_status()		mftc0(12, 0)
 --- a/arch/mips/include/asm/vpe.h
 +++ b/arch/mips/include/asm/vpe.h
-@@ -124,4 +124,13 @@ void cleanup_tc(struct tc *tc);
+@@ -123,4 +123,13 @@ void cleanup_tc(struct tc *tc);
  
  int __init vpe_module_init(void);
  void __exit vpe_module_exit(void);
@@ -75,7 +75,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  
  	/* check we are the Master VPE */
  	local_irq_save(flags);
-@@ -416,6 +417,8 @@ int __init vpe_module_init(void)
+@@ -415,6 +416,8 @@ int __init vpe_module_init(void)
  			}
  
  			v->ntcs = hw_tcs - aprp_cpu_index();
@@ -84,7 +84,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  
  			/* add the tc to the list of this vpe's tc's. */
  			list_add(&t->tc, &v->tc);
-@@ -519,3 +522,47 @@ void __exit vpe_module_exit(void)
+@@ -518,3 +521,47 @@ void __exit vpe_module_exit(void)
  			release_vpe(v);
  	}
  }
@@ -178,7 +178,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  {
 --- a/arch/mips/lantiq/prom.c
 +++ b/arch/mips/lantiq/prom.c
-@@ -34,10 +34,14 @@ unsigned long physical_memsize = 0L;
+@@ -28,10 +28,14 @@ EXPORT_SYMBOL_GPL(ebu_lock);
   */
  static struct ltq_soc_info soc_info;
  
diff --git a/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch b/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
index 6562dc8bda..015acabcfe 100644
--- a/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
+++ b/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
@@ -10,7 +10,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
 
 --- a/arch/mips/kernel/vpe-mt.c
 +++ b/arch/mips/kernel/vpe-mt.c
-@@ -132,7 +132,10 @@ int vpe_run(struct vpe *v)
+@@ -131,7 +131,10 @@ int vpe_run(struct vpe *v)
  	 * kernels need to turn it on, even if that wasn't the pre-dvpe() state.
  	 */
  #ifdef CONFIG_SMP
diff --git a/target/linux/lantiq/patches-5.15/0320-v6.1-MIPS-lantiq-enable-all-hardware-interrupts-on-second.patch b/target/linux/lantiq/patches-5.15/0320-v6.1-MIPS-lantiq-enable-all-hardware-interrupts-on-second.patch
index d83a3616b3..d98664c478 100644
--- a/target/linux/lantiq/patches-5.15/0320-v6.1-MIPS-lantiq-enable-all-hardware-interrupts-on-second.patch
+++ b/target/linux/lantiq/patches-5.15/0320-v6.1-MIPS-lantiq-enable-all-hardware-interrupts-on-second.patch
@@ -39,7 +39,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
 
 --- a/arch/mips/lantiq/prom.c
 +++ b/arch/mips/lantiq/prom.c
-@@ -37,6 +37,14 @@ static struct ltq_soc_info soc_info;
+@@ -31,6 +31,14 @@ static struct ltq_soc_info soc_info;
  /* for Multithreading (APRP), vpe.c will use it */
  unsigned long cp0_memsize;
  
@@ -54,7 +54,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
  const char *get_system_type(void)
  {
  	return soc_info.sys_type;
-@@ -93,6 +101,17 @@ void __init device_tree_init(void)
+@@ -87,6 +95,17 @@ void __init device_tree_init(void)
  	unflatten_and_copy_device_tree();
  }
  
@@ -72,7 +72,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
  void __init prom_init(void)
  {
  	/* call the soc specific detetcion code and get it to fill soc_info */
-@@ -104,7 +123,10 @@ void __init prom_init(void)
+@@ -98,7 +117,10 @@ void __init prom_init(void)
  	prom_init_cmdline();
  
  #if defined(CONFIG_MIPS_MT_SMP)
diff --git a/target/linux/mediatek/patches-5.15/410-bt-mtk-serial-fix.patch b/target/linux/mediatek/patches-5.15/410-bt-mtk-serial-fix.patch
index 3f4597c65d..3e2db443db 100644
--- a/target/linux/mediatek/patches-5.15/410-bt-mtk-serial-fix.patch
+++ b/target/linux/mediatek/patches-5.15/410-bt-mtk-serial-fix.patch
@@ -19,7 +19,7 @@
  	},
  	[PORT_NPCM] = {
  		.name		= "Nuvoton 16550",
-@@ -2766,6 +2766,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2752,6 +2752,11 @@ serial8250_do_set_termios(struct uart_po
  	unsigned long flags;
  	unsigned int baud, quot, frac = 0;
  



From lede-commits at lists.infradead.org  Fri Mar  8 02:29:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 05:29:42 -0500
Subject: [openwrt/openwrt]  kernel: Remove unused schedulers
In-Reply-To: <170989377906.2571401.3833643534671296260@git-01.infra.openwrt.org>
References: <170989377906.2571401.3833643534671296260@git-01.infra.openwrt.org>
Message-ID: <mailman.14602.1709893788.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/7f1d043b23f6ebf22b345366b430095f2e3ac5db

commit 7f1d043b23f6ebf22b345366b430095f2e3ac5db
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sun Mar 3 12:34:19 2024 +0100

    kernel: Remove unused schedulers
    
    These schedulers were removed in kernel 5.15.150 and 6.1.180.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    (cherry picked from commit cd450923ab066ce35e8ce55340e66986f14a42d8)
---
 target/linux/generic/config-5.15 | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/target/linux/generic/config-5.15 b/target/linux/generic/config-5.15
index 214a1e6ecd..aaffee3329 100644
--- a/target/linux/generic/config-5.15
+++ b/target/linux/generic/config-5.15
@@ -4133,15 +4133,12 @@ CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_NET_RX_BUSY_POLL=y
 # CONFIG_NET_SB1000 is not set
 CONFIG_NET_SCHED=y
-# CONFIG_NET_SCH_ATM is not set
 # CONFIG_NET_SCH_CAKE is not set
-# CONFIG_NET_SCH_CBQ is not set
 # CONFIG_NET_SCH_CBS is not set
 # CONFIG_NET_SCH_CHOKE is not set
 # CONFIG_NET_SCH_CODEL is not set
 CONFIG_NET_SCH_DEFAULT=y
 # CONFIG_NET_SCH_DRR is not set
-# CONFIG_NET_SCH_DSMARK is not set
 # CONFIG_NET_SCH_ETF is not set
 # CONFIG_NET_SCH_ETS is not set
 CONFIG_NET_SCH_FIFO=y



From lede-commits at lists.infradead.org  Fri Mar  8 02:29:39 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 05:29:39 -0500
Subject: [openwrt/openwrt]  kernel: bump 5.15 to 5.15.149
In-Reply-To: <170989377906.2571401.3833643534671296260@git-01.infra.openwrt.org>
References: <170989377906.2571401.3833643534671296260@git-01.infra.openwrt.org>
Message-ID: <mailman.14603.1709893793.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/4c1d13e995c3f19054caba8b51b9114f664e3f84

commit 4c1d13e995c3f19054caba8b51b9114f664e3f84
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sat Mar 2 19:14:22 2024 +0100

    kernel: bump 5.15 to 5.15.149
    
    Removed because it is upstream:
    generic/pending-5.15/540-ksmbd-only-v2-leases-handle-the-directory.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=81ea755b8fa57ce186f56f14b709cf491c2a5505
    
    Manually Adapted the following patches:
    ath79/patches-5.15/900-unaligned_access_hacks.patch
    ipq806x/patches-5.15/113-v5.19-03-PM-devfreq-Rework-freq_table-to-be-local-to-devfr.patch
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    (cherry picked from commit 26d1d5240356e2c286ca87dbaea3308c0e9bc97f)
---
 include/kernel-5.15                                |  4 +-
 .../patches-5.15/910-unaligned_access_hacks.patch  |  7 ++-
 .../ath79/patches-5.15/920-mikrotik-rb4xx.patch    |  2 +-
 .../patches-5.15/950-0064-Add-dwc_otg-driver.patch |  2 +-
 ...950-0070-MMC-added-alternative-MMC-driver.patch |  6 +-
 ...enet-Better-coalescing-parameter-defaults.patch |  4 +-
 ...nable-link-energy-detect-powerdown-for-ex.patch |  2 +-
 ...-device-quirks-for-Freeway-Airmouse-T3-an.patch |  4 +-
 ...mgenet-Workaround-2-for-Pi4-Ethernet-fail.patch |  2 +-
 ...ng-fbtft-Add-support-for-display-variants.patch |  6 +-
 ...292-net-bcmgenet-Reset-RBUF-on-first-open.patch |  8 +--
 ...i-DPI-interface-in-mode6-for-18-bit-color.patch |  2 +-
 ...dd-device-quirks-for-A4Tech-FHD-1080p-web.patch |  2 +-
 ...imple-Add-a-timing-for-the-Raspberry-Pi-7.patch |  2 +-
 ...rm-panel-simple-add-Geekworm-MZP280-Panel.patch |  2 +-
 ...950-0789-drm-Add-chroma-siting-properties.patch |  2 +-
 ...v-Fix-unregistering-of-framebuffers-witho.patch |  2 +-
 ...v-Hot-unplug-firmware-fb-devices-on-force.patch |  6 +-
 ...on-t-do-single-sector-reads-during-recove.patch |  2 +-
 ...x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch |  2 +-
 ...host-xhci-mvebu-make-USB-3.0-PHY-optional.patch |  2 +-
 ...nvert-users-of-bitmap_foo-to-linkmode_foo.patch |  2 +-
 ...t-stmicro-stmmac-move-queue-reset-to-dedi.patch |  4 +-
 ...t-stmicro-stmmac-move-dma-conf-to-dedicat.patch |  6 +-
 ...t-stmicro-stmmac-generate-stmmac-dma-conf.patch |  2 +-
 .../hack-5.15/410-block-fit-partition-parser.patch |  2 +-
 .../pending-5.15/203-kallsyms_uncompressed.patch   |  2 +-
 .../666-Add-support-for-MAP-E-FMRs-mesh-mode.patch | 28 +++++-----
 ...ft_flow_offload-handle-netdevice-events-f.patch |  2 +-
 ...f_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 ...page-pool-and-page-referenced-frags-in-GR.patch |  2 +-
 .../790-bus-mhi-core-add-SBL-state-callback.patch  |  2 +-
 .../810-pci_disable_common_quirks.patch            |  6 +-
 ...Export-devfreq_get_freq_range-symbol-with.patch | 10 ++--
 ...eq-Rework-freq_table-to-be-local-to-devfr.patch | 64 +++++++++++-----------
 ...freq-Mute-warning-on-governor-PROBE_DEFER.patch |  2 +-
 ...-net-stmmac-Use-hrtimer-for-TX-coalescing.patch |  2 +-
 ...-i2c-move-drivers-from-strlcpy-to-strscpy.patch |  4 +-
 ...-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch |  2 +-
 ...rk-for-Gateworks-PLX-PEX860x-switch-with-.patch |  2 +-
 40 files changed, 110 insertions(+), 107 deletions(-)

diff --git a/include/kernel-5.15 b/include/kernel-5.15
index d93ae194b8..9ab2d04fc6 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .148
-LINUX_KERNEL_HASH-5.15.148 = c48575c97fd9f4767cbe50a13b1b2b40ee42830aba3182fabd35a03259a6e5d8
+LINUX_VERSION-5.15 = .149
+LINUX_KERNEL_HASH-5.15.149 = bd84809a367eb400eb04e0e70294e6ba12fc03b6bfb5a7dfaca548f8947501b0
diff --git a/target/linux/ath79/patches-5.15/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-5.15/910-unaligned_access_hacks.patch
index 7bd6ae8b56..3c15a016ff 100644
--- a/target/linux/ath79/patches-5.15/910-unaligned_access_hacks.patch
+++ b/target/linux/ath79/patches-5.15/910-unaligned_access_hacks.patch
@@ -86,7 +86,7 @@ SVN-Revision: 35130
  	} while (word != stop);
  
  	return csum_fold(csum);
-@@ -182,73 +186,6 @@ static inline __sum16 ip_compute_csum(co
+@@ -182,74 +186,6 @@ static inline __sum16 ip_compute_csum(co
  	return csum_fold(csum_partial(buff, len, 0));
  }
  
@@ -152,7 +152,8 @@ SVN-Revision: 35130
 -	"	.set	pop"
 -	: "=&r" (sum), "=&r" (tmp)
 -	: "r" (saddr), "r" (daddr),
--	  "0" (htonl(len)), "r" (htonl(proto)), "r" (sum));
+-	  "0" (htonl(len)), "r" (htonl(proto)), "r" (sum)
+-	: "memory");
 -
 -	return csum_fold(sum);
 -}
@@ -336,7 +337,7 @@ SVN-Revision: 35130
  #endif /* _LINUX_TYPES_H */
 --- a/net/ipv4/af_inet.c
 +++ b/net/ipv4/af_inet.c
-@@ -1477,8 +1477,8 @@ struct sk_buff *inet_gro_receive(struct
+@@ -1480,8 +1480,8 @@ struct sk_buff *inet_gro_receive(struct
  	if (unlikely(ip_fast_csum((u8 *)iph, 5)))
  		goto out_unlock;
  
diff --git a/target/linux/ath79/patches-5.15/920-mikrotik-rb4xx.patch b/target/linux/ath79/patches-5.15/920-mikrotik-rb4xx.patch
index 4743ad46e2..16c8f11af7 100644
--- a/target/linux/ath79/patches-5.15/920-mikrotik-rb4xx.patch
+++ b/target/linux/ath79/patches-5.15/920-mikrotik-rb4xx.patch
@@ -45,7 +45,7 @@ Submitted-by: Christopher Hill <ch6574 at gmail.com>
 
 --- a/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
-@@ -2176,6 +2176,14 @@ config RAVE_SP_CORE
+@@ -2177,6 +2177,14 @@ config RAVE_SP_CORE
  	  Select this to get support for the Supervisory Processor
  	  device found on several devices in RAVE line of hardware.
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0064-Add-dwc_otg-driver.patch b/target/linux/bcm27xx/patches-5.15/950-0064-Add-dwc_otg-driver.patch
index 49283f5563..b07d81aa2e 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0064-Add-dwc_otg-driver.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0064-Add-dwc_otg-driver.patch
@@ -1123,7 +1123,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
  }
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -5659,7 +5659,7 @@ static void port_event(struct usb_hub *h
+@@ -5667,7 +5667,7 @@ static void port_event(struct usb_hub *h
  		port_dev->over_current_count++;
  		port_over_current_notify(port_dev);
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0070-MMC-added-alternative-MMC-driver.patch b/target/linux/bcm27xx/patches-5.15/950-0070-MMC-added-alternative-MMC-driver.patch
index 848ac83e3a..bc655e9274 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0070-MMC-added-alternative-MMC-driver.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0070-MMC-added-alternative-MMC-driver.patch
@@ -244,7 +244,7 @@ bcm2835-mmc: uninitialized_var is no more
  static inline int mmc_blk_part_switch(struct mmc_card *card,
  				      unsigned int part_type);
  static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
-@@ -2946,6 +2953,8 @@ static int mmc_blk_probe(struct mmc_card
+@@ -2986,6 +2993,8 @@ static int mmc_blk_probe(struct mmc_card
  {
  	struct mmc_blk_data *md;
  	int ret = 0;
@@ -253,7 +253,7 @@ bcm2835-mmc: uninitialized_var is no more
  
  	/*
  	 * Check that the card supports the command class(es) we need.
-@@ -2953,7 +2962,16 @@ static int mmc_blk_probe(struct mmc_card
+@@ -2993,7 +3002,16 @@ static int mmc_blk_probe(struct mmc_card
  	if (!(card->csd.cmdclass & CCC_BLOCK_READ))
  		return -ENODEV;
  
@@ -271,7 +271,7 @@ bcm2835-mmc: uninitialized_var is no more
  
  	card->complete_wq = alloc_workqueue("mmc_complete",
  					WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
-@@ -2968,6 +2986,17 @@ static int mmc_blk_probe(struct mmc_card
+@@ -3008,6 +3026,17 @@ static int mmc_blk_probe(struct mmc_card
  		goto out_free;
  	}
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0144-bcmgenet-Better-coalescing-parameter-defaults.patch b/target/linux/bcm27xx/patches-5.15/950-0144-bcmgenet-Better-coalescing-parameter-defaults.patch
index ebffb634cd..56804764e8 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0144-bcmgenet-Better-coalescing-parameter-defaults.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0144-bcmgenet-Better-coalescing-parameter-defaults.patch
@@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -2618,7 +2618,7 @@ static void bcmgenet_init_tx_ring(struct
+@@ -2615,7 +2615,7 @@ static void bcmgenet_init_tx_ring(struct
  
  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
@@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  	/* Disable rate control for now */
  	bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
  				  TDMA_FLOW_PERIOD);
-@@ -4086,9 +4086,12 @@ static int bcmgenet_probe(struct platfor
+@@ -4083,9 +4083,12 @@ static int bcmgenet_probe(struct platfor
  	netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
  
  	/* Set default coalescing parameters */
diff --git a/target/linux/bcm27xx/patches-5.15/950-0145-net-genet-enable-link-energy-detect-powerdown-for-ex.patch b/target/linux/bcm27xx/patches-5.15/950-0145-net-genet-enable-link-energy-detect-powerdown-for-ex.patch
index cde33a576e..0e1640304b 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0145-net-genet-enable-link-energy-detect-powerdown-for-ex.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0145-net-genet-enable-link-energy-detect-powerdown-for-ex.patch
@@ -20,7 +20,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-@@ -286,6 +286,8 @@ int bcmgenet_mii_probe(struct net_device
+@@ -292,6 +292,8 @@ int bcmgenet_mii_probe(struct net_device
  	/* Communicate the integrated PHY revision */
  	if (priv->internal_phy)
  		phy_flags = priv->gphy_rev;
diff --git a/target/linux/bcm27xx/patches-5.15/950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch b/target/linux/bcm27xx/patches-5.15/950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch
index 0b6ff1a70a..4ec54a03ee 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch
@@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
 
 --- a/drivers/hid/hid-ids.h
 +++ b/drivers/hid/hid-ids.h
-@@ -225,6 +225,9 @@
+@@ -226,6 +226,9 @@
  #define USB_VENDOR_ID_BAANTO		0x2453
  #define USB_DEVICE_ID_BAANTO_MT_190W2	0x0100
  
@@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
  #define USB_VENDOR_ID_BELKIN		0x050d
  #define USB_DEVICE_ID_FLIP_KVM		0x3201
  
-@@ -1322,6 +1325,9 @@
+@@ -1323,6 +1326,9 @@
  #define USB_VENDOR_ID_XAT	0x2505
  #define USB_DEVICE_ID_XAT_CSR	0x0220
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0165-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch b/target/linux/bcm27xx/patches-5.15/950-0165-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch
index 318681ff91..1598ffef2d 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0165-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0165-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch
@@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  
  static inline void bcmgenet_writel(u32 value, void __iomem *offset)
  {
-@@ -2449,6 +2452,11 @@ static void reset_umac(struct bcmgenet_p
+@@ -2446,6 +2449,11 @@ static void reset_umac(struct bcmgenet_p
  	bcmgenet_rbuf_ctrl_set(priv, 0);
  	udelay(10);
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0290-staging-fbtft-Add-support-for-display-variants.patch b/target/linux/bcm27xx/patches-5.15/950-0290-staging-fbtft-Add-support-for-display-variants.patch
index ec3b301be1..aa39f9f7de 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0290-staging-fbtft-Add-support-for-display-variants.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0290-staging-fbtft-Add-support-for-display-variants.patch
@@ -95,7 +95,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  
  #include <video/mipi_display.h>
  
-@@ -1184,6 +1186,7 @@ static struct fbtft_platform_data *fbtft
+@@ -1186,6 +1188,7 @@ static struct fbtft_platform_data *fbtft
   * @display: Display properties
   * @sdev: SPI device
   * @pdev: Platform device
@@ -103,7 +103,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
   *
   * Allocates, initializes and registers a framebuffer
   *
-@@ -1193,12 +1196,15 @@ static struct fbtft_platform_data *fbtft
+@@ -1195,12 +1198,15 @@ static struct fbtft_platform_data *fbtft
   */
  int fbtft_probe_common(struct fbtft_display *display,
  		       struct spi_device *sdev,
@@ -120,7 +120,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  	int ret;
  
  	if (sdev)
-@@ -1214,6 +1220,14 @@ int fbtft_probe_common(struct fbtft_disp
+@@ -1216,6 +1222,14 @@ int fbtft_probe_common(struct fbtft_disp
  		pdata = fbtft_properties_read(dev);
  		if (IS_ERR(pdata))
  			return PTR_ERR(pdata);
diff --git a/target/linux/bcm27xx/patches-5.15/950-0292-net-bcmgenet-Reset-RBUF-on-first-open.patch b/target/linux/bcm27xx/patches-5.15/950-0292-net-bcmgenet-Reset-RBUF-on-first-open.patch
index 21cd9dfc03..eb6b61a2a0 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0292-net-bcmgenet-Reset-RBUF-on-first-open.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0292-net-bcmgenet-Reset-RBUF-on-first-open.patch
@@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -3267,7 +3267,7 @@ static void bcmgenet_get_hw_addr(struct
+@@ -3264,7 +3264,7 @@ static void bcmgenet_get_hw_addr(struct
  }
  
  /* Returns a reusable dma control register value */
@@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  {
  	unsigned int i;
  	u32 reg;
-@@ -3292,6 +3292,14 @@ static u32 bcmgenet_dma_disable(struct b
+@@ -3289,6 +3289,14 @@ static u32 bcmgenet_dma_disable(struct b
  	udelay(10);
  	bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH);
  
@@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  	return dma_ctrl;
  }
  
-@@ -3355,8 +3363,8 @@ static int bcmgenet_open(struct net_devi
+@@ -3352,8 +3360,8 @@ static int bcmgenet_open(struct net_devi
  
  	bcmgenet_set_hw_addr(priv, dev->dev_addr);
  
@@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  
  	/* Reinitialize TDMA and RDMA and SW housekeeping */
  	ret = bcmgenet_init_dma(priv);
-@@ -4215,7 +4223,7 @@ static int bcmgenet_resume(struct device
+@@ -4212,7 +4220,7 @@ static int bcmgenet_resume(struct device
  			bcmgenet_hfb_create_rxnfc_filter(priv, rule);
  
  	/* Disable RX/TX DMA and flush TX queues */
diff --git a/target/linux/bcm27xx/patches-5.15/950-0421-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch b/target/linux/bcm27xx/patches-5.15/950-0421-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
index c39ae5b395..7ce40f3276 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0421-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0421-Support-RPi-DPI-interface-in-mode6-for-18-bit-color.patch
@@ -157,7 +157,7 @@ Signed-off-by: Joerg Quinten <aBUGSworstnightmare at gmail.com>
  static const struct drm_display_mode innolux_at070tn92_mode = {
  	.clock = 33333,
  	.hdisplay = 800,
-@@ -4667,6 +4699,9 @@ static const struct of_device_id platfor
+@@ -4669,6 +4701,9 @@ static const struct of_device_id platfor
  		.compatible = "innolux,at043tn24",
  		.data = &innolux_at043tn24,
  	}, {
diff --git a/target/linux/bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch b/target/linux/bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch
index 6dc533b3fe..50fbab5f78 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch
@@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/sound/usb/quirks.c
 +++ b/sound/usb/quirks.c
-@@ -1888,6 +1888,8 @@ static const struct usb_audio_quirk_flag
+@@ -1892,6 +1892,8 @@ static const struct usb_audio_quirk_flag
  		   QUIRK_FLAG_GENERIC_IMPLICIT_FB),
  	DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
  		   QUIRK_FLAG_GENERIC_IMPLICIT_FB),
diff --git a/target/linux/bcm27xx/patches-5.15/950-0479-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch b/target/linux/bcm27xx/patches-5.15/950-0479-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch
index 72cefe864e..de1e0c4118 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0479-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0479-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch
@@ -47,7 +47,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
  static const struct display_timing rocktech_rk070er9427_timing = {
  	.pixelclock = { 26400000, 33300000, 46800000 },
  	.hactive = { 800, 800, 800 },
-@@ -4846,6 +4871,9 @@ static const struct of_device_id platfor
+@@ -4848,6 +4873,9 @@ static const struct of_device_id platfor
  		.compatible = "qishenglong,gopher2b-lcd",
  		.data = &qishenglong_gopher2b_lcd,
  	}, {
diff --git a/target/linux/bcm27xx/patches-5.15/950-0686-drm-panel-simple-add-Geekworm-MZP280-Panel.patch b/target/linux/bcm27xx/patches-5.15/950-0686-drm-panel-simple-add-Geekworm-MZP280-Panel.patch
index 1d450282f2..368d06bddf 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0686-drm-panel-simple-add-Geekworm-MZP280-Panel.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0686-drm-panel-simple-add-Geekworm-MZP280-Panel.patch
@@ -46,7 +46,7 @@ Acked-by: Maxime Ripard <maxime at cerno.tech>
  static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
  	.clock = 9000,
  	.hdisplay = 480,
-@@ -4709,6 +4735,9 @@ static const struct of_device_id platfor
+@@ -4711,6 +4737,9 @@ static const struct of_device_id platfor
  		.compatible = "friendlyarm,hd702e",
  		.data = &friendlyarm_hd702e,
  	}, {
diff --git a/target/linux/bcm27xx/patches-5.15/950-0789-drm-Add-chroma-siting-properties.patch b/target/linux/bcm27xx/patches-5.15/950-0789-drm-Add-chroma-siting-properties.patch
index a6e03d3b6b..8fc79560d4 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0789-drm-Add-chroma-siting-properties.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0789-drm-Add-chroma-siting-properties.patch
@@ -106,7 +106,7 @@ Signed-off-by: Dom Cobley <popcornmix at gmail.com>
   * @tests: bitmask of tests to run
 --- a/include/drm/drm_color_mgmt.h
 +++ b/include/drm/drm_color_mgmt.h
-@@ -93,6 +93,9 @@ int drm_plane_create_color_properties(st
+@@ -94,6 +94,9 @@ int drm_plane_create_color_properties(st
  				      enum drm_color_encoding default_encoding,
  				      enum drm_color_range default_range);
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0880-Revert-fbdev-Fix-unregistering-of-framebuffers-witho.patch b/target/linux/bcm27xx/patches-5.15/950-0880-Revert-fbdev-Fix-unregistering-of-framebuffers-witho.patch
index 7c452f7c82..d34f37b3be 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0880-Revert-fbdev-Fix-unregistering-of-framebuffers-witho.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0880-Revert-fbdev-Fix-unregistering-of-framebuffers-witho.patch
@@ -11,7 +11,7 @@ This reverts commit 2388f826cdc9af2651991adc0feb79de9bdf2232.
 
 --- a/drivers/video/fbdev/core/fbmem.c
 +++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1631,14 +1631,7 @@ static void do_remove_conflicting_frameb
+@@ -1635,14 +1635,7 @@ static void do_remove_conflicting_frameb
  			 * If it's not a platform device, at least print a warning. A
  			 * fix would add code to remove the device from the system.
  			 */
diff --git a/target/linux/bcm27xx/patches-5.15/950-0881-Revert-fbdev-Hot-unplug-firmware-fb-devices-on-force.patch b/target/linux/bcm27xx/patches-5.15/950-0881-Revert-fbdev-Hot-unplug-firmware-fb-devices-on-force.patch
index a9a3998b87..92a4b2206a 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0881-Revert-fbdev-Hot-unplug-firmware-fb-devices-on-force.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0881-Revert-fbdev-Hot-unplug-firmware-fb-devices-on-force.patch
@@ -20,7 +20,7 @@ This reverts commit c894ac44786cfed383a6c6b20c1bfb12eb96018a.
  #include <linux/seq_file.h>
  #include <linux/console.h>
  #include <linux/kmod.h>
-@@ -1608,36 +1607,18 @@ static void do_remove_conflicting_frameb
+@@ -1612,36 +1611,18 @@ static void do_remove_conflicting_frameb
  	/* check all firmware fbs and kick off if the base addr overlaps */
  	for_each_registered_fb(i) {
  		struct apertures_struct *gen_aper;
@@ -58,7 +58,7 @@ This reverts commit c894ac44786cfed383a6c6b20c1bfb12eb96018a.
  		}
  	}
  }
-@@ -1975,13 +1956,9 @@ EXPORT_SYMBOL(register_framebuffer);
+@@ -1979,13 +1960,9 @@ EXPORT_SYMBOL(register_framebuffer);
  void
  unregister_framebuffer(struct fb_info *fb_info)
  {
@@ -76,7 +76,7 @@ This reverts commit c894ac44786cfed383a6c6b20c1bfb12eb96018a.
  
 --- a/include/linux/fb.h
 +++ b/include/linux/fb.h
-@@ -502,7 +502,6 @@ struct fb_info {
+@@ -513,7 +513,6 @@ struct fb_info {
  	} *apertures;
  
  	bool skip_vt_switch; /* no VT switch on suspend/resume required */
diff --git a/target/linux/bcm27xx/patches-5.15/950-0914-mmc-block-Don-t-do-single-sector-reads-during-recove.patch b/target/linux/bcm27xx/patches-5.15/950-0914-mmc-block-Don-t-do-single-sector-reads-during-recove.patch
index 604acfacc0..4b2d83bb9a 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0914-mmc-block-Don-t-do-single-sector-reads-during-recove.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0914-mmc-block-Don-t-do-single-sector-reads-during-recove.patch
@@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/mmc/core/block.c
 +++ b/drivers/mmc/core/block.c
-@@ -1890,7 +1890,11 @@ static void mmc_blk_mq_rw_recovery(struc
+@@ -1930,7 +1930,11 @@ static void mmc_blk_mq_rw_recovery(struc
  		return;
  	}
  
diff --git a/target/linux/generic/backport-5.15/020-v6.1-02-mm-x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch b/target/linux/generic/backport-5.15/020-v6.1-02-mm-x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch
index 27c85a333b..2ea2e2497a 100644
--- a/target/linux/generic/backport-5.15/020-v6.1-02-mm-x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch
+++ b/target/linux/generic/backport-5.15/020-v6.1-02-mm-x86-add-CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG.patch
@@ -73,7 +73,7 @@ Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
 
 --- a/arch/Kconfig
 +++ b/arch/Kconfig
-@@ -1298,6 +1298,14 @@ config ARCH_HAS_ELFCORE_COMPAT
+@@ -1299,6 +1299,14 @@ config ARCH_HAS_ELFCORE_COMPAT
  config ARCH_HAS_PARANOID_L1D_FLUSH
  	bool
  
diff --git a/target/linux/generic/backport-5.15/346-v5.18-02-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch b/target/linux/generic/backport-5.15/346-v5.18-02-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
index 1e8afb7bbf..8cd86e0fcb 100644
--- a/target/linux/generic/backport-5.15/346-v5.18-02-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
+++ b/target/linux/generic/backport-5.15/346-v5.18-02-Revert-usb-host-xhci-mvebu-make-USB-3.0-PHY-optional.patch
@@ -138,7 +138,7 @@ Signed-off-by: Vinod Koul <vkoul at kernel.org>
  	.init_quirk = xhci_mvebu_a3700_init_quirk,
  };
  
-@@ -341,14 +330,7 @@ static int xhci_plat_probe(struct platfo
+@@ -344,14 +333,7 @@ static int xhci_plat_probe(struct platfo
  
  	hcd->tpl_support = of_usb_host_tpl_support(sysdev->of_node);
  	xhci->shared_hcd->tpl_support = hcd->tpl_support;
diff --git a/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch b/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch
index eca3c7ff9f..5737da6e10 100644
--- a/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch
+++ b/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch
@@ -726,7 +726,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	 * to advertise both, only report advertising at 2500BaseX.
 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
 +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
-@@ -6352,15 +6352,14 @@ static void mvpp2_phylink_validate(struc
+@@ -6377,15 +6377,14 @@ static void mvpp2_phylink_validate(struc
  		goto empty_set;
  	}
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
index 931c589cfa..7742c4a958 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_tx_descriptors(priv, queue);
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -7415,6 +7410,25 @@ int stmmac_suspend(struct device *dev)
+@@ -7418,6 +7413,25 @@ int stmmac_suspend(struct device *dev)
  }
  EXPORT_SYMBOL_GPL(stmmac_suspend);
  
@@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  /**
   * stmmac_reset_queues_param - reset queue parameters
   * @priv: device pointer
-@@ -7425,22 +7439,11 @@ static void stmmac_reset_queues_param(st
+@@ -7428,22 +7442,11 @@ static void stmmac_reset_queues_param(st
  	u32 tx_cnt = priv->plat->tx_queues_to_use;
  	u32 queue;
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
index c59a5d1fe1..e259668b86 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
@@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (netif_running(dev))
  		ret = stmmac_open(dev);
-@@ -7360,7 +7364,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7363,7 +7367,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (priv->eee_enabled) {
  		priv->tx_path_in_lpi_mode = false;
-@@ -7412,7 +7416,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
+@@ -7415,7 +7419,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
  
  static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	rx_q->cur_rx = 0;
  	rx_q->dirty_rx = 0;
-@@ -7420,7 +7424,7 @@ static void stmmac_reset_rx_queue(struct
+@@ -7423,7 +7427,7 @@ static void stmmac_reset_rx_queue(struct
  
  static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
diff --git a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
index bdf8b8585e..e82f6d6943 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
@@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  dma_desc_error:
  	return ret;
  }
-@@ -7507,7 +7623,7 @@ int stmmac_resume(struct device *dev)
+@@ -7510,7 +7626,7 @@ int stmmac_resume(struct device *dev)
  	stmmac_reset_queues_param(priv);
  
  	stmmac_free_tx_skbufs(priv);
diff --git a/target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch b/target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch
index 13a16b6fa0..25935e9d79 100644
--- a/target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch
+++ b/target/linux/generic/hack-5.15/410-block-fit-partition-parser.patch
@@ -105,7 +105,7 @@ Subject: [PATCH] kernel: add block fit partition parser
  	/* everything is up and running, commence */
  	err = xa_insert(&disk->part_tbl, partno, bdev, GFP_KERNEL);
  	if (err)
-@@ -595,6 +607,11 @@ static bool blk_add_partition(struct gen
+@@ -600,6 +612,11 @@ static bool blk_add_partition(struct gen
  	    (state->parts[p].flags & ADDPART_FLAG_RAID))
  		md_autodetect_dev(part->bd_dev);
  
diff --git a/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch
index 930d0ff0fe..1c169b7266 100644
--- a/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch
@@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		}
 --- a/scripts/link-vmlinux.sh
 +++ b/scripts/link-vmlinux.sh
-@@ -257,6 +257,10 @@ kallsyms()
+@@ -262,6 +262,10 @@ kallsyms()
  		kallsymopt="${kallsymopt} --base-relative"
  	fi
  
diff --git a/target/linux/generic/pending-5.15/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-5.15/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index 2f6fbd59e4..3931278a6d 100644
--- a/target/linux/generic/pending-5.15/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-5.15/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -275,8 +275,8 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
  			 const struct tnl_ptk_info *tpi,
  			 struct metadata_dst *tun_dst,
-@@ -843,6 +969,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
- 	skb_reset_network_header(skb);
+@@ -857,6 +983,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
+ 
  	memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
  
 +	if (tpi->proto == htons(ETH_P_IP) && tunnel->parms.fmrs &&
@@ -303,7 +303,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
  
  	err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
-@@ -994,6 +1141,7 @@ static void init_tel_txopt(struct ipv6_t
+@@ -1004,6 +1151,7 @@ static void init_tel_txopt(struct ipv6_t
  	opt->ops.opt_nflen = 8;
  }
  
@@ -311,7 +311,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  /**
   * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
   *   @t: the outgoing tunnel device
-@@ -1274,6 +1422,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1284,6 +1432,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
  		u8 protocol)
  {
  	struct ip6_tnl *t = netdev_priv(dev);
@@ -319,7 +319,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	struct ipv6hdr *ipv6h;
  	const struct iphdr  *iph;
  	int encap_limit = -1;
-@@ -1373,6 +1522,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1383,6 +1532,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
  	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
  	dsfield = INET_ECN_encapsulate(dsfield, orig_dsfield);
  
@@ -338,7 +338,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
  		return -1;
  
-@@ -1526,6 +1687,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1536,6 +1697,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
  	t->parms.fwmark = p->fwmark;
@@ -353,7 +353,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1564,6 +1733,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1574,6 +1743,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
  	p->flowinfo = u->flowinfo;
  	p->link = u->link;
  	p->proto = u->proto;
@@ -361,7 +361,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1950,6 +2120,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1960,6 +2130,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -377,7 +377,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -1987,6 +2166,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1997,6 +2176,46 @@ static void ip6_tnl_netlink_parms(struct
  
  	if (data[IFLA_IPTUN_FWMARK])
  		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
@@ -424,7 +424,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  }
  
  static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2102,6 +2321,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2112,6 +2331,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -437,7 +437,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -2131,6 +2356,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2141,6 +2366,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(0) +
  		/* IFLA_IPTUN_FWMARK */
  		nla_total_size(4) +
@@ -462,7 +462,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  		0;
  }
  
-@@ -2138,6 +2381,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2148,6 +2391,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
  	struct ip6_tnl *tunnel = netdev_priv(dev);
  	struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -472,7 +472,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2147,9 +2393,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2157,9 +2403,27 @@ static int ip6_tnl_fill_info(struct sk_b
  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
  	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
@@ -501,7 +501,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2189,6 +2453,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2199,6 +2463,7 @@ static const struct nla_policy ip6_tnl_p
  	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 },
  	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG },
  	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 },
diff --git a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index 606e053513..df5bef9fcd 100644
--- a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -446,47 +446,14 @@ static struct nft_expr_type nft_flow_off
+@@ -451,47 +451,14 @@ static struct nft_expr_type nft_flow_off
  	.owner		= THIS_MODULE,
  };
  
diff --git a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 892887c423..69ff9d5797 100644
--- a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7752,7 +7752,7 @@ static int nft_register_flowtable_net_ho
+@@ -7760,7 +7760,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);
diff --git a/target/linux/generic/pending-5.15/750-skb-Do-mix-page-pool-and-page-referenced-frags-in-GR.patch b/target/linux/generic/pending-5.15/750-skb-Do-mix-page-pool-and-page-referenced-frags-in-GR.patch
index 2a57a7ef03..8e2f3a9475 100644
--- a/target/linux/generic/pending-5.15/750-skb-Do-mix-page-pool-and-page-referenced-frags-in-GR.patch
+++ b/target/linux/generic/pending-5.15/750-skb-Do-mix-page-pool-and-page-referenced-frags-in-GR.patch
@@ -17,7 +17,7 @@ Signed-off-by: Alexander Duyck <alexanderduyck at fb.com>
 
 --- a/net/core/skbuff.c
 +++ b/net/core/skbuff.c
-@@ -4358,6 +4358,15 @@ int skb_gro_receive(struct sk_buff *p, s
+@@ -4359,6 +4359,15 @@ int skb_gro_receive(struct sk_buff *p, s
  	if (unlikely(p->len + len >= 65536 || NAPI_GRO_CB(skb)->flush))
  		return -E2BIG;
  
diff --git a/target/linux/generic/pending-5.15/790-bus-mhi-core-add-SBL-state-callback.patch b/target/linux/generic/pending-5.15/790-bus-mhi-core-add-SBL-state-callback.patch
index 2f728fefd7..6402dd9066 100644
--- a/target/linux/generic/pending-5.15/790-bus-mhi-core-add-SBL-state-callback.patch
+++ b/target/linux/generic/pending-5.15/790-bus-mhi-core-add-SBL-state-callback.patch
@@ -20,7 +20,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/drivers/bus/mhi/host/main.c
 +++ b/drivers/bus/mhi/host/main.c
-@@ -891,6 +891,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
+@@ -896,6 +896,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
  			switch (event) {
  			case MHI_EE_SBL:
  				st = DEV_ST_TRANSITION_SBL;
diff --git a/target/linux/generic/pending-5.15/810-pci_disable_common_quirks.patch b/target/linux/generic/pending-5.15/810-pci_disable_common_quirks.patch
index 153b5d06cf..f7f16ee37d 100644
--- a/target/linux/generic/pending-5.15/810-pci_disable_common_quirks.patch
+++ b/target/linux/generic/pending-5.15/810-pci_disable_common_quirks.patch
@@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * The Mellanox Tavor device gives false positive parity errors.  Disable
   * parity error reporting.
-@@ -3365,6 +3366,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -3368,6 +3369,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
  
@@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
   * To work around this, query the size it should be configured to by the
-@@ -3390,6 +3393,8 @@ static void quirk_intel_ntb(struct pci_d
+@@ -3393,6 +3396,8 @@ static void quirk_intel_ntb(struct pci_d
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
  
@@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * Some BIOS implementations leave the Intel GPU interrupts enabled, even
   * though no one is handling them (e.g., if the i915 driver is never
-@@ -3428,6 +3433,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3431,6 +3436,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
  
diff --git a/target/linux/ipq806x/patches-5.15/111-v5.19-01-PM-devfreq-Export-devfreq_get_freq_range-symbol-with.patch b/target/linux/ipq806x/patches-5.15/111-v5.19-01-PM-devfreq-Export-devfreq_get_freq_range-symbol-with.patch
index 12d5191b0b..38379224e9 100644
--- a/target/linux/ipq806x/patches-5.15/111-v5.19-01-PM-devfreq-Export-devfreq_get_freq_range-symbol-with.patch
+++ b/target/linux/ipq806x/patches-5.15/111-v5.19-01-PM-devfreq-Export-devfreq_get_freq_range-symbol-with.patch
@@ -56,7 +56,7 @@ Signed-off-by: Chanwoo Choi <cw00.choi at samsung.com>
  
  	if (freq < min_freq) {
  		freq = min_freq;
-@@ -785,6 +786,7 @@ struct devfreq *devfreq_add_device(struc
+@@ -805,6 +806,7 @@ struct devfreq *devfreq_add_device(struc
  {
  	struct devfreq *devfreq;
  	struct devfreq_governor *governor;
@@ -64,7 +64,7 @@ Signed-off-by: Chanwoo Choi <cw00.choi at samsung.com>
  	int err = 0;
  
  	if (!dev || !profile || !governor_name) {
-@@ -849,6 +851,8 @@ struct devfreq *devfreq_add_device(struc
+@@ -869,6 +871,8 @@ struct devfreq *devfreq_add_device(struc
  		goto err_dev;
  	}
  
@@ -73,7 +73,7 @@ Signed-off-by: Chanwoo Choi <cw00.choi at samsung.com>
  	devfreq->suspend_freq = dev_pm_opp_get_suspend_opp_freq(dev);
  	devfreq->opp_table = dev_pm_opp_get_opp_table(dev);
  	if (IS_ERR(devfreq->opp_table))
-@@ -1560,7 +1564,7 @@ static ssize_t min_freq_show(struct devi
+@@ -1580,7 +1584,7 @@ static ssize_t min_freq_show(struct devi
  	unsigned long min_freq, max_freq;
  
  	mutex_lock(&df->lock);
@@ -82,7 +82,7 @@ Signed-off-by: Chanwoo Choi <cw00.choi at samsung.com>
  	mutex_unlock(&df->lock);
  
  	return sprintf(buf, "%lu\n", min_freq);
-@@ -1614,7 +1618,7 @@ static ssize_t max_freq_show(struct devi
+@@ -1634,7 +1638,7 @@ static ssize_t max_freq_show(struct devi
  	unsigned long min_freq, max_freq;
  
  	mutex_lock(&df->lock);
@@ -91,7 +91,7 @@ Signed-off-by: Chanwoo Choi <cw00.choi at samsung.com>
  	mutex_unlock(&df->lock);
  
  	return sprintf(buf, "%lu\n", max_freq);
-@@ -1928,7 +1932,7 @@ static int devfreq_summary_show(struct s
+@@ -1969,7 +1973,7 @@ static int devfreq_summary_show(struct s
  
  		mutex_lock(&devfreq->lock);
  		cur_freq = devfreq->previous_freq;
diff --git a/target/linux/ipq806x/patches-5.15/113-v5.19-03-PM-devfreq-Rework-freq_table-to-be-local-to-devfr.patch b/target/linux/ipq806x/patches-5.15/113-v5.19-03-PM-devfreq-Rework-freq_table-to-be-local-to-devfr.patch
index c076845a00..64f091e9e1 100644
--- a/target/linux/ipq806x/patches-5.15/113-v5.19-03-PM-devfreq-Rework-freq_table-to-be-local-to-devfr.patch
+++ b/target/linux/ipq806x/patches-5.15/113-v5.19-03-PM-devfreq-Rework-freq_table-to-be-local-to-devfr.patch
@@ -126,7 +126,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
  		devfreq->stats.total_trans++;
  	}
  
-@@ -835,6 +831,9 @@ struct devfreq *devfreq_add_device(struc
+@@ -855,6 +851,9 @@ struct devfreq *devfreq_add_device(struc
  		if (err < 0)
  			goto err_dev;
  		mutex_lock(&devfreq->lock);
@@ -136,7 +136,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
  	}
  
  	devfreq->scaling_min_freq = find_available_min_freq(devfreq);
-@@ -870,8 +869,8 @@ struct devfreq *devfreq_add_device(struc
+@@ -890,8 +889,8 @@ struct devfreq *devfreq_add_device(struc
  
  	devfreq->stats.trans_table = devm_kzalloc(&devfreq->dev,
  			array3_size(sizeof(unsigned int),
@@ -147,7 +147,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
  			GFP_KERNEL);
  	if (!devfreq->stats.trans_table) {
  		mutex_unlock(&devfreq->lock);
-@@ -880,7 +879,7 @@ struct devfreq *devfreq_add_device(struc
+@@ -900,7 +899,7 @@ struct devfreq *devfreq_add_device(struc
  	}
  
  	devfreq->stats.time_in_state = devm_kcalloc(&devfreq->dev,
@@ -156,7 +156,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
  			sizeof(*devfreq->stats.time_in_state),
  			GFP_KERNEL);
  	if (!devfreq->stats.time_in_state) {
-@@ -1638,9 +1637,9 @@ static ssize_t available_frequencies_sho
+@@ -1658,9 +1657,9 @@ static ssize_t available_frequencies_sho
  
  	mutex_lock(&df->lock);
  
@@ -168,7 +168,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
  
  	mutex_unlock(&df->lock);
  	/* Truncate the trailing space */
-@@ -1663,7 +1662,7 @@ static ssize_t trans_stat_show(struct de
+@@ -1683,7 +1682,7 @@ static ssize_t trans_stat_show(struct de
  
  	if (!df->profile)
  		return -EINVAL;
@@ -176,33 +176,35 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
 +	max_state = df->max_state;
  
  	if (max_state == 0)
- 		return sprintf(buf, "Not Supported.\n");
-@@ -1680,19 +1679,17 @@ static ssize_t trans_stat_show(struct de
- 	len += sprintf(buf + len, "           :");
- 	for (i = 0; i < max_state; i++)
- 		len += sprintf(buf + len, "%10lu",
--				df->profile->freq_table[i]);
-+				df->freq_table[i]);
- 
- 	len += sprintf(buf + len, "   time(ms)\n");
- 
+ 		return scnprintf(buf, PAGE_SIZE, "Not Supported.\n");
+@@ -1702,7 +1701,7 @@ static ssize_t trans_stat_show(struct de
+ 		if (len >= PAGE_SIZE - 1)
+ 			break;
+ 		len += scnprintf(buf + len, PAGE_SIZE - len, "%10lu",
+-				 df->profile->freq_table[i]);
++				 df->freq_table[i]);
+ 	}
+ 	if (len >= PAGE_SIZE - 1)
+ 		return PAGE_SIZE - 1;
+@@ -1712,7 +1711,7 @@ static ssize_t trans_stat_show(struct de
  	for (i = 0; i < max_state; i++) {
+ 		if (len >= PAGE_SIZE - 1)
+ 			break;
 -		if (df->profile->freq_table[i]
--					== df->previous_freq) {
-+		if (df->freq_table[i] == df->previous_freq)
- 			len += sprintf(buf + len, "*");
--		} else {
-+		else
- 			len += sprintf(buf + len, " ");
--		}
--		len += sprintf(buf + len, "%10lu:",
--				df->profile->freq_table[i]);
-+
-+		len += sprintf(buf + len, "%10lu:", df->freq_table[i]);
- 		for (j = 0; j < max_state; j++)
- 			len += sprintf(buf + len, "%10u",
- 				df->stats.trans_table[(i * max_state) + j]);
-@@ -1716,7 +1713,7 @@ static ssize_t trans_stat_store(struct d
++		if (df->freq_table[i]
+ 					== df->previous_freq) {
+ 			len += scnprintf(buf + len, PAGE_SIZE - len, "*");
+ 		} else {
+@@ -1722,7 +1721,7 @@ static ssize_t trans_stat_show(struct de
+ 			break;
+ 
+ 		len += scnprintf(buf + len, PAGE_SIZE - len, "%10lu:",
+-				 df->profile->freq_table[i]);
++				 df->freq_table[i]);
+ 		for (j = 0; j < max_state; j++) {
+ 			if (len >= PAGE_SIZE - 1)
+ 				break;
+@@ -1757,7 +1756,7 @@ static ssize_t trans_stat_store(struct d
  	if (!df->profile)
  		return -EINVAL;
  
@@ -211,7 +213,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
  		return count;
  
  	err = kstrtoint(buf, 10, &value);
-@@ -1724,11 +1721,11 @@ static ssize_t trans_stat_store(struct d
+@@ -1765,11 +1764,11 @@ static ssize_t trans_stat_store(struct d
  		return -EINVAL;
  
  	mutex_lock(&df->lock);
diff --git a/target/linux/ipq806x/patches-5.15/113-v5.19-04-PM-devfreq-Mute-warning-on-governor-PROBE_DEFER.patch b/target/linux/ipq806x/patches-5.15/113-v5.19-04-PM-devfreq-Mute-warning-on-governor-PROBE_DEFER.patch
index cfdef8d6c5..a0d173ebf8 100644
--- a/target/linux/ipq806x/patches-5.15/113-v5.19-04-PM-devfreq-Mute-warning-on-governor-PROBE_DEFER.patch
+++ b/target/linux/ipq806x/patches-5.15/113-v5.19-04-PM-devfreq-Mute-warning-on-governor-PROBE_DEFER.patch
@@ -14,7 +14,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth at gmail.com>
 
 --- a/drivers/devfreq/devfreq.c
 +++ b/drivers/devfreq/devfreq.c
-@@ -931,8 +931,9 @@ struct devfreq *devfreq_add_device(struc
+@@ -951,8 +951,9 @@ struct devfreq *devfreq_add_device(struc
  	err = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_START,
  						NULL);
  	if (err) {
diff --git a/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch b/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
index 384f32a65c..f2b7ed4453 100644
--- a/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
+++ b/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
@@ -144,7 +144,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -7498,7 +7490,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7501,7 +7493,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
diff --git a/target/linux/mediatek/patches-5.15/850-v6.0-i2c-move-drivers-from-strlcpy-to-strscpy.patch b/target/linux/mediatek/patches-5.15/850-v6.0-i2c-move-drivers-from-strlcpy-to-strscpy.patch
index 46e92a92f3..2741aa5bd6 100644
--- a/target/linux/mediatek/patches-5.15/850-v6.0-i2c-move-drivers-from-strlcpy-to-strscpy.patch
+++ b/target/linux/mediatek/patches-5.15/850-v6.0-i2c-move-drivers-from-strlcpy-to-strscpy.patch
@@ -237,7 +237,7 @@ Signed-off-by: Wolfram Sang <wsa at kernel.org>
  	priv->adap.algo = &hix5hd2_i2c_algorithm;
 --- a/drivers/i2c/busses/i2c-i801.c
 +++ b/drivers/i2c/busses/i2c-i801.c
-@@ -1110,7 +1110,7 @@ static void dmi_check_onboard_device(u8
+@@ -1103,7 +1103,7 @@ static void dmi_check_onboard_device(u8
  
  		memset(&info, 0, sizeof(struct i2c_board_info));
  		info.addr = dmi_devices[i].i2c_addr;
@@ -246,7 +246,7 @@ Signed-off-by: Wolfram Sang <wsa at kernel.org>
  		i2c_new_client_device(adap, &info);
  		break;
  	}
-@@ -1266,7 +1266,7 @@ static void register_dell_lis3lv02d_i2c_
+@@ -1259,7 +1259,7 @@ static void register_dell_lis3lv02d_i2c_
  
  	memset(&info, 0, sizeof(struct i2c_board_info));
  	info.addr = dell_lis3lv02d_devices[i].i2c_addr;
diff --git a/target/linux/mvebu/patches-5.15/902-drivers-mfd-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch b/target/linux/mvebu/patches-5.15/902-drivers-mfd-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch
index 0e546b426e..97ac702d4b 100644
--- a/target/linux/mvebu/patches-5.15/902-drivers-mfd-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch
+++ b/target/linux/mvebu/patches-5.15/902-drivers-mfd-Add-a-driver-for-IEI-WT61P803-PUZZLE-MCU.patch
@@ -26,7 +26,7 @@ Cc: Robert Marko <robert.marko at sartura.hr>
 
 --- a/drivers/mfd/Kconfig
 +++ b/drivers/mfd/Kconfig
-@@ -2189,6 +2189,15 @@ config SGI_MFD_IOC3
+@@ -2190,6 +2190,15 @@ config SGI_MFD_IOC3
  	  If you have an SGI Origin, Octane, or a PCI IOC3 card,
  	  then say Y. Otherwise say N.
  
diff --git a/target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch b/target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
index 6dd02bed54..bb2dbeb4f8 100644
--- a/target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
+++ b/target/linux/octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
@@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey at gateworks.com>
  #include <linux/platform_data/x86/apple.h>
  #include <linux/pm_runtime.h>
  #include <linux/suspend.h>
-@@ -5883,3 +5884,34 @@ static void nvidia_ion_ahci_fixup(struct
+@@ -5899,3 +5900,34 @@ static void nvidia_ion_ahci_fixup(struct
  	pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
  }
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);



From lede-commits at lists.infradead.org  Fri Mar  8 05:27:14 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 08:27:14 -0500
Subject: [openwrt/openwrt]  libiwinfo: update to Git HEAD (2024-03-08)
In-Reply-To: <170990443435.2996424.7183818483983866952@git-01.infra.openwrt.org>
References: <170990443435.2996424.7183818483983866952@git-01.infra.openwrt.org>
Message-ID: <mailman.14673.1709904440.1280.lede-commits@lists.infradead.org>

ansuel pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/abbe9095695f1452501e7b29131740427b114789

commit abbe9095695f1452501e7b29131740427b114789
Author: Christian Marangi <ansuelsmth at gmail.com>
AuthorDate: Fri Mar 8 14:25:54 2024 +0100

    libiwinfo: update to Git HEAD (2024-03-08)
    
    163a640fef30 devices: add device id for Qualcomm Atheros QCA6174
    8ffb8bfd1115 devices: add add Qualcomm Atheros IPQ6018 WiSoC compatible
    
    Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
---
 package/network/utils/iwinfo/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/network/utils/iwinfo/Makefile b/package/network/utils/iwinfo/Makefile
index 4fef2babbb..e1941ca3a8 100644
--- a/package/network/utils/iwinfo/Makefile
+++ b/package/network/utils/iwinfo/Makefile
@@ -11,9 +11,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/iwinfo.git
-PKG_SOURCE_DATE:=2023-11-19
-PKG_SOURCE_VERSION:=a34977c0760c93480491c8eb94da656b57d7f4cc
-PKG_MIRROR_HASH:=cb01671a2a9155f8ba55751ab1fe28488c5821212dd97ba5b79653640abb787e
+PKG_SOURCE_DATE:=2024-03-08
+PKG_SOURCE_VERSION:=8ffb8bfd1115ae95265aa52590aa948aba7672e4
+PKG_MIRROR_HASH:=77bb6018b5001268c0f442dbfd8159893db620c575c9810221b1a42a30be4b5f
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
 PKG_LICENSE:=GPL-2.0
 



From lede-commits at lists.infradead.org  Fri Mar  8 05:50:26 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 08:50:26 -0500
Subject: [openwrt/openwrt]  lantiq: Fix build after kernel 5.15.150
In-Reply-To: <170990582661.3056353.10853252228479895422@git-01.infra.openwrt.org>
References: <170990582661.3056353.10853252228479895422@git-01.infra.openwrt.org>
Message-ID: <mailman.14683.1709905832.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9cfa5f74175d5c663bcf5973024fb76223972033

commit 9cfa5f74175d5c663bcf5973024fb76223972033
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Fri Mar 8 14:43:08 2024 +0100

    lantiq: Fix build after kernel 5.15.150
    
    This fixes the following compile problem:
    ````
      CC      arch/mips/kernel/vpe-mt.o
    arch/mips/kernel/vpe-mt.c: In function 'vpe_run':
    arch/mips/kernel/vpe-mt.c:32:23: error: unused variable 'physical_memsize' [-Werror=unused-variable]
       32 |         unsigned long physical_memsize = 0L;
          |                       ^~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    make[6]: *** [scripts/Makefile.build:289: arch/mips/kernel/vpe-mt.o] Error 1
    ````
    
    physical_memsize was removed from upstream kernel, see:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=5b4f6c5ff65c8551018ccea40c569afd759734c0
    
    Fixes: 387fde0da0e8 ("kernel: bump 5.15 to 5.15.150")
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch       | 12 ++----------
 target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch |  2 +-
 2 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch b/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
index 00917331c2..2395261ff1 100644
--- a/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
+++ b/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
@@ -67,15 +67,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  #endif /* _ASM_VPE_H */
 --- a/arch/mips/kernel/vpe-mt.c
 +++ b/arch/mips/kernel/vpe-mt.c
-@@ -29,6 +29,7 @@ int vpe_run(struct vpe *v)
- 	struct vpe_notifications *notifier;
- 	unsigned int vpeflags;
- 	struct tc *t;
-+	unsigned long physical_memsize = 0L;
- 
- 	/* check we are the Master VPE */
- 	local_irq_save(flags);
-@@ -415,6 +416,8 @@ int __init vpe_module_init(void)
+@@ -415,6 +415,8 @@ int __init vpe_module_init(void)
  			}
  
  			v->ntcs = hw_tcs - aprp_cpu_index();
@@ -84,7 +76,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  
  			/* add the tc to the list of this vpe's tc's. */
  			list_add(&t->tc, &v->tc);
-@@ -518,3 +521,47 @@ void __exit vpe_module_exit(void)
+@@ -518,3 +520,47 @@ void __exit vpe_module_exit(void)
  			release_vpe(v);
  	}
  }
diff --git a/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch b/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
index 015acabcfe..6426ee717b 100644
--- a/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
+++ b/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
@@ -10,7 +10,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
 
 --- a/arch/mips/kernel/vpe-mt.c
 +++ b/arch/mips/kernel/vpe-mt.c
-@@ -131,7 +131,10 @@ int vpe_run(struct vpe *v)
+@@ -130,7 +130,10 @@ int vpe_run(struct vpe *v)
  	 * kernels need to turn it on, even if that wasn't the pre-dvpe() state.
  	 */
  #ifdef CONFIG_SMP



From lede-commits at lists.infradead.org  Fri Mar  8 05:51:54 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 08:51:54 -0500
Subject: [openwrt/openwrt]  lantiq: Fix build after kernel 5.15.150
In-Reply-To: <170990591444.3059722.2309216762819390292@git-01.infra.openwrt.org>
References: <170990591444.3059722.2309216762819390292@git-01.infra.openwrt.org>
Message-ID: <mailman.14687.1709905923.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/2f2eceab1307d9f9c33f151d442ab97c95bd0400

commit 2f2eceab1307d9f9c33f151d442ab97c95bd0400
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Fri Mar 8 14:43:08 2024 +0100

    lantiq: Fix build after kernel 5.15.150
    
    This fixes the following compile problem:
    ````
      CC      arch/mips/kernel/vpe-mt.o
    arch/mips/kernel/vpe-mt.c: In function 'vpe_run':
    arch/mips/kernel/vpe-mt.c:32:23: error: unused variable 'physical_memsize' [-Werror=unused-variable]
       32 |         unsigned long physical_memsize = 0L;
          |                       ^~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    make[6]: *** [scripts/Makefile.build:289: arch/mips/kernel/vpe-mt.o] Error 1
    ````
    
    physical_memsize was removed from upstream kernel, see:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=5b4f6c5ff65c8551018ccea40c569afd759734c0
    
    Fixes: 387fde0da0e8 ("kernel: bump 5.15 to 5.15.150")
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    (cherry picked from commit 9cfa5f74175d5c663bcf5973024fb76223972033)
---
 target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch       | 12 ++----------
 target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch |  2 +-
 2 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch b/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
index 00917331c2..2395261ff1 100644
--- a/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
+++ b/target/linux/lantiq/patches-5.15/0152-lantiq-VPE.patch
@@ -67,15 +67,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  #endif /* _ASM_VPE_H */
 --- a/arch/mips/kernel/vpe-mt.c
 +++ b/arch/mips/kernel/vpe-mt.c
-@@ -29,6 +29,7 @@ int vpe_run(struct vpe *v)
- 	struct vpe_notifications *notifier;
- 	unsigned int vpeflags;
- 	struct tc *t;
-+	unsigned long physical_memsize = 0L;
- 
- 	/* check we are the Master VPE */
- 	local_irq_save(flags);
-@@ -415,6 +416,8 @@ int __init vpe_module_init(void)
+@@ -415,6 +415,8 @@ int __init vpe_module_init(void)
  			}
  
  			v->ntcs = hw_tcs - aprp_cpu_index();
@@ -84,7 +76,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
  
  			/* add the tc to the list of this vpe's tc's. */
  			list_add(&t->tc, &v->tc);
-@@ -518,3 +521,47 @@ void __exit vpe_module_exit(void)
+@@ -518,3 +520,47 @@ void __exit vpe_module_exit(void)
  			release_vpe(v);
  	}
  }
diff --git a/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch b/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
index 015acabcfe..6426ee717b 100644
--- a/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
+++ b/target/linux/lantiq/patches-5.15/0155-lantiq-VPE-nosmp.patch
@@ -10,7 +10,7 @@ Signed-off-by: Stefan Koch <stefan.koch10 at gmail.com>
 
 --- a/arch/mips/kernel/vpe-mt.c
 +++ b/arch/mips/kernel/vpe-mt.c
-@@ -131,7 +131,10 @@ int vpe_run(struct vpe *v)
+@@ -130,7 +130,10 @@ int vpe_run(struct vpe *v)
  	 * kernels need to turn it on, even if that wasn't the pre-dvpe() state.
  	 */
  #ifdef CONFIG_SMP



From lede-commits at lists.infradead.org  Fri Mar  8 08:16:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:16:22 -0500
Subject: [openwrt/openwrt]  kernel: crypto: use ARM64 SHA1 CE optimized module
 for more targets
In-Reply-To: <170991458208.3415639.8057853552789823187@git-01.infra.openwrt.org>
References: <170991458208.3415639.8057853552789823187@git-01.infra.openwrt.org>
Message-ID: <mailman.14736.1709914588.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/90c09ede93453d97bdbee3ef5814110934d3e1aa

commit 90c09ede93453d97bdbee3ef5814110934d3e1aa
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Mar 6 22:19:54 2024 +0100

    kernel: crypto: use ARM64 SHA1 CE optimized module for more targets
    
    At start I only set qualcommax to use the Crypto Extensions optimized
    version of SHA1 as I knew it supports the optional Crypto Extensions.
    
    However, after looking into the tree there are more targets/subtargets
    that I could find at least a specification sheet that says the support
    Cryptographic Extensions, so lets add them.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 55988ba92c..a73062c611 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -935,8 +935,13 @@ endef
 
 KernelPackage/crypto-sha1/imx=$(KernelPackage/crypto-sha1/arm-neon)
 KernelPackage/crypto-sha1/ipq40xx=$(KernelPackage/crypto-sha1/arm-neon)
+KernelPackage/crypto-sha1/mediatek/filogic=$(KernelPackage/crypto-sha1/aarch64-ce)
+KernelPackage/crypto-sha1/mediatek/mt7622=$(KernelPackage/crypto-sha1/aarch64-ce)
 KernelPackage/crypto-sha1/mvebu/cortexa9=$(KernelPackage/crypto-sha1/arm-neon)
+KernelPackage/crypto-sha1/mvebu/cortexa53=$(KernelPackage/crypto-sha1/aarch64-ce)
+KernelPackage/crypto-sha1/mvebu/cortexa72=$(KernelPackage/crypto-sha1/aarch64-ce)
 KernelPackage/crypto-sha1/qualcommax=$(KernelPackage/crypto-sha1/aarch64-ce)
+KernelPackage/crypto-sha1/rockchip/armv8=$(KernelPackage/crypto-sha1/aarch64-ce)
 
 define KernelPackage/crypto-sha1/octeon
   FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha1.ko



From lede-commits at lists.infradead.org  Fri Mar  8 08:16:23 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:16:23 -0500
Subject: [openwrt/openwrt]  kernel: crypto: use ARM64 SHA256 CE optimized
 module for more targets
In-Reply-To: <170991458208.3415639.8057853552789823187@git-01.infra.openwrt.org>
References: <170991458208.3415639.8057853552789823187@git-01.infra.openwrt.org>
Message-ID: <mailman.14737.1709914591.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ce2b302ca43b42ef4a51baf875180fa03787e21f

commit ce2b302ca43b42ef4a51baf875180fa03787e21f
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Mar 6 22:21:47 2024 +0100

    kernel: crypto: use ARM64 SHA256 CE optimized module for more targets
    
    At start I only set qualcommax to use the Crypto Extensions optimized
    version of SHA256 as I knew it supports the optional Crypto Extensions.
    
    However, after looking into the tree there are more targets/subtargets
    that I could find at least a specification sheet that says the support
    Cryptographic Extensions, so lets add them.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index a73062c611..b7cecb8919 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -1027,7 +1027,12 @@ define KernelPackage/crypto-sha256/x86_64
 endef
 endif
 
+KernelPackage/crypto-sha256/mediatek/filogic=$(KernelPackage/crypto-sha256/aarch64-ce)
+KernelPackage/crypto-sha256/mediatek/mt7622=$(KernelPackage/crypto-sha256/aarch64-ce)
+KernelPackage/crypto-sha256/mvebu/cortexa53=$(KernelPackage/crypto-sha256/aarch64-ce)
+KernelPackage/crypto-sha256/mvebu/cortexa72=$(KernelPackage/crypto-sha256/aarch64-ce)
 KernelPackage/crypto-sha256/qualcommax=$(KernelPackage/crypto-sha256/aarch64-ce)
+KernelPackage/crypto-sha256/rockchip/armv8=$(KernelPackage/crypto-sha256/aarch64-ce)
 
 ifdef KernelPackage/crypto-sha256/$(ARCH)
   KernelPackage/crypto-sha256/$(CRYPTO_TARGET)=\



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:26 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:26 -0500
Subject: [openwrt/openwrt]  mpc85xx: p1010: change wrapper address of simple
 image devices
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14768.1709916686.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6a8b831593895ff9c8a687de7f7d0d24cdef8b3f

commit 6a8b831593895ff9c8a687de7f7d0d24cdef8b3f
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Mon Feb 19 13:39:10 2024 +0100

    mpc85xx: p1010: change wrapper address of simple image devices
    
    Kernel and initramfs size grows. Now uncompressed initramfs image and
    regular kernel image overlaps configured area:
    
    Initramfs:
      WRAP    arch/powerpc/boot/simpleImage.br200-wp
    INFO: Uncompressed kernel (size 0x1428688) overlaps the address of the
    wrapper(0x1000000)
    INFO: Fixing the link_address of wrapper to (0x1500000)
      WRAP    arch/powerpc/boot/simpleImage.tl-wdr4900-v1
    INFO: Uncompressed kernel (size 0x1428688) overlaps the address of the
    wrapper(0x1000000)
    INFO: Fixing the link_address of wrapper to (0x1500000)
      WRAP    arch/powerpc/boot/simpleImage.ws-ap3715i
    INFO: Uncompressed kernel (size 0x1428688) overlaps the address of the
    wrapper(0x1000000)
    INFO: Fixing the link_address of wrapper to (0x1500000)
    
    Regular image:
      WRAP    arch/powerpc/boot/simpleImage.br200-wp
    INFO: Uncompressed kernel (size 0x10e0688) overlaps the address of the
    wrapper(0x1000000)
    INFO: Fixing the link_address of wrapper to (0x1100000)
      WRAP    arch/powerpc/boot/simpleImage.tl-wdr4900-v1
    INFO: Uncompressed kernel (size 0x10e0688) overlaps the address of the
    wrapper(0x1000000)
    INFO: Fixing the link_address of wrapper to (0x1100000)
      WRAP    arch/powerpc/boot/simpleImage.ws-ap3715i
    INFO: Uncompressed kernel (size 0x10e0688) overlaps the address of the
    wrapper(0x1000000)
    INFO: Fixing the link_address of wrapper to (0x1100000)
    
    Let's change wrapper address to safe value.
    
    Tested on: TL-WDR4900, BR200-WP
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/image/p1010.mk                          | 12 ++++++------
 .../100-powerpc-85xx-tl-wdr4900-v1-support.patch             |  2 +-
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch            |  2 +-
 .../patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch |  2 +-
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch            |  2 +-
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/target/linux/mpc85xx/image/p1010.mk b/target/linux/mpc85xx/image/p1010.mk
index c0de19f6c6..a4f2d13dd4 100644
--- a/target/linux/mpc85xx/image/p1010.mk
+++ b/target/linux/mpc85xx/image/p1010.mk
@@ -21,8 +21,8 @@ define Device/aerohive_br200-wp
   KERNEL_NAME := simpleImage.br200-wp
   KERNEL := kernel-bin | uImage none
   KERNEL_INITRAMFS := kernel-bin | uImage none
-  KERNEL_ENTRY := 0x1000000
-  KERNEL_LOADADDR := 0x1000000
+  KERNEL_ENTRY := 0x1500000
+  KERNEL_LOADADDR := 0x1500000
   KERNEL_SIZE := 8m
   IMAGES := fdt.bin sysupgrade.bin
   IMAGE/fdt.bin := append-dtb
@@ -39,8 +39,8 @@ define Device/enterasys_ws-ap3715i
   DEVICE_MODEL := WS-AP3715i
   BLOCKSIZE := 64k
   KERNEL_NAME := simpleImage.ws-ap3715i
-  KERNEL_ENTRY := 0x1000000
-  KERNEL_LOADADDR := 0x1000000
+  KERNEL_ENTRY := 0x1500000
+  KERNEL_LOADADDR := 0x1500000
   KERNEL = kernel-bin | lzma | uImage lzma
   IMAGES := sysupgrade.bin
   IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
@@ -60,8 +60,8 @@ define Device/tplink_tl-wdr4900-v1
   KERNEL_NAME := simpleImage.tl-wdr4900-v1
   KERNEL_INITRAMFS :=
   KERNEL := kernel-bin | uImage none -M 0x4f4b4c49 | spi-loader-okli $(1)
-  KERNEL_ENTRY := 0x1000000
-  KERNEL_LOADADDR := 0x1000000
+  KERNEL_ENTRY := 0x1500000
+  KERNEL_LOADADDR := 0x1500000
   SUPPORTED_DEVICES += tl-wdr4900-v1
   COMPILE := loader-$(1)
   COMPILE/loader-$(1) := spi-loader-okli-compile
diff --git a/target/linux/mpc85xx/patches-5.15/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-5.15/100-powerpc-85xx-tl-wdr4900-v1-support.patch
index 0ecbec3ca4..fa27e9665d 100644
--- a/target/linux/mpc85xx/patches-5.15/100-powerpc-85xx-tl-wdr4900-v1-support.patch
+++ b/target/linux/mpc85xx/patches-5.15/100-powerpc-85xx-tl-wdr4900-v1-support.patch
@@ -44,7 +44,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
      ;;
 +simpleboot-tl-wdr4900-v1)
 +    platformo="$object/fixed-head.o $object/simpleboot.o"
-+    link_address='0x1000000'
++    link_address='0x1500000'
 +    binary=y
 +    ;;
  simpleboot-*)
diff --git a/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch
index bd731a2344..51da0f4527 100644
--- a/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch
+++ b/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -62,4 +62,4 @@ WS-AP3825i AP.
 +simpleboot-ws-ap3825i|\
  simpleboot-tl-wdr4900-v1)
      platformo="$object/fixed-head.o $object/simpleboot.o"
-     link_address='0x1000000'
+     link_address='0x1500000'
diff --git a/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
index 7b9016d2fe..a7253a9794 100644
--- a/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
@@ -44,7 +44,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
      ;;
 +simpleboot-tl-wdr4900-v1)
 +    platformo="$object/fixed-head.o $object/simpleboot.o"
-+    link_address='0x1000000'
++    link_address='0x1500000'
 +    binary=y
 +    ;;
  simpleboot-*)
diff --git a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
index 0fa1b4172b..fb697e1d1f 100644
--- a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -62,4 +62,4 @@ WS-AP3825i AP.
 +simpleboot-ws-ap3825i|\
  simpleboot-tl-wdr4900-v1)
      platformo="$object/fixed-head.o $object/simpleboot.o"
-     link_address='0x1000000'
+     link_address='0x1500000'



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:29 -0500
Subject: [openwrt/openwrt]  ath79: rename label of primary UART on QCA955x to
 "uart0"
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14771.1709916690.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e0ee4195fc7b1a119cfb02bf292a9410af3b9fe4

commit e0ee4195fc7b1a119cfb02bf292a9410af3b9fe4
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Mon Mar 4 19:07:05 2024 +0900

    ath79: rename label of primary UART on QCA955x to "uart0"
    
    Rename the DT label of the primary UART on Qualcomm Atheros QCA955x
    series SoCs to "uart0" from "uart" for the preparation to add HighSpeed
    UART (uart1) support.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 target/linux/ath79/dts/qca955x.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/ath79/dts/qca955x.dtsi b/target/linux/ath79/dts/qca955x.dtsi
index c17a15c55e..13fbd03ccb 100644
--- a/target/linux/ath79/dts/qca955x.dtsi
+++ b/target/linux/ath79/dts/qca955x.dtsi
@@ -41,7 +41,7 @@
 				#qca,ddr-wb-channel-cells = <1>;
 			};
 
-			uart: uart at 18020000 {
+			uart0: uart at 18020000 {
 				compatible = "ns16550a";
 				reg = <0x18020000 0x20>;
 



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:21 -0500
Subject: [openwrt/openwrt]  mpc85xx: Get rid of 'of_flat_dt_is_compatible'
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14772.1709916690.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/3361ff9572c8cde1d47fb8462dd2d4c5d99c3fc0

commit 3361ff9572c8cde1d47fb8462dd2d4c5d99c3fc0
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Nov 21 10:46:13 2023 +0100

    mpc85xx: Get rid of 'of_flat_dt_is_compatible'
    
    This patch replaces 'of_flat_dt_is_compatible' with 'of_machine_is_compatible'.
    The TL-WDR4900 platform file won't compile in the 6.1 kernel. The platform
    files for the rest of the routers have been reworked or based on newer
    solutions.
    
    Let's make the TL-WDR4900 consistent with them.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 .../linux/mpc85xx/files/arch/powerpc/platforms/85xx/tl_wdr4900_v1.c  | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/tl_wdr4900_v1.c b/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/tl_wdr4900_v1.c
index 0b2ebcd002..87a97e65c8 100644
--- a/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/tl_wdr4900_v1.c
+++ b/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/tl_wdr4900_v1.c
@@ -121,11 +121,8 @@ machine_arch_initcall(tl_wdr4900_v1, mpc85xx_common_publish_devices);
  */
 static int __init tl_wdr4900_v1_probe(void)
 {
-	unsigned long root = of_get_flat_dt_root();
-
-	if (of_flat_dt_is_compatible(root, "tplink,tl-wdr4900-v1"))
+	if (of_machine_is_compatible("tplink,tl-wdr4900-v1"))
 		return 1;
-
 	return 0;
 }
 



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:27 -0500
Subject: [openwrt/openwrt]  mpc85xx: add 6.1 testing kernel
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14773.1709916692.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a99dfd195ef4d555f5dec12366a44d79b530f15d

commit a99dfd195ef4d555f5dec12366a44d79b530f15d
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Nov 21 10:50:23 2023 +0100

    mpc85xx: add 6.1 testing kernel
    
    Configure 6.1 testing kernel for mpc85xx target.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/mpc85xx/Makefile b/target/linux/mpc85xx/Makefile
index 7e84be8624..7d90e1cbb3 100644
--- a/target/linux/mpc85xx/Makefile
+++ b/target/linux/mpc85xx/Makefile
@@ -12,6 +12,7 @@ FEATURES:=squashfs ramdisk nand
 SUBTARGETS:=p1010 p1020 p2020
 
 KERNEL_PATCHVER:=5.15
+KERNEL_TESTING_PATCHVER:=6.1
 
 KERNELNAME:=zImage
 



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:30 -0500
Subject: [openwrt/openwrt]  ath79: add HighSpeed UART (uart1) support for
 QCA955x
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14774.1709916692.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/35ae18fc061eda057ce531e516f9623ff8d94210

commit 35ae18fc061eda057ce531e516f9623ff8d94210
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Mon Mar 4 19:08:07 2024 +0900

    ath79: add HighSpeed UART (uart1) support for QCA955x
    
    Add HighSpeed UART support to QCA955x series SoCs as a secondary UART
    (uart1). This UART is compatible with qca,ar9330-uart.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 target/linux/ath79/dts/qca955x.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/target/linux/ath79/dts/qca955x.dtsi b/target/linux/ath79/dts/qca955x.dtsi
index 13fbd03ccb..c12a266cda 100644
--- a/target/linux/ath79/dts/qca955x.dtsi
+++ b/target/linux/ath79/dts/qca955x.dtsi
@@ -178,6 +178,18 @@
 
 				#reset-cells = <1>;
 			};
+
+			uart1: uart at 18500000 {
+				compatible = "qca,ar9330-uart";
+				reg = <0x18500000 0x14>;
+
+				interrupts = <6>;
+
+				clocks = <&pll ATH79_CLK_REF>;
+				clock-names = "uart";
+
+				status = "disabled";
+			};
 		};
 
 		gmac: gmac at 18070000 {



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:25 -0500
Subject: [openwrt/openwrt]  mpc85xx: kernel: refresh 6.1 config
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14775.1709916692.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/894ff58067798ebe859dd9a2fe92ebf95765ac36

commit 894ff58067798ebe859dd9a2fe92ebf95765ac36
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Nov 21 10:45:22 2023 +0100

    mpc85xx: kernel: refresh 6.1 config
    
    Kernel config needs to be refreshed after copy from 5.15.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/config-6.1 | 35 +++++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/target/linux/mpc85xx/config-6.1 b/target/linux/mpc85xx/config-6.1
index aeeeedad85..149518971f 100644
--- a/target/linux/mpc85xx/config-6.1
+++ b/target/linux/mpc85xx/config-6.1
@@ -12,6 +12,9 @@ CONFIG_ARCH_MMAP_RND_BITS_MAX=17
 CONFIG_ARCH_MMAP_RND_BITS_MIN=11
 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_SPLIT_ARG64=y
 CONFIG_ARCH_STACKWALK=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
@@ -19,17 +22,21 @@ CONFIG_ASN1=y
 CONFIG_AUDIT_ARCH=y
 CONFIG_BLK_MQ_PCI=y
 CONFIG_BOOKE=y
+CONFIG_BOOKE_OR_40x=y
 CONFIG_BOOKE_WDT=y
 # CONFIG_BR200_WP is not set
 # CONFIG_BSC9131_RDB is not set
 # CONFIG_BSC9132_QDS is not set
 # CONFIG_C293_PCIE is not set
+CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
+CONFIG_CC_NO_ARRAY_BOUNDS=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_CLZ_TAB=y
 CONFIG_CMDLINE="console=ttyS0,115200"
 CONFIG_CMDLINE_FROM_BOOTLOADER=y
 # CONFIG_CMDLINE_OVERRIDE is not set
 # CONFIG_COMMON_CLK is not set
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
 CONFIG_COMPAT_32BIT_TIME=y
 # CONFIG_CORENET_GENERIC is not set
 # CONFIG_CPM2 is not set
@@ -39,6 +46,8 @@ CONFIG_CRYPTO_AUTHENC=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
 CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_UTILS=y
 # CONFIG_CRYPTO_MD5_PPC is not set
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
@@ -46,11 +55,11 @@ CONFIG_CRYPTO_RSA=y
 # CONFIG_CRYPTO_SHA1_PPC is not set
 # CONFIG_CRYPTO_SHA1_PPC_SPE is not set
 # CONFIG_CRYPTO_SHA256_PPC_SPE is not set
-CONFIG_DATA_SHIFT=12
+CONFIG_DATA_SHIFT=24
 CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
 CONFIG_DNOTIFY=y
 CONFIG_DTC=y
-CONFIG_E500=y
 CONFIG_E500_CPU=y
 CONFIG_EARLY_PRINTK=y
 CONFIG_EDAC=y
@@ -59,9 +68,10 @@ CONFIG_EDAC_ATOMIC_SCRUB=y
 CONFIG_EDAC_LEGACY_SYSFS=y
 CONFIG_EDAC_MPC85XX=y
 CONFIG_EDAC_SUPPORT=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
 # CONFIG_FIREBOX_T10 is not set
 CONFIG_FIXED_PHY=y
-CONFIG_FSL_BOOKE=y
+# CONFIG_FSL_DPAA2_SWITCH is not set
 CONFIG_FSL_EMB_PERFMON=y
 # CONFIG_FSL_FMAN is not set
 CONFIG_FSL_LBC=y
@@ -71,6 +81,8 @@ CONFIG_FSL_SOC=y
 CONFIG_FSL_SOC_BOOKE=y
 CONFIG_FWNODE_MDIO=y
 CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+CONFIG_GCC11_NO_ARRAY_BOUNDS=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_GENERIC_ATOMIC64=y
 CONFIG_GENERIC_BUG=y
@@ -115,7 +127,7 @@ CONFIG_KERNEL_START=0xc0000000
 # CONFIG_KSI8560 is not set
 CONFIG_LIBFDT=y
 CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_LOWMEM_CAM_NUM=3
+CONFIG_LOWMEM_CAM_NUM=9
 CONFIG_LOWMEM_SIZE=0x30000000
 CONFIG_LXT_PHY=y
 # CONFIG_MATH_EMULATION is not set
@@ -124,6 +136,7 @@ CONFIG_MDIO_DEVICE=y
 CONFIG_MDIO_DEVRES=y
 CONFIG_MEMFD_CREATE=y
 CONFIG_MIGRATION=y
+CONFIG_MMU_GATHER_MERGE_VMAS=y
 CONFIG_MMU_GATHER_PAGE_SIZE=y
 CONFIG_MODULES_USE_ELF_RELA=y
 # CONFIG_MPC8536_DS is not set
@@ -168,6 +181,9 @@ CONFIG_OLD_SIGSUSPEND=y
 # CONFIG_P1022_RDK is not set
 # CONFIG_P1023_RDB is not set
 CONFIG_PAGE_OFFSET=0xc0000000
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
 # CONFIG_PANDA is not set
 CONFIG_PCI=y
 CONFIG_PCIEAER=y
@@ -195,22 +211,27 @@ CONFIG_PPC_ADV_DEBUG_DVCS=0
 CONFIG_PPC_ADV_DEBUG_IACS=2
 CONFIG_PPC_ADV_DEBUG_REGS=y
 CONFIG_PPC_BARRIER_NOSPEC=y
-CONFIG_PPC_BOOK3E_MMU=y
 # CONFIG_PPC_BOOK3S_32 is not set
 CONFIG_PPC_DOORBELL=y
+CONFIG_PPC_E500=y
 # CONFIG_PPC_E500MC is not set
 # CONFIG_PPC_EARLY_DEBUG is not set
-CONFIG_PPC_FSL_BOOK3E=y
 CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PPC_KUAP=y
+# CONFIG_PPC_KUAP_DEBUG is not set
+CONFIG_PPC_KUEP=y
 CONFIG_PPC_MMU_NOHASH=y
 CONFIG_PPC_PAGE_SHIFT=12
+# CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT is not set
 # CONFIG_PPC_QEMU_E500 is not set
 CONFIG_PPC_SMP_MUXED_IPI=y
 CONFIG_PPC_UDBG_16550=y
 CONFIG_PPC_WERROR=y
+CONFIG_PREEMPT_NONE_BUILD=y
 CONFIG_PTP_1588_CLOCK_OPTIONAL=y
 CONFIG_QE_GPIO=y
 CONFIG_QUICC_ENGINE=y
+CONFIG_RANDSTRUCT_NONE=y
 CONFIG_RAS=y
 # CONFIG_RED_15W_REV1 is not set
 CONFIG_RTC_CLASS=y
@@ -225,6 +246,7 @@ CONFIG_SERIAL_MCTRL_GPIO=y
 CONFIG_SERIAL_OF_PLATFORM=y
 # CONFIG_SERIAL_QE is not set
 # CONFIG_SOCRATES is not set
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
 CONFIG_SPARSE_IRQ=y
 CONFIG_SPE=y
 CONFIG_SPE_POSSIBLE=y
@@ -233,6 +255,7 @@ CONFIG_SPI_FSL_ESPI=y
 CONFIG_SPI_MASTER=y
 CONFIG_SPI_MEM=y
 CONFIG_SRCU=y
+# CONFIG_STATIC_CALL_SELFTEST is not set
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_STX_GP3 is not set
 CONFIG_SWPHY=y



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:22 -0500
Subject: [openwrt/openwrt]  mpc85xx: copy config 5.15 to 6.1
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14776.1709916692.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/123daef93c5a98e9f6219f584ca88fb8a9a37c19

commit 123daef93c5a98e9f6219f584ca88fb8a9a37c19
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Nov 21 09:38:20 2023 +0100

    mpc85xx: copy config 5.15 to 6.1
    
    Simple copy of patches.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/config-6.1 | 269 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 269 insertions(+)

diff --git a/target/linux/mpc85xx/config-6.1 b/target/linux/mpc85xx/config-6.1
new file mode 100644
index 0000000000..aeeeedad85
--- /dev/null
+++ b/target/linux/mpc85xx/config-6.1
@@ -0,0 +1,269 @@
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_ADVANCED_OPTIONS is not set
+CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
+CONFIG_ARCH_MMAP_RND_BITS=11
+CONFIG_ARCH_MMAP_RND_BITS_MAX=17
+CONFIG_ARCH_MMAP_RND_BITS_MIN=11
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
+CONFIG_ASN1=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BOOKE=y
+CONFIG_BOOKE_WDT=y
+# CONFIG_BR200_WP is not set
+# CONFIG_BSC9131_RDB is not set
+# CONFIG_BSC9132_QDS is not set
+# CONFIG_C293_PCIE is not set
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CLZ_TAB=y
+CONFIG_CMDLINE="console=ttyS0,115200"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_OVERRIDE is not set
+# CONFIG_COMMON_CLK is not set
+CONFIG_COMPAT_32BIT_TIME=y
+# CONFIG_CORENET_GENERIC is not set
+# CONFIG_CPM2 is not set
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CRYPTO_AES_PPC_SPE is not set
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
+# CONFIG_CRYPTO_MD5_PPC is not set
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RSA=y
+# CONFIG_CRYPTO_SHA1_PPC is not set
+# CONFIG_CRYPTO_SHA1_PPC_SPE is not set
+# CONFIG_CRYPTO_SHA256_PPC_SPE is not set
+CONFIG_DATA_SHIFT=12
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DNOTIFY=y
+CONFIG_DTC=y
+CONFIG_E500=y
+CONFIG_E500_CPU=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_EDAC=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_LEGACY_SYSFS=y
+CONFIG_EDAC_MPC85XX=y
+CONFIG_EDAC_SUPPORT=y
+# CONFIG_FIREBOX_T10 is not set
+CONFIG_FIXED_PHY=y
+CONFIG_FSL_BOOKE=y
+CONFIG_FSL_EMB_PERFMON=y
+# CONFIG_FSL_FMAN is not set
+CONFIG_FSL_LBC=y
+CONFIG_FSL_PCI=y
+CONFIG_FSL_PQ_MDIO=y
+CONFIG_FSL_SOC=y
+CONFIG_FSL_SOC_BOOKE=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ATOMIC64=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GEN_RTC=y
+# CONFIG_GE_IMP3A is not set
+CONFIG_GIANFAR=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_MPC8XXX=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+# CONFIG_HIVEAP_330 is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HZ_PERIODIC=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_MPC=y
+CONFIG_ILLEGAL_POINTER_VALUE=0
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_WORK=y
+CONFIG_ISA_DMA_API=y
+CONFIG_KERNEL_START=0xc0000000
+# CONFIG_KSI8560 is not set
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOWMEM_CAM_NUM=3
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_LXT_PHY=y
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_MIGRATION=y
+CONFIG_MMU_GATHER_PAGE_SIZE=y
+CONFIG_MODULES_USE_ELF_RELA=y
+# CONFIG_MPC8536_DS is not set
+# CONFIG_MPC8540_ADS is not set
+# CONFIG_MPC8560_ADS is not set
+# CONFIG_MPC85xx_CDS is not set
+# CONFIG_MPC85xx_DS is not set
+# CONFIG_MPC85xx_MDS is not set
+# CONFIG_MPC85xx_RDB is not set
+CONFIG_MPIC=y
+# CONFIG_MPIC_MSGR is not set
+CONFIG_MPIC_TIMER=y
+CONFIG_MPILIB=y
+# CONFIG_MTD_CFI is not set
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MVME2500 is not set
+CONFIG_NEED_PER_CPU_KM=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NLS=y
+CONFIG_NR_CPUS=1
+CONFIG_NR_IRQS=512
+CONFIG_NVMEM=y
+# CONFIG_NVMEM_QORIQ_EFUSE is not set
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_DMA_DEFAULT_COHERENT=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_OLD_SIGSUSPEND=y
+# CONFIG_P1010_RDB is not set
+# CONFIG_P1022_DS is not set
+# CONFIG_P1022_RDK is not set
+# CONFIG_P1023_RDB is not set
+CONFIG_PAGE_OFFSET=0xc0000000
+# CONFIG_PANDA is not set
+CONFIG_PCI=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_PHYLIB=y
+CONFIG_PHYSICAL_ALIGN=0x04000000
+CONFIG_PHYSICAL_START=0x00000000
+# CONFIG_PHYS_64BIT is not set
+# CONFIG_PMU_SYSFS is not set
+# CONFIG_PPA8548 is not set
+CONFIG_PPC=y
+CONFIG_PPC32=y
+# CONFIG_PPC64 is not set
+CONFIG_PPC_85xx=y
+# CONFIG_PPC_8xx is not set
+CONFIG_PPC_ADV_DEBUG_DACS=2
+CONFIG_PPC_ADV_DEBUG_DVCS=0
+CONFIG_PPC_ADV_DEBUG_IACS=2
+CONFIG_PPC_ADV_DEBUG_REGS=y
+CONFIG_PPC_BARRIER_NOSPEC=y
+CONFIG_PPC_BOOK3E_MMU=y
+# CONFIG_PPC_BOOK3S_32 is not set
+CONFIG_PPC_DOORBELL=y
+# CONFIG_PPC_E500MC is not set
+# CONFIG_PPC_EARLY_DEBUG is not set
+CONFIG_PPC_FSL_BOOK3E=y
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PPC_MMU_NOHASH=y
+CONFIG_PPC_PAGE_SHIFT=12
+# CONFIG_PPC_QEMU_E500 is not set
+CONFIG_PPC_SMP_MUXED_IPI=y
+CONFIG_PPC_UDBG_16550=y
+CONFIG_PPC_WERROR=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_QE_GPIO=y
+CONFIG_QUICC_ENGINE=y
+CONFIG_RAS=y
+# CONFIG_RED_15W_REV1 is not set
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_GENERIC=y
+CONFIG_RTC_I2C_AND_SPI=y
+CONFIG_RTC_MC146818_LIB=y
+# CONFIG_SCOM_DEBUGFS is not set
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_OF_PLATFORM=y
+# CONFIG_SERIAL_QE is not set
+# CONFIG_SOCRATES is not set
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPE=y
+CONFIG_SPE_POSSIBLE=y
+CONFIG_SPI=y
+CONFIG_SPI_FSL_ESPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SRCU=y
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_STX_GP3 is not set
+CONFIG_SWPHY=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_TARGET_CPU="8540"
+CONFIG_TARGET_CPU_BOOL=y
+CONFIG_TASK_SIZE=0xc0000000
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_THREAD_SHIFT=13
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TINY_SRCU=y
+# CONFIG_TL_WDR4900_V1 is not set
+# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
+# CONFIG_TQM8540 is not set
+# CONFIG_TQM8541 is not set
+# CONFIG_TQM8548 is not set
+# CONFIG_TQM8555 is not set
+# CONFIG_TQM8560 is not set
+# CONFIG_TWR_P102x is not set
+CONFIG_UCC=y
+CONFIG_UCC_FAST=y
+CONFIG_UCC_GETH=y
+# CONFIG_UGETH_TX_ON_DEMAND is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_VDSO32=y
+# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WS_AP3710I is not set
+# CONFIG_WS_AP3715I is not set
+# CONFIG_WS_AP3825I is not set
+# CONFIG_XES_MPC85xx is not set
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_XZ_DEC_POWERPC=y



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:23 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:23 -0500
Subject: [openwrt/openwrt]  mpc85xx: copy patches 5.15 to 6.1
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14779.1709916692.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7b01179e620d410f0dfbb98313f29025cd1fdea6

commit 7b01179e620d410f0dfbb98313f29025cd1fdea6
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Nov 21 09:38:37 2023 +0100

    mpc85xx: copy patches 5.15 to 6.1
    
    Just copy of config.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 ...erpc-85xx-add-gpio-keys-to-of-match-table.patch |  10 ++
 .../100-powerpc-85xx-tl-wdr4900-v1-support.patch   |  83 ++++++++++
 .../101-powerpc-85xx-hiveap-330-support.patch      |  30 ++++
 .../102-powerpc-add-cmdline-override.patch         |  37 +++++
 .../103-powerpc-85xx-red-15w-rev1.patch            |  29 ++++
 ...85xx-change-P2020RDB-dts-file-for-OpenWRT.patch | 170 +++++++++++++++++++++
 .../105-powerpc-85xx-panda-support.patch           |  30 ++++
 .../106-powerpc-85xx-ws-ap3710i-support.patch      |  30 ++++
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch  |  65 ++++++++
 ...08-powerpc-85xx-firebox-t10-support.patch.patch |  29 ++++
 .../109-powerpc-85xx-add-ws-ap3715i-support.patch  |  50 ++++++
 .../110-powerpc-85xx-br200-wp-support.patch        |  57 +++++++
 ...rpc-bootwrapper-disable-uImage-generation.patch |  42 +++++
 13 files changed, 662 insertions(+)

diff --git a/target/linux/mpc85xx/patches-6.1/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch b/target/linux/mpc85xx/patches-6.1/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
new file mode 100644
index 0000000000..5e5ab10daf
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
@@ -0,0 +1,10 @@
+--- a/arch/powerpc/platforms/85xx/common.c
++++ b/arch/powerpc/platforms/85xx/common.c
+@@ -30,6 +30,7 @@ static const struct of_device_id mpc85xx
+ 	{ .compatible = "fsl,mpc8548-guts", },
+ 	/* Probably unnecessary? */
+ 	{ .compatible = "gpio-leds", },
++	{ .compatible = "gpio-keys", },
+ 	/* For all PCI controllers */
+ 	{ .compatible = "fsl,mpc8540-pci", },
+ 	{ .compatible = "fsl,mpc8548-pcie", },
diff --git a/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
new file mode 100644
index 0000000000..0ecbec3ca4
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
@@ -0,0 +1,83 @@
+From 1d9f596e572917772b87a2a37e1680902964782f Mon Sep 17 00:00:00 2001
+From: Gabor Juhos <juhosg at openwrt.org>
+Date: Wed, 20 Feb 2013 08:40:33 +0100
+Subject: [PATCH] powerpc: 85xx: add support for the TP-Link TL-WDR4900 v1
+ board
+
+This patch adds support for the TP-Link TL-WDR4900 v1
+concurrent dual-band wireless router. The devices uses
+the Freescale P1014 SoC.
+
+Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
+Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
+---
+ arch/powerpc/boot/Makefile           |  3 ++-
+ arch/powerpc/boot/wrapper            |  5 +++++
+ arch/powerpc/platforms/85xx/Kconfig  | 12 ++++++++++++
+ arch/powerpc/platforms/85xx/Makefile |  1 +
+ 4 files changed, 20 insertions(+), 1 deletion(-)
+
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -163,6 +163,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+ src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
+ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
++src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+ 
+ src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
+ 
+@@ -343,7 +344,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+ image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+-
++image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+ 
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -339,6 +339,11 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-tl-wdr4900-v1)
++    platformo="$object/fixed-head.o $object/simpleboot.o"
++    link_address='0x1000000'
++    binary=y
++    ;;
+ simpleboot-*)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
+     binary=y
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -170,6 +170,18 @@ config STX_GP3
+ 	select CPM2
+ 	select DEFAULT_UIMAGE
+ 
++config TL_WDR4900_V1
++    bool "TP-Link TL-WDR4900 v1"
++    select DEFAULT_UIMAGE
++    select ARCH_REQUIRE_GPIOLIB
++    select GPIO_MPC8XXX
++    select SWIOTLB
++    help
++      This option enables support for the TP-Link TL-WDR4900 v1 board.
++
++      This board is a Concurrent Dual-Band wireless router with a
++      Freescale P1014 SoC.
++
+ config TQM8540
+ 	bool "TQ Components TQM8540"
+ 	help
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
+ obj-$(CONFIG_STX_GP3)	  += stx_gp3.o
++obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o
+ obj-$(CONFIG_TQM85xx)	  += tqm85xx.o
+ obj-$(CONFIG_PPA8548)     += ppa8548.o
+ obj-$(CONFIG_SOCRATES)    += socrates.o socrates_fpga_pic.o
diff --git a/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
new file mode 100644
index 0000000000..da95cd2716
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
@@ -0,0 +1,30 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -49,6 +49,17 @@ config BSC9132_QDS
+ 	  and dual StarCore SC3850 DSP cores.
+ 	  Manufacturer : Freescale Semiconductor, Inc
+ 
++config HIVEAP_330
++    bool "Aerohive HiveAP-330"
++    select DEFAULT_UIMAGE
++    select ARCH_REQUIRE_GPIOLIB
++    select GPIO_MPC8XXX
++    help
++      This option enables support for the Aerohive HiveAP-330 board.
++
++      This board is a Concurrent Dual-Band wireless access point with a
++      Freescale P1020 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -12,6 +12,7 @@ obj-y += common.o
+ obj-$(CONFIG_BSC9131_RDB) += bsc913x_rdb.o
+ obj-$(CONFIG_BSC9132_QDS) += bsc913x_qds.o
+ obj-$(CONFIG_C293_PCIE)   += c293pcie.o
++obj-$(CONFIG_HIVEAP_330) += hiveap-330.o
+ obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
+ obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
+ obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
diff --git a/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch
new file mode 100644
index 0000000000..0d26dc8501
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch
@@ -0,0 +1,37 @@
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
+@@ -915,6 +915,14 @@ config CMDLINE_FORCE
+ 
+ endchoice
+ 
++config CMDLINE_OVERRIDE
++    bool "Use alternative cmdline from device tree"
++    help
++      Some bootloaders may have uneditable bootargs. While CMDLINE_FORCE can
++      be used, this is not a good option for kernels that are shared across
++      devices. This setting enables using "chosen/cmdline-override" as the
++      cmdline if it exists in the device tree.
++
+ config EXTRA_TARGETS
+ 	string "Additional default image types"
+ 	help
+--- a/drivers/of/fdt.c
++++ b/drivers/of/fdt.c
+@@ -1162,6 +1162,17 @@ int __init early_init_dt_scan_chosen(uns
+ 	if (p != NULL && l > 0)
+ 		strlcat(data, p, min_t(int, strlen(data) + (int)l, COMMAND_LINE_SIZE));
+ 
++    /* CONFIG_CMDLINE_OVERRIDE is used to fallback to a different
++     * device tree option of chosen/bootargs-override. This is
++     * helpful on boards where u-boot sets bootargs, and is unable
++     * to be modified.
++     */
++#ifdef CONFIG_CMDLINE_OVERRIDE
++	p = of_get_flat_dt_prop(node, "bootargs-override", &l);
++	if (p != NULL && l > 0)
++		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
++#endif
++
+ 	/*
+ 	 * CONFIG_CMDLINE is meant to be a default in case nothing else
+ 	 * managed to set the command line, unless CONFIG_CMDLINE_FORCE
diff --git a/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch b/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch
new file mode 100644
index 0000000000..66044878eb
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch
@@ -0,0 +1,29 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -173,6 +173,16 @@ config XES_MPC85xx
+ 	  Manufacturer: Extreme Engineering Solutions, Inc.
+ 	  URL: <https://www.xes-inc.com/>
+ 
++config RED_15W_REV1
++	bool "Sophos RED 15w Rev.1"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Sophos RED 15w Rev.1 board.
++
++	  This board is a wireless VPN router with a Freescale P1010 SoC.
++
+ config STX_GP3
+ 	bool "Silicon Turnkey Express GP3"
+ 	help
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
++obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
+ obj-$(CONFIG_STX_GP3)	  += stx_gp3.o
+ obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o
+ obj-$(CONFIG_TQM85xx)	  += tqm85xx.o
diff --git a/target/linux/mpc85xx/patches-6.1/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch b/target/linux/mpc85xx/patches-6.1/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
new file mode 100644
index 0000000000..94ed26c3df
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
@@ -0,0 +1,170 @@
+From 93514afd769c305182beeed1f9c4c46235879ef8 Mon Sep 17 00:00:00 2001
+From: Pawel Dembicki <paweldembicki at gmail.com>
+Date: Sun, 30 Dec 2018 23:24:41 +0100
+Subject: [PATCH] powerpc: mpc85xx: change P2020RDB dts file for OpenWRT
+
+This patch apply chages for OpenWRT in P2020RDB
+dts file.
+
+Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
+---
+ arch/powerpc/boot/dts/fsl/p2020rdb.dts | 98 +++++++++++++++++---------
+ 1 file changed, 63 insertions(+), 35 deletions(-)
+
+--- a/arch/powerpc/boot/dts/fsl/p2020rdb.dts
++++ b/arch/powerpc/boot/dts/fsl/p2020rdb.dts
+@@ -5,10 +5,15 @@
+  * Copyright 2009-2012 Freescale Semiconductor Inc.
+  */
+ 
++/dts-v1/;
++
+ /include/ "p2020si-pre.dtsi"
+ 
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/input.h>
++
+ / {
+-	model = "fsl,P2020RDB";
++	model = "Freescale P2020RDB";
+ 	compatible = "fsl,P2020RDB";
+ 
+ 	aliases {
+@@ -34,48 +39,38 @@
+ 			  0x2 0x0 0x0 0xffb00000 0x00020000>;
+ 
+ 		nor at 0,0 {
+-			#address-cells = <1>;
+-			#size-cells = <1>;
+ 			compatible = "cfi-flash";
+ 			reg = <0x0 0x0 0x1000000>;
+ 			bank-width = <2>;
+ 			device-width = <1>;
+ 
+-			partition at 0 {
+-				/* This location must not be altered  */
+-				/* 256KB for Vitesse 7385 Switch firmware */
+-				reg = <0x0 0x00040000>;
+-				label = "NOR (RO) Vitesse-7385 Firmware";
+-				read-only;
+-			};
+-
+-			partition at 40000 {
+-				/* 256KB for DTB Image */
+-				reg = <0x00040000 0x00040000>;
+-				label = "NOR (RO) DTB Image";
+-				read-only;
+-			};
++			partitions {
++				compatible = "fixed-partitions";
++				#address-cells = <1>;
++				#size-cells = <1>;
+ 
+-			partition at 80000 {
+-				/* 3.5 MB for Linux Kernel Image */
+-				reg = <0x00080000 0x00380000>;
+-				label = "NOR (RO) Linux Kernel Image";
+-				read-only;
+-			};
++				partition at 0 {
++					/* This location must not be altered  */
++					/* 256KB for Vitesse 7385 Switch firmware */
++					reg = <0x0 0x00040000>;
++					label = "NOR (RO) Vitesse-7385 Firmware";
++					read-only;
++				};
+ 
+-			partition at 400000 {
+-				/* 11MB for JFFS2 based Root file System */
+-				reg = <0x00400000 0x00b00000>;
+-				label = "NOR (RW) JFFS2 Root File System";
+-			};
++				partition at 40000 {
++					compatible = "denx,fit";
++					reg = <0x00040000 0x00ec0000>;
++					label = "firmware";
++				};
+ 
+-			partition at f00000 {
+-				/* This location must not be altered  */
+-				/* 512KB for u-boot Bootloader Image */
+-				/* 512KB for u-boot Environment Variables */
+-				reg = <0x00f00000 0x00100000>;
+-				label = "NOR (RO) U-Boot Image";
+-				read-only;
++				partition at f00000 {
++					/* This location must not be altered  */
++					/* 512KB for u-boot Bootloader Image */
++					/* 512KB for u-boot Environment Variables */
++					reg = <0x00f00000 0x00100000>;
++					label = "u-boot";
++					read-only;
++				};
+ 			};
+ 		};
+ 
+@@ -85,6 +80,7 @@
+ 			compatible = "fsl,p2020-fcm-nand",
+ 				     "fsl,elbc-fcm-nand";
+ 			reg = <0x1 0x0 0x40000>;
++			nand-ecc-mode = "none";
+ 
+ 			partition at 0 {
+ 				/* This location must not be altered  */
+@@ -140,13 +136,43 @@
+ 	soc: soc at ffe00000 {
+ 		ranges = <0x0 0x0 0xffe00000 0x100000>;
+ 
++		gpio0: gpio-controller at fc00 {
++		};
++
+ 		i2c at 3000 {
++			temperature-sensor at 4c {
++				compatible = "adi,adt7461";
++				reg = <0x4c>;
++			};
++
++			eeprom at 50 {
++				compatible = "atmel,24c256";
++				reg = <0x50>;
++			};
++
+ 			rtc at 68 {
+ 				compatible = "dallas,ds1339";
+ 				reg = <0x68>;
+ 			};
+ 		};
+ 
++		i2c at 3100 {
++			pmic at 11 {
++				compatible = "zl2006";
++				reg = <0x11>;
++			};
++
++			gpio at 18 {
++				compatible = "nxp,pca9557";
++				reg = <0x18>;
++			};
++
++			eeprom at 52 {
++				compatible = "atmel,24c01";
++				reg = <0x52>;
++			};
++		};
++
+ 		spi at 7000 {
+ 			flash at 0 {
+ 				#address-cells = <1>;
+@@ -200,10 +226,12 @@
+ 			phy0: ethernet-phy at 0 {
+ 				interrupts = <3 1 0 0>;
+ 				reg = <0x0>;
++				reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+ 			};
+ 			phy1: ethernet-phy at 1 {
+ 				interrupts = <3 1 0 0>;
+ 				reg = <0x1>;
++				reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
+ 			};
+ 			tbi-phy at 2 {
+ 				device_type = "tbi-phy";
diff --git a/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch b/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch
new file mode 100644
index 0000000000..4913c614a8
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch
@@ -0,0 +1,30 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -60,6 +60,17 @@ config HIVEAP_330
+       This board is a Concurrent Dual-Band wireless access point with a
+       Freescale P1020 SoC.
+ 
++config PANDA
++	bool "OCEDO PANDA"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the OCEDO PANDA board.
++
++	  This board is a Concurrent Dual-Band wireless access point with a
++	  Freescale P1020 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -24,6 +24,7 @@ obj-$(CONFIG_P1010_RDB)   += p1010rdb.o
+ obj-$(CONFIG_P1022_DS)    += p1022_ds.o
+ obj-$(CONFIG_P1022_RDK)   += p1022_rdk.o
+ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
++obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
diff --git a/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch b/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch
new file mode 100644
index 0000000000..124376ffd9
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch
@@ -0,0 +1,30 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -71,6 +71,17 @@ config PANDA
+ 	  This board is a Concurrent Dual-Band wireless access point with a
+ 	  Freescale P1020 SoC.
+ 
++config WS_AP3710I
++	bool "Enterasys WS-AP3710i"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Enterasys WS-AP3710i board.
++
++	  This board is a Concurrent Dual-Band wireless access point with a
++	  Freescale P1020 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -26,6 +26,7 @@ obj-$(CONFIG_P1022_RDK)   += p1022_rdk.o
+ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
++obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
+ obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
diff --git a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
new file mode 100644
index 0000000000..bd731a2344
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -0,0 +1,65 @@
+From 2fa1a7983ef30f3c7486f9b07c001bee87d1f6d6 Mon Sep 17 00:00:00 2001
+From: Martin Kennedy <hurricos at gmail.com>
+Date: Sat, 1 Jan 2022 11:01:37 -0500
+Subject: [PATCH] PowerPC 85xx: Add WS-AP3825i support
+
+This patch adds support for building Linux for the Extreme Networks
+WS-AP3825i AP.
+
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -82,6 +82,16 @@ config WS_AP3710I
+ 	  This board is a Concurrent Dual-Band wireless access point with a
+ 	  Freescale P1020 SoC.
+ 
++config WS_AP3825I
++	bool "Extreme Networks WS-AP3825i"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Extreme Networks WS-AP3825i board.
++	  This board is a Concurrent Dual-Band wireless access point with a
++	  Freescale P1020 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
++obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
+ obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_POWERNV) += pserie
+ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
+ src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
++src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
+ 
+ src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
+ 
+@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
++image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+ 
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -339,6 +339,7 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-ws-ap3825i|\
+ simpleboot-tl-wdr4900-v1)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
+     link_address='0x1000000'
diff --git a/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch b/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch
new file mode 100644
index 0000000000..b074113eaa
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch
@@ -0,0 +1,29 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -92,6 +92,16 @@ config WS_AP3825I
+ 	  This board is a Concurrent Dual-Band wireless access point with a
+ 	  Freescale P1020 SoC.
+ 
++config FIREBOX_T10
++	bool "Watchguard Firebox T10"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Watchguard Firebox T10 board.
++	  This board is a VPN Gateway-Router with a
++	  Freescale P1010 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -28,6 +28,7 @@ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
+ obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
++obj-$(CONFIG_FIREBOX_T10) += firebox_t10.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
+ obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
diff --git a/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
new file mode 100644
index 0000000000..692cef0417
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
@@ -0,0 +1,50 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -82,6 +82,17 @@ config WS_AP3710I
+ 	  This board is a Concurrent Dual-Band wireless access point with a
+ 	  Freescale P1020 SoC.
+ 
++config WS_AP3715I
++	bool "Enterasys WS-AP3715i"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Enterasys WS-AP3715i board.
++
++	  This board is a Concurrent Dual-Band wireless access point with a
++	  Freescale P1010 SoC.
++
+ config WS_AP3825I
+ 	bool "Extreme Networks WS-AP3825i"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
++obj-$(CONFIG_WS_AP3715I)  += ws-ap3715i.o
+ obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
+ obj-$(CONFIG_FIREBOX_T10) += firebox_t10.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -346,6 +346,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
++image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
+ image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -339,6 +339,7 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-ws-ap3715i|\
+ simpleboot-ws-ap3825i|\
+ simpleboot-tl-wdr4900-v1)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
diff --git a/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
new file mode 100644
index 0000000000..eb70a4c4c4
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
@@ -0,0 +1,57 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -49,6 +49,16 @@ config BSC9132_QDS
+ 	  and dual StarCore SC3850 DSP cores.
+ 	  Manufacturer : Freescale Semiconductor, Inc
+ 
++config BR200_WP
++    bool "Aerohive BR200-WP"
++    select DEFAULT_UIMAGE
++    select ARCH_REQUIRE_GPIOLIB
++    select GPIO_MPC8XXX
++    help
++      This option enables support for the Aerohive BR200-WP board.
++
++      This board is a wireless router with a Freescale P1011 SoC.
++
+ config HIVEAP_330
+     bool "Aerohive HiveAP-330"
+     select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -12,6 +12,7 @@ obj-y += common.o
+ obj-$(CONFIG_BSC9131_RDB) += bsc913x_rdb.o
+ obj-$(CONFIG_BSC9132_QDS) += bsc913x_qds.o
+ obj-$(CONFIG_C293_PCIE)   += c293pcie.o
++obj-$(CONFIG_BR200_WP) += br200-wp.o
+ obj-$(CONFIG_HIVEAP_330) += hiveap-330.o
+ obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
+ obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -163,6 +163,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+ src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
+ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
++src-plat-$(CONFIG_BR200_WP) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
+ 
+@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+ image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
++image-$(CONFIG_BR200_WP)		+= simpleImage.br200-wp
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
+ image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
+ image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -339,6 +339,7 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-br200-wp|\
+ simpleboot-ws-ap3715i|\
+ simpleboot-ws-ap3825i|\
+ simpleboot-tl-wdr4900-v1)
diff --git a/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
new file mode 100644
index 0000000000..1af5aefe0b
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
@@ -0,0 +1,42 @@
+From d43ab14605510d9d2bd257a8cd70f24ada4621b0 Mon Sep 17 00:00:00 2001
+From: David Bauer <mail at david-bauer.net>
+Date: Sat, 29 Feb 2020 14:27:04 +0100
+Subject: [PATCH] powerpc: bootwrapper: disable uImage generation
+
+Due to CONFIG_KERNEL_XZ symbol, the bootwrapper code tries to
+instruct the mkimage to use the xz compression, which isn't
+supported. This disables the uImage generation, as OpenWrt
+generates individual uImages for each board using it's own
+toolchain.
+
+Signed-off-by: David Bauer <mail at david-bauer.net>
+---
+ arch/powerpc/boot/Makefile | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -274,7 +274,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
+ image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
+ image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
+ image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
+-image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
+ image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
+ 
+ #
+@@ -409,15 +408,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+ $(obj)/vmlinux.strip: vmlinux
+ 	$(STRIP) -s -R .comment $< -o $@
+ 
+-$(obj)/uImage: vmlinux $(wrapperbits) FORCE
+-	$(call if_changed,wrap,uboot)
+-
+-$(obj)/uImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
+-	$(call if_changed,wrap,uboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
+-
+-$(obj)/uImage.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
+-	$(call if_changed,wrap,uboot-$*,,$(obj)/dts/$*.dtb)
+-
+ $(obj)/cuImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
+ 	$(call if_changed,wrap,cuboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
+ 



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:24 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:24 -0500
Subject: [openwrt/openwrt]  mpc85xx: refresh 6.1 patches
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14782.1709916696.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/44ed2dc91c635d6a2e5196e07b460aa5250e508b

commit 44ed2dc91c635d6a2e5196e07b460aa5250e508b
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Nov 21 10:43:46 2023 +0100

    mpc85xx: refresh 6.1 patches
    
    Most changes done by "make target/linux/refresh"
    
    Manually refreshed:
    102-powerpc-add-cmdline-override.patch
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 .../patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch   |  8 ++++----
 .../patches-6.1/101-powerpc-85xx-hiveap-330-support.patch      |  2 +-
 .../mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch | 10 +++++-----
 .../mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch    |  2 +-
 .../mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch   |  2 +-
 .../patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch      |  2 +-
 .../patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch  |  8 ++++----
 .../108-powerpc-85xx-firebox-t10-support.patch.patch           |  2 +-
 .../patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch  |  6 +++---
 .../patches-6.1/110-powerpc-85xx-br200-wp-support.patch        |  8 ++++----
 .../900-powerpc-bootwrapper-disable-uImage-generation.patch    |  4 ++--
 11 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
index 0ecbec3ca4..7b9016d2fe 100644
--- a/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
@@ -19,7 +19,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
 
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -163,6 +163,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
  src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
@@ -27,7 +27,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
  
  src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
  
-@@ -343,7 +344,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+@@ -359,7 +360,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
  image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
@@ -38,7 +38,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
  
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,11 @@ adder875-redboot)
+@@ -341,6 +341,11 @@ adder875-redboot)
      platformo="$object/fixed-head.o $object/redboot-8xx.o"
      binary=y
      ;;
@@ -52,7 +52,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
      binary=y
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -170,6 +170,18 @@ config STX_GP3
+@@ -163,6 +163,18 @@ config STX_GP3
  	select CPM2
  	select DEFAULT_UIMAGE
  
diff --git a/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
index da95cd2716..fe8745361d 100644
--- a/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -49,6 +49,17 @@ config BSC9132_QDS
+@@ -40,6 +40,17 @@ config BSC9132_QDS
  	  and dual StarCore SC3850 DSP cores.
  	  Manufacturer : Freescale Semiconductor, Inc
  
diff --git a/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch
index 0d26dc8501..b83e5f86d2 100644
--- a/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch
+++ b/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/Kconfig
 +++ b/arch/powerpc/Kconfig
-@@ -915,6 +915,14 @@ config CMDLINE_FORCE
+@@ -954,6 +954,14 @@ config CMDLINE_FORCE
  
  endchoice
  
@@ -17,9 +17,9 @@
  	help
 --- a/drivers/of/fdt.c
 +++ b/drivers/of/fdt.c
-@@ -1162,6 +1162,17 @@ int __init early_init_dt_scan_chosen(uns
+@@ -1187,6 +1187,17 @@ int __init early_init_dt_scan_chosen(cha
  	if (p != NULL && l > 0)
- 		strlcat(data, p, min_t(int, strlen(data) + (int)l, COMMAND_LINE_SIZE));
+ 		strlcat(cmdline, p, min_t(int, strlen(cmdline) + (int)l, COMMAND_LINE_SIZE));
  
 +    /* CONFIG_CMDLINE_OVERRIDE is used to fallback to a different
 +     * device tree option of chosen/bootargs-override. This is
@@ -29,9 +29,9 @@
 +#ifdef CONFIG_CMDLINE_OVERRIDE
 +	p = of_get_flat_dt_prop(node, "bootargs-override", &l);
 +	if (p != NULL && l > 0)
-+		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
++		strlcpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE));
 +#endif
 +
+ handle_cmdline:
  	/*
  	 * CONFIG_CMDLINE is meant to be a default in case nothing else
- 	 * managed to set the command line, unless CONFIG_CMDLINE_FORCE
diff --git a/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch b/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch
index 66044878eb..711d98abe7 100644
--- a/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch
+++ b/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -173,6 +173,16 @@ config XES_MPC85xx
+@@ -166,6 +166,16 @@ config XES_MPC85xx
  	  Manufacturer: Extreme Engineering Solutions, Inc.
  	  URL: <https://www.xes-inc.com/>
  
diff --git a/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch b/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch
index 4913c614a8..3c24a373ab 100644
--- a/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -60,6 +60,17 @@ config HIVEAP_330
+@@ -51,6 +51,17 @@ config HIVEAP_330
        This board is a Concurrent Dual-Band wireless access point with a
        Freescale P1020 SoC.
  
diff --git a/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch b/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch
index 124376ffd9..5ac3f2f2d9 100644
--- a/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -71,6 +71,17 @@ config PANDA
+@@ -62,6 +62,17 @@ config PANDA
  	  This board is a Concurrent Dual-Band wireless access point with a
  	  Freescale P1020 SoC.
  
diff --git a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
index bd731a2344..0fa1b4172b 100644
--- a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -8,7 +8,7 @@ WS-AP3825i AP.
 
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -82,6 +82,16 @@ config WS_AP3710I
+@@ -73,6 +73,16 @@ config WS_AP3710I
  	  This board is a Concurrent Dual-Band wireless access point with a
  	  Freescale P1020 SoC.
  
@@ -37,7 +37,7 @@ WS-AP3825i AP.
  obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_POWERNV) += pserie
+@@ -180,6 +180,7 @@ src-plat-$(CONFIG_PPC_POWERNV) += pserie
  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
@@ -45,7 +45,7 @@ WS-AP3825i AP.
  
  src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
  
-@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
+@@ -361,6 +362,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
@@ -55,7 +55,7 @@ WS-AP3825i AP.
  
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,7 @@ adder875-redboot)
+@@ -341,6 +341,7 @@ adder875-redboot)
      platformo="$object/fixed-head.o $object/redboot-8xx.o"
      binary=y
      ;;
diff --git a/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch b/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch
index b074113eaa..0b3a93b848 100644
--- a/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch
+++ b/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -92,6 +92,16 @@ config WS_AP3825I
+@@ -83,6 +83,16 @@ config WS_AP3825I
  	  This board is a Concurrent Dual-Band wireless access point with a
  	  Freescale P1020 SoC.
  
diff --git a/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
index 692cef0417..8f34f14d54 100644
--- a/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -82,6 +82,17 @@ config WS_AP3710I
+@@ -73,6 +73,17 @@ config WS_AP3710I
  	  This board is a Concurrent Dual-Band wireless access point with a
  	  Freescale P1020 SoC.
  
@@ -30,7 +30,7 @@
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -346,6 +346,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
+@@ -362,6 +362,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
@@ -40,7 +40,7 @@
  image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,7 @@ adder875-redboot)
+@@ -341,6 +341,7 @@ adder875-redboot)
      platformo="$object/fixed-head.o $object/redboot-8xx.o"
      binary=y
      ;;
diff --git a/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
index eb70a4c4c4..430af1efb1 100644
--- a/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -49,6 +49,16 @@ config BSC9132_QDS
+@@ -40,6 +40,16 @@ config BSC9132_QDS
  	  and dual StarCore SC3850 DSP cores.
  	  Manufacturer : Freescale Semiconductor, Inc
  
@@ -29,7 +29,7 @@
  obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -163,6 +163,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
  src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
@@ -37,7 +37,7 @@
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
  
-@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+@@ -361,6 +362,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
  image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
@@ -47,7 +47,7 @@
  image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,7 @@ adder875-redboot)
+@@ -341,6 +341,7 @@ adder875-redboot)
      platformo="$object/fixed-head.o $object/redboot-8xx.o"
      binary=y
      ;;
diff --git a/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
index 1af5aefe0b..f1e0f73f88 100644
--- a/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
+++ b/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
@@ -16,7 +16,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -274,7 +274,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
+@@ -290,7 +290,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
  image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
  image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
  image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
@@ -24,7 +24,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
  
  #
-@@ -409,15 +408,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+@@ -425,15 +424,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
  $(obj)/vmlinux.strip: vmlinux
  	$(STRIP) -s -R .comment $< -o $@
  



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:28 -0500
Subject: [openwrt/openwrt]  mpc85xx: p1020: convert Aerohive AP330/AP350 to
 simpleImage
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14783.1709916696.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/102009f3ea48a49114485fb119072850f40ae1e8

commit 102009f3ea48a49114485fb119072850f40ae1e8
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Thu Mar 7 22:43:41 2024 +0100

    mpc85xx: p1020: convert Aerohive AP330/AP350 to simpleImage
    
    with 6.1, the kernel no longer fitted into the 16 MiB and
    kicking down the can and increasing KERNEL_SIZE to 20 MiB
    didn't help as the device failed to boot.
    
    Using 'kernel-bin | gzip | uimage gzip' didn't work since the
    uboot does not have enough heap to decompress these big kernels.
    
    And finally playing around with uboot was more a hassle than
    converting this device to take the simpleImage-boot-route in
    the future.
    
    Note: The device now takes even longer on the first boot-up after
    the flash due to JFFS2 initializing all the remaining flash.
    Be prepared to wait up to 10 minutes before the green status LED
    stops blinking and will shine a solid green!
    
    (On the plus site: the device now has ~10 MiB of additional
    space for rootfs+rootfs_data).
    
    Note2: This patch includes a kernel patch refresh.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 .../files/arch/powerpc/boot/dts/hiveap-330.dts     | 142 ++++++++++++++++++---
 target/linux/mpc85xx/image/p1020.mk                |   7 +-
 target/linux/mpc85xx/p1020/target.mk               |   2 +-
 .../101-powerpc-85xx-hiveap-330-support.patch      |  28 ++++
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch  |  12 +-
 .../109-powerpc-85xx-add-ws-ap3715i-support.patch  |   8 +-
 .../110-powerpc-85xx-br200-wp-support.patch        |   8 +-
 ...rpc-bootwrapper-disable-uImage-generation.patch |   4 +-
 .../101-powerpc-85xx-hiveap-330-support.patch      |  28 ++++
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch  |  12 +-
 .../109-powerpc-85xx-add-ws-ap3715i-support.patch  |   8 +-
 .../110-powerpc-85xx-br200-wp-support.patch        |   8 +-
 ...rpc-bootwrapper-disable-uImage-generation.patch |   4 +-
 13 files changed, 219 insertions(+), 52 deletions(-)

diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts
index 6ad5c4ccd6..7ba282766e 100644
--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts
+++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts
@@ -27,11 +27,105 @@
 		spi0 = &spi0;
 	};
 
+	chosen {
+		/*
+		 * not yet implemented.
+		 * stdout-path = &serial0 ":9600n8";
+		 * <https://www.spinics.net/lists/devicetree-compiler/msg02487.html>
+		 *
+		 * this should work... but it doesn't because CONFIG_CMDLINE in our
+		 * OpenWrt's target config sets "console=ttyS0,115200"
+		 * stdout-path = "/soc at ffe00000/serial at 4500:9600n8";
+		 */
+
+		bootargs = "console=ttyS0,9600n8";
+	};
+
+	cpus {
+		PowerPC,P1020 at 0 {
+			i-cache-sets = <0x80>;
+			i-cache-size = <0x8000>;
+			i-cache-block-size = <0x20>;
+			d-cache-sets = <0x80>;
+			d-cache-size = <0x8000>;
+			d-cache-block-size = <0x20>;
+			status = "okay";
+			clock-frequency = <533333328>; /* 533.33 MHz */
+			bus-frequency = <266666664>;  /* 266.66 MHz */
+			timebase-frequency = <33333333>; /* 33.33 MHz */
+		};
+
+		PowerPC,P1020 at 1 {
+			i-cache-sets = <0x80>;
+			i-cache-size = <0x8000>;
+			i-cache-block-size = <0x20>;
+			d-cache-sets = <0x80>;
+			d-cache-size = <0x8000>;
+			d-cache-block-size = <0x20>;
+			cpu-release-addr = <0x00 0xffff240>;
+			enable-method = "spin-table";
+			status = "disabled";
+			clock-frequency = <533333328>;
+			bus-frequency = <266666664>;
+			timebase-frequency = <33333333>;
+		};
+	};
+
 	memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+
+		reg = <0x00 0x00 0x00 0x10000000>;
 		device_type = "memory";
 	};
 
+	/*
+	 * Usually, u-boot provided /memreserve/ properties by adding them during boot.
+	 * these have been converted to reserved-memory entries.
+	 */
+	reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		/*
+		 * /memreserve/   0x0000000000ffa000 0x0000000000004000;
+		 * The kernel complains when booting:
+		 *
+		 * | OF: fdt: Reserved memory: failed to reserve memory for node
+		 *		'firmware at ffa000': base 0x00ffa000, size 0 MiB
+		 *
+		 * But this likely uboot's bootargs + modified DTB. And if so, we don't care.
+		 * This is because we rely on our own dtb that's in the simpleImage.
+		 *
+		 * Note: This is backed up by u-boot. just before the kernel executes
+		 *	 it prints this final line:
+		 *	 |  Loading Device Tree to 00ff9000, end 00fff1c4 ... OK
+		 *
+		 * firmware at ffa000 {
+		 *	reg = <0x0 0xffa000 0x0 0x4000>;
+		 *	no-map;
+		 * };
+		 */
+
+		// /memreserve/   0x000000000fe2f000 0x0000000000000021;
+		firmware at fe2f000 {
+			reg = <0x0 0xfe2f000 0x0 0x21>;
+			no-map;
+		};
+
+		/*
+		 * /memreserve/   0x000000000ffff000 0x0000000000001000;
+		 * that's the spin-table - see second CPU core binding.
+		 */
+		firmware at ffff000 {
+			reg = <0x0 0xffff000 0x0 0x1000>;
+			no-map;
+		};
+	};
+
 	board_lbc: lbc: localbus at ffe05000 {
+		bus-frequency = <16666666>; /* 16.66 MHz */
 		reg = <0 0xffe05000 0 0x1000>;
 		ranges = <0x0 0x0 0x0 0xec000000 0x4000000>;
 
@@ -117,8 +211,12 @@
 
 	board_soc: soc: soc at ffe00000 {
 		ranges = <0x0 0x0 0xffe00000 0x100000>;
+		bus-frequency = <266666664>;
 
 		spi0: spi at 7000 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
 			temperature-sensor at 1 {
 				compatible = "ti,tmp125";
 				reg = <1>;
@@ -136,6 +234,9 @@
 				compatible = "national,lp5521";
 				reg = <0x32>;
 				clock-mode = /bits/ 8 <2>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+
 #if 1
 				led_fault_red: led at 0 {
 					reg = <0>;
@@ -230,6 +331,9 @@
 		};
 
 		enet0: ethernet at b0000 {
+			rx-stash-idx = <0x00>;
+			rx-stash-len = <0x60>;
+			bd-stash;
 			status = "okay";
 			phy-handle = <&phy0>;
 			phy-connection-type = "rgmii-id";
@@ -242,6 +346,9 @@
 		};
 
 		enet2: ethernet at b2000 {
+			rx-stash-idx = <0x00>;
+			rx-stash-len = <0x60>;
+			bd-stash;
 			status = "okay";
 			phy-handle = <&phy1>;
 			phy-connection-type = "rgmii-id";
@@ -264,31 +371,22 @@
 
 	pci0: pcie at ffe09000 {
 		reg = <0x0 0xffe09000 0x0 0x1000>;
-		ranges = <0x2000000 0x0 0xa0000000 0x0 0xa0000000 0x0 0x20000000
-			0x1000000 0x0 0x00000000 0x0 0xffc30000 0x0 0x10000>;
+		ranges = <0x2000000 0x0 0xa0000000 0x0 0xa0000000 0x0 0x20000000>,
+			 <0x1000000 0x0 0x00000000 0x0 0xffc30000 0x0 0x10000>;
 		pcie at 0 {
-			ranges = <0x2000000 0x0 0xa0000000
-				  0x2000000 0x0 0xa0000000
-				  0x0 0x20000000
-
-				  0x1000000 0x0 0x0
-				  0x1000000 0x0 0x0
-				  0x0 0x100000>;
+			ranges = <0x2000000 0x0 0xa0000000 0x2000000 0x0 0xa0000000 0x0 0x20000000>,
+				 <0x1000000 0x0 0x00000000 0x1000000 0x0 0x00000000 0x0 0x00100000>;
 		};
 	};
 
 	pci1: pcie at ffe0a000 {
 		reg = <0x0 0xffe0a000 0x0 0x1000>;
-		ranges = <0x2000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000
-		      0x1000000 0x0 0x00000000 0x0 0xffc20000 0x0 0x10000>;
-		pcie at 0 {
-			ranges = <0x2000000 0x0 0xc0000000
-			      0x2000000 0x0 0xc0000000
-				  0x0 0x20000000
+		ranges = <0x2000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000>,
+			 <0x1000000 0x0 0x00000000 0x0 0xffc20000 0x0 0x10000>;
 
-				  0x1000000 0x0 0x0
-				  0x1000000 0x0 0x0
-				  0x0 0x100000>;
+		pcie at 0 {
+			ranges = <0x2000000 0x0 0xc0000000 0x2000000 0x0 0xc0000000 0x0 0x20000000>,
+				 <0x1000000 0x0 0x00000000 0x1000000 0x0 0x00000000 0x0 0x00100000>;
 		};
 	};
 
@@ -302,7 +400,15 @@
 		};
 	};
 };
+
 /include/ "fsl/p1020si-post.dtsi"
+&serial0 {
+	clock-frequency = <266666664>;
+};
+
+&serial1 {
+	clock-frequency = <266666664>;
+};
 
 /*
  * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses
diff --git a/target/linux/mpc85xx/image/p1020.mk b/target/linux/mpc85xx/image/p1020.mk
index d3d7f93ddd..1d18a63dc0 100644
--- a/target/linux/mpc85xx/image/p1020.mk
+++ b/target/linux/mpc85xx/image/p1020.mk
@@ -18,9 +18,14 @@ define Device/aerohive_hiveap-330
   DEVICE_PACKAGES := kmod-tpm-i2c-atmel kmod-hwmon-lm70
   BLOCKSIZE := 128k
   KERNEL := kernel-bin | uImage none
-  KERNEL_INITRAMFS := kernel-bin | MultiImage none
+  KERNEL_INITRAMFS := kernel-bin | uImage none
+  KERNEL_NAME := simpleImage.hiveap-330
   KERNEL_SIZE := 16m
   IMAGES := sysupgrade.bin
+  KERNEL_ENTRY := 0x1500000
+  KERNEL_LOADADDR := 0x1500000
+  # append-dtb is still needed, as otherwise u-boot bootm complains
+  # about not having a FDT to edit.
   IMAGE/sysupgrade.bin := append-dtb | pad-to 256k | append-kernel | \
 	append-rootfs | pad-rootfs | check-size | append-metadata
   IMAGE_SIZE = 63m
diff --git a/target/linux/mpc85xx/p1020/target.mk b/target/linux/mpc85xx/p1020/target.mk
index 8770edb9a9..5a5d0bf07d 100644
--- a/target/linux/mpc85xx/p1020/target.mk
+++ b/target/linux/mpc85xx/p1020/target.mk
@@ -1,5 +1,5 @@
 BOARDNAME:=P1020
-KERNEL_IMAGES:=simpleImage.ws-ap3825i
+KERNEL_IMAGES:=simpleImage.ws-ap3825i simpleImage.hiveap-330
 
 define Target/Description
 	Build firmware images for Freescale P1020 based boards.
diff --git a/target/linux/mpc85xx/patches-5.15/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-5.15/101-powerpc-85xx-hiveap-330-support.patch
index da95cd2716..7d531e4ffc 100644
--- a/target/linux/mpc85xx/patches-5.15/101-powerpc-85xx-hiveap-330-support.patch
+++ b/target/linux/mpc85xx/patches-5.15/101-powerpc-85xx-hiveap-330-support.patch
@@ -28,3 +28,31 @@
  obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
  obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
  obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -163,6 +163,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+ src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
+ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
++src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+ 
+ src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
+@@ -344,6 +345,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+ image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
++image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -339,6 +339,7 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-hiveap-330|\
+ simpleboot-tl-wdr4900-v1)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
+     link_address='0x1500000'
diff --git a/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch
index 51da0f4527..9ccd9e877f 100644
--- a/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch
+++ b/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -37,17 +37,17 @@ WS-AP3825i AP.
  obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_POWERNV) += pserie
- src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+@@ -165,6 +165,7 @@ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) +=
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
+ src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
 +src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
  
  src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
  
-@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
- image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+@@ -347,6 +348,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
 +image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
  # Board ports in arch/powerpc/platform/86xx/Kconfig
@@ -55,10 +55,10 @@ WS-AP3825i AP.
  
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,7 @@ adder875-redboot)
-     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+@@ -340,6 +340,7 @@ adder875-redboot)
      binary=y
      ;;
+ simpleboot-hiveap-330|\
 +simpleboot-ws-ap3825i|\
  simpleboot-tl-wdr4900-v1)
      platformo="$object/fixed-head.o $object/simpleboot.o"
diff --git a/target/linux/mpc85xx/patches-5.15/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-5.15/109-powerpc-85xx-add-ws-ap3715i-support.patch
index 692cef0417..59f3184295 100644
--- a/target/linux/mpc85xx/patches-5.15/109-powerpc-85xx-add-ws-ap3715i-support.patch
+++ b/target/linux/mpc85xx/patches-5.15/109-powerpc-85xx-add-ws-ap3715i-support.patch
@@ -30,9 +30,9 @@
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -346,6 +346,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
- image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+@@ -348,6 +348,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
 +image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
  image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
@@ -40,10 +40,10 @@
  image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,7 @@ adder875-redboot)
-     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+@@ -340,6 +340,7 @@ adder875-redboot)
      binary=y
      ;;
+ simpleboot-hiveap-330|\
 +simpleboot-ws-ap3715i|\
  simpleboot-ws-ap3825i|\
  simpleboot-tl-wdr4900-v1)
diff --git a/target/linux/mpc85xx/patches-5.15/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-5.15/110-powerpc-85xx-br200-wp-support.patch
index eb70a4c4c4..21a26f1a73 100644
--- a/target/linux/mpc85xx/patches-5.15/110-powerpc-85xx-br200-wp-support.patch
+++ b/target/linux/mpc85xx/patches-5.15/110-powerpc-85xx-br200-wp-support.patch
@@ -34,17 +34,17 @@
  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
 +src-plat-$(CONFIG_BR200_WP) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
- 
-@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+@@ -346,6 +347,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
  image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
 +image-$(CONFIG_BR200_WP)		+= simpleImage.br200-wp
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
  image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
- image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
 @@ -339,6 +339,7 @@ adder875-redboot)
@@ -52,6 +52,6 @@
      binary=y
      ;;
 +simpleboot-br200-wp|\
+ simpleboot-hiveap-330|\
  simpleboot-ws-ap3715i|\
  simpleboot-ws-ap3825i|\
- simpleboot-tl-wdr4900-v1)
diff --git a/target/linux/mpc85xx/patches-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch
index 1af5aefe0b..7f99bd5211 100644
--- a/target/linux/mpc85xx/patches-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch
+++ b/target/linux/mpc85xx/patches-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch
@@ -16,7 +16,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -274,7 +274,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
+@@ -275,7 +275,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
  image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
  image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
  image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
@@ -24,7 +24,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
  
  #
-@@ -409,15 +408,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+@@ -411,15 +410,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
  $(obj)/vmlinux.strip: vmlinux
  	$(STRIP) -s -R .comment $< -o $@
  
diff --git a/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
index fe8745361d..e8b6632f2b 100644
--- a/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
@@ -28,3 +28,31 @@
  obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
  obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
  obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+ src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
+ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
++src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+ 
+ src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
+@@ -360,6 +361,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+ image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
++image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -341,6 +341,7 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-hiveap-330|\
+ simpleboot-tl-wdr4900-v1)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
+     link_address='0x1500000'
diff --git a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
index fb697e1d1f..63e7e46bbc 100644
--- a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -37,17 +37,17 @@ WS-AP3825i AP.
  obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -180,6 +180,7 @@ src-plat-$(CONFIG_PPC_POWERNV) += pserie
- src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+@@ -181,6 +181,7 @@ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) +=
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
+ src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
 +src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
  
  src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
  
-@@ -361,6 +362,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
- image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+@@ -363,6 +364,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
 +image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
  # Board ports in arch/powerpc/platform/86xx/Kconfig
@@ -55,10 +55,10 @@ WS-AP3825i AP.
  
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -341,6 +341,7 @@ adder875-redboot)
-     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+@@ -342,6 +342,7 @@ adder875-redboot)
      binary=y
      ;;
+ simpleboot-hiveap-330|\
 +simpleboot-ws-ap3825i|\
  simpleboot-tl-wdr4900-v1)
      platformo="$object/fixed-head.o $object/simpleboot.o"
diff --git a/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
index 8f34f14d54..f8e33ae637 100644
--- a/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
@@ -30,9 +30,9 @@
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -362,6 +362,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
- image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+@@ -364,6 +364,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
 +image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
  image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
@@ -40,10 +40,10 @@
  image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -341,6 +341,7 @@ adder875-redboot)
-     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+@@ -342,6 +342,7 @@ adder875-redboot)
      binary=y
      ;;
+ simpleboot-hiveap-330|\
 +simpleboot-ws-ap3715i|\
  simpleboot-ws-ap3825i|\
  simpleboot-tl-wdr4900-v1)
diff --git a/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
index 430af1efb1..b063b3dab7 100644
--- a/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
+++ b/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
@@ -34,17 +34,17 @@
  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
 +src-plat-$(CONFIG_BR200_WP) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
- 
-@@ -361,6 +362,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+@@ -362,6 +363,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
  image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
 +image-$(CONFIG_BR200_WP)		+= simpleImage.br200-wp
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
  image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
- image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
 @@ -341,6 +341,7 @@ adder875-redboot)
@@ -52,6 +52,6 @@
      binary=y
      ;;
 +simpleboot-br200-wp|\
+ simpleboot-hiveap-330|\
  simpleboot-ws-ap3715i|\
  simpleboot-ws-ap3825i|\
- simpleboot-tl-wdr4900-v1)
diff --git a/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
index f1e0f73f88..648aa0421d 100644
--- a/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
+++ b/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
@@ -16,7 +16,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -290,7 +290,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
+@@ -291,7 +291,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
  image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
  image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
  image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
@@ -24,7 +24,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
  
  #
-@@ -425,15 +424,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+@@ -427,15 +426,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
  $(obj)/vmlinux.strip: vmlinux
  	$(STRIP) -s -R .comment $< -o $@
  



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:31 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:31 -0500
Subject: [openwrt/openwrt]  ath79: add aliases to qca955x.dtsi for uart0/1
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14790.1709917493.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/bb6d11e53487e397b1c1cec1767b593dd1025c18

commit bb6d11e53487e397b1c1cec1767b593dd1025c18
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Mon Mar 4 20:28:23 2024 +0900

    ath79: add aliases to qca955x.dtsi for uart0/1
    
    Add aliases with "serialN = &uartN;" of uart0/1 on QCA955x SoCs to
    qca955x.dtsi, to enable uart1 on Linux Kernel.
    
    without this:
    
    [    0.342915] ar933x-uart 18500000.uart: unable to get alias id, err=-19
    
    Additionally, remove "serial0 = &uart;" alias from QCA955x device
    dts/dtsi files.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 .../linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts | 1 -
 target/linux/ath79/dts/qca9558_comfast_cf-e380ac-v2.dts              | 1 -
 target/linux/ath79/dts/qca9558_dlink_dir-629-a1.dts                  | 1 -
 target/linux/ath79/dts/qca9558_mikrotik_routerboard-92x.dtsi         | 1 -
 target/linux/ath79/dts/qca9558_mikrotik_routerboard-96x.dtsi         | 1 -
 target/linux/ath79/dts/qca9558_openmesh_a60.dtsi                     | 1 -
 target/linux/ath79/dts/qca9558_openmesh_mr.dtsi                      | 1 -
 target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v1.dts               | 1 -
 target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v2.dts               | 1 -
 target/linux/ath79/dts/qca955x.dtsi                                  | 5 +++++
 10 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts b/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts
index 485ef30e2c..9ae4dbe2d5 100644
--- a/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts
+++ b/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts
@@ -11,7 +11,6 @@
 
 	aliases {
 		mdio-gpio1 = &mdio2;
-		serial0 = &uart;
 	};
 
 	keys {
diff --git a/target/linux/ath79/dts/qca9558_comfast_cf-e380ac-v2.dts b/target/linux/ath79/dts/qca9558_comfast_cf-e380ac-v2.dts
index febbccb4cb..703eead178 100644
--- a/target/linux/ath79/dts/qca9558_comfast_cf-e380ac-v2.dts
+++ b/target/linux/ath79/dts/qca9558_comfast_cf-e380ac-v2.dts
@@ -11,7 +11,6 @@
 	model = "COMFAST CF-E380AC";
 
 	aliases {
-		serial0 = &uart;
 		label-mac-device = &eth1;
 		led-boot = &led_lan;
 		led-failsafe = &led_lan;
diff --git a/target/linux/ath79/dts/qca9558_dlink_dir-629-a1.dts b/target/linux/ath79/dts/qca9558_dlink_dir-629-a1.dts
index 137bff732c..2d490dcf48 100644
--- a/target/linux/ath79/dts/qca9558_dlink_dir-629-a1.dts
+++ b/target/linux/ath79/dts/qca9558_dlink_dir-629-a1.dts
@@ -16,7 +16,6 @@
 		led-failsafe = &led_power;
 		led-running = &led_power;
 		led-upgrade = &led_power;
-		serial0 = &uart;
 	};
 
 	keys {
diff --git a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-92x.dtsi b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-92x.dtsi
index bc85cad9b3..c2e1ab765b 100644
--- a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-92x.dtsi
+++ b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-92x.dtsi
@@ -10,7 +10,6 @@
 		led-boot = &led_user;
 		led-failsafe = &led_user;
 		led-upgrade = &led_user;
-		serial0 = &uart;
 	};
 
 	leds {
diff --git a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-96x.dtsi b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-96x.dtsi
index 3cfc40cd86..684ca8632a 100644
--- a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-96x.dtsi
+++ b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-96x.dtsi
@@ -10,7 +10,6 @@
 		led-boot = &led_user;
 		led-failsafe = &led_user;
 		led-upgrade = &led_user;
-		serial0 = &uart;
 	};
 
 	leds {
diff --git a/target/linux/ath79/dts/qca9558_openmesh_a60.dtsi b/target/linux/ath79/dts/qca9558_openmesh_a60.dtsi
index 11a6e81f9f..e908c26c0d 100644
--- a/target/linux/ath79/dts/qca9558_openmesh_a60.dtsi
+++ b/target/linux/ath79/dts/qca9558_openmesh_a60.dtsi
@@ -12,7 +12,6 @@
 	};
 
 	aliases {
-		serial0 = &uart;
 		led-boot = &led_status_green;
 		led-failsafe = &led_status_green;
 		led-running = &led_status_green;
diff --git a/target/linux/ath79/dts/qca9558_openmesh_mr.dtsi b/target/linux/ath79/dts/qca9558_openmesh_mr.dtsi
index a5d3d37987..03f2999083 100644
--- a/target/linux/ath79/dts/qca9558_openmesh_mr.dtsi
+++ b/target/linux/ath79/dts/qca9558_openmesh_mr.dtsi
@@ -12,7 +12,6 @@
 	};
 
 	aliases {
-		serial0 = &uart;
 		led-boot = &led_power_blue;
 		led-failsafe = &led_power_blue;
 		led-running = &led_power_blue;
diff --git a/target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v1.dts b/target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v1.dts
index f7c51578ba..8fd35a99d4 100644
--- a/target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v1.dts
+++ b/target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v1.dts
@@ -15,7 +15,6 @@
 	};
 
 	aliases {
-		serial0 = &uart;
 		led-boot = &led_power_blue;
 		led-failsafe = &led_power_blue;
 		led-running = &led_power_blue;
diff --git a/target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v2.dts b/target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v2.dts
index b9eb0e91a9..2e27d3d6ee 100644
--- a/target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v2.dts
+++ b/target/linux/ath79/dts/qca9558_openmesh_om5p-ac-v2.dts
@@ -15,7 +15,6 @@
 	};
 
 	aliases {
-		serial0 = &uart;
 		led-boot = &led_power_blue;
 		led-failsafe = &led_power_blue;
 		led-running = &led_power_blue;
diff --git a/target/linux/ath79/dts/qca955x.dtsi b/target/linux/ath79/dts/qca955x.dtsi
index c12a266cda..9d410ceb46 100644
--- a/target/linux/ath79/dts/qca955x.dtsi
+++ b/target/linux/ath79/dts/qca955x.dtsi
@@ -8,6 +8,11 @@
 	#address-cells = <1>;
 	#size-cells = <1>;
 
+	aliases {
+		serial0 = &uart0;
+		serial1 = &uart1;
+	};
+
 	chosen {
 		bootargs = "console=ttyS0,115200n8";
 	};



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:32 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:32 -0500
Subject: [openwrt/openwrt]  ath79: drop unnecessary &uart node from dtsi of
 QCA955x devices
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14791.1709917496.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a9f780a78e72db66efd80aef75d0f0080212345a

commit a9f780a78e72db66efd80aef75d0f0080212345a
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Mon Mar 4 19:11:36 2024 +0900

    ath79: drop unnecessary &uart node from dtsi of QCA955x devices
    
    &uart (uart0) is already enabled in qca955x.dtsi by default.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 target/linux/ath79/dts/qca9557_meraki_mr18.dts | 4 ----
 target/linux/ath79/dts/qca955x_elecom_wab.dtsi | 4 ----
 2 files changed, 8 deletions(-)

diff --git a/target/linux/ath79/dts/qca9557_meraki_mr18.dts b/target/linux/ath79/dts/qca9557_meraki_mr18.dts
index 1df5d6125c..4e9b3d1e9a 100644
--- a/target/linux/ath79/dts/qca9557_meraki_mr18.dts
+++ b/target/linux/ath79/dts/qca9557_meraki_mr18.dts
@@ -171,10 +171,6 @@
 	};
 };
 
-&uart {
-	status = "okay";
-};
-
 &mdio0 {
 	status = "okay";
 
diff --git a/target/linux/ath79/dts/qca955x_elecom_wab.dtsi b/target/linux/ath79/dts/qca955x_elecom_wab.dtsi
index f94f582468..3e24c514a9 100644
--- a/target/linux/ath79/dts/qca955x_elecom_wab.dtsi
+++ b/target/linux/ath79/dts/qca955x_elecom_wab.dtsi
@@ -227,10 +227,6 @@
 	};
 };
 
-&uart {
-	status = "okay";
-};
-
 &usb_phy0 {
 	status = "okay";
 };



From lede-commits at lists.infradead.org  Fri Mar  8 08:51:33 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 11:51:33 -0500
Subject: [openwrt/openwrt]  ath79: cleanup and enable uart1 on ELECOM
 WAB-I1750-PS
In-Reply-To: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
References: <170991668110.3518161.4005894585249337640@git-01.infra.openwrt.org>
Message-ID: <mailman.14792.1709917767.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/8efd1f98a910d9af2fb92accce62d03200e47f0a

commit 8efd1f98a910d9af2fb92accce62d03200e47f0a
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Mon Mar 4 19:12:07 2024 +0900

    ath79: cleanup and enable uart1 on ELECOM WAB-I1750-PS
    
    Cleanup uart1-related node on ELECOM WAB-I1750-PS and enable it for
    "SERIAL" port on the case.
    
    "SERIAL" port can be used for OpenWrt console by adding the following
    line to /etc/inittab and rebooting:
    
    ttyATH1::askfirst:/usr/libexec/login.sh
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 .../ath79/dts/qca9558_elecom_wab-i1750-ps.dts      | 31 ++++++----------------
 1 file changed, 8 insertions(+), 23 deletions(-)

diff --git a/target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts b/target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts
index 6f157cf932..668f0ceadd 100644
--- a/target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts
+++ b/target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts
@@ -5,29 +5,6 @@
 / {
 	compatible = "elecom,wab-i1750-ps", "qca,qca9558";
 	model = "ELECOM WAB-I1750-PS";
-
-	ahb {
-		apb {
-			/* "SERIAL" port (RJ-45) on the case */
-			uart1: uart at 18500000 {
-				compatible = "qca,ar9330-uart";
-				reg = <0x18500000 0x14>;
-
-				pinctrl-names = "default";
-				pinctrl-0 = <&pmx_uart1_in_pins &pmx_uart1_out_pins
-					     &jtag_disable_pins>;
-
-				interrupts = <6>;
-				interrupt-parent = <&miscintc>;
-
-				clocks = <&pll ATH79_CLK_UART1>;
-				clock-names = "uart";
-
-				/* QCA955x HS UART is not supported */
-				status = "disabled";
-			};
-		};
-	};
 };
 
 &gpio {
@@ -67,3 +44,11 @@
 		pinctrl-single,bits = <0x3c 0x3010000 0xffff0000>;
 	};
 };
+
+/* "SERIAL" port (RJ-45) on the case */
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pmx_uart1_in_pins &pmx_uart1_out_pins
+		     &jtag_disable_pins>;
+	status = "okay";
+};



From lede-commits at lists.infradead.org  Fri Mar  8 13:46:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 16:46:42 -0500
Subject: [openwrt/openwrt]  mac80211: fix a regression in the broadcast AQL
 patch
In-Reply-To: <170993440111.177705.9326363351970249095@git-01.infra.openwrt.org>
References: <170993440111.177705.9326363351970249095@git-01.infra.openwrt.org>
Message-ID: <mailman.14830.1709934408.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1f5fd5cb971166ba57996d41b7ce71e697c186b2

commit 1f5fd5cb971166ba57996d41b7ce71e697c186b2
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Fri Mar 8 22:42:50 2024 +0100

    mac80211: fix a regression in the broadcast AQL patch
    
    The AQL limit for buffered broadcast packets is higher than the maximum
    total pending airtime limit. This can get unicast data stuck whenever there
    is too much pending broadcast data. Fix this by excluding broadcast AQL from
    the total limit.
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 ...211-add-AQL-support-for-broadcast-packets.patch | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/package/kernel/mac80211/patches/subsys/330-mac80211-add-AQL-support-for-broadcast-packets.patch b/package/kernel/mac80211/patches/subsys/330-mac80211-add-AQL-support-for-broadcast-packets.patch
index 6f64467b66..f117a68c16 100644
--- a/package/kernel/mac80211/patches/subsys/330-mac80211-add-AQL-support-for-broadcast-packets.patch
+++ b/package/kernel/mac80211/patches/subsys/330-mac80211-add-AQL-support-for-broadcast-packets.patch
@@ -95,12 +95,13 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		spin_lock_init(&local->active_txq_lock[i]);
 --- a/net/mac80211/sta_info.c
 +++ b/net/mac80211/sta_info.c
-@@ -2341,28 +2341,27 @@ void ieee80211_sta_update_pending_airtim
+@@ -2341,29 +2341,33 @@ void ieee80211_sta_update_pending_airtim
  					  struct sta_info *sta, u8 ac,
  					  u16 tx_airtime, bool tx_completed)
  {
+-	int tx_pending;
++	int tx_pending = 0;
 +	atomic_t *counter;
- 	int tx_pending;
  
  	if (!wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL))
  		return;
@@ -113,9 +114,18 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +		counter = &sta->airtime[ac].aql_tx_pending;
 +	else
 +		counter = &local->aql_bc_pending_airtime;
++
++	if (!tx_completed)
++		atomic_add(tx_airtime, counter);
++	else
++		tx_pending = atomic_sub_return(tx_airtime, counter);
++	if (tx_pending < 0)
++		atomic_cmpxchg(counter, tx_pending, 0);
++
++	if (!sta)
++		return;
  
 +	if (!tx_completed) {
-+		atomic_add(tx_airtime, counter);
  		atomic_add(tx_airtime, &local->aql_total_pending_airtime);
  		atomic_add(tx_airtime, &local->aql_ac_pending_airtime[ac]);
  		return;
@@ -128,12 +138,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 -			atomic_cmpxchg(&sta->airtime[ac].aql_tx_pending,
 -				       tx_pending, 0);
 -	}
-+	tx_pending = atomic_sub_return(tx_airtime, counter);
-+	if (tx_pending < 0)
-+		atomic_cmpxchg(counter, tx_pending, 0);
- 
+-
  	atomic_sub(tx_airtime, &local->aql_total_pending_airtime);
  	tx_pending = atomic_sub_return(tx_airtime,
+ 				       &local->aql_ac_pending_airtime[ac]);
 --- a/net/mac80211/tx.c
 +++ b/net/mac80211/tx.c
 @@ -3958,9 +3958,8 @@ begin:



From lede-commits at lists.infradead.org  Fri Mar  8 13:46:41 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 08 Mar 2024 16:46:41 -0500
Subject: [openwrt/openwrt]  mbedtls: enable threading support
In-Reply-To: <170993440111.177705.9326363351970249095@git-01.infra.openwrt.org>
References: <170993440111.177705.9326363351970249095@git-01.infra.openwrt.org>
Message-ID: <mailman.14831.1709934410.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e3bb01b30ea524e0004de6eb66466a514591ef42

commit e3bb01b30ea524e0004de6eb66466a514591ef42
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Tue Mar 5 19:13:52 2024 +0100

    mbedtls: enable threading support
    
    Fixes libssh, which requires it. Bump ABI_VERSION, since enabling this
    option affects data structures in mbedtls include files.
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 package/libs/mbedtls/Config.in | 7 +++++++
 package/libs/mbedtls/Makefile  | 4 +++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/package/libs/mbedtls/Config.in b/package/libs/mbedtls/Config.in
index 9fbe9f8a4a..ad0ecb6e61 100644
--- a/package/libs/mbedtls/Config.in
+++ b/package/libs/mbedtls/Config.in
@@ -172,6 +172,13 @@ config MBEDTLS_SSL_TRUNCATED_HMAC
 	bool "MBEDTLS_SSL_TRUNCATED_HMAC"
 	default n
 
+config MBEDTLS_THREADING_C
+	bool "MBEDTLS_THREADING_C"
+	default y
+
+config MBEDTLS_THREADING_PTHREAD
+	def_bool MBEDTLS_THREADING_C
+
 config MBEDTLS_VERSION_C
 	bool "MBEDTLS_VERSION_C"
 	default n
diff --git a/package/libs/mbedtls/Makefile b/package/libs/mbedtls/Makefile
index ad13bbe846..502bf65ffc 100644
--- a/package/libs/mbedtls/Makefile
+++ b/package/libs/mbedtls/Makefile
@@ -70,6 +70,8 @@ MBEDTLS_BUILD_OPTS= \
   CONFIG_MBEDTLS_SELF_TEST \
   CONFIG_MBEDTLS_SSL_RENEGOTIATION \
   CONFIG_MBEDTLS_SSL_TRUNCATED_HMAC \
+  CONFIG_MBEDTLS_THREADING_C \
+  CONFIG_MBEDTLS_THREADING_PTHREAD \
   CONFIG_MBEDTLS_VERSION_C \
   CONFIG_MBEDTLS_VERSION_FEATURES
 
@@ -94,7 +96,7 @@ $(call Package/mbedtls/Default)
   CATEGORY:=Libraries
   SUBMENU:=SSL
   TITLE+= (library)
-  ABI_VERSION:=12
+  ABI_VERSION:=13
   MENU:=1
 endef
 



From lede-commits at lists.infradead.org  Sat Mar  9 06:03:20 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 09:03:20 -0500
Subject: [openwrt/openwrt]  uboot-mediatek: add 'rootwait' to bootargs where
 needed
In-Reply-To: <170999300004.2795020.934872885906027662@git-01.infra.openwrt.org>
References: <170999300004.2795020.934872885906027662@git-01.infra.openwrt.org>
Message-ID: <mailman.14976.1709993005.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/efa71c532e4778433263626bfff1a40e48f6bdb4

commit efa71c532e4778433263626bfff1a40e48f6bdb4
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 9 13:58:29 2024 +0000

    uboot-mediatek: add 'rootwait' to bootargs where needed
    
    Probing of the fitblk driver in some situations happens after Linux
    attempts to mount rootfs, which then fails.
    Always use 'rootwait' kernel parameter when using fitblk for rootfs.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../patches/404-add-bananapi_bpi-r64_defconfigs.patch             | 6 +++---
 package/boot/uboot-mediatek/patches/430-add-bpi-r3.patch          | 8 ++++----
 package/boot/uboot-mediatek/patches/442-add-bpi-r3-mini.patch     | 4 ++--
 package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch          | 6 +++---
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/package/boot/uboot-mediatek/patches/404-add-bananapi_bpi-r64_defconfigs.patch b/package/boot/uboot-mediatek/patches/404-add-bananapi_bpi-r64_defconfigs.patch
index 04411d79bc..6ee8729674 100644
--- a/package/boot/uboot-mediatek/patches/404-add-bananapi_bpi-r64_defconfigs.patch
+++ b/package/boot/uboot-mediatek/patches/404-add-bananapi_bpi-r64_defconfigs.patch
@@ -171,7 +171,7 @@
 +ipaddr=192.168.1.1
 +serverip=192.168.1.254
 +loadaddr=0x48000000
-+bootargs=root=/dev/fit0
++bootargs=root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_sdmmc ; fi
 +bootconf=config-1#mt7622-bananapi-bpi-r64-pcie1
 +bootconf_pcie=config-1#mt7622-bananapi-bpi-r64-pcie1
@@ -411,7 +411,7 @@
 +serverip=192.168.1.254
 +loadaddr=0x48000000
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_emmc ; fi
-+bootargs=root=/dev/fit0
++bootargs=root=/dev/fit0 rootwait
 +bootconf=config-1#mt7622-bananapi-bpi-r64-pcie1
 +bootconf_pcie=config-1#mt7622-bananapi-bpi-r64-pcie1
 +bootconf_sata=config-1#mt7622-bananapi-bpi-r64-sata
@@ -617,7 +617,7 @@
 +ipaddr=192.168.1.1
 +serverip=192.168.1.254
 +loadaddr=0x48000000
-+bootargs=ubi.block=0,fit root=/dev/fit0
++bootargs=ubi.block=0,fit root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_ubi ; fi
 +bootconf=config-1#mt7622-bananapi-bpi-r64-pcie1
 +bootconf_pcie=config-1#mt7622-bananapi-bpi-r64-pcie1
diff --git a/package/boot/uboot-mediatek/patches/430-add-bpi-r3.patch b/package/boot/uboot-mediatek/patches/430-add-bpi-r3.patch
index c48a934b74..cbcda89119 100644
--- a/package/boot/uboot-mediatek/patches/430-add-bpi-r3.patch
+++ b/package/boot/uboot-mediatek/patches/430-add-bpi-r3.patch
@@ -802,7 +802,7 @@
 +serverip=192.168.1.254
 +loadaddr=0x46000000
 +console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
-+bootargs=root=/dev/fit0
++bootargs=root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_sdmmc ; fi
 +bootconf=config-mt7986a-bananapi-bpi-r3
 +bootconf_base=config-mt7986a-bananapi-bpi-r3
@@ -886,7 +886,7 @@
 +serverip=192.168.1.254
 +loadaddr=0x46000000
 +console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
-+bootargs=root=/dev/fit0
++bootargs=root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_nor ; fi
 +bootconf=config-mt7986a-bananapi-bpi-r3
 +bootconf_base=config-mt7986a-bananapi-bpi-r3
@@ -949,7 +949,7 @@
 +serverip=192.168.1.254
 +loadaddr=0x46000000
 +console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
-+bootargs=root=/dev/fit0
++bootargs=root=/dev/fit0 rootwait
 +bootconf=config-mt7986a-bananapi-bpi-r3
 +bootconf_base=config-mt7986a-bananapi-bpi-r3
 +bootconf_nor=mt7986a-bananapi-bpi-r3-nor
@@ -1025,7 +1025,7 @@
 +serverip=192.168.1.254
 +loadaddr=0x46000000
 +console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
-+bootargs=root=/dev/fit0
++bootargs=root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_emmc ; fi
 +bootconf=config-mt7986a-bananapi-bpi-r3
 +bootconf_base=config-mt7986a-bananapi-bpi-r3
diff --git a/package/boot/uboot-mediatek/patches/442-add-bpi-r3-mini.patch b/package/boot/uboot-mediatek/patches/442-add-bpi-r3-mini.patch
index 667b7570ac..5409f7fa0d 100644
--- a/package/boot/uboot-mediatek/patches/442-add-bpi-r3-mini.patch
+++ b/package/boot/uboot-mediatek/patches/442-add-bpi-r3-mini.patch
@@ -417,7 +417,7 @@
 +serverip=192.168.1.254
 +loadaddr=0x46000000
 +console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
-+bootargs=root=ubi.block=0,fit root=/dev/fit0
++bootargs=root=ubi.block=0,fit root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_ubi ; fi
 +bootconf=config-mt7986a-bananapi-bpi-r3-mini
 +bootdelay=0
@@ -481,7 +481,7 @@
 +serverip=192.168.1.254
 +loadaddr=0x46000000
 +console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
-+bootargs=root=/dev/fit0
++bootargs=root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_emmc ; fi
 +bootconf=config-mt7986a-bananapi-bpi-r3-mini
 +bootdelay=0
diff --git a/package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch b/package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch
index c3c21fe2f5..5fb956a2e3 100644
--- a/package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch
+++ b/package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch
@@ -555,7 +555,7 @@
 +ipaddr=192.168.1.1
 +serverip=192.168.1.254
 +loadaddr=0x50000000
-+bootargs=console=ttyS0,115200n1 pci=pcie_bus_perf root=/dev/fit0
++bootargs=console=ttyS0,115200n1 pci=pcie_bus_perf root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_sdmmc ; fi
 +bootconf=config-mt7988a-bananapi-bpi-r4
 +bootconf_sd=mt7988a-bananapi-bpi-r4-sd
@@ -624,7 +624,7 @@
 +ipaddr=192.168.1.1
 +serverip=192.168.1.254
 +loadaddr=0x50000000
-+bootargs=console=ttyS0,115200n1 pci=pcie_bus_perf root=/dev/fit0 ubi.block=0,fit
++bootargs=console=ttyS0,115200n1 pci=pcie_bus_perf root=/dev/fit0 rootwait ubi.block=0,fit
 +bootconf=config-mt7988a-bananapi-bpi-r4
 +bootconf_extra=mt7988a-bananapi-bpi-r4-emmc
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_ubi ; fi
@@ -694,7 +694,7 @@
 +ipaddr=192.168.1.1
 +serverip=192.168.1.254
 +loadaddr=0x50000000
-+bootargs=console=ttyS0,115200n1 pci=pcie_bus_perf root=/dev/fit0
++bootargs=console=ttyS0,115200n1 pci=pcie_bus_perf root=/dev/fit0 rootwait
 +bootcmd=if pstore check ; then run boot_recovery ; else run boot_emmc ; fi
 +bootconf=config-mt7988a-bananapi-bpi-r4
 +bootconf_base=config-mt7988a-bananapi-bpi-r4



From lede-commits at lists.infradead.org  Sat Mar  9 06:03:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 09:03:21 -0500
Subject: [openwrt/openwrt]  mediatek: wait for fitblk rootfs
In-Reply-To: <170999300004.2795020.934872885906027662@git-01.infra.openwrt.org>
References: <170999300004.2795020.934872885906027662@git-01.infra.openwrt.org>
Message-ID: <mailman.14977.1709993005.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cd4de3251c1ffd572a563e6567598a875068acc2

commit cd4de3251c1ffd572a563e6567598a875068acc2
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 9 13:48:03 2024 +0000

    mediatek: wait for fitblk rootfs
    
    Probing of the fitblk driver in some situations happens after the kernel
    attempts to mount rootfs, which then fails.
    Always use 'rootwait' when using fitblk for rootfs.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts                  | 2 +-
 target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v1-ubootmod.dts        | 2 +-
 target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v2-ubootmod.dts        | 2 +-
 target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v3-ubootmod.dts        | 2 +-
 target/linux/mediatek/dts/mt7623a-unielec-u7623-02.dts                  | 2 +-
 .../linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts  | 1 +
 .../files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts  | 2 +-
 .../patches-6.1/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch         | 2 +-
 8 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts b/target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts
index e2b7268e85..88538c8b0a 100644
--- a/target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts
+++ b/target/linux/mediatek/dts/mt7622-linksys-e8450-ubi.dts
@@ -13,7 +13,7 @@
 
 	chosen {
 		rootdisk = <&ubi_rootfs>;
-		bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n1 swiotlb=512 ubi.block=0,fit root=/dev/fit0";
+		bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n1 swiotlb=512 ubi.block=0,fit root=/dev/fit0 rootwait";
 	};
 };
 
diff --git a/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v1-ubootmod.dts b/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v1-ubootmod.dts
index 5f62ed1a45..6e310d40bf 100644
--- a/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v1-ubootmod.dts
+++ b/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v1-ubootmod.dts
@@ -8,7 +8,7 @@
 
 	chosen {
 		rootdisk = <&rootdisk>;
-		bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 console=ttyS0,115200n8 root=/dev/fit0";
+		bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 console=ttyS0,115200n8 root=/dev/fit0 rootwait";
 	};
 };
 
diff --git a/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v2-ubootmod.dts b/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v2-ubootmod.dts
index 96effb8aab..501e09a690 100644
--- a/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v2-ubootmod.dts
+++ b/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v2-ubootmod.dts
@@ -8,7 +8,7 @@
 
 	chosen {
 		rootdisk = <&rootdisk>;
-		bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 console=ttyS0,115200n8 root=/dev/fit0";
+		bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 console=ttyS0,115200n8 root=/dev/fit0 rootwait";
 	};
 };
 
diff --git a/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v3-ubootmod.dts b/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v3-ubootmod.dts
index ec98dd262c..8c90c734d9 100644
--- a/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v3-ubootmod.dts
+++ b/target/linux/mediatek/dts/mt7622-ubnt-unifi-6-lr-v3-ubootmod.dts
@@ -8,7 +8,7 @@
 
 	chosen {
 		rootdisk = <&rootdisk>;
-		bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 console=ttyS0,115200n8 root=/dev/fit0";
+		bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 console=ttyS0,115200n8 root=/dev/fit0 rootwait";
 	};
 };
 
diff --git a/target/linux/mediatek/dts/mt7623a-unielec-u7623-02.dts b/target/linux/mediatek/dts/mt7623a-unielec-u7623-02.dts
index 75ee0723ec..2dbb98e230 100644
--- a/target/linux/mediatek/dts/mt7623a-unielec-u7623-02.dts
+++ b/target/linux/mediatek/dts/mt7623a-unielec-u7623-02.dts
@@ -12,7 +12,7 @@
 
 	chosen {
 		stdout-path = "serial0:115200n8";
-		bootargs = "earlycon=uart8250,mmio32,0x11004000 root=/dev/fit0";
+		bootargs = "earlycon=uart8250,mmio32,0x11004000 root=/dev/fit0 rootwait";
 		rootdisk = <&emmc_rootdisk>;
 	};
 };
diff --git a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts
index a296c768f0..f26ab1a88e 100644
--- a/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts
+++ b/target/linux/mediatek/dts/mt7986a-xiaomi-redmi-router-ax6000-ubootmod.dts
@@ -10,6 +10,7 @@
 
 &chosen {
 	rootdisk = <&ubi_rootdisk>;
+	bootargs-append = " root=/dev/fit0 rootwait";
 };
 
 &partitions {
diff --git a/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts b/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
index 416958428f..f5c0c7ee2f 100644
--- a/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
+++ b/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
@@ -26,7 +26,7 @@
 
 	chosen {
 		stdout-path = &uart0;
-		bootargs = "console=ttyS0,115200n1 loglevel=8 pci=pcie_bus_perf ubi.block=0,fit root=/dev/fit0";
+		bootargs = "console=ttyS0,115200n1 loglevel=8 pci=pcie_bus_perf ubi.block=0,fit root=/dev/fit0 rootwait";
 		rootdisk-spim-nand = <&ubi_rootfs>;
 	};
 
diff --git a/target/linux/mediatek/patches-6.1/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch b/target/linux/mediatek/patches-6.1/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch
index 2675aa2589..f617211c9a 100644
--- a/target/linux/mediatek/patches-6.1/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch
+++ b/target/linux/mediatek/patches-6.1/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch
@@ -5,7 +5,7 @@
  	chosen {
  		stdout-path = "serial2:115200n8";
 -		bootargs = "earlycon=uart8250,mmio32,0x11004000 console=ttyS2,115200n8 console=tty1";
-+		bootargs = "root=/dev/fit0 earlycon=uart8250,mmio32,0x11004000 console=ttyS2,115200n8 console=tty1";
++		bootargs = "root=/dev/fit0 rootwait earlycon=uart8250,mmio32,0x11004000 console=ttyS2,115200n8 console=tty1";
 +		rootdisk-emmc = <&emmc_rootdisk>;
 +		rootdisk-sd = <&sd_rootdisk>;
  	};



From lede-commits at lists.infradead.org  Sat Mar  9 06:03:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 09:03:22 -0500
Subject: [openwrt/openwrt]  mediatek: linksys-e8450: improve compat warning
In-Reply-To: <170999300004.2795020.934872885906027662@git-01.infra.openwrt.org>
References: <170999300004.2795020.934872885906027662@git-01.infra.openwrt.org>
Message-ID: <mailman.14978.1709993009.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/330316f0566b67153f72f68635233023af4323be

commit 330316f0566b67153f72f68635233023af4323be
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 9 13:50:40 2024 +0000

    mediatek: linksys-e8450: improve compat warning
    
    Include a statement about having to run the installer in the
    sysupgrade compat warning for the Linksys E8450 (UBI).
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 target/linux/mediatek/image/mt7622.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk
index f06175041e..ab2bde0836 100644
--- a/target/linux/mediatek/image/mt7622.mk
+++ b/target/linux/mediatek/image/mt7622.mk
@@ -273,7 +273,7 @@ define Device/linksys_e8450-ubi
   ARTIFACT/preloader.bin := bl2 snand-ubi-1ddr
   ARTIFACT/bl31-uboot.fip := bl31-uboot linksys_e8450
   DEVICE_COMPAT_VERSION := 2.0
-  DEVICE_COMPAT_MESSAGE := SPI-NAND flash layout changes require bootloader update
+  DEVICE_COMPAT_MESSAGE := SPI-NAND flash layout changes require bootloader update. Please run the UBI installer version 1.1.0+ (unsigned) first.
 endef
 TARGET_DEVICES += linksys_e8450-ubi
 



From lede-commits at lists.infradead.org  Sat Mar  9 11:35:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 14:35:21 -0500
Subject: [openwrt/openwrt]  Revert "ipq-wifi: fix upstream board-2.bin ZTE
 M289F snafu"
In-Reply-To: <171001292128.3768467.15784835610788934187@git-01.infra.openwrt.org>
References: <171001292128.3768467.15784835610788934187@git-01.infra.openwrt.org>
Message-ID: <mailman.15000.1710012928.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0671803bc55853fda25bb134742040d6c19c0797

commit 0671803bc55853fda25bb134742040d6c19c0797
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Fri Mar 8 21:12:45 2024 +0100

    Revert "ipq-wifi: fix upstream board-2.bin ZTE M289F snafu"
    
    This reverts commit 75505c5ec724b9b961dcb411bac1d4b9aede3e1d.
    The issue has been fixed upstream.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 package/firmware/ipq-wifi/Makefile    | 4 +---
 target/linux/ipq40xx/image/generic.mk | 2 +-
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index b6c1a34bde..ed4b26af3a 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/version.mk
 
 PKG_NAME:=ipq-wifi
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git
@@ -53,7 +53,6 @@ ALLWIFIBOARDS:= \
 	yyets_le1 \
 	yuncore_ax880 \
 	zte_mf269 \
-	zte_mf289f \
 	zte_mf287 \
 	zte_mf287plus \
 	zyxel_nbg7815
@@ -171,7 +170,6 @@ $(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000))
 $(eval $(call generate-ipq-wifi-package,yyets_le1,YYeTs LE1))
 $(eval $(call generate-ipq-wifi-package,yuncore_ax880,Yuncore AX880))
 $(eval $(call generate-ipq-wifi-package,zte_mf269,ZTE MF269))
-$(eval $(call generate-ipq-wifi-package,zte_mf289f,ZTE MF289F))
 $(eval $(call generate-ipq-wifi-package,zte_mf287,ZTE MF287))
 $(eval $(call generate-ipq-wifi-package,zte_mf287plus,ZTE MF287Plus))
 $(eval $(call generate-ipq-wifi-package,zyxel_nbg7815,Zyxel NBG7815))
diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk
index 8a83e27f54..3b6d111905 100644
--- a/target/linux/ipq40xx/image/generic.mk
+++ b/target/linux/ipq40xx/image/generic.mk
@@ -1253,7 +1253,7 @@ TARGET_DEVICES += zte_mf287pro
 define Device/zte_mf289f
 	$(call Device/zte_mf28x_common)
 	DEVICE_MODEL := MF289F
-	DEVICE_PACKAGES += ipq-wifi-zte_mf289f ath10k-firmware-qca9984-ct
+	DEVICE_PACKAGES += ath10k-firmware-qca9984-ct
 endef
 TARGET_DEVICES += zte_mf289f
 



From lede-commits at lists.infradead.org  Sat Mar  9 11:35:24 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 14:35:24 -0500
Subject: [openwrt/openwrt]  ath79: add support for D-Link COVR-C1200 A1
In-Reply-To: <171001292128.3768467.15784835610788934187@git-01.infra.openwrt.org>
References: <171001292128.3768467.15784835610788934187@git-01.infra.openwrt.org>
Message-ID: <mailman.15001.1710012928.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ee69f81ca5032f13e39ce7c2515ae9c5ee0a78f1

commit ee69f81ca5032f13e39ce7c2515ae9c5ee0a78f1
Author: Sebastian Schaper <openwrt at sebastianschaper.net>
AuthorDate: Sun Feb 11 18:55:43 2024 +0100

    ath79: add support for D-Link COVR-C1200 A1
    
    The COVR-C1200 devices are sold as "Whole Home Mesh Wi-Fi"
    sets in packs of two (COVR-C1202) and three (COVR-C1203).
    
    Specifications:
     * QCA9563, 16 MiB flash, 128 MiB RAM, 2x3:2 802.11n
     * QCA9886 2x2:2 801.11ac Wave 2
     * AR8337, 2 Gigabit ports (1: WAN; 2: LAN)
     * USB Type-C power connector (5V, 3A)
    
    Installation COVR Point A:
     * In factory reset state: OEM Web UI is at 192.168.0.50
       no DHCP, skip wizard by directly accessing:
         http://192.168.0.50/UpdateFirmware_Simple.html
     * After completing setup wizard: Web UI is at 192.168.0.1
         DHCP enabled, login with empty password
     * Flash factory.bin
     * Perform a factory reset to restore OpenWrt UCI defaults
    
    Installation COVR Points B:
     * OEM Web UI is at 192.168.0.50, no DHCP, empty password
     * Flash factory.bin
     * Perform a factory reset to restore OpenWrt UCI defaults
    
    Recovery:
     * Keep reset button pressed during power on
     * Recovery Web UI is at 192.168.0.50, no DHCP
     * Flash factory.bin
       used to work best with Chromium-based browsers or curl:
         curl -F firmware=@factory.bin \
           http://192.168.0.50/upgrade.cgi
       since this fails to work on modern Linux systems,
       there is also a script dlink_recovery_upload.py
    
    Signed-off-by: Sebastian Schaper <openwrt at sebastianschaper.net>
---
 .../ath79/dts/qca9563_dlink_covr-c1200-a1.dts      | 40 ++++++++++++++++++++++
 .../generic/base-files/etc/board.d/02_network      |  9 +++++
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac        |  1 +
 target/linux/ath79/image/generic.mk                | 10 ++++++
 4 files changed, 60 insertions(+)

diff --git a/target/linux/ath79/dts/qca9563_dlink_covr-c1200-a1.dts b/target/linux/ath79/dts/qca9563_dlink_covr-c1200-a1.dts
new file mode 100644
index 0000000000..b4f0bb3b64
--- /dev/null
+++ b/target/linux/ath79/dts/qca9563_dlink_covr-c1200-a1.dts
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca9563_dlink_covr.dtsi"
+
+/ {
+	compatible = "dlink,covr-c1200-a1", "qca,qca9563";
+	model = "D-Link COVR-C1200 A1";
+
+	aliases {
+		led-boot = &led_power_orange;
+		led-failsafe = &led_power_red;
+		led-running = &led_power_white;
+		led-upgrade = &led_power_red;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&jtag_disable_pins>;
+
+		led_power_red: power_red {
+			function = LED_FUNCTION_POWER;
+			color = <LED_COLOR_ID_RED>;
+			gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
+		};
+
+		led_power_white: power_white {
+			function = LED_FUNCTION_POWER;
+			color = <LED_COLOR_ID_WHITE>;
+			gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
+		};
+
+		led_power_orange: power_orange {
+			function = LED_FUNCTION_POWER;
+			color = <LED_COLOR_ID_ORANGE>;
+			gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
+			default-state = "on";
+		};
+	};
+};
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index 4e08860cfa..6c1cb86235 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -292,6 +292,10 @@ ath79_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0 at eth0" "2:wan" "3:lan" "4:lan"
 		;;
+	dlink,covr-c1200-a1)
+		ucidef_add_switch "switch0" \
+			"0 at eth0" "1:wan" "2:lan"
+		;;
 	dlink,covr-p2500-a1)
 		ucidef_add_switch "switch0" \
 			"0 at eth0" "1:lan" "2:lan" "3:wan" "4:plc"
@@ -644,6 +648,11 @@ ath79_setup_macs()
 	devolo,magic-2-wifi)
 		label_mac=$(macaddr_add "$(mtd_get_mac_binary art 0x1002)" 3)
 		;;
+	dlink,covr-c1200-a1)
+		lan_mac=$(mtd_get_mac_ascii art "protest_lan_mac")
+		wan_mac=$(mtd_get_mac_ascii art "protest_wan_mac")
+		label_mac=$lan_mac
+		;;
 	dlink,covr-p2500-a1)
 		lan_mac=$(mtd_get_mac_ascii art "protest_lan_mac")
 		wan_mac=$(mtd_get_mac_ascii art "protest_lan_mac")
diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 9574d8a17d..b90e382223 100644
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -17,6 +17,7 @@ case "$board" in
 	adtran,bsap1840)
 		macaddr_add "$(mtd_get_mac_binary 'Board data' 2)" $(($PHYNBR * 8 + 1)) > /sys${DEVPATH}/macaddress
 		;;
+	dlink,covr-c1200-a1|\
 	dlink,covr-p2500-a1)
 		[ "$PHYNBR" -eq 0 ] && \
 			mtd_get_mac_ascii art "protest_ath1_mac" > /sys${DEVPATH}/macaddress
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index d5d8aa5592..e7960efbaa 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1021,6 +1021,16 @@ define Device/dlink_covr
 	append-loader-okli-uimage $(1) | pad-to 15616k
 endef
 
+define Device/dlink_covr-c1200-a1
+  $(Device/dlink_covr)
+  DEVICE_MODEL := COVR-C1200
+  DEVICE_VARIANT := A1
+  IMAGES += factory.bin
+  IMAGE/factory.bin := $$(IMAGE/recovery.bin) | \
+	dlink-sge-signature COVR-C1200 | dlink-sge-image COVR-C1200
+endef
+TARGET_DEVICES += dlink_covr-c1200-a1
+
 define Device/dlink_covr-p2500-a1
   $(Device/dlink_covr)
   DEVICE_MODEL := COVR-P2500



From lede-commits at lists.infradead.org  Sat Mar  9 11:35:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 14:35:22 -0500
Subject: [openwrt/openwrt]  firmware: intel-microcode: update to 20231114
In-Reply-To: <171001292128.3768467.15784835610788934187@git-01.infra.openwrt.org>
References: <171001292128.3768467.15784835610788934187@git-01.infra.openwrt.org>
Message-ID: <mailman.15002.1710012930.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7241a91c948066e9062729a043944fd313826753

commit 7241a91c948066e9062729a043944fd313826753
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Fri Mar 8 21:16:44 2024 +0100

    firmware: intel-microcode: update to 20231114
    
    Debian changelog:
    
    intel-microcode (3.20231114.1) unstable; urgency=medium
    
      * New upstream microcode datafile 20231114 (closes: #1055962)
        Mitigations for "reptar", INTEL-SA-00950 (CVE-2023-23583)
        Sequence of processor instructions leads to unexpected behavior for some
        Intel(R) Processors, may allow an authenticated user to potentially enable
        escalation of privilege and/or information disclosure and/or denial of
        service via local access.
        Note: "retvar" on 4th gen Xeon Scalable (sig 0x806f8 pfm 0x87), 12th gen
        Core mobile (sig 0x906a4 pfm 0x80), 13th gen Core desktop (sig 0xb0671 pfm
        0x01) were already mitigated by a previous microcode update.
      * Fixes for unspecified functional issues
      * Updated microcodes:
        sig 0x000606a6, pf_mask 0x87, 2023-09-01, rev 0xd0003b9, size 299008
        sig 0x000606c1, pf_mask 0x10, 2023-09-08, rev 0x1000268, size 290816
        sig 0x000706e5, pf_mask 0x80, 2023-09-03, rev 0x00c2, size 113664
        sig 0x000806c1, pf_mask 0x80, 2023-09-07, rev 0x00b4, size 111616
        sig 0x000806c2, pf_mask 0xc2, 2023-09-07, rev 0x0034, size 98304
        sig 0x000806d1, pf_mask 0xc2, 2023-09-07, rev 0x004e, size 104448
        sig 0x000806f8, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0, size 572416
        sig 0x000806f8, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f7, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f6, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f5, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f4, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f8, pf_mask 0x10, 2023-06-26, rev 0x2c000290, size 605184
        sig 0x000806f8, pf_mask 0x10, 2023-06-26, rev 0x2c000290
        sig 0x000806f6, pf_mask 0x10, 2023-06-26, rev 0x2c000290
        sig 0x000806f5, pf_mask 0x10, 2023-06-26, rev 0x2c000290
        sig 0x000806f4, pf_mask 0x10, 2023-06-26, rev 0x2c000290
        sig 0x00090672, pf_mask 0x07, 2023-06-07, rev 0x0032, size 222208
        sig 0x00090672, pf_mask 0x07, 2023-06-07, rev 0x0032
        sig 0x00090675, pf_mask 0x07, 2023-06-07, rev 0x0032
        sig 0x000b06f2, pf_mask 0x07, 2023-06-07, rev 0x0032
        sig 0x000b06f5, pf_mask 0x07, 2023-06-07, rev 0x0032
        sig 0x000906a3, pf_mask 0x80, 2023-06-07, rev 0x0430, size 220160
        sig 0x000906a3, pf_mask 0x80, 2023-06-07, rev 0x0430
        sig 0x000906a4, pf_mask 0x80, 2023-06-07, rev 0x0430
        sig 0x000906a4, pf_mask 0x40, 2023-05-05, rev 0x0005, size 117760
        sig 0x000a0671, pf_mask 0x02, 2023-09-03, rev 0x005d, size 104448
        sig 0x000b0671, pf_mask 0x32, 2023-08-29, rev 0x011d, size 210944
        sig 0x000b06a2, pf_mask 0xe0, 2023-08-30, rev 0x411c, size 216064
        sig 0x000b06a2, pf_mask 0xe0, 2023-08-30, rev 0x411c
        sig 0x000b06a3, pf_mask 0xe0, 2023-08-30, rev 0x411c
        sig 0x000b06e0, pf_mask 0x11, 2023-06-26, rev 0x0012, size 136192
      * Updated 2023-08-08 changelog entry:
        Mitigations for "retvar" on a few processors, refer to the 2023-11-14
        entry for details.  This information was disclosed in 2023-11-14.
      * source: update symlinks to reflect id of the latest release, 20231114
    
     -- Henrique de Moraes Holschuh <hmh at debian.org>  Thu, 16 Nov 2023 08:09:43 -0300
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 package/firmware/intel-microcode/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/firmware/intel-microcode/Makefile b/package/firmware/intel-microcode/Makefile
index 9e87dccc12..d9b527a61f 100644
--- a/package/firmware/intel-microcode/Makefile
+++ b/package/firmware/intel-microcode/Makefile
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=intel-microcode
-PKG_VERSION:=20230808
+PKG_VERSION:=20231114
 PKG_RELEASE:=1
 
 PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).1.tar.xz
 PKG_SOURCE_URL:=@DEBIAN/pool/non-free-firmware/i/intel-microcode/
-PKG_HASH:=29e77c275b3f60a691832c0844f70effbd94a4594d04af21e0c2e6e0c1ac1894
+PKG_HASH:=637ac30d3fc36eb51d3ed71909f09f7408797f4527c20e58d3b0ad4eafc20869
 PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).1
 PKG_CPE_ID:=cpe:/a:intel:microcode
 



From lede-commits at lists.infradead.org  Sat Mar  9 11:35:23 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 14:35:23 -0500
Subject: [openwrt/openwrt]  ath79: split dtsi for D-Link COVR-P2500
In-Reply-To: <171001292128.3768467.15784835610788934187@git-01.infra.openwrt.org>
References: <171001292128.3768467.15784835610788934187@git-01.infra.openwrt.org>
Message-ID: <mailman.15003.1710012930.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6fa2ae30bbfa0fb0919fcd0dd3b96b185594c7f1

commit 6fa2ae30bbfa0fb0919fcd0dd3b96b185594c7f1
Author: Sebastian Schaper <openwrt at sebastianschaper.net>
AuthorDate: Sun Feb 11 18:53:07 2024 +0100

    ath79: split dtsi for D-Link COVR-P2500
    
    in preparation of adding COVR-C1200
    
    Signed-off-by: Sebastian Schaper <openwrt at sebastianschaper.net>
---
 .../ath79/dts/qca9563_dlink_covr-p2500-a1.dts      | 163 +--------------------
 ...k_covr-p2500-a1.dts => qca9563_dlink_covr.dtsi} |  51 +------
 target/linux/ath79/image/generic.mk                |  12 +-
 3 files changed, 12 insertions(+), 214 deletions(-)

diff --git a/target/linux/ath79/dts/qca9563_dlink_covr-p2500-a1.dts b/target/linux/ath79/dts/qca9563_dlink_covr-p2500-a1.dts
index 3b0c2afb50..19bf874b64 100644
--- a/target/linux/ath79/dts/qca9563_dlink_covr-p2500-a1.dts
+++ b/target/linux/ath79/dts/qca9563_dlink_covr-p2500-a1.dts
@@ -1,11 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "qca956x.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/leds/common.h>
-#include <dt-bindings/mtd/partitions/uimage.h>
+#include "qca9563_dlink_covr.dtsi"
 
 / {
 	compatible = "dlink,covr-p2500-a1", "qca,qca9563";
@@ -18,22 +13,6 @@
 		led-upgrade = &led_power_red;
 	};
 
-	keys {
-		compatible = "gpio-keys";
-
-		wps {
-			label = "wps";
-			linux,code = <KEY_WPS_BUTTON>;
-			gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
-		};
-
-		reset {
-			label = "reset";
-			linux,code = <KEY_RESTART>;
-			gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
-		};
-	};
-
 	leds {
 		compatible = "gpio-leds";
 		pinctrl-names = "default";
@@ -70,144 +49,4 @@
 			linux,default-trigger = "phy1radio";
 		};
 	};
-
-	virtual_flash {
-		compatible = "mtd-concat";
-
-		devices = <&fwconcat0 &fwconcat1>;
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition at 0 {
-				compatible = "openwrt,uimage", "denx,uimage";
-				openwrt,ih-magic = <0x68737173>;
-				label = "firmware";
-				reg = <0x0 0x0>;
-			};
-		};
-	};
-};
-
-&spi {
-	status = "okay";
-
-	flash at 0 {
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-max-frequency = <50000000>;
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition at 0 {
-				label = "u-boot";
-				reg = <0x0 0x40000>;
-				read-only;
-			};
-
-			partition at 40000 {
-				label = "u-boot-env";
-				reg = <0x40000 0x10000>;
-				read-only;
-			};
-
-			fwconcat0: partition at 50000 {
-				label = "fwconcat0";
-				reg = <0x50000 0xe30000>;
-			};
-
-			partition at e80000 {
-				label = "loader";
-				reg = <0xe80000 0x10000>;
-				read-only;
-			};
-
-			fwconcat1: partition at e90000 {
-				label = "fwconcat1";
-				reg = <0xe90000 0x160000>;
-			};
-
-			art: partition at ff0000 {
-				label = "art";
-				reg = <0xff0000 0x10000>;
-				read-only;
-
-				nvmem-layout {
-					compatible = "fixed-layout";
-					#address-cells = <1>;
-					#size-cells = <1>;
-
-					calibration_ath9k: calibration at 1000 {
-						reg = <0x1000 0x440>;
-					};
-
-					precalibration_ath10k: pre-calibration at 5000 {
-						reg = <0x5000 0x2f20>;
-					};
-				};
-			};
-		};
-	};
-};
-
-&pcie {
-	status = "okay";
-
-	wifi at 0,0 {
-		compatible = "qcom,ath10k";
-		reg = <0 0 0 0 0>;
-
-		nvmem-cells = <&precalibration_ath10k>;
-		nvmem-cell-names = "pre-calibration";
-	};
-};
-
-&gpio {
-	phy-reset {
-		gpio-hog;
-		gpios = <11 GPIO_ACTIVE_LOW>;
-		output-low;
-		line-name = "phy-reset";
-	};
-};
-
-&mdio0 {
-	status = "okay";
-
-	phy0: ethernet-phy at 0 {
-		reg = <0>;
-		phy-mode = "sgmii";
-		qca,mib-poll-interval = <500>;
-
-		qca,ar8327-initvals = <
-			0x04 0x00080080 /* PORT0 PAD MODE CTRL */
-			0x10 0x81000080 /* POWER_ON_STRAP */
-			0x50 0xcc35cc35 /* LED_CTRL0 */
-			0x54 0xcb37cb37 /* LED_CTRL1 */
-			0x58 0x00000000 /* LED_CTRL2 */
-			0x5c 0x00f3cf00 /* LED_CTRL3 */
-			0x7c 0x0000007e /* PORT0_STATUS */
-			>;
-	};
-};
-
-&eth0 {
-	status = "okay";
-
-	pll-data = <0x03000101 0x00000101 0x00001919>;
-
-	phy-mode = "sgmii";
-	phy-handle = <&phy0>;
-};
-
-&wmac {
-	status = "okay";
-
-	nvmem-cells = <&calibration_ath9k>;
-	nvmem-cell-names = "calibration";
 };
diff --git a/target/linux/ath79/dts/qca9563_dlink_covr-p2500-a1.dts b/target/linux/ath79/dts/qca9563_dlink_covr.dtsi
similarity index 73%
copy from target/linux/ath79/dts/qca9563_dlink_covr-p2500-a1.dts
copy to target/linux/ath79/dts/qca9563_dlink_covr.dtsi
index 3b0c2afb50..5138cbc796 100644
--- a/target/linux/ath79/dts/qca9563_dlink_covr-p2500-a1.dts
+++ b/target/linux/ath79/dts/qca9563_dlink_covr.dtsi
@@ -8,16 +8,6 @@
 #include <dt-bindings/mtd/partitions/uimage.h>
 
 / {
-	compatible = "dlink,covr-p2500-a1", "qca,qca9563";
-	model = "D-Link COVR-P2500 A1";
-
-	aliases {
-		led-boot = &led_power_green;
-		led-failsafe = &led_power_red;
-		led-running = &led_power_green;
-		led-upgrade = &led_power_red;
-	};
-
 	keys {
 		compatible = "gpio-keys";
 
@@ -34,43 +24,6 @@
 		};
 	};
 
-	leds {
-		compatible = "gpio-leds";
-		pinctrl-names = "default";
-		pinctrl-0 = <&jtag_disable_pins>;
-
-		lan {
-			function = LED_FUNCTION_LAN;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
-		};
-
-		led_power_green: power_green {
-			function = LED_FUNCTION_POWER;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
-			default-state = "on";
-		};
-
-		wlan5g {
-			label = "green:wlan5g";
-			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "phy0radio";
-		};
-
-		led_power_red: power_red {
-			function = LED_FUNCTION_POWER;
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
-		};
-
-		wlan2g {
-			label = "green:wlan2g";
-			gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "phy1radio";
-		};
-	};
-
 	virtual_flash {
 		compatible = "mtd-concat";
 
@@ -137,6 +90,8 @@
 				reg = <0xff0000 0x10000>;
 				read-only;
 
+				compatible = "nvmem-cells";
+
 				nvmem-layout {
 					compatible = "fixed-layout";
 					#address-cells = <1>;
@@ -158,7 +113,7 @@
 &pcie {
 	status = "okay";
 
-	wifi at 0,0 {
+	wifi0: wifi at 0,0 {
 		compatible = "qcom,ath10k";
 		reg = <0 0 0 0 0>;
 
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 3bdc043738..d5d8aa5592 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1007,21 +1007,25 @@ define Device/devolo_magic-2-wifi
 endef
 TARGET_DEVICES += devolo_magic-2-wifi
 
-define Device/dlink_covr-p2500-a1
+define Device/dlink_covr
   $(Device/loader-okli-uimage)
   SOC := qca9563
   DEVICE_VENDOR := D-Link
-  DEVICE_MODEL := COVR-P2500
-  DEVICE_VARIANT := A1
   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct
   LOADER_FLASH_OFFS := 0x050000
   LOADER_KERNEL_MAGIC := 0x68737173
   KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x68737173
   IMAGE_SIZE := 14528k
-  IMAGES += factory.bin recovery.bin
   IMAGE/recovery.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
 	append-rootfs | pad-rootfs | check-size | pad-to 14528k | \
 	append-loader-okli-uimage $(1) | pad-to 15616k
+endef
+
+define Device/dlink_covr-p2500-a1
+  $(Device/dlink_covr)
+  DEVICE_MODEL := COVR-P2500
+  DEVICE_VARIANT := A1
+  IMAGES += factory.bin recovery.bin
   IMAGE/factory.bin := $$(IMAGE/recovery.bin) | \
 	dlink-sge-image COVR-P2500 | dlink-sge-signature COVR-P2500
 endef



From lede-commits at lists.infradead.org  Sat Mar  9 14:54:14 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 17:54:14 -0500
Subject: [openwrt/openwrt]  firmware: add firmware package for Realtek
 RTL8188FU
In-Reply-To: <171002485484.131829.1905285580738350191@git-01.infra.openwrt.org>
References: <171002485484.131829.1905285580738350191@git-01.infra.openwrt.org>
Message-ID: <mailman.15008.1710024863.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/860dd27617812bc25627d716436b88cf3f1cbe9d

commit 860dd27617812bc25627d716436b88cf3f1cbe9d
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Thu Feb 22 09:56:36 2024 +0800

    firmware: add firmware package for Realtek RTL8188FU
    
    Realtek RTL8188F is an 802.11n 1x1 USB Wi-Fi adapter. It has been
    supported by the upstream rtl8xxxu driver since Linux 6.2 kernel.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 package/firmware/linux-firmware/realtek.mk | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/package/firmware/linux-firmware/realtek.mk b/package/firmware/linux-firmware/realtek.mk
index b4880b6a7f..81e91ba085 100644
--- a/package/firmware/linux-firmware/realtek.mk
+++ b/package/firmware/linux-firmware/realtek.mk
@@ -29,6 +29,15 @@ define Package/rtl8188eu-firmware/install
 endef
 $(eval $(call BuildPackage,rtl8188eu-firmware))
 
+Package/rtl8188fu-firmware = $(call Package/firmware-default,RealTek RTL8188FU firmware)
+define Package/rtl8188fu-firmware/install
+	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+	$(CP) \
+		$(PKG_BUILD_DIR)/rtlwifi/rtl8188fufw.bin \
+		$(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8188fu-firmware))
+
 Package/rtl8192ce-firmware = $(call Package/firmware-default,RealTek RTL8192CE firmware)
 define Package/rtl8192ce-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi



From lede-commits at lists.infradead.org  Sat Mar  9 14:54:15 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 09 Mar 2024 17:54:15 -0500
Subject: [openwrt/openwrt]  mac80211: rtl8xxxu: sync with linux-next 20240229
In-Reply-To: <171002485484.131829.1905285580738350191@git-01.infra.openwrt.org>
References: <171002485484.131829.1905285580738350191@git-01.infra.openwrt.org>
Message-ID: <mailman.15009.1710024865.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/97f542238a23a1c8461b40dfb26d9213826d8e78

commit 97f542238a23a1c8461b40dfb26d9213826d8e78
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Fri Feb 23 05:36:50 2024 +0800

    mac80211: rtl8xxxu: sync with linux-next 20240229
    
    Backporting upstream patches to improve RTL8188F support.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 ...xu-remove-assignment-of-priv-vif-in-rtl8x.patch |  27 ++
 ...xu-prepare-supporting-two-virtual-interfa.patch |  61 +++
 ...xu-support-setting-linktype-for-both-inte.patch | 102 +++++
 ...xu-8188e-convert-usage-of-priv-vif-to-pri.patch |  28 ++
 ...xu-support-setting-mac-address-register-f.patch |  72 ++++
 ...xu-extend-wifi-connected-check-to-both-in.patch |  75 ++++
 ...xu-extend-check-for-matching-bssid-to-bot.patch |  70 ++++
 ...xu-don-t-parse-CFO-if-both-interfaces-are.patch |  51 +++
 ...xu-support-setting-bssid-register-for-mul.patch |  67 ++++
 ...xu-support-multiple-interfaces-in-set_aif.patch |  44 +++
 ...xu-support-multiple-interfaces-in-update_.patch |  28 ++
 ...xu-support-multiple-interfaces-in-configu.patch |  33 ++
 ...xu-support-multiple-interfaces-in-watchdo.patch |  66 ++++
 ...xu-support-multiple-interfaces-in-add-rem.patch | 137 +++++++
 ...xu-support-multiple-interfaces-in-bss_inf.patch |  57 +++
 ...xu-support-multiple-interface-in-start_ap.patch |  32 ++
 ...6.9-wifi-rtl8xxxu-add-macids-for-STA-mode.patch |  82 ++++
 ....9-wifi-rtl8xxxu-remove-obsolete-priv-vif.patch |  49 +++
 ...tl8xxxu-add-hw-crypto-support-for-AP-mode.patch | 226 +++++++++++
 ...xu-make-supporting-AP-mode-only-on-port-0.patch | 130 +++++++
 ...xu-declare-concurrent-mode-support-for-81.patch |  76 ++++
 ...tl8xxxu-Fix-LED-control-code-of-RTL8192FU.patch |  98 +++++
 ...-rtl8xxxu-Fix-off-by-one-initial-RTS-rate.patch |  36 ++
 ...xxxu-add-cancel_work_sync-for-c2hcmd_work.patch |  27 ++
 ...fi-rtl8xxxu-enable-channel-switch-support.patch | 100 +++++
 ...xu-convert-EN_DESC_ID-of-TX-descriptor-to.patch |  31 ++
 ...xu-make-instances-of-iface-limit-and-comb.patch |  36 ++
 ...xu-add-missing-number-of-sec-cam-entries-.patch | 100 +++++
 ...006-v6.9-wifi-rtl8xxxu-fix-error-messages.patch |  37 ++
 ....9-wifi-rtl8xxxu-Add-TP-Link-TL-WN823N-V2.patch |  36 ++
 ....9-wifi-rtl8xxxu-update-rate-mask-per-sta.patch | 411 +++++++++++++++++++++
 ...xxu-check-vif-before-using-in-rtl8xxxu_tx.patch |  40 ++
 ...xu-fix-mixed-declarations-and-code-warnin.patch |  34 ++
 33 files changed, 2499 insertions(+)

diff --git a/package/kernel/mac80211/patches/rtl/001-01-v6.9-wifi-rtl8xxxu-remove-assignment-of-priv-vif-in-rtl8x.patch b/package/kernel/mac80211/patches/rtl/001-01-v6.9-wifi-rtl8xxxu-remove-assignment-of-priv-vif-in-rtl8x.patch
new file mode 100644
index 0000000000..e0a01a8120
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-01-v6.9-wifi-rtl8xxxu-remove-assignment-of-priv-vif-in-rtl8x.patch
@@ -0,0 +1,27 @@
+From d55cb6d8a99441aff55cb9ce663a07f7f1667e83 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:22 +0100
+Subject: [PATCH 01/21] wifi: rtl8xxxu: remove assignment of priv->vif in
+ rtl8xxxu_bss_info_changed()
+
+priv->vif gets already set in rtl8xxxu_add_interface, there is no need
+to set it also in rtl8xxxu_bss_info_changed().
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-2-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -5004,7 +5004,6 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 
+ 			rtl8xxxu_update_ra_report(rarpt, highest_rate, sgi, bw);
+ 
+-			priv->vif = vif;
+ 			priv->rssi_level = RTL8XXXU_RATR_STA_INIT;
+ 
+ 			priv->fops->update_rate_mask(priv, ramask, 0, sgi,
diff --git a/package/kernel/mac80211/patches/rtl/001-02-v6.9-wifi-rtl8xxxu-prepare-supporting-two-virtual-interfa.patch b/package/kernel/mac80211/patches/rtl/001-02-v6.9-wifi-rtl8xxxu-prepare-supporting-two-virtual-interfa.patch
new file mode 100644
index 0000000000..b1948bb7c2
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-02-v6.9-wifi-rtl8xxxu-prepare-supporting-two-virtual-interfa.patch
@@ -0,0 +1,61 @@
+From 2bbd7d584046038ce655e476628bb15e1460fac6 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:23 +0100
+Subject: [PATCH 02/21] wifi: rtl8xxxu: prepare supporting two virtual
+ interfaces
+
+To prepare for concurrent mode, add an array ("vifs") to rtl8xxxu_priv
+to keep track of both interfaces.
+
+Keep the old priv->vif as long there are still users of it and let
+priv->vifs[0] point to the same location.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-3-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h      |  2 ++
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 10 +++++++---
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+@@ -1897,6 +1897,8 @@ struct rtl8xxxu_priv {
+ 	 * is supported and no iface_combinations are provided.
+ 	 */
+ 	struct ieee80211_vif *vif;
++
++	struct ieee80211_vif *vifs[2];
+ 	struct delayed_work ra_watchdog;
+ 	struct work_struct c2hcmd_work;
+ 	struct sk_buff_head c2hcmd_queue;
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -6569,10 +6569,12 @@ static int rtl8xxxu_add_interface(struct
+ 	int ret;
+ 	u8 val8;
+ 
+-	if (!priv->vif)
++	if (!priv->vif) {
+ 		priv->vif = vif;
+-	else
++		priv->vifs[0] = vif;
++	} else {
+ 		return -EOPNOTSUPP;
++	}
+ 
+ 	switch (vif->type) {
+ 	case NL80211_IFTYPE_STATION:
+@@ -6622,8 +6624,10 @@ static void rtl8xxxu_remove_interface(st
+ 
+ 	dev_dbg(&priv->udev->dev, "%s\n", __func__);
+ 
+-	if (priv->vif)
++	if (priv->vif) {
+ 		priv->vif = NULL;
++		priv->vifs[0] = NULL;
++	}
+ }
+ 
+ static int rtl8xxxu_config(struct ieee80211_hw *hw, u32 changed)
diff --git a/package/kernel/mac80211/patches/rtl/001-03-v6.9-wifi-rtl8xxxu-support-setting-linktype-for-both-inte.patch b/package/kernel/mac80211/patches/rtl/001-03-v6.9-wifi-rtl8xxxu-support-setting-linktype-for-both-inte.patch
new file mode 100644
index 0000000000..f473fad118
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-03-v6.9-wifi-rtl8xxxu-support-setting-linktype-for-both-inte.patch
@@ -0,0 +1,102 @@
+From 7f444692cde83c1455682c2d0d2c9a666422b867 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:24 +0100
+Subject: [PATCH 03/21] wifi: rtl8xxxu: support setting linktype for both
+ interfaces
+
+To prepare for concurrent mode, enhance the set_linktype function to be
+able to set the linktype in the MSR register for both hardware ports.
+
+Until the users of set_linktype can handle multiple interfaces, use
+port_num = 0.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-4-martin.kaistra at linutronix.de
+---
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 37 +++++++++++--------
+ 1 file changed, 22 insertions(+), 15 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -1633,33 +1633,41 @@ rtl8xxxu_gen1_set_tx_power(struct rtl8xx
+ }
+ 
+ static void rtl8xxxu_set_linktype(struct rtl8xxxu_priv *priv,
+-				  enum nl80211_iftype linktype)
++				  enum nl80211_iftype linktype, int port_num)
+ {
+-	u8 val8;
+-
+-	val8 = rtl8xxxu_read8(priv, REG_MSR);
+-	val8 &= ~MSR_LINKTYPE_MASK;
++	u8 val8, type;
+ 
+ 	switch (linktype) {
+ 	case NL80211_IFTYPE_UNSPECIFIED:
+-		val8 |= MSR_LINKTYPE_NONE;
++		type = MSR_LINKTYPE_NONE;
+ 		break;
+ 	case NL80211_IFTYPE_ADHOC:
+-		val8 |= MSR_LINKTYPE_ADHOC;
++		type = MSR_LINKTYPE_ADHOC;
+ 		break;
+ 	case NL80211_IFTYPE_STATION:
+-		val8 |= MSR_LINKTYPE_STATION;
++		type = MSR_LINKTYPE_STATION;
+ 		break;
+ 	case NL80211_IFTYPE_AP:
+-		val8 |= MSR_LINKTYPE_AP;
++		type = MSR_LINKTYPE_AP;
+ 		break;
+ 	default:
+-		goto out;
++		return;
++	}
++
++	switch (port_num) {
++	case 0:
++		val8 = rtl8xxxu_read8(priv, REG_MSR) & 0x0c;
++		val8 |= type;
++		break;
++	case 1:
++		val8 = rtl8xxxu_read8(priv, REG_MSR) & 0x03;
++		val8 |= type << 2;
++		break;
++	default:
++		return;
+ 	}
+ 
+ 	rtl8xxxu_write8(priv, REG_MSR, val8);
+-out:
+-	return;
+ }
+ 
+ static void
+@@ -4236,7 +4244,6 @@ static int rtl8xxxu_init_device(struct i
+ 	}
+ 
+ 	rtl8xxxu_set_mac(priv);
+-	rtl8xxxu_set_linktype(priv, NL80211_IFTYPE_STATION);
+ 
+ 	/*
+ 	 * Configure initial WMAC settings
+@@ -4964,7 +4971,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 	if (changed & BSS_CHANGED_ASSOC) {
+ 		dev_dbg(dev, "Changed ASSOC: %i!\n", vif->cfg.assoc);
+ 
+-		rtl8xxxu_set_linktype(priv, vif->type);
++		rtl8xxxu_set_linktype(priv, vif->type, 0);
+ 
+ 		if (vif->cfg.assoc) {
+ 			u32 ramask;
+@@ -6610,7 +6617,7 @@ static int rtl8xxxu_add_interface(struct
+ 		ret = -EOPNOTSUPP;
+ 	}
+ 
+-	rtl8xxxu_set_linktype(priv, vif->type);
++	rtl8xxxu_set_linktype(priv, vif->type, 0);
+ 	ether_addr_copy(priv->mac_addr, vif->addr);
+ 	rtl8xxxu_set_mac(priv);
+ 
diff --git a/package/kernel/mac80211/patches/rtl/001-04-v6.9-wifi-rtl8xxxu-8188e-convert-usage-of-priv-vif-to-pri.patch b/package/kernel/mac80211/patches/rtl/001-04-v6.9-wifi-rtl8xxxu-8188e-convert-usage-of-priv-vif-to-pri.patch
new file mode 100644
index 0000000000..160a71adc7
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-04-v6.9-wifi-rtl8xxxu-8188e-convert-usage-of-priv-vif-to-pri.patch
@@ -0,0 +1,28 @@
+From a047e46a7b98de384a158b25a05dc09aa7d70c5f Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:25 +0100
+Subject: [PATCH 04/21] wifi: rtl8xxxu: 8188e: convert usage of priv->vif to
+ priv->vifs[0]
+
+The driver currently does not support AP or concurrent mode for 8188e,
+so just use priv->vifs[0] instead of priv->vif for now.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-5-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c
+@@ -1699,7 +1699,7 @@ void rtl8188e_handle_ra_tx_report2(struc
+ 	/* We only use macid 0, so only the first item is relevant.
+ 	 * AP mode will use more of them if it's ever implemented.
+ 	 */
+-	if (!priv->vif || priv->vif->type == NL80211_IFTYPE_STATION)
++	if (!priv->vifs[0] || priv->vifs[0]->type == NL80211_IFTYPE_STATION)
+ 		items = 1;
+ 
+ 	for (macid = 0; macid < items; macid++) {
diff --git a/package/kernel/mac80211/patches/rtl/001-05-v6.9-wifi-rtl8xxxu-support-setting-mac-address-register-f.patch b/package/kernel/mac80211/patches/rtl/001-05-v6.9-wifi-rtl8xxxu-support-setting-mac-address-register-f.patch
new file mode 100644
index 0000000000..c3e3fea450
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-05-v6.9-wifi-rtl8xxxu-support-setting-mac-address-register-f.patch
@@ -0,0 +1,72 @@
+From 00add60cad3c9690ac0f9d4f6685f96ccd607670 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:26 +0100
+Subject: [PATCH 05/21] wifi: rtl8xxxu: support setting mac address register
+ for both interfaces
+
+To prepare for concurrent mode, enhance rtl8xxxu_set_mac() to write the
+mac address of the respective interface to REG_MACID or REG_MACID1.
+
+Remove the call to rtl8xxxu_set_mac() from the init function as we set
+it in rtl8xxxu_add_interface() later anyway.
+
+Until rtl8xxxu_add_interface() can handle both interfaces, call
+rtl8xxxu_set_mac() with port_num = 0.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-6-martin.kaistra at linutronix.de
+---
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 20 +++++++++++++------
+ 1 file changed, 14 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -3580,15 +3580,25 @@ void rtl8723a_phy_lc_calibrate(struct rt
+ 		rtl8xxxu_write8(priv, REG_TXPAUSE, 0x00);
+ }
+ 
+-static int rtl8xxxu_set_mac(struct rtl8xxxu_priv *priv)
++static int rtl8xxxu_set_mac(struct rtl8xxxu_priv *priv, int port_num)
+ {
+ 	int i;
+ 	u16 reg;
+ 
+-	reg = REG_MACID;
++	switch (port_num) {
++	case 0:
++		reg = REG_MACID;
++		break;
++	case 1:
++		reg = REG_MACID1;
++		break;
++	default:
++		WARN_ONCE("%s: invalid port_num\n", __func__);
++		return -EINVAL;
++	}
+ 
+ 	for (i = 0; i < ETH_ALEN; i++)
+-		rtl8xxxu_write8(priv, reg + i, priv->mac_addr[i]);
++		rtl8xxxu_write8(priv, reg + i, priv->vifs[port_num]->addr[i]);
+ 
+ 	return 0;
+ }
+@@ -4243,8 +4253,6 @@ static int rtl8xxxu_init_device(struct i
+ 		rtl8xxxu_write32(priv, REG_HIMR, 0xffffffff);
+ 	}
+ 
+-	rtl8xxxu_set_mac(priv);
+-
+ 	/*
+ 	 * Configure initial WMAC settings
+ 	 */
+@@ -6619,7 +6627,7 @@ static int rtl8xxxu_add_interface(struct
+ 
+ 	rtl8xxxu_set_linktype(priv, vif->type, 0);
+ 	ether_addr_copy(priv->mac_addr, vif->addr);
+-	rtl8xxxu_set_mac(priv);
++	rtl8xxxu_set_mac(priv, 0);
+ 
+ 	return ret;
+ }
diff --git a/package/kernel/mac80211/patches/rtl/001-06-v6.9-wifi-rtl8xxxu-extend-wifi-connected-check-to-both-in.patch b/package/kernel/mac80211/patches/rtl/001-06-v6.9-wifi-rtl8xxxu-extend-wifi-connected-check-to-both-in.patch
new file mode 100644
index 0000000000..70879f861f
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-06-v6.9-wifi-rtl8xxxu-extend-wifi-connected-check-to-both-in.patch
@@ -0,0 +1,75 @@
+From 9aa776209ca31695bead52674ad943848ccc97d5 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:27 +0100
+Subject: [PATCH 06/21] wifi: rtl8xxxu: extend wifi connected check to both
+ interfaces
+
+There are multiple places in the code where the current connection
+status of wifi is checked. The driver will support two interfaces soon
+and either one of them (or both) could be connected.
+
+Convert all uses of (vif && vif->cfg.assoc) to a new helper
+function rtl8xxxu_is_assoc() which checks both interfaces.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-7-martin.kaistra at linutronix.de
+---
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 20 +++++++++----------
+ 1 file changed, 9 insertions(+), 11 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -6043,18 +6043,20 @@ void rtl8723bu_update_bt_link_info(struc
+ 		btcoex->bt_busy = false;
+ }
+ 
++static inline bool rtl8xxxu_is_assoc(struct rtl8xxxu_priv *priv)
++{
++	return (priv->vifs[0] && priv->vifs[0]->cfg.assoc) ||
++	       (priv->vifs[1] && priv->vifs[1]->cfg.assoc);
++}
++
+ static
+ void rtl8723bu_handle_bt_inquiry(struct rtl8xxxu_priv *priv)
+ {
+-	struct ieee80211_vif *vif;
+ 	struct rtl8xxxu_btcoex *btcoex;
+-	bool wifi_connected;
+ 
+-	vif = priv->vif;
+ 	btcoex = &priv->bt_coex;
+-	wifi_connected = (vif && vif->cfg.assoc);
+ 
+-	if (!wifi_connected) {
++	if (!rtl8xxxu_is_assoc(priv)) {
+ 		rtl8723bu_set_ps_tdma(priv, 0x8, 0x0, 0x0, 0x0, 0x0);
+ 		rtl8723bu_set_coex_with_type(priv, 0);
+ 	} else if (btcoex->has_sco || btcoex->has_hid || btcoex->has_a2dp) {
+@@ -6072,15 +6074,11 @@ void rtl8723bu_handle_bt_inquiry(struct
+ static
+ void rtl8723bu_handle_bt_info(struct rtl8xxxu_priv *priv)
+ {
+-	struct ieee80211_vif *vif;
+ 	struct rtl8xxxu_btcoex *btcoex;
+-	bool wifi_connected;
+ 
+-	vif = priv->vif;
+ 	btcoex = &priv->bt_coex;
+-	wifi_connected = (vif && vif->cfg.assoc);
+ 
+-	if (wifi_connected) {
++	if (rtl8xxxu_is_assoc(priv)) {
+ 		u32 val32 = 0;
+ 		u32 high_prio_tx = 0, high_prio_rx = 0;
+ 
+@@ -7103,7 +7101,7 @@ static void rtl8xxxu_track_cfo(struct rt
+ 	int cfo_khz_a, cfo_khz_b, cfo_average;
+ 	int crystal_cap;
+ 
+-	if (!priv->vif || !priv->vif->cfg.assoc) {
++	if (!rtl8xxxu_is_assoc(priv)) {
+ 		/* Reset */
+ 		cfo->adjust = true;
+ 
diff --git a/package/kernel/mac80211/patches/rtl/001-07-v6.9-wifi-rtl8xxxu-extend-check-for-matching-bssid-to-bot.patch b/package/kernel/mac80211/patches/rtl/001-07-v6.9-wifi-rtl8xxxu-extend-check-for-matching-bssid-to-bot.patch
new file mode 100644
index 0000000000..2c53aded28
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-07-v6.9-wifi-rtl8xxxu-extend-check-for-matching-bssid-to-bot.patch
@@ -0,0 +1,70 @@
+From 80fd8687db41b1e04f78c37137d090f2165cca6e Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:28 +0100
+Subject: [PATCH 07/21] wifi: rtl8xxxu: extend check for matching bssid to both
+ interfaces
+
+The driver will support two interfaces soon, which both can be in
+station mode, so extend the check, whether cfo information should be
+parsed, to cover both interfaces.
+
+For better code readability put the lines with priv->vifs[port_num] in a
+separate function.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-8-martin.kaistra at linutronix.de
+---
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 22 ++++++++++++-------
+ 1 file changed, 14 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -5706,6 +5706,16 @@ static void rtl8xxxu_update_beacon_work_
+ 	rtl8xxxu_send_beacon_frame(hw, vif);
+ }
+ 
++static inline bool rtl8xxxu_is_packet_match_bssid(struct rtl8xxxu_priv *priv,
++						  struct ieee80211_hdr *hdr,
++						  int port_num)
++{
++	return priv->vifs[port_num] &&
++	       priv->vifs[port_num]->type == NL80211_IFTYPE_STATION &&
++	       priv->vifs[port_num]->cfg.assoc &&
++	       ether_addr_equal(priv->vifs[port_num]->bss_conf.bssid, hdr->addr2);
++}
++
+ void rtl8723au_rx_parse_phystats(struct rtl8xxxu_priv *priv,
+ 				 struct ieee80211_rx_status *rx_status,
+ 				 struct rtl8723au_phy_stats *phy_stats,
+@@ -5722,12 +5732,10 @@ void rtl8723au_rx_parse_phystats(struct
+ 		rx_status->signal = priv->fops->cck_rssi(priv, phy_stats);
+ 	} else {
+ 		bool parse_cfo = priv->fops->set_crystal_cap &&
+-				 priv->vif &&
+-				 priv->vif->type == NL80211_IFTYPE_STATION &&
+-				 priv->vif->cfg.assoc &&
+ 				 !crc_icv_err &&
+ 				 !ieee80211_is_ctl(hdr->frame_control) &&
+-				 ether_addr_equal(priv->vif->bss_conf.bssid, hdr->addr2);
++				 (rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) ||
++				  rtl8xxxu_is_packet_match_bssid(priv, hdr, 1));
+ 
+ 		if (parse_cfo) {
+ 			priv->cfo_tracking.cfo_tail[0] = phy_stats->path_cfotail[0];
+@@ -5762,12 +5770,10 @@ static void jaguar2_rx_parse_phystats_ty
+ 					    bool crc_icv_err)
+ {
+ 	bool parse_cfo = priv->fops->set_crystal_cap &&
+-			 priv->vif &&
+-			 priv->vif->type == NL80211_IFTYPE_STATION &&
+-			 priv->vif->cfg.assoc &&
+ 			 !crc_icv_err &&
+ 			 !ieee80211_is_ctl(hdr->frame_control) &&
+-			 ether_addr_equal(priv->vif->bss_conf.bssid, hdr->addr2);
++			 (rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) ||
++			  rtl8xxxu_is_packet_match_bssid(priv, hdr, 1));
+ 	u8 pwdb_max = 0;
+ 	int rx_path;
+ 
diff --git a/package/kernel/mac80211/patches/rtl/001-08-v6.9-wifi-rtl8xxxu-don-t-parse-CFO-if-both-interfaces-are.patch b/package/kernel/mac80211/patches/rtl/001-08-v6.9-wifi-rtl8xxxu-don-t-parse-CFO-if-both-interfaces-are.patch
new file mode 100644
index 0000000000..bad1c3cb27
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-08-v6.9-wifi-rtl8xxxu-don-t-parse-CFO-if-both-interfaces-are.patch
@@ -0,0 +1,51 @@
+From f86dd8eaf8da84ee5b803d90b8c311d7e2725d0b Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:29 +0100
+Subject: [PATCH 08/21] wifi: rtl8xxxu: don't parse CFO, if both interfaces are
+ connected in STA mode
+
+If both interfaces are in STATION mode and both are connected to an AP,
+there might be conflicting CFO values for the two connections. Ignore
+the CFO information in this case.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-9-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -5716,6 +5716,14 @@ static inline bool rtl8xxxu_is_packet_ma
+ 	       ether_addr_equal(priv->vifs[port_num]->bss_conf.bssid, hdr->addr2);
+ }
+ 
++static inline bool rtl8xxxu_is_sta_sta(struct rtl8xxxu_priv *priv)
++{
++	return (priv->vifs[0] && priv->vifs[0]->cfg.assoc &&
++		priv->vifs[0]->type == NL80211_IFTYPE_STATION) &&
++	       (priv->vifs[1] && priv->vifs[1]->cfg.assoc &&
++		priv->vifs[1]->type == NL80211_IFTYPE_STATION);
++}
++
+ void rtl8723au_rx_parse_phystats(struct rtl8xxxu_priv *priv,
+ 				 struct ieee80211_rx_status *rx_status,
+ 				 struct rtl8723au_phy_stats *phy_stats,
+@@ -5734,6 +5742,7 @@ void rtl8723au_rx_parse_phystats(struct
+ 		bool parse_cfo = priv->fops->set_crystal_cap &&
+ 				 !crc_icv_err &&
+ 				 !ieee80211_is_ctl(hdr->frame_control) &&
++				 !rtl8xxxu_is_sta_sta(priv) &&
+ 				 (rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) ||
+ 				  rtl8xxxu_is_packet_match_bssid(priv, hdr, 1));
+ 
+@@ -5772,6 +5781,7 @@ static void jaguar2_rx_parse_phystats_ty
+ 	bool parse_cfo = priv->fops->set_crystal_cap &&
+ 			 !crc_icv_err &&
+ 			 !ieee80211_is_ctl(hdr->frame_control) &&
++			 !rtl8xxxu_is_sta_sta(priv) &&
+ 			 (rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) ||
+ 			  rtl8xxxu_is_packet_match_bssid(priv, hdr, 1));
+ 	u8 pwdb_max = 0;
diff --git a/package/kernel/mac80211/patches/rtl/001-09-v6.9-wifi-rtl8xxxu-support-setting-bssid-register-for-mul.patch b/package/kernel/mac80211/patches/rtl/001-09-v6.9-wifi-rtl8xxxu-support-setting-bssid-register-for-mul.patch
new file mode 100644
index 0000000000..def70343b0
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-09-v6.9-wifi-rtl8xxxu-support-setting-bssid-register-for-mul.patch
@@ -0,0 +1,67 @@
+From 3ff7a05996f901a7a10068b42e9dc8435f908a4c Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:30 +0100
+Subject: [PATCH 09/21] wifi: rtl8xxxu: support setting bssid register for
+ multiple interfaces
+
+To prepare for concurrent mode, enhance rtl8xxxu_set_bssid() to write the
+BSSID of the respective interface to REG_BSSID or REG_BSSID1.
+
+Like done with rtl8xxxu_set_mac(), call rtl8xxxu_set_bssid() with
+port_num = 0, until the callers also support multiple interfaces.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-10-martin.kaistra at linutronix.de
+---
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c  | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -3603,14 +3603,24 @@ static int rtl8xxxu_set_mac(struct rtl8x
+ 	return 0;
+ }
+ 
+-static int rtl8xxxu_set_bssid(struct rtl8xxxu_priv *priv, const u8 *bssid)
++static int rtl8xxxu_set_bssid(struct rtl8xxxu_priv *priv, const u8 *bssid, int port_num)
+ {
+ 	int i;
+ 	u16 reg;
+ 
+ 	dev_dbg(&priv->udev->dev, "%s: (%pM)\n", __func__, bssid);
+ 
+-	reg = REG_BSSID;
++	switch (port_num) {
++	case 0:
++		reg = REG_BSSID;
++		break;
++	case 1:
++		reg = REG_BSSID1;
++		break;
++	default:
++		WARN_ONCE("%s: invalid port_num\n", __func__);
++		return -EINVAL;
++	}
+ 
+ 	for (i = 0; i < ETH_ALEN; i++)
+ 		rtl8xxxu_write8(priv, reg + i, bssid[i]);
+@@ -5068,7 +5078,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 
+ 	if (changed & BSS_CHANGED_BSSID) {
+ 		dev_dbg(dev, "Changed BSSID!\n");
+-		rtl8xxxu_set_bssid(priv, bss_conf->bssid);
++		rtl8xxxu_set_bssid(priv, bss_conf->bssid, 0);
+ 	}
+ 
+ 	if (changed & BSS_CHANGED_BASIC_RATES) {
+@@ -5097,7 +5107,7 @@ static int rtl8xxxu_start_ap(struct ieee
+ 	struct device *dev = &priv->udev->dev;
+ 
+ 	dev_dbg(dev, "Start AP mode\n");
+-	rtl8xxxu_set_bssid(priv, vif->bss_conf.bssid);
++	rtl8xxxu_set_bssid(priv, vif->bss_conf.bssid, 0);
+ 	rtl8xxxu_write16(priv, REG_BCN_INTERVAL, vif->bss_conf.beacon_int);
+ 	priv->fops->report_connect(priv, RTL8XXXU_BC_MC_MACID, 0, true);
+ 
diff --git a/package/kernel/mac80211/patches/rtl/001-10-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-set_aif.patch b/package/kernel/mac80211/patches/rtl/001-10-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-set_aif.patch
new file mode 100644
index 0000000000..b8cb66dd92
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-10-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-set_aif.patch
@@ -0,0 +1,44 @@
+From 43532c050f8eec4056a21978fdb5b958e1477553 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:31 +0100
+Subject: [PATCH 10/21] wifi: rtl8xxxu: support multiple interfaces in
+ set_aifs()
+
+In concurrent mode supported by this driver, both interfaces will use
+the same channel and same wireless mode.
+It is therefore possible to get the wireless mode by checking the first
+connected interface.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-11-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -4913,14 +4913,20 @@ static void rtl8xxxu_set_aifs(struct rtl
+ 	u8 aifs, aifsn, sifs;
+ 	int i;
+ 
+-	if (priv->vif) {
++	for (i = 0; i < ARRAY_SIZE(priv->vifs); i++) {
++		if (!priv->vifs[i])
++			continue;
++
+ 		struct ieee80211_sta *sta;
+ 
+ 		rcu_read_lock();
+-		sta = ieee80211_find_sta(priv->vif, priv->vif->bss_conf.bssid);
++		sta = ieee80211_find_sta(priv->vifs[i], priv->vifs[i]->bss_conf.bssid);
+ 		if (sta)
+ 			wireless_mode = rtl8xxxu_wireless_mode(priv->hw, sta);
+ 		rcu_read_unlock();
++
++		if (wireless_mode)
++			break;
+ 	}
+ 
+ 	if (priv->hw->conf.chandef.chan->band == NL80211_BAND_5GHZ ||
diff --git a/package/kernel/mac80211/patches/rtl/001-11-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-update_.patch b/package/kernel/mac80211/patches/rtl/001-11-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-update_.patch
new file mode 100644
index 0000000000..63960e7ae7
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-11-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-update_.patch
@@ -0,0 +1,28 @@
+From 05b22e9b7d84253f765cde01cb09d144094b61c9 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:32 +0100
+Subject: [PATCH 11/21] wifi: rtl8xxxu: support multiple interfaces in
+ update_beacon_work_callback()
+
+As we only want to support AP mode/sending beacons on port 0, it is
+enough to replace priv->vif with priv->vifs[0].
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-12-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -5712,7 +5712,7 @@ static void rtl8xxxu_update_beacon_work_
+ 	struct rtl8xxxu_priv *priv =
+ 		container_of(work, struct rtl8xxxu_priv, update_beacon_work);
+ 	struct ieee80211_hw *hw = priv->hw;
+-	struct ieee80211_vif *vif = priv->vif;
++	struct ieee80211_vif *vif = priv->vifs[0];
+ 
+ 	if (!vif) {
+ 		WARN_ONCE(true, "no vif to update beacon\n");
diff --git a/package/kernel/mac80211/patches/rtl/001-12-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-configu.patch b/package/kernel/mac80211/patches/rtl/001-12-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-configu.patch
new file mode 100644
index 0000000000..707236b7dc
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-12-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-configu.patch
@@ -0,0 +1,33 @@
+From 6b76638287055791e74b32c401a39ea1b91e7158 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:33 +0100
+Subject: [PATCH 12/21] wifi: rtl8xxxu: support multiple interfaces in
+ configure_filter()
+
+As we only want to support AP mode/sending beacons on port 0, change
+from priv->vif to priv->vifs[0] in the check for AP mode.
+Additionally, if we are in AP mode, don't filter RX beacon and probe
+response frames to still allow working STATION mode on the other
+interface.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-13-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -6794,8 +6794,8 @@ static void rtl8xxxu_configure_filter(st
+ 	else
+ 		rcr |= RCR_CHECK_BSSID_BEACON | RCR_CHECK_BSSID_MATCH;
+ 
+-	if (priv->vif && priv->vif->type == NL80211_IFTYPE_AP)
+-		rcr &= ~RCR_CHECK_BSSID_MATCH;
++	if (priv->vifs[0] && priv->vifs[0]->type == NL80211_IFTYPE_AP)
++		rcr &= ~(RCR_CHECK_BSSID_MATCH | RCR_CHECK_BSSID_BEACON);
+ 
+ 	if (*total_flags & FIF_CONTROL)
+ 		rcr |= RCR_ACCEPT_CTRL_FRAME;
diff --git a/package/kernel/mac80211/patches/rtl/001-13-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-watchdo.patch b/package/kernel/mac80211/patches/rtl/001-13-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-watchdo.patch
new file mode 100644
index 0000000000..b174b704d7
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-13-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-watchdo.patch
@@ -0,0 +1,66 @@
+From 3f9baa99f8429ea6f56e7cc8d881c027518e9573 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:34 +0100
+Subject: [PATCH 13/21] wifi: rtl8xxxu: support multiple interfaces in
+ watchdog_callback()
+
+Check first whether priv->vifs[0] exists and is of type STATION, then go
+to priv->vifs[1]. Make sure to call refresh_rate_mask for both
+interfaces.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-14-martin.kaistra at linutronix.de
+---
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -7200,11 +7200,15 @@ static void rtl8xxxu_watchdog_callback(s
+ {
+ 	struct ieee80211_vif *vif;
+ 	struct rtl8xxxu_priv *priv;
++	int i;
+ 
+ 	priv = container_of(work, struct rtl8xxxu_priv, ra_watchdog.work);
+-	vif = priv->vif;
++	for (i = 0; i < ARRAY_SIZE(priv->vifs); i++) {
++		vif = priv->vifs[i];
++
++		if (!vif || vif->type != NL80211_IFTYPE_STATION)
++			continue;
+ 
+-	if (vif && vif->type == NL80211_IFTYPE_STATION) {
+ 		int signal;
+ 		struct ieee80211_sta *sta;
+ 
+@@ -7215,22 +7219,21 @@ static void rtl8xxxu_watchdog_callback(s
+ 
+ 			dev_dbg(dev, "%s: no sta found\n", __func__);
+ 			rcu_read_unlock();
+-			goto out;
++			continue;
+ 		}
+ 		rcu_read_unlock();
+ 
+ 		signal = ieee80211_ave_rssi(vif);
+ 
+-		priv->fops->report_rssi(priv, 0,
++		priv->fops->report_rssi(priv, rtl8xxxu_get_macid(priv, sta),
+ 					rtl8xxxu_signal_to_snr(signal));
+ 
+-		if (priv->fops->set_crystal_cap)
+-			rtl8xxxu_track_cfo(priv);
+-
+ 		rtl8xxxu_refresh_rate_mask(priv, signal, sta, false);
+ 	}
+ 
+-out:
++	if (priv->fops->set_crystal_cap)
++		rtl8xxxu_track_cfo(priv);
++
+ 	schedule_delayed_work(&priv->ra_watchdog, 2 * HZ);
+ }
+ 
diff --git a/package/kernel/mac80211/patches/rtl/001-14-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-add-rem.patch b/package/kernel/mac80211/patches/rtl/001-14-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-add-rem.patch
new file mode 100644
index 0000000000..7fcbb02afe
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-14-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-add-rem.patch
@@ -0,0 +1,137 @@
+From eef55f1545c92c7181d5083453dee1296298ad3e Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:35 +0100
+Subject: [PATCH 14/21] wifi: rtl8xxxu: support multiple interfaces in
+ {add,remove}_interface()
+
+Add a custom struct to store in vif->drv_priv with a reference to
+port_num and fill it when a new interface is added. Choose a free
+port_num for the newly added interface.
+
+As we only want to support AP mode/sending beacons on port 0, only change
+the beacon settings if a new interface is actually assigned to port 0.
+
+Call set_linktype() and set_mac() with the appropriate port_num.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-15-martin.kaistra at linutronix.de
+---
+ .../net/wireless/realtek/rtl8xxxu/rtl8xxxu.h  |  4 ++
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 52 +++++++++++--------
+ 2 files changed, 34 insertions(+), 22 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+@@ -1921,6 +1921,10 @@ struct rtl8xxxu_sta_info {
+ 	u8 macid;
+ };
+ 
++struct rtl8xxxu_vif {
++	int port_num;
++};
++
+ struct rtl8xxxu_rx_urb {
+ 	struct urb urb;
+ 	struct ieee80211_hw *hw;
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -6610,28 +6610,33 @@ error:
+ static int rtl8xxxu_add_interface(struct ieee80211_hw *hw,
+ 				  struct ieee80211_vif *vif)
+ {
++	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+-	int ret;
++	int port_num;
+ 	u8 val8;
+ 
+-	if (!priv->vif) {
+-		priv->vif = vif;
+-		priv->vifs[0] = vif;
+-	} else {
++	if (!priv->vifs[0])
++		port_num = 0;
++	else if (!priv->vifs[1])
++		port_num = 1;
++	else
+ 		return -EOPNOTSUPP;
+-	}
+ 
+ 	switch (vif->type) {
+ 	case NL80211_IFTYPE_STATION:
+-		rtl8xxxu_stop_tx_beacon(priv);
++		if (port_num == 0) {
++			rtl8xxxu_stop_tx_beacon(priv);
+ 
+-		val8 = rtl8xxxu_read8(priv, REG_BEACON_CTRL);
+-		val8 |= BEACON_ATIM | BEACON_FUNCTION_ENABLE |
+-			BEACON_DISABLE_TSF_UPDATE;
+-		rtl8xxxu_write8(priv, REG_BEACON_CTRL, val8);
+-		ret = 0;
++			val8 = rtl8xxxu_read8(priv, REG_BEACON_CTRL);
++			val8 |= BEACON_ATIM | BEACON_FUNCTION_ENABLE |
++				BEACON_DISABLE_TSF_UPDATE;
++			rtl8xxxu_write8(priv, REG_BEACON_CTRL, val8);
++		}
+ 		break;
+ 	case NL80211_IFTYPE_AP:
++		if (port_num == 1)
++			return -EOPNOTSUPP;
++
+ 		rtl8xxxu_write8(priv, REG_BEACON_CTRL,
+ 				BEACON_DISABLE_TSF_UPDATE | BEACON_CTRL_MBSSID);
+ 		rtl8xxxu_write8(priv, REG_ATIMWND, 0x0c); /* 12ms */
+@@ -6648,31 +6653,32 @@ static int rtl8xxxu_add_interface(struct
+ 		val8 = rtl8xxxu_read8(priv, REG_CCK_CHECK);
+ 		val8 &= ~BIT_BCN_PORT_SEL;
+ 		rtl8xxxu_write8(priv, REG_CCK_CHECK, val8);
+-
+-		ret = 0;
+ 		break;
+ 	default:
+-		ret = -EOPNOTSUPP;
++		return -EOPNOTSUPP;
+ 	}
+ 
+-	rtl8xxxu_set_linktype(priv, vif->type, 0);
++	priv->vifs[port_num] = vif;
++	priv->vif = vif;
++	rtlvif->port_num = port_num;
++
++	rtl8xxxu_set_linktype(priv, vif->type, port_num);
+ 	ether_addr_copy(priv->mac_addr, vif->addr);
+-	rtl8xxxu_set_mac(priv, 0);
++	rtl8xxxu_set_mac(priv, port_num);
+ 
+-	return ret;
++	return 0;
+ }
+ 
+ static void rtl8xxxu_remove_interface(struct ieee80211_hw *hw,
+ 				      struct ieee80211_vif *vif)
+ {
++	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 
+ 	dev_dbg(&priv->udev->dev, "%s\n", __func__);
+ 
+-	if (priv->vif) {
+-		priv->vif = NULL;
+-		priv->vifs[0] = NULL;
+-	}
++	priv->vif = NULL;
++	priv->vifs[rtlvif->port_num] = NULL;
+ }
+ 
+ static int rtl8xxxu_config(struct ieee80211_hw *hw, u32 changed)
+@@ -7661,6 +7667,8 @@ static int rtl8xxxu_probe(struct usb_int
+ 	if (ret)
+ 		goto err_set_intfdata;
+ 
++	hw->vif_data_size = sizeof(struct rtl8xxxu_vif);
++
+ 	hw->wiphy->max_scan_ssids = 1;
+ 	hw->wiphy->max_scan_ie_len = IEEE80211_MAX_DATA_LEN;
+ 	if (priv->fops->max_macid_num)
diff --git a/package/kernel/mac80211/patches/rtl/001-15-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-bss_inf.patch b/package/kernel/mac80211/patches/rtl/001-15-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-bss_inf.patch
new file mode 100644
index 0000000000..5c5c1948d3
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-15-v6.9-wifi-rtl8xxxu-support-multiple-interfaces-in-bss_inf.patch
@@ -0,0 +1,57 @@
+From 073401c3b6b9eaea027240baf07f2b84dd2d2d26 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:36 +0100
+Subject: [PATCH 15/21] wifi: rtl8xxxu: support multiple interfaces in
+ bss_info_changed()
+
+Call set_linktype and set_bssid now with correct port_num. Call
+stop_tx_beacon only for port 0, as we don't support beacons on port 1.
+Explicit changes to BEACON will only happen for AP type interfaces, so
+we don't need an additional check there.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-16-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -4983,6 +4983,7 @@ static void
+ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+ 			  struct ieee80211_bss_conf *bss_conf, u64 changed)
+ {
++	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 	struct device *dev = &priv->udev->dev;
+ 	struct ieee80211_sta *sta;
+@@ -4995,7 +4996,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 	if (changed & BSS_CHANGED_ASSOC) {
+ 		dev_dbg(dev, "Changed ASSOC: %i!\n", vif->cfg.assoc);
+ 
+-		rtl8xxxu_set_linktype(priv, vif->type, 0);
++		rtl8xxxu_set_linktype(priv, vif->type, rtlvif->port_num);
+ 
+ 		if (vif->cfg.assoc) {
+ 			u32 ramask;
+@@ -5042,7 +5043,8 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 
+ 			rtl8xxxu_write8(priv, REG_BCN_MAX_ERR, 0xff);
+ 
+-			rtl8xxxu_stop_tx_beacon(priv);
++			if (rtlvif->port_num == 0)
++				rtl8xxxu_stop_tx_beacon(priv);
+ 
+ 			/* joinbss sequence */
+ 			rtl8xxxu_write16(priv, REG_BCN_PSR_RPT,
+@@ -5084,7 +5086,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 
+ 	if (changed & BSS_CHANGED_BSSID) {
+ 		dev_dbg(dev, "Changed BSSID!\n");
+-		rtl8xxxu_set_bssid(priv, bss_conf->bssid, 0);
++		rtl8xxxu_set_bssid(priv, bss_conf->bssid, rtlvif->port_num);
+ 	}
+ 
+ 	if (changed & BSS_CHANGED_BASIC_RATES) {
diff --git a/package/kernel/mac80211/patches/rtl/001-16-v6.9-wifi-rtl8xxxu-support-multiple-interface-in-start_ap.patch b/package/kernel/mac80211/patches/rtl/001-16-v6.9-wifi-rtl8xxxu-support-multiple-interface-in-start_ap.patch
new file mode 100644
index 0000000000..25d0238461
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-16-v6.9-wifi-rtl8xxxu-support-multiple-interface-in-start_ap.patch
@@ -0,0 +1,32 @@
+From 61fdbd9e2a9d74c716bf4d9684653de5efdee691 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:37 +0100
+Subject: [PATCH 16/21] wifi: rtl8xxxu: support multiple interface in
+ start_ap()
+
+Call set_bssid() with the correct port_num now.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-17-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -5111,11 +5111,12 @@ error:
+ static int rtl8xxxu_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+ 			     struct ieee80211_bss_conf *link_conf)
+ {
++	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 	struct device *dev = &priv->udev->dev;
+ 
+ 	dev_dbg(dev, "Start AP mode\n");
+-	rtl8xxxu_set_bssid(priv, vif->bss_conf.bssid, 0);
++	rtl8xxxu_set_bssid(priv, vif->bss_conf.bssid, rtlvif->port_num);
+ 	rtl8xxxu_write16(priv, REG_BCN_INTERVAL, vif->bss_conf.beacon_int);
+ 	priv->fops->report_connect(priv, RTL8XXXU_BC_MC_MACID, 0, true);
+ 
diff --git a/package/kernel/mac80211/patches/rtl/001-17-v6.9-wifi-rtl8xxxu-add-macids-for-STA-mode.patch b/package/kernel/mac80211/patches/rtl/001-17-v6.9-wifi-rtl8xxxu-add-macids-for-STA-mode.patch
new file mode 100644
index 0000000000..9f8d0a3aaf
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-17-v6.9-wifi-rtl8xxxu-add-macids-for-STA-mode.patch
@@ -0,0 +1,82 @@
+From 5ce0d7e8aee03e73b35f0fe1f1ebbdd4e45776f3 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:38 +0100
+Subject: [PATCH 17/21] wifi: rtl8xxxu: add macids for STA mode
+
+Until now, the driver only assigned a dedicated macid for connections
+made in AP mode, in STA mode the return value of rtl8xxxu_get_macid()
+was simply 0.
+To differentiate between port 0 and 1, when both are in STA mode,
+allocate a second macid (with value 1) and set sta_info->macid according
+to the used port_num in rtl8xxxu_sta_add().
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-18-martin.kaistra at linutronix.de
+---
+ .../net/wireless/realtek/rtl8xxxu/rtl8xxxu.h   |  1 +
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c  | 18 +++++++++++++++++-
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+@@ -1774,6 +1774,7 @@ struct rtl8xxxu_cfo_tracking {
+ #define RTL8XXXU_HW_LED_CONTROL	2
+ #define RTL8XXXU_MAX_MAC_ID_NUM	128
+ #define RTL8XXXU_BC_MC_MACID	0
++#define RTL8XXXU_BC_MC_MACID1	1
+ 
+ struct rtl8xxxu_priv {
+ 	struct ieee80211_hw *hw;
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -4053,10 +4053,13 @@ static inline u8 rtl8xxxu_get_macid(stru
+ {
+ 	struct rtl8xxxu_sta_info *sta_info;
+ 
+-	if (!priv->vif || priv->vif->type == NL80211_IFTYPE_STATION || !sta)
++	if (!sta)
+ 		return 0;
+ 
+ 	sta_info = (struct rtl8xxxu_sta_info *)sta->drv_priv;
++	if (!sta_info)
++		return 0;
++
+ 	return sta_info->macid;
+ }
+ 
+@@ -4536,6 +4539,7 @@ static int rtl8xxxu_init_device(struct i
+ 		rtl8188e_ra_info_init_all(&priv->ra_info);
+ 
+ 	set_bit(RTL8XXXU_BC_MC_MACID, priv->mac_id_map);
++	set_bit(RTL8XXXU_BC_MC_MACID1, priv->mac_id_map);
+ 
+ exit:
+ 	return ret;
+@@ -7375,6 +7379,7 @@ static int rtl8xxxu_sta_add(struct ieee8
+ 			    struct ieee80211_sta *sta)
+ {
+ 	struct rtl8xxxu_sta_info *sta_info = (struct rtl8xxxu_sta_info *)sta->drv_priv;
++	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 
+ 	if (vif->type == NL80211_IFTYPE_AP) {
+@@ -7384,6 +7389,17 @@ static int rtl8xxxu_sta_add(struct ieee8
+ 
+ 		rtl8xxxu_refresh_rate_mask(priv, 0, sta, true);
+ 		priv->fops->report_connect(priv, sta_info->macid, H2C_MACID_ROLE_STA, true);
++	} else {
++		switch (rtlvif->port_num) {
++		case 0:
++			sta_info->macid = RTL8XXXU_BC_MC_MACID;
++			break;
++		case 1:
++			sta_info->macid = RTL8XXXU_BC_MC_MACID1;
++			break;
++		default:
++			break;
++		}
+ 	}
+ 
+ 	return 0;
diff --git a/package/kernel/mac80211/patches/rtl/001-18-v6.9-wifi-rtl8xxxu-remove-obsolete-priv-vif.patch b/package/kernel/mac80211/patches/rtl/001-18-v6.9-wifi-rtl8xxxu-remove-obsolete-priv-vif.patch
new file mode 100644
index 0000000000..5cf65eb519
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-18-v6.9-wifi-rtl8xxxu-remove-obsolete-priv-vif.patch
@@ -0,0 +1,49 @@
+From f232e9d91bb84817c60c051a3e3b56dd2721a7b3 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:39 +0100
+Subject: [PATCH 18/21] wifi: rtl8xxxu: remove obsolete priv->vif
+
+Now that all uses of priv->vif have been converted to priv->vifs[]
+remove the old attribute.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-19-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h      | 5 -----
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 2 --
+ 2 files changed, 7 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+@@ -1893,11 +1893,6 @@ struct rtl8xxxu_priv {
+ 	u8 rssi_level;
+ 	DECLARE_BITMAP(tx_aggr_started, IEEE80211_NUM_TIDS);
+ 	DECLARE_BITMAP(tid_tx_operational, IEEE80211_NUM_TIDS);
+-	/*
+-	 * Only one virtual interface permitted because only STA mode
+-	 * is supported and no iface_combinations are provided.
+-	 */
+-	struct ieee80211_vif *vif;
+ 
+ 	struct ieee80211_vif *vifs[2];
+ 	struct delayed_work ra_watchdog;
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -6666,7 +6666,6 @@ static int rtl8xxxu_add_interface(struct
+ 	}
+ 
+ 	priv->vifs[port_num] = vif;
+-	priv->vif = vif;
+ 	rtlvif->port_num = port_num;
+ 
+ 	rtl8xxxu_set_linktype(priv, vif->type, port_num);
+@@ -6684,7 +6683,6 @@ static void rtl8xxxu_remove_interface(st
+ 
+ 	dev_dbg(&priv->udev->dev, "%s\n", __func__);
+ 
+-	priv->vif = NULL;
+ 	priv->vifs[rtlvif->port_num] = NULL;
+ }
+ 
diff --git a/package/kernel/mac80211/patches/rtl/001-19-v6.9-wifi-rtl8xxxu-add-hw-crypto-support-for-AP-mode.patch b/package/kernel/mac80211/patches/rtl/001-19-v6.9-wifi-rtl8xxxu-add-hw-crypto-support-for-AP-mode.patch
new file mode 100644
index 0000000000..b5f9307496
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-19-v6.9-wifi-rtl8xxxu-add-hw-crypto-support-for-AP-mode.patch
@@ -0,0 +1,226 @@
+From b837f78fbffa5f8e7e7c59879db54793abf161ec Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:40 +0100
+Subject: [PATCH 19/21] wifi: rtl8xxxu: add hw crypto support for AP mode
+
+Add a custom function for allocating entries in the sec cam. This allows
+us to store multiple keys with the same keyidx.
+
+The maximum number of sec cam entries for 8188f is 16 according to the
+vendor driver. Add the number to rtl8xxxu_fileops, so that other chips
+which might support more entries, can set a different number there.
+
+Set the bssid as mac address for group keys instead of just using the
+ethernet broadcast address and use BIT(6) in the sec cam ctrl entry
+for differentiating them from pairwise keys like in the vendor driver.
+
+Add the TXDESC_EN_DESC_ID bit and the hw_key_idx to tx
+broadcast/multicast packets in AP mode.
+
+Finally, allow the usage of rtl8xxxu_set_key() for AP mode.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-20-martin.kaistra at linutronix.de
+---
+ .../net/wireless/realtek/rtl8xxxu/rtl8xxxu.h  |  5 ++
+ .../realtek/rtl8xxxu/rtl8xxxu_8188f.c         |  1 +
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 48 +++++++++++++++----
+ 3 files changed, 44 insertions(+), 10 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+@@ -498,6 +498,7 @@ struct rtl8xxxu_txdesc40 {
+ #define DESC_RATE_ID_SHIFT		16
+ #define DESC_RATE_ID_MASK		0xf
+ #define TXDESC_NAVUSEHDR		BIT(20)
++#define TXDESC_EN_DESC_ID		BIT(21)
+ #define TXDESC_SEC_RC4			0x00400000
+ #define TXDESC_SEC_AES			0x00c00000
+ #define TXDESC_PKT_OFFSET_SHIFT		26
+@@ -1775,6 +1776,7 @@ struct rtl8xxxu_cfo_tracking {
+ #define RTL8XXXU_MAX_MAC_ID_NUM	128
+ #define RTL8XXXU_BC_MC_MACID	0
+ #define RTL8XXXU_BC_MC_MACID1	1
++#define RTL8XXXU_MAX_SEC_CAM_NUM	64
+ 
+ struct rtl8xxxu_priv {
+ 	struct ieee80211_hw *hw;
+@@ -1908,6 +1910,7 @@ struct rtl8xxxu_priv {
+ 	char led_name[32];
+ 	struct led_classdev led_cdev;
+ 	DECLARE_BITMAP(mac_id_map, RTL8XXXU_MAX_MAC_ID_NUM);
++	DECLARE_BITMAP(cam_map, RTL8XXXU_MAX_SEC_CAM_NUM);
+ };
+ 
+ struct rtl8xxxu_sta_info {
+@@ -1919,6 +1922,7 @@ struct rtl8xxxu_sta_info {
+ 
+ struct rtl8xxxu_vif {
+ 	int port_num;
++	u8 hw_key_idx;
+ };
+ 
+ struct rtl8xxxu_rx_urb {
+@@ -1993,6 +1997,7 @@ struct rtl8xxxu_fileops {
+ 	u16 max_aggr_num;
+ 	u8 supports_ap:1;
+ 	u16 max_macid_num;
++	u16 max_sec_cam_num;
+ 	u32 adda_1t_init;
+ 	u32 adda_1t_path_on;
+ 	u32 adda_2t_path_on_a;
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188f.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188f.c
+@@ -1751,6 +1751,7 @@ struct rtl8xxxu_fileops rtl8188fu_fops =
+ 	.max_aggr_num = 0x0c14,
+ 	.supports_ap = 1,
+ 	.max_macid_num = 16,
++	.max_sec_cam_num = 16,
+ 	.adda_1t_init = 0x03c00014,
+ 	.adda_1t_path_on = 0x03c00014,
+ 	.trxff_boundary = 0x3f7f,
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -4559,8 +4559,10 @@ static void rtl8xxxu_cam_write(struct rt
+ 	 * This is a bit of a hack - the lower bits of the cipher
+ 	 * suite selector happens to match the cipher index in the CAM
+ 	 */
+-	addr = key->keyidx << CAM_CMD_KEY_SHIFT;
++	addr = key->hw_key_idx << CAM_CMD_KEY_SHIFT;
+ 	ctrl = (key->cipher & 0x0f) << 2 | key->keyidx | CAM_WRITE_VALID;
++	if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE))
++		ctrl |= BIT(6);
+ 
+ 	for (j = 5; j >= 0; j--) {
+ 		switch (j) {
+@@ -5546,13 +5548,14 @@ static void rtl8xxxu_tx(struct ieee80211
+ 	struct rtl8xxxu_tx_urb *tx_urb;
+ 	struct ieee80211_sta *sta = NULL;
+ 	struct ieee80211_vif *vif = tx_info->control.vif;
++	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct device *dev = &priv->udev->dev;
+ 	u32 queue, rts_rate;
+ 	u16 pktlen = skb->len;
+ 	int tx_desc_size = priv->fops->tx_desc_size;
+ 	u8 macid;
+ 	int ret;
+-	bool ampdu_enable, sgi = false, short_preamble = false;
++	bool ampdu_enable, sgi = false, short_preamble = false, bmc = false;
+ 
+ 	if (skb_headroom(skb) < tx_desc_size) {
+ 		dev_warn(dev,
+@@ -5594,10 +5597,14 @@ static void rtl8xxxu_tx(struct ieee80211
+ 		tx_desc->txdw0 =
+ 			TXDESC_OWN | TXDESC_FIRST_SEGMENT | TXDESC_LAST_SEGMENT;
+ 	if (is_multicast_ether_addr(ieee80211_get_DA(hdr)) ||
+-	    is_broadcast_ether_addr(ieee80211_get_DA(hdr)))
++	    is_broadcast_ether_addr(ieee80211_get_DA(hdr))) {
+ 		tx_desc->txdw0 |= TXDESC_BROADMULTICAST;
++		bmc = true;
++	}
++
+ 
+ 	tx_desc->txdw1 = cpu_to_le32(queue << TXDESC_QUEUE_SHIFT);
++	macid = rtl8xxxu_get_macid(priv, sta);
+ 
+ 	if (tx_info->control.hw_key) {
+ 		switch (tx_info->control.hw_key->cipher) {
+@@ -5612,6 +5619,10 @@ static void rtl8xxxu_tx(struct ieee80211
+ 		default:
+ 			break;
+ 		}
++		if (bmc && rtlvif->hw_key_idx != 0xff) {
++			tx_desc->txdw1 |= TXDESC_EN_DESC_ID;
++			macid = rtlvif->hw_key_idx;
++		}
+ 	}
+ 
+ 	/* (tx_info->flags & IEEE80211_TX_CTL_AMPDU) && */
+@@ -5655,7 +5666,6 @@ static void rtl8xxxu_tx(struct ieee80211
+ 	else
+ 		rts_rate = 0;
+ 
+-	macid = rtl8xxxu_get_macid(priv, sta);
+ 	priv->fops->fill_txdesc(hw, hdr, tx_info, tx_desc, sgi, short_preamble,
+ 				ampdu_enable, rts_rate, macid);
+ 
+@@ -6667,6 +6677,7 @@ static int rtl8xxxu_add_interface(struct
+ 
+ 	priv->vifs[port_num] = vif;
+ 	rtlvif->port_num = port_num;
++	rtlvif->hw_key_idx = 0xff;
+ 
+ 	rtl8xxxu_set_linktype(priv, vif->type, port_num);
+ 	ether_addr_copy(priv->mac_addr, vif->addr);
+@@ -6843,11 +6854,19 @@ static int rtl8xxxu_set_rts_threshold(st
+ 	return 0;
+ }
+ 
++static int rtl8xxxu_get_free_sec_cam(struct ieee80211_hw *hw)
++{
++	struct rtl8xxxu_priv *priv = hw->priv;
++
++	return find_first_zero_bit(priv->cam_map, priv->fops->max_sec_cam_num);
++}
++
+ static int rtl8xxxu_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
+ 			    struct ieee80211_vif *vif,
+ 			    struct ieee80211_sta *sta,
+ 			    struct ieee80211_key_conf *key)
+ {
++	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 	struct device *dev = &priv->udev->dev;
+ 	u8 mac_addr[ETH_ALEN];
+@@ -6859,9 +6878,6 @@ static int rtl8xxxu_set_key(struct ieee8
+ 	dev_dbg(dev, "%s: cmd %02x, cipher %08x, index %i\n",
+ 		__func__, cmd, key->cipher, key->keyidx);
+ 
+-	if (vif->type != NL80211_IFTYPE_STATION)
+-		return -EOPNOTSUPP;
+-
+ 	if (key->keyidx > 3)
+ 		return -EOPNOTSUPP;
+ 
+@@ -6885,7 +6901,7 @@ static int rtl8xxxu_set_key(struct ieee8
+ 		ether_addr_copy(mac_addr, sta->addr);
+ 	} else {
+ 		dev_dbg(dev, "%s: group key\n", __func__);
+-		eth_broadcast_addr(mac_addr);
++		ether_addr_copy(mac_addr, vif->bss_conf.bssid);
+ 	}
+ 
+ 	val16 = rtl8xxxu_read16(priv, REG_CR);
+@@ -6899,16 +6915,28 @@ static int rtl8xxxu_set_key(struct ieee8
+ 
+ 	switch (cmd) {
+ 	case SET_KEY:
+-		key->hw_key_idx = key->keyidx;
++
++		retval = rtl8xxxu_get_free_sec_cam(hw);
++		if (retval < 0)
++			return -EOPNOTSUPP;
++
++		key->hw_key_idx = retval;
++
++		if (vif->type == NL80211_IFTYPE_AP && !(key->flags & IEEE80211_KEY_FLAG_PAIRWISE))
++			rtlvif->hw_key_idx = key->hw_key_idx;
++
+ 		key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
+ 		rtl8xxxu_cam_write(priv, key, mac_addr);
++		set_bit(key->hw_key_idx, priv->cam_map);
+ 		retval = 0;
+ 		break;
+ 	case DISABLE_KEY:
+ 		rtl8xxxu_write32(priv, REG_CAM_WRITE, 0x00000000);
+ 		val32 = CAM_CMD_POLLING | CAM_CMD_WRITE |
+-			key->keyidx << CAM_CMD_KEY_SHIFT;
++			key->hw_key_idx << CAM_CMD_KEY_SHIFT;
+ 		rtl8xxxu_write32(priv, REG_CAM_CMD, val32);
++		rtlvif->hw_key_idx = 0xff;
++		clear_bit(key->hw_key_idx, priv->cam_map);
+ 		retval = 0;
+ 		break;
+ 	default:
diff --git a/package/kernel/mac80211/patches/rtl/001-20-v6.9-wifi-rtl8xxxu-make-supporting-AP-mode-only-on-port-0.patch b/package/kernel/mac80211/patches/rtl/001-20-v6.9-wifi-rtl8xxxu-make-supporting-AP-mode-only-on-port-0.patch
new file mode 100644
index 0000000000..4b55b0ede7
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-20-v6.9-wifi-rtl8xxxu-make-supporting-AP-mode-only-on-port-0.patch
@@ -0,0 +1,130 @@
+From 69abad618efd17e50bc6f880332ab36b660b0b34 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:41 +0100
+Subject: [PATCH 20/21] wifi: rtl8xxxu: make supporting AP mode only on port 0
+ transparent
+
+When the driver is used for concurrent mode, both virtual interfaces can
+be set to station or AP mode, though only one can be in AP mode at the
+same time.
+
+In order to keep the code simple, use only hw port 0 for AP mode. When
+an interface is added in AP mode which would be assigned to port 1, use
+a switch_port function to transparently swap the mapping between virtual
+interface and hw port.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-21-martin.kaistra at linutronix.de
+---
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 91 ++++++++++++++++++-
+ 1 file changed, 89 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -6624,6 +6624,91 @@ error:
+ 	return ret;
+ }
+ 
++static void rtl8xxxu_switch_ports(struct rtl8xxxu_priv *priv)
++{
++	u8 macid[ETH_ALEN], bssid[ETH_ALEN], macid_1[ETH_ALEN], bssid_1[ETH_ALEN];
++	u8 msr, bcn_ctrl, bcn_ctrl_1, atimwnd[2], atimwnd_1[2];
++	struct rtl8xxxu_vif *rtlvif;
++	struct ieee80211_vif *vif;
++	u8 tsftr[8], tsftr_1[8];
++	int i;
++
++	msr = rtl8xxxu_read8(priv, REG_MSR);
++	bcn_ctrl = rtl8xxxu_read8(priv, REG_BEACON_CTRL);
++	bcn_ctrl_1 = rtl8xxxu_read8(priv, REG_BEACON_CTRL_1);
++
++	for (i = 0; i < ARRAY_SIZE(atimwnd); i++)
++		atimwnd[i] = rtl8xxxu_read8(priv, REG_ATIMWND + i);
++	for (i = 0; i < ARRAY_SIZE(atimwnd_1); i++)
++		atimwnd_1[i] = rtl8xxxu_read8(priv, REG_ATIMWND_1 + i);
++
++	for (i = 0; i < ARRAY_SIZE(tsftr); i++)
++		tsftr[i] = rtl8xxxu_read8(priv, REG_TSFTR + i);
++	for (i = 0; i < ARRAY_SIZE(tsftr); i++)
++		tsftr_1[i] = rtl8xxxu_read8(priv, REG_TSFTR1 + i);
++
++	for (i = 0; i < ARRAY_SIZE(macid); i++)
++		macid[i] = rtl8xxxu_read8(priv, REG_MACID + i);
++
++	for (i = 0; i < ARRAY_SIZE(bssid); i++)
++		bssid[i] = rtl8xxxu_read8(priv, REG_BSSID + i);
++
++	for (i = 0; i < ARRAY_SIZE(macid_1); i++)
++		macid_1[i] = rtl8xxxu_read8(priv, REG_MACID1 + i);
++
++	for (i = 0; i < ARRAY_SIZE(bssid_1); i++)
++		bssid_1[i] = rtl8xxxu_read8(priv, REG_BSSID1 + i);
++
++	/* disable bcn function, disable update TSF */
++	rtl8xxxu_write8(priv, REG_BEACON_CTRL, (bcn_ctrl &
++			(~BEACON_FUNCTION_ENABLE)) | BEACON_DISABLE_TSF_UPDATE);
++	rtl8xxxu_write8(priv, REG_BEACON_CTRL_1, (bcn_ctrl_1 &
++			(~BEACON_FUNCTION_ENABLE)) | BEACON_DISABLE_TSF_UPDATE);
++
++	/* switch msr */
++	msr = (msr & 0xf0) | ((msr & 0x03) << 2) | ((msr & 0x0c) >> 2);
++	rtl8xxxu_write8(priv, REG_MSR, msr);
++
++	/* write port0 */
++	rtl8xxxu_write8(priv, REG_BEACON_CTRL, bcn_ctrl_1 & ~BEACON_FUNCTION_ENABLE);
++	for (i = 0; i < ARRAY_SIZE(atimwnd_1); i++)
++		rtl8xxxu_write8(priv, REG_ATIMWND + i, atimwnd_1[i]);
++	for (i = 0; i < ARRAY_SIZE(tsftr_1); i++)
++		rtl8xxxu_write8(priv, REG_TSFTR + i, tsftr_1[i]);
++	for (i = 0; i < ARRAY_SIZE(macid_1); i++)
++		rtl8xxxu_write8(priv, REG_MACID + i, macid_1[i]);
++	for (i = 0; i < ARRAY_SIZE(bssid_1); i++)
++		rtl8xxxu_write8(priv, REG_BSSID + i, bssid_1[i]);
++
++	/* write port1 */
++	rtl8xxxu_write8(priv, REG_BEACON_CTRL_1, bcn_ctrl & ~BEACON_FUNCTION_ENABLE);
++	for (i = 0; i < ARRAY_SIZE(atimwnd); i++)
++		rtl8xxxu_write8(priv, REG_ATIMWND_1 + i, atimwnd[i]);
++	for (i = 0; i < ARRAY_SIZE(tsftr); i++)
++		rtl8xxxu_write8(priv, REG_TSFTR1 + i, tsftr[i]);
++	for (i = 0; i < ARRAY_SIZE(macid); i++)
++		rtl8xxxu_write8(priv, REG_MACID1 + i, macid[i]);
++	for (i = 0; i < ARRAY_SIZE(bssid); i++)
++		rtl8xxxu_write8(priv, REG_BSSID1 + i, bssid[i]);
++
++	/* write bcn ctl */
++	rtl8xxxu_write8(priv, REG_BEACON_CTRL, bcn_ctrl_1);
++	rtl8xxxu_write8(priv, REG_BEACON_CTRL_1, bcn_ctrl);
++
++	vif = priv->vifs[0];
++	priv->vifs[0] = priv->vifs[1];
++	priv->vifs[1] = vif;
++
++	/* priv->vifs[0] is NULL here, based on how this function is currently
++	 * called from rtl8xxxu_add_interface().
++	 * When this function will be used in the future for a different
++	 * scenario, please check whether vifs[0] or vifs[1] can be NULL and if
++	 * necessary add code to set port_num = 1.
++	 */
++	rtlvif = (struct rtl8xxxu_vif *)priv->vifs[1]->drv_priv;
++	rtlvif->port_num = 1;
++}
++
+ static int rtl8xxxu_add_interface(struct ieee80211_hw *hw,
+ 				  struct ieee80211_vif *vif)
+ {
+@@ -6651,8 +6736,10 @@ static int rtl8xxxu_add_interface(struct
+ 		}
+ 		break;
+ 	case NL80211_IFTYPE_AP:
+-		if (port_num == 1)
+-			return -EOPNOTSUPP;
++		if (port_num == 1) {
++			rtl8xxxu_switch_ports(priv);
++			port_num = 0;
++		}
+ 
+ 		rtl8xxxu_write8(priv, REG_BEACON_CTRL,
+ 				BEACON_DISABLE_TSF_UPDATE | BEACON_CTRL_MBSSID);
diff --git a/package/kernel/mac80211/patches/rtl/001-21-v6.9-wifi-rtl8xxxu-declare-concurrent-mode-support-for-81.patch b/package/kernel/mac80211/patches/rtl/001-21-v6.9-wifi-rtl8xxxu-declare-concurrent-mode-support-for-81.patch
new file mode 100644
index 0000000000..6322541434
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/001-21-v6.9-wifi-rtl8xxxu-declare-concurrent-mode-support-for-81.patch
@@ -0,0 +1,76 @@
+From 1cd165adf314f6bf25cde58f02f4ff51d01730b0 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Fri, 22 Dec 2023 11:14:42 +0100
+Subject: [PATCH 21/21] wifi: rtl8xxxu: declare concurrent mode support for
+ 8188f
+
+Everything is in place now for concurrent mode, we can tell the system
+that we support it.
+We will allow a maximum of 2 virtual interfaces, one of them can be in
+AP mode.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20231222101442.626837-22-martin.kaistra at linutronix.de
+---
+ .../net/wireless/realtek/rtl8xxxu/rtl8xxxu.h  |  1 +
+ .../realtek/rtl8xxxu/rtl8xxxu_8188f.c         |  1 +
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 19 +++++++++++++++++++
+ 3 files changed, 21 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+@@ -1992,6 +1992,7 @@ struct rtl8xxxu_fileops {
+ 	u8 init_reg_rxfltmap:1;
+ 	u8 init_reg_pkt_life_time:1;
+ 	u8 init_reg_hmtfr:1;
++	u8 supports_concurrent:1;
+ 	u8 ampdu_max_time;
+ 	u8 ustime_tsf_edca;
+ 	u16 max_aggr_num;
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188f.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188f.c
+@@ -1752,6 +1752,7 @@ struct rtl8xxxu_fileops rtl8188fu_fops =
+ 	.supports_ap = 1,
+ 	.max_macid_num = 16,
+ 	.max_sec_cam_num = 16,
++	.supports_concurrent = 1,
+ 	.adda_1t_init = 0x03c00014,
+ 	.adda_1t_path_on = 0x03c00014,
+ 	.trxff_boundary = 0x3f7f,
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -7665,6 +7665,20 @@ static void rtl8xxxu_deinit_led(struct r
+ 	led_classdev_unregister(led);
+ }
+ 
++struct ieee80211_iface_limit rtl8xxxu_limits[] = {
++	{ .max = 2, .types = BIT(NL80211_IFTYPE_STATION), },
++	{ .max = 1, .types = BIT(NL80211_IFTYPE_AP), },
++};
++
++struct ieee80211_iface_combination rtl8xxxu_combinations[] = {
++	{
++		.limits = rtl8xxxu_limits,
++		.n_limits = ARRAY_SIZE(rtl8xxxu_limits),
++		.max_interfaces = 2,
++		.num_different_channels = 1,
++	},
++};
++
+ static int rtl8xxxu_probe(struct usb_interface *interface,
+ 			  const struct usb_device_id *id)
+ {
+@@ -7810,6 +7824,11 @@ static int rtl8xxxu_probe(struct usb_int
+ 		hw->wiphy->interface_modes |= BIT(NL80211_IFTYPE_AP);
+ 	hw->queues = 4;
+ 
++	if (priv->fops->supports_concurrent) {
++		hw->wiphy->iface_combinations = rtl8xxxu_combinations;
++		hw->wiphy->n_iface_combinations = ARRAY_SIZE(rtl8xxxu_combinations);
++	}
++
+ 	sband = &rtl8xxxu_supported_band;
+ 	sband->ht_cap.ht_supported = true;
+ 	sband->ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
diff --git a/package/kernel/mac80211/patches/rtl/002-01-v6.9-wifi-rtl8xxxu-Fix-LED-control-code-of-RTL8192FU.patch b/package/kernel/mac80211/patches/rtl/002-01-v6.9-wifi-rtl8xxxu-Fix-LED-control-code-of-RTL8192FU.patch
new file mode 100644
index 0000000000..d1a480d53f
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/002-01-v6.9-wifi-rtl8xxxu-Fix-LED-control-code-of-RTL8192FU.patch
@@ -0,0 +1,98 @@
+From 9475cc7ac31503521af95e38151e9d856e8ff30b Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2 at gmail.com>
+Date: Sun, 31 Dec 2023 00:45:54 +0200
+Subject: [PATCH 1/2] wifi: rtl8xxxu: Fix LED control code of RTL8192FU
+
+Some devices, like the Comfast CF-826F, use LED1, which already works.
+Others, like Asus USB-N13 C1, use LED0, which doesn't work correctly.
+
+Write the right values to the LED control registers to make LED0 work
+as well.
+
+This is unfortunately tested only with the Comfast CF-826F.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2 at gmail.com>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/7a2c3158-3a45-4466-b11e-fc09802b20e2 at gmail.com
+---
+ .../realtek/rtl8xxxu/rtl8xxxu_8192f.c         | 32 +++++++++++++------
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 15 +++++++++
+ 2 files changed, 38 insertions(+), 9 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192f.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192f.c
+@@ -2014,26 +2014,40 @@ static int rtl8192fu_led_brightness_set(
+ 	struct rtl8xxxu_priv *priv = container_of(led_cdev,
+ 						  struct rtl8xxxu_priv,
+ 						  led_cdev);
+-	u16 ledcfg;
++	u32 ledcfg;
+ 
+ 	/* Values obtained by observing the USB traffic from the Windows driver. */
+ 	rtl8xxxu_write32(priv, REG_SW_GPIO_SHARE_CTRL_0, 0x20080);
+ 	rtl8xxxu_write32(priv, REG_SW_GPIO_SHARE_CTRL_1, 0x1b0000);
+ 
+-	ledcfg = rtl8xxxu_read16(priv, REG_LEDCFG0);
++	ledcfg = rtl8xxxu_read32(priv, REG_LEDCFG0);
++
++	/* Comfast CF-826F uses LED1. Asus USB-N13 C1 uses LED0. Set both. */
++
++	u32p_replace_bits(&ledcfg, LED_GPIO_ENABLE, LEDCFG0_LED2EN);
++	u32p_replace_bits(&ledcfg, LED_IO_MODE_OUTPUT, LEDCFG0_LED0_IO_MODE);
++	u32p_replace_bits(&ledcfg, LED_IO_MODE_OUTPUT, LEDCFG0_LED1_IO_MODE);
+ 
+ 	if (brightness == LED_OFF) {
+-		/* Value obtained like above. */
+-		ledcfg = BIT(1) | BIT(7);
++		u32p_replace_bits(&ledcfg, LED_MODE_SW_CTRL, LEDCFG0_LED0CM);
++		u32p_replace_bits(&ledcfg, LED_SW_OFF, LEDCFG0_LED0SV);
++		u32p_replace_bits(&ledcfg, LED_MODE_SW_CTRL, LEDCFG0_LED1CM);
++		u32p_replace_bits(&ledcfg, LED_SW_OFF, LEDCFG0_LED1SV);
+ 	} else if (brightness == LED_ON) {
+-		/* Value obtained like above. */
+-		ledcfg = BIT(1) | BIT(7) | BIT(11);
++		u32p_replace_bits(&ledcfg, LED_MODE_SW_CTRL, LEDCFG0_LED0CM);
++		u32p_replace_bits(&ledcfg, LED_SW_ON, LEDCFG0_LED0SV);
++		u32p_replace_bits(&ledcfg, LED_MODE_SW_CTRL, LEDCFG0_LED1CM);
++		u32p_replace_bits(&ledcfg, LED_SW_ON, LEDCFG0_LED1SV);
+ 	} else if (brightness == RTL8XXXU_HW_LED_CONTROL) {
+-		/* Value obtained by brute force. */
+-		ledcfg = BIT(8) | BIT(9);
++		u32p_replace_bits(&ledcfg, LED_MODE_TX_OR_RX_EVENTS,
++				  LEDCFG0_LED0CM);
++		u32p_replace_bits(&ledcfg, LED_SW_OFF, LEDCFG0_LED0SV);
++		u32p_replace_bits(&ledcfg, LED_MODE_TX_OR_RX_EVENTS,
++				  LEDCFG0_LED1CM);
++		u32p_replace_bits(&ledcfg, LED_SW_OFF, LEDCFG0_LED1SV);
+ 	}
+ 
+-	rtl8xxxu_write16(priv, REG_LEDCFG0, ledcfg);
++	rtl8xxxu_write32(priv, REG_LEDCFG0, ledcfg);
+ 
+ 	return 0;
+ }
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+@@ -146,6 +146,21 @@
+ #define  GPIO_INTM_EDGE_TRIG_IRQ	BIT(9)
+ 
+ #define REG_LEDCFG0			0x004c
++#define  LEDCFG0_LED0CM			GENMASK(2, 0)
++#define  LEDCFG0_LED1CM			GENMASK(10, 8)
++#define   LED_MODE_SW_CTRL		0x0
++#define   LED_MODE_TX_OR_RX_EVENTS	0x3
++#define  LEDCFG0_LED0SV			BIT(3)
++#define  LEDCFG0_LED1SV			BIT(11)
++#define   LED_SW_OFF			0x0
++#define   LED_SW_ON			0x1
++#define  LEDCFG0_LED0_IO_MODE		BIT(7)
++#define  LEDCFG0_LED1_IO_MODE		BIT(15)
++#define   LED_IO_MODE_OUTPUT		0x0
++#define   LED_IO_MODE_INPUT		0x1
++#define  LEDCFG0_LED2EN			BIT(21)
++#define   LED_GPIO_DISABLE		0x0
++#define   LED_GPIO_ENABLE		0x1
+ #define  LEDCFG0_DPDT_SELECT		BIT(23)
+ #define REG_LEDCFG1			0x004d
+ #define  LEDCFG1_HW_LED_CONTROL		BIT(1)
diff --git a/package/kernel/mac80211/patches/rtl/002-02-v6.9-wifi-rtl8xxxu-Fix-off-by-one-initial-RTS-rate.patch b/package/kernel/mac80211/patches/rtl/002-02-v6.9-wifi-rtl8xxxu-Fix-off-by-one-initial-RTS-rate.patch
new file mode 100644
index 0000000000..7d1c67f2e0
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/002-02-v6.9-wifi-rtl8xxxu-Fix-off-by-one-initial-RTS-rate.patch
@@ -0,0 +1,36 @@
+From 80850ca041f2c7ee28fa5e47c5c1b106415f099f Mon Sep 17 00:00:00 2001
+From: Bitterblue Smith <rtl8821cerfe2 at gmail.com>
+Date: Tue, 2 Jan 2024 21:33:07 +0200
+Subject: [PATCH 2/2] wifi: rtl8xxxu: Fix off by one initial RTS rate
+
+rtl8xxxu_set_basic_rates() sets the wrong initial RTS rate. It sets the
+next higher rate than the one it should set, e.g. 36M instead of 24M.
+
+The while loop was supposed to find the index of the most significant
+bit which is 1, but it was copied incorrectly from the vendor driver.
+Use __fls() instead.
+
+Signed-off-by: Bitterblue Smith <rtl8821cerfe2 at gmail.com>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/761e6836-6cd6-4930-91b6-0446834655c5 at gmail.com
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -4870,10 +4870,9 @@ static void rtl8xxxu_set_basic_rates(str
+ 
+ 	dev_dbg(&priv->udev->dev, "%s: rates %08x\n", __func__,	rate_cfg);
+ 
+-	while (rate_cfg) {
+-		rate_cfg = (rate_cfg >> 1);
+-		rate_idx++;
+-	}
++	if (rate_cfg)
++		rate_idx = __fls(rate_cfg);
++
+ 	rtl8xxxu_write8(priv, REG_INIRTS_RATE_SEL, rate_idx);
+ }
+ 
diff --git a/package/kernel/mac80211/patches/rtl/003-01-v6.9-wifi-rtl8xxxu-add-cancel_work_sync-for-c2hcmd_work.patch b/package/kernel/mac80211/patches/rtl/003-01-v6.9-wifi-rtl8xxxu-add-cancel_work_sync-for-c2hcmd_work.patch
new file mode 100644
index 0000000000..612b5f8738
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/003-01-v6.9-wifi-rtl8xxxu-add-cancel_work_sync-for-c2hcmd_work.patch
@@ -0,0 +1,27 @@
+From 1213acb478a7181cd73eeaf00db430f1e45b1361 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Thu, 11 Jan 2024 17:36:27 +0100
+Subject: [PATCH 1/2] wifi: rtl8xxxu: add cancel_work_sync() for c2hcmd_work
+
+The workqueue might still be running, when the driver is stopped. To
+avoid a use-after-free, call cancel_work_sync() in rtl8xxxu_stop().
+
+Fixes: e542e66b7c2e ("rtl8xxxu: add bluetooth co-existence support for single antenna")
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20240111163628.320697-2-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -7480,6 +7480,7 @@ static void rtl8xxxu_stop(struct ieee802
+ 	if (priv->usb_interrupts)
+ 		rtl8xxxu_write32(priv, REG_USB_HIMR, 0);
+ 
++	cancel_work_sync(&priv->c2hcmd_work);
+ 	cancel_delayed_work_sync(&priv->ra_watchdog);
+ 
+ 	rtl8xxxu_free_rx_resources(priv);
diff --git a/package/kernel/mac80211/patches/rtl/003-02-v6.9-wifi-rtl8xxxu-enable-channel-switch-support.patch b/package/kernel/mac80211/patches/rtl/003-02-v6.9-wifi-rtl8xxxu-enable-channel-switch-support.patch
new file mode 100644
index 0000000000..6c78d3901b
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/003-02-v6.9-wifi-rtl8xxxu-enable-channel-switch-support.patch
@@ -0,0 +1,100 @@
+From ece90a8622320bf5a24d3326da1f8e109891573c Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Thu, 11 Jan 2024 17:36:28 +0100
+Subject: [PATCH 2/2] wifi: rtl8xxxu: enable channel switch support
+
+The CSA countdown in the beacon frames, which are sent out by firmware,
+needs to get updated by the driver. To achieve this, convert
+update_beacon_work to delayed_work and schedule it with the beacon
+interval in case CSA is active and the countdown is not complete.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20240111163628.320697-3-martin.kaistra at linutronix.de
+---
+ .../net/wireless/realtek/rtl8xxxu/rtl8xxxu.h  |  2 +-
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 19 +++++++++++++++----
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+@@ -1900,7 +1900,7 @@ struct rtl8xxxu_priv {
+ 	struct delayed_work ra_watchdog;
+ 	struct work_struct c2hcmd_work;
+ 	struct sk_buff_head c2hcmd_queue;
+-	struct work_struct update_beacon_work;
++	struct delayed_work update_beacon_work;
+ 	struct rtl8xxxu_btcoex bt_coex;
+ 	struct rtl8xxxu_ra_report ra_report;
+ 	struct rtl8xxxu_cfo_tracking cfo_tracking;
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -4605,7 +4605,7 @@ static int rtl8xxxu_set_tim(struct ieee8
+ {
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 
+-	schedule_work(&priv->update_beacon_work);
++	schedule_delayed_work(&priv->update_beacon_work, 0);
+ 
+ 	return 0;
+ }
+@@ -5107,7 +5107,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 	}
+ 
+ 	if (changed & BSS_CHANGED_BEACON)
+-		schedule_work(&priv->update_beacon_work);
++		schedule_delayed_work(&priv->update_beacon_work, 0);
+ 
+ error:
+ 	return;
+@@ -5726,7 +5726,7 @@ static void rtl8xxxu_send_beacon_frame(s
+ static void rtl8xxxu_update_beacon_work_callback(struct work_struct *work)
+ {
+ 	struct rtl8xxxu_priv *priv =
+-		container_of(work, struct rtl8xxxu_priv, update_beacon_work);
++		container_of(work, struct rtl8xxxu_priv, update_beacon_work.work);
+ 	struct ieee80211_hw *hw = priv->hw;
+ 	struct ieee80211_vif *vif = priv->vifs[0];
+ 
+@@ -5735,6 +5735,14 @@ static void rtl8xxxu_update_beacon_work_
+ 		return;
+ 	}
+ 
++	if (vif->bss_conf.csa_active) {
++		if (ieee80211_beacon_cntdwn_is_complete(vif)) {
++			ieee80211_csa_finish(vif);
++			return;
++		}
++		schedule_delayed_work(&priv->update_beacon_work,
++				      msecs_to_jiffies(vif->bss_conf.beacon_int));
++	}
+ 	rtl8xxxu_send_beacon_frame(hw, vif);
+ }
+ 
+@@ -7482,6 +7490,7 @@ static void rtl8xxxu_stop(struct ieee802
+ 
+ 	cancel_work_sync(&priv->c2hcmd_work);
+ 	cancel_delayed_work_sync(&priv->ra_watchdog);
++	cancel_delayed_work_sync(&priv->update_beacon_work);
+ 
+ 	rtl8xxxu_free_rx_resources(priv);
+ 	rtl8xxxu_free_tx_resources(priv);
+@@ -7763,7 +7772,7 @@ static int rtl8xxxu_probe(struct usb_int
+ 	spin_lock_init(&priv->rx_urb_lock);
+ 	INIT_WORK(&priv->rx_urb_wq, rtl8xxxu_rx_urb_work);
+ 	INIT_DELAYED_WORK(&priv->ra_watchdog, rtl8xxxu_watchdog_callback);
+-	INIT_WORK(&priv->update_beacon_work, rtl8xxxu_update_beacon_work_callback);
++	INIT_DELAYED_WORK(&priv->update_beacon_work, rtl8xxxu_update_beacon_work_callback);
+ 	skb_queue_head_init(&priv->c2hcmd_queue);
+ 
+ 	usb_set_intfdata(interface, hw);
+@@ -7824,6 +7833,8 @@ static int rtl8xxxu_probe(struct usb_int
+ 		hw->wiphy->interface_modes |= BIT(NL80211_IFTYPE_AP);
+ 	hw->queues = 4;
+ 
++	hw->wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
++
+ 	if (priv->fops->supports_concurrent) {
+ 		hw->wiphy->iface_combinations = rtl8xxxu_combinations;
+ 		hw->wiphy->n_iface_combinations = ARRAY_SIZE(rtl8xxxu_combinations);
diff --git a/package/kernel/mac80211/patches/rtl/004-01-v6.9-wifi-rtl8xxxu-convert-EN_DESC_ID-of-TX-descriptor-to.patch b/package/kernel/mac80211/patches/rtl/004-01-v6.9-wifi-rtl8xxxu-convert-EN_DESC_ID-of-TX-descriptor-to.patch
new file mode 100644
index 0000000000..a88a52231d
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/004-01-v6.9-wifi-rtl8xxxu-convert-EN_DESC_ID-of-TX-descriptor-to.patch
@@ -0,0 +1,31 @@
+From 426e7b4773921d07ab4ab8ba16fbad396d6c9971 Mon Sep 17 00:00:00 2001
+From: Ping-Ke Shih <pkshih at realtek.com>
+Date: Tue, 16 Jan 2024 16:09:44 +0800
+Subject: [PATCH 1/2] wifi: rtl8xxxu: convert EN_DESC_ID of TX descriptor to
+ le32 type
+
+Fields of TX descriptor are little-endian order, so correct EN_DESC_ID
+field to le32 type.
+
+Fixes: b837f78fbffa ("wifi: rtl8xxxu: add hw crypto support for AP mode")
+Reported-by: kernel test robot <lkp at intel.com>
+Closes: https://lore.kernel.org/oe-kbuild-all/202401161318.YtXoCkjU-lkp at intel.com/
+Cc: Martin Kaistra <martin.kaistra at linutronix.de>
+Signed-off-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20240116080945.20172-1-pkshih at realtek.com
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -5619,7 +5619,7 @@ static void rtl8xxxu_tx(struct ieee80211
+ 			break;
+ 		}
+ 		if (bmc && rtlvif->hw_key_idx != 0xff) {
+-			tx_desc->txdw1 |= TXDESC_EN_DESC_ID;
++			tx_desc->txdw1 |= cpu_to_le32(TXDESC_EN_DESC_ID);
+ 			macid = rtlvif->hw_key_idx;
+ 		}
+ 	}
diff --git a/package/kernel/mac80211/patches/rtl/004-02-v6.9-wifi-rtl8xxxu-make-instances-of-iface-limit-and-comb.patch b/package/kernel/mac80211/patches/rtl/004-02-v6.9-wifi-rtl8xxxu-make-instances-of-iface-limit-and-comb.patch
new file mode 100644
index 0000000000..68848e28e0
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/004-02-v6.9-wifi-rtl8xxxu-make-instances-of-iface-limit-and-comb.patch
@@ -0,0 +1,36 @@
+From 92c7428f942da7dfcdc629b05b5114f80822d7a4 Mon Sep 17 00:00:00 2001
+From: Ping-Ke Shih <pkshih at realtek.com>
+Date: Tue, 16 Jan 2024 16:09:45 +0800
+Subject: [PATCH 2/2] wifi: rtl8xxxu: make instances of iface limit and
+ combination to be static const
+
+rtl8xxxu_limits and rtl8xxxu_combinations can be static const, so add
+modifiers as desire. Otherwise, Sparse reports warnings
+
+rtl8xxxu_core.c:7677:30: warning: symbol 'rtl8xxxu_limits' was not declared. Should it be static?
+rtl8xxxu_core.c:7682:36: warning: symbol 'rtl8xxxu_combinations' was not declared. Should it be static?
+
+Signed-off-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20240116080945.20172-2-pkshih at realtek.com
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -7674,12 +7674,12 @@ static void rtl8xxxu_deinit_led(struct r
+ 	led_classdev_unregister(led);
+ }
+ 
+-struct ieee80211_iface_limit rtl8xxxu_limits[] = {
++static const struct ieee80211_iface_limit rtl8xxxu_limits[] = {
+ 	{ .max = 2, .types = BIT(NL80211_IFTYPE_STATION), },
+ 	{ .max = 1, .types = BIT(NL80211_IFTYPE_AP), },
+ };
+ 
+-struct ieee80211_iface_combination rtl8xxxu_combinations[] = {
++static const struct ieee80211_iface_combination rtl8xxxu_combinations[] = {
+ 	{
+ 		.limits = rtl8xxxu_limits,
+ 		.n_limits = ARRAY_SIZE(rtl8xxxu_limits),
diff --git a/package/kernel/mac80211/patches/rtl/005-v6.9-wifi-rtl8xxxu-add-missing-number-of-sec-cam-entries-.patch b/package/kernel/mac80211/patches/rtl/005-v6.9-wifi-rtl8xxxu-add-missing-number-of-sec-cam-entries-.patch
new file mode 100644
index 0000000000..9fba6befef
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/005-v6.9-wifi-rtl8xxxu-add-missing-number-of-sec-cam-entries-.patch
@@ -0,0 +1,100 @@
+From 563d5025cf3b51c7bf20e6966af433ed5f838875 Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Tue, 16 Jan 2024 10:50:01 +0100
+Subject: [PATCH] wifi: rtl8xxxu: add missing number of sec cam entries for all
+ variants
+
+Commit b837f78fbffa ("wifi: rtl8xxxu: add hw crypto support for AP
+mode") introduced max_sec_cam_num as a member of rtl8xxxu_fileops.
+It was missed to set this number for all variants except 8188f, which
+caused rtl8xxxu_get_free_sec_cam() to always return 0 and therefore breaking
+encrypted traffic.
+
+Fix it by adding the numbers for all variants. The values are taken from
+the vendor drivers and rtlwifi.
+
+Link: https://lore.kernel.org/linux-wireless/20240111163603.2325-1-zenmchen at gmail.com/
+Fixes: b837f78fbffa ("wifi: rtl8xxxu: add hw crypto support for AP mode")
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20240116095001.399500-1-martin.kaistra at linutronix.de
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c | 1 +
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192c.c | 1 +
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c | 1 +
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192f.c | 1 +
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8710b.c | 1 +
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723a.c | 1 +
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c | 1 +
+ 7 files changed, 7 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c
+@@ -1882,6 +1882,7 @@ struct rtl8xxxu_fileops rtl8188eu_fops =
+ 	.has_tx_report = 1,
+ 	.init_reg_pkt_life_time = 1,
+ 	.gen2_thermal_meter = 1,
++	.max_sec_cam_num = 32,
+ 	.adda_1t_init = 0x0b1b25a0,
+ 	.adda_1t_path_on = 0x0bdb25a0,
+ 	/*
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192c.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192c.c
+@@ -613,6 +613,7 @@ struct rtl8xxxu_fileops rtl8192cu_fops =
+ 	.rx_agg_buf_size = 16000,
+ 	.tx_desc_size = sizeof(struct rtl8xxxu_txdesc32),
+ 	.rx_desc_size = sizeof(struct rtl8xxxu_rxdesc16),
++	.max_sec_cam_num = 32,
+ 	.adda_1t_init = 0x0b1b25a0,
+ 	.adda_1t_path_on = 0x0bdb25a0,
+ 	.adda_2t_path_on_a = 0x04db25a4,
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
+@@ -1769,6 +1769,7 @@ struct rtl8xxxu_fileops rtl8192eu_fops =
+ 	.needs_full_init = 1,
+ 	.supports_ap = 1,
+ 	.max_macid_num = 128,
++	.max_sec_cam_num = 64,
+ 	.adda_1t_init = 0x0fc01616,
+ 	.adda_1t_path_on = 0x0fc01616,
+ 	.adda_2t_path_on_a = 0x0fc01616,
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192f.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192f.c
+@@ -2095,6 +2095,7 @@ struct rtl8xxxu_fileops rtl8192fu_fops =
+ 	.max_aggr_num = 0x1f1f,
+ 	.supports_ap = 1,
+ 	.max_macid_num = 128,
++	.max_sec_cam_num = 64,
+ 	.trxff_boundary = 0x3f3f,
+ 	.pbp_rx = PBP_PAGE_SIZE_256,
+ 	.pbp_tx = PBP_PAGE_SIZE_256,
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8710b.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8710b.c
+@@ -1877,6 +1877,7 @@ struct rtl8xxxu_fileops rtl8710bu_fops =
+ 	.max_aggr_num = 0x0c14,
+ 	.supports_ap = 1,
+ 	.max_macid_num = 16,
++	.max_sec_cam_num = 32,
+ 	.adda_1t_init = 0x03c00016,
+ 	.adda_1t_path_on = 0x03c00016,
+ 	.trxff_boundary = 0x3f7f,
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723a.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723a.c
+@@ -510,6 +510,7 @@ struct rtl8xxxu_fileops rtl8723au_fops =
+ 	.rx_agg_buf_size = 16000,
+ 	.tx_desc_size = sizeof(struct rtl8xxxu_txdesc32),
+ 	.rx_desc_size = sizeof(struct rtl8xxxu_rxdesc16),
++	.max_sec_cam_num = 32,
+ 	.adda_1t_init = 0x0b1b25a0,
+ 	.adda_1t_path_on = 0x0bdb25a0,
+ 	.adda_2t_path_on_a = 0x04db25a4,
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c
+@@ -1744,6 +1744,7 @@ struct rtl8xxxu_fileops rtl8723bu_fops =
+ 	.max_aggr_num = 0x0c14,
+ 	.supports_ap = 1,
+ 	.max_macid_num = 128,
++	.max_sec_cam_num = 64,
+ 	.adda_1t_init = 0x01c00014,
+ 	.adda_1t_path_on = 0x01c00014,
+ 	.adda_2t_path_on_a = 0x01c00014,
diff --git a/package/kernel/mac80211/patches/rtl/006-v6.9-wifi-rtl8xxxu-fix-error-messages.patch b/package/kernel/mac80211/patches/rtl/006-v6.9-wifi-rtl8xxxu-fix-error-messages.patch
new file mode 100644
index 0000000000..961f613161
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/006-v6.9-wifi-rtl8xxxu-fix-error-messages.patch
@@ -0,0 +1,37 @@
+From 17903a283593c1dbf9da041f836004163ca30f7b Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter at linaro.org>
+Date: Wed, 31 Jan 2024 10:10:07 +0300
+Subject: [PATCH] wifi: rtl8xxxu: fix error messages
+
+The first parameter of WARN_ONCE() is a condition so this code will end
+up printing the function name instead of the proper message.
+
+Fixes: 3ff7a05996f9 ("wifi: rtl8xxxu: support setting bssid register for multiple interfaces")
+Signed-off-by: Dan Carpenter <dan.carpenter at linaro.org>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/7b144531-a8da-4725-8911-9b614a525a35 at moroto.mountain
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -3593,7 +3593,7 @@ static int rtl8xxxu_set_mac(struct rtl8x
+ 		reg = REG_MACID1;
+ 		break;
+ 	default:
+-		WARN_ONCE("%s: invalid port_num\n", __func__);
++		WARN_ONCE(1, "%s: invalid port_num\n", __func__);
+ 		return -EINVAL;
+ 	}
+ 
+@@ -3618,7 +3618,7 @@ static int rtl8xxxu_set_bssid(struct rtl
+ 		reg = REG_BSSID1;
+ 		break;
+ 	default:
+-		WARN_ONCE("%s: invalid port_num\n", __func__);
++		WARN_ONCE(1, "%s: invalid port_num\n", __func__);
+ 		return -EINVAL;
+ 	}
+ 
diff --git a/package/kernel/mac80211/patches/rtl/007-v6.9-wifi-rtl8xxxu-Add-TP-Link-TL-WN823N-V2.patch b/package/kernel/mac80211/patches/rtl/007-v6.9-wifi-rtl8xxxu-Add-TP-Link-TL-WN823N-V2.patch
new file mode 100644
index 0000000000..7ccc08c28d
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/007-v6.9-wifi-rtl8xxxu-Add-TP-Link-TL-WN823N-V2.patch
@@ -0,0 +1,36 @@
+From 1209f487d452ff7e822dec30661fd6b5163fb8cf Mon Sep 17 00:00:00 2001
+From: Chun Qiu <cqca at cock.lu>
+Date: Mon, 29 Jan 2024 13:30:30 +0800
+Subject: [PATCH] wifi: rtl8xxxu: Add TP-Link TL-WN823N V2
+
+TP-Link TL-WN823N V2 (2357:0135) is based on rtl8192fu and has been
+tested to work with the rtl8xxxu driver.
+
+Signed-off-by: Chun Qiu <cqca at cock.lu>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20240129053030.16369-1-cqca at cock.lu
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -7733,7 +7733,7 @@ static int rtl8xxxu_probe(struct usb_int
+ 			untested = 0;
+ 		break;
+ 	case 0x2357:
+-		if (id->idProduct == 0x0109)
++		if (id->idProduct == 0x0109 || id->idProduct == 0x0135)
+ 			untested = 0;
+ 		break;
+ 	case 0x0b05:
+@@ -8025,6 +8025,9 @@ static const struct usb_device_id dev_ta
+ 	.driver_info = (unsigned long)&rtl8192fu_fops},
+ {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x318b, 0xff, 0xff, 0xff),
+ 	.driver_info = (unsigned long)&rtl8192fu_fops},
++/* TP-Link TL-WN823N V2 */
++{USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0135, 0xff, 0xff, 0xff),
++	.driver_info = (unsigned long)&rtl8192fu_fops},
+ #ifdef CPTCFG_RTL8XXXU_UNTESTED
+ /* Still supported by rtlwifi */
+ {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8176, 0xff, 0xff, 0xff),
diff --git a/package/kernel/mac80211/patches/rtl/008-v6.9-wifi-rtl8xxxu-update-rate-mask-per-sta.patch b/package/kernel/mac80211/patches/rtl/008-v6.9-wifi-rtl8xxxu-update-rate-mask-per-sta.patch
new file mode 100644
index 0000000000..66cd70c6b1
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/008-v6.9-wifi-rtl8xxxu-update-rate-mask-per-sta.patch
@@ -0,0 +1,411 @@
+From 94dd7ce1885e530a7b10bbe50d5d68ba1bb99e6e Mon Sep 17 00:00:00 2001
+From: Martin Kaistra <martin.kaistra at linutronix.de>
+Date: Mon, 5 Feb 2024 10:30:40 +0100
+Subject: [PATCH] wifi: rtl8xxxu: update rate mask per sta
+
+Until now, rtl8xxxu_watchdog_callback() only fetches RSSI and updates
+the rate mask in station mode. This means, in AP mode only the default
+rate mask is used.
+
+In order to have the rate mask reflect the actual connection quality,
+extend rtl8xxxu_watchdog_callback() to iterate over every sta. Like in
+the rtw88 driver, add a function to collect all currently present stas
+and then iterate over a list of copies to ensure no RCU lock problems
+for register access via USB. Remove the existing RCU lock in
+rtl8xxxu_refresh_rate_mask().
+
+Since the currently used ieee80211_ave_rssi() is only for 'vif', add
+driver-level tracking of RSSI per sta.
+
+Signed-off-by: Martin Kaistra <martin.kaistra at linutronix.de>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20240205093040.1941140-1-martin.kaistra at linutronix.de
+---
+ .../net/wireless/realtek/rtl8xxxu/rtl8xxxu.h  |   8 +-
+ .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 188 ++++++++++++++----
+ 2 files changed, 158 insertions(+), 38 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+@@ -6,6 +6,7 @@
+  */
+ 
+ #include <asm/byteorder.h>
++#include <linux/average.h>
+ 
+ #define RTL8XXXU_DEBUG_REG_WRITE	0x01
+ #define RTL8XXXU_DEBUG_REG_READ		0x02
+@@ -1858,6 +1859,8 @@ struct rtl8xxxu_priv {
+ 	int next_mbox;
+ 	int nr_out_eps;
+ 
++	/* Ensure no added or deleted stas while iterating */
++	struct mutex sta_mutex;
+ 	struct mutex h2c_mutex;
+ 	/* Protect the indirect register accesses of RTL8710BU. */
+ 	struct mutex syson_indirect_access_mutex;
+@@ -1892,7 +1895,6 @@ struct rtl8xxxu_priv {
+ 	u8 pi_enabled:1;
+ 	u8 no_pape:1;
+ 	u8 int_buf[USB_INTR_CONTENT_LENGTH];
+-	u8 rssi_level;
+ 	DECLARE_BITMAP(tx_aggr_started, IEEE80211_NUM_TIDS);
+ 	DECLARE_BITMAP(tid_tx_operational, IEEE80211_NUM_TIDS);
+ 
+@@ -1913,11 +1915,15 @@ struct rtl8xxxu_priv {
+ 	DECLARE_BITMAP(cam_map, RTL8XXXU_MAX_SEC_CAM_NUM);
+ };
+ 
++DECLARE_EWMA(rssi, 10, 16);
++
+ struct rtl8xxxu_sta_info {
+ 	struct ieee80211_sta *sta;
+ 	struct ieee80211_vif *vif;
+ 
+ 	u8 macid;
++	struct ewma_rssi avg_rssi;
++	u8 rssi_level;
+ };
+ 
+ struct rtl8xxxu_vif {
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -4991,10 +4991,11 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 	struct device *dev = &priv->udev->dev;
++	struct rtl8xxxu_sta_info *sta_info;
+ 	struct ieee80211_sta *sta;
+ 	struct rtl8xxxu_ra_report *rarpt;
++	u8 val8, macid;
+ 	u32 val32;
+-	u8 val8;
+ 
+ 	rarpt = &priv->ra_report;
+ 
+@@ -5017,6 +5018,7 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 				rcu_read_unlock();
+ 				goto error;
+ 			}
++			macid = rtl8xxxu_get_macid(priv, sta);
+ 
+ 			if (sta->deflink.ht_cap.ht_supported)
+ 				dev_info(dev, "%s: HT supported\n", __func__);
+@@ -5037,14 +5039,15 @@ rtl8xxxu_bss_info_changed(struct ieee802
+ 				bw = RATE_INFO_BW_40;
+ 			else
+ 				bw = RATE_INFO_BW_20;
++
++			sta_info = (struct rtl8xxxu_sta_info *)sta->drv_priv;
++			sta_info->rssi_level = RTL8XXXU_RATR_STA_INIT;
+ 			rcu_read_unlock();
+ 
+ 			rtl8xxxu_update_ra_report(rarpt, highest_rate, sgi, bw);
+ 
+-			priv->rssi_level = RTL8XXXU_RATR_STA_INIT;
+-
+ 			priv->fops->update_rate_mask(priv, ramask, 0, sgi,
+-						     bw == RATE_INFO_BW_40, 0);
++						     bw == RATE_INFO_BW_40, macid);
+ 
+ 			rtl8xxxu_write8(priv, REG_BCN_MAX_ERR, 0xff);
+ 
+@@ -6317,6 +6320,76 @@ static void rtl8188e_c2hcmd_callback(str
+ 	}
+ }
+ 
++#define rtl8xxxu_iterate_vifs_atomic(priv, iterator, data)			\
++	ieee80211_iterate_active_interfaces_atomic((priv)->hw,			\
++			IEEE80211_IFACE_ITER_NORMAL, iterator, data)
++
++struct rtl8xxxu_rx_update_rssi_data {
++	struct rtl8xxxu_priv *priv;
++	struct ieee80211_hdr *hdr;
++	struct ieee80211_rx_status *rx_status;
++	u8 *bssid;
++};
++
++static void rtl8xxxu_rx_update_rssi_iter(void *data, u8 *mac,
++					 struct ieee80211_vif *vif)
++{
++	struct rtl8xxxu_rx_update_rssi_data *iter_data = data;
++	struct ieee80211_sta *sta;
++	struct ieee80211_hdr *hdr = iter_data->hdr;
++	struct rtl8xxxu_priv *priv = iter_data->priv;
++	struct rtl8xxxu_sta_info *sta_info;
++	struct ieee80211_rx_status *rx_status = iter_data->rx_status;
++	u8 *bssid = iter_data->bssid;
++
++	if (!ether_addr_equal(vif->bss_conf.bssid, bssid))
++		return;
++
++	if (!(ether_addr_equal(vif->addr, hdr->addr1) ||
++	      ieee80211_is_beacon(hdr->frame_control)))
++		return;
++
++	sta = ieee80211_find_sta_by_ifaddr(priv->hw, hdr->addr2,
++					   vif->addr);
++	if (!sta)
++		return;
++
++	sta_info = (struct rtl8xxxu_sta_info *)sta->drv_priv;
++	ewma_rssi_add(&sta_info->avg_rssi, -rx_status->signal);
++}
++
++static inline u8 *get_hdr_bssid(struct ieee80211_hdr *hdr)
++{
++	__le16 fc = hdr->frame_control;
++	u8 *bssid;
++
++	if (ieee80211_has_tods(fc))
++		bssid = hdr->addr1;
++	else if (ieee80211_has_fromds(fc))
++		bssid = hdr->addr2;
++	else
++		bssid = hdr->addr3;
++
++	return bssid;
++}
++
++static void rtl8xxxu_rx_update_rssi(struct rtl8xxxu_priv *priv,
++				    struct ieee80211_rx_status *rx_status,
++				    struct ieee80211_hdr *hdr)
++{
++	struct rtl8xxxu_rx_update_rssi_data data = {};
++
++	if (ieee80211_is_ctl(hdr->frame_control))
++		return;
++
++	data.priv = priv;
++	data.hdr = hdr;
++	data.rx_status = rx_status;
++	data.bssid = get_hdr_bssid(hdr);
++
++	rtl8xxxu_iterate_vifs_atomic(priv, rtl8xxxu_rx_update_rssi_iter, &data);
++}
++
+ int rtl8xxxu_parse_rxdesc16(struct rtl8xxxu_priv *priv, struct sk_buff *skb)
+ {
+ 	struct ieee80211_hw *hw = priv->hw;
+@@ -6376,18 +6449,26 @@ int rtl8xxxu_parse_rxdesc16(struct rtl8x
+ 			skb_queue_tail(&priv->c2hcmd_queue, skb);
+ 			schedule_work(&priv->c2hcmd_work);
+ 		} else {
++			struct ieee80211_hdr *hdr;
++
+ 			phy_stats = (struct rtl8723au_phy_stats *)skb->data;
+ 
+ 			skb_pull(skb, drvinfo_sz + desc_shift);
+ 
+ 			skb_trim(skb, pkt_len);
+ 
+-			if (rx_desc->phy_stats)
++			hdr = (struct ieee80211_hdr *)skb->data;
++			if (rx_desc->phy_stats) {
+ 				priv->fops->parse_phystats(
+ 					priv, rx_status, phy_stats,
+ 					rx_desc->rxmcs,
+-					(struct ieee80211_hdr *)skb->data,
++					hdr,
+ 					rx_desc->crc32 || rx_desc->icverr);
++				if (!rx_desc->crc32 && !rx_desc->icverr)
++					rtl8xxxu_rx_update_rssi(priv,
++								rx_status,
++								hdr);
++			}
+ 
+ 			rx_status->mactime = rx_desc->tsfl;
+ 			rx_status->flag |= RX_FLAG_MACTIME_START;
+@@ -6484,10 +6565,15 @@ int rtl8xxxu_parse_rxdesc24(struct rtl8x
+ 		} else {
+ 			struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
+ 
+-			if (rx_desc->phy_stats)
++			if (rx_desc->phy_stats) {
+ 				priv->fops->parse_phystats(priv, rx_status, phy_stats,
+ 							   rx_desc->rxmcs, hdr,
+ 							   rx_desc->crc32 || rx_desc->icverr);
++				if (!rx_desc->crc32 && !rx_desc->icverr)
++					rtl8xxxu_rx_update_rssi(priv,
++								rx_status,
++								hdr);
++			}
+ 
+ 			rx_status->mactime = rx_desc->tsfl;
+ 			rx_status->flag |= RX_FLAG_MACTIME_START;
+@@ -7111,6 +7197,7 @@ static void rtl8xxxu_refresh_rate_mask(s
+ 				       int signal, struct ieee80211_sta *sta,
+ 				       bool force)
+ {
++	struct rtl8xxxu_sta_info *sta_info = (struct rtl8xxxu_sta_info *)sta->drv_priv;
+ 	struct ieee80211_hw *hw = priv->hw;
+ 	u16 wireless_mode;
+ 	u8 rssi_level, ratr_idx;
+@@ -7119,7 +7206,7 @@ static void rtl8xxxu_refresh_rate_mask(s
+ 	u8 go_up_gap = 5;
+ 	u8 macid = rtl8xxxu_get_macid(priv, sta);
+ 
+-	rssi_level = priv->rssi_level;
++	rssi_level = sta_info->rssi_level;
+ 	snr = rtl8xxxu_signal_to_snr(signal);
+ 	snr_thresh_high = RTL8XXXU_SNR_THRESH_HIGH;
+ 	snr_thresh_low = RTL8XXXU_SNR_THRESH_LOW;
+@@ -7144,18 +7231,16 @@ static void rtl8xxxu_refresh_rate_mask(s
+ 	else
+ 		rssi_level = RTL8XXXU_RATR_STA_LOW;
+ 
+-	if (rssi_level != priv->rssi_level || force) {
++	if (rssi_level != sta_info->rssi_level || force) {
+ 		int sgi = 0;
+ 		u32 rate_bitmap = 0;
+ 
+-		rcu_read_lock();
+ 		rate_bitmap = (sta->deflink.supp_rates[0] & 0xfff) |
+ 				(sta->deflink.ht_cap.mcs.rx_mask[0] << 12) |
+ 				(sta->deflink.ht_cap.mcs.rx_mask[1] << 20);
+ 		if (sta->deflink.ht_cap.cap &
+ 		    (IEEE80211_HT_CAP_SGI_40 | IEEE80211_HT_CAP_SGI_20))
+ 			sgi = 1;
+-		rcu_read_unlock();
+ 
+ 		wireless_mode = rtl8xxxu_wireless_mode(hw, sta);
+ 		switch (wireless_mode) {
+@@ -7236,7 +7321,7 @@ static void rtl8xxxu_refresh_rate_mask(s
+ 			break;
+ 		}
+ 
+-		priv->rssi_level = rssi_level;
++		sta_info->rssi_level = rssi_level;
+ 		priv->fops->update_rate_mask(priv, rate_bitmap, ratr_idx, sgi, txbw_40mhz, macid);
+ 	}
+ }
+@@ -7329,40 +7414,60 @@ static void rtl8xxxu_track_cfo(struct rt
+ 	rtl8xxxu_set_atc_status(priv, abs(cfo_average) >= CFO_TH_ATC);
+ }
+ 
+-static void rtl8xxxu_watchdog_callback(struct work_struct *work)
++static void rtl8xxxu_ra_iter(void *data, struct ieee80211_sta *sta)
+ {
+-	struct ieee80211_vif *vif;
+-	struct rtl8xxxu_priv *priv;
+-	int i;
++	struct rtl8xxxu_sta_info *sta_info = (struct rtl8xxxu_sta_info *)sta->drv_priv;
++	struct rtl8xxxu_priv *priv = data;
++	int signal = -ewma_rssi_read(&sta_info->avg_rssi);
+ 
+-	priv = container_of(work, struct rtl8xxxu_priv, ra_watchdog.work);
+-	for (i = 0; i < ARRAY_SIZE(priv->vifs); i++) {
+-		vif = priv->vifs[i];
++	priv->fops->report_rssi(priv, rtl8xxxu_get_macid(priv, sta),
++				rtl8xxxu_signal_to_snr(signal));
++	rtl8xxxu_refresh_rate_mask(priv, signal, sta, false);
++}
++
++struct rtl8xxxu_stas_entry {
++	struct list_head list;
++	struct ieee80211_sta *sta;
++};
+ 
+-		if (!vif || vif->type != NL80211_IFTYPE_STATION)
+-			continue;
++struct rtl8xxxu_iter_stas_data {
++	struct rtl8xxxu_priv *priv;
++	struct list_head list;
++};
+ 
+-		int signal;
+-		struct ieee80211_sta *sta;
++static void rtl8xxxu_collect_sta_iter(void *data, struct ieee80211_sta *sta)
++{
++	struct rtl8xxxu_iter_stas_data *iter_stas = data;
++	struct rtl8xxxu_stas_entry *stas_entry;
+ 
+-		rcu_read_lock();
+-		sta = ieee80211_find_sta(vif, vif->bss_conf.bssid);
+-		if (!sta) {
+-			struct device *dev = &priv->udev->dev;
++	stas_entry = kmalloc(sizeof(*stas_entry), GFP_ATOMIC);
++	if (!stas_entry)
++		return;
+ 
+-			dev_dbg(dev, "%s: no sta found\n", __func__);
+-			rcu_read_unlock();
+-			continue;
+-		}
+-		rcu_read_unlock();
++	stas_entry->sta = sta;
++	list_add_tail(&stas_entry->list, &iter_stas->list);
++}
+ 
+-		signal = ieee80211_ave_rssi(vif);
++static void rtl8xxxu_watchdog_callback(struct work_struct *work)
++{
+ 
+-		priv->fops->report_rssi(priv, rtl8xxxu_get_macid(priv, sta),
+-					rtl8xxxu_signal_to_snr(signal));
++	struct rtl8xxxu_iter_stas_data iter_data;
++	struct rtl8xxxu_stas_entry *sta_entry, *tmp;
++	struct rtl8xxxu_priv *priv;
+ 
+-		rtl8xxxu_refresh_rate_mask(priv, signal, sta, false);
++	priv = container_of(work, struct rtl8xxxu_priv, ra_watchdog.work);
++	iter_data.priv = priv;
++	INIT_LIST_HEAD(&iter_data.list);
++
++	mutex_lock(&priv->sta_mutex);
++	ieee80211_iterate_stations_atomic(priv->hw, rtl8xxxu_collect_sta_iter,
++					  &iter_data);
++	list_for_each_entry_safe(sta_entry, tmp, &iter_data.list, list) {
++		list_del_init(&sta_entry->list);
++		rtl8xxxu_ra_iter(priv, sta_entry->sta);
++		kfree(sta_entry);
+ 	}
++	mutex_unlock(&priv->sta_mutex);
+ 
+ 	if (priv->fops->set_crystal_cap)
+ 		rtl8xxxu_track_cfo(priv);
+@@ -7504,10 +7609,15 @@ static int rtl8xxxu_sta_add(struct ieee8
+ 	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 
++	mutex_lock(&priv->sta_mutex);
++	ewma_rssi_init(&sta_info->avg_rssi);
+ 	if (vif->type == NL80211_IFTYPE_AP) {
++		sta_info->rssi_level = RTL8XXXU_RATR_STA_INIT;
+ 		sta_info->macid = rtl8xxxu_acquire_macid(priv);
+-		if (sta_info->macid >= RTL8XXXU_MAX_MAC_ID_NUM)
++		if (sta_info->macid >= RTL8XXXU_MAX_MAC_ID_NUM) {
++			mutex_unlock(&priv->sta_mutex);
+ 			return -ENOSPC;
++		}
+ 
+ 		rtl8xxxu_refresh_rate_mask(priv, 0, sta, true);
+ 		priv->fops->report_connect(priv, sta_info->macid, H2C_MACID_ROLE_STA, true);
+@@ -7523,6 +7633,7 @@ static int rtl8xxxu_sta_add(struct ieee8
+ 			break;
+ 		}
+ 	}
++	mutex_unlock(&priv->sta_mutex);
+ 
+ 	return 0;
+ }
+@@ -7534,8 +7645,10 @@ static int rtl8xxxu_sta_remove(struct ie
+ 	struct rtl8xxxu_sta_info *sta_info = (struct rtl8xxxu_sta_info *)sta->drv_priv;
+ 	struct rtl8xxxu_priv *priv = hw->priv;
+ 
++	mutex_lock(&priv->sta_mutex);
+ 	if (vif->type == NL80211_IFTYPE_AP)
+ 		rtl8xxxu_release_macid(priv, sta_info->macid);
++	mutex_unlock(&priv->sta_mutex);
+ 
+ 	return 0;
+ }
+@@ -7766,6 +7879,7 @@ static int rtl8xxxu_probe(struct usb_int
+ 	mutex_init(&priv->usb_buf_mutex);
+ 	mutex_init(&priv->syson_indirect_access_mutex);
+ 	mutex_init(&priv->h2c_mutex);
++	mutex_init(&priv->sta_mutex);
+ 	INIT_LIST_HEAD(&priv->tx_urb_free_list);
+ 	spin_lock_init(&priv->tx_urb_lock);
+ 	INIT_LIST_HEAD(&priv->rx_urb_pending_list);
diff --git a/package/kernel/mac80211/patches/rtl/009-v6.9-wifi-rtl8xxxu-check-vif-before-using-in-rtl8xxxu_tx.patch b/package/kernel/mac80211/patches/rtl/009-v6.9-wifi-rtl8xxxu-check-vif-before-using-in-rtl8xxxu_tx.patch
new file mode 100644
index 0000000000..600f7c37df
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/009-v6.9-wifi-rtl8xxxu-check-vif-before-using-in-rtl8xxxu_tx.patch
@@ -0,0 +1,40 @@
+From 513c559ca9f05394da79fbf20a8f89eec5f53dce Mon Sep 17 00:00:00 2001
+From: Ping-Ke Shih <pkshih at realtek.com>
+Date: Fri, 16 Feb 2024 11:39:23 +0800
+Subject: [PATCH] wifi: rtl8xxxu: check vif before using in rtl8xxxu_tx()
+
+The 'vif' is from tx_info of SKB, and other codes check 'vif' before using,
+which raises smatch warnings:
+
+drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c:5656 rtl8xxxu_tx()
+   warn: variable dereferenced before check 'vif' (see line 5553)
+
+Compile tested only.
+
+Signed-off-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/20240216033923.34683-1-pkshih at realtek.com
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -5550,7 +5550,7 @@ static void rtl8xxxu_tx(struct ieee80211
+ 	struct rtl8xxxu_tx_urb *tx_urb;
+ 	struct ieee80211_sta *sta = NULL;
+ 	struct ieee80211_vif *vif = tx_info->control.vif;
+-	struct rtl8xxxu_vif *rtlvif = (struct rtl8xxxu_vif *)vif->drv_priv;
++	struct rtl8xxxu_vif *rtlvif = vif ? (struct rtl8xxxu_vif *)vif->drv_priv : NULL;
+ 	struct device *dev = &priv->udev->dev;
+ 	u32 queue, rts_rate;
+ 	u16 pktlen = skb->len;
+@@ -5621,7 +5621,7 @@ static void rtl8xxxu_tx(struct ieee80211
+ 		default:
+ 			break;
+ 		}
+-		if (bmc && rtlvif->hw_key_idx != 0xff) {
++		if (bmc && rtlvif && rtlvif->hw_key_idx != 0xff) {
+ 			tx_desc->txdw1 |= cpu_to_le32(TXDESC_EN_DESC_ID);
+ 			macid = rtlvif->hw_key_idx;
+ 		}
diff --git a/package/kernel/mac80211/patches/rtl/010-v6.9-wifi-rtl8xxxu-fix-mixed-declarations-and-code-warnin.patch b/package/kernel/mac80211/patches/rtl/010-v6.9-wifi-rtl8xxxu-fix-mixed-declarations-and-code-warnin.patch
new file mode 100644
index 0000000000..e1de784b09
--- /dev/null
+++ b/package/kernel/mac80211/patches/rtl/010-v6.9-wifi-rtl8xxxu-fix-mixed-declarations-and-code-warnin.patch
@@ -0,0 +1,34 @@
+From a7e178259c5bc900da762b33d3a20b7ee1206f07 Mon Sep 17 00:00:00 2001
+From: Shiji Yang <yangshiji66 at outlook.com>
+Date: Fri, 23 Feb 2024 21:34:32 +0800
+Subject: [PATCH] wifi: rtl8xxxu: fix mixed declarations in rtl8xxxu_set_aifs()
+
+Moving struct ieee80211_sta *sta variable definition to the front
+of the code to fix the ISO C90 forbids mixed declarations and code
+warning.
+
+Fixes: 43532c050f8e ("wifi: rtl8xxxu: support multiple interfaces in set_aifs()")
+Signed-off-by: Shiji Yang <yangshiji66 at outlook.com>
+Reviewed-by: Ping-Ke Shih <pkshih at realtek.com>
+Signed-off-by: Kalle Valo <kvalo at kernel.org>
+Link: https://msgid.link/TYAP286MB03157A408E0D69F2F6FBD88ABC552 at TYAP286MB0315.JPNP286.PROD.OUTLOOK.COM
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+@@ -4919,11 +4919,11 @@ static void rtl8xxxu_set_aifs(struct rtl
+ 	int i;
+ 
+ 	for (i = 0; i < ARRAY_SIZE(priv->vifs); i++) {
++		struct ieee80211_sta *sta;
++
+ 		if (!priv->vifs[i])
+ 			continue;
+ 
+-		struct ieee80211_sta *sta;
+-
+ 		rcu_read_lock();
+ 		sta = ieee80211_find_sta(priv->vifs[i], priv->vifs[i]->bss_conf.bssid);
+ 		if (sta)



From lede-commits at lists.infradead.org  Sat Mar  9 23:43:12 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 10 Mar 2024 03:43:12 -0400
Subject: [openwrt/openwrt]  ramips: mt7621: use variable for relocate-kernel
 argument
In-Reply-To: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
References: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
Message-ID: <mailman.15018.1710056596.1280.lede-commits@lists.infradead.org>

mans0n pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b94ea518193778312f9f8f88f120b5104cf2327e

commit b94ea518193778312f9f8f88f120b5104cf2327e
Author: Sungbo Eo <mans0n at gorani.run>
AuthorDate: Sun Feb 4 22:10:29 2024 +0900

    ramips: mt7621: use variable for relocate-kernel argument
    
    The "0x80001000" address logically comes from "loadaddr-y" variable for
    mt7621 subtarget. Let's replace the hardcoded value with the predefined
    variable. This change is purely cosmetic.
    
    Signed-off-by: Sungbo Eo <mans0n at gorani.run>
---
 target/linux/ramips/image/mt7621.mk | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 23e328a090..b644d52708 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -497,7 +497,7 @@ define Device/belkin_rt1800
   DEVICE_MODEL := RT1800
   DEVICE_PACKAGES := kmod-mt7915-firmware kmod-usb3
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | \
 	append-squashfs4-fakeroot
   IMAGES += factory.bin
@@ -673,7 +673,7 @@ define Device/dlink_covr-x1860-a1
   DEVICE_PACKAGES := kmod-mt7915-firmware
   UBINIZE_OPTS := -E 5
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | \
 	append-squashfs4-fakeroot
   IMAGES += factory.bin recovery.bin
@@ -712,7 +712,7 @@ define Device/dlink_dap-x1860-a1
   DEVICE_VARIANT := A1
   KERNEL_SIZE := 8192k
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
   IMAGES += factory.bin
   IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \
@@ -1166,7 +1166,7 @@ define Device/h3c_tx180x
   KERNEL_SIZE := 8192k
   IMAGE_SIZE := 120832k
   KERNEL_LOADADDR := 0x82000000
-  KERNEL_INITRAMFS := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL_INITRAMFS := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
   KERNEL := $$(KERNEL_INITRAMFS) | h3c-blank-header
   DEVICE_VENDOR := H3C
@@ -1195,7 +1195,7 @@ define Device/haier-sim_wr1800k
   $(Device/nand)
   IMAGE_SIZE := 125440k
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
 ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
   ARTIFACTS := initramfs-factory.bin
@@ -1321,7 +1321,7 @@ define Device/iodata_wn-deax1800gr
   IMAGE_SIZE := 47104k
   UBINIZE_OPTS := -E 5
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
   IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
   ARTIFACTS := initramfs-factory.bin
@@ -1453,7 +1453,7 @@ define Device/iptime_ax2004m
   $(Device/nand)
   IMAGE_SIZE := 121344k
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
   IMAGES += recovery.bin
   IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \
@@ -1798,7 +1798,7 @@ define Device/netgear_eax12
   NETGEAR_ENC_MODEL_LIST := EAX12;EAX11v2;EAX15v2
   IMAGE_SIZE := 57344k
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | \
 	append-squashfs4-fakeroot
   IMAGES += factory.img
@@ -1985,7 +1985,7 @@ define Device/netgear_wax202
   NETGEAR_ENC_REGION := US
   IMAGE_SIZE := 38912k
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | \
 	append-squashfs4-fakeroot
   IMAGES += factory.img
@@ -2395,7 +2395,8 @@ define Device/tplink_er605-v2
   DEVICE_PACKAGES := -wpad-basic-mbedtls kmod-usb3 -uboot-envtools
   KERNEL_IN_UBI := 1
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
+	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
   IMAGES += sysupgrade.tar
   IMAGE_SIZE := 127744k
 endef
@@ -2409,7 +2410,7 @@ define Device/tplink_ex220-v1
   DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools
   TPLINK_BOARD_ID := EX220-V1
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
   IMAGE_SIZE := 15744k
 endef
@@ -2642,7 +2643,7 @@ define Device/wavlink_ws-wn572hp3-4g
   DEVICE_VARIANT := 4G
   IMAGE_SIZE := 15040k
   KERNEL_LOADADDR := 0x82000000
-  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
 	append-rootfs | pad-rootfs | check-size | append-metadata



From lede-commits at lists.infradead.org  Sat Mar  9 23:43:13 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 10 Mar 2024 03:43:13 -0400
Subject: [openwrt/openwrt]  ramips: add factory image for ipTIME AX2004M
In-Reply-To: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
References: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
Message-ID: <mailman.15019.1710056596.1280.lede-commits@lists.infradead.org>

mans0n pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/85a8f58483b223951515219ca9b21c31c36f87c8

commit 85a8f58483b223951515219ca9b21c31c36f87c8
Author: Sungbo Eo <mans0n at gorani.run>
AuthorDate: Mon Feb 5 03:57:27 2024 +0900

    ramips: add factory image for ipTIME AX2004M
    
    Unlike the recovery image, this initramfs-factory image can be flashed
    using the stock firmware web interface (from any active boot partition),
    as well as the bootloader recovery web page. Drop the recovery image in
    favor of the factory image.
    
    Installation via stock/recovery web interface:
    1.  Flash **initramfs-factory** image through the web page.
    2.  Boot into OpenWrt and perform sysupgrade with sysupgrade image.
    
    Signed-off-by: Sungbo Eo <mans0n at gorani.run>
---
 target/linux/ramips/image/mt7621.mk                           | 6 +++---
 target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh | 5 +++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index b644d52708..2ab687fd02 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -1455,8 +1455,8 @@ define Device/iptime_ax2004m
   KERNEL_LOADADDR := 0x82000000
   KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
 	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
-  IMAGES += recovery.bin
-  IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \
+  ARTIFACTS := initramfs-factory.bin
+  ARTIFACT/initramfs-factory.bin := append-image-stage initramfs-kernel.bin | \
 	check-size | iptime-crc32 ax2004m
   DEVICE_VENDOR := ipTIME
   DEVICE_MODEL := AX2004M
@@ -1464,7 +1464,7 @@ define Device/iptime_ax2004m
   DEVICE_COMPAT_VERSION := 2.0
   DEVICE_COMPAT_MESSAGE := NMBM has been newly enabled, and its flash block \
 	mapping might be incompatible with existing installation. \
-	New installation via recovery mode is recommended.
+	New installation with factory image via recovery mode is recommended.
 endef
 TARGET_DEVICES += iptime_ax2004m
 
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
index 40a2fb61db..6151714145 100755
--- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
@@ -33,6 +33,11 @@ platform_do_upgrade() {
 			fw_setenv --lock / bootImage 0 || exit 1
 		fi
 		;;
+	iptime,ax2004m)
+		if [ "$(fw_printenv -n boot_from 2>/dev/null)" != "firmware1" ]; then
+			fw_setenv boot_from firmware1 || exit 1
+		fi
+		;;
 	mikrotik,ltap-2hnd|\
 	mikrotik,routerboard-750gr3|\
 	mikrotik,routerboard-760igs|\



From lede-commits at lists.infradead.org  Sat Mar  9 23:43:10 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 10 Mar 2024 03:43:10 -0400
Subject: [openwrt/openwrt]  ramips: add NMBM support for ipTIME AX2004M
In-Reply-To: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
References: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
Message-ID: <mailman.15020.1710056596.1280.lede-commits@lists.infradead.org>

mans0n pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7e04a611bc798c27a0dc584959d2c2bdf64da05f

commit 7e04a611bc798c27a0dc584959d2c2bdf64da05f
Author: Sungbo Eo <mans0n at gorani.run>
AuthorDate: Mon Dec 18 01:06:21 2023 +0900

    ramips: add NMBM support for ipTIME AX2004M
    
    AX2004M uses NMBM on its NAND flash, but it was not enabled in DTS as the
    device support [1] had been added before NMBM feature in mtk_bmt driver [2].
    Let's enable it now.
    
    With this change, there is a low possibility of boot failure after
    sysupgrade from older versions. As AX2004M already has gone through
    two stable releases in the meantime, it would be safe to warn users
    by bumping DEVICE_COMPAT_VERSION.
    
    [1] 37753f34ac68 ("ramips: add support for ipTIME AX2004M")
    [2] 06382d1af7b2 ("kernel: add support for mediatek NMBM flash mapping support")
    
    Signed-off-by: Sungbo Eo <mans0n at gorani.run>
---
 target/linux/ramips/dts/mt7621_iptime_ax2004m.dts                  | 7 +++++++
 target/linux/ramips/image/mt7621.mk                                | 4 ++++
 .../linux/ramips/mt7621/base-files/etc/board.d/05_compat-version   | 3 +++
 3 files changed, 14 insertions(+)

diff --git a/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts b/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
index 51be0d4939..7237bf822f 100644
--- a/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
+++ b/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
@@ -57,6 +57,11 @@
 &nand {
 	status = "okay";
 
+	mediatek,nmbm;
+	mediatek,bmt-max-ratio = <1>;
+	mediatek,bmt-max-reserved-blocks = <64>;
+	mediatek,bmt-remap-range = <0x000000 0x580000>;
+
 	partitions {
 		compatible = "fixed-partitions";
 		#address-cells = <1>;
@@ -118,6 +123,8 @@
 				reg = <0x400000 0x7280000>;
 			};
 		};
+
+		/* last 8 MiB is reserved for NMBM bad block table */
 	};
 };
 
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index ab1b829ba0..7b7266b73e 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -1461,6 +1461,10 @@ define Device/iptime_ax2004m
   DEVICE_VENDOR := ipTIME
   DEVICE_MODEL := AX2004M
   DEVICE_PACKAGES := kmod-mt7915-firmware kmod-usb3 -uboot-envtools
+  DEVICE_COMPAT_VERSION := 2.0
+  DEVICE_COMPAT_MESSAGE := NMBM has been newly enabled, and its flash block \
+	mapping might be incompatible with existing installation. \
+	New installation via recovery mode is recommended.
 endef
 TARGET_DEVICES += iptime_ax2004m
 
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/05_compat-version b/target/linux/ramips/mt7621/base-files/etc/board.d/05_compat-version
index 45bef9385b..c510dfd81a 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/05_compat-version
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/05_compat-version
@@ -8,6 +8,9 @@
 board_config_update
 
 case "$(board_name)" in
+	iptime,ax2004m)
+		ucidef_set_compat_version "2.0"
+		;;
 	*)
 		ucidef_set_compat_version "1.1"
 		;;



From lede-commits at lists.infradead.org  Sat Mar  9 23:43:14 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 10 Mar 2024 03:43:14 -0400
Subject: [openwrt/openwrt]  ramips: improve support for STORYLiNK SAP-G3200U3
In-Reply-To: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
References: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
Message-ID: <mailman.15021.1710056605.1280.lede-commits@lists.infradead.org>

mans0n pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/261876a067fbf753d50459e3a88354ff873af422

commit 261876a067fbf753d50459e3a88354ff873af422
Author: Sungbo Eo <mans0n at gorani.run>
AuthorDate: Sun Mar 10 13:55:24 2024 +0900

    ramips: improve support for STORYLiNK SAP-G3200U3
    
    * Increase flash SPI frequency to 50MHz
    
      The maximum SPI frequency of MX25L6406EM2I is 86 MHz,
      but in this patch 50 MHz was chosen as a safe value.
    
    * Update Ethernet MAC addresses
    
      Till now LAN/WAN MAC addresses were flipped
      compared to stock firmware.
    
    * Fix Wi-Fi LEDs by adding mt76 led nodes
    
    * Fix LAN port order
    
      LAN ports are in reverse order of switch ports.
    
    * Fix the well-known "LZMA ERROR 1" error by using lzma-loader
    
    * Set uImage name, which enables installation via stock web interface:
    
      1.  Upload **initramfs** image file to the web page.
      2.  Boot into OpenWrt and perform sysupgrade with sysupgrade image.
    
    Signed-off-by: Sungbo Eo <mans0n at gorani.run>
---
 .../ramips/dts/mt7621_storylink_sap-g3200u3.dts    | 37 +++++++++++++++-------
 target/linux/ramips/image/mt7621.mk                |  2 ++
 2 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/target/linux/ramips/dts/mt7621_storylink_sap-g3200u3.dts b/target/linux/ramips/dts/mt7621_storylink_sap-g3200u3.dts
index 7b89ee6727..3448db5f03 100644
--- a/target/linux/ramips/dts/mt7621_storylink_sap-g3200u3.dts
+++ b/target/linux/ramips/dts/mt7621_storylink_sap-g3200u3.dts
@@ -43,7 +43,8 @@
 	flash at 0 {
 		compatible = "jedec,spi-nor";
 		reg = <0>;
-		spi-max-frequency = <10000000>;
+		spi-max-frequency = <50000000>;
+		m25p,fast-read;
 
 		partitions {
 			compatible = "fixed-partitions";
@@ -86,10 +87,12 @@
 						reg = <0x8000 0x200>;
 					};
 
+					macaddr_factory_e000: macaddr at e000 {
+						reg = <0xe000 0x6>;
+					};
+
 					macaddr_factory_e006: macaddr at e006 {
-						compatible = "mac-base";
 						reg = <0xe006 0x6>;
-						#nvmem-cell-cells = <1>;
 					};
 				};
 			};
@@ -108,25 +111,37 @@
 };
 
 &pcie0 {
-	mt76 at 0,0 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
 		reg = <0x0000 0 0 0 0>;
 		nvmem-cells = <&eeprom_factory_8000>;
 		nvmem-cell-names = "eeprom";
 		ieee80211-freq-limit = <5000000 6000000>;
+
+		led {
+			led-sources = <2>;
+			led-active-low;
+		};
 	};
 };
 
 &pcie1 {
-	mt76 at 0,0 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
 		reg = <0x0000 0 0 0 0>;
 		nvmem-cells = <&eeprom_factory_0>;
 		nvmem-cell-names = "eeprom";
 		ieee80211-freq-limit = <2400000 2500000>;
+
+		led {
+			led-sources = <2>;
+			led-active-low;
+		};
 	};
 };
 
 &gmac0 {
-	nvmem-cells = <&macaddr_factory_e006 0>;
+	nvmem-cells = <&macaddr_factory_e000>;
 	nvmem-cell-names = "mac-address";
 };
 
@@ -135,7 +150,7 @@
 	label = "wan";
 	phy-handle = <&ethphy4>;
 
-	nvmem-cells = <&macaddr_factory_e006 1>;
+	nvmem-cells = <&macaddr_factory_e006>;
 	nvmem-cell-names = "mac-address";
 };
 
@@ -149,22 +164,22 @@
 	ports {
 		port at 0 {
 			status = "okay";
-			label = "lan1";
+			label = "lan4";
 		};
 
 		port at 1 {
 			status = "okay";
-			label = "lan2";
+			label = "lan3";
 		};
 
 		port at 2 {
 			status = "okay";
-			label = "lan3";
+			label = "lan2";
 		};
 
 		port at 3 {
 			status = "okay";
-			label = "lan4";
+			label = "lan1";
 		};
 	};
 };
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 2ab687fd02..a46ea39d59 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -2190,7 +2190,9 @@ TARGET_DEVICES += snr_snr-cpe-me2-sfp
 
 define Device/storylink_sap-g3200u3
   $(Device/dsa-migration)
+  $(Device/uimage-lzma-loader)
   IMAGE_SIZE := 7872k
+  UIMAGE_NAME := SAP-G3200
   DEVICE_VENDOR := STORYLiNK
   DEVICE_MODEL := SAP-G3200U3
   DEVICE_PACKAGES := kmod-mt76x2 kmod-usb3 kmod-usb-ledtrig-usbport \



From lede-commits at lists.infradead.org  Sat Mar  9 23:43:11 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 10 Mar 2024 03:43:11 -0400
Subject: [openwrt/openwrt]  ramips: rename mtd partition of ipTIME NAND
 devices
In-Reply-To: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
References: <171005659065.1597176.11036824211676591371@git-01.infra.openwrt.org>
Message-ID: <mailman.15022.1710056605.1280.lede-commits@lists.infradead.org>

mans0n pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ec45f2f246363a4c2a84e51d0014848bf8c52e9f

commit ec45f2f246363a4c2a84e51d0014848bf8c52e9f
Author: Sungbo Eo <mans0n at gorani.run>
AuthorDate: Sun Feb 4 21:46:14 2024 +0900

    ramips: rename mtd partition of ipTIME NAND devices
    
    Contrary to common ipTIME NOR devices, the "Config" partition of T5004
    and AX2004M contain normal U-Boot environment variables. Renaming the
    partition into "u-boot-env" serves for better description, and it also
    conforms to common naming practice in OpenWrt.
    
    This patch might also be extended to A3004T, but its u-boot-env
    partition layout has not been confirmed yet.
    
    Signed-off-by: Sungbo Eo <mans0n at gorani.run>
---
 package/boot/uboot-envtools/files/ramips                     | 2 ++
 target/linux/ramips/dts/mt7621_iptime_ax2004m.dts            | 3 +--
 target/linux/ramips/dts/mt7621_iptime_t5004.dts              | 3 +--
 target/linux/ramips/image/mt7621.mk                          | 4 ++--
 target/linux/ramips/mt7621/base-files/etc/board.d/02_network | 2 +-
 5 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips
index 30bf635b6d..317121f2be 100644
--- a/package/boot/uboot-envtools/files/ramips
+++ b/package/boot/uboot-envtools/files/ramips
@@ -73,6 +73,7 @@ belkin,rt1800|\
 h3c,tx1800-plus|\
 h3c,tx1801-plus|\
 h3c,tx1806|\
+iptime,ax2004m|\
 jcg,q20|\
 linksys,e7350|\
 netgear,eax12|\
@@ -92,6 +93,7 @@ ravpower,rp-wd03)
 		ubootenv_add_uci_config "/dev/mtd$idx" "0x4000" "0x1000" "0x1000"
 	;;
 beeline,smartbox-flash|\
+iptime,t5004|\
 linksys,ea6350-v4|\
 linksys,ea7300-v1|\
 linksys,ea7300-v2|\
diff --git a/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts b/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
index 7237bf822f..88067a4fa5 100644
--- a/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
+++ b/target/linux/ramips/dts/mt7621_iptime_ax2004m.dts
@@ -74,9 +74,8 @@
 		};
 
 		partition at 80000 {
-			label = "config";
+			label = "u-boot-env";
 			reg = <0x80000 0x80000>;
-			read-only;
 		};
 
 		partition at 100000 {
diff --git a/target/linux/ramips/dts/mt7621_iptime_t5004.dts b/target/linux/ramips/dts/mt7621_iptime_t5004.dts
index bba039a63c..f7a5e8ca17 100644
--- a/target/linux/ramips/dts/mt7621_iptime_t5004.dts
+++ b/target/linux/ramips/dts/mt7621_iptime_t5004.dts
@@ -53,9 +53,8 @@
 		};
 
 		partition at 80000 {
-			label = "config";
+			label = "u-boot-env";
 			reg = <0x80000 0xc0000>;
-			read-only;
 		};
 
 		partition at 140000 {
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 7b7266b73e..23e328a090 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -1460,7 +1460,7 @@ define Device/iptime_ax2004m
 	check-size | iptime-crc32 ax2004m
   DEVICE_VENDOR := ipTIME
   DEVICE_MODEL := AX2004M
-  DEVICE_PACKAGES := kmod-mt7915-firmware kmod-usb3 -uboot-envtools
+  DEVICE_PACKAGES := kmod-mt7915-firmware kmod-usb3
   DEVICE_COMPAT_VERSION := 2.0
   DEVICE_COMPAT_MESSAGE := NMBM has been newly enabled, and its flash block \
 	mapping might be incompatible with existing installation. \
@@ -1474,7 +1474,7 @@ define Device/iptime_t5004
   UIMAGE_NAME := t5004
   DEVICE_VENDOR := ipTIME
   DEVICE_MODEL := T5004
-  DEVICE_PACKAGES := -wpad-basic-mbedtls -uboot-envtools
+  DEVICE_PACKAGES := -wpad-basic-mbedtls
 endef
 TARGET_DEVICES += iptime_t5004
 
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
index ae29da4adc..d0481b78e9 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
@@ -260,7 +260,7 @@ ramips_setup_macs()
 		label_mac=$wan_mac
 		;;
 	iptime,t5004)
-		lan_mac=$(mtd_get_mac_ascii config ethaddr)
+		lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
 		wan_mac=$(macaddr_add "$lan_mac" 1)
 		;;
 	linksys,e5600|\



From lede-commits at lists.infradead.org  Sun Mar 10 10:27:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 10 Mar 2024 13:27:28 -0400
Subject: [openwrt/openwrt]  usb: add cdns3 support
In-Reply-To: <171009164807.3154326.842113144687929939@git-01.infra.openwrt.org>
References: <171009164807.3154326.842113144687929939@git-01.infra.openwrt.org>
Message-ID: <mailman.15042.1710091654.1280.lede-commits@lists.infradead.org>

wigyori pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/db0d7cf6a19f909a3cce958c5a8457511c1179e8

commit db0d7cf6a19f909a3cce958c5a8457511c1179e8
Author: Zoltan HERPAI <wigyori at uid0.hu>
AuthorDate: Mon Jan 1 13:50:46 2024 +0100

    usb: add cdns3 support
    
    CDNS3 is a SuperSpeed (SS) USB 3.0 Dual-Role-Device (DRD) controller from
    Cadence. Add support for this device, and add the required symbols into
    the generic configs.
    
    Compile-tested: apm821xx, bcm4908, imx, mpc85xx, pistachio, starfive
    
    Signed-off-by: Zoltan HERPAI <wigyori at uid0.hu>
---
 package/kernel/linux/modules/usb.mk | 38 +++++++++++++++++++++++++++++++++++++
 target/linux/generic/config-5.15    |  3 +++
 target/linux/generic/config-6.1     |  3 +++
 3 files changed, 44 insertions(+)

diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk
index 7f9e627fdb..f4a2113e17 100644
--- a/package/kernel/linux/modules/usb.mk
+++ b/package/kernel/linux/modules/usb.mk
@@ -459,6 +459,44 @@ endef
 $(eval $(call KernelPackage,usb-dwc2-pci))
 
 
+define KernelPackage/usb-cdns
+  TITLE:=Cadence USB USB controller driver
+  DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget +kmod-usb-roles
+  KCONFIG:= \
+	CONFIG_USB_CDNS_SUPPORT
+  FILES:= $(LINUX_DIR)/drivers/usb/cdns3/cdns-usb-common.ko
+  AUTOLOAD:=$(call AutoLoad,50,cdns-usb-common,1)
+  $(call AddDepends/usb)
+endef
+
+define KernelPackage/usb-cdns/description
+ This driver provides USB Device Controller support for the
+ Cadence USB Core
+endef
+
+$(eval $(call KernelPackage,usb-cdns))
+
+
+define KernelPackage/usb-cdns3
+  TITLE:=Cadence USB3 USB controller driver
+  DEPENDS:=+kmod-usb-cdns
+  KCONFIG:= \
+	CONFIG_USB_CDNS3 \
+	CONFIG_USB_CDNS3_GADGET=y \
+	CONFIG_USB_CDNS3_HOST=y
+  FILES:= $(LINUX_DIR)/drivers/usb/cdns3/cdns3.ko
+  AUTOLOAD:=$(call AutoLoad,54,cdns3,1)
+  $(call AddDepends/usb)
+endef
+
+define KernelPackage/usb-cdns3/description
+ This driver provides support for the Dual Role SuperSpeed
+ USB Controller based on the Cadence USB3 IP Core
+endef
+
+$(eval $(call KernelPackage,usb-cdns3))
+
+
 define KernelPackage/usb-dwc3
   TITLE:=DWC3 USB controller driver
   KCONFIG:= \
diff --git a/target/linux/generic/config-5.15 b/target/linux/generic/config-5.15
index 6070000dd4..8f6ccad216 100644
--- a/target/linux/generic/config-5.15
+++ b/target/linux/generic/config-5.15
@@ -6833,7 +6833,10 @@ CONFIG_USB_BELKIN=y
 # CONFIG_USB_CATC is not set
 # CONFIG_USB_CDC_COMPOSITE is not set
 # CONFIG_USB_CDNS3 is not set
+# CONFIG_USB_CDNS3_IMX is not set
+# CONFIG_USB_CDNS3_PCI_WRAP is not set
 # CONFIG_USB_CDNS_SUPPORT is not set
+# CONFIG_USB_CDNSP_PCI is not set
 # CONFIG_USB_CHAOSKEY is not set
 # CONFIG_USB_CHIPIDEA is not set
 # CONFIG_USB_CHIPIDEA_GENERIC is not set
diff --git a/target/linux/generic/config-6.1 b/target/linux/generic/config-6.1
index 34a6503ce0..deecb62ba8 100644
--- a/target/linux/generic/config-6.1
+++ b/target/linux/generic/config-6.1
@@ -7117,7 +7117,10 @@ CONFIG_USB_BELKIN=y
 # CONFIG_USB_CATC is not set
 # CONFIG_USB_CDC_COMPOSITE is not set
 # CONFIG_USB_CDNS3 is not set
+# CONFIG_USB_CDNS3_IMX is not set
+# CONFIG_USB_CDNS3_PCI_WRAP is not set
 # CONFIG_USB_CDNS_SUPPORT is not set
+# CONFIG_USB_CDNSP_PCI is not set
 # CONFIG_USB_CHAOSKEY is not set
 # CONFIG_USB_CHIPIDEA is not set
 # CONFIG_USB_CHIPIDEA_GENERIC is not set



From lede-commits at lists.infradead.org  Sun Mar 10 10:27:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 10 Mar 2024 13:27:30 -0400
Subject: [openwrt/openwrt]  mac80211: select BRCMFMAC_SDIO on starfive
In-Reply-To: <171009164807.3154326.842113144687929939@git-01.infra.openwrt.org>
References: <171009164807.3154326.842113144687929939@git-01.infra.openwrt.org>
Message-ID: <mailman.15046.1710091654.1280.lede-commits@lists.infradead.org>

wigyori pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ce1138867c4b4843e945ccd97144ccf4feeca1d0

commit ce1138867c4b4843e945ccd97144ccf4feeca1d0
Author: Zoltan HERPAI <wigyori at uid0.hu>
AuthorDate: Tue Aug 22 23:39:14 2023 +0200

    mac80211: select BRCMFMAC_SDIO on starfive
    
    As the Visionfive V1 board has an Ampak module connected via SDIO, enable
    support for SDIO in the brcmfmac module.
    
    Signed-off-by: Zoltan HERPAI <wigyori at uid0.hu>
---
 package/kernel/mac80211/broadcom.mk | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package/kernel/mac80211/broadcom.mk b/package/kernel/mac80211/broadcom.mk
index d0b0889088..a6f42cd19a 100644
--- a/package/kernel/mac80211/broadcom.mk
+++ b/package/kernel/mac80211/broadcom.mk
@@ -434,6 +434,7 @@ define KernelPackage/brcmfmac/config
 		bool "Enable SDIO bus interface support"
 		default y if TARGET_bcm27xx
 		default y if TARGET_imx_cortexa7
+		default y if TARGET_starfive
 		default y if TARGET_rockchip
 		default y if TARGET_sunxi
 		default n



From lede-commits at lists.infradead.org  Sun Mar 10 12:27:10 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 10 Mar 2024 15:27:10 -0400
Subject: [openwrt/openwrt]  bmips: add support for SmartRG SR505n
In-Reply-To: <171009883051.3477929.17217075008428719096@git-01.infra.openwrt.org>
References: <171009883051.3477929.17217075008428719096@git-01.infra.openwrt.org>
Message-ID: <mailman.15049.1710098835.1280.lede-commits@lists.infradead.org>

noltari pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1a6954337634474e6c42dec6023daa7af1d52432

commit 1a6954337634474e6c42dec6023daa7af1d52432
Author: Kyle Hendry <kylehendrydev at gmail.com>
AuthorDate: Sun Feb 18 12:26:38 2024 -0800

    bmips: add support for SmartRG SR505n
    
    Specifications:
    - SoC: Broadcom BCM63168 dual 400MHz MIPS
    - Flash: 16MB SPI NOR W25Q128WFG
    - RAM: 128MB DDR3 W631GG6KB-15
    - Ethernet: 1x 1000M, 3x 100M
    - Wifi: BCM435F
    - 1x USB 2.0 port
    - 3x Button
    - 12x LED
    
    Flashing via serial
    - Connect to the 3.3V TTL UART on the board
      (J6 pinout Vcc Rx Tx Gnd) at 115200-8-N-1
    - Press any key in the serial console when powering up the board to enter
      the CFE prompt
    - Configure an interface on your workstation to static IP 192.168.1.100
      and connect it to the board
    - Start a TFTP server with the firmware image
    - On the CFE prompt, enter the command
      "f 192.168.1.100:openwrt-bmips-bcm63268-smartrg_sr505n-squashfs-cfe.bin"
    
    Signed-off-by: Kyle Hendry <kylehendrydev at gmail.com>
    [Remove unneeded LED labels]
    Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
---
 .../bmips/bcm63268/base-files/etc/board.d/01_leds  |   3 +
 .../bcm63268/base-files/etc/board.d/02_network     |   3 +-
 target/linux/bmips/dts/bcm63168-smartrg-sr505n.dts | 238 +++++++++++++++++++++
 target/linux/bmips/image/bcm63268.mk               |  14 ++
 4 files changed, 257 insertions(+), 1 deletion(-)

diff --git a/target/linux/bmips/bcm63268/base-files/etc/board.d/01_leds b/target/linux/bmips/bcm63268/base-files/etc/board.d/01_leds
index d5b65a9c0f..8af1b77504 100644
--- a/target/linux/bmips/bcm63268/base-files/etc/board.d/01_leds
+++ b/target/linux/bmips/bcm63268/base-files/etc/board.d/01_leds
@@ -9,6 +9,9 @@ case "$(board_name)" in
 comtrend,vr-3032u)
 	ucidef_set_led_usbport "usb" "USB" "green:usb" "usb1-port1" "usb2-port1"
 	;;
+smartrg,sr505n)
+	ucidef_set_led_usbport "usb" "USB" "green:usb" "usb1-port1"
+	;;
 sercomm,h500-s-lowi |\
 sercomm,h500-s-vfes)
 	ucidef_set_led_netdev "wan" "WAN" "green:internet" "wan"
diff --git a/target/linux/bmips/bcm63268/base-files/etc/board.d/02_network b/target/linux/bmips/bcm63268/base-files/etc/board.d/02_network
index 7fb9333cc1..74b74691cb 100644
--- a/target/linux/bmips/bcm63268/base-files/etc/board.d/02_network
+++ b/target/linux/bmips/bcm63268/base-files/etc/board.d/02_network
@@ -5,7 +5,8 @@
 board_config_update
 
 case "$(board_name)" in
-comtrend,vr-3032u)
+comtrend,vr-3032u |\
+smartrg,sr505n)
 	ucidef_set_bridge_device switch
 	ucidef_set_interface_lan "lan1 lan2 lan3 lan4"
 	;;
diff --git a/target/linux/bmips/dts/bcm63168-smartrg-sr505n.dts b/target/linux/bmips/dts/bcm63168-smartrg-sr505n.dts
new file mode 100644
index 0000000000..571289b4c6
--- /dev/null
+++ b/target/linux/bmips/dts/bcm63168-smartrg-sr505n.dts
@@ -0,0 +1,238 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm63268.dtsi"
+
+/ {
+	model = "SmartRG SR505n";
+	compatible = "smartrg,sr505n", "brcm,bcm63168", "brcm,bcm63268";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_red;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		poll-interval = <100>;
+		
+		reset {
+			label = "reset";
+			gpios = <&gpio 32 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&gpio 33 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		wlan {
+			label = "wlan";
+			gpios = <&gpio 34 GPIO_ACTIVE_LOW>;
+   			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&ehci {
+	status = "okay";
+};
+
+&ethernet {
+	status = "okay";
+
+	nvmem-cells = <&macaddr_cfe_6a0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&hsspi {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "cfe";
+				reg = <0x000000 0x010000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_cfe_6a0: macaddr at 6a0 {
+						reg = <0x6a0 0x6>;
+					};
+				};
+			};
+
+			partition at 10000 {
+				compatible = "brcm,bcm963xx-imagetag";
+				label = "firmware";
+				reg = <0x010000 0xfd0000>;
+			};
+
+			partition at fe0000 {
+				label = "nvram";
+				reg = <0xfe0000 0x020000>;
+			};
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	wps_green at 1 {
+		reg = <1>;
+		active-low;
+		function = LED_FUNCTION_WPS;
+		color = <LED_COLOR_ID_GREEN>;
+	};
+
+	inet_green at 8 {
+		reg = <8>;
+		active-low;
+		label = "green:inet";
+	};
+
+	lan2_green at 9 {
+		/* EPHY1 Act */
+		reg = <9>;
+		brcm,hardware-controlled;
+	};
+
+	lan3_green at 10 {
+		/* EPHY2 Act */
+		reg = <10>;
+		brcm,hardware-controlled;
+	};
+
+	lan4_green at 11 {
+		/* EPHY3 Act */
+		reg = <11>;
+		brcm,hardware-controlled;
+	};
+
+	lan1_green at 12 {
+		/* GPHY0 Act */
+		reg = <12>;
+		brcm,hardware-controlled;
+	};
+
+	dsl_green at 14 {
+		reg = <14>;
+		active-low;
+		label = "green:dsl";
+	};
+
+	inet_red at 15 {
+		reg = <15>;
+		active-low;
+		label = "red:inet";
+	};
+
+	usb_green at 16 {
+		reg = <16>;
+		active-low;
+		function = LED_FUNCTION_USB;
+		color = <LED_COLOR_ID_GREEN>;
+	};
+
+	led_power_green: power_green at 20 {
+		reg = <20>;
+		active-low;
+		function = LED_FUNCTION_POWER;
+		color = <LED_COLOR_ID_GREEN>;
+	};
+
+	led_power_red: power_red at 21 {
+		reg = <21>;
+		active-low;
+		function = LED_FUNCTION_POWER;
+		color = <LED_COLOR_ID_RED>;
+		panic-indicator;
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio1", "gpio8", 
+			"gpio9", "gpio10",
+			"gpio11", "gpio12",
+			"gpio14", "gpio15",
+			"gpio16", "gpio20",
+			"gpio21";
+	};
+};
+
+&ohci {
+	status = "okay";
+};
+
+&switch0 {
+	ports {
+		port at 0 {
+			reg = <0>;
+			label = "lan2";
+
+			phy-handle = <&phy1>;
+			phy-mode = "mii";
+		};
+
+		port at 1 {
+			reg = <1>;
+			label = "lan3";
+
+			phy-handle = <&phy2>;
+			phy-mode = "mii";
+		};
+
+		port at 2 {
+			reg = <2>;
+			label = "lan4";
+
+			phy-handle = <&phy3>;
+			phy-mode = "mii";
+		};
+
+		port at 3 {
+			reg = <3>;
+			label = "lan1";
+
+			phy-handle = <&phy4>;
+			phy-mode = "gmii";
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&usbh {
+	status = "okay";
+};
diff --git a/target/linux/bmips/image/bcm63268.mk b/target/linux/bmips/image/bcm63268.mk
index 941e83f71b..be3403174e 100644
--- a/target/linux/bmips/image/bcm63268.mk
+++ b/target/linux/bmips/image/bcm63268.mk
@@ -100,3 +100,17 @@ define Device/sercomm_shg2500
   SERCOMM_SWVER := 3207
 endef
 TARGET_DEVICES += sercomm_shg2500
+
+define Device/smartrg_sr505n
+  $(Device/bcm63xx-cfe)
+  DEVICE_VENDOR := SmartRG
+  DEVICE_MODEL := SR505n
+  DEVICE_LOADADDR := $(KERNEL_LOADADDR)
+  CHIP_ID := 63268
+  SOC := bcm63168
+  CFE_BOARD_ID := 963168MBV_17AZZ
+  FLASH_MB := 16
+  DEVICE_PACKAGES += $(USB2_PACKAGES) \
+    kmod-leds-bcm6328
+endef
+TARGET_DEVICES += smartrg_sr505n



From lede-commits at lists.infradead.org  Mon Mar 11 01:53:05 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:53:05 -0400
Subject: [openwrt/openwrt]  scripts: Kernel bumper script
In-Reply-To: <171014718590.1341722.15541830256610173108@git-01.infra.openwrt.org>
References: <171014718590.1341722.15541830256610173108@git-01.infra.openwrt.org>
Message-ID: <mailman.15089.1710147199.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/3561015efdfb3a6c268f723f509f5cd2720efdb8

commit 3561015efdfb3a6c268f723f509f5cd2720efdb8
Author: Olliver Schinagl <oliver at schinagl.nl>
AuthorDate: Fri Feb 23 22:54:48 2024 +0100

    scripts: Kernel bumper script
    
    For years, we have struggled and been frustrated at loosing history of
    files in git, due to the 'copy + add' strategy. This could have been
    prevented with a double-commit 'mv + add' trick.
    
    On the mailing list [0] the discussion was started to put the
    instructions in a wiki. Instead, it is much better to just script it and
    put it in the repo.
    
    Instead of doing mv + copy, which leads to two commits, but no history
    on the copied files, it uses move, + copy and merge, which results in
    three (merge) commits, but keeps the history of all files. As always
    with renames, `--follow` will be needed.
    
    The tool is trivial and works either in the OpenWrt git root directory,
    or in the actual target directory.
    
    Tested on the `realtek` and generic targets.
    
    Note, that the tool does not do any of the labor needed after the move,
    such as updating configs, dropping patches etc.
    
    To make sure this script is easily found by any developer, who just
    wants to do a kernel bump, the script is added here and not to
    maintainer-tools repo as those scripts are a little bit more specialized.
    Bumping a kernel is a trivial task that often regular developers do,
    where most do not even know the existence of maintainer tools, are not
    part of the main repo they'd clone, not part of the docker container
    they'd use and so discoverability is probably much more important.
    
    [0]: https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
    
    Signed-off-by: Olliver Schinagl <oliver at schinagl.nl>
    Tested-by: Robert Marko <robimarko at gmail.com>
    Tested-by: Weijie Gao <hackpascal at gmail.com>
---
 scripts/kernel_bump.sh | 225 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 225 insertions(+)

diff --git a/scripts/kernel_bump.sh b/scripts/kernel_bump.sh
new file mode 100755
index 0000000000..5896bfc48f
--- /dev/null
+++ b/scripts/kernel_bump.sh
@@ -0,0 +1,225 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (C) 2024 Olliver Schinagl <oliver at schinagl.nl>
+
+set -eu
+if [ -n "${DEBUG_TRACE_SH:-}" ] && \
+   [ "${DEBUG_TRACE_SH:-}" != "${DEBUG_TRACE_SH#*"$(basename "${0}")"*}" ] || \
+   [ "${DEBUG_TRACE_SH:-}" = 'all' ]; then
+	set -x
+fi
+
+REQUIRED_COMMANDS='
+	[
+	basename
+	command
+	echo
+	exit
+	git
+	printf
+	set
+	shift
+'
+
+_msg()
+{
+	_level="${1:?Missing argument to function}"
+	shift
+
+	if [ "${#}" -le 0 ]; then
+		echo "${_level}: No content for this message ..."
+		return
+	fi
+
+	echo "${_level}: ${*}"
+}
+
+e_err()
+{
+	_msg 'err' "${*}" >&2
+}
+
+e_warn()
+{
+	_msg 'warning' "${*}"
+}
+
+e_notice()
+{
+	_msg 'notice' "${*}"
+}
+
+usage()
+{
+	echo "Usage: ${0}"
+	echo 'Helper script to bump the target kernel version, whilst keeping history.'
+	echo "    -p  Optional Platform name (e.g. 'ath79' [PLATFORM_NAME]"
+	echo "    -s  Source version of kernel (e.g. 'v6.1' [SOURCE_VERSION])"
+	echo "    -t  Target version of kernel (e.g. 'v6.6' [TARGET_VERSION]')"
+	echo
+	echo 'All options can also be passed in environment variables (listed between [BRACKETS]).'
+	echo 'Example: scripts/kernel_bump.sh -p realtek -s v6.1 -t v6.6'
+}
+
+cleanup()
+{
+	trap - EXIT HUP INT QUIT ABRT ALRM TERM
+
+	if [ -n "${initial_branch:-}" ] && \
+	   [ "$(git rev-parse --abbrev-ref HEAD)" != "${initial_branch:-}" ]; then
+		git switch "${initial_branch}"
+	fi
+}
+
+init()
+{
+	initial_branch="$(git rev-parse --abbrev-ref HEAD)"
+	initial_commitish="$(git rev-parse HEAD)"
+
+	trap cleanup EXIT HUP INT QUIT ABRT ALRM TERM
+}
+
+do_source_target()
+{
+	_target_dir="${1:?Missing argument to function}"
+	_op="${2:?Missing argument to function}"
+
+}
+
+bump_kernel()
+{
+	platform_name="${platform_name##*'/'}"
+
+	if [ -z "${platform_name:-}" ]; then
+		platform_name="${PWD##*'/'}"
+	fi
+
+	if [ "${PWD##*'/'}" = "${platform_name}" ]; then
+		_target_dir='./'
+	else
+		_target_dir="target/linux/${platform_name}"
+	fi
+
+	if [ ! -d "${_target_dir}/image" ]; then
+		e_err 'Cannot find target linux directory.'
+		exit 1
+	fi
+
+	git switch --force-create '__openwrt_kernel_files_mover'
+
+	for _path in "${_target_dir}/"*; do
+		if [ ! -s "${_path}" ] || \
+		   [ "${_path}" = "${_path%%"-${source_version}"}" ]; then
+			continue
+		fi
+
+		_target_path="${_path%%"-${source_version}"}-${target_version}"
+		if [ -s "${_target_path}" ]; then
+			e_err "Target '${_target_path}' already exists!"
+			exit 1
+		fi
+
+		git mv \
+			"${_path}" \
+			"${_target_path}"
+	done
+
+	find "${_target_dir}" -iname "config-${source_version}" | while read -r _config; do
+		_path="${_config%%"/config-${source_version}"}"
+		git mv "${_config}" "${_path}/config-${target_version}"
+	done
+
+	git commit \
+		--signoff \
+		--message "kernel/${platform_name}: Create kernel files for v${target_version} (from v${source_version})" \
+		--message 'This is an automatically generated commit.' \
+		--message 'During a `git bisect` session, `git bisect --skip` is recommended.'
+
+	git checkout 'HEAD~' "${_target_dir}"
+	git commit \
+		--signoff \
+		--message "kernel/${platform_name}: Restore kernel files for v${source_version}" \
+		--message "$(printf "This is an automatically generated commit which aids following Kernel patch history,\nas git will see the move and copy as a rename thus defeating the purpose.\n\nSee: https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html\nfor the original discussion.")"
+	git switch "${initial_branch:?Unable to switch back to original branch. Quitting.}"
+	GIT_EDITOR=true git merge --no-ff '__openwrt_kernel_files_mover'
+	git branch --delete '__openwrt_kernel_files_mover'
+
+	echo "Original commitish was '${initial_commitish}'."
+	echo 'Kernel bump complete. Remember to use `git log --follow`.'
+}
+
+check_requirements()
+{
+	for _cmd in ${REQUIRED_COMMANDS}; do
+		if ! _test_result="$(command -V "${_cmd}")"; then
+			_test_result_fail="${_test_result_fail:-}${_test_result}\n"
+		else
+			_test_result_pass="${_test_result_pass:-}${_test_result}\n"
+		fi
+	done
+
+	echo 'Available commands:'
+	# As the results contain \n, we expect these to be interpreted.
+	# shellcheck disable=SC2059
+	printf "${_test_result_pass:-none\n}"
+	echo
+	echo 'Missing commands:'
+	# shellcheck disable=SC2059
+	printf "${_test_result_fail:-none\n}"
+	echo
+
+	if [ -n "${_test_result_fail:-}" ]; then
+		echo 'Command test failed, missing programs.'
+		test_failed=1
+	fi
+}
+
+main()
+{
+	while getopts 'hp:s:t:' _options; do
+		case "${_options}" in
+		'h')
+			usage
+			exit 0
+			;;
+		'p')
+			platform_name="${OPTARG}"
+			;;
+		's')
+			source_version="${OPTARG#v}"
+			;;
+		't')
+			target_version="${OPTARG#v}"
+			;;
+		':')
+			e_err "Option -${OPTARG} requires an argument."
+			exit 1
+			;;
+		*)
+			e_err "Invalid option: -${OPTARG}"
+			exit 1
+			;;
+		esac
+	done
+	shift "$((OPTIND - 1))"
+
+	platform_name="${platform_name:-${PLATFORM_NAME:-}}"
+	source_version="${source_version:-${SOURCE_VERSION:-}}"
+	target_version="${target_version:-${TARGET_VERSION:-}}"
+
+	if [ -z "${source_version:-}" ] || [ -z "${target_version:-}" ]; then
+		e_err "Source (${source_version}) and target (${target_version}) versions need to be defined."
+		exit 1
+	fi
+
+	check_requirements
+
+	init
+	bump_kernel
+	cleanup
+}
+
+main "${@}"
+
+exit 0



From lede-commits at lists.infradead.org  Mon Mar 11 01:55:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:55:28 -0400
Subject: [openwrt/openwrt]  dnsmasq: version 2.90
In-Reply-To: <171014732878.1348660.8836950494665079712@git-01.infra.openwrt.org>
References: <171014732878.1348660.8836950494665079712@git-01.infra.openwrt.org>
Message-ID: <mailman.15090.1710147333.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/838a27f64f56e75aae98a3ab2556856224d48d8b

commit 838a27f64f56e75aae98a3ab2556856224d48d8b
Author: Nathaniel Wesley Filardo <nwfilardo at gmail.com>
AuthorDate: Sun Feb 18 13:12:10 2024 +0000

    dnsmasq: version 2.90
    
    Bump to 2.90 to get upstream's fix for DNSSEC KeyTrap (CVE-2023-50387,
    CVE-2023-50868) among many other goodies and fixes (notably, upstream
    568fb024... fixes a UAF in cache_remove_uid that was routinely crashing
    dnsmasq in my deployment).
    
    Catch up our 200-ubus_dns.patch, too.
    
    Signed-off-by: Nathaniel Wesley Filardo <nwfilardo at gmail.com>
---
 package/network/services/dnsmasq/Makefile          |   4 +-
 .../services/dnsmasq/patches/200-ubus_dns.patch    | 118 +++++++++++----------
 2 files changed, 64 insertions(+), 58 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index e33d866304..d2de74d9da 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
-PKG_UPSTREAM_VERSION:=2.89
+PKG_UPSTREAM_VERSION:=2.90
 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
 PKG_RELEASE:=8
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
 PKG_SOURCE_URL:=https://thekelleys.org.uk/dnsmasq/
-PKG_HASH:=02bd230346cf0b9d5909f5e151df168b2707103785eb616b56685855adebb609
+PKG_HASH:=8e50309bd837bfec9649a812e066c09b6988b73d749b7d293c06c57d46a109e4
 
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
diff --git a/package/network/services/dnsmasq/patches/200-ubus_dns.patch b/package/network/services/dnsmasq/patches/200-ubus_dns.patch
index ccbe70ab9c..c1694d5551 100644
--- a/package/network/services/dnsmasq/patches/200-ubus_dns.patch
+++ b/package/network/services/dnsmasq/patches/200-ubus_dns.patch
@@ -1,6 +1,23 @@
+diff --git a/src/dnsmasq.c b/src/dnsmasq.c
+index 30fb419..776351a 100644
+--- a/src/dnsmasq.c
++++ b/src/dnsmasq.c
+@@ -2025,6 +2025,10 @@ static void check_dns_listeners(time_t now)
+ 		  daemon->pipe_to_parent = pipefd[1];
+ 		}
+ 
++#ifdef HAVE_UBUS
++	      drop_ubus_listeners();
++#endif
++
+ 	      /* start with no upstream connections. */
+ 	      for (s = daemon->servers; s; s = s->next)
+ 		 s->tcpfd = -1; 
+diff --git a/src/dnsmasq.h b/src/dnsmasq.h
+index e455c3f..c84ba48 100644
 --- a/src/dnsmasq.h
 +++ b/src/dnsmasq.h
-@@ -1631,14 +1631,26 @@ void emit_dbus_signal(int action, struct
+@@ -1673,14 +1673,26 @@ void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname);
  
  /* ubus.c */
  #ifdef HAVE_UBUS
@@ -11,6 +28,7 @@
  void set_ubus_listeners(void);
  void check_ubus_listeners(void);
 +void drop_ubus_listeners(void);
++int ubus_dns_notify_has_subscribers(void);
 +struct blob_buf *ubus_dns_notify_prepare(void);
 +int ubus_dns_notify(const char *type, ubus_dns_notify_cb cb, void *priv);
  void ubus_event_bcast(const char *type, const char *mac, const char *ip, const char *name, const char *interface);
@@ -19,14 +37,28 @@
  void ubus_event_bcast_connmark_allowlist_resolved(u32 mark, const char *pattern, const char *ip, u32 ttl);
  #  endif
 +#else
-+struct blob_buf;
-+static inline struct blob_buf *ubus_dns_notify_prepare(void)
++static inline int ubus_dns_notify_has_subscribers(void)
 +{
-+	return NULL;
++	return 0;
 +}
  #endif
  
  /* ipset.c */
+diff --git a/src/forward.c b/src/forward.c
+index 32f37e4..3d28963 100644
+--- a/src/forward.c
++++ b/src/forward.c
+@@ -803,7 +803,7 @@ static size_t process_reply(struct dns_header *header, time_t now, struct server
+ 	  cache_secure = 0;
+ 	}
+       
+-      if (daemon->doctors && do_doctor(header, n, daemon->namebuff))
++      if ((daemon->doctors || ubus_dns_notify_has_subscribers()) && do_doctor(header, n, daemon->namebuff))
+ 	cache_secure = 0;
+       
+       /* check_for_bogus_wildcard() does it's own caching, so
+diff --git a/src/rfc1035.c b/src/rfc1035.c
+index 387d894..7bf7967 100644
 --- a/src/rfc1035.c
 +++ b/src/rfc1035.c
 @@ -13,8 +13,10 @@
@@ -41,7 +73,7 @@
  
  int extract_name(struct dns_header *header, size_t plen, unsigned char **pp, 
  		 char *name, int isExtract, int extrabytes)
-@@ -394,9 +396,64 @@ static int private_net6(struct in6_addr
+@@ -384,10 +386,65 @@ static int private_net6(struct in6_addr *a, int ban_localhost)
      ((u32 *)a)[0] == htonl(0x20010db8); /* RFC 6303 4.6 */
  }
  
@@ -100,14 +132,15 @@
 +}
 +#endif
 +
- static unsigned char *do_doctor(unsigned char *p, int count, struct dns_header *header, size_t qlen, int *doctored)
+ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
  {
+   unsigned char *p;
 -  int i, qtype, qclass, rdlen;
 +  int i, qtype, qclass, rdlen, ttl;
- 
-   for (i = count; i != 0; i--)
-     {
-@@ -405,7 +462,7 @@ static unsigned char *do_doctor(unsigned
+   int done = 0;
+   
+   if (!(p = skip_questions(header, qlen)))
+@@ -404,7 +461,7 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
        
        GETSHORT(qtype, p); 
        GETSHORT(qclass, p);
@@ -116,53 +149,36 @@
        GETSHORT(rdlen, p);
        
        if (qclass == C_IN && qtype == T_A)
-@@ -416,6 +473,9 @@ static unsigned char *do_doctor(unsigned
+@@ -415,6 +472,9 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
  	  if (!CHECK_LEN(header, p, qlen, INADDRSZ))
- 	    return 0;
+ 	    return done;
  	  
 +	  if (ubus_dns_doctor(daemon->namebuff, ttl, p, AF_INET))
-+	    *doctored = 1;
++	    header->hb3 &= ~HB3_AA;
 +
  	  /* alignment */
- 	  memcpy(&addr, p, INADDRSZ);
+ 	  memcpy(&addr.addr4, p, INADDRSZ);
  	  
-@@ -433,13 +493,22 @@ static unsigned char *do_doctor(unsigned
- 	      addr.s_addr &= ~doctor->mask.s_addr;
- 	      addr.s_addr |= (doctor->out.s_addr & doctor->mask.s_addr);
- 	      /* Since we munged the data, the server it came from is no longer authoritative */
--	      header->hb3 &= ~HB3_AA;
- 	      *doctored = 1;
- 	      memcpy(p, &addr, INADDRSZ);
+@@ -444,6 +504,14 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
  	      break;
  	    }
  	}
--      
 +      else if (qclass == C_IN && qtype == T_AAAA)
 +        {
 +	  if (!CHECK_LEN(header, p, qlen, IN6ADDRSZ))
 +	    return 0;
 +
 +	  if (ubus_dns_doctor(daemon->namebuff, ttl, p, AF_INET6))
-+	    *doctored = 1;
++	    header->hb3 &= ~HB3_AA;
 +	}
-+
-+      if (*doctored)
-+        header->hb3 &= ~HB3_AA;
+       
        if (!ADD_RDLEN(header, p, qlen, rdlen))
- 	 return 0; /* bad packet */
-     }
-@@ -570,7 +639,7 @@ int extract_addresses(struct dns_header
-   cache_start_insert();
- 
-   /* find_soa is needed for dns_doctor side effects, so don't call it lazily if there are any. */
--  if (daemon->doctors || option_bool(OPT_DNSSEC_VALID))
-+  if (daemon->doctors || option_bool(OPT_DNSSEC_VALID) || ubus_dns_notify_prepare())
-     {
-       searched_soa = 1;
-       ttl = find_soa(header, qlen, doctored);
+ 	 return done; /* bad packet */
+diff --git a/src/ubus.c b/src/ubus.c
+index a5758e7..f2a75a8 100644
 --- a/src/ubus.c
 +++ b/src/ubus.c
-@@ -72,6 +72,13 @@ static struct ubus_object ubus_object =
+@@ -72,6 +72,13 @@ static struct ubus_object ubus_object = {
    .subscribe_cb = ubus_subscribe_cb,
  };
  
@@ -176,7 +192,7 @@
  static void ubus_subscribe_cb(struct ubus_context *ctx, struct ubus_object *obj)
  {
    (void)ctx;
-@@ -105,13 +112,21 @@ static void ubus_disconnect_cb(struct ub
+@@ -105,13 +112,21 @@ static void ubus_disconnect_cb(struct ubus_context *ubus)
  char *ubus_init()
  {
    struct ubus_context *ubus = NULL;
@@ -216,15 +232,18 @@
  static int ubus_handle_metrics(struct ubus_context *ctx, struct ubus_object *obj,
  			       struct ubus_request_data *req, const char *method,
  			       struct blob_attr *msg)
-@@ -328,6 +354,50 @@ fail:
+@@ -328,6 +354,53 @@ fail:
        } \
    } while (0)
  
-+struct blob_buf *ubus_dns_notify_prepare(void)
++int ubus_dns_notify_has_subscribers(void)
 +{
-+  struct ubus_context *ubus = (struct ubus_context *)daemon->ubus;
++	return (daemon->ubus && ubus_dns_object.has_subscribers);
++}
 +
-+	if (!ubus || !ubus_dns_object.has_subscribers)
++struct blob_buf *ubus_dns_notify_prepare(void)
++{
++	if (!ubus_dns_notify_has_subscribers())
 +		return NULL;
 +
 +	blob_buf_init(&b, 0);
@@ -267,16 +286,3 @@
  void ubus_event_bcast(const char *type, const char *mac, const char *ip, const char *name, const char *interface)
  {
    struct ubus_context *ubus = (struct ubus_context *)daemon->ubus;
---- a/src/dnsmasq.c
-+++ b/src/dnsmasq.c
-@@ -2003,6 +2003,10 @@ static void check_dns_listeners(time_t n
- 		  daemon->pipe_to_parent = pipefd[1];
- 		}
- 
-+#ifdef HAVE_UBUS
-+	      drop_ubus_listeners();
-+#endif
-+
- 	      /* start with no upstream connections. */
- 	      for (s = daemon->servers; s; s = s->next)
- 		 s->tcpfd = -1; 



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:27 -0400
Subject: [openwrt/openwrt]  lldpd: fix a paste error from commit
 1be2088a5247b2cfabe8be991c1e52ddaf780a16
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15095.1710147510.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/4fb8fea6de363aeeeca029ed9801b85cdbf45f0c

commit 4fb8fea6de363aeeeca029ed9801b85cdbf45f0c
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 20:26:13 2024 +0100

    lldpd: fix a paste error
    from commit 1be2088a5247b2cfabe8be991c1e52ddaf780a16
    
    The original PR #13018 did not exhibit this.
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index c6d7b82c2c..fc24b9f7cd 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -75,7 +75,8 @@ get_config_restart_hash() {
 }
 
 get_config_cid_ifaces() {
-	local _ifacesCONFIG_LLDPD_WITH_FDP
+	local _ifaces
+	config_get _ifaces 'config' 'cid_interface'
 
 	local _iface _ifnames=""
 	for _iface in $_ifaces; do



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:25 -0400
Subject: [openwrt/openwrt]  lldpd: fix -k 'lldp_no_version' row
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15096.1710147510.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/97eb3bf76c17328f80554e6a3603de00d835e4c5

commit 97eb3bf76c17328f80554e6a3603de00d835e4c5
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 15:57:28 2024 +0100

    lldpd: fix -k 'lldp_no_version' row
    
    Supplementary fix for PR #14193 and commit
    b67182008fd124706be0ec3ce67347447554ffd5
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index f90b4a237c..d4642238a3 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -290,7 +290,7 @@ start_service() {
 	fi
 
 	[ $readonly_mode -gt 0 ] && procd_append_param command '-r'
-	[ $lldp_no_version -gt 0 ] && procd_append_param commanpackage/network/services/lldpd/Makefile package/network/services/lldpd/files/lldpd.initd '-k'
+	[ $lldp_no_version -gt 0 ] && procd_append_param command '-k'
 	[ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ] && [ $lldpmed_no_inventory -gt 0 ] && procd_append_param command '-i'
 	[ -n "$lldp_class" ] && procd_append_param command -M "$lldp_class"
 	[ "$CONFIG_LLDPD_WITH_SNMP" == "y" ] && [ -n "$agentxsocket" ] && procd_append_param command -x -X "$agentxsocket"



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:33 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:33 -0400
Subject: [openwrt/openwrt]  lldpd: remove unneeded quotes
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15097.1710147511.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/4dcece46a7b4ede7d05d8fb9d31d62406bca74d0

commit 4dcece46a7b4ede7d05d8fb9d31d62406bca74d0
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 21:54:35 2024 +0100

    lldpd: remove unneeded quotes
    
    from commit a5f715da713304972467612d6934130ce3aa2837
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 5d06e13aa5..4841027432 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -156,8 +156,8 @@ write_lldpd_conf()
 	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type $lldp_agenttype" >> "$LLDPD_CONF"
 	[ -n "$lldp_portidsubtype" ] && echo "configure lldp portidsubtype $lldp_portidsubtype" >> "$LLDPD_CONF"
 	[ -n "$lldp_platform" ] && echo "configure system platform" "\"$lldp_platform\"" >> "$LLDPD_CONF"
-	[ $lldp_tx_interval -gt 0 ] && echo "configure lldp tx-interval" "$lldp_tx_interval" >> "$LLDPD_CONF"
-	[ $lldp_tx_hold -gt 0 ] && echo "configure lldp tx-hold" "$lldp_tx_hold" >> "$LLDPD_CONF"
+	[ $lldp_tx_interval -gt 0 ] && echo "configure lldp tx-interval $lldp_tx_interval" >> "$LLDPD_CONF"
+	[ $lldp_tx_hold -gt 0 ] && echo "configure lldp tx-hold $lldp_tx_hold" >> "$LLDPD_CONF"
 
 	# Since lldpd's sysconfdir is /tmp, we'll symlink /etc/lldpd.d to /tmp/$LLDPD_CONFS_DIR
 	[ -e $LLDPD_CONFS_DIR ] || ln -s /etc/lldpd.d $LLDPD_CONFS_DIR



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:30 -0400
Subject: [openwrt/openwrt]  lldpd: remove unneeded quotes and variable quoting
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15098.1710147511.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b039641071b1e9ee9654513ef3229bb97cc379af

commit b039641071b1e9ee9654513ef3229bb97cc379af
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 21:29:37 2024 +0100

    lldpd: remove unneeded quotes and variable quoting
    
    from commit 3ce909914a12647bec52bcee0a162dd6d158a4f6
    
    'capabilities enabled x' where x is a string of CSV
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 6af15691e7..3fc47bb3e3 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -145,7 +145,7 @@ write_lldpd_conf()
 	[ -n "$lldp_description" ] && echo "configure system description" "\"$lldp_description\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_hostname" ] && echo "configure system hostname" "\"$lldp_hostname\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_mgmt_ip" ] && echo "configure system ip management pattern" "\"$lldp_mgmt_ip\"" >> "$LLDPD_CONF"
-	[ -n "$lldp_syscapabilities" ] && echo "configure system capabilities enabled" "\"$lldp_syscapabilities\"" >> "$LLDPD_CONF"
+	[ -n "$lldp_syscapabilities" ] && echo "configure system capabilities enabled $lldp_syscapabilities" >> "$LLDPD_CONF"
 	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ] && [ $lldpmed_fast_start -gt 0 ]; then
 		if [ $lldpmed_fast_start_tx_interval -gt 0 ]; then
 			echo "configure med fast-start tx-interval $lldpmed_fast_start_tx_interval" >> "$LLDPD_CONF"



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:31 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:31 -0400
Subject: [openwrt/openwrt]  lldpd: remove unneeded quotes and variable quoting
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15099.1710147511.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/24a4da527f7e70d9916439a78298de2f4e4af653

commit 24a4da527f7e70d9916439a78298de2f4e4af653
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 21:42:11 2024 +0100

    lldpd: remove unneeded quotes and variable quoting
    
    from commit c98ee4dbb3db0f064d990941cdd82e872da76946
    
    agent-type takes 1 of 3 possible keywords which do not require quoting:
    
             configure lldp agent-type nearest-bridge | nearest-non-tpmr-bridge
             | nearest-customer-bridge
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 3fc47bb3e3..243a32c937 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -153,7 +153,7 @@ write_lldpd_conf()
 			echo "configure med fast-start enable" >> "$LLDPD_CONF"
 		fi
 	fi
-	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type" "\"$lldp_agenttype\"" >> "$LLDPD_CONF"
+	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type $lldp_agenttype" >> "$LLDPD_CONF"
 	[ -n "$lldp_portidsubtype" ] && echo "configure lldp portidsubtype" "\"$lldp_portidsubtype\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_platform" ] && echo "configure system platform" "\"$lldp_platform\"" >> "$LLDPD_CONF"
 	[ $lldp_tx_interval -gt 0 ] && echo "configure lldp tx-interval" "$lldp_tx_interval" >> "$LLDPD_CONF"



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:32 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:32 -0400
Subject: [openwrt/openwrt]  lldpd: remove unneeded quotes and variable quoting
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15100.1710147511.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/bd1b17d589bc622408cebdd9fa0f43386cc3ef5a

commit bd1b17d589bc622408cebdd9fa0f43386cc3ef5a
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 21:44:56 2024 +0100

    lldpd: remove unneeded quotes and variable quoting
    
    from commit ac771313ebedd2c4bfda8adef47650d45d77c32d
    
    portidsubtype takes 1 of 2 possible keywords which do not need quoting:
    
             configure lldp portidsubtype ifname | macaddress
    
    The third keyword 'local' is used in the syntax when individual ports
    are being defined:
    
             configure [ports ethX [,?]] lldp portidsubtype local value
    
    When this syntax is used, quoting is useful (see test cases for lldpd).
    In the init file, the 'local' syntax is unused.
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 243a32c937..5d06e13aa5 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -154,7 +154,7 @@ write_lldpd_conf()
 		fi
 	fi
 	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type $lldp_agenttype" >> "$LLDPD_CONF"
-	[ -n "$lldp_portidsubtype" ] && echo "configure lldp portidsubtype" "\"$lldp_portidsubtype\"" >> "$LLDPD_CONF"
+	[ -n "$lldp_portidsubtype" ] && echo "configure lldp portidsubtype $lldp_portidsubtype" >> "$LLDPD_CONF"
 	[ -n "$lldp_platform" ] && echo "configure system platform" "\"$lldp_platform\"" >> "$LLDPD_CONF"
 	[ $lldp_tx_interval -gt 0 ] && echo "configure lldp tx-interval" "$lldp_tx_interval" >> "$LLDPD_CONF"
 	[ $lldp_tx_hold -gt 0 ] && echo "configure lldp tx-hold" "$lldp_tx_hold" >> "$LLDPD_CONF"



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:28 -0400
Subject: [openwrt/openwrt]  lldpd: remove unneeded quotes and variable quoting
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15101.1710147511.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/20a4dddeb0366a56c14f9128392ffe8d0b62e32d

commit 20a4dddeb0366a56c14f9128392ffe8d0b62e32d
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 21:31:57 2024 +0100

    lldpd: remove unneeded quotes and variable quoting
    
    from commit 24176a6bdd8f26040a97960868fd0d9ee968d695
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index fc24b9f7cd..47354f3c4e 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -148,7 +148,7 @@ write_lldpd_conf()
 	[ -n "$lldp_syscapabilities" ] && echo "configure system capabilities enabled" "\"$lldp_syscapabilities\"" >> "$LLDPD_CONF"
 	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ] && [ $lldpmed_fast_start -gt 0 ]; then
 		if [ $lldpmed_fast_start_tx_interval -gt 0 ]; then
-			echo "configure med fast-start tx-interval" "\"$lldpmed_fast_start_tx_interval\"" >> "$LLDPD_CONF"
+			echo "configure med fast-start tx-interval $lldpmed_fast_start_tx_interval" >> "$LLDPD_CONF"
 		else
 			echo "configure med fast-start" "enable" >> "$LLDPD_CONF"
 		fi



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:26 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:26 -0400
Subject: [openwrt/openwrt]  lldpd: spell fixes
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15102.1710147516.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1909b6f8835c1381f859c85394defe993e016edd

commit 1909b6f8835c1381f859c85394defe993e016edd
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 15:59:27 2024 +0100

    lldpd: spell fixes
    
    Supplementary fix for PR #14193
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index d4642238a3..c6d7b82c2c 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -261,7 +261,7 @@ start_service() {
 
 	if [ "$CONFIG_LLDPD_WITH_FDP" == "y" ] && [ $enable_fdp -gt 0 ]; then
 		if [ $force_fdp -gt 0 ]; then
-			# FDP enbled and forced
+			# FDP enabled and forced
 			procd_append_param command '-ff'
 		else
 			# FDP enabled
@@ -281,10 +281,10 @@ start_service() {
 
 	if [ "$CONFIG_LLDPD_WITH_EDP" == "y" ] && [ $enable_edp -gt 0 ]; then
 		if [ $force_edp -gt 0 ]; then
-			# EDP enbled and forced
+			# EDP enabled and forced
 			procd_append_param command '-ee'
 		else
-			# EDP enbled
+			# EDP enabled
 			procd_append_param command '-e'
 		fi
 	fi



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:29 -0400
Subject: [openwrt/openwrt]  lldpd: remove unneeded quotes
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15105.1710147516.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/82ec853284e44fb85ad702879d18857bd566c7db

commit 82ec853284e44fb85ad702879d18857bd566c7db
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 21:31:29 2024 +0100

    lldpd: remove unneeded quotes
    
    from commit 3ce909914a12647bec52bcee0a162dd6d158a4f6
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 47354f3c4e..6af15691e7 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -150,7 +150,7 @@ write_lldpd_conf()
 		if [ $lldpmed_fast_start_tx_interval -gt 0 ]; then
 			echo "configure med fast-start tx-interval $lldpmed_fast_start_tx_interval" >> "$LLDPD_CONF"
 		else
-			echo "configure med fast-start" "enable" >> "$LLDPD_CONF"
+			echo "configure med fast-start enable" >> "$LLDPD_CONF"
 		fi
 	fi
 	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type" "\"$lldp_agenttype\"" >> "$LLDPD_CONF"



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:34 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:34 -0400
Subject: [openwrt/openwrt]  lldpd: refactor out ifaces derivation;
 reuse function
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15106.1710147516.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/228d4e7f1b759c11897043dc73ef3c576bc13f7f

commit 228d4e7f1b759c11897043dc73ef3c576bc13f7f
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 22:05:11 2024 +0100

    lldpd: refactor out ifaces derivation; reuse function
    
    from commit 909f0630663d7ae1471c76154516e3299992a150
    
    Now pass two params to get_config_cid_ifaces() for:
    
    cid_interface
    interface
    
    Each of which is a CSV of interfaces.
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 19 ++++++-------------
 1 file changed, 6 insertions(+), 13 deletions(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 4841027432..e13128e2d6 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -76,7 +76,7 @@ get_config_restart_hash() {
 
 get_config_cid_ifaces() {
 	local _ifaces
-	config_get _ifaces 'config' 'cid_interface'
+	config_get _ifaces 'config' "$2"
 
 	local _iface _ifnames=""
 	for _iface in $_ifaces; do
@@ -99,16 +99,8 @@ write_lldpd_conf()
 	local lldp_hostname
 	config_get lldp_hostname 'config' 'lldp_hostname' "$(cat /proc/sys/kernel/hostname)"
 
-	local ifaces
-	config_get ifaces 'config' 'interface'
-
-	local iface ifnames=""
-	for iface in $ifaces; do
-		local ifname=""
-		if network_get_device ifname "$iface" || [ -e "/sys/class/net/$iface" ]; then
-			append ifnames "${ifname:-$iface}" ","
-		fi
-	done
+	local ifnames
+	get_config_cid_ifaces ifnames "interface"
 
 	local lldp_mgmt_ip
 	config_get lldp_mgmt_ip 'config' 'lldp_mgmt_ip'
@@ -141,7 +133,7 @@ write_lldpd_conf()
 
 	# Clear out the config file first
 	echo -n > "$LLDPD_CONF"
-	[ -n "$ifnames" ] && echo "configure system interface pattern" "$ifnames" >> "$LLDPD_CONF"
+	[ -n "$ifnames" ] && echo "configure system interface pattern $ifnames" >> "$LLDPD_CONF"
 	[ -n "$lldp_description" ] && echo "configure system description" "\"$lldp_description\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_hostname" ] && echo "configure system hostname" "\"$lldp_hostname\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_mgmt_ip" ] && echo "configure system ip management pattern" "\"$lldp_mgmt_ip\"" >> "$LLDPD_CONF"
@@ -299,7 +291,8 @@ start_service() {
 
     # ChassisID interfaces
 	local ifnames
-	get_config_cid_ifaces ifnames
+	get_config_cid_ifaces ifnames "cid_interface"
+
 	[ -n "$ifnames" ] && procd_append_param command -C "$ifnames"
 
     # Overwrite default configuration locations processed by lldpcli at start



From lede-commits at lists.infradead.org  Mon Mar 11 01:58:35 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 04:58:35 -0400
Subject: [openwrt/openwrt]  lldpd: fix error "sh: XXXms: bad number"
In-Reply-To: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
References: <171014750529.1356115.8193172294135608048@git-01.infra.openwrt.org>
Message-ID: <mailman.15107.1710148204.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/79ee4cb0397eb9eae34369e33d66b5a1d837a652

commit 79ee4cb0397eb9eae34369e33d66b5a1d837a652
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 23:37:13 2024 +0100

    lldpd: fix error "sh: XXXms: bad number"
    
    from commit 3ce909914a12647bec52bcee0a162dd6d158a4f6
    
    The lldpd man page says that "configure lldp tx-interval" can
    specify an interval value in milliseconds by appending a "ms" suffix to
    the figure. Thus mandating string handling, and not integer comparison.
    
    Tested on 22.03.5
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index e13128e2d6..97c572d347 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -148,7 +148,7 @@ write_lldpd_conf()
 	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type $lldp_agenttype" >> "$LLDPD_CONF"
 	[ -n "$lldp_portidsubtype" ] && echo "configure lldp portidsubtype $lldp_portidsubtype" >> "$LLDPD_CONF"
 	[ -n "$lldp_platform" ] && echo "configure system platform" "\"$lldp_platform\"" >> "$LLDPD_CONF"
-	[ $lldp_tx_interval -gt 0 ] && echo "configure lldp tx-interval $lldp_tx_interval" >> "$LLDPD_CONF"
+	[ -n $lldp_tx_interval ] && echo "configure lldp tx-interval $lldp_tx_interval" >> "$LLDPD_CONF"
 	[ $lldp_tx_hold -gt 0 ] && echo "configure lldp tx-hold $lldp_tx_hold" >> "$LLDPD_CONF"
 
 	# Since lldpd's sysconfdir is /tmp, we'll symlink /etc/lldpd.d to /tmp/$LLDPD_CONFS_DIR



From lede-commits at lists.infradead.org  Mon Mar 11 10:25:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 13:25:25 -0400
Subject: [openwrt/openwrt]  lldpd: Implement location parameter
In-Reply-To: <171017792578.2558171.16584027257888361197@git-01.infra.openwrt.org>
References: <171017792578.2558171.16584027257888361197@git-01.infra.openwrt.org>
Message-ID: <mailman.15284.1710177932.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/53252eeb3b6177b77e23235436b04818a88eafe0

commit 53252eeb3b6177b77e23235436b04818a88eafe0
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 19:15:55 2024 +0100

    lldpd: Implement location parameter
    
    Previously only partially implemented. After commit
    5007f488bb5e1b556052ef246bd3822fed8d09d2 lldp_location was never removed
    
    Now, add the value of lldp_location to the generated config.
    
    The location param has a few syntaxes, so the config acquires the first
    usage from the man page: 'address country EU'
    
    Supplementary fix for PR #14193 (this param was included in the original
    PR #13018 but the lldp_location fixes were absent from PR #14193).
    
    Tested on 22.03.5, 22.03.6
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.config |  2 +-
 package/network/services/lldpd/files/lldpd.init   | 17 +++++++++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/package/network/services/lldpd/files/lldpd.config b/package/network/services/lldpd/files/lldpd.config
index 5e7c51ba7e..fa9fe2b4f8 100644
--- a/package/network/services/lldpd/files/lldpd.config
+++ b/package/network/services/lldpd/files/lldpd.config
@@ -7,7 +7,7 @@ config lldpd config
 	option agentxsocket /var/run/agentx.sock
 
 	option lldp_class 4
-	option lldp_location "2:FR:6:Commercial Rd:3:Roseville:19:4"
+	option lldp_location "address country EU"
 
 	# if empty, the distribution description is sent
 	#option lldp_description "OpenWrt System"
diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 97c572d347..498c9e615e 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -114,6 +114,10 @@ write_lldpd_conf()
 
 		local lldpmed_fast_start_tx_interval
 		config_get lldpmed_fast_start_tx_interval 'config' 'lldpmed_fast_start_tx_interval' 0
+
+		local lldp_location
+		config_get lldp_location 'config' 'lldp_location'
+
 	fi
 
 	local lldp_agenttype
@@ -145,8 +149,15 @@ write_lldpd_conf()
 			echo "configure med fast-start enable" >> "$LLDPD_CONF"
 		fi
 	fi
-	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type $lldp_agenttype" >> "$LLDPD_CONF"
-	[ -n "$lldp_portidsubtype" ] && echo "configure lldp portidsubtype $lldp_portidsubtype" >> "$LLDPD_CONF"
+	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ]; then
+		# other 'configure med xxx' statements go here
+
+		[ -n "$lldp_location" ] && echo "configure med location" "$lldp_location" >> "$LLDPD_CONF"
+
+	fi
+
+	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type" "\"$lldp_agenttype\"" >> "$LLDPD_CONF"
+	[ -n "$lldp_portidsubtype" ] && echo "configure lldp portidsubtype" "\"$lldp_portidsubtype\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_platform" ] && echo "configure system platform" "\"$lldp_platform\"" >> "$LLDPD_CONF"
 	[ -n $lldp_tx_interval ] && echo "configure lldp tx-interval $lldp_tx_interval" >> "$LLDPD_CONF"
 	[ $lldp_tx_hold -gt 0 ] && echo "configure lldp tx-hold $lldp_tx_hold" >> "$LLDPD_CONF"
@@ -170,7 +181,6 @@ start_service() {
 	local enable_edp
 	local force_edp
 	local lldp_class
-	local lldp_location
 	local lldp_no_version
 	local lldpmed_no_inventory
 	local readonly_mode
@@ -199,7 +209,6 @@ start_service() {
 		config_get_bool force_edp 'config' 'force_edp' 0
 	fi
 	config_get lldp_class 'config' 'lldp_class'
-	config_get lldp_location 'config' 'lldp_location'
 	config_get_bool lldp_no_version 'config' 'lldp_no_version' 0
 	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ]; then
 		config_get_bool lldpmed_no_inventory 'config' 'lldpmed_no_inventory' 0



From lede-commits at lists.infradead.org  Mon Mar 11 12:14:46 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:14:46 -0400
Subject: [openwrt/openwrt]  mediatek: mt7622: linksys-e8450: set driving
 strength for SPI-NAND
In-Reply-To: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
References: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
Message-ID: <mailman.15299.1710184490.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/45a2109353fa18701b65aefe2323ec06391da543

commit 45a2109353fa18701b65aefe2323ec06391da543
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 10 23:14:33 2024 +0000

    mediatek: mt7622: linksys-e8450: set driving strength for SPI-NAND
    
    Set 12mA driving strength for SPI-NAND pins like the stock firmware's
    bootloader does as well.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi b/target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi
index be216d972c..bd686073cb 100644
--- a/target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi
+++ b/target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi
@@ -1,8 +1,9 @@
 // SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 
 /dts-v1/;
-#include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/mt65xx.h>
 
 #include "mt7622.dtsi"
 #include "mt6380.dtsi"
@@ -271,6 +272,11 @@
 			function = "flash";
 			groups = "snfi";
 		};
+
+		conf {
+			groups = "snfi";
+			drive-strength = <MTK_DRIVE_12mA>;
+		};
 	};
 
 	spic0_pins: spic0-pins {



From lede-commits at lists.infradead.org  Mon Mar 11 12:14:48 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:14:48 -0400
Subject: [openwrt/openwrt]  mediatek: mt7988: fix clk for 2nd PCIe port
In-Reply-To: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
References: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
Message-ID: <mailman.15300.1710184491.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ecc9d0195b2411bd38c5deae38f255026c20c970

commit ecc9d0195b2411bd38c5deae38f255026c20c970
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Mon Mar 11 18:32:38 2024 +0000

    mediatek: mt7988: fix clk for 2nd PCIe port
    
    Due to what seems to be an undocumented oddity in MediaTek's MT7988
    SoC design the CLK_INFRA_PCIE_PERI_26M_CK_P2 clock requires
    CLK_INFRA_PCIE_PERI_26M_CK_P3 to be enabled.
    
    This currently leads to PCIe port 2 not working in Linux.
    
    Reflect the apparent relationship in the clk driver to make sure PCIe
    port 2 of the MT7988 SoC works.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...k-mt7988-infracfg-fix-clocks-for-2nd-PCIe.patch | 31 ++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/target/linux/mediatek/patches-6.1/252-clk-mediatek-mt7988-infracfg-fix-clocks-for-2nd-PCIe.patch b/target/linux/mediatek/patches-6.1/252-clk-mediatek-mt7988-infracfg-fix-clocks-for-2nd-PCIe.patch
new file mode 100644
index 0000000000..c4760b9eff
--- /dev/null
+++ b/target/linux/mediatek/patches-6.1/252-clk-mediatek-mt7988-infracfg-fix-clocks-for-2nd-PCIe.patch
@@ -0,0 +1,31 @@
+From c202f510bbaa34ab5d65a69a61e0e72761374b17 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Mon, 11 Mar 2024 17:14:19 +0000
+Subject: [PATCH] clk: mediatek: mt7988-infracfg: fix clocks for 2nd PCIe port
+
+Due to what seems to be an undocumented oddity in MediaTek's MT7988
+SoC design the CLK_INFRA_PCIE_PERI_26M_CK_P2 clock requires
+CLK_INFRA_PCIE_PERI_26M_CK_P3 to be enabled.
+
+This currently leads to PCIe port 2 not working in Linux.
+
+Reflect the apparent relationship in the clk driver to make sure PCIe
+port 2 of the MT7988 SoC works.
+
+Suggested-by: Sam Shih <sam.shih at mediatek.com>
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/clk/mediatek/clk-mt7988-infracfg.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/clk/mediatek/clk-mt7988-infracfg.c
++++ b/drivers/clk/mediatek/clk-mt7988-infracfg.c
+@@ -156,7 +156,7 @@ static const struct mtk_gate infra_clks[
+ 	GATE_INFRA0(CLK_INFRA_PCIE_PERI_26M_CK_P1, "infra_pcie_peri_ck_26m_ck_p1",
+ 		    "csw_infra_f26m_sel", 8),
+ 	GATE_INFRA0(CLK_INFRA_PCIE_PERI_26M_CK_P2, "infra_pcie_peri_ck_26m_ck_p2",
+-		    "csw_infra_f26m_sel", 9),
++		    "infra_pcie_peri_ck_26m_ck_p3", 9),
+ 	GATE_INFRA0(CLK_INFRA_PCIE_PERI_26M_CK_P3, "infra_pcie_peri_ck_26m_ck_p3",
+ 		    "csw_infra_f26m_sel", 10),
+ 	/* INFRA1 */



From lede-commits at lists.infradead.org  Mon Mar 11 12:14:47 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:14:47 -0400
Subject: [openwrt/openwrt]  kernel: mtk_eth_soc: release MAC_MCR_FORCE_LINK
 only when MAC is up
In-Reply-To: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
References: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
Message-ID: <mailman.15301.1710184493.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/faa5f17fe2d45a95049b202c2de0aeeb0c9a64db

commit faa5f17fe2d45a95049b202c2de0aeeb0c9a64db
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Mon Mar 11 18:26:55 2024 +0000

    kernel: mtk_eth_soc: release MAC_MCR_FORCE_LINK only when MAC is up
    
    Clearing bit MAC_MCR_FORCE_LINK which forces the link down too early
    can result in MAC ending up in a broken/blocked state.
    
    Fix this by handling this bit in the .mac_link_up and .mac_link_down
    calls instead of in .mac_finish.
    
    Suggested-by: Mason-cw Chang <Mason-cw.Chang at mediatek.com>
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...k-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch | 50 ++++++++++++++++++++++
 ...t-mtk_eth_soc-add-paths-and-SerDes-modes-.patch | 41 +++++++++---------
 2 files changed, 71 insertions(+), 20 deletions(-)

diff --git a/target/linux/generic/pending-6.1/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch b/target/linux/generic/pending-6.1/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
new file mode 100644
index 0000000000..2f7d29b84d
--- /dev/null
+++ b/target/linux/generic/pending-6.1/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
@@ -0,0 +1,50 @@
+From ef5976ae4e117fae9a61bb3c0f8319a917a425ea Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Mon, 11 Mar 2024 17:43:28 +0000
+Subject: [PATCH] net: mediatek: mtk_eth_soc: release MAC_MCR_FORCE_LINK only when MAC is up
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Clearing bit MAC_MCR_FORCE_LINK which forces the link down too early
+can result in MAC ending up in a broken/blocked state.
+
+Fix this by handling this bit in the .mac_link_up and .mac_link_down
+calls instead of in .mac_finish.
+
+Fixes: b8fc9f30821ec ("net: ethernet: mediatek: Add basic PHYLINK support")
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+@@ -662,8 +662,7 @@ static int mtk_mac_finish(struct phylink
+ 	mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ 	mcr_new = mcr_cur;
+ 	mcr_new |= MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
+-		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_FORCE_LINK |
+-		   MAC_MCR_RX_FIFO_CLR_DIS;
++		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_RX_FIFO_CLR_DIS;
+ 
+ 	/* Only update control register when needed! */
+ 	if (mcr_new != mcr_cur)
+@@ -679,7 +678,7 @@ static void mtk_mac_link_down(struct phy
+ 					   phylink_config);
+ 	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ 
+-	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
++	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
+ 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ }
+ 
+@@ -788,7 +787,7 @@ static void mtk_mac_link_up(struct phyli
+ 	if (rx_pause)
+ 		mcr |= MAC_MCR_FORCE_RX_FC;
+ 
+-	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN;
++	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK;
+ 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ }
+ 
diff --git a/target/linux/generic/pending-6.1/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch b/target/linux/generic/pending-6.1/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
index afe561ab31..2b379c9158 100644
--- a/target/linux/generic/pending-6.1/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
+++ b/target/linux/generic/pending-6.1/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
@@ -1,4 +1,4 @@
-From 91bda2f441f9e37273922028ffc48ce8e91bf5bd Mon Sep 17 00:00:00 2001
+From d5e337e7aecc2e1cc9e96768062610adb95f8f72 Mon Sep 17 00:00:00 2001
 From: Daniel Golle <daniel at makrotopia.org>
 Date: Tue, 12 Dec 2023 03:51:14 +0000
 Subject: [PATCH] net: ethernet: mtk_eth_soc: add paths and SerDes modes for
@@ -19,9 +19,9 @@ modes.
 Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 ---
  drivers/net/ethernet/mediatek/mtk_eth_path.c | 122 +++++++-
- drivers/net/ethernet/mediatek/mtk_eth_soc.c  | 291 +++++++++++++++++--
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c  | 292 +++++++++++++++++--
  drivers/net/ethernet/mediatek/mtk_eth_soc.h  | 107 ++++++-
- 3 files changed, 469 insertions(+), 51 deletions(-)
+ 3 files changed, 470 insertions(+), 51 deletions(-)
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_path.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_path.c
@@ -390,24 +390,25 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	/* Enable SGMII */
  	if (interface == PHY_INTERFACE_MODE_SGMII ||
  	    phy_interface_mode_is_8023z(interface))
-@@ -677,10 +762,13 @@ static void mtk_mac_link_down(struct phy
+@@ -676,10 +761,14 @@ static void mtk_mac_link_down(struct phy
  {
  	struct mtk_mac *mac = container_of(config, struct mtk_mac,
  					   phylink_config);
 -	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
  
--	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
+-	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
 -	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
 +	if (!mtk_interface_mode_is_xgmii(interface)) {
-+		mtk_m32(mac->hw, MAC_MCR_TX_EN | MAC_MCR_RX_EN, 0, MTK_MAC_MCR(mac->id));
-+		mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, MTK_XGMAC_STS(mac->id));
-+	} else if (mac->id != MTK_GMAC1_ID) {
++		mtk_m32(mac->hw, MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK, 0, MTK_MAC_MCR(mac->id));
++		if (mtk_is_netsys_v3_or_greater(mac->hw))
++			mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, MTK_XGMAC_STS(mac->id));
++	} else if (mtk_is_netsys_v3_or_greater(mac->hw) && mac->id != MTK_GMAC1_ID) {
 +		mtk_m32(mac->hw, XMAC_MCR_TRX_DISABLE, XMAC_MCR_TRX_DISABLE, MTK_XMAC_MCR(mac->id));
 +	}
  }
  
  static void mtk_set_queue_speed(struct mtk_eth *eth, unsigned int idx,
-@@ -752,13 +840,11 @@ static void mtk_set_queue_speed(struct m
+@@ -751,13 +840,11 @@ static void mtk_set_queue_speed(struct m
  	mtk_w32(eth, val, soc->reg_map->qdma.qtx_sch + ofs);
  }
  
@@ -425,7 +426,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	u32 mcr;
  
  	mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
-@@ -792,9 +878,63 @@ static void mtk_mac_link_up(struct phyli
+@@ -791,9 +878,63 @@ static void mtk_mac_link_up(struct phyli
  	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
  }
  
@@ -470,7 +471,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	struct mtk_mac *mac = container_of(config, struct mtk_mac,
 +					   phylink_config);
 +
-+	if (mtk_interface_mode_is_xgmii(interface))
++	if (mtk_is_netsys_v3_or_greater(mac->hw) && mtk_interface_mode_is_xgmii(interface))
 +		mtk_xgdm_mac_link_up(mac, phy, mode, interface, speed, duplex,
 +				     tx_pause, rx_pause);
 +	else
@@ -489,7 +490,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	.mac_finish = mtk_mac_finish,
  	.mac_link_down = mtk_mac_link_down,
  	.mac_link_up = mtk_mac_link_up,
-@@ -3373,6 +3513,9 @@ static int mtk_open(struct net_device *d
+@@ -3372,6 +3513,9 @@ static int mtk_open(struct net_device *d
  	struct mtk_eth *eth = mac->hw;
  	int i, err;
  
@@ -499,7 +500,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0);
  	if (err) {
  		netdev_err(dev, "%s: could not attach PHY: %d\n", __func__,
-@@ -3501,6 +3644,9 @@ static int mtk_stop(struct net_device *d
+@@ -3500,6 +3644,9 @@ static int mtk_stop(struct net_device *d
  	for (i = 0; i < ARRAY_SIZE(eth->ppe); i++)
  		mtk_ppe_stop(eth->ppe[i]);
  
@@ -509,7 +510,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return 0;
  }
  
-@@ -4498,6 +4644,7 @@ static const struct net_device_ops mtk_n
+@@ -4497,6 +4644,7 @@ static const struct net_device_ops mtk_n
  static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
  {
  	const __be32 *_id = of_get_property(np, "reg", NULL);
@@ -517,7 +518,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	phy_interface_t phy_mode;
  	struct phylink *phylink;
  	struct mtk_mac *mac;
-@@ -4533,16 +4680,41 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4532,16 +4680,41 @@ static int mtk_add_mac(struct mtk_eth *e
  	mac->id = id;
  	mac->hw = eth;
  	mac->of_node = np;
@@ -567,7 +568,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}
  
  	memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip));
-@@ -4616,8 +4788,21 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4615,8 +4788,21 @@ static int mtk_add_mac(struct mtk_eth *e
  		phy_interface_zero(mac->phylink_config.supported_interfaces);
  		__set_bit(PHY_INTERFACE_MODE_INTERNAL,
  			  mac->phylink_config.supported_interfaces);
@@ -589,7 +590,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	phylink = phylink_create(&mac->phylink_config,
  				 of_fwnode_handle(mac->of_node),
  				 phy_mode, &mtk_phylink_ops);
-@@ -4662,6 +4847,26 @@ free_netdev:
+@@ -4661,6 +4847,26 @@ free_netdev:
  	return err;
  }
  
@@ -616,7 +617,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev)
  {
  	struct net_device *dev, *tmp;
-@@ -4805,7 +5010,8 @@ static int mtk_probe(struct platform_dev
+@@ -4804,7 +5010,8 @@ static int mtk_probe(struct platform_dev
  			regmap_write(cci, 0, 3);
  	}
  
@@ -626,7 +627,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		err = mtk_sgmii_init(eth);
  
  		if (err)
-@@ -4916,6 +5122,24 @@ static int mtk_probe(struct platform_dev
+@@ -4915,6 +5122,24 @@ static int mtk_probe(struct platform_dev
  		}
  	}
  
@@ -651,7 +652,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) {
  		err = devm_request_irq(eth->dev, eth->irq[0],
  				       mtk_handle_irq, 0,
-@@ -5018,6 +5242,11 @@ static int mtk_remove(struct platform_de
+@@ -5017,6 +5242,11 @@ static int mtk_remove(struct platform_de
  		mtk_stop(eth->netdev[i]);
  		mac = netdev_priv(eth->netdev[i]);
  		phylink_disconnect_phy(mac->phylink);



From lede-commits at lists.infradead.org  Mon Mar 11 12:14:44 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:14:44 -0400
Subject: [openwrt/openwrt]  uboot-mediatek: fix patch order
In-Reply-To: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
References: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
Message-ID: <mailman.15302.1710184493.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2302a7c5ad9c894d0530b7700409b2f4ea4bcc91

commit 2302a7c5ad9c894d0530b7700409b2f4ea4bcc91
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 10 13:29:14 2024 +0000

    uboot-mediatek: fix patch order
    
    Make sure patch sequence number is unique by moving patch
    440-add-jdcloud_re-cp-03.patch -> 441-add-jdcloud_re-cp-03.patch
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../{440-add-jdcloud_re-cp-03.patch => 441-add-jdcloud_re-cp-03.patch}    | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/package/boot/uboot-mediatek/patches/440-add-jdcloud_re-cp-03.patch b/package/boot/uboot-mediatek/patches/441-add-jdcloud_re-cp-03.patch
similarity index 100%
rename from package/boot/uboot-mediatek/patches/440-add-jdcloud_re-cp-03.patch
rename to package/boot/uboot-mediatek/patches/441-add-jdcloud_re-cp-03.patch



From lede-commits at lists.infradead.org  Mon Mar 11 12:14:45 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:14:45 -0400
Subject: [openwrt/openwrt]  uboot-mediatek: fix typo patch filename
In-Reply-To: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
References: <171018448462.2796006.10312258242853413554@git-01.infra.openwrt.org>
Message-ID: <mailman.15303.1710184494.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5f230cd0b1f141def141da1f70440a7428b5af55

commit 5f230cd0b1f141def141da1f70440a7428b5af55
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 10 13:49:45 2024 +0000

    uboot-mediatek: fix typo patch filename
    
    311-mt7986-select-roodisk.patch -> 311-mt7986-select-rootdisk.patch
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../{311-mt7986-select-roodisk.patch => 311-mt7986-select-rootdisk.patch} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/package/boot/uboot-mediatek/patches/311-mt7986-select-roodisk.patch b/package/boot/uboot-mediatek/patches/311-mt7986-select-rootdisk.patch
similarity index 100%
rename from package/boot/uboot-mediatek/patches/311-mt7986-select-roodisk.patch
rename to package/boot/uboot-mediatek/patches/311-mt7986-select-rootdisk.patch



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:38 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:38 -0400
Subject: [openwrt/openwrt]  kernel: add define for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15304.1710184663.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/71360660e68bbc5bdc9cde89fd66ba5104e59106

commit 71360660e68bbc5bdc9cde89fd66ba5104e59106
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Thu Jan 4 02:14:53 2024 +0800

    kernel: add define for kernel 6.6
    
    Add define for kernel 6.6.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 include/kernel-6.6 | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/kernel-6.6 b/include/kernel-6.6
new file mode 100644
index 0000000000..53132d2ae5
--- /dev/null
+++ b/include/kernel-6.6
@@ -0,0 +1,2 @@
+LINUX_VERSION-6.6 = .20
+LINUX_KERNEL_HASH-6.6.20 = e2f6c7f39b304248193370f8c5755553ab73ad5672e92dae994a344084d8dd22



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:37 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:37 -0400
Subject: [openwrt/openwrt]  tools: add util-linux
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15307.1710184666.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/53e3851646f872a08010709c6503d4bc838b5a0b

commit 53e3851646f872a08010709c6503d4bc838b5a0b
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Tue Jan 9 23:20:18 2024 +0800

    tools: add util-linux
    
    since kernel 6.4, commit bca2f3a9406b ("efi/zboot: Add BSS padding
    before compression") introduces the use of hexdump to padding the
    EFI kernel binary before compression.
    
    util-linux which containing hexdump should then be compiled as a host
    tool to guarantee not breaking the kernel build process.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 tools/Makefile            |   2 +
 tools/util-linux/Makefile | 132 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 134 insertions(+)

diff --git a/tools/Makefile b/tools/Makefile
index bc169d7a95..7607e84481 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -66,6 +66,7 @@ tools-y += pkgconf
 tools-y += quilt
 tools-y += squashfs4
 tools-y += sstrip
+tools-y += util-linux
 tools-y += zip
 tools-y += zlib
 tools-y += zstd
@@ -128,6 +129,7 @@ $(curdir)/quilt/compile := $(curdir)/autoconf/compile $(curdir)/findutils/compil
 $(curdir)/sdcc/compile := $(curdir)/bison/compile
 $(curdir)/squashfs3-lzma/compile := $(curdir)/lzma-old/compile
 $(curdir)/squashfs4/compile := $(curdir)/xz/compile $(curdir)/zlib/compile
+$(curdir)/util-linux/compile := $(curdir)/bison/compile
 $(curdir)/zstd/compile := $(curdir)/meson/compile
 
 ifneq ($(HOST_OS),Linux)
diff --git a/tools/util-linux/Makefile b/tools/util-linux/Makefile
new file mode 100644
index 0000000000..acd819e38b
--- /dev/null
+++ b/tools/util-linux/Makefile
@@ -0,0 +1,132 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=util-linux
+PKG_VERSION:=2.39.3
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@KERNEL/linux/utils/$(PKG_NAME)/v2.39
+PKG_HASH:=7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f
+PKG_CPE_ID:=cpe:/a:kernel:util-linux
+
+HOST_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/host-build.mk
+
+HOST_CONFIGURE_ARGS += \
+	--disable-poman \
+	--disable-nls \
+	--disable-asciidoc \
+	--disable-poman \
+	--disable-libuuid \
+	--disable-libblkid \
+	--disable-libmount \
+	--disable-libsmartcols \
+	--disable-libfdisk \
+	--disable-fdisks \
+	--disable-mount \
+	--disable-losetup \
+	--disable-zramctl \
+	--disable-fsck \
+	--disable-partx \
+	--disable-uuidd \
+	--disable-uuidgen \
+	--disable-blkid \
+	--disable-wipefs \
+	--disable-mountpoint \
+	--disable-fallocate \
+	--disable-unshare \
+	--disable-nsenter \
+	--disable-setpriv \
+	--disable-hardlink \
+	--disable-eject \
+	--disable-agetty \
+	--disable-cramfs \
+	--disable-bfs \
+	--disable-minix \
+	--disable-hwclock \
+	--disable-mkfs \
+	--disable-fstrim \
+	--disable-swapon \
+	--disable-lscpu \
+	--disable-lsfd \
+	--disable-lslogins \
+	--disable-wdctl \
+	--disable-cal \
+	--disable-logger \
+	--disable-whereis \
+	--disable-pipesz \
+	--disable-waitpid \
+	--disable-switch_root \
+	--disable-pivot_root \
+	--disable-lsmem \
+	--disable-chmem \
+	--disable-ipcmk \
+	--disable-ipcrm \
+	--disable-ipcs \
+	--disable-irqtop \
+	--disable-lsirq \
+	--disable-lsns \
+	--disable-rfkill \
+	--disable-scriptutils \
+	--disable-tunelp \
+	--disable-kill \
+	--disable-last \
+	--disable-utmpdump \
+	--disable-line \
+	--disable-mesg \
+	--disable-raw \
+	--disable-rename \
+	--disable-vipw \
+	--disable-newgrp \
+	--disable-chfn-chsh \
+	--disable-login \
+	--disable-nologin \
+	--disable-sulogin \
+	--disable-su \
+	--disable-runuser \
+	--disable-ul \
+	--disable-more \
+	--disable-pg \
+	--disable-setterm \
+	--disable-schedutils \
+	--disable-wall \
+	--disable-write \
+	--disable-bash-completion \
+	--disable-pylibmount \
+	--disable-pg-bell \
+	--without-util \
+	--without-selinux \
+	--without-audit \
+	--without-udev \
+	--without-ncursesw \
+	--without-ncurses \
+	--without-slang \
+	--without-tinfo \
+	--without-readline \
+	--without-utempter \
+	--without-cap-ng \
+	--without-libz \
+	--without-libmagic \
+	--without-user \
+	--without-btrfs \
+	--without-systemd \
+	--without-smack \
+	--without-econf \
+	--without-python \
+	--without-cryptsetup
+
+define Host/Install
+	$(INSTALL_BIN) $(HOST_BUILD_DIR)/hexdump $(STAGING_DIR_HOST)/bin/
+endef
+
+define Host/Uninstall
+	rm -f $(STAGING_DIR_HOST)/bin/hexdump
+endef
+
+$(eval $(call HostBuild))



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:42 -0400
Subject: [openwrt/openwrt]  generic: 6.6: manually refresh backport patches
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15308.1710184669.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a76397cd47f838907a3087341b0e1644c86bc230

commit a76397cd47f838907a3087341b0e1644c86bc230
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Thu Jan 4 01:58:18 2024 +0800

    generic: 6.6: manually refresh backport patches
    
    Refresh backport patches that still needs to be merged for kernel 6.6.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 ...t-phy-aquantia-move-to-separate-directory.patch | 92 ++++++++++++++++++++--
 ...e-at803x-PHY-driver-to-dedicated-director.patch | 16 ++--
 ...com-detach-qca808x-PHY-driver-from-at803x.patch |  4 +-
 ...end-PHY-package-API-to-support-multiple-g.patch | 10 +--
 ...-support-for-scanning-PHY-in-PHY-packages.patch |  4 +-
 ...t-phy-add-devm-of_phy_package_join-helper.patch |  4 +-
 ...t-mediatek-fix-ppe-flow-accounting-for-L2.patch | 31 ++++----
 ...t-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch |  8 +-
 ...y-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch | 10 +--
 ...1-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch | 10 +--
 ...2-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch |  4 +-
 ...stmmac-move-TX-timer-arm-after-DMA-enable.patch | 32 ++++----
 ...-omnia-Add-support-for-enabling-disabling.patch |  6 +-
 ...vmem-Create-a-header-for-internal-sharing.patch |  4 +-
 14 files changed, 160 insertions(+), 75 deletions(-)

diff --git a/target/linux/generic/backport-6.6/702-01-v6.7-net-phy-aquantia-move-to-separate-directory.patch b/target/linux/generic/backport-6.6/702-01-v6.7-net-phy-aquantia-move-to-separate-directory.patch
index 0cad6c53d4..be4d4ccad9 100644
--- a/target/linux/generic/backport-6.6/702-01-v6.7-net-phy-aquantia-move-to-separate-directory.patch
+++ b/target/linux/generic/backport-6.6/702-01-v6.7-net-phy-aquantia-move-to-separate-directory.patch
@@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -90,10 +90,7 @@ config ADIN1100_PHY
+@@ -96,10 +96,7 @@ config ADIN1100_PHY
  	  Currently supports the:
  	  - ADIN1100 - Robust,Industrial, Low Power 10BASE-T1L Ethernet PHY
  
@@ -40,7 +40,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	tristate "Asix PHYs"
 --- a/drivers/net/phy/Makefile
 +++ b/drivers/net/phy/Makefile
-@@ -33,11 +33,7 @@ obj-y				+= $(sfp-obj-y) $(sfp-obj-m)
+@@ -35,11 +35,7 @@ obj-y				+= $(sfp-obj-y) $(sfp-obj-m)
  obj-$(CONFIG_ADIN_PHY)		+= adin.o
  obj-$(CONFIG_ADIN1100_PHY)	+= adin1100.o
  obj-$(CONFIG_AMD_PHY)		+= amd.o
@@ -323,7 +323,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 +	.config = aqr_hwmon_temp_config,
 +};
 +
-+static const struct hwmon_channel_info *aqr_hwmon_info[] = {
++static const struct hwmon_channel_info * const aqr_hwmon_info[] = {
 +	&aqr_hwmon_chip,
 +	&aqr_hwmon_temp,
 +	NULL,
@@ -363,7 +363,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 +#endif
 --- /dev/null
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -0,0 +1,842 @@
+@@ -0,0 +1,882 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Driver for Aquantia PHY
@@ -388,6 +388,8 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 +#define PHY_ID_AQR107	0x03a1b4e0
 +#define PHY_ID_AQCS109	0x03a1b5c2
 +#define PHY_ID_AQR405	0x03a1b4b0
++#define PHY_ID_AQR112	0x03a1b662
++#define PHY_ID_AQR412	0x03a1b712
 +#define PHY_ID_AQR113C	0x31c31c12
 +
 +#define MDIO_PHYXS_VEND_IF_STATUS		0xe812
@@ -1167,6 +1169,42 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 +	.read_status	= aqr_read_status,
 +},
 +{
++	PHY_ID_MATCH_MODEL(PHY_ID_AQR112),
++	.name		= "Aquantia AQR112",
++	.probe		= aqr107_probe,
++	.config_aneg    = aqr_config_aneg,
++	.config_intr	= aqr_config_intr,
++	.handle_interrupt = aqr_handle_interrupt,
++	.get_tunable    = aqr107_get_tunable,
++	.set_tunable    = aqr107_set_tunable,
++	.suspend	= aqr107_suspend,
++	.resume		= aqr107_resume,
++	.read_status	= aqr107_read_status,
++	.get_rate_matching = aqr107_get_rate_matching,
++	.get_sset_count = aqr107_get_sset_count,
++	.get_strings	= aqr107_get_strings,
++	.get_stats	= aqr107_get_stats,
++	.link_change_notify = aqr107_link_change_notify,
++},
++{
++	PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
++	.name		= "Aquantia AQR412",
++	.probe		= aqr107_probe,
++	.config_aneg    = aqr_config_aneg,
++	.config_intr	= aqr_config_intr,
++	.handle_interrupt = aqr_handle_interrupt,
++	.get_tunable    = aqr107_get_tunable,
++	.set_tunable    = aqr107_set_tunable,
++	.suspend	= aqr107_suspend,
++	.resume		= aqr107_resume,
++	.read_status	= aqr107_read_status,
++	.get_rate_matching = aqr107_get_rate_matching,
++	.get_sset_count = aqr107_get_sset_count,
++	.get_strings	= aqr107_get_strings,
++	.get_stats	= aqr107_get_stats,
++	.link_change_notify = aqr107_link_change_notify,
++},
++{
 +	PHY_ID_MATCH_MODEL(PHY_ID_AQR113C),
 +	.name           = "Aquantia AQR113C",
 +	.probe          = aqr107_probe,
@@ -1197,6 +1235,8 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQCS109) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR405) },
++	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
++	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
 +	{ }
 +};
@@ -1421,7 +1461,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 -	.config = aqr_hwmon_temp_config,
 -};
 -
--static const struct hwmon_channel_info *aqr_hwmon_info[] = {
+-static const struct hwmon_channel_info * const aqr_hwmon_info[] = {
 -	&aqr_hwmon_chip,
 -	&aqr_hwmon_temp,
 -	NULL,
@@ -1461,7 +1501,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 -#endif
 --- a/drivers/net/phy/aquantia_main.c
 +++ /dev/null
-@@ -1,842 +0,0 @@
+@@ -1,882 +0,0 @@
 -// SPDX-License-Identifier: GPL-2.0
 -/*
 - * Driver for Aquantia PHY
@@ -1486,6 +1526,8 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 -#define PHY_ID_AQR107	0x03a1b4e0
 -#define PHY_ID_AQCS109	0x03a1b5c2
 -#define PHY_ID_AQR405	0x03a1b4b0
+-#define PHY_ID_AQR112	0x03a1b662
+-#define PHY_ID_AQR412	0x03a1b712
 -#define PHY_ID_AQR113C	0x31c31c12
 -
 -#define MDIO_PHYXS_VEND_IF_STATUS		0xe812
@@ -2265,6 +2307,42 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 -	.read_status	= aqr_read_status,
 -},
 -{
+-	PHY_ID_MATCH_MODEL(PHY_ID_AQR112),
+-	.name		= "Aquantia AQR112",
+-	.probe		= aqr107_probe,
+-	.config_aneg    = aqr_config_aneg,
+-	.config_intr	= aqr_config_intr,
+-	.handle_interrupt = aqr_handle_interrupt,
+-	.get_tunable    = aqr107_get_tunable,
+-	.set_tunable    = aqr107_set_tunable,
+-	.suspend	= aqr107_suspend,
+-	.resume		= aqr107_resume,
+-	.read_status	= aqr107_read_status,
+-	.get_rate_matching = aqr107_get_rate_matching,
+-	.get_sset_count = aqr107_get_sset_count,
+-	.get_strings	= aqr107_get_strings,
+-	.get_stats	= aqr107_get_stats,
+-	.link_change_notify = aqr107_link_change_notify,
+-},
+-{
+-	PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
+-	.name		= "Aquantia AQR412",
+-	.probe		= aqr107_probe,
+-	.config_aneg    = aqr_config_aneg,
+-	.config_intr	= aqr_config_intr,
+-	.handle_interrupt = aqr_handle_interrupt,
+-	.get_tunable    = aqr107_get_tunable,
+-	.set_tunable    = aqr107_set_tunable,
+-	.suspend	= aqr107_suspend,
+-	.resume		= aqr107_resume,
+-	.read_status	= aqr107_read_status,
+-	.get_rate_matching = aqr107_get_rate_matching,
+-	.get_sset_count = aqr107_get_sset_count,
+-	.get_strings	= aqr107_get_strings,
+-	.get_stats	= aqr107_get_stats,
+-	.link_change_notify = aqr107_link_change_notify,
+-},
+-{
 -	PHY_ID_MATCH_MODEL(PHY_ID_AQR113C),
 -	.name           = "Aquantia AQR113C",
 -	.probe          = aqr107_probe,
@@ -2295,6 +2373,8 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 -	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
 -	{ PHY_ID_MATCH_MODEL(PHY_ID_AQCS109) },
 -	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR405) },
+-	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
+-	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
 -	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
 -	{ }
 -};
diff --git a/target/linux/generic/backport-6.6/713-v6.9-01-net-phy-move-at803x-PHY-driver-to-dedicated-director.patch b/target/linux/generic/backport-6.6/713-v6.9-01-net-phy-move-at803x-PHY-driver-to-dedicated-director.patch
index 8c9babea7b..ba89ecdb3c 100644
--- a/target/linux/generic/backport-6.6/713-v6.9-01-net-phy-move-at803x-PHY-driver-to-dedicated-director.patch
+++ b/target/linux/generic/backport-6.6/713-v6.9-01-net-phy-move-at803x-PHY-driver-to-dedicated-director.patch
@@ -25,9 +25,9 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -277,12 +277,7 @@ config NXP_TJA11XX_PHY
- 	help
- 	  Currently supports the NXP TJA1100 and TJA1101 PHY.
+@@ -318,12 +318,7 @@ config NCN26000_PHY
+ 	  Currently supports the NCN26000 10BASE-T1S Industrial PHY
+ 	  with MII interface.
  
 -config AT803X_PHY
 -	tristate "Qualcomm Atheros AR803X PHYs and QCA833x PHYs"
@@ -41,7 +41,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	tristate "Quality Semiconductor PHYs"
 --- a/drivers/net/phy/Makefile
 +++ b/drivers/net/phy/Makefile
-@@ -34,7 +34,6 @@ obj-$(CONFIG_ADIN_PHY)		+= adin.o
+@@ -36,7 +36,6 @@ obj-$(CONFIG_ADIN_PHY)		+= adin.o
  obj-$(CONFIG_ADIN1100_PHY)	+= adin1100.o
  obj-$(CONFIG_AMD_PHY)		+= amd.o
  obj-$(CONFIG_AQUANTIA_PHY)	+= aquantia/
@@ -49,9 +49,9 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  obj-$(CONFIG_AX88796B_PHY)	+= ax88796b.o
  obj-$(CONFIG_BCM54140_PHY)	+= bcm54140.o
  obj-$(CONFIG_BCM63XX_PHY)	+= bcm63xx.o
-@@ -75,6 +74,7 @@ obj-$(CONFIG_MOTORCOMM_PHY)	+= motorcomm
- obj-$(CONFIG_NATIONAL_PHY)	+= national.o
+@@ -82,6 +81,7 @@ obj-$(CONFIG_NCN26000_PHY)	+= ncn26000.o
  obj-$(CONFIG_NXP_C45_TJA11XX_PHY)	+= nxp-c45-tja11xx.o
+ obj-$(CONFIG_NXP_CBTX_PHY)	+= nxp-cbtx.o
  obj-$(CONFIG_NXP_TJA11XX_PHY)	+= nxp-tja11xx.o
 +obj-y				+= qcom/
  obj-$(CONFIG_QSEMI_PHY)		+= qsemi.o
@@ -2010,7 +2010,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 -		return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
 -				QCA808X_MASTER_SLAVE_SEED_ENABLE, 0);
 -
--	seed_value = prandom_u32_max(QCA808X_MASTER_SLAVE_SEED_RANGE);
+-	seed_value = get_random_u32_below(QCA808X_MASTER_SLAVE_SEED_RANGE);
 -	return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
 -			QCA808X_MASTER_SLAVE_SEED_CFG | QCA808X_MASTER_SLAVE_SEED_ENABLE,
 -			FIELD_PREP(QCA808X_MASTER_SLAVE_SEED_CFG, seed_value) |
@@ -4772,7 +4772,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 +		return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
 +				QCA808X_MASTER_SLAVE_SEED_ENABLE, 0);
 +
-+	seed_value = prandom_u32_max(QCA808X_MASTER_SLAVE_SEED_RANGE);
++	seed_value = get_random_u32_below(QCA808X_MASTER_SLAVE_SEED_RANGE);
 +	return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
 +			QCA808X_MASTER_SLAVE_SEED_CFG | QCA808X_MASTER_SLAVE_SEED_ENABLE,
 +			FIELD_PREP(QCA808X_MASTER_SLAVE_SEED_CFG, seed_value) |
diff --git a/target/linux/generic/backport-6.6/713-v6.9-05-net-phy-qcom-detach-qca808x-PHY-driver-from-at803x.patch b/target/linux/generic/backport-6.6/713-v6.9-05-net-phy-qcom-detach-qca808x-PHY-driver-from-at803x.patch
index 597dcea4c0..d8092a8f3c 100644
--- a/target/linux/generic/backport-6.6/713-v6.9-05-net-phy-qcom-detach-qca808x-PHY-driver-from-at803x.patch
+++ b/target/linux/generic/backport-6.6/713-v6.9-05-net-phy-qcom-detach-qca808x-PHY-driver-from-at803x.patch
@@ -328,7 +328,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 -		return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
 -				QCA808X_MASTER_SLAVE_SEED_ENABLE, 0);
 -
--	seed_value = prandom_u32_max(QCA808X_MASTER_SLAVE_SEED_RANGE);
+-	seed_value = get_random_u32_below(QCA808X_MASTER_SLAVE_SEED_RANGE);
 -	return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
 -			QCA808X_MASTER_SLAVE_SEED_CFG | QCA808X_MASTER_SLAVE_SEED_ENABLE,
 -			FIELD_PREP(QCA808X_MASTER_SLAVE_SEED_CFG, seed_value) |
@@ -1255,7 +1255,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 +		return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
 +				QCA808X_MASTER_SLAVE_SEED_ENABLE, 0);
 +
-+	seed_value = prandom_u32_max(QCA808X_MASTER_SLAVE_SEED_RANGE);
++	seed_value = get_random_u32_below(QCA808X_MASTER_SLAVE_SEED_RANGE);
 +	return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
 +			QCA808X_MASTER_SLAVE_SEED_CFG | QCA808X_MASTER_SLAVE_SEED_ENABLE,
 +			FIELD_PREP(QCA808X_MASTER_SLAVE_SEED_CFG, seed_value) |
diff --git a/target/linux/generic/backport-6.6/714-v6.8-02-net-phy-extend-PHY-package-API-to-support-multiple-g.patch b/target/linux/generic/backport-6.6/714-v6.8-02-net-phy-extend-PHY-package-API-to-support-multiple-g.patch
index 0cf01df3d3..6e5ac8c63a 100644
--- a/target/linux/generic/backport-6.6/714-v6.8-02-net-phy-extend-PHY-package-API-to-support-multiple-g.patch
+++ b/target/linux/generic/backport-6.6/714-v6.8-02-net-phy-extend-PHY-package-API-to-support-multiple-g.patch
@@ -242,7 +242,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	refcount_t refcnt;
  	unsigned long flags;
  	size_t priv_size;
-@@ -1763,10 +1764,10 @@ int phy_ethtool_get_link_ksettings(struc
+@@ -1969,10 +1970,10 @@ int phy_ethtool_get_link_ksettings(struc
  int phy_ethtool_set_link_ksettings(struct net_device *ndev,
  				   const struct ethtool_link_ksettings *cmd);
  int phy_ethtool_nway_reset(struct net_device *ndev);
@@ -253,11 +253,11 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 -			  int addr, size_t priv_size);
 +			  int base_addr, size_t priv_size);
  
- #if IS_ENABLED(CONFIG_PHYLIB)
  int __init mdio_bus_init(void);
-@@ -1778,46 +1779,65 @@ int phy_ethtool_get_sset_count(struct ph
- int phy_ethtool_get_stats(struct phy_device *phydev,
- 			  struct ethtool_stats *stats, u64 *data);
+ void mdio_bus_exit(void);
+@@ -1995,46 +1996,65 @@ int __phy_hwtstamp_set(struct phy_device
+ 		       struct kernel_hwtstamp_config *config,
+ 		       struct netlink_ext_ack *extack);
  
 -static inline int phy_package_read(struct phy_device *phydev, u32 regnum)
 +static inline int phy_package_address(struct phy_device *phydev,
diff --git a/target/linux/generic/backport-6.6/716-v6.9-02-net-phy-add-support-for-scanning-PHY-in-PHY-packages.patch b/target/linux/generic/backport-6.6/716-v6.9-02-net-phy-add-support-for-scanning-PHY-in-PHY-packages.patch
index b355031aa5..50a454b2c9 100644
--- a/target/linux/generic/backport-6.6/716-v6.9-02-net-phy-add-support-for-scanning-PHY-in-PHY-packages.patch
+++ b/target/linux/generic/backport-6.6/716-v6.9-02-net-phy-add-support-for-scanning-PHY-in-PHY-packages.patch
@@ -115,9 +115,9 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	/* auto scan for PHYs with empty reg property */
  	for_each_available_child_of_node(np, child) {
 -		/* Skip PHYs with reg property set */
--		if (of_find_property(child, "reg", NULL))
+-		if (of_property_present(child, "reg"))
 +		/* Skip PHYs with reg property set or ethernet-phy-package node */
-+		if (of_find_property(child, "reg", NULL) ||
++		if (of_property_present(child, "reg") ||
 +		    of_node_name_eq(child, "ethernet-phy-package"))
  			continue;
  
diff --git a/target/linux/generic/backport-6.6/716-v6.9-03-net-phy-add-devm-of_phy_package_join-helper.patch b/target/linux/generic/backport-6.6/716-v6.9-03-net-phy-add-devm-of_phy_package_join-helper.patch
index 3c7bf6c132..00bbd3b80b 100644
--- a/target/linux/generic/backport-6.6/716-v6.9-03-net-phy-add-devm-of_phy_package_join-helper.patch
+++ b/target/linux/generic/backport-6.6/716-v6.9-03-net-phy-add-devm-of_phy_package_join-helper.patch
@@ -170,7 +170,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	refcount_t refcnt;
  	unsigned long flags;
  	size_t priv_size;
-@@ -1793,9 +1796,12 @@ int phy_ethtool_set_link_ksettings(struc
+@@ -1971,9 +1974,12 @@ int phy_ethtool_set_link_ksettings(struc
  				   const struct ethtool_link_ksettings *cmd);
  int phy_ethtool_nway_reset(struct net_device *ndev);
  int phy_package_join(struct phy_device *phydev, int base_addr, size_t priv_size);
@@ -181,5 +181,5 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 +int devm_of_phy_package_join(struct device *dev, struct phy_device *phydev,
 +			     size_t priv_size);
  
- #if IS_ENABLED(CONFIG_PHYLIB)
  int __init mdio_bus_init(void);
+ void mdio_bus_exit(void);
diff --git a/target/linux/generic/backport-6.6/751-04-v6.4-net-ethernet-mediatek-fix-ppe-flow-accounting-for-L2.patch b/target/linux/generic/backport-6.6/751-04-v6.4-net-ethernet-mediatek-fix-ppe-flow-accounting-for-L2.patch
index e20f94f1d4..e5f0c2f54d 100644
--- a/target/linux/generic/backport-6.6/751-04-v6.4-net-ethernet-mediatek-fix-ppe-flow-accounting-for-L2.patch
+++ b/target/linux/generic/backport-6.6/751-04-v6.4-net-ethernet-mediatek-fix-ppe-flow-accounting-for-L2.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/ethernet/mediatek/mtk_ppe.c
 +++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
-@@ -79,9 +79,9 @@ static int mtk_ppe_mib_wait_busy(struct
+@@ -80,9 +80,9 @@ static int mtk_ppe_mib_wait_busy(struct
  	int ret;
  	u32 val;
  
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	if (ret)
  		dev_err(ppe->dev, "MIB table busy");
-@@ -89,17 +89,31 @@ static int mtk_ppe_mib_wait_busy(struct
+@@ -90,17 +90,31 @@ static int mtk_ppe_mib_wait_busy(struct
  	return ret;
  }
  
@@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	cnt_r0 = readl(ppe->base + MTK_PPE_MIB_SER_R0);
  	cnt_r1 = readl(ppe->base + MTK_PPE_MIB_SER_R1);
-@@ -108,19 +122,19 @@ static int mtk_mib_entry_read(struct mtk
+@@ -109,19 +123,19 @@ static int mtk_mib_entry_read(struct mtk
  	if (mtk_is_netsys_v3_or_greater(ppe->eth)) {
  		/* 64 bit for each counter */
  		u32 cnt_r3 = readl(ppe->base + MTK_PPE_MIB_SER_R3);
@@ -76,9 +76,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		u32 pkt_cnt_low = FIELD_GET(MTK_PPE_MIB_SER_R1_PKT_CNT_LOW, cnt_r1);
  		u32 pkt_cnt_high = FIELD_GET(MTK_PPE_MIB_SER_R2_PKT_CNT_HIGH, cnt_r2);
 -		*bytes = ((u64)byte_cnt_high << 32) | byte_cnt_low;
--		*packets = (pkt_cnt_high << 16) | pkt_cnt_low;
+-		*packets = ((u64)pkt_cnt_high << 16) | pkt_cnt_low;
 +		acct->bytes += ((u64)byte_cnt_high << 32) | byte_cnt_low;
-+		acct->packets += (pkt_cnt_high << 16) | pkt_cnt_low;
++		acct->packets += ((u64)pkt_cnt_high << 16) | pkt_cnt_low;
  	}
  
 -	return 0;
@@ -86,10 +86,11 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  static void mtk_ppe_cache_clear(struct mtk_ppe *ppe)
-@@ -519,13 +533,6 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp
+@@ -522,14 +536,6 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp
  		hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID);
  		dma_wmb();
  		mtk_ppe_cache_clear(ppe);
+-
 -		if (ppe->accounting) {
 -			struct mtk_foe_accounting *acct;
 -
@@ -100,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}
  	entry->hash = 0xffff;
  
-@@ -550,11 +557,14 @@ static int __mtk_foe_entry_idle_time(str
+@@ -554,11 +560,14 @@ static int __mtk_foe_entry_idle_time(str
  }
  
  static bool
@@ -116,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	int len;
  
  	if (hash == 0xffff)
-@@ -565,18 +575,35 @@ mtk_flow_entry_update(struct mtk_ppe *pp
+@@ -569,18 +578,35 @@ mtk_flow_entry_update(struct mtk_ppe *pp
  	memcpy(&foe, hwe, len);
  
  	if (!mtk_flow_entry_match(ppe->eth, entry, &foe, len) ||
@@ -155,7 +156,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	struct mtk_flow_entry *cur;
  	struct hlist_node *tmp;
  	int idle;
-@@ -585,7 +612,9 @@ mtk_flow_entry_update_l2(struct mtk_ppe
+@@ -589,7 +615,9 @@ mtk_flow_entry_update_l2(struct mtk_ppe
  	hlist_for_each_entry_safe(cur, tmp, &entry->l2_flows, l2_list) {
  		int cur_idle;
  
@@ -166,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			__mtk_foe_entry_clear(ppe, entry, false);
  			continue;
  		}
-@@ -600,10 +629,29 @@ mtk_flow_entry_update_l2(struct mtk_ppe
+@@ -604,10 +632,29 @@ mtk_flow_entry_update_l2(struct mtk_ppe
  	}
  }
  
@@ -196,7 +197,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	struct mtk_eth *eth = ppe->eth;
  	u16 timestamp = mtk_eth_timestamp(eth);
  	struct mtk_foe_entry *hwe;
-@@ -634,6 +682,12 @@ __mtk_foe_entry_commit(struct mtk_ppe *p
+@@ -638,6 +685,12 @@ __mtk_foe_entry_commit(struct mtk_ppe *p
  
  	dma_wmb();
  
@@ -209,7 +210,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	mtk_ppe_cache_clear(ppe);
  }
  
-@@ -796,21 +850,6 @@ out:
+@@ -802,21 +855,6 @@ void __mtk_ppe_check_skb(struct mtk_ppe
  	spin_unlock_bh(&ppe_lock);
  }
  
@@ -231,7 +232,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  int mtk_ppe_prepare_reset(struct mtk_ppe *ppe)
  {
  	if (!ppe)
-@@ -838,32 +877,6 @@ int mtk_ppe_prepare_reset(struct mtk_ppe
+@@ -844,32 +882,6 @@ int mtk_ppe_prepare_reset(struct mtk_ppe
  	return mtk_ppe_wait_busy(ppe);
  }
  
@@ -283,7 +284,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  void __mtk_ppe_check_skb(struct mtk_ppe *ppe, struct sk_buff *skb, u16 hash);
  
-@@ -396,9 +399,8 @@ int mtk_foe_entry_set_queue(struct mtk_e
+@@ -397,9 +400,8 @@ int mtk_foe_entry_set_queue(struct mtk_e
  			    unsigned int queue);
  int mtk_foe_entry_commit(struct mtk_ppe *ppe, struct mtk_flow_entry *entry);
  void mtk_foe_entry_clear(struct mtk_ppe *ppe, struct mtk_flow_entry *entry);
@@ -308,7 +309,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		seq_printf(m, "%05x %s %7s", i,
 --- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
 +++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -501,24 +501,21 @@ static int
+@@ -505,24 +505,21 @@ static int
  mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
  {
  	struct mtk_flow_entry *entry;
diff --git a/target/linux/generic/backport-6.6/752-08-v6.7-net-ethernet-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch b/target/linux/generic/backport-6.6/752-08-v6.7-net-ethernet-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch
index d83434fb2c..0a4a8ba0e1 100644
--- a/target/linux/generic/backport-6.6/752-08-v6.7-net-ethernet-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch
+++ b/target/linux/generic/backport-6.6/752-08-v6.7-net-ethernet-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch
@@ -12,7 +12,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -421,7 +421,7 @@ free_pagelist:
+@@ -599,7 +599,7 @@ mtk_wed_free_tx_buffer(struct mtk_wed_device
  static int
  mtk_wed_rx_buffer_alloc(struct mtk_wed_device *dev)
  {
@@ -21,7 +21,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	dma_addr_t desc_phys;
  
  	dev->rx_buf_ring.size = dev->wlan.rx_nbuf;
-@@ -441,7 +441,7 @@ mtk_wed_rx_buffer_alloc(struct mtk_wed_d
+@@ -619,7 +619,7 @@ mtk_wed_rx_buffer_alloc(struct mtk_wed_d
  static void
  mtk_wed_free_rx_buffer(struct mtk_wed_device *dev)
  {
@@ -41,10 +41,10 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	__le32 buf0;
  	__le32 token;
  } __packed __aligned(4);
-@@ -105,7 +105,7 @@ struct mtk_wed_device {
+@@ -109,7 +109,7 @@ struct mtk_wed_device {
+ 
  	struct {
  		int size;
- 		struct page_frag_cache rx_page;
 -		struct mtk_rxbm_desc *desc;
 +		struct mtk_wed_bm_desc *desc;
  		dma_addr_t desc_phys;
diff --git a/target/linux/generic/backport-6.6/760-v6.9-net-phy-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch b/target/linux/generic/backport-6.6/760-v6.9-net-phy-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch
index 32ac37e8d0..4fc32e3e96 100644
--- a/target/linux/generic/backport-6.6/760-v6.9-net-phy-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch
+++ b/target/linux/generic/backport-6.6/760-v6.9-net-phy-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch
@@ -26,9 +26,9 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  #define PHY_ID_AQR405	0x03a1b4b0
 +#define PHY_ID_AQR111	0x03a1b610
 +#define PHY_ID_AQR111B0	0x03a1b612
+ #define PHY_ID_AQR112	0x03a1b662
+ #define PHY_ID_AQR412	0x03a1b712
  #define PHY_ID_AQR113C	0x31c31c12
- 
- #define MDIO_PHYXS_VEND_IF_STATUS		0xe812
 @@ -670,6 +672,16 @@ static int aqr107_probe(struct phy_devic
  	return aqr_hwmon_probe(phydev);
  }
@@ -91,12 +91,12 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	PHY_ID_MATCH_MODEL(PHY_ID_AQR405),
  	.name		= "Aquantia AQR405",
  	.config_aneg    = aqr_config_aneg,
-@@ -782,6 +832,8 @@ static struct mdio_device_id __maybe_unu
+@@ -820,6 +870,8 @@ static struct mdio_device_id __maybe_unu
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQCS109) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR405) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111B0) },
+ 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
+ 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
- 	{ }
- };
diff --git a/target/linux/generic/backport-6.6/761-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch b/target/linux/generic/backport-6.6/761-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch
index 073bbbd49d..5be82455c1 100644
--- a/target/linux/generic/backport-6.6/761-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch
+++ b/target/linux/generic/backport-6.6/761-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch
@@ -17,15 +17,15 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 --- a/drivers/net/phy/aquantia/aquantia_main.c
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
 @@ -24,6 +24,7 @@
- #define PHY_ID_AQR405	0x03a1b4b0
- #define PHY_ID_AQR111	0x03a1b610
  #define PHY_ID_AQR111B0	0x03a1b612
+ #define PHY_ID_AQR112	0x03a1b662
+ #define PHY_ID_AQR412	0x03a1b712
 +#define PHY_ID_AQR113	0x31c31c40
  #define PHY_ID_AQR113C	0x31c31c12
  
  #define MDIO_PHYXS_VEND_IF_STATUS		0xe812
 @@ -802,6 +803,25 @@ static struct phy_driver aqr_driver[] =
- 	.read_status	= aqr_read_status,
+ 	.link_change_notify = aqr107_link_change_notify,
  },
  {
 +	PHY_ID_MATCH_MODEL(PHY_ID_AQR113),
@@ -51,9 +51,9 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	.name           = "Aquantia AQR113C",
  	.probe          = aqr107_probe,
 @@ -834,6 +854,7 @@ static struct mdio_device_id __maybe_unu
- 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR405) },
- 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111B0) },
+ 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
+ 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
  	{ }
diff --git a/target/linux/generic/backport-6.6/762-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch b/target/linux/generic/backport-6.6/762-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch
index 965b8c91b2..7dcfe7d01b 100644
--- a/target/linux/generic/backport-6.6/762-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch
+++ b/target/linux/generic/backport-6.6/762-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch
@@ -16,7 +16,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 --- a/drivers/net/phy/aquantia/aquantia_main.c
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
 @@ -26,6 +26,7 @@
- #define PHY_ID_AQR111B0	0x03a1b612
+ #define PHY_ID_AQR412	0x03a1b712
  #define PHY_ID_AQR113	0x31c31c40
  #define PHY_ID_AQR113C	0x31c31c12
 +#define PHY_ID_AQR813	0x31c31cb2
@@ -50,7 +50,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  
  module_phy_driver(aqr_driver);
 @@ -856,6 +876,7 @@ static struct mdio_device_id __maybe_unu
- 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111B0) },
+ 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
diff --git a/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch b/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
index 95dd24881b..c02e7f8888 100644
--- a/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
+++ b/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
@@ -18,7 +18,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -2527,9 +2527,13 @@ static void stmmac_bump_dma_threshold(st
+@@ -2551,9 +2551,13 @@ static void stmmac_bump_dma_threshold(st
   * @priv: driver private structure
   * @budget: napi budget limiting this functions packet handling
   * @queue: TX queue index
@@ -32,32 +32,34 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 +			   bool *pending_packets)
  {
  	struct stmmac_tx_queue *tx_q = &priv->dma_conf.tx_queue[queue];
- 	unsigned int bytes_compl = 0, pkts_compl = 0;
-@@ -2692,7 +2696,7 @@ static int stmmac_tx_clean(struct stmmac
+ 	struct stmmac_txq_stats *txq_stats = &priv->xstats.txq_stats[queue];
+@@ -2713,7 +2717,7 @@ static int stmmac_tx_clean(struct stmmac
  
  	/* We still have pending packets, let's call for a new scheduling */
  	if (tx_q->dirty_tx != tx_q->cur_tx)
 -		stmmac_tx_timer_arm(priv, queue);
 +		*pending_packets = true;
  
- 	__netif_tx_unlock_bh(netdev_get_tx_queue(priv->dev, queue));
- 
-@@ -5488,12 +5492,13 @@ static int stmmac_napi_poll_tx(struct na
- 	struct stmmac_channel *ch =
+ 	u64_stats_update_begin(&txq_stats->napi_syncp);
+ 	u64_stats_add(&txq_stats->napi.tx_packets, tx_packets);
+@@ -5603,6 +5607,7 @@ static int stmmac_napi_poll_tx(struct na
  		container_of(napi, struct stmmac_channel, tx_napi);
  	struct stmmac_priv *priv = ch->priv_data;
+ 	struct stmmac_txq_stats *txq_stats;
 +	bool pending_packets = false;
  	u32 chan = ch->index;
  	int work_done;
  
- 	priv->xstats.napi_poll++;
+@@ -5611,7 +5616,7 @@ static int stmmac_napi_poll_tx(struct na
+ 	u64_stats_inc(&txq_stats->napi.poll);
+ 	u64_stats_update_end(&txq_stats->napi_syncp);
  
 -	work_done = stmmac_tx_clean(priv, budget, chan);
 +	work_done = stmmac_tx_clean(priv, budget, chan, &pending_packets);
  	work_done = min(work_done, budget);
  
  	if (work_done < budget && napi_complete_done(napi, work_done)) {
-@@ -5504,6 +5509,10 @@ static int stmmac_napi_poll_tx(struct na
+@@ -5622,6 +5627,10 @@ static int stmmac_napi_poll_tx(struct na
  		spin_unlock_irqrestore(&ch->lock, flags);
  	}
  
@@ -68,22 +70,24 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	return work_done;
  }
  
-@@ -5512,12 +5521,13 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5630,6 +5639,7 @@ static int stmmac_napi_poll_rxtx(struct
  	struct stmmac_channel *ch =
  		container_of(napi, struct stmmac_channel, rxtx_napi);
  	struct stmmac_priv *priv = ch->priv_data;
 +	bool tx_pending_packets = false;
  	int rx_done, tx_done, rxtx_done;
- 	u32 chan = ch->index;
- 
- 	priv->xstats.napi_poll++;
+ 	struct stmmac_rxq_stats *rxq_stats;
+ 	struct stmmac_txq_stats *txq_stats;
+@@ -5645,7 +5655,7 @@ static int stmmac_napi_poll_rxtx(struct
+ 	u64_stats_inc(&txq_stats->napi.poll);
+ 	u64_stats_update_end(&txq_stats->napi_syncp);
  
 -	tx_done = stmmac_tx_clean(priv, budget, chan);
 +	tx_done = stmmac_tx_clean(priv, budget, chan, &tx_pending_packets);
  	tx_done = min(tx_done, budget);
  
  	rx_done = stmmac_rx_zc(priv, budget, chan);
-@@ -5542,6 +5552,10 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5670,6 +5680,10 @@ static int stmmac_napi_poll_rxtx(struct
  		spin_unlock_irqrestore(&ch->lock, flags);
  	}
  
diff --git a/target/linux/generic/backport-6.6/815-v6.7-4-leds-turris-omnia-Add-support-for-enabling-disabling.patch b/target/linux/generic/backport-6.6/815-v6.7-4-leds-turris-omnia-Add-support-for-enabling-disabling.patch
index e98397922d..813e6e5673 100644
--- a/target/linux/generic/backport-6.6/815-v6.7-4-leds-turris-omnia-Add-support-for-enabling-disabling.patch
+++ b/target/linux/generic/backport-6.6/815-v6.7-4-leds-turris-omnia-Add-support-for-enabling-disabling.patch
@@ -217,10 +217,10 @@ Signed-off-by: Lee Jones <lee at kernel.org>
 +	return le16_to_cpu(reply);
 +}
 +
- static int omnia_leds_probe(struct i2c_client *client,
- 			    const struct i2c_device_id *id)
+ static int omnia_leds_probe(struct i2c_client *client)
  {
-@@ -383,6 +471,21 @@ static int omnia_leds_probe(struct i2c_c
+ 	struct device *dev = &client->dev;
+@@ -382,6 +470,21 @@ static int omnia_leds_probe(struct i2c_c
  	leds->client = client;
  	i2c_set_clientdata(client, leds);
  
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0002-nvmem-Create-a-header-for-internal-sharing.patch b/target/linux/generic/backport-6.6/819-v6.8-0002-nvmem-Create-a-header-for-internal-sharing.patch
index e722109f91..b03ce68092 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0002-nvmem-Create-a-header-for-internal-sharing.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0002-nvmem-Create-a-header-for-internal-sharing.patch
@@ -20,8 +20,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -20,29 +20,7 @@
- #include <linux/of_device.h>
+@@ -19,29 +19,7 @@
+ #include <linux/of.h>
  #include <linux/slab.h>
  
 -struct nvmem_device {



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:46 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:46 -0400
Subject: [openwrt/openwrt]  generic: 6.6: refresh pending patches
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15311.1710184669.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/293caa16a0c92b9aff367012124472f5b69aa577

commit 293caa16a0c92b9aff367012124472f5b69aa577
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Mar 8 22:04:14 2024 +0800

    generic: 6.6: refresh pending patches
    
    Refresh pending patches with make target/linux/refresh.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 ...only-include-asm-rwonce.h-for-kernel-code.patch |  2 +-
 .../pending-6.6/103-kbuild-export-SUBARCH.patch    |  2 +-
 ...x63xx_wdt-Add-support-for-specifying-WDI-.patch |  8 ++---
 ...-bridge_allow_receiption_on_disabled_port.patch |  4 +--
 ...let_the_alarm_to_be_used_as_wakeup_source.patch |  2 +-
 .../pending-6.6/203-kallsyms_uncompressed.patch    | 12 +++----
 .../pending-6.6/205-backtrace_module_info.patch    |  4 +--
 .../270-platform-mikrotik-build-bits.patch         |  2 +-
 .../pending-6.6/300-mips_expose_boot_raw.patch     |  4 +--
 ...dd-barriers-between-dcache-icache-flushes.patch |  8 ++---
 .../generic/pending-6.6/308-mips32r2_tune.patch    |  2 +-
 .../pending-6.6/332-arc-add-OWRTDTB-section.patch  |  4 +--
 ...ble-kernel-XZ-compression-option-on-PPC_8.patch |  2 +-
 .../pending-6.6/400-mtd-mtdsplit-support.patch     |  8 ++---
 ...egister-NVMEM-devices-for-partitions-with.patch |  2 +-
 ...rite-support-for-minor-aligned-partitions.patch | 18 +++++-----
 ...ck-use-notifier-to-create-ubiblock-from-p.patch | 12 +++----
 .../450-04-mtd-ubi-attach-from-device-tree.patch   | 12 +++----
 ...roduce-pre-removal-notification-for-UBI-v.patch | 18 +++++-----
 .../450-09-block-partitions-populate-fwnode.patch  |  4 +--
 ...0-block-add-new-genhd-flag-GENHD_FL_NVMEM.patch |  2 +-
 .../450-11-block-implement-NVMEM-provider.patch    |  4 +--
 .../450-13-mmc-core-set-card-fwnode_handle.patch   |  2 +-
 ...0-14-mmc-block-set-fwnode-of-disk-devices.patch |  4 +--
 .../450-15-mmc-block-set-GENHD_FL_NVMEM.patch      |  2 +-
 .../460-mtd-cfi_cmdset_0002-no-erase_suspend.patch |  2 +-
 ..._cmdset_0002-add-buffer-write-cmd-timeout.patch |  2 +-
 ...465-m25p80-mx-disable-software-protection.patch |  2 +-
 .../479-mtd-spi-nor-add-xtx-xt25f128b.patch        |  4 +--
 ...tach-mtd-device-named-ubi-or-data-on-boot.patch |  4 +--
 ...bi-auto-create-ubiblock-device-for-rootfs.patch |  6 ++--
 ...-mounting-ubi0-rootfs-in-init-do_mounts.c.patch |  4 +--
 ...-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch |  4 +--
 ...td-spi-nor-disable-16-bit-sr-for-macronix.patch |  2 +-
 ...lock-add-uImage.FIT-subimage-block-driver.patch |  4 +--
 ...t-bypass-device-lookup-for-dev-fit-rootfs.patch |  2 +-
 .../530-jffs2_make_lzma_available.patch            |  8 ++---
 .../600-netfilter_conntrack_flush.patch            |  4 +--
 ...610-netfilter_match_bypass_default_checks.patch | 12 +++----
 .../611-netfilter_match_bypass_default_table.patch |  6 ++--
 .../612-netfilter_match_reduce_memory_access.patch |  2 +-
 .../pending-6.6/630-packet_socket_type.patch       | 20 +++++------
 .../generic/pending-6.6/655-increase_skb_pad.patch |  2 +-
 .../666-Add-support-for-MAP-E-FMRs-mesh-mode.patch | 22 ++++++------
 ...jecting-with-source-address-failed-policy.patch | 24 ++++++-------
 ...80-NET-skip-GRO-for-foreign-MAC-addresses.patch | 14 ++++----
 .../683-of_net-add-mac-address-to-of-tree.patch    |  4 +--
 ...ft_flow_offload-handle-netdevice-events-f.patch |  8 ++---
 ...f_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 ...ethernet-mtk_eth_soc-enable-threaded-NAPI.patch |  2 +-
 ...-add-detach-callback-to-struct-phy_driver.patch |  4 +--
 ...et-dsa-tag_mtk-add-padding-for-tx-packets.patch |  2 +-
 ...ge-add-knob-for-filtering-rx-tx-BPDU-pack.patch | 22 ++++++------
 ...t-dsa-qca8k-implement-lag_fdb_add-del-ops.patch |  2 +-
 ...sa-qca8k-enable-flooding-to-both-CPU-port.patch |  2 +-
 ...-qca8k-add-support-for-port_change_master.patch |  4 +--
 ...ca8k-enable-assisted-learning-on-CPU-port.patch |  6 ++--
 ...com-ipq8074-add-clock-frequency-to-MDIO-n.patch |  2 +-
 ...ltek-rtl8221-allow-to-configure-SERDES-mo.patch |  8 ++---
 ...ltek-support-switching-between-SGMII-and-.patch |  4 +--
 ...ensure-all-MACs-are-powered-down-before-r.patch |  2 +-
 ...altek-use-genphy_soft_reset-for-2.5G-PHYs.patch | 12 +++----
 ...ek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch |  4 +--
 ...ltek-make-sure-paged-read-is-protected-by.patch |  2 +-
 ...ltek-use-inline-functions-for-10GbE-adver.patch |  6 ++--
 ...ltek-check-validity-of-10GbE-link-partner.patch |  2 +-
 ...9-net-phy-realtek-introduce-rtl822x_probe.patch | 12 +++----
 ...-realtek-detect-early-version-of-RTL8221B.patch |  4 +--
 ...ieee80211_ptr-even-with-no-CFG82111-suppo.patch |  4 +--
 ...t-mtk_eth_soc-work-around-issue-with-send.patch |  8 ++---
 ...t-mtk_eth_soc-add-paths-and-SerDes-modes-.patch | 42 +++++++++++-----------
 ...-mtk-lynxi-add-platform-driver-for-MT7988.patch | 12 +++----
 ...t-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch |  6 ++--
 ...phy-realtek-support-interrupt-of-RTL8221B.patch |  4 +--
 ...-airoha-Add-the-Airoha-EN8811H-PHY-driver.patch |  4 +--
 ...d-optional-threading-for-backlog-processi.patch | 28 +++++++--------
 ...xxx-Request-assisted-learning-on-CPU-port.patch |  2 +-
 ...n-don-t-learn-non-unicast-L2-destinations.patch |  2 +-
 ...30-register-OF-node-for-internal-MDIO-bus.patch |  4 +--
 ...C-device-struct-copy-its-DMA-params-to-th.patch |  2 +-
 ...pio-gpio-cascade-add-generic-GPIO-cascade.patch |  4 +--
 ...rovide-old-opp-to-config_clks-on-_set_opp.patch | 12 +++----
 ...-core-support-mac-base-fixed-layout-cells.patch |  4 +--
 .../810-pci_disable_common_quirks.patch            | 10 +++---
 .../811-pci_disable_usb_common_quirks.patch        |  8 ++---
 .../generic/pending-6.6/834-ledtrig-libata.patch   | 12 +++----
 .../840-hwrng-bcm2835-set-quality-to-1000.patch    |  2 +-
 .../generic/pending-6.6/920-mangle_bootargs.patch  |  6 ++--
 88 files changed, 293 insertions(+), 293 deletions(-)

diff --git a/target/linux/generic/pending-6.6/100-compiler.h-only-include-asm-rwonce.h-for-kernel-code.patch b/target/linux/generic/pending-6.6/100-compiler.h-only-include-asm-rwonce.h-for-kernel-code.patch
index 7b342e6962..0844fcd6db 100644
--- a/target/linux/generic/pending-6.6/100-compiler.h-only-include-asm-rwonce.h-for-kernel-code.patch
+++ b/target/linux/generic/pending-6.6/100-compiler.h-only-include-asm-rwonce.h-for-kernel-code.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/compiler.h
 +++ b/include/linux/compiler.h
-@@ -203,6 +203,8 @@ void ftrace_likely_update(struct ftrace_
+@@ -202,6 +202,8 @@ void ftrace_likely_update(struct ftrace_
  	__v;								\
  })
  
diff --git a/target/linux/generic/pending-6.6/103-kbuild-export-SUBARCH.patch b/target/linux/generic/pending-6.6/103-kbuild-export-SUBARCH.patch
index c8c0efaecf..ea7a25d8a0 100644
--- a/target/linux/generic/pending-6.6/103-kbuild-export-SUBARCH.patch
+++ b/target/linux/generic/pending-6.6/103-kbuild-export-SUBARCH.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -605,7 +605,7 @@ endif
+@@ -599,7 +599,7 @@ endif
  # Allows the usage of unstable features in stable compilers.
  export RUSTC_BOOTSTRAP := 1
  
diff --git a/target/linux/generic/pending-6.6/111-watchdog-max63xx_wdt-Add-support-for-specifying-WDI-.patch b/target/linux/generic/pending-6.6/111-watchdog-max63xx_wdt-Add-support-for-specifying-WDI-.patch
index d6b10491f8..9dd90eecdc 100644
--- a/target/linux/generic/pending-6.6/111-watchdog-max63xx_wdt-Add-support-for-specifying-WDI-.patch
+++ b/target/linux/generic/pending-6.6/111-watchdog-max63xx_wdt-Add-support-for-specifying-WDI-.patch
@@ -17,7 +17,7 @@ Signed-off-by: Pali Roh?r <pali at kernel.org>
 
 --- a/drivers/watchdog/max63xx_wdt.c
 +++ b/drivers/watchdog/max63xx_wdt.c
-@@ -27,6 +27,7 @@
+@@ -24,6 +24,7 @@
  #include <linux/io.h>
  #include <linux/slab.h>
  #include <linux/property.h>
@@ -25,7 +25,7 @@ Signed-off-by: Pali Roh?r <pali at kernel.org>
  
  #define DEFAULT_HEARTBEAT 60
  #define MAX_HEARTBEAT     60
-@@ -53,6 +54,9 @@ struct max63xx_wdt {
+@@ -50,6 +51,9 @@ struct max63xx_wdt {
  	void __iomem *base;
  	spinlock_t lock;
  
@@ -35,7 +35,7 @@ Signed-off-by: Pali Roh?r <pali at kernel.org>
  	/* WDI and WSET bits write access routines */
  	void (*ping)(struct max63xx_wdt *wdt);
  	void (*set)(struct max63xx_wdt *wdt, u8 set);
-@@ -158,6 +162,17 @@ static const struct watchdog_info max63x
+@@ -155,6 +159,17 @@ static const struct watchdog_info max63x
  	.identity = "max63xx Watchdog",
  };
  
@@ -53,7 +53,7 @@ Signed-off-by: Pali Roh?r <pali at kernel.org>
  static void max63xx_mmap_ping(struct max63xx_wdt *wdt)
  {
  	u8 val;
-@@ -225,10 +240,19 @@ static int max63xx_wdt_probe(struct plat
+@@ -222,10 +237,19 @@ static int max63xx_wdt_probe(struct plat
  		return -EINVAL;
  	}
  
diff --git a/target/linux/generic/pending-6.6/150-bridge_allow_receiption_on_disabled_port.patch b/target/linux/generic/pending-6.6/150-bridge_allow_receiption_on_disabled_port.patch
index 93a2d146b5..b23cae1f5e 100644
--- a/target/linux/generic/pending-6.6/150-bridge_allow_receiption_on_disabled_port.patch
+++ b/target/linux/generic/pending-6.6/150-bridge_allow_receiption_on_disabled_port.patch
@@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/bridge/br_input.c
 +++ b/net/bridge/br_input.c
-@@ -222,6 +222,9 @@ static void __br_handle_local_finish(str
+@@ -239,6 +239,9 @@ static void __br_handle_local_finish(str
  /* note: already called with rcu_read_lock */
  static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
  {
@@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	__br_handle_local_finish(skb);
  
  	/* return 1 to signal the okfn() was called so it's ok to use the skb */
-@@ -390,6 +393,17 @@ forward:
+@@ -408,6 +411,17 @@ forward:
  		goto defer_stp_filtering;
  
  	switch (p->state) {
diff --git a/target/linux/generic/pending-6.6/191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source.patch b/target/linux/generic/pending-6.6/191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source.patch
index 85e5600847..a29c548bbd 100644
--- a/target/linux/generic/pending-6.6/191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source.patch
+++ b/target/linux/generic/pending-6.6/191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source.patch
@@ -17,7 +17,7 @@ Signed-off-by: Daniel Gonz?lez Cabanelas <dgcbueu at gmail.com>
 
 --- a/drivers/rtc/rtc-rs5c372.c
 +++ b/drivers/rtc/rtc-rs5c372.c
-@@ -833,6 +833,7 @@ static int rs5c372_probe(struct i2c_clie
+@@ -832,6 +832,7 @@ static int rs5c372_probe(struct i2c_clie
  	int err = 0;
  	int smbus_mode = 0;
  	struct rs5c372 *rs5c372;
diff --git a/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
index 5c6f620749..d935077c05 100644
--- a/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1491,6 +1491,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
+@@ -1451,6 +1451,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
  	  the unaligned access emulation.
  	  see arch/parisc/kernel/unaligned.c for reference
  
@@ -57,7 +57,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	 * and return the first char from this token.
 --- a/scripts/kallsyms.c
 +++ b/scripts/kallsyms.c
-@@ -77,6 +77,7 @@ static struct addr_range percpu_range =
+@@ -62,6 +62,7 @@ static struct addr_range percpu_range =
  static struct sym_entry **table;
  static unsigned int table_size, table_cnt;
  static int all_symbols;
@@ -65,7 +65,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int absolute_percpu;
  static int base_relative;
  static int lto_clang;
-@@ -608,6 +609,9 @@ static void write_src(void)
+@@ -469,6 +470,9 @@ static void write_src(void)
  
  	free(markers);
  
@@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	output_label("kallsyms_token_table");
  	off = 0;
  	for (i = 0; i < 256; i++) {
-@@ -659,6 +663,9 @@ static unsigned char *find_token(unsigne
+@@ -582,6 +586,9 @@ static unsigned char *find_token(unsigne
  {
  	int i;
  
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	for (i = 0; i < len - 1; i++) {
  		if (str[i] == token[0] && str[i+1] == token[1])
  			return &str[i];
-@@ -731,6 +738,9 @@ static void optimize_result(void)
+@@ -654,6 +661,9 @@ static void optimize_result(void)
  {
  	int i, best;
  
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	/* using the '\0' symbol last allows compress_symbols to use standard
  	 * fast string functions */
  	for (i = 255; i >= 0; i--) {
-@@ -892,6 +902,7 @@ int main(int argc, char **argv)
+@@ -815,6 +825,7 @@ int main(int argc, char **argv)
  			{"absolute-percpu", no_argument, &absolute_percpu, 1},
  			{"base-relative",   no_argument, &base_relative,   1},
  			{"lto-clang",       no_argument, &lto_clang,       1},
diff --git a/target/linux/generic/pending-6.6/205-backtrace_module_info.patch b/target/linux/generic/pending-6.6/205-backtrace_module_info.patch
index 7bbb596a5d..34018e2c2f 100644
--- a/target/linux/generic/pending-6.6/205-backtrace_module_info.patch
+++ b/target/linux/generic/pending-6.6/205-backtrace_module_info.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/lib/vsprintf.c
 +++ b/lib/vsprintf.c
-@@ -985,8 +985,10 @@ char *symbol_string(char *buf, char *end
+@@ -982,8 +982,10 @@ char *symbol_string(char *buf, char *end
  		    struct printf_spec spec, const char *fmt)
  {
  	unsigned long value;
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif
  
  	if (fmt[1] == 'R')
-@@ -1007,8 +1009,14 @@ char *symbol_string(char *buf, char *end
+@@ -1004,8 +1006,14 @@ char *symbol_string(char *buf, char *end
  
  	return string_nocheck(buf, end, sym, spec);
  #else
diff --git a/target/linux/generic/pending-6.6/270-platform-mikrotik-build-bits.patch b/target/linux/generic/pending-6.6/270-platform-mikrotik-build-bits.patch
index 997e6142a7..7ca84e040d 100644
--- a/target/linux/generic/pending-6.6/270-platform-mikrotik-build-bits.patch
+++ b/target/linux/generic/pending-6.6/270-platform-mikrotik-build-bits.patch
@@ -16,7 +16,7 @@ Signed-off-by: Thibaut VAR?NE <hacks at slashdirt.org>
 
 --- a/drivers/platform/Kconfig
 +++ b/drivers/platform/Kconfig
-@@ -16,3 +16,5 @@ source "drivers/platform/olpc/Kconfig"
+@@ -14,3 +14,5 @@ source "drivers/platform/olpc/Kconfig"
  source "drivers/platform/surface/Kconfig"
  
  source "drivers/platform/x86/Kconfig"
diff --git a/target/linux/generic/pending-6.6/300-mips_expose_boot_raw.patch b/target/linux/generic/pending-6.6/300-mips_expose_boot_raw.patch
index d222ec060e..ebeeb7bae7 100644
--- a/target/linux/generic/pending-6.6/300-mips_expose_boot_raw.patch
+++ b/target/linux/generic/pending-6.6/300-mips_expose_boot_raw.patch
@@ -9,7 +9,7 @@ Acked-by: Rob Landley <rob at landley.net>
 ---
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1035,9 +1035,6 @@ config FW_ARC
+@@ -1013,9 +1013,6 @@ config FW_ARC
  config ARCH_MAY_HAVE_PC_FDC
  	bool
  
@@ -19,7 +19,7 @@ Acked-by: Rob Landley <rob at landley.net>
  config CEVT_BCM1480
  	bool
  
-@@ -3093,6 +3090,18 @@ choice
+@@ -2996,6 +2993,18 @@ choice
  		bool "Extend builtin kernel arguments with bootloader arguments"
  endchoice
  
diff --git a/target/linux/generic/pending-6.6/301-MIPS-Add-barriers-between-dcache-icache-flushes.patch b/target/linux/generic/pending-6.6/301-MIPS-Add-barriers-between-dcache-icache-flushes.patch
index bd56adad3a..b3cb5f0cde 100644
--- a/target/linux/generic/pending-6.6/301-MIPS-Add-barriers-between-dcache-icache-flushes.patch
+++ b/target/linux/generic/pending-6.6/301-MIPS-Add-barriers-between-dcache-icache-flushes.patch
@@ -26,7 +26,7 @@ Cc: James Hogan <james.hogan at imgtec.com>
 
 --- a/arch/mips/mm/c-r4k.c
 +++ b/arch/mips/mm/c-r4k.c
-@@ -514,6 +514,7 @@ static inline void local_r4k___flush_cac
+@@ -403,6 +403,7 @@ static inline void local_r4k___flush_cac
  
  	default:
  		r4k_blast_dcache();
@@ -34,7 +34,7 @@ Cc: James Hogan <james.hogan at imgtec.com>
  		r4k_blast_icache();
  		break;
  	}
-@@ -594,8 +595,10 @@ static inline void local_r4k_flush_cache
+@@ -483,8 +484,10 @@ static inline void local_r4k_flush_cache
  	if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc))
  		r4k_blast_dcache();
  	/* If executable, blast stale lines from icache */
@@ -46,7 +46,7 @@ Cc: James Hogan <james.hogan at imgtec.com>
  }
  
  static void r4k_flush_cache_range(struct vm_area_struct *vma,
-@@ -696,8 +699,13 @@ static inline void local_r4k_flush_cache
+@@ -586,8 +589,13 @@ static inline void local_r4k_flush_cache
  	if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) {
  		vaddr ? r4k_blast_dcache_page(addr) :
  			r4k_blast_dcache_user_page(addr);
@@ -61,7 +61,7 @@ Cc: James Hogan <james.hogan at imgtec.com>
  	}
  	if (exec) {
  		if (vaddr && cpu_has_vtag_icache && mm == current->active_mm) {
-@@ -764,6 +772,7 @@ static inline void __local_r4k_flush_ica
+@@ -654,6 +662,7 @@ static inline void __local_r4k_flush_ica
  			else
  				blast_dcache_range(start, end);
  		}
diff --git a/target/linux/generic/pending-6.6/308-mips32r2_tune.patch b/target/linux/generic/pending-6.6/308-mips32r2_tune.patch
index db410a6bc0..b12058053b 100644
--- a/target/linux/generic/pending-6.6/308-mips32r2_tune.patch
+++ b/target/linux/generic/pending-6.6/308-mips32r2_tune.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/arch/mips/Makefile
 +++ b/arch/mips/Makefile
-@@ -172,7 +172,7 @@ cflags-$(CONFIG_CPU_R4300)	+= -march=r43
+@@ -163,7 +163,7 @@ cflags-$(CONFIG_CPU_R4300)	+= -march=r43
  cflags-$(CONFIG_CPU_R4X00)	+= -march=r4600 -Wa,--trap
  cflags-$(CONFIG_CPU_TX49XX)	+= -march=r4600 -Wa,--trap
  cflags-$(CONFIG_CPU_MIPS32_R1)	+= -march=mips32 -Wa,--trap
diff --git a/target/linux/generic/pending-6.6/332-arc-add-OWRTDTB-section.patch b/target/linux/generic/pending-6.6/332-arc-add-OWRTDTB-section.patch
index 4a76e216d5..5b943f3734 100644
--- a/target/linux/generic/pending-6.6/332-arc-add-OWRTDTB-section.patch
+++ b/target/linux/generic/pending-6.6/332-arc-add-OWRTDTB-section.patch
@@ -42,7 +42,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin at synopsys.com>
  ;----------------------------------------------------------------
 --- a/arch/arc/kernel/setup.c
 +++ b/arch/arc/kernel/setup.c
-@@ -495,6 +495,8 @@ static inline bool uboot_arg_invalid(uns
+@@ -450,6 +450,8 @@ static inline bool uboot_arg_invalid(uns
  /* We always pass 0 as magic from U-boot */
  #define UBOOT_MAGIC_VALUE	0
  
@@ -51,7 +51,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin at synopsys.com>
  void __init handle_uboot_args(void)
  {
  	bool use_embedded_dtb = true;
-@@ -533,7 +535,7 @@ void __init handle_uboot_args(void)
+@@ -488,7 +490,7 @@ void __init handle_uboot_args(void)
  ignore_uboot_args:
  
  	if (use_embedded_dtb) {
diff --git a/target/linux/generic/pending-6.6/342-powerpc-Enable-kernel-XZ-compression-option-on-PPC_8.patch b/target/linux/generic/pending-6.6/342-powerpc-Enable-kernel-XZ-compression-option-on-PPC_8.patch
index e9b47d185d..71173b081c 100644
--- a/target/linux/generic/pending-6.6/342-powerpc-Enable-kernel-XZ-compression-option-on-PPC_8.patch
+++ b/target/linux/generic/pending-6.6/342-powerpc-Enable-kernel-XZ-compression-option-on-PPC_8.patch
@@ -14,7 +14,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
 
 --- a/arch/powerpc/Kconfig
 +++ b/arch/powerpc/Kconfig
-@@ -229,7 +229,7 @@ config PPC
+@@ -251,7 +251,7 @@ config PPC
  	select HAVE_KERNEL_GZIP
  	select HAVE_KERNEL_LZMA			if DEFAULT_UIMAGE
  	select HAVE_KERNEL_LZO			if DEFAULT_UIMAGE
diff --git a/target/linux/generic/pending-6.6/400-mtd-mtdsplit-support.patch b/target/linux/generic/pending-6.6/400-mtd-mtdsplit-support.patch
index c619d12ce5..bd1c3a123f 100644
--- a/target/linux/generic/pending-6.6/400-mtd-mtdsplit-support.patch
+++ b/target/linux/generic/pending-6.6/400-mtd-mtdsplit-support.patch
@@ -66,7 +66,7 @@ Subject: [PATCH] mtd: mtdsplit support
  
  /*
   * MTD methods which simply translate the effective address and pass through
-@@ -236,6 +238,147 @@ static int mtd_add_partition_attrs(struc
+@@ -242,6 +244,147 @@ static int mtd_add_partition_attrs(struc
  	return ret;
  }
  
@@ -214,7 +214,7 @@ Subject: [PATCH] mtd: mtdsplit support
  int mtd_add_partition(struct mtd_info *parent, const char *name,
  		      long long offset, long long length)
  {
-@@ -274,6 +417,7 @@ int mtd_add_partition(struct mtd_info *p
+@@ -280,6 +423,7 @@ int mtd_add_partition(struct mtd_info *p
  	if (ret)
  		goto err_remove_part;
  
@@ -222,7 +222,7 @@ Subject: [PATCH] mtd: mtdsplit support
  	mtd_add_partition_attrs(child);
  
  	return 0;
-@@ -422,6 +566,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -423,6 +567,7 @@ int add_mtd_partitions(struct mtd_info *
  			goto err_del_partitions;
  		}
  
@@ -230,7 +230,7 @@ Subject: [PATCH] mtd: mtdsplit support
  		mtd_add_partition_attrs(child);
  
  		/* Look for subpartitions */
-@@ -438,31 +583,6 @@ err_del_partitions:
+@@ -439,31 +584,6 @@ err_del_partitions:
  	return ret;
  }
  
diff --git a/target/linux/generic/pending-6.6/401-mtd-don-t-register-NVMEM-devices-for-partitions-with.patch b/target/linux/generic/pending-6.6/401-mtd-don-t-register-NVMEM-devices-for-partitions-with.patch
index 52acb0633b..54a02d8ecd 100644
--- a/target/linux/generic/pending-6.6/401-mtd-don-t-register-NVMEM-devices-for-partitions-with.patch
+++ b/target/linux/generic/pending-6.6/401-mtd-don-t-register-NVMEM-devices-for-partitions-with.patch
@@ -16,7 +16,7 @@ Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
 
 --- a/drivers/mtd/mtdcore.c
 +++ b/drivers/mtd/mtdcore.c
-@@ -519,6 +519,29 @@ static int mtd_nvmem_add(struct mtd_info
+@@ -548,6 +548,29 @@ static int mtd_nvmem_add(struct mtd_info
  	struct device_node *node = mtd_get_of_node(mtd);
  	struct nvmem_config config = {};
  
diff --git a/target/linux/generic/pending-6.6/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch b/target/linux/generic/pending-6.6/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch
index c7da2f8834..5a812b86bf 100644
--- a/target/linux/generic/pending-6.6/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch
+++ b/target/linux/generic/pending-6.6/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch
@@ -80,7 +80,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
 
 --- a/drivers/mtd/mtdcore.c
 +++ b/drivers/mtd/mtdcore.c
-@@ -169,6 +169,15 @@ static ssize_t mtd_erasesize_show(struct
+@@ -198,6 +198,15 @@ static ssize_t mtd_erasesize_show(struct
  }
  MTD_DEVICE_ATTR_RO(erasesize);
  
@@ -96,7 +96,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
  static ssize_t mtd_writesize_show(struct device *dev,
  		struct device_attribute *attr, char *buf)
  {
-@@ -314,6 +323,7 @@ static struct attribute *mtd_attrs[] = {
+@@ -343,6 +352,7 @@ static struct attribute *mtd_attrs[] = {
  	&dev_attr_flags.attr,
  	&dev_attr_size.attr,
  	&dev_attr_erasesize.attr,
@@ -106,7 +106,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
  	&dev_attr_oobsize.attr,
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -41,6 +41,7 @@ static struct mtd_info *allocate_partiti
+@@ -47,6 +47,7 @@ static struct mtd_info *allocate_partiti
  	struct mtd_info *master = mtd_get_master(parent);
  	int wr_alignment = (parent->flags & MTD_NO_ERASE) ?
  			   master->writesize : master->erasesize;
@@ -114,7 +114,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
  	u64 parent_size = mtd_is_partition(parent) ?
  			  parent->part.size : parent->size;
  	struct mtd_info *child;
-@@ -165,6 +166,7 @@ static struct mtd_info *allocate_partiti
+@@ -171,6 +172,7 @@ static struct mtd_info *allocate_partiti
  	} else {
  		/* Single erase size */
  		child->erasesize = master->erasesize;
@@ -122,7 +122,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
  	}
  
  	/*
-@@ -172,26 +174,39 @@ static struct mtd_info *allocate_partiti
+@@ -178,26 +180,39 @@ static struct mtd_info *allocate_partiti
  	 * exposes several regions with different erasesize. Adjust
  	 * wr_alignment accordingly.
  	 */
@@ -193,7 +193,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
  	default y
 --- a/drivers/mtd/spi-nor/core.c
 +++ b/drivers/mtd/spi-nor/core.c
-@@ -1050,6 +1050,8 @@ static u8 spi_nor_convert_3to4_erase(u8
+@@ -1150,6 +1150,8 @@ static u8 spi_nor_convert_3to4_erase(u8
  
  static bool spi_nor_has_uniform_erase(const struct spi_nor *nor)
  {
@@ -202,7 +202,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
  	return !!nor->params->erase_map.uniform_erase_type;
  }
  
-@@ -2158,6 +2160,7 @@ static int spi_nor_select_erase(struct s
+@@ -2582,6 +2584,7 @@ static int spi_nor_select_erase(struct s
  {
  	struct spi_nor_erase_map *map = &nor->params->erase_map;
  	const struct spi_nor_erase_type *erase = NULL;
@@ -210,7 +210,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
  	struct mtd_info *mtd = &nor->mtd;
  	u32 wanted_size = nor->info->sector_size;
  	int i;
-@@ -2190,8 +2193,9 @@ static int spi_nor_select_erase(struct s
+@@ -2614,8 +2617,9 @@ static int spi_nor_select_erase(struct s
  	 */
  	for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) {
  		if (map->erase_type[i].size) {
@@ -222,7 +222,7 @@ Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
  		}
  	}
  
-@@ -2199,6 +2203,9 @@ static int spi_nor_select_erase(struct s
+@@ -2623,6 +2627,9 @@ static int spi_nor_select_erase(struct s
  		return -EINVAL;
  
  	mtd->erasesize = erase->size;
diff --git a/target/linux/generic/pending-6.6/450-03-mtd-ubi-block-use-notifier-to-create-ubiblock-from-p.patch b/target/linux/generic/pending-6.6/450-03-mtd-ubi-block-use-notifier-to-create-ubiblock-from-p.patch
index 421daa0125..a1e1d6fa9d 100644
--- a/target/linux/generic/pending-6.6/450-03-mtd-ubi-block-use-notifier-to-create-ubiblock-from-p.patch
+++ b/target/linux/generic/pending-6.6/450-03-mtd-ubi-block-use-notifier-to-create-ubiblock-from-p.patch
@@ -26,7 +26,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #include <linux/slab.h>
  #include <linux/mtd/ubi.h>
  #include <linux/blkdev.h>
-@@ -67,10 +68,10 @@ struct ubiblock_pdu {
+@@ -65,10 +66,10 @@ struct ubiblock_pdu {
  };
  
  /* Numbers of elements set in the @ubiblock_param array */
@@ -39,7 +39,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  struct ubiblock {
  	struct ubi_volume_desc *desc;
-@@ -504,7 +505,7 @@ int ubiblock_remove(struct ubi_volume_in
+@@ -469,7 +470,7 @@ int ubiblock_remove(struct ubi_volume_in
  	}
  
  	/* Found a device, let's lock it so we can check if it's busy */
@@ -48,7 +48,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	if (dev->refcnt > 0) {
  		ret = -EBUSY;
  		goto out_unlock_dev;
-@@ -567,6 +568,85 @@ static int ubiblock_resize(struct ubi_vo
+@@ -532,6 +533,85 @@ static int ubiblock_resize(struct ubi_vo
  	return 0;
  }
  
@@ -134,7 +134,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int ubiblock_notify(struct notifier_block *nb,
  			 unsigned long notification_type, void *ns_ptr)
  {
-@@ -574,10 +654,7 @@ static int ubiblock_notify(struct notifi
+@@ -539,10 +619,7 @@ static int ubiblock_notify(struct notifi
  
  	switch (notification_type) {
  	case UBI_VOLUME_ADDED:
@@ -146,7 +146,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		break;
  	case UBI_VOLUME_REMOVED:
  		ubiblock_remove(&nt->vi);
-@@ -603,56 +680,6 @@ static struct notifier_block ubiblock_no
+@@ -568,56 +645,6 @@ static struct notifier_block ubiblock_no
  	.notifier_call = ubiblock_notify,
  };
  
@@ -203,7 +203,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static void ubiblock_remove_all(void)
  {
  	struct ubiblock *next;
-@@ -678,18 +705,7 @@ int __init ubiblock_init(void)
+@@ -643,18 +670,7 @@ int __init ubiblock_init(void)
  	if (ubiblock_major < 0)
  		return ubiblock_major;
  
diff --git a/target/linux/generic/pending-6.6/450-04-mtd-ubi-attach-from-device-tree.patch b/target/linux/generic/pending-6.6/450-04-mtd-ubi-attach-from-device-tree.patch
index 6e10e5ebed..a295146aee 100644
--- a/target/linux/generic/pending-6.6/450-04-mtd-ubi-attach-from-device-tree.patch
+++ b/target/linux/generic/pending-6.6/450-04-mtd-ubi-attach-from-device-tree.patch
@@ -25,7 +25,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #include <linux/slab.h>
  #include <linux/major.h>
  #include "ubi.h"
-@@ -1071,6 +1072,7 @@ out_free:
+@@ -1072,6 +1073,7 @@ out_free:
   * ubi_detach_mtd_dev - detach an MTD device.
   * @ubi_num: UBI device number to detach from
   * @anyway: detach MTD even if device reference count is not zero
@@ -33,7 +33,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
   *
   * This function destroys an UBI device number @ubi_num and detaches the
   * underlying MTD device. Returns zero in case of success and %-EBUSY if the
-@@ -1080,7 +1082,7 @@ out_free:
+@@ -1081,7 +1083,7 @@ out_free:
   * Note, the invocations of this function has to be serialized by the
   * @ubi_devices_mutex.
   */
@@ -42,7 +42,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  {
  	struct ubi_device *ubi;
  
-@@ -1136,7 +1138,11 @@ int ubi_detach_mtd_dev(int ubi_num, int
+@@ -1137,7 +1139,11 @@ int ubi_detach_mtd_dev(int ubi_num, int
  	vfree(ubi->peb_buf);
  	vfree(ubi->fm_buf);
  	ubi_msg(ubi, "mtd%d is detached", ubi->mtd->index);
@@ -55,7 +55,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	put_device(&ubi->dev);
  	return 0;
  }
-@@ -1213,43 +1219,43 @@ static struct mtd_info * __init open_mtd
+@@ -1214,43 +1220,43 @@ static struct mtd_info * __init open_mtd
  	return mtd;
  }
  
@@ -128,7 +128,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  	/* Attach MTD devices */
  	for (i = 0; i < mtd_devs; i++) {
-@@ -1297,25 +1303,79 @@ static int __init ubi_init(void)
+@@ -1298,25 +1304,79 @@ static int __init ubi_init(void)
  		}
  	}
  
@@ -217,7 +217,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  out_slab:
  	kmem_cache_destroy(ubi_wl_entry_slab);
  out_dev_unreg:
-@@ -1325,18 +1385,20 @@ out:
+@@ -1326,18 +1386,20 @@ out:
  	pr_err("UBI error: cannot initialize UBI, error %d\n", err);
  	return err;
  }
diff --git a/target/linux/generic/pending-6.6/450-05-mtd-ubi-introduce-pre-removal-notification-for-UBI-v.patch b/target/linux/generic/pending-6.6/450-05-mtd-ubi-introduce-pre-removal-notification-for-UBI-v.patch
index d5da37b856..c7c058f8f4 100644
--- a/target/linux/generic/pending-6.6/450-05-mtd-ubi-introduce-pre-removal-notification-for-UBI-v.patch
+++ b/target/linux/generic/pending-6.6/450-05-mtd-ubi-introduce-pre-removal-notification-for-UBI-v.patch
@@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mtd/ubi/block.c
 +++ b/drivers/mtd/ubi/block.c
-@@ -568,6 +568,29 @@ static int ubiblock_resize(struct ubi_vo
+@@ -533,6 +533,29 @@ static int ubiblock_resize(struct ubi_vo
  	return 0;
  }
  
@@ -53,7 +53,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static bool
  match_volume_desc(struct ubi_volume_info *vi, const char *name, int ubi_num, int vol_id)
  {
-@@ -659,6 +682,9 @@ static int ubiblock_notify(struct notifi
+@@ -624,6 +647,9 @@ static int ubiblock_notify(struct notifi
  	case UBI_VOLUME_REMOVED:
  		ubiblock_remove(&nt->vi);
  		break;
@@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		break;
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
-@@ -89,7 +89,7 @@ static struct ubi_device *ubi_devices[UB
+@@ -91,7 +91,7 @@ static struct ubi_device *ubi_devices[UB
  /* Serializes UBI devices creations and removals */
  DEFINE_MUTEX(ubi_devices_mutex);
  
@@ -74,7 +74,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static DEFINE_SPINLOCK(ubi_devices_lock);
  
  /* "Show" method for files in '/<sysfs>/class/ubi/' */
-@@ -258,6 +258,9 @@ struct ubi_device *ubi_get_device(int ub
+@@ -259,6 +259,9 @@ struct ubi_device *ubi_get_device(int ub
  
  	spin_lock(&ubi_devices_lock);
  	ubi = ubi_devices[ubi_num];
@@ -84,7 +84,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	if (ubi) {
  		ubi_assert(ubi->ref_count >= 0);
  		ubi->ref_count += 1;
-@@ -295,7 +298,7 @@ struct ubi_device *ubi_get_by_major(int
+@@ -296,7 +299,7 @@ struct ubi_device *ubi_get_by_major(int
  	spin_lock(&ubi_devices_lock);
  	for (i = 0; i < UBI_MAX_DEVICES; i++) {
  		ubi = ubi_devices[i];
@@ -93,7 +93,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  			ubi_assert(ubi->ref_count >= 0);
  			ubi->ref_count += 1;
  			get_device(&ubi->dev);
-@@ -324,7 +327,7 @@ int ubi_major2num(int major)
+@@ -325,7 +328,7 @@ int ubi_major2num(int major)
  	for (i = 0; i < UBI_MAX_DEVICES; i++) {
  		struct ubi_device *ubi = ubi_devices[i];
  
@@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  			ubi_num = ubi->ubi_num;
  			break;
  		}
-@@ -511,7 +514,7 @@ static void ubi_free_volumes_from(struct
+@@ -512,7 +515,7 @@ static void ubi_free_volumes_from(struct
  	int i;
  
  	for (i = from; i < ubi->vtbl_slots + UBI_INT_VOL_COUNT; i++) {
@@ -111,7 +111,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  			continue;
  		ubi_eba_replace_table(ubi->volumes[i], NULL);
  		ubi_fastmap_destroy_checkmap(ubi->volumes[i]);
-@@ -1094,10 +1097,10 @@ int ubi_detach_mtd_dev(int ubi_num, int
+@@ -1095,10 +1098,10 @@ int ubi_detach_mtd_dev(int ubi_num, int
  		return -EINVAL;
  
  	spin_lock(&ubi_devices_lock);
@@ -123,7 +123,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  			spin_unlock(&ubi_devices_lock);
  			return -EBUSY;
  		}
-@@ -1105,6 +1108,13 @@ int ubi_detach_mtd_dev(int ubi_num, int
+@@ -1106,6 +1109,13 @@ int ubi_detach_mtd_dev(int ubi_num, int
  		ubi_err(ubi, "%s reference count %d, destroy anyway",
  			ubi->ubi_name, ubi->ref_count);
  	}
diff --git a/target/linux/generic/pending-6.6/450-09-block-partitions-populate-fwnode.patch b/target/linux/generic/pending-6.6/450-09-block-partitions-populate-fwnode.patch
index b46044f5d9..2e5bcac653 100644
--- a/target/linux/generic/pending-6.6/450-09-block-partitions-populate-fwnode.patch
+++ b/target/linux/generic/pending-6.6/450-09-block-partitions-populate-fwnode.patch
@@ -22,7 +22,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #include "check.h"
  
  static int (*const check_part[])(struct parsed_partitions *) = {
-@@ -298,6 +300,43 @@ static ssize_t whole_disk_show(struct de
+@@ -292,6 +294,43 @@ static ssize_t whole_disk_show(struct de
  }
  static const DEVICE_ATTR(whole_disk, 0444, whole_disk_show, NULL);
  
@@ -66,7 +66,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  /*
   * Must be called either with open_mutex held, before a disk can be opened or
   * after all disk users are gone.
-@@ -380,6 +419,8 @@ static struct block_device *add_partitio
+@@ -374,6 +413,8 @@ static struct block_device *add_partitio
  			goto out_put;
  	}
  
diff --git a/target/linux/generic/pending-6.6/450-10-block-add-new-genhd-flag-GENHD_FL_NVMEM.patch b/target/linux/generic/pending-6.6/450-10-block-add-new-genhd-flag-GENHD_FL_NVMEM.patch
index 4cbec14f5c..8fc5cd636c 100644
--- a/target/linux/generic/pending-6.6/450-10-block-add-new-genhd-flag-GENHD_FL_NVMEM.patch
+++ b/target/linux/generic/pending-6.6/450-10-block-add-new-genhd-flag-GENHD_FL_NVMEM.patch
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/include/linux/blkdev.h
 +++ b/include/linux/blkdev.h
-@@ -87,11 +87,13 @@ struct partition_meta_info {
+@@ -80,11 +80,13 @@ struct partition_meta_info {
   * ``GENHD_FL_NO_PART``: partition support is disabled.  The kernel will not
   * scan for partitions from add_disk, and users can't add partitions manually.
   *
diff --git a/target/linux/generic/pending-6.6/450-11-block-implement-NVMEM-provider.patch b/target/linux/generic/pending-6.6/450-11-block-implement-NVMEM-provider.patch
index d1972d97dc..d96477111c 100644
--- a/target/linux/generic/pending-6.6/450-11-block-implement-NVMEM-provider.patch
+++ b/target/linux/generic/pending-6.6/450-11-block-implement-NVMEM-provider.patch
@@ -18,7 +18,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/block/Kconfig
 +++ b/block/Kconfig
-@@ -203,6 +203,15 @@ config BLK_INLINE_ENCRYPTION_FALLBACK
+@@ -208,6 +208,15 @@ config BLK_INLINE_ENCRYPTION_FALLBACK
  	  by falling back to the kernel crypto API when inline
  	  encryption hardware is not present.
  
@@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  config BLK_MQ_PCI
 --- a/block/Makefile
 +++ b/block/Makefile
-@@ -35,6 +35,7 @@ obj-$(CONFIG_BLK_DEV_ZONED)	+= blk-zoned
+@@ -34,6 +34,7 @@ obj-$(CONFIG_BLK_DEV_ZONED)	+= blk-zoned
  obj-$(CONFIG_BLK_WBT)		+= blk-wbt.o
  obj-$(CONFIG_BLK_DEBUG_FS)	+= blk-mq-debugfs.o
  obj-$(CONFIG_BLK_DEBUG_FS_ZONED)+= blk-mq-debugfs-zoned.o
diff --git a/target/linux/generic/pending-6.6/450-13-mmc-core-set-card-fwnode_handle.patch b/target/linux/generic/pending-6.6/450-13-mmc-core-set-card-fwnode_handle.patch
index cfc43318ca..ff0d9c395c 100644
--- a/target/linux/generic/pending-6.6/450-13-mmc-core-set-card-fwnode_handle.patch
+++ b/target/linux/generic/pending-6.6/450-13-mmc-core-set-card-fwnode_handle.patch
@@ -12,7 +12,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mmc/core/bus.c
 +++ b/drivers/mmc/core/bus.c
-@@ -363,6 +363,8 @@ int mmc_add_card(struct mmc_card *card)
+@@ -364,6 +364,8 @@ int mmc_add_card(struct mmc_card *card)
  
  	mmc_add_card_debugfs(card);
  	card->dev.of_node = mmc_of_find_child_device(card->host, 0);
diff --git a/target/linux/generic/pending-6.6/450-14-mmc-block-set-fwnode-of-disk-devices.patch b/target/linux/generic/pending-6.6/450-14-mmc-block-set-fwnode-of-disk-devices.patch
index e645855475..27875b8c2c 100644
--- a/target/linux/generic/pending-6.6/450-14-mmc-block-set-fwnode-of-disk-devices.patch
+++ b/target/linux/generic/pending-6.6/450-14-mmc-block-set-fwnode-of-disk-devices.patch
@@ -14,7 +14,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mmc/core/block.c
 +++ b/drivers/mmc/core/block.c
-@@ -2484,6 +2484,8 @@ static struct mmc_blk_data *mmc_blk_allo
+@@ -2461,6 +2461,8 @@ static struct mmc_blk_data *mmc_blk_allo
  					      int area_type,
  					      unsigned int part_type)
  {
@@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	struct mmc_blk_data *md;
  	int devidx, ret;
  	char cap_str[10];
-@@ -2580,6 +2582,13 @@ static struct mmc_blk_data *mmc_blk_allo
+@@ -2557,6 +2559,13 @@ static struct mmc_blk_data *mmc_blk_allo
  
  	blk_queue_write_cache(md->queue.queue, cache_enabled, fua_enabled);
  
diff --git a/target/linux/generic/pending-6.6/450-15-mmc-block-set-GENHD_FL_NVMEM.patch b/target/linux/generic/pending-6.6/450-15-mmc-block-set-GENHD_FL_NVMEM.patch
index d76e7b2fe5..308910859b 100644
--- a/target/linux/generic/pending-6.6/450-15-mmc-block-set-GENHD_FL_NVMEM.patch
+++ b/target/linux/generic/pending-6.6/450-15-mmc-block-set-GENHD_FL_NVMEM.patch
@@ -12,7 +12,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mmc/core/block.c
 +++ b/drivers/mmc/core/block.c
-@@ -2538,6 +2538,7 @@ static struct mmc_blk_data *mmc_blk_allo
+@@ -2515,6 +2515,7 @@ static struct mmc_blk_data *mmc_blk_allo
  	md->disk->major	= MMC_BLOCK_MAJOR;
  	md->disk->minors = perdev_minors;
  	md->disk->first_minor = devidx * perdev_minors;
diff --git a/target/linux/generic/pending-6.6/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch b/target/linux/generic/pending-6.6/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
index 1b653fb735..2435133fa0 100644
--- a/target/linux/generic/pending-6.6/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
+++ b/target/linux/generic/pending-6.6/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -908,7 +908,7 @@ static int get_chip(struct map_info *map
+@@ -906,7 +906,7 @@ static int get_chip(struct map_info *map
  		return 0;
  
  	case FL_ERASING:
diff --git a/target/linux/generic/pending-6.6/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch b/target/linux/generic/pending-6.6/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
index f2788c5214..059d9673dc 100644
--- a/target/linux/generic/pending-6.6/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
+++ b/target/linux/generic/pending-6.6/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
@@ -7,7 +7,7 @@ Signed-off-by: George Kashperko <george at znau.edu.ua>
  1 file changed, 1 insertion(+)
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -2052,6 +2052,7 @@ static int __xipram do_write_buffer(stru
+@@ -2050,6 +2050,7 @@ static int __xipram do_write_buffer(stru
  
  	/* Write Buffer Load */
  	map_write(map, CMD(0x25), cmd_adr);
diff --git a/target/linux/generic/pending-6.6/465-m25p80-mx-disable-software-protection.patch b/target/linux/generic/pending-6.6/465-m25p80-mx-disable-software-protection.patch
index 0bed77b3b5..09a508b29e 100644
--- a/target/linux/generic/pending-6.6/465-m25p80-mx-disable-software-protection.patch
+++ b/target/linux/generic/pending-6.6/465-m25p80-mx-disable-software-protection.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/mtd/spi-nor/macronix.c
 +++ b/drivers/mtd/spi-nor/macronix.c
-@@ -115,6 +115,7 @@ static void macronix_nor_default_init(st
+@@ -114,6 +114,7 @@ static int macronix_nor_late_init(struct
  {
  	if (!nor->params->set_4byte_addr_mode)
  		nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b;
diff --git a/target/linux/generic/pending-6.6/479-mtd-spi-nor-add-xtx-xt25f128b.patch b/target/linux/generic/pending-6.6/479-mtd-spi-nor-add-xtx-xt25f128b.patch
index 371f1a7276..945f5baf10 100644
--- a/target/linux/generic/pending-6.6/479-mtd-spi-nor-add-xtx-xt25f128b.patch
+++ b/target/linux/generic/pending-6.6/479-mtd-spi-nor-add-xtx-xt25f128b.patch
@@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +};
 --- a/drivers/mtd/spi-nor/core.c
 +++ b/drivers/mtd/spi-nor/core.c
-@@ -1636,6 +1636,7 @@ static const struct spi_nor_manufacturer
+@@ -2017,6 +2017,7 @@ static const struct spi_nor_manufacturer
  	&spi_nor_winbond,
  	&spi_nor_xilinx,
  	&spi_nor_xmc,
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static const struct flash_info spi_nor_generic_flash = {
 --- a/drivers/mtd/spi-nor/core.h
 +++ b/drivers/mtd/spi-nor/core.h
-@@ -633,6 +633,7 @@ extern const struct spi_nor_manufacturer
+@@ -647,6 +647,7 @@ extern const struct spi_nor_manufacturer
  extern const struct spi_nor_manufacturer spi_nor_winbond;
  extern const struct spi_nor_manufacturer spi_nor_xilinx;
  extern const struct spi_nor_manufacturer spi_nor_xmc;
diff --git a/target/linux/generic/pending-6.6/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch b/target/linux/generic/pending-6.6/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
index 2eccb9d3bb..5a897d5d6f 100644
--- a/target/linux/generic/pending-6.6/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
+++ b/target/linux/generic/pending-6.6/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mtd/ubi/build.c
 +++ b/drivers/mtd/ubi/build.c
-@@ -1263,6 +1263,74 @@ static struct mtd_notifier ubi_mtd_notif
+@@ -1264,6 +1264,74 @@ static struct mtd_notifier ubi_mtd_notif
  	.remove = ubi_notify_remove,
  };
  
@@ -83,7 +83,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int __init ubi_init_attach(void)
  {
  	int err, i, k;
-@@ -1313,6 +1381,12 @@ static int __init ubi_init_attach(void)
+@@ -1314,6 +1382,12 @@ static int __init ubi_init_attach(void)
  		}
  	}
  
diff --git a/target/linux/generic/pending-6.6/491-ubi-auto-create-ubiblock-device-for-rootfs.patch b/target/linux/generic/pending-6.6/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
index a43da2a572..e0134e876a 100644
--- a/target/linux/generic/pending-6.6/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
+++ b/target/linux/generic/pending-6.6/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mtd/ubi/block.c
 +++ b/drivers/mtd/ubi/block.c
-@@ -644,10 +644,47 @@ match_volume_desc(struct ubi_volume_info
+@@ -609,10 +609,47 @@ match_volume_desc(struct ubi_volume_info
  	return true;
  }
  
@@ -56,7 +56,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	struct ubiblock_param *p;
  
  	/*
-@@ -660,6 +697,7 @@ ubiblock_create_from_param(struct ubi_vo
+@@ -625,6 +662,7 @@ ubiblock_create_from_param(struct ubi_vo
  		if (!match_volume_desc(vi, p->name, p->ubi_num, p->vol_id))
  			continue;
  
@@ -64,7 +64,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		ret = ubiblock_create(vi);
  		if (ret) {
  			pr_err(
-@@ -668,6 +706,10 @@ ubiblock_create_from_param(struct ubi_vo
+@@ -633,6 +671,10 @@ ubiblock_create_from_param(struct ubi_vo
  		}
  		break;
  	}
diff --git a/target/linux/generic/pending-6.6/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch b/target/linux/generic/pending-6.6/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
index b63b333c47..297789e539 100644
--- a/target/linux/generic/pending-6.6/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
+++ b/target/linux/generic/pending-6.6/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/init/do_mounts.c
 +++ b/init/do_mounts.c
-@@ -446,7 +446,30 @@ retry:
+@@ -248,7 +248,30 @@ retry:
  out:
  	put_page(page);
  }
@@ -40,7 +40,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #ifdef CONFIG_ROOT_NFS
  
  #define NFSROOT_TIMEOUT_MIN	5
-@@ -408,6 +408,11 @@ void __init mount_root(void)
+@@ -385,6 +408,11 @@ static inline void mount_block_root(char
  
  void __init mount_root(char *root_device_name)
  {
diff --git a/target/linux/generic/pending-6.6/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch b/target/linux/generic/pending-6.6/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
index 16bdfdd4b5..788690088a 100644
--- a/target/linux/generic/pending-6.6/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
+++ b/target/linux/generic/pending-6.6/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mtd/ubi/block.c
 +++ b/drivers/mtd/ubi/block.c
-@@ -43,6 +43,7 @@
+@@ -42,6 +42,7 @@
  #include <linux/scatterlist.h>
  #include <linux/idr.h>
  #include <asm/div64.h>
@@ -16,7 +16,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  #include "ubi-media.h"
  #include "ubi.h"
-@@ -460,6 +461,15 @@ int ubiblock_create(struct ubi_volume_in
+@@ -429,6 +430,15 @@ int ubiblock_create(struct ubi_volume_in
  	dev_info(disk_to_dev(dev->gd), "created from ubi%d:%d(%s)",
  		 dev->ubi_num, dev->vol_id, vi->name);
  	mutex_unlock(&devices_mutex);
diff --git a/target/linux/generic/pending-6.6/499-mtd-spi-nor-disable-16-bit-sr-for-macronix.patch b/target/linux/generic/pending-6.6/499-mtd-spi-nor-disable-16-bit-sr-for-macronix.patch
index e69eaf6bcc..ea580a90a0 100644
--- a/target/linux/generic/pending-6.6/499-mtd-spi-nor-disable-16-bit-sr-for-macronix.patch
+++ b/target/linux/generic/pending-6.6/499-mtd-spi-nor-disable-16-bit-sr-for-macronix.patch
@@ -20,7 +20,7 @@ Signed-off-by: Nick Hainke <vincent at systemli.org>
 
 --- a/drivers/mtd/spi-nor/macronix.c
 +++ b/drivers/mtd/spi-nor/macronix.c
-@@ -115,6 +115,7 @@ static void macronix_nor_default_init(st
+@@ -115,6 +115,7 @@ static int macronix_nor_late_init(struct
  {
  	if (!nor->params->set_4byte_addr_mode)
  		nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b;
diff --git a/target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch b/target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch
index 54234caf94..c565350dc0 100644
--- a/target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch
+++ b/target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch
@@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -21052,6 +21052,12 @@ F:	Documentation/filesystems/ubifs-authe
+@@ -22006,6 +22006,12 @@ F:	Documentation/filesystems/ubifs-authe
  F:	Documentation/filesystems/ubifs.rst
  F:	fs/ubifs/
  
@@ -51,7 +51,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  L:	linux-block at vger.kernel.org
 --- a/drivers/block/Kconfig
 +++ b/drivers/block/Kconfig
-@@ -383,6 +383,18 @@ config VIRTIO_BLK
+@@ -354,6 +354,18 @@ config VIRTIO_BLK
  	  This is the virtual block driver for virtio.  It can be used with
            QEMU based VMMs (like KVM or Xen).  Say Y or M.
  
diff --git a/target/linux/generic/pending-6.6/511-init-bypass-device-lookup-for-dev-fit-rootfs.patch b/target/linux/generic/pending-6.6/511-init-bypass-device-lookup-for-dev-fit-rootfs.patch
index e6ad104981..b2b7f5eb0c 100644
--- a/target/linux/generic/pending-6.6/511-init-bypass-device-lookup-for-dev-fit-rootfs.patch
+++ b/target/linux/generic/pending-6.6/511-init-bypass-device-lookup-for-dev-fit-rootfs.patch
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/init/do_mounts.c
 +++ b/init/do_mounts.c
-@@ -463,7 +463,8 @@ static dev_t __init parse_root_device(char
+@@ -463,7 +463,8 @@ static dev_t __init parse_root_device(ch
  	int error;
  	dev_t dev;
  
diff --git a/target/linux/generic/pending-6.6/530-jffs2_make_lzma_available.patch b/target/linux/generic/pending-6.6/530-jffs2_make_lzma_available.patch
index 3e93c61839..3be6c8eb9d 100644
--- a/target/linux/generic/pending-6.6/530-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/pending-6.6/530-jffs2_make_lzma_available.patch
@@ -85,7 +85,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
  exit_dynrubin:
  	jffs2_dynrubin_exit();
  exit_runinmips:
-@@ -417,6 +422,7 @@ int __init jffs2_compressors_init(void)
+@@ -417,6 +422,7 @@ exit:
  int jffs2_compressors_exit(void)
  {
  /* Unregistering compressors */
@@ -1097,7 +1097,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
  #define JFFS2_NODE_ACCURATE 0x2000
 --- a/lib/Kconfig
 +++ b/lib/Kconfig
-@@ -354,6 +354,12 @@ config ZSTD_DECOMPRESS
+@@ -356,6 +356,12 @@ config ZSTD_DECOMPRESS
  
  source "lib/xz/Kconfig"
  
@@ -1112,7 +1112,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
  # ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
 --- a/lib/Makefile
 +++ b/lib/Makefile
-@@ -140,6 +140,16 @@ CFLAGS_kobject.o += -DDEBUG
+@@ -145,6 +145,16 @@ CFLAGS_kobject.o += -DDEBUG
  CFLAGS_kobject_uevent.o += -DDEBUG
  endif
  
@@ -1129,7 +1129,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
  obj-$(CONFIG_DEBUG_INFO_REDUCED) += debug_info.o
  CFLAGS_debug_info.o += $(call cc-option, -femit-struct-debug-detailed=any)
  
-@@ -200,6 +210,8 @@ obj-$(CONFIG_ZSTD_COMPRESS) += zstd/
+@@ -205,6 +215,8 @@ obj-$(CONFIG_ZSTD_COMPRESS) += zstd/
  obj-$(CONFIG_ZSTD_DECOMPRESS) += zstd/
  obj-$(CONFIG_XZ_DEC) += xz/
  obj-$(CONFIG_RAID6_PQ) += raid6/
diff --git a/target/linux/generic/pending-6.6/600-netfilter_conntrack_flush.patch b/target/linux/generic/pending-6.6/600-netfilter_conntrack_flush.patch
index d7548c1419..f6c3783219 100644
--- a/target/linux/generic/pending-6.6/600-netfilter_conntrack_flush.patch
+++ b/target/linux/generic/pending-6.6/600-netfilter_conntrack_flush.patch
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <net/net_namespace.h>
  #ifdef CONFIG_SYSCTL
  #include <linux/sysctl.h>
-@@ -465,6 +466,58 @@ static int ct_cpu_seq_show(struct seq_fi
+@@ -461,6 +462,58 @@ static int ct_cpu_seq_show(struct seq_fi
  	return 0;
  }
  
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static const struct seq_operations ct_cpu_seq_ops = {
  	.start	= ct_cpu_seq_start,
  	.next	= ct_cpu_seq_next,
-@@ -478,8 +531,9 @@ static int nf_conntrack_standalone_init_
+@@ -474,8 +527,9 @@ static int nf_conntrack_standalone_init_
  	kuid_t root_uid;
  	kgid_t root_gid;
  
diff --git a/target/linux/generic/pending-6.6/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/pending-6.6/610-netfilter_match_bypass_default_checks.patch
index 7e34ef3713..67dcf25a0d 100644
--- a/target/linux/generic/pending-6.6/610-netfilter_match_bypass_default_checks.patch
+++ b/target/linux/generic/pending-6.6/610-netfilter_match_bypass_default_checks.patch
@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #define IPT_INV_VIA_IN		0x01	/* Invert the sense of IN IFACE. */
 --- a/net/ipv4/netfilter/ip_tables.c
 +++ b/net/ipv4/netfilter/ip_tables.c
-@@ -50,6 +50,9 @@ ip_packet_match(const struct iphdr *ip,
+@@ -48,6 +48,9 @@ ip_packet_match(const struct iphdr *ip,
  {
  	unsigned long ret;
  
@@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (NF_INVF(ipinfo, IPT_INV_SRCIP,
  		    (ip->saddr & ipinfo->smsk.s_addr) != ipinfo->src.s_addr) ||
  	    NF_INVF(ipinfo, IPT_INV_DSTIP,
-@@ -80,6 +83,29 @@ ip_packet_match(const struct iphdr *ip,
+@@ -78,6 +81,29 @@ ip_packet_match(const struct iphdr *ip,
  	return true;
  }
  
@@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static bool
  ip_checkentry(const struct ipt_ip *ip)
  {
-@@ -525,6 +551,8 @@ find_check_entry(struct ipt_entry *e, st
+@@ -523,6 +549,8 @@ find_check_entry(struct ipt_entry *e, st
  	struct xt_mtchk_param mtpar;
  	struct xt_entry_match *ematch;
  
@@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!xt_percpu_counter_alloc(alloc_state, &e->counters))
  		return -ENOMEM;
  
-@@ -819,6 +847,7 @@ copy_entries_to_user(unsigned int total_
+@@ -817,6 +845,7 @@ copy_entries_to_user(unsigned int total_
  	const struct xt_table_info *private = table->private;
  	int ret = 0;
  	const void *loc_cpu_entry;
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	counters = alloc_counters(table);
  	if (IS_ERR(counters))
-@@ -846,6 +875,14 @@ copy_entries_to_user(unsigned int total_
+@@ -844,6 +873,14 @@ copy_entries_to_user(unsigned int total_
  			goto free_counters;
  		}
  
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		for (i = sizeof(struct ipt_entry);
  		     i < e->target_offset;
  		     i += m->u.match_size) {
-@@ -1223,12 +1260,15 @@ compat_copy_entry_to_user(struct ipt_ent
+@@ -1221,12 +1258,15 @@ compat_copy_entry_to_user(struct ipt_ent
  	compat_uint_t origsize;
  	const struct xt_entry_match *ematch;
  	int ret = 0;
diff --git a/target/linux/generic/pending-6.6/611-netfilter_match_bypass_default_table.patch b/target/linux/generic/pending-6.6/611-netfilter_match_bypass_default_table.patch
index dd557fd3ea..9f0efe4ec4 100644
--- a/target/linux/generic/pending-6.6/611-netfilter_match_bypass_default_table.patch
+++ b/target/linux/generic/pending-6.6/611-netfilter_match_bypass_default_table.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/ipv4/netfilter/ip_tables.c
 +++ b/net/ipv4/netfilter/ip_tables.c
-@@ -246,6 +246,33 @@ struct ipt_entry *ipt_next_entry(const s
+@@ -244,6 +244,33 @@ struct ipt_entry *ipt_next_entry(const s
  	return (void *)entry + entry->next_offset;
  }
  
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /* Returns one of the generic firewall policies, like NF_ACCEPT. */
  unsigned int
  ipt_do_table(void *priv,
-@@ -267,27 +294,28 @@ ipt_do_table(void *priv,
+@@ -265,27 +292,28 @@ ipt_do_table(void *priv,
  	unsigned int addend;
  
  	/* Initialization */
@@ -86,7 +86,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	jumpstack  = (struct ipt_entry **)private->jumpstack[cpu];
  
  	/* Switch to alternate jumpstack if we're being invoked via TEE.
-@@ -300,7 +328,16 @@ ipt_do_table(void *priv,
+@@ -298,7 +326,16 @@ ipt_do_table(void *priv,
  	if (static_key_false(&xt_tee_enabled))
  		jumpstack += private->stacksize * __this_cpu_read(nf_skb_duplicated);
  
diff --git a/target/linux/generic/pending-6.6/612-netfilter_match_reduce_memory_access.patch b/target/linux/generic/pending-6.6/612-netfilter_match_reduce_memory_access.patch
index 79da6778b6..7f291fc008 100644
--- a/target/linux/generic/pending-6.6/612-netfilter_match_reduce_memory_access.patch
+++ b/target/linux/generic/pending-6.6/612-netfilter_match_reduce_memory_access.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/ipv4/netfilter/ip_tables.c
 +++ b/net/ipv4/netfilter/ip_tables.c
-@@ -53,9 +53,9 @@ ip_packet_match(const struct iphdr *ip,
+@@ -51,9 +51,9 @@ ip_packet_match(const struct iphdr *ip,
  	if (ipinfo->flags & IPT_F_NO_DEF_MATCH)
  		return true;
  
diff --git a/target/linux/generic/pending-6.6/630-packet_socket_type.patch b/target/linux/generic/pending-6.6/630-packet_socket_type.patch
index f12a09e65f..02d6700af9 100644
--- a/target/linux/generic/pending-6.6/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-6.6/630-packet_socket_type.patch
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  /* Packet socket options */
  
-@@ -59,6 +61,7 @@ struct sockaddr_ll {
+@@ -60,6 +62,7 @@ struct sockaddr_ll {
  #define PACKET_FANOUT_DATA		22
  #define PACKET_IGNORE_OUTGOING		23
  #define PACKET_VNET_HDR_SZ		24
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #define PACKET_FANOUT_LB		1
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -1866,6 +1866,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1864,6 +1864,7 @@ static int packet_rcv_spkt(struct sk_buf
  {
  	struct sock *sk;
  	struct sockaddr_pkt *spkt;
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	/*
  	 *	When we registered the protocol we saved the socket in the data
-@@ -1873,6 +1874,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1871,6 +1872,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 */
  
  	sk = pt->af_packet_priv;
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	/*
  	 *	Yank back the headers [hope the device set this
-@@ -1885,7 +1887,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1883,7 +1885,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 *	so that this procedure is noop.
  	 */
  
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		goto out;
  
  	if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2131,12 +2133,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2129,12 +2131,12 @@ static int packet_rcv(struct sk_buff *sk
  	unsigned int snaplen, res;
  	bool is_drop_n_account = false;
  
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -2263,12 +2265,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2261,12 +2263,12 @@ static int tpacket_rcv(struct sk_buff *s
  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
  
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -3378,6 +3380,7 @@ static int packet_create(struct net *net
+@@ -3386,6 +3388,7 @@ static int packet_create(struct net *net
  	mutex_init(&po->pg_vec_lock);
  	po->rollover = NULL;
  	po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
-@@ -4013,6 +4016,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -4035,6 +4038,16 @@ packet_setsockopt(struct socket *sock, i
  		packet_sock_flag_set(po, PACKET_SOCK_QDISC_BYPASS, val);
  		return 0;
  	}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	default:
  		return -ENOPROTOOPT;
  	}
-@@ -4069,6 +4082,13 @@ static int packet_getsockopt(struct sock
+@@ -4094,6 +4107,13 @@ static int packet_getsockopt(struct sock
  	case PACKET_VNET_HDR_SZ:
  		val = READ_ONCE(po->vnet_hdr_sz);
  		break;
@@ -128,7 +128,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		break;
 --- a/net/packet/internal.h
 +++ b/net/packet/internal.h
-@@ -136,6 +136,7 @@ struct packet_sock {
+@@ -131,6 +131,7 @@ struct packet_sock {
  	struct net_device __rcu	*cached_dev;
  	struct packet_type	prot_hook ____cacheline_aligned_in_smp;
  	atomic_t		tp_drops ____cacheline_aligned_in_smp;
diff --git a/target/linux/generic/pending-6.6/655-increase_skb_pad.patch b/target/linux/generic/pending-6.6/655-increase_skb_pad.patch
index 0c47bc9d2c..3e13511e8b 100644
--- a/target/linux/generic/pending-6.6/655-increase_skb_pad.patch
+++ b/target/linux/generic/pending-6.6/655-increase_skb_pad.patch
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -3006,7 +3006,7 @@ static inline int pskb_network_may_pull(
+@@ -3041,7 +3041,7 @@ static inline int pskb_network_may_pull(
   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
   */
  #ifndef NET_SKB_PAD
diff --git a/target/linux/generic/pending-6.6/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-6.6/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index b799c6fc9c..06126d65d3 100644
--- a/target/linux/generic/pending-6.6/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-6.6/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -311,7 +311,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  /**
   * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
   *   @t: the outgoing tunnel device
-@@ -1293,6 +1441,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1292,6 +1440,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
  		u8 protocol)
  {
  	struct ip6_tnl *t = netdev_priv(dev);
@@ -319,7 +319,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	struct ipv6hdr *ipv6h;
  	const struct iphdr  *iph;
  	int encap_limit = -1;
-@@ -1392,6 +1541,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1391,6 +1540,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
  	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
  	dsfield = INET_ECN_encapsulate(dsfield, orig_dsfield);
  
@@ -338,7 +338,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
  		return -1;
  
-@@ -1545,6 +1706,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1543,6 +1704,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
  	t->parms.fwmark = p->fwmark;
@@ -353,7 +353,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  }
-@@ -1579,6 +1748,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1577,6 +1746,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
  	p->flowinfo = u->flowinfo;
  	p->link = u->link;
  	p->proto = u->proto;
@@ -361,7 +361,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1965,6 +2135,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1963,6 +2133,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -377,7 +377,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -2002,6 +2181,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -2000,6 +2179,46 @@ static void ip6_tnl_netlink_parms(struct
  
  	if (data[IFLA_IPTUN_FWMARK])
  		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
@@ -424,7 +424,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  }
  
  static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -2085,6 +2304,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2083,6 +2302,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -437,7 +437,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -2114,6 +2339,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2112,6 +2337,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(0) +
  		/* IFLA_IPTUN_FWMARK */
  		nla_total_size(4) +
@@ -462,7 +462,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  		0;
  }
  
-@@ -2121,6 +2364,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2119,6 +2362,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
  	struct ip6_tnl *tunnel = netdev_priv(dev);
  	struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -472,7 +472,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2130,9 +2376,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2128,9 +2374,27 @@ static int ip6_tnl_fill_info(struct sk_b
  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
  	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
@@ -501,7 +501,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2172,6 +2436,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2170,6 +2434,7 @@ static const struct nla_policy ip6_tnl_p
  	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 },
  	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG },
  	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 },
diff --git a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 3ab023fdeb..e09decca56 100644
--- a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -20,7 +20,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 
 --- a/include/net/netns/ipv6.h
 +++ b/include/net/netns/ipv6.h
-@@ -85,6 +85,7 @@ struct netns_ipv6 {
+@@ -86,6 +86,7 @@ struct netns_ipv6 {
  	unsigned int		fib6_routes_require_src;
  #endif
  	struct rt6_info         *ip6_prohibit_entry;
@@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  static const struct rt6_info ip6_blk_hole_entry_template = {
  	.dst = {
  		.__rcuref	= RCUREF_INIT(1),
-@@ -1039,6 +1053,7 @@ static const int fib6_prop[RTN_MAX + 1]
+@@ -1037,6 +1051,7 @@ static const int fib6_prop[RTN_MAX + 1]
  	[RTN_BLACKHOLE]	= -EINVAL,
  	[RTN_UNREACHABLE] = -EHOSTUNREACH,
  	[RTN_PROHIBIT]	= -EACCES,
@@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	[RTN_THROW]	= -EAGAIN,
  	[RTN_NAT]	= -EINVAL,
  	[RTN_XRESOLVE]	= -EINVAL,
-@@ -1074,6 +1089,10 @@ static void ip6_rt_init_dst_reject(struc
+@@ -1072,6 +1087,10 @@ static void ip6_rt_init_dst_reject(struc
  		rt->dst.output = ip6_pkt_prohibit_out;
  		rt->dst.input = ip6_pkt_prohibit;
  		break;
@@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	case RTN_THROW:
  	case RTN_UNREACHABLE:
  	default:
-@@ -4540,6 +4559,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4539,6 +4558,17 @@ static int ip6_pkt_prohibit_out(struct n
  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -5033,7 +5063,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -5030,7 +5060,8 @@ static int rtm_to_fib6_config(struct sk_
  	if (rtm->rtm_type == RTN_UNREACHABLE ||
  	    rtm->rtm_type == RTN_BLACKHOLE ||
  	    rtm->rtm_type == RTN_PROHIBIT ||
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -6287,6 +6318,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6284,6 +6315,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -6298,6 +6331,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6295,6 +6328,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -6489,6 +6523,8 @@ static int __net_init ip6_route_net_init
+@@ -6495,6 +6529,8 @@ static int __net_init ip6_route_net_init
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	net->ipv6.fib6_has_custom_rules = false;
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
  					       sizeof(*net->ipv6.ip6_prohibit_entry),
  					       GFP_KERNEL);
-@@ -6499,11 +6535,21 @@ static int __net_init ip6_route_net_init
+@@ -6505,11 +6541,21 @@ static int __net_init ip6_route_net_init
  			 ip6_template_metrics, true);
  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
  
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
-@@ -6530,6 +6576,8 @@ out:
+@@ -6536,6 +6582,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -6549,6 +6597,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6555,6 +6603,7 @@ static void __net_exit ip6_route_net_exi
  	kfree(net->ipv6.ip6_null_entry);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	kfree(net->ipv6.ip6_blk_hole_entry);
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6632,6 +6681,9 @@ void __init ip6_route_init_special_entri
+@@ -6638,6 +6687,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index 26836240ee..af38c107ee 100644
--- a/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -2157,6 +2157,8 @@ struct net_device {
+@@ -2210,6 +2210,8 @@ struct net_device {
  	struct netdev_hw_addr_list	mc;
  	struct netdev_hw_addr_list	dev_addrs;
  
@@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -972,6 +972,7 @@ struct sk_buff {
+@@ -964,6 +964,7 @@ struct sk_buff {
  #ifdef CONFIG_IPV6_NDISC_NODETYPE
  	__u8			ndisc_nodetype:2;
  #endif
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	__u8			ipvs_property:1;
 --- a/net/core/gro.c
 +++ b/net/core/gro.c
-@@ -491,6 +491,9 @@ static enum gro_result dev_gro_receive(s
+@@ -445,6 +445,9 @@ static enum gro_result dev_gro_receive(s
  	enum gro_result ret;
  	int same_flow;
  
@@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -7625,6 +7625,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -7686,6 +7686,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
  				   void *upper_priv, void *upper_info,
-@@ -7676,6 +7718,7 @@ static int __netdev_upper_dev_link(struc
+@@ -7737,6 +7779,7 @@ static int __netdev_upper_dev_link(struc
  	if (ret)
  		return ret;
  
@@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  					    &changeupper_info.info);
  	ret = notifier_to_errno(ret);
-@@ -7772,6 +7815,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -7833,6 +7876,7 @@ static void __netdev_upper_dev_unlink(st
  
  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
  
@@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  				      &changeupper_info.info);
  
-@@ -8821,6 +8865,7 @@ int dev_set_mac_address(struct net_devic
+@@ -8889,6 +8933,7 @@ int dev_set_mac_address(struct net_devic
  			return err;
  	}
  	dev->addr_assign_type = NET_ADDR_SET;
diff --git a/target/linux/generic/pending-6.6/683-of_net-add-mac-address-to-of-tree.patch b/target/linux/generic/pending-6.6/683-of_net-add-mac-address-to-of-tree.patch
index 9e81cb1f27..0fb02dbb67 100644
--- a/target/linux/generic/pending-6.6/683-of_net-add-mac-address-to-of-tree.patch
+++ b/target/linux/generic/pending-6.6/683-of_net-add-mac-address-to-of-tree.patch
@@ -17,7 +17,7 @@ property. This way, the MAC address can be accessed using procfs.
 
 --- a/net/core/of_net.c
 +++ b/net/core/of_net.c
-@@ -95,6 +95,27 @@ static int of_get_mac_addr_nvmem(struct
+@@ -97,6 +97,27 @@ int of_get_mac_address_nvmem(struct devi
  }
  EXPORT_SYMBOL(of_get_mac_address_nvmem);
  
@@ -45,7 +45,7 @@ property. This way, the MAC address can be accessed using procfs.
  /**
   * of_get_mac_address()
   * @np:		Caller's Device Node
-@@ -130,17 +151,23 @@ int of_get_mac_address(struct device_nod
+@@ -132,17 +153,23 @@ int of_get_mac_address(struct device_nod
  
  	ret = of_get_mac_addr(np, "mac-address", addr);
  	if (!ret)
diff --git a/target/linux/generic/pending-6.6/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-6.6/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
index b335748705..6b93f47772 100644
--- a/target/linux/generic/pending-6.6/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
+++ b/target/linux/generic/pending-6.6/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch
@@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
 
 --- a/net/netfilter/nf_flow_table_core.c
 +++ b/net/netfilter/nf_flow_table_core.c
-@@ -659,6 +659,23 @@ static struct pernet_operations nf_flow_
+@@ -662,6 +662,23 @@ static struct pernet_operations nf_flow_
  	.exit_batch = nf_flow_table_pernet_exit,
  };
  
@@ -34,7 +34,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  static int __init nf_flow_table_module_init(void)
  {
  	int ret;
-@@ -671,8 +688,14 @@ static int __init nf_flow_table_module_i
+@@ -674,8 +691,14 @@ static int __init nf_flow_table_module_i
  	if (ret)
  		goto out_offload;
  
@@ -49,7 +49,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  out_offload:
  	unregister_pernet_subsys(&nf_flow_table_net_ops);
  	return ret;
-@@ -680,6 +703,7 @@ out_offload:
+@@ -683,6 +706,7 @@ out_offload:
  
  static void __exit nf_flow_table_module_exit(void)
  {
@@ -59,7 +59,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
  }
 --- a/net/netfilter/nft_flow_offload.c
 +++ b/net/netfilter/nft_flow_offload.c
-@@ -479,47 +479,14 @@ static struct nft_expr_type nft_flow_off
+@@ -480,47 +480,14 @@ static struct nft_expr_type nft_flow_off
  	.owner		= THIS_MODULE,
  };
  
diff --git a/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 757c0b2449..cc37180277 100644
--- a/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7911,7 +7911,7 @@ static int nft_register_flowtable_net_ho
+@@ -8213,7 +8213,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);
diff --git a/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch b/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch
index 842fef3a9c..b074f546c5 100644
--- a/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch
+++ b/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4941,6 +4941,8 @@ static int mtk_probe(struct platform_dev
+@@ -4982,6 +4982,8 @@ static int mtk_probe(struct platform_dev
  	 * for NAPI to work
  	 */
  	init_dummy_netdev(&eth->dummy_dev);
diff --git a/target/linux/generic/pending-6.6/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-6.6/703-phy-add-detach-callback-to-struct-phy_driver.patch
index 61dd11727f..5166dd2115 100644
--- a/target/linux/generic/pending-6.6/703-phy-add-detach-callback-to-struct-phy_driver.patch
+++ b/target/linux/generic/pending-6.6/703-phy-add-detach-callback-to-struct-phy_driver.patch
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1753,6 +1753,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1900,6 +1900,9 @@ void phy_detach(struct phy_device *phyde
  	if (phydev->devlink)
  		device_link_del(phydev->devlink);
  
@@ -23,7 +23,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  			sysfs_remove_link(&dev->dev.kobj, "phydev");
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -900,6 +900,12 @@ struct phy_driver {
+@@ -976,6 +976,12 @@ struct phy_driver {
  	/** @handle_interrupt: Override default interrupt handling */
  	irqreturn_t (*handle_interrupt)(struct phy_device *phydev);
  
diff --git a/target/linux/generic/pending-6.6/705-net-dsa-tag_mtk-add-padding-for-tx-packets.patch b/target/linux/generic/pending-6.6/705-net-dsa-tag_mtk-add-padding-for-tx-packets.patch
index d444b2027c..f7e4e77773 100644
--- a/target/linux/generic/pending-6.6/705-net-dsa-tag_mtk-add-padding-for-tx-packets.patch
+++ b/target/linux/generic/pending-6.6/705-net-dsa-tag_mtk-add-padding-for-tx-packets.patch
@@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/dsa/tag_mtk.c
 +++ b/net/dsa/tag_mtk.c
-@@ -27,6 +27,13 @@ static struct sk_buff *mtk_tag_xmit(stru
+@@ -29,6 +29,13 @@ static struct sk_buff *mtk_tag_xmit(stru
  
  	skb_set_queue_mapping(skb, dp->index);
  
diff --git a/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch b/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
index 85e42d5a94..05711780f5 100644
--- a/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
+++ b/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/if_bridge.h
 +++ b/include/linux/if_bridge.h
-@@ -59,6 +59,7 @@ struct br_ip_list {
+@@ -61,6 +61,7 @@ struct br_ip_list {
  #define BR_PORT_LOCKED		BIT(21)
  #define BR_PORT_MAB		BIT(22)
  #define BR_NEIGH_VLAN_SUPPRESS	BIT(23)
@@ -24,7 +24,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/bridge/br_forward.c
 +++ b/net/bridge/br_forward.c
-@@ -199,6 +199,7 @@ out:
+@@ -201,6 +201,7 @@ void br_flood(struct net_bridge *br, str
  	      enum br_pkt_type pkt_type, bool local_rcv, bool local_orig,
  	      u16 vid)
  {
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	struct net_bridge_port *prev = NULL;
  	struct net_bridge_port *p;
  
-@@ -214,6 +215,10 @@ void br_flood(struct net_bridge *br, str
+@@ -218,6 +219,10 @@ void br_flood(struct net_bridge *br, str
  		case BR_PKT_MULTICAST:
  			if (!(p->flags & BR_MCAST_FLOOD) && skb->dev != br->dev)
  				continue;
@@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			if (!(p->flags & BR_BCAST_FLOOD) && skb->dev != br->dev)
 --- a/net/bridge/br_input.c
 +++ b/net/bridge/br_input.c
-@@ -344,6 +344,8 @@ static rx_handler_result_t br_handle_fra
+@@ -362,6 +362,8 @@ static rx_handler_result_t br_handle_fra
  		fwd_mask |= p->group_fwd_mask;
  		switch (dest[5]) {
  		case 0x00:	/* Bridge Group Address */
@@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/include/uapi/linux/if_link.h
 +++ b/include/uapi/linux/if_link.h
-@@ -561,6 +561,7 @@ enum {
+@@ -571,6 +571,7 @@ enum {
  	IFLA_BRPORT_MCAST_MAX_GROUPS,
  	IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
  	IFLA_BRPORT_BACKUP_NHID,
@@ -116,7 +116,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
 --- a/net/bridge/br_netlink.c
 +++ b/net/bridge/br_netlink.c
-@@ -188,6 +188,7 @@ static inline size_t br_port_info_size(v
+@@ -190,6 +190,7 @@ static inline size_t br_port_info_size(v
  		+ nla_total_size(1)	/* IFLA_BRPORT_LOCKED */
  		+ nla_total_size(1)	/* IFLA_BRPORT_MAB */
  		+ nla_total_size(1)	/* IFLA_BRPORT_NEIGH_VLAN_SUPPRESS */
@@ -124,7 +124,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		+ nla_total_size(sizeof(struct ifla_bridge_id))	/* IFLA_BRPORT_ROOT_ID */
  		+ nla_total_size(sizeof(struct ifla_bridge_id))	/* IFLA_BRPORT_BRIDGE_ID */
  		+ nla_total_size(sizeof(u16))	/* IFLA_BRPORT_DESIGNATED_PORT */
-@@ -274,7 +275,8 @@ static int br_port_fill_attrs(struct sk_
+@@ -282,7 +283,8 @@ static int br_port_fill_attrs(struct sk_
  	    nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED)) ||
  	    nla_put_u8(skb, IFLA_BRPORT_MAB, !!(p->flags & BR_PORT_MAB)) ||
  	    nla_put_u8(skb, IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
@@ -134,7 +134,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		return -EMSGSIZE;
  
  	timerval = br_timer_value(&p->message_age_timer);
-@@ -878,6 +880,7 @@ static const struct nla_policy br_port_p
+@@ -901,6 +903,7 @@ static const struct nla_policy br_port_p
  	[IFLA_BRPORT_MCAST_MAX_GROUPS] = { .type = NLA_U32 },
  	[IFLA_BRPORT_NEIGH_VLAN_SUPPRESS] = NLA_POLICY_MAX(NLA_U8, 1),
  	[IFLA_BRPORT_BACKUP_NHID] = { .type = NLA_U32 },
@@ -142,7 +142,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  };
  
  /* Change the state of the port and notify spanning tree */
-@@ -943,6 +946,7 @@ static int br_setport(struct net_bridge_
+@@ -969,6 +972,7 @@ static int br_setport(struct net_bridge_
  	br_set_port_flag(p, tb, IFLA_BRPORT_MAB, BR_PORT_MAB);
  	br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
  			 BR_NEIGH_VLAN_SUPPRESS);
@@ -152,7 +152,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	    (!(p->flags & BR_PORT_LOCKED) || !(p->flags & BR_LEARNING))) {
 --- a/net/core/rtnetlink.c
 +++ b/net/core/rtnetlink.c
-@@ -57,7 +57,7 @@
+@@ -61,7 +61,7 @@
  #include "dev.h"
  
  #define RTNL_MAX_TYPE		50
@@ -161,7 +161,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  struct rtnl_link {
  	rtnl_doit_func		doit;
-@@ -4840,7 +4840,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
+@@ -4949,7 +4949,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
  	    brport_nla_put_flag(skb, flags, mask,
  				IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) ||
  	    brport_nla_put_flag(skb, flags, mask,
diff --git a/target/linux/generic/pending-6.6/711-01-net-dsa-qca8k-implement-lag_fdb_add-del-ops.patch b/target/linux/generic/pending-6.6/711-01-net-dsa-qca8k-implement-lag_fdb_add-del-ops.patch
index 629b141572..3197aea091 100644
--- a/target/linux/generic/pending-6.6/711-01-net-dsa-qca8k-implement-lag_fdb_add-del-ops.patch
+++ b/target/linux/generic/pending-6.6/711-01-net-dsa-qca8k-implement-lag_fdb_add-del-ops.patch
@@ -16,7 +16,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
 
 --- a/drivers/net/dsa/qca/qca8k-8xxx.c
 +++ b/drivers/net/dsa/qca/qca8k-8xxx.c
-@@ -2015,6 +2015,8 @@ static const struct dsa_switch_ops qca8k
+@@ -2012,6 +2012,8 @@ static const struct dsa_switch_ops qca8k
  	.port_fdb_add		= qca8k_port_fdb_add,
  	.port_fdb_del		= qca8k_port_fdb_del,
  	.port_fdb_dump		= qca8k_port_fdb_dump,
diff --git a/target/linux/generic/pending-6.6/711-02-net-dsa-qca8k-enable-flooding-to-both-CPU-port.patch b/target/linux/generic/pending-6.6/711-02-net-dsa-qca8k-enable-flooding-to-both-CPU-port.patch
index 24243468a8..b1d9f84cfe 100644
--- a/target/linux/generic/pending-6.6/711-02-net-dsa-qca8k-enable-flooding-to-both-CPU-port.patch
+++ b/target/linux/generic/pending-6.6/711-02-net-dsa-qca8k-enable-flooding-to-both-CPU-port.patch
@@ -14,7 +14,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
 
 --- a/drivers/net/dsa/qca/qca8k-8xxx.c
 +++ b/drivers/net/dsa/qca/qca8k-8xxx.c
-@@ -1904,15 +1904,12 @@ qca8k_setup(struct dsa_switch *ds)
+@@ -1901,15 +1901,12 @@ qca8k_setup(struct dsa_switch *ds)
  		}
  	}
  
diff --git a/target/linux/generic/pending-6.6/711-03-net-dsa-qca8k-add-support-for-port_change_master.patch b/target/linux/generic/pending-6.6/711-03-net-dsa-qca8k-add-support-for-port_change_master.patch
index 8a58e0f76e..9b553e77cd 100644
--- a/target/linux/generic/pending-6.6/711-03-net-dsa-qca8k-add-support-for-port_change_master.patch
+++ b/target/linux/generic/pending-6.6/711-03-net-dsa-qca8k-add-support-for-port_change_master.patch
@@ -26,7 +26,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
 
 --- a/drivers/net/dsa/qca/qca8k-8xxx.c
 +++ b/drivers/net/dsa/qca/qca8k-8xxx.c
-@@ -1741,6 +1741,117 @@ qca8k_get_tag_protocol(struct dsa_switch
+@@ -1738,6 +1738,117 @@ qca8k_get_tag_protocol(struct dsa_switch
  	return DSA_TAG_PROTO_QCA;
  }
  
@@ -144,7 +144,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  static void
  qca8k_master_change(struct dsa_switch *ds, const struct net_device *master,
  		    bool operational)
-@@ -2027,8 +2138,9 @@ static const struct dsa_switch_ops qca8k
+@@ -2024,8 +2135,9 @@ static const struct dsa_switch_ops qca8k
  	.phylink_mac_link_down	= qca8k_phylink_mac_link_down,
  	.phylink_mac_link_up	= qca8k_phylink_mac_link_up,
  	.get_phy_flags		= qca8k_get_phy_flags,
diff --git a/target/linux/generic/pending-6.6/712-net-dsa-qca8k-enable-assisted-learning-on-CPU-port.patch b/target/linux/generic/pending-6.6/712-net-dsa-qca8k-enable-assisted-learning-on-CPU-port.patch
index 23816fe366..18afa1c072 100644
--- a/target/linux/generic/pending-6.6/712-net-dsa-qca8k-enable-assisted-learning-on-CPU-port.patch
+++ b/target/linux/generic/pending-6.6/712-net-dsa-qca8k-enable-assisted-learning-on-CPU-port.patch
@@ -20,7 +20,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
 
 --- a/drivers/net/dsa/qca/qca8k-8xxx.c
 +++ b/drivers/net/dsa/qca/qca8k-8xxx.c
-@@ -2013,6 +2013,12 @@ qca8k_setup(struct dsa_switch *ds)
+@@ -2010,6 +2010,12 @@ qca8k_setup(struct dsa_switch *ds)
  			dev_err(priv->dev, "failed enabling QCA header mode on port %d", dp->index);
  			return ret;
  		}
@@ -33,7 +33,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  	}
  
  	/* Forward all unknown frames to CPU port for Linux processing */
-@@ -2042,11 +2048,6 @@ qca8k_setup(struct dsa_switch *ds)
+@@ -2039,11 +2045,6 @@ qca8k_setup(struct dsa_switch *ds)
  		if (ret)
  			return ret;
  
@@ -45,7 +45,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  		/* For port based vlans to work we need to set the
  		 * default egress vid
  		 */
-@@ -2098,6 +2099,9 @@ qca8k_setup(struct dsa_switch *ds)
+@@ -2095,6 +2096,9 @@ qca8k_setup(struct dsa_switch *ds)
  	/* Set max number of LAGs supported */
  	ds->num_lag_ids = QCA8K_NUM_LAGS;
  
diff --git a/target/linux/generic/pending-6.6/713-03-arm64-dts-qcom-ipq8074-add-clock-frequency-to-MDIO-n.patch b/target/linux/generic/pending-6.6/713-03-arm64-dts-qcom-ipq8074-add-clock-frequency-to-MDIO-n.patch
index 55f116ec5f..74cce98381 100644
--- a/target/linux/generic/pending-6.6/713-03-arm64-dts-qcom-ipq8074-add-clock-frequency-to-MDIO-n.patch
+++ b/target/linux/generic/pending-6.6/713-03-arm64-dts-qcom-ipq8074-add-clock-frequency-to-MDIO-n.patch
@@ -14,7 +14,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -263,6 +263,8 @@
+@@ -275,6 +275,8 @@
  			clocks = <&gcc GCC_MDIO_AHB_CLK>;
  			clock-names = "gcc_mdio_ahb_clk";
  
diff --git a/target/linux/generic/pending-6.6/721-net-phy-realtek-rtl8221-allow-to-configure-SERDES-mo.patch b/target/linux/generic/pending-6.6/721-net-phy-realtek-rtl8221-allow-to-configure-SERDES-mo.patch
index ed13b004e4..7e9b3660d5 100644
--- a/target/linux/generic/pending-6.6/721-net-phy-realtek-rtl8221-allow-to-configure-SERDES-mo.patch
+++ b/target/linux/generic/pending-6.6/721-net-phy-realtek-rtl8221-allow-to-configure-SERDES-mo.patch
@@ -23,7 +23,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -53,6 +53,15 @@
+@@ -54,6 +54,15 @@
  						 RTL8201F_ISR_LINK)
  #define RTL8201F_IER				0x13
  
@@ -39,7 +39,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
  #define RTL8366RB_POWER_SAVE			0x15
  #define RTL8366RB_POWER_SAVE_ON			BIT(12)
  
-@@ -851,6 +860,48 @@ static irqreturn_t rtl9000a_handle_inter
+@@ -879,6 +888,48 @@ static irqreturn_t rtl9000a_handle_inter
  	return IRQ_HANDLED;
  }
  
@@ -88,7 +88,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
  static struct phy_driver realtek_drvs[] = {
  	{
  		PHY_ID_MATCH_EXACT(0x00008201),
-@@ -1003,6 +1054,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1033,6 +1084,7 @@ static struct phy_driver realtek_drvs[]
  		PHY_ID_MATCH_EXACT(0x001cc849),
  		.name           = "RTL8221B-VB-CG 2.5Gbps PHY",
  		.get_features   = rtl822x_get_features,
@@ -96,7 +96,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
  		.config_aneg    = rtl822x_config_aneg,
  		.read_status    = rtl822x_read_status,
  		.suspend        = genphy_suspend,
-@@ -1014,6 +1066,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1044,6 +1096,7 @@ static struct phy_driver realtek_drvs[]
  		.name           = "RTL8221B-VM-CG 2.5Gbps PHY",
  		.get_features   = rtl822x_get_features,
  		.config_aneg    = rtl822x_config_aneg,
diff --git a/target/linux/generic/pending-6.6/722-net-phy-realtek-support-switching-between-SGMII-and-.patch b/target/linux/generic/pending-6.6/722-net-phy-realtek-support-switching-between-SGMII-and-.patch
index abe31e66af..58bd259198 100644
--- a/target/linux/generic/pending-6.6/722-net-phy-realtek-support-switching-between-SGMII-and-.patch
+++ b/target/linux/generic/pending-6.6/722-net-phy-realtek-support-switching-between-SGMII-and-.patch
@@ -16,7 +16,7 @@ Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -686,6 +686,25 @@ static int rtl822x_config_aneg(struct ph
+@@ -714,6 +714,25 @@ static int rtl822x_config_aneg(struct ph
  	return __genphy_config_aneg(phydev, ret);
  }
  
@@ -42,7 +42,7 @@ Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
  static int rtl822x_read_status(struct phy_device *phydev)
  {
  	int ret;
-@@ -704,11 +723,14 @@ static int rtl822x_read_status(struct ph
+@@ -732,11 +751,14 @@ static int rtl822x_read_status(struct ph
  			phydev->lp_advertising, lpadv & RTL_LPADV_2500FULL);
  	}
  
diff --git a/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch b/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch
index a18d1ad717..4ab8e24f99 100644
--- a/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch
+++ b/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch
@@ -15,7 +15,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
 
 --- a/drivers/net/dsa/mt7530.c
 +++ b/drivers/net/dsa/mt7530.c
-@@ -2252,6 +2252,10 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -2268,6 +2268,10 @@ mt7530_setup(struct dsa_switch *ds)
  		return -ENODEV;
  	}
  
diff --git a/target/linux/generic/pending-6.6/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch b/target/linux/generic/pending-6.6/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
index 8e0e4b1fdd..8efedd3a11 100644
--- a/target/linux/generic/pending-6.6/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
+++ b/target/linux/generic/pending-6.6/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
@@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -1040,6 +1040,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1070,6 +1070,7 @@ static struct phy_driver realtek_drvs[]
  		.write_page	= rtl821x_write_page,
  		.read_mmd	= rtl822x_read_mmd,
  		.write_mmd	= rtl822x_write_mmd,
@@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc840),
  		.name		= "RTL8226B_RTL8221B 2.5Gbps PHY",
-@@ -1052,6 +1053,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1082,6 +1083,7 @@ static struct phy_driver realtek_drvs[]
  		.write_page	= rtl821x_write_page,
  		.read_mmd	= rtl822x_read_mmd,
  		.write_mmd	= rtl822x_write_mmd,
@@ -31,7 +31,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc838),
  		.name           = "RTL8226-CG 2.5Gbps PHY",
-@@ -1062,6 +1064,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1092,6 +1094,7 @@ static struct phy_driver realtek_drvs[]
  		.resume         = rtlgen_resume,
  		.read_page      = rtl821x_read_page,
  		.write_page     = rtl821x_write_page,
@@ -39,7 +39,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc848),
  		.name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
-@@ -1072,6 +1075,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1102,6 +1105,7 @@ static struct phy_driver realtek_drvs[]
  		.resume         = rtlgen_resume,
  		.read_page      = rtl821x_read_page,
  		.write_page     = rtl821x_write_page,
@@ -47,7 +47,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc849),
  		.name           = "RTL8221B-VB-CG 2.5Gbps PHY",
-@@ -1083,6 +1087,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1113,6 +1117,7 @@ static struct phy_driver realtek_drvs[]
  		.resume         = rtlgen_resume,
  		.read_page      = rtl821x_read_page,
  		.write_page     = rtl821x_write_page,
@@ -55,7 +55,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}, {
  		PHY_ID_MATCH_EXACT(0x001cc84a),
  		.name           = "RTL8221B-VM-CG 2.5Gbps PHY",
-@@ -1094,6 +1099,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1124,6 +1129,7 @@ static struct phy_driver realtek_drvs[]
  		.resume         = rtlgen_resume,
  		.read_page      = rtl821x_read_page,
  		.write_page     = rtl821x_write_page,
diff --git a/target/linux/generic/pending-6.6/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch b/target/linux/generic/pending-6.6/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch
index babaa47aed..43cf35ab77 100644
--- a/target/linux/generic/pending-6.6/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch
+++ b/target/linux/generic/pending-6.6/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch
@@ -19,7 +19,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -885,6 +885,7 @@ static irqreturn_t rtl9000a_handle_inter
+@@ -913,6 +913,7 @@ static irqreturn_t rtl9000a_handle_inter
  static int rtl8221b_config_init(struct phy_device *phydev)
  {
  	u16 option_mode;
@@ -27,7 +27,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  	switch (phydev->interface) {
  	case PHY_INTERFACE_MODE_2500BASEX:
-@@ -921,6 +922,13 @@ static int rtl8221b_config_init(struct p
+@@ -949,6 +950,13 @@ static int rtl8221b_config_init(struct p
  		break;
  	}
  
diff --git a/target/linux/generic/pending-6.6/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch b/target/linux/generic/pending-6.6/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch
index 6e338d9474..be86a774ea 100644
--- a/target/linux/generic/pending-6.6/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch
+++ b/target/linux/generic/pending-6.6/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch
@@ -18,7 +18,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -737,9 +737,11 @@ static bool rtlgen_supports_2_5gbps(stru
+@@ -765,9 +765,11 @@ static bool rtlgen_supports_2_5gbps(stru
  {
  	int val;
  
diff --git a/target/linux/generic/pending-6.6/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch b/target/linux/generic/pending-6.6/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch
index cafaefd3bf..e6cbfbe649 100644
--- a/target/linux/generic/pending-6.6/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch
+++ b/target/linux/generic/pending-6.6/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch
@@ -14,7 +14,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -68,10 +68,6 @@
+@@ -69,10 +69,6 @@
  #define RTL_SUPPORTS_5000FULL			BIT(14)
  #define RTL_SUPPORTS_2500FULL			BIT(13)
  #define RTL_SUPPORTS_10000FULL			BIT(0)
@@ -25,7 +25,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  #define RTL9000A_GINMR				0x14
  #define RTL9000A_GINMR_LINK_STATUS		BIT(4)
-@@ -671,14 +667,11 @@ static int rtl822x_config_aneg(struct ph
+@@ -699,14 +695,11 @@ static int rtl822x_config_aneg(struct ph
  	int ret = 0;
  
  	if (phydev->autoneg == AUTONEG_ENABLE) {
@@ -44,7 +44,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		if (ret < 0)
  			return ret;
  	}
-@@ -715,12 +708,7 @@ static int rtl822x_read_status(struct ph
+@@ -743,12 +736,7 @@ static int rtl822x_read_status(struct ph
  		if (lpadv < 0)
  			return lpadv;
  
diff --git a/target/linux/generic/pending-6.6/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch b/target/linux/generic/pending-6.6/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch
index 8be1af6e50..329415bab5 100644
--- a/target/linux/generic/pending-6.6/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch
+++ b/target/linux/generic/pending-6.6/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch
@@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -708,6 +708,10 @@ static int rtl822x_read_status(struct ph
+@@ -736,6 +736,10 @@ static int rtl822x_read_status(struct ph
  		if (lpadv < 0)
  			return lpadv;
  
diff --git a/target/linux/generic/pending-6.6/729-net-phy-realtek-introduce-rtl822x_probe.patch b/target/linux/generic/pending-6.6/729-net-phy-realtek-introduce-rtl822x_probe.patch
index 92e7a8742a..7098fa6b28 100644
--- a/target/linux/generic/pending-6.6/729-net-phy-realtek-introduce-rtl822x_probe.patch
+++ b/target/linux/generic/pending-6.6/729-net-phy-realtek-introduce-rtl822x_probe.patch
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -62,6 +62,10 @@
+@@ -63,6 +63,10 @@
  #define RTL8221B_SERDES_OPTION_MODE_2500BASEX		2
  #define RTL8221B_SERDES_OPTION_MODE_HISGMII		3
  
@@ -24,7 +24,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #define RTL8366RB_POWER_SAVE			0x15
  #define RTL8366RB_POWER_SAVE_ON			BIT(12)
  
-@@ -750,6 +754,25 @@ static int rtl8226_match_phy_device(stru
+@@ -778,6 +782,25 @@ static int rtl8226_match_phy_device(stru
  	       rtlgen_supports_2_5gbps(phydev);
  }
  
@@ -50,7 +50,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int rtlgen_resume(struct phy_device *phydev)
  {
  	int ret = genphy_resume(phydev);
-@@ -1061,6 +1084,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1091,6 +1114,7 @@ static struct phy_driver realtek_drvs[]
  		.name           = "RTL8226-CG 2.5Gbps PHY",
  		.get_features   = rtl822x_get_features,
  		.config_aneg    = rtl822x_config_aneg,
@@ -58,7 +58,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		.read_status    = rtl822x_read_status,
  		.suspend        = genphy_suspend,
  		.resume         = rtlgen_resume,
-@@ -1072,6 +1096,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1102,6 +1126,7 @@ static struct phy_driver realtek_drvs[]
  		.name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
  		.get_features   = rtl822x_get_features,
  		.config_aneg    = rtl822x_config_aneg,
@@ -66,7 +66,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		.read_status    = rtl822x_read_status,
  		.suspend        = genphy_suspend,
  		.resume         = rtlgen_resume,
-@@ -1084,6 +1109,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1114,6 +1139,7 @@ static struct phy_driver realtek_drvs[]
  		.get_features   = rtl822x_get_features,
  		.config_init    = rtl8221b_config_init,
  		.config_aneg    = rtl822x_config_aneg,
@@ -74,7 +74,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		.read_status    = rtl822x_read_status,
  		.suspend        = genphy_suspend,
  		.resume         = rtlgen_resume,
-@@ -1096,6 +1122,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1126,6 +1152,7 @@ static struct phy_driver realtek_drvs[]
  		.get_features   = rtl822x_get_features,
  		.config_aneg    = rtl822x_config_aneg,
  		.config_init    = rtl8221b_config_init,
diff --git a/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch b/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
index 32d81d56f8..2a8e742a74 100644
--- a/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
+++ b/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -754,6 +754,38 @@ static int rtl8226_match_phy_device(stru
+@@ -782,6 +782,38 @@ static int rtl8226_match_phy_device(stru
  	       rtlgen_supports_2_5gbps(phydev);
  }
  
@@ -52,7 +52,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int rtl822x_probe(struct phy_device *phydev)
  {
  	struct device *dev = &phydev->mdio.dev;
-@@ -1104,7 +1136,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1134,7 +1166,7 @@ static struct phy_driver realtek_drvs[]
  		.write_page     = rtl821x_write_page,
  		.soft_reset     = genphy_soft_reset,
  	}, {
diff --git a/target/linux/generic/pending-6.6/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch b/target/linux/generic/pending-6.6/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch
index a7a4bafbb6..f92f60f349 100644
--- a/target/linux/generic/pending-6.6/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch
+++ b/target/linux/generic/pending-6.6/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch
@@ -17,7 +17,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -2192,7 +2192,7 @@ struct net_device {
+@@ -2245,7 +2245,7 @@ struct net_device {
  #if IS_ENABLED(CONFIG_AX25)
  	void			*ax25_ptr;
  #endif
@@ -28,7 +28,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  #if IS_ENABLED(CONFIG_IEEE802154) || IS_ENABLED(CONFIG_6LOWPAN)
 --- a/net/batman-adv/hard-interface.c
 +++ b/net/batman-adv/hard-interface.c
-@@ -308,7 +308,7 @@ static bool batadv_is_cfg80211_netdev(st
+@@ -309,7 +309,7 @@ static bool batadv_is_cfg80211_netdev(st
  	if (!net_device)
  		return false;
  
diff --git a/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch b/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
index 17c7d92ce0..e4b7070cbe 100644
--- a/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
+++ b/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
@@ -22,9 +22,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <net/dst_metadata.h>
 +#include <net/gso.h>
  #include <net/page_pool/helpers.h>
-
+ 
  #include "mtk_eth_soc.h"
-@@ -1562,12 +1562,28 @@ static void mtk_wake_queue(struct mtk_et
+@@ -1579,12 +1580,28 @@ static void mtk_wake_queue(struct mtk_et
  	}
  }
  
@@ -53,7 +53,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	bool gso = false;
  	int tx_num;
  
-@@ -1589,6 +1605,18 @@ static netdev_tx_t mtk_start_xmit(struct
+@@ -1606,6 +1623,18 @@ static netdev_tx_t mtk_start_xmit(struct
  		return NETDEV_TX_BUSY;
  	}
  
@@ -72,7 +72,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	/* TSO: fill MSS info in tcp checksum field */
  	if (skb_is_gso(skb)) {
  		if (skb_cow_head(skb, 0)) {
-@@ -1604,8 +1632,14 @@ static netdev_tx_t mtk_start_xmit(struct
+@@ -1621,8 +1650,14 @@ static netdev_tx_t mtk_start_xmit(struct
  		}
  	}
  
diff --git a/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch b/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
index afe561ab31..c9cd726aca 100644
--- a/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
+++ b/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
@@ -205,7 +205,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return mtk_eth_mux_setup(eth, path);
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -21,6 +21,8 @@
+@@ -22,6 +22,8 @@
  #include <linux/pinctrl/devinfo.h>
  #include <linux/phylink.h>
  #include <linux/pcs/pcs-mtk-lynxi.h>
@@ -214,7 +214,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #include <linux/jhash.h>
  #include <linux/bitfield.h>
  #include <net/dsa.h>
-@@ -258,12 +260,8 @@ static const char * const mtk_clks_sourc
+@@ -261,12 +263,8 @@ static const char * const mtk_clks_sourc
  	"ethwarp_wocpu2",
  	"ethwarp_wocpu1",
  	"ethwarp_wocpu0",
@@ -227,7 +227,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	"top_eth_gmii_sel",
  	"top_eth_refck_50m_sel",
  	"top_eth_sys_200m_sel",
-@@ -475,6 +473,30 @@ static void mtk_setup_bridge_switch(stru
+@@ -509,6 +507,30 @@ static void mtk_setup_bridge_switch(stru
  		MTK_GSW_CFG);
  }
  
@@ -258,7 +258,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static struct phylink_pcs *mtk_mac_select_pcs(struct phylink_config *config,
  					      phy_interface_t interface)
  {
-@@ -483,6 +505,21 @@ static struct phylink_pcs *mtk_mac_selec
+@@ -517,6 +539,21 @@ static struct phylink_pcs *mtk_mac_selec
  	struct mtk_eth *eth = mac->hw;
  	unsigned int sid;
  
@@ -280,7 +280,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	if (interface == PHY_INTERFACE_MODE_SGMII ||
  	    phy_interface_mode_is_8023z(interface)) {
  		sid = (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_SGMII)) ?
-@@ -544,7 +581,22 @@ static void mtk_mac_config(struct phylin
+@@ -568,7 +605,22 @@ static void mtk_mac_config(struct phylin
  					goto init_err;
  			}
  			break;
@@ -303,7 +303,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  			break;
  		default:
  			goto err_phy;
-@@ -599,8 +651,6 @@ static void mtk_mac_config(struct phylin
+@@ -615,8 +667,6 @@ static void mtk_mac_config(struct phylin
  		val &= ~SYSCFG0_GE_MODE(SYSCFG0_GE_MASK, mac->id);
  		val |= SYSCFG0_GE_MODE(ge_mode, mac->id);
  		regmap_write(eth->ethsys, ETHSYS_SYSCFG0, val);
@@ -312,7 +312,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}
  
  	/* SGMII */
-@@ -617,21 +667,40 @@ static void mtk_mac_config(struct phylin
+@@ -633,21 +683,40 @@ static void mtk_mac_config(struct phylin
  
  		/* Save the syscfg0 value for mac_finish */
  		mac->syscfg0 = val;
@@ -360,7 +360,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return;
  
  err_phy:
-@@ -644,6 +713,18 @@ init_err:
+@@ -660,6 +729,18 @@ init_err:
  		mac->id, phy_modes(state->interface), err);
  }
  
@@ -379,7 +379,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int mtk_mac_finish(struct phylink_config *config, unsigned int mode,
  			  phy_interface_t interface)
  {
-@@ -652,6 +733,10 @@ static int mtk_mac_finish(struct phylink
+@@ -668,6 +749,10 @@ static int mtk_mac_finish(struct phylink
  	struct mtk_eth *eth = mac->hw;
  	u32 mcr_cur, mcr_new;
  
@@ -390,7 +390,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	/* Enable SGMII */
  	if (interface == PHY_INTERFACE_MODE_SGMII ||
  	    phy_interface_mode_is_8023z(interface))
-@@ -677,10 +762,13 @@ static void mtk_mac_link_down(struct phy
+@@ -693,10 +778,13 @@ static void mtk_mac_link_down(struct phy
  {
  	struct mtk_mac *mac = container_of(config, struct mtk_mac,
  					   phylink_config);
@@ -407,7 +407,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  }
  
  static void mtk_set_queue_speed(struct mtk_eth *eth, unsigned int idx,
-@@ -752,13 +840,11 @@ static void mtk_set_queue_speed(struct m
+@@ -768,13 +856,11 @@ static void mtk_set_queue_speed(struct m
  	mtk_w32(eth, val, soc->reg_map->qdma.qtx_sch + ofs);
  }
  
@@ -425,7 +425,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	u32 mcr;
  
  	mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
-@@ -792,9 +878,63 @@ static void mtk_mac_link_up(struct phyli
+@@ -808,9 +894,63 @@ static void mtk_mac_link_up(struct phyli
  	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
  }
  
@@ -489,7 +489,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	.mac_finish = mtk_mac_finish,
  	.mac_link_down = mtk_mac_link_down,
  	.mac_link_up = mtk_mac_link_up,
-@@ -3373,6 +3513,9 @@ static int mtk_open(struct net_device *d
+@@ -3391,6 +3531,9 @@ static int mtk_open(struct net_device *d
  	struct mtk_eth *eth = mac->hw;
  	int i, err;
  
@@ -499,7 +499,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0);
  	if (err) {
  		netdev_err(dev, "%s: could not attach PHY: %d\n", __func__,
-@@ -3501,6 +3644,9 @@ static int mtk_stop(struct net_device *d
+@@ -3520,6 +3663,9 @@ static int mtk_stop(struct net_device *d
  	for (i = 0; i < ARRAY_SIZE(eth->ppe); i++)
  		mtk_ppe_stop(eth->ppe[i]);
  
@@ -509,7 +509,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return 0;
  }
  
-@@ -4498,6 +4644,7 @@ static const struct net_device_ops mtk_n
+@@ -4517,6 +4663,7 @@ static const struct net_device_ops mtk_n
  static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
  {
  	const __be32 *_id = of_get_property(np, "reg", NULL);
@@ -517,7 +517,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	phy_interface_t phy_mode;
  	struct phylink *phylink;
  	struct mtk_mac *mac;
-@@ -4533,16 +4680,41 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4553,16 +4700,41 @@ static int mtk_add_mac(struct mtk_eth *e
  	mac->id = id;
  	mac->hw = eth;
  	mac->of_node = np;
@@ -567,7 +567,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}
  
  	memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip));
-@@ -4616,8 +4788,21 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4645,8 +4817,21 @@ static int mtk_add_mac(struct mtk_eth *e
  		phy_interface_zero(mac->phylink_config.supported_interfaces);
  		__set_bit(PHY_INTERFACE_MODE_INTERNAL,
  			  mac->phylink_config.supported_interfaces);
@@ -589,7 +589,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	phylink = phylink_create(&mac->phylink_config,
  				 of_fwnode_handle(mac->of_node),
  				 phy_mode, &mtk_phylink_ops);
-@@ -4662,6 +4847,26 @@ free_netdev:
+@@ -4697,6 +4882,26 @@ free_netdev:
  	return err;
  }
  
@@ -616,7 +616,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev)
  {
  	struct net_device *dev, *tmp;
-@@ -4805,7 +5010,8 @@ static int mtk_probe(struct platform_dev
+@@ -4843,7 +5048,8 @@ static int mtk_probe(struct platform_dev
  			regmap_write(cci, 0, 3);
  	}
  
@@ -626,7 +626,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		err = mtk_sgmii_init(eth);
  
  		if (err)
-@@ -4916,6 +5122,24 @@ static int mtk_probe(struct platform_dev
+@@ -4954,6 +5160,24 @@ static int mtk_probe(struct platform_dev
  		}
  	}
  
@@ -651,7 +651,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) {
  		err = devm_request_irq(eth->dev, eth->irq[0],
  				       mtk_handle_irq, 0,
-@@ -5018,6 +5242,11 @@ static int mtk_remove(struct platform_de
+@@ -5056,6 +5280,11 @@ static int mtk_remove(struct platform_de
  		mtk_stop(eth->netdev[i]);
  		mac = netdev_priv(eth->netdev[i]);
  		phylink_disconnect_phy(mac->phylink);
diff --git a/target/linux/generic/pending-6.6/739-03-net-pcs-pcs-mtk-lynxi-add-platform-driver-for-MT7988.patch b/target/linux/generic/pending-6.6/739-03-net-pcs-pcs-mtk-lynxi-add-platform-driver-for-MT7988.patch
index adb95e9587..b67c8a0ea0 100644
--- a/target/linux/generic/pending-6.6/739-03-net-pcs-pcs-mtk-lynxi-add-platform-driver-for-MT7988.patch
+++ b/target/linux/generic/pending-6.6/739-03-net-pcs-pcs-mtk-lynxi-add-platform-driver-for-MT7988.patch
@@ -97,7 +97,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static int mtk_pcs_lynxi_config(struct phylink_pcs *pcs, unsigned int neg_mode,
  				phy_interface_t interface,
  				const unsigned long *advertising,
-@@ -148,6 +181,7 @@ static int mtk_pcs_lynxi_config(struct p
+@@ -147,6 +180,7 @@ static int mtk_pcs_lynxi_config(struct p
  				SGMII_PHYA_PWD);
  
  		/* Reset SGMII PCS state */
@@ -105,7 +105,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		regmap_set_bits(mpcs->regmap, SGMSYS_RESERVED_0,
  				SGMII_SW_RESET);
  
-@@ -234,10 +268,29 @@ static void mtk_pcs_lynxi_link_up(struct
+@@ -233,10 +267,29 @@ static void mtk_pcs_lynxi_link_up(struct
  	}
  }
  
@@ -135,7 +135,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	mpcs->interface = PHY_INTERFACE_MODE_NA;
  }
  
-@@ -247,11 +300,12 @@ static const struct phylink_pcs_ops mtk_
+@@ -246,11 +299,12 @@ static const struct phylink_pcs_ops mtk_
  	.pcs_an_restart = mtk_pcs_lynxi_restart_an,
  	.pcs_link_up = mtk_pcs_lynxi_link_up,
  	.pcs_disable = mtk_pcs_lynxi_disable,
@@ -151,7 +151,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  {
  	struct mtk_pcs_lynxi *mpcs;
  	u32 id, ver;
-@@ -259,29 +313,33 @@ struct phylink_pcs *mtk_pcs_lynxi_create
+@@ -258,29 +312,33 @@ struct phylink_pcs *mtk_pcs_lynxi_create
  
  	ret = regmap_read(regmap, SGMSYS_PCS_DEVICE_ID, &id);
  	if (ret < 0)
@@ -192,7 +192,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  	mpcs->ana_rgc3 = ana_rgc3;
  	mpcs->regmap = regmap;
-@@ -292,6 +350,13 @@ struct phylink_pcs *mtk_pcs_lynxi_create
+@@ -291,6 +349,13 @@ struct phylink_pcs *mtk_pcs_lynxi_create
  	mpcs->interface = PHY_INTERFACE_MODE_NA;
  
  	return &mpcs->pcs;
@@ -206,7 +206,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  }
  EXPORT_SYMBOL(mtk_pcs_lynxi_create);
  
-@@ -304,4 +369,144 @@ void mtk_pcs_lynxi_destroy(struct phylin
+@@ -303,4 +368,144 @@ void mtk_pcs_lynxi_destroy(struct phylin
  }
  EXPORT_SYMBOL(mtk_pcs_lynxi_destroy);
  
diff --git a/target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch b/target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
index 6fe29bc6c9..73ec05464a 100644
--- a/target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
+++ b/target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
@@ -19,7 +19,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -12934,7 +12934,9 @@ M:	Daniel Golle <daniel at makrotopia.org>
+@@ -13348,7 +13348,9 @@ M:	Daniel Golle <daniel at makrotopia.org>
  L:	netdev at vger.kernel.org
  S:	Maintained
  F:	drivers/net/pcs/pcs-mtk-lynxi.c
@@ -31,7 +31,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  M:	Daniel Golle <daniel at makrotopia.org>
 --- a/drivers/net/pcs/Kconfig
 +++ b/drivers/net/pcs/Kconfig
-@@ -18,6 +18,17 @@ config PCS_LYNX
+@@ -25,6 +25,17 @@ config PCS_MTK_LYNXI
  	  This module provides helpers to phylink for managing the LynxI PCS
  	  which is part of MediaTek's SoC and Ethernet switch ICs.
  
@@ -51,7 +51,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	depends on OF && (ARCH_RZN1 || COMPILE_TEST)
 --- a/drivers/net/pcs/Makefile
 +++ b/drivers/net/pcs/Makefile
-@@ -8,3 +8,4 @@ obj-$(CONFIG_PCS_XPCS)		+= pcs_xpcs.o
+@@ -7,3 +7,4 @@ obj-$(CONFIG_PCS_XPCS)		+= pcs_xpcs.o
  obj-$(CONFIG_PCS_LYNX)		+= pcs-lynx.o
  obj-$(CONFIG_PCS_MTK_LYNXI)	+= pcs-mtk-lynxi.o
  obj-$(CONFIG_PCS_RZN1_MIIC)	+= pcs-rzn1-miic.o
diff --git a/target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch b/target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
index 51cd98c883..3c68bf8bbd 100644
--- a/target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
+++ b/target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -981,6 +981,51 @@ static int rtl8221b_config_init(struct p
+@@ -1009,6 +1009,51 @@ static int rtl8221b_config_init(struct p
  	return 0;
  }
  
@@ -52,7 +52,7 @@
  static struct phy_driver realtek_drvs[] = {
  	{
  		PHY_ID_MATCH_EXACT(0x00008201),
-@@ -1141,6 +1186,8 @@ static struct phy_driver realtek_drvs[]
+@@ -1171,6 +1216,8 @@ static struct phy_driver realtek_drvs[]
  		.get_features   = rtl822x_get_features,
  		.config_init    = rtl8221b_config_init,
  		.config_aneg    = rtl822x_config_aneg,
diff --git a/target/linux/generic/pending-6.6/750-net-phy-airoha-Add-the-Airoha-EN8811H-PHY-driver.patch b/target/linux/generic/pending-6.6/750-net-phy-airoha-Add-the-Airoha-EN8811H-PHY-driver.patch
index 1dfa1366eb..c811e40d49 100644
--- a/target/linux/generic/pending-6.6/750-net-phy-airoha-Add-the-Airoha-EN8811H-PHY-driver.patch
+++ b/target/linux/generic/pending-6.6/750-net-phy-airoha-Add-the-Airoha-EN8811H-PHY-driver.patch
@@ -82,7 +82,7 @@ Signed-off-by: Eric Woudstra <ericwouds at gmail.com>
 
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -69,6 +69,11 @@ config SFP
+@@ -68,6 +68,11 @@ config SFP
  
  comment "MII PHY device drivers"
  
@@ -96,7 +96,7 @@ Signed-off-by: Eric Woudstra <ericwouds at gmail.com>
  	help
 --- a/drivers/net/phy/Makefile
 +++ b/drivers/net/phy/Makefile
-@@ -32,6 +32,7 @@ obj-y				+= $(sfp-obj-y) $(sfp-obj-m)
+@@ -34,6 +34,7 @@ obj-y				+= $(sfp-obj-y) $(sfp-obj-m)
  
  obj-$(CONFIG_ADIN_PHY)		+= adin.o
  obj-$(CONFIG_ADIN1100_PHY)	+= adin1100.o
diff --git a/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch b/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
index bb9149a668..013005f053 100644
--- a/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
+++ b/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
@@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -543,6 +543,7 @@ static inline bool napi_complete(struct
+@@ -558,6 +558,7 @@ static inline bool napi_complete(struct
  }
  
  int dev_set_threaded(struct net_device *dev, bool threaded);
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  /**
   *	napi_disable - prevent NAPI from scheduling
-@@ -3129,6 +3130,7 @@ struct softnet_data {
+@@ -3238,6 +3239,7 @@ struct softnet_data {
  	/* stats */
  	unsigned int		processed;
  	unsigned int		time_squeeze;
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4625,7 +4625,7 @@ static int napi_schedule_rps(struct soft
+@@ -4729,7 +4729,7 @@ static void napi_schedule_rps(struct sof
  	struct softnet_data *mysd = this_cpu_ptr(&softnet_data);
  
  #ifdef CONFIG_RPS
@@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		sd->rps_ipi_next = mysd->rps_ipi_list;
  		mysd->rps_ipi_list = sd;
  
-@@ -5806,6 +5806,8 @@ static DEFINE_PER_CPU(struct work_struct
+@@ -5848,6 +5848,8 @@ static DEFINE_PER_CPU(struct work_struct
  /* Network device is going away, flush any packets still pending */
  static void flush_backlog(struct work_struct *work)
  {
@@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	struct sk_buff *skb, *tmp;
  	struct softnet_data *sd;
  
-@@ -5820,8 +5822,17 @@ static void flush_backlog(struct work_st
+@@ -5862,8 +5864,17 @@ static void flush_backlog(struct work_st
  			input_queue_head_incr(sd);
  		}
  	}
@@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
  		if (skb->dev->reg_state == NETREG_UNREGISTERING) {
  			__skb_unlink(skb, &sd->process_queue);
-@@ -5829,7 +5840,16 @@ static void flush_backlog(struct work_st
+@@ -5871,7 +5882,16 @@ static void flush_backlog(struct work_st
  			input_queue_head_incr(sd);
  		}
  	}
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  static bool flush_required(int cpu)
-@@ -5961,6 +5981,7 @@ static int process_backlog(struct napi_s
+@@ -6003,6 +6023,7 @@ static int process_backlog(struct napi_s
  		}
  
  		rps_lock_irq_disable(sd);
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		if (skb_queue_empty(&sd->input_pkt_queue)) {
  			/*
  			 * Inline a custom version of __napi_complete().
-@@ -5970,7 +5991,8 @@ static int process_backlog(struct napi_s
+@@ -6012,7 +6033,8 @@ static int process_backlog(struct napi_s
  			 * We can use a plain write instead of clear_bit(),
  			 * and we dont need an smp_mb() memory barrier.
  			 */
@@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			again = false;
  		} else {
  			skb_queue_splice_tail_init(&sd->input_pkt_queue,
-@@ -6386,6 +6408,55 @@ int dev_set_threaded(struct net_device *
+@@ -6426,6 +6448,55 @@ int dev_set_threaded(struct net_device *
  }
  EXPORT_SYMBOL(dev_set_threaded);
  
@@ -157,7 +157,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
  			   int (*poll)(struct napi_struct *, int), int weight)
  {
-@@ -11168,6 +11239,9 @@ static int dev_cpu_dead(unsigned int old
+@@ -11348,6 +11419,9 @@ static int dev_cpu_dead(unsigned int old
  	raise_softirq_irqoff(NET_TX_SOFTIRQ);
  	local_irq_enable();
  
@@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #ifdef CONFIG_RPS
  	remsd = oldsd->rps_ipi_list;
  	oldsd->rps_ipi_list = NULL;
-@@ -11480,6 +11554,7 @@ static int __init net_dev_init(void)
+@@ -11663,6 +11737,7 @@ static int __init net_dev_init(void)
  		INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
  		spin_lock_init(&sd->defer_lock);
  
@@ -177,7 +177,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		sd->backlog.weight = weight_p;
 --- a/net/core/sysctl_net_core.c
 +++ b/net/core/sysctl_net_core.c
-@@ -29,6 +29,7 @@ static int int_3600 = 3600;
+@@ -30,6 +30,7 @@ static int int_3600 = 3600;
  static int min_sndbuf = SOCK_MIN_SNDBUF;
  static int min_rcvbuf = SOCK_MIN_RCVBUF;
  static int max_skb_frags = MAX_SKB_FRAGS;
@@ -185,7 +185,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  static int net_msg_warn;	/* Unused, but still a sysctl */
  
-@@ -112,6 +113,23 @@ static int rps_sock_flow_sysctl(struct c
+@@ -188,6 +189,23 @@ static int rps_sock_flow_sysctl(struct c
  }
  #endif /* CONFIG_RPS */
  
@@ -209,7 +209,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #ifdef CONFIG_NET_FLOW_LIMIT
  static DEFINE_MUTEX(flow_limit_update_mutex);
  
-@@ -473,6 +491,15 @@ static struct ctl_table net_core_table[]
+@@ -532,6 +550,15 @@ static struct ctl_table net_core_table[]
  		.proc_handler	= rps_sock_flow_sysctl
  	},
  #endif
diff --git a/target/linux/generic/pending-6.6/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch b/target/linux/generic/pending-6.6/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
index 9556c90b57..332d7e721a 100644
--- a/target/linux/generic/pending-6.6/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
+++ b/target/linux/generic/pending-6.6/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
@@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias at waldekranz.com>
 
 --- a/drivers/net/dsa/mv88e6xxx/chip.c
 +++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -7025,6 +7025,7 @@ static int mv88e6xxx_register_switch(str
+@@ -6883,6 +6883,7 @@ static int mv88e6xxx_register_switch(str
  	ds->ops = &mv88e6xxx_switch_ops;
  	ds->ageing_time_min = chip->info->age_time_coeff;
  	ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
diff --git a/target/linux/generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch b/target/linux/generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch
index 6c1f596759..551855a229 100644
--- a/target/linux/generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch
+++ b/target/linux/generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch
@@ -17,7 +17,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 
 --- a/drivers/net/vxlan/vxlan_core.c
 +++ b/drivers/net/vxlan/vxlan_core.c
-@@ -1493,6 +1493,10 @@ static bool vxlan_snoop(struct net_devic
+@@ -1446,6 +1446,10 @@ static bool vxlan_snoop(struct net_devic
  	struct vxlan_fdb *f;
  	u32 ifindex = 0;
  
diff --git a/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch b/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch
index d333f3f489..4b5eb767fd 100644
--- a/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch
+++ b/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch
@@ -16,7 +16,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 
 --- a/drivers/net/dsa/mt7530.c
 +++ b/drivers/net/dsa/mt7530.c
-@@ -2142,10 +2142,13 @@ mt7530_setup_mdio(struct mt7530_priv *pr
+@@ -2156,10 +2156,13 @@ mt7530_setup_mdio(struct mt7530_priv *pr
  {
  	struct dsa_switch *ds = priv->ds;
  	struct device *dev = priv->dev;
@@ -30,7 +30,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  	bus = devm_mdiobus_alloc(dev);
  	if (!bus)
  		return -ENOMEM;
-@@ -2162,7 +2165,9 @@ mt7530_setup_mdio(struct mt7530_priv *pr
+@@ -2178,7 +2181,9 @@ mt7530_setup_mdio(struct mt7530_priv *pr
  	if (priv->irq)
  		mt7530_setup_mdio_irq(priv);
  
diff --git a/target/linux/generic/pending-6.6/800-bcma-get-SoC-device-struct-copy-its-DMA-params-to-th.patch b/target/linux/generic/pending-6.6/800-bcma-get-SoC-device-struct-copy-its-DMA-params-to-th.patch
index 478a2cb27d..4a9c188d17 100644
--- a/target/linux/generic/pending-6.6/800-bcma-get-SoC-device-struct-copy-its-DMA-params-to-th.patch
+++ b/target/linux/generic/pending-6.6/800-bcma-get-SoC-device-struct-copy-its-DMA-params-to-th.patch
@@ -50,7 +50,7 @@ Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
  	if (err)
 --- a/drivers/bcma/main.c
 +++ b/drivers/bcma/main.c
-@@ -236,13 +236,17 @@ EXPORT_SYMBOL(bcma_core_irq);
+@@ -237,13 +237,17 @@ EXPORT_SYMBOL(bcma_core_irq);
  
  void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core)
  {
diff --git a/target/linux/generic/pending-6.6/801-gpio-gpio-cascade-add-generic-GPIO-cascade.patch b/target/linux/generic/pending-6.6/801-gpio-gpio-cascade-add-generic-GPIO-cascade.patch
index a13d405e64..ca4101f148 100644
--- a/target/linux/generic/pending-6.6/801-gpio-gpio-cascade-add-generic-GPIO-cascade.patch
+++ b/target/linux/generic/pending-6.6/801-gpio-gpio-cascade-add-generic-GPIO-cascade.patch
@@ -70,7 +70,7 @@ v1 -> v2:
 
 --- a/drivers/gpio/Kconfig
 +++ b/drivers/gpio/Kconfig
-@@ -1711,4 +1711,19 @@ config GPIO_SIM
+@@ -1819,4 +1819,19 @@ config GPIO_SIM
  
  endmenu
  
@@ -92,7 +92,7 @@ v1 -> v2:
  endif
 --- a/drivers/gpio/Makefile
 +++ b/drivers/gpio/Makefile
-@@ -43,6 +43,7 @@ obj-$(CONFIG_GPIO_BD9571MWV)		+= gpio-bd
+@@ -44,6 +44,7 @@ obj-$(CONFIG_GPIO_BD9571MWV)		+= gpio-bd
  obj-$(CONFIG_GPIO_BRCMSTB)		+= gpio-brcmstb.o
  obj-$(CONFIG_GPIO_BT8XX)		+= gpio-bt8xx.o
  obj-$(CONFIG_GPIO_CADENCE)		+= gpio-cadence.o
diff --git a/target/linux/generic/pending-6.6/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch b/target/linux/generic/pending-6.6/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch
index cb5d30db27..7f67091478 100644
--- a/target/linux/generic/pending-6.6/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch
+++ b/target/linux/generic/pending-6.6/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch
@@ -33,7 +33,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  	return 0;
 --- a/drivers/opp/core.c
 +++ b/drivers/opp/core.c
-@@ -816,7 +816,8 @@ static int _set_opp_voltage(struct devic
+@@ -902,7 +902,8 @@ static int _set_opp_voltage(struct devic
  
  static int
  _opp_config_clk_single(struct device *dev, struct opp_table *opp_table,
@@ -43,7 +43,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  {
  	unsigned long *target = data;
  	unsigned long freq;
-@@ -848,8 +849,8 @@ _opp_config_clk_single(struct device *de
+@@ -934,8 +935,8 @@ _opp_config_clk_single(struct device *de
   * the order in which they are present in the array while scaling up.
   */
  int dev_pm_opp_config_clks_simple(struct device *dev,
@@ -54,7 +54,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  {
  	int ret, i;
  
-@@ -1121,7 +1122,7 @@ static int _set_opp(struct device *dev,
+@@ -1217,7 +1218,7 @@ static int _set_opp(struct device *dev,
  	}
  
  	if (opp_table->config_clks) {
@@ -63,7 +63,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  		if (ret)
  			return ret;
  	}
-@@ -1196,7 +1197,7 @@ int dev_pm_opp_set_rate(struct device *d
+@@ -1292,7 +1293,7 @@ int dev_pm_opp_set_rate(struct device *d
  		 * equivalent to a clk_set_rate()
  		 */
  		if (!_get_opp_count(opp_table)) {
@@ -84,7 +84,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  			struct dev_pm_opp *opp, void *data, bool scaling_down);
  
  /**
-@@ -160,8 +161,8 @@ int dev_pm_opp_set_config(struct device
+@@ -172,8 +173,8 @@ int dev_pm_opp_set_config(struct device
  int devm_pm_opp_set_config(struct device *dev, struct dev_pm_opp_config *config);
  void dev_pm_opp_clear_config(int token);
  int dev_pm_opp_config_clks_simple(struct device *dev,
@@ -95,7 +95,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  
  struct dev_pm_opp *dev_pm_opp_xlate_required_opp(struct opp_table *src_table, struct opp_table *dst_table, struct dev_pm_opp *src_opp);
  int dev_pm_opp_xlate_performance_state(struct opp_table *src_table, struct opp_table *dst_table, unsigned int pstate);
-@@ -346,8 +347,8 @@ static inline int devm_pm_opp_set_config
+@@ -377,8 +378,8 @@ static inline int devm_pm_opp_set_config
  static inline void dev_pm_opp_clear_config(int token) {}
  
  static inline int dev_pm_opp_config_clks_simple(struct device *dev,
diff --git a/target/linux/generic/pending-6.6/804-nvmem-core-support-mac-base-fixed-layout-cells.patch b/target/linux/generic/pending-6.6/804-nvmem-core-support-mac-base-fixed-layout-cells.patch
index 2f0dcd91d9..d08ed63eaa 100644
--- a/target/linux/generic/pending-6.6/804-nvmem-core-support-mac-base-fixed-layout-cells.patch
+++ b/target/linux/generic/pending-6.6/804-nvmem-core-support-mac-base-fixed-layout-cells.patch
@@ -33,7 +33,7 @@ string.
  #include <linux/init.h>
  #include <linux/kref.h>
  #include <linux/module.h>
-@@ -780,6 +783,62 @@ static int nvmem_validate_keepouts(struc
+@@ -779,6 +782,62 @@ static int nvmem_validate_keepouts(struc
  	return 0;
  }
  
@@ -96,7 +96,7 @@ string.
  static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
  {
  	struct device *dev = &nvmem->dev;
-@@ -814,6 +873,25 @@ static int nvmem_add_cells_from_dt(struc
+@@ -813,6 +872,25 @@ static int nvmem_add_cells_from_dt(struc
  		if (nvmem->fixup_dt_cell_info)
  			nvmem->fixup_dt_cell_info(nvmem, &info);
  
diff --git a/target/linux/generic/pending-6.6/810-pci_disable_common_quirks.patch b/target/linux/generic/pending-6.6/810-pci_disable_common_quirks.patch
index ba06196f7c..9bdfcc7486 100644
--- a/target/linux/generic/pending-6.6/810-pci_disable_common_quirks.patch
+++ b/target/linux/generic/pending-6.6/810-pci_disable_common_quirks.patch
@@ -9,7 +9,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/drivers/pci/Kconfig
 +++ b/drivers/pci/Kconfig
-@@ -118,6 +118,13 @@ config XEN_PCIDEV_FRONTEND
+@@ -113,6 +113,13 @@ config XEN_PCIDEV_FRONTEND
  	  The PCI device frontend driver allows the kernel to import arbitrary
  	  PCI devices from a PCI backend to support PCI driver domains.
  
@@ -25,7 +25,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  
 --- a/drivers/pci/quirks.c
 +++ b/drivers/pci/quirks.c
-@@ -207,6 +207,7 @@ static void quirk_mmio_always_on(struct
+@@ -300,6 +300,7 @@ static void quirk_mmio_always_on(struct
  DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,
  				PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);
  
@@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * The Mellanox Tavor device gives false positive parity errors.  Disable
   * parity error reporting.
-@@ -3393,6 +3394,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -3488,6 +3489,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
  
@@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
   * To work around this, query the size it should be configured to by the
-@@ -3418,6 +3421,8 @@ static void quirk_intel_ntb(struct pci_d
+@@ -3513,6 +3516,8 @@ static void quirk_intel_ntb(struct pci_d
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
  
@@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  /*
   * Some BIOS implementations leave the Intel GPU interrupts enabled, even
   * though no one is handling them (e.g., if the i915 driver is never
-@@ -3456,6 +3461,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3551,6 +3556,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
  
diff --git a/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch
index eb5aa15d30..4c271a7bd8 100644
--- a/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch
+++ b/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch
@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static struct amd_chipset_info {
  	struct pci_dev	*nb_dev;
  	struct pci_dev	*smbus_dev;
-@@ -633,6 +635,10 @@ bool usb_amd_pt_check_port(struct device
+@@ -631,6 +633,10 @@ bool usb_amd_pt_check_port(struct device
  }
  EXPORT_SYMBOL_GPL(usb_amd_pt_check_port);
  
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /*
   * Make sure the controller is completely inactive, unable to
   * generate interrupts or do DMA.
-@@ -712,8 +718,17 @@ reset_needed:
+@@ -710,8 +716,17 @@ reset_needed:
  	uhci_reset_hc(pdev, base);
  	return 1;
  }
@@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
  {
  	u16 cmd;
-@@ -1285,3 +1300,4 @@ static void quirk_usb_early_handoff(stru
+@@ -1283,3 +1298,4 @@ static void quirk_usb_early_handoff(stru
  }
  DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
  			PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif  /*  __LINUX_USB_PCI_QUIRKS_H  */
 --- a/include/linux/usb/hcd.h
 +++ b/include/linux/usb/hcd.h
-@@ -483,7 +483,14 @@ extern int usb_hcd_pci_probe(struct pci_
+@@ -484,7 +484,14 @@ extern int usb_hcd_pci_probe(struct pci_
  extern void usb_hcd_pci_remove(struct pci_dev *dev);
  extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
  
diff --git a/target/linux/generic/pending-6.6/834-ledtrig-libata.patch b/target/linux/generic/pending-6.6/834-ledtrig-libata.patch
index 562f9b866c..0282e337e0 100644
--- a/target/linux/generic/pending-6.6/834-ledtrig-libata.patch
+++ b/target/linux/generic/pending-6.6/834-ledtrig-libata.patch
@@ -45,7 +45,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	depends on ACPI
 --- a/drivers/ata/libata-core.c
 +++ b/drivers/ata/libata-core.c
-@@ -663,6 +663,19 @@ u64 ata_tf_read_block(const struct ata_t
+@@ -685,6 +685,19 @@ static inline void ata_set_tf_cdl(struct
  	qc->flags |= ATA_QCFLAG_HAS_CDL | ATA_QCFLAG_RESULT_TF;
  }
  
@@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  /**
   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
   *	@qc: Metadata associated with the taskfile to build
-@@ -4716,6 +4729,9 @@ void __ata_qc_complete(struct ata_queued
+@@ -4771,6 +4784,9 @@ void __ata_qc_complete(struct ata_queued
  		link->active_tag = ATA_TAG_POISON;
  		ap->nr_active_links--;
  	}
@@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  	/* clear exclusive status */
  	if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL &&
-@@ -5438,6 +5454,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5494,6 +5510,9 @@ struct ata_port *ata_port_alloc(struct a
  	ap->stats.unhandled_irq = 1;
  	ap->stats.idle_irq = 1;
  #endif
@@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -5469,6 +5488,12 @@ static void ata_host_release(struct kref
+@@ -5530,6 +5549,12 @@ static void ata_host_release(struct kref
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
  		kfree(ap->ncq_sense_buf);
@@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		kfree(ap);
  		host->ports[i] = NULL;
  	}
-@@ -5875,7 +5900,23 @@ int ata_host_register(struct ata_host *h
+@@ -5920,7 +5945,23 @@ int ata_host_register(struct ata_host *h
  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
  		host->ports[i]->local_port_no = i + 1;
  	}
@@ -134,7 +134,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  /*
   * Define if arch has non-standard setup.  This is a _PCI_ standard
-@@ -864,6 +867,12 @@ struct ata_port {
+@@ -874,6 +877,12 @@ struct ata_port {
  #ifdef CONFIG_ATA_ACPI
  	struct ata_acpi_gtm	__acpi_init_gtm; /* use ata_acpi_init_gtm() */
  #endif
diff --git a/target/linux/generic/pending-6.6/840-hwrng-bcm2835-set-quality-to-1000.patch b/target/linux/generic/pending-6.6/840-hwrng-bcm2835-set-quality-to-1000.patch
index 5ca8933d6f..3172ad5a16 100644
--- a/target/linux/generic/pending-6.6/840-hwrng-bcm2835-set-quality-to-1000.patch
+++ b/target/linux/generic/pending-6.6/840-hwrng-bcm2835-set-quality-to-1000.patch
@@ -16,7 +16,7 @@ Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
 
 --- a/drivers/char/hw_random/bcm2835-rng.c
 +++ b/drivers/char/hw_random/bcm2835-rng.c
-@@ -170,6 +170,7 @@ static int bcm2835_rng_probe(struct plat
+@@ -169,6 +169,7 @@ static int bcm2835_rng_probe(struct plat
  	priv->rng.init = bcm2835_rng_init;
  	priv->rng.read = bcm2835_rng_read;
  	priv->rng.cleanup = bcm2835_rng_cleanup;
diff --git a/target/linux/generic/pending-6.6/920-mangle_bootargs.patch b/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
index 0d690e42e8..2ce1b9ccb5 100644
--- a/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
+++ b/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
@@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1827,6 +1827,15 @@ config EMBEDDED
+@@ -1811,6 +1811,15 @@ config DEBUG_RSEQ
  
  	  If unsure, say N.
  
@@ -31,7 +31,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  	help
 --- a/init/main.c
 +++ b/init/main.c
-@@ -611,6 +611,29 @@ static inline void setup_nr_cpu_ids(void
+@@ -608,6 +608,29 @@ static inline void setup_nr_cpu_ids(void
  static inline void smp_prepare_cpus(unsigned int maxcpus) { }
  #endif
  
@@ -61,7 +61,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  /*
   * We need to store the untouched command line for future reference.
   * We also need to store the touched command line since the parameter
-@@ -958,6 +981,7 @@ asmlinkage __visible void __init __no_sa
+@@ -895,6 +918,7 @@ void start_kernel(void)
  	pr_notice("%s", linux_banner);
  	early_security_init();
  	setup_arch(&command_line);



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:45 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:45 -0400
Subject: [openwrt/openwrt]  generic: 6.6: refresh backport patches
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15314.1710184671.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6bac820c0f6aa804eeef022875706ada70f1360f

commit 6bac820c0f6aa804eeef022875706ada70f1360f
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Mar 8 22:03:01 2024 +0800

    generic: 6.6: refresh backport patches
    
    Refresh backport patches with make target/linux/refresh.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 ...y-aquantia-move-MMD_VEND-define-to-header.patch |  2 +-
 ...et-phy-aquantia-add-firmware-load-support.patch |  2 +-
 ...e-addr-type-u8-in-phy_package_shared-stru.patch |  2 +-
 ...end-PHY-package-API-to-support-multiple-g.patch | 24 ++++-----
 ...tructure-__phy_write-read_mmd-to-helper-a.patch |  6 +--
 ...dd-support-for-PHY-package-MMD-read-write.patch |  4 +-
 ...-support-for-scanning-PHY-in-PHY-packages.patch |  4 +-
 ...t-phy-add-devm-of_phy_package_join-helper.patch | 12 ++---
 ...vide-whether-link-has-changed-in-c37_read.patch |  8 +--
 ...q4019-add-support-for-clock-frequency-pro.patch |  6 +--
 ...t-mtk_eth_soc-improve-keeping-track-of-of.patch | 18 +++----
 ...t-mediatek-fix-ppe-flow-accounting-for-L2.patch | 20 ++++----
 ...t-mtk_wed-do-not-assume-offload-callbacks.patch |  4 +-
 ...t-mtk_wed-introduce-versioning-utility-ro.patch | 40 +++++++--------
 ...t-mtk_wed-do-not-configure-rx-offload-if-.patch | 20 ++++----
 ...t-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch |  6 +--
 ...t-mtk_wed-introduce-mtk_wed_buf-structure.patch |  8 +--
 ...et-mtk_wed-add-mtk_wed_soc_data-structure.patch | 24 ++++-----
 ...t-mtk_wed-introduce-WED-support-for-MT798.patch | 60 +++++++++++-----------
 ...t-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch |  8 +--
 ...t-mtk_wed-introduce-partial-AMSDU-offload.patch | 26 +++++-----
 ...t-mtk_wed-introduce-hw_rro-support-for-MT.patch | 30 +++++------
 ...t-mtk_wed-debugfs-add-WED-3.0-debugfs-ent.patch |  2 +-
 ...thernet-mtk_wed-add-wed-3.0-reset-support.patch | 28 +++++-----
 ...y-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch |  4 +-
 ...1-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch |  6 +--
 ...2-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch |  6 +--
 ...70-net-introduce-napi_is_scheduled-helper.patch |  8 +--
 ...-01-net-stmmac-improve-TX-timer-arm-logic.patch |  2 +-
 ...-stmmac-increase-TX-coalesce-timer-to-5ms.patch |  2 +-
 .../795-v6.7-16-r8152-use-napi_gro_frags.patch     |  4 +-
 ...-omnia-Support-HW-controlled-mode-via-pri.patch |  4 +-
 ...xplicit-config-option-to-read-old-syntax-.patch | 14 ++---
 ...7-0004-Revert-nvmem-add-new-config-option.patch |  4 +-
 ....8-of-device-Export-of_device_make_bus_id.patch |  8 +--
 ...of_nvmem_layout_get_container-in-another-.patch |  2 +-
 ....8-0003-nvmem-Simplify-the-add_cells-hook.patch |  2 +-
 ...004-nvmem-Move-and-rename-fixup_cell_info.patch | 10 ++--
 ...-Rework-layouts-to-become-regular-devices.patch | 22 ++++----
 ...006-nvmem-core-Expose-cells-through-sysfs.patch | 10 ++--
 ...ts-refactor-.add_cells-callback-arguments.patch |  2 +-
 ...09-nvmem-drop-nvmem_layout_get_match_data.patch |  2 +-
 ...0010-nvmem-core-add-nvmem_dev_size-helper.patch |  2 +-
 ....7-net-phy-amd-Support-the-Altima-AMI101L.patch |  2 +-
 ...ds-trigger-netdev-Extend-speeds-up-to-10G.patch | 14 ++---
 ...y-add-support-for-PHY-LEDs-polarity-modes.patch |  8 +--
 ...4-v6.8-net-ethtool-implement-ethtool_puts.patch |  4 +-
 47 files changed, 253 insertions(+), 253 deletions(-)

diff --git a/target/linux/generic/backport-6.6/702-02-v6.7-net-phy-aquantia-move-MMD_VEND-define-to-header.patch b/target/linux/generic/backport-6.6/702-02-v6.7-net-phy-aquantia-move-MMD_VEND-define-to-header.patch
index 2b94522723..66fbf2444d 100644
--- a/target/linux/generic/backport-6.6/702-02-v6.7-net-phy-aquantia-move-MMD_VEND-define-to-header.patch
+++ b/target/linux/generic/backport-6.6/702-02-v6.7-net-phy-aquantia-move-MMD_VEND-define-to-header.patch
@@ -119,7 +119,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  static umode_t aqr_hwmon_is_visible(const void *data,
 --- a/drivers/net/phy/aquantia/aquantia_main.c
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -89,61 +89,6 @@
+@@ -91,61 +91,6 @@
  #define MDIO_C22EXT_STAT_SGMII_TX_FRAME_ALIGN_ERR	0xd31a
  #define MDIO_C22EXT_STAT_SGMII_TX_RUNT_FRAMES		0xd31b
  
diff --git a/target/linux/generic/backport-6.6/702-03-v6.7-net-phy-aquantia-add-firmware-load-support.patch b/target/linux/generic/backport-6.6/702-03-v6.7-net-phy-aquantia-add-firmware-load-support.patch
index aa52b3baa6..1ae5966df6 100644
--- a/target/linux/generic/backport-6.6/702-03-v6.7-net-phy-aquantia-add-firmware-load-support.patch
+++ b/target/linux/generic/backport-6.6/702-03-v6.7-net-phy-aquantia-add-firmware-load-support.patch
@@ -484,7 +484,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 +}
 --- a/drivers/net/phy/aquantia/aquantia_main.c
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -656,11 +656,17 @@ static int aqr107_resume(struct phy_devi
+@@ -658,11 +658,17 @@ static int aqr107_resume(struct phy_devi
  
  static int aqr107_probe(struct phy_device *phydev)
  {
diff --git a/target/linux/generic/backport-6.6/714-v6.8-01-net-phy-make-addr-type-u8-in-phy_package_shared-stru.patch b/target/linux/generic/backport-6.6/714-v6.8-01-net-phy-make-addr-type-u8-in-phy_package_shared-stru.patch
index 6decc3430b..456259281f 100644
--- a/target/linux/generic/backport-6.6/714-v6.8-01-net-phy-make-addr-type-u8-in-phy_package_shared-stru.patch
+++ b/target/linux/generic/backport-6.6/714-v6.8-01-net-phy-make-addr-type-u8-in-phy_package_shared-stru.patch
@@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -330,7 +330,7 @@ struct mdio_bus_stats {
+@@ -338,7 +338,7 @@ struct mdio_bus_stats {
   * phy_package_leave().
   */
  struct phy_package_shared {
diff --git a/target/linux/generic/backport-6.6/714-v6.8-02-net-phy-extend-PHY-package-API-to-support-multiple-g.patch b/target/linux/generic/backport-6.6/714-v6.8-02-net-phy-extend-PHY-package-API-to-support-multiple-g.patch
index 6e5ac8c63a..b95f15a581 100644
--- a/target/linux/generic/backport-6.6/714-v6.8-02-net-phy-extend-PHY-package-API-to-support-multiple-g.patch
+++ b/target/linux/generic/backport-6.6/714-v6.8-02-net-phy-extend-PHY-package-API-to-support-multiple-g.patch
@@ -87,7 +87,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	phy_unlock_mdio_bus(phydev);
 --- a/drivers/net/phy/mscc/mscc.h
 +++ b/drivers/net/phy/mscc/mscc.h
-@@ -414,6 +414,11 @@ struct vsc8531_private {
+@@ -416,6 +416,11 @@ struct vsc8531_private {
   * gpio_lock: used for PHC operations. Common for all PHYs as the load/save GPIO
   * is shared.
   */
@@ -101,7 +101,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  };
 --- a/drivers/net/phy/mscc/mscc_main.c
 +++ b/drivers/net/phy/mscc/mscc_main.c
-@@ -700,7 +700,7 @@ int phy_base_write(struct phy_device *ph
+@@ -711,7 +711,7 @@ int phy_base_write(struct phy_device *ph
  		dump_stack();
  	}
  
@@ -110,7 +110,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  }
  
  /* phydev->bus->mdio_lock should be locked when using this function */
-@@ -711,7 +711,7 @@ int phy_base_read(struct phy_device *phy
+@@ -722,7 +722,7 @@ int phy_base_read(struct phy_device *phy
  		dump_stack();
  	}
  
@@ -121,7 +121,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  u32 vsc85xx_csr_read(struct phy_device *phydev,
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1602,20 +1602,22 @@ EXPORT_SYMBOL_GPL(phy_driver_is_genphy_1
+@@ -1650,20 +1650,22 @@ EXPORT_SYMBOL_GPL(phy_driver_is_genphy_1
  /**
   * phy_package_join - join a common PHY group
   * @phydev: target phy_device struct
@@ -151,7 +151,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
   *
   * This will set the shared pointer of the phydev to the shared storage.
   * If this is the first call for a this cookie the shared storage will be
-@@ -1625,17 +1627,17 @@ EXPORT_SYMBOL_GPL(phy_driver_is_genphy_1
+@@ -1673,17 +1675,17 @@ EXPORT_SYMBOL_GPL(phy_driver_is_genphy_1
   * Returns < 1 on error, 0 on success. Esp. calling phy_package_join()
   * with the same cookie but a different priv_size is an error.
   */
@@ -172,7 +172,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	if (!shared) {
  		ret = -ENOMEM;
  		shared = kzalloc(sizeof(*shared), GFP_KERNEL);
-@@ -1647,9 +1649,9 @@ int phy_package_join(struct phy_device *
+@@ -1695,9 +1697,9 @@ int phy_package_join(struct phy_device *
  				goto err_free;
  			shared->priv_size = priv_size;
  		}
@@ -184,7 +184,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	} else {
  		ret = -EINVAL;
  		if (priv_size && priv_size != shared->priv_size)
-@@ -1687,7 +1689,7 @@ void phy_package_leave(struct phy_device
+@@ -1735,7 +1737,7 @@ void phy_package_leave(struct phy_device
  		return;
  
  	if (refcount_dec_and_mutex_lock(&shared->refcnt, &bus->shared_lock)) {
@@ -193,7 +193,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		mutex_unlock(&bus->shared_lock);
  		kfree(shared->priv);
  		kfree(shared);
-@@ -1706,7 +1708,8 @@ static void devm_phy_package_leave(struc
+@@ -1754,7 +1756,8 @@ static void devm_phy_package_leave(struc
   * devm_phy_package_join - resource managed phy_package_join()
   * @dev: device that is registering this PHY package
   * @phydev: target phy_device struct
@@ -203,7 +203,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
   * @priv_size: if non-zero allocate this amount of bytes for private data
   *
   * Managed phy_package_join(). Shared storage fetched by this function,
-@@ -1714,7 +1717,7 @@ static void devm_phy_package_leave(struc
+@@ -1762,7 +1765,7 @@ static void devm_phy_package_leave(struc
   * phy_package_join() for more information.
   */
  int devm_phy_package_join(struct device *dev, struct phy_device *phydev,
@@ -212,7 +212,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  {
  	struct phy_device **ptr;
  	int ret;
-@@ -1724,7 +1727,7 @@ int devm_phy_package_join(struct device
+@@ -1772,7 +1775,7 @@ int devm_phy_package_join(struct device
  	if (!ptr)
  		return -ENOMEM;
  
@@ -223,7 +223,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		*ptr = phydev;
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -319,7 +319,8 @@ struct mdio_bus_stats {
+@@ -327,7 +327,8 @@ struct mdio_bus_stats {
  
  /**
   * struct phy_package_shared - Shared information in PHY packages
@@ -233,7 +233,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
   * @refcnt: Number of PHYs connected to this shared data
   * @flags: Initialization of PHY package
   * @priv_size: Size of the shared private data @priv
-@@ -330,7 +331,7 @@ struct mdio_bus_stats {
+@@ -338,7 +339,7 @@ struct mdio_bus_stats {
   * phy_package_leave().
   */
  struct phy_package_shared {
diff --git a/target/linux/generic/backport-6.6/714-v6.8-03-net-phy-restructure-__phy_write-read_mmd-to-helper-a.patch b/target/linux/generic/backport-6.6/714-v6.8-03-net-phy-restructure-__phy_write-read_mmd-to-helper-a.patch
index 4a17d46453..f0ca35a1f0 100644
--- a/target/linux/generic/backport-6.6/714-v6.8-03-net-phy-restructure-__phy_write-read_mmd-to-helper-a.patch
+++ b/target/linux/generic/backport-6.6/714-v6.8-03-net-phy-restructure-__phy_write-read_mmd-to-helper-a.patch
@@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/phy/phy-core.c
 +++ b/drivers/net/phy/phy-core.c
-@@ -528,6 +528,28 @@ static void mmd_phy_indirect(struct mii_
+@@ -540,6 +540,28 @@ static void mmd_phy_indirect(struct mii_
  			devad | MII_MMD_CTRL_NOINCR);
  }
  
@@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  /**
   * __phy_read_mmd - Convenience function for reading a register
   * from an MMD on a given PHY.
-@@ -539,26 +561,14 @@ static void mmd_phy_indirect(struct mii_
+@@ -551,26 +573,14 @@ static void mmd_phy_indirect(struct mii_
   */
  int __phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum)
  {
@@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  }
  EXPORT_SYMBOL(__phy_read_mmd);
  
-@@ -595,28 +605,14 @@ EXPORT_SYMBOL(phy_read_mmd);
+@@ -607,28 +617,14 @@ EXPORT_SYMBOL(phy_read_mmd);
   */
  int __phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val)
  {
diff --git a/target/linux/generic/backport-6.6/714-v6.8-04-net-phy-add-support-for-PHY-package-MMD-read-write.patch b/target/linux/generic/backport-6.6/714-v6.8-04-net-phy-add-support-for-PHY-package-MMD-read-write.patch
index a628a37929..c20d2ec0c0 100644
--- a/target/linux/generic/backport-6.6/714-v6.8-04-net-phy-add-support-for-PHY-package-MMD-read-write.patch
+++ b/target/linux/generic/backport-6.6/714-v6.8-04-net-phy-add-support-for-PHY-package-MMD-read-write.patch
@@ -22,7 +22,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/phy/phy-core.c
 +++ b/drivers/net/phy/phy-core.c
-@@ -639,6 +639,146 @@ int phy_write_mmd(struct phy_device *phy
+@@ -651,6 +651,146 @@ int phy_write_mmd(struct phy_device *phy
  EXPORT_SYMBOL(phy_write_mmd);
  
  /**
@@ -171,7 +171,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
   * @regnum: register number to modify
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -1840,6 +1840,22 @@ static inline int __phy_package_write(st
+@@ -2057,6 +2057,22 @@ static inline int __phy_package_write(st
  	return __mdiobus_write(phydev->mdio.bus, addr, regnum, val);
  }
  
diff --git a/target/linux/generic/backport-6.6/716-v6.9-02-net-phy-add-support-for-scanning-PHY-in-PHY-packages.patch b/target/linux/generic/backport-6.6/716-v6.9-02-net-phy-add-support-for-scanning-PHY-in-PHY-packages.patch
index 50a454b2c9..81f2d1d8e6 100644
--- a/target/linux/generic/backport-6.6/716-v6.9-02-net-phy-add-support-for-scanning-PHY-in-PHY-packages.patch
+++ b/target/linux/generic/backport-6.6/716-v6.9-02-net-phy-add-support-for-scanning-PHY-in-PHY-packages.patch
@@ -143,7 +143,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  }
 --- a/drivers/net/phy/mdio_bus.c
 +++ b/drivers/net/phy/mdio_bus.c
-@@ -448,19 +448,34 @@ EXPORT_SYMBOL(of_mdio_find_bus);
+@@ -455,19 +455,34 @@ EXPORT_SYMBOL(of_mdio_find_bus);
   * found, set the of_node pointer for the mdio device. This allows
   * auto-probed phy devices to be supplied with information passed in
   * via DT.
@@ -185,7 +185,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		addr = of_mdio_parse_addr(dev, child);
  		if (addr < 0)
  			continue;
-@@ -470,9 +485,22 @@ static void of_mdiobus_link_mdiodev(stru
+@@ -477,9 +492,22 @@ static void of_mdiobus_link_mdiodev(stru
  			/* The refcount on "child" is passed to the mdio
  			 * device. Do _not_ use of_node_put(child) here.
  			 */
diff --git a/target/linux/generic/backport-6.6/716-v6.9-03-net-phy-add-devm-of_phy_package_join-helper.patch b/target/linux/generic/backport-6.6/716-v6.9-03-net-phy-add-devm-of_phy_package_join-helper.patch
index 00bbd3b80b..f3e814b1a0 100644
--- a/target/linux/generic/backport-6.6/716-v6.9-03-net-phy-add-devm-of_phy_package_join-helper.patch
+++ b/target/linux/generic/backport-6.6/716-v6.9-03-net-phy-add-devm-of_phy_package_join-helper.patch
@@ -27,7 +27,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1648,6 +1648,7 @@ int phy_package_join(struct phy_device *
+@@ -1698,6 +1698,7 @@ int phy_package_join(struct phy_device *
  			shared->priv_size = priv_size;
  		}
  		shared->base_addr = base_addr;
@@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		refcount_set(&shared->refcnt, 1);
  		bus->shared[base_addr] = shared;
  	} else {
-@@ -1671,6 +1672,63 @@ err_unlock:
+@@ -1721,6 +1722,63 @@ err_unlock:
  EXPORT_SYMBOL_GPL(phy_package_join);
  
  /**
@@ -99,7 +99,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
   * phy_package_leave - leave a common PHY group
   * @phydev: target phy_device struct
   *
-@@ -1686,6 +1744,10 @@ void phy_package_leave(struct phy_device
+@@ -1736,6 +1794,10 @@ void phy_package_leave(struct phy_device
  	if (!shared)
  		return;
  
@@ -110,7 +110,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	if (refcount_dec_and_mutex_lock(&shared->refcnt, &bus->shared_lock)) {
  		bus->shared[shared->base_addr] = NULL;
  		mutex_unlock(&bus->shared_lock);
-@@ -1739,6 +1801,40 @@ int devm_phy_package_join(struct device
+@@ -1789,6 +1851,40 @@ int devm_phy_package_join(struct device
  EXPORT_SYMBOL_GPL(devm_phy_package_join);
  
  /**
@@ -153,7 +153,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
   *
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -321,6 +321,7 @@ struct mdio_bus_stats {
+@@ -329,6 +329,7 @@ struct mdio_bus_stats {
   * struct phy_package_shared - Shared information in PHY packages
   * @base_addr: Base PHY address of PHY package used to combine PHYs
   *   in one package and for offset calculation of phy_package_read/write
@@ -161,7 +161,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
   * @refcnt: Number of PHYs connected to this shared data
   * @flags: Initialization of PHY package
   * @priv_size: Size of the shared private data @priv
-@@ -332,6 +333,8 @@ struct mdio_bus_stats {
+@@ -340,6 +341,8 @@ struct mdio_bus_stats {
   */
  struct phy_package_shared {
  	u8 base_addr;
diff --git a/target/linux/generic/backport-6.6/716-v6.9-06-net-phy-provide-whether-link-has-changed-in-c37_read.patch b/target/linux/generic/backport-6.6/716-v6.9-06-net-phy-provide-whether-link-has-changed-in-c37_read.patch
index acaa4a644e..0441c8f60f 100644
--- a/target/linux/generic/backport-6.6/716-v6.9-06-net-phy-provide-whether-link-has-changed-in-c37_read.patch
+++ b/target/linux/generic/backport-6.6/716-v6.9-06-net-phy-provide-whether-link-has-changed-in-c37_read.patch
@@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/phy/broadcom.c
 +++ b/drivers/net/phy/broadcom.c
-@@ -609,10 +609,11 @@ static int bcm54616s_config_aneg(struct
+@@ -665,10 +665,11 @@ static int bcm54616s_config_aneg(struct
  static int bcm54616s_read_status(struct phy_device *phydev)
  {
  	struct bcm54616s_phy_priv *priv = phydev->priv;
@@ -41,7 +41,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -2549,12 +2549,15 @@ EXPORT_SYMBOL(genphy_read_status);
+@@ -2607,12 +2607,15 @@ EXPORT_SYMBOL(genphy_read_status);
  /**
   * genphy_c37_read_status - check the link status and update current link state
   * @phydev: target phy_device struct
@@ -58,7 +58,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  {
  	int lpa, err, old_link = phydev->link;
  
-@@ -2564,9 +2567,13 @@ int genphy_c37_read_status(struct phy_de
+@@ -2622,9 +2625,13 @@ int genphy_c37_read_status(struct phy_de
  		return err;
  
  	/* why bother the PHY if nothing can have changed */
@@ -89,7 +89,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  }
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -1688,7 +1688,7 @@ int genphy_write_mmd_unsupported(struct
+@@ -1849,7 +1849,7 @@ int genphy_write_mmd_unsupported(struct
  
  /* Clause 37 */
  int genphy_c37_config_aneg(struct phy_device *phydev);
diff --git a/target/linux/generic/backport-6.6/720-v6.9-net-mdio-ipq4019-add-support-for-clock-frequency-pro.patch b/target/linux/generic/backport-6.6/720-v6.9-net-mdio-ipq4019-add-support-for-clock-frequency-pro.patch
index e6a240dbda..6749d7b0d9 100644
--- a/target/linux/generic/backport-6.6/720-v6.9-net-mdio-ipq4019-add-support-for-clock-frequency-pro.patch
+++ b/target/linux/generic/backport-6.6/720-v6.9-net-mdio-ipq4019-add-support-for-clock-frequency-pro.patch
@@ -90,7 +90,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  };
  
  static int ipq4019_mdio_wait_busy(struct mii_bus *bus)
-@@ -179,6 +191,38 @@ static int ipq4019_mdio_write(struct mii
+@@ -203,6 +215,38 @@ static int ipq4019_mdio_write_c22(struct
  	return 0;
  }
  
@@ -129,7 +129,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  static int ipq_mdio_reset(struct mii_bus *bus)
  {
  	struct ipq4019_mdio_data *priv = bus->priv;
-@@ -201,10 +245,58 @@ static int ipq_mdio_reset(struct mii_bus
+@@ -225,10 +269,58 @@ static int ipq_mdio_reset(struct mii_bus
  		return ret;
  
  	ret = clk_prepare_enable(priv->mdio_clk);
@@ -191,7 +191,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  }
  
  static int ipq4019_mdio_probe(struct platform_device *pdev)
-@@ -228,6 +320,11 @@ static int ipq4019_mdio_probe(struct pla
+@@ -252,6 +344,11 @@ static int ipq4019_mdio_probe(struct pla
  	if (IS_ERR(priv->mdio_clk))
  		return PTR_ERR(priv->mdio_clk);
  
diff --git a/target/linux/generic/backport-6.6/751-03-v6.4-net-ethernet-mtk_eth_soc-improve-keeping-track-of-of.patch b/target/linux/generic/backport-6.6/751-03-v6.4-net-ethernet-mtk_eth_soc-improve-keeping-track-of-of.patch
index 8b8a8e11c7..2689712228 100644
--- a/target/linux/generic/backport-6.6/751-03-v6.4-net-ethernet-mtk_eth_soc-improve-keeping-track-of-of.patch
+++ b/target/linux/generic/backport-6.6/751-03-v6.4-net-ethernet-mtk_eth_soc-improve-keeping-track-of-of.patch
@@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/ethernet/mediatek/mtk_ppe.c
 +++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
-@@ -476,42 +476,43 @@ int mtk_foe_entry_set_queue(struct mtk_e
+@@ -477,42 +477,43 @@ int mtk_foe_entry_set_queue(struct mtk_e
  	return 0;
  }
  
@@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		struct mtk_foe_entry *hwe = mtk_foe_get_entry(ppe, entry->hash);
  
  		hwe->ib1 &= ~MTK_FOE_IB1_STATE;
-@@ -531,7 +532,8 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp
+@@ -533,7 +534,8 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp
  	if (entry->type != MTK_FLOW_TYPE_L2_SUBFLOW)
  		return;
  
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	kfree(entry);
  }
  
-@@ -547,66 +549,55 @@ static int __mtk_foe_entry_idle_time(str
+@@ -549,66 +551,55 @@ static int __mtk_foe_entry_idle_time(str
  		return now - timestamp;
  }
  
@@ -181,7 +181,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  static void
-@@ -649,7 +640,8 @@ __mtk_foe_entry_commit(struct mtk_ppe *p
+@@ -651,7 +642,8 @@ __mtk_foe_entry_commit(struct mtk_ppe *p
  void mtk_foe_entry_clear(struct mtk_ppe *ppe, struct mtk_flow_entry *entry)
  {
  	spin_lock_bh(&ppe_lock);
@@ -191,7 +191,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	spin_unlock_bh(&ppe_lock);
  }
  
-@@ -696,8 +688,8 @@ mtk_foe_entry_commit_subflow(struct mtk_
+@@ -698,8 +690,8 @@ mtk_foe_entry_commit_subflow(struct mtk_
  {
  	const struct mtk_soc_data *soc = ppe->eth->soc;
  	struct mtk_flow_entry *flow_info;
@@ -201,7 +201,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	u32 ib1_mask = mtk_get_ib1_pkt_type_mask(ppe->eth) | MTK_FOE_IB1_UDP;
  	int type;
  
-@@ -705,30 +697,30 @@ mtk_foe_entry_commit_subflow(struct mtk_
+@@ -707,30 +699,30 @@ mtk_foe_entry_commit_subflow(struct mtk_
  	if (!flow_info)
  		return;
  
@@ -242,7 +242,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  void __mtk_ppe_check_skb(struct mtk_ppe *ppe, struct sk_buff *skb, u16 hash)
-@@ -738,9 +730,11 @@ void __mtk_ppe_check_skb(struct mtk_ppe
+@@ -740,9 +732,11 @@ void __mtk_ppe_check_skb(struct mtk_ppe
  	struct mtk_foe_entry *hwe = mtk_foe_get_entry(ppe, hash);
  	struct mtk_flow_entry *entry;
  	struct mtk_foe_bridge key = {};
@@ -254,7 +254,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	u8 *tag;
  
  	spin_lock_bh(&ppe_lock);
-@@ -748,20 +742,14 @@ void __mtk_ppe_check_skb(struct mtk_ppe
+@@ -750,20 +744,14 @@ void __mtk_ppe_check_skb(struct mtk_ppe
  	if (FIELD_GET(MTK_FOE_IB1_STATE, hwe->ib1) == MTK_FOE_STATE_BIND)
  		goto out;
  
@@ -281,7 +281,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			continue;
  		}
  
-@@ -810,9 +798,17 @@ out:
+@@ -814,9 +802,17 @@ out:
  
  int mtk_foe_entry_idle_time(struct mtk_ppe *ppe, struct mtk_flow_entry *entry)
  {
diff --git a/target/linux/generic/backport-6.6/751-04-v6.4-net-ethernet-mediatek-fix-ppe-flow-accounting-for-L2.patch b/target/linux/generic/backport-6.6/751-04-v6.4-net-ethernet-mediatek-fix-ppe-flow-accounting-for-L2.patch
index e5f0c2f54d..a93f80ac79 100644
--- a/target/linux/generic/backport-6.6/751-04-v6.4-net-ethernet-mediatek-fix-ppe-flow-accounting-for-L2.patch
+++ b/target/linux/generic/backport-6.6/751-04-v6.4-net-ethernet-mediatek-fix-ppe-flow-accounting-for-L2.patch
@@ -86,7 +86,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  static void mtk_ppe_cache_clear(struct mtk_ppe *ppe)
-@@ -522,14 +536,6 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp
+@@ -520,14 +534,6 @@ __mtk_foe_entry_clear(struct mtk_ppe *pp
  		hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID);
  		dma_wmb();
  		mtk_ppe_cache_clear(ppe);
@@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}
  	entry->hash = 0xffff;
  
-@@ -554,11 +560,14 @@ static int __mtk_foe_entry_idle_time(str
+@@ -552,11 +558,14 @@ static int __mtk_foe_entry_idle_time(str
  }
  
  static bool
@@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	int len;
  
  	if (hash == 0xffff)
-@@ -569,18 +578,35 @@ mtk_flow_entry_update(struct mtk_ppe *pp
+@@ -567,18 +576,35 @@ mtk_flow_entry_update(struct mtk_ppe *pp
  	memcpy(&foe, hwe, len);
  
  	if (!mtk_flow_entry_match(ppe->eth, entry, &foe, len) ||
@@ -156,7 +156,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	struct mtk_flow_entry *cur;
  	struct hlist_node *tmp;
  	int idle;
-@@ -589,7 +615,9 @@ mtk_flow_entry_update_l2(struct mtk_ppe
+@@ -587,7 +613,9 @@ mtk_flow_entry_update_l2(struct mtk_ppe
  	hlist_for_each_entry_safe(cur, tmp, &entry->l2_flows, l2_list) {
  		int cur_idle;
  
@@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			__mtk_foe_entry_clear(ppe, entry, false);
  			continue;
  		}
-@@ -604,10 +632,29 @@ mtk_flow_entry_update_l2(struct mtk_ppe
+@@ -602,10 +630,29 @@ mtk_flow_entry_update_l2(struct mtk_ppe
  	}
  }
  
@@ -197,7 +197,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	struct mtk_eth *eth = ppe->eth;
  	u16 timestamp = mtk_eth_timestamp(eth);
  	struct mtk_foe_entry *hwe;
-@@ -638,6 +685,12 @@ __mtk_foe_entry_commit(struct mtk_ppe *p
+@@ -636,6 +683,12 @@ __mtk_foe_entry_commit(struct mtk_ppe *p
  
  	dma_wmb();
  
@@ -210,7 +210,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	mtk_ppe_cache_clear(ppe);
  }
  
-@@ -802,21 +855,6 @@ void __mtk_ppe_check_skb(struct mtk_ppe
+@@ -800,21 +853,6 @@ out:
  	spin_unlock_bh(&ppe_lock);
  }
  
@@ -232,7 +232,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  int mtk_ppe_prepare_reset(struct mtk_ppe *ppe)
  {
  	if (!ppe)
-@@ -844,32 +882,6 @@ int mtk_ppe_prepare_reset(struct mtk_ppe
+@@ -842,32 +880,6 @@ int mtk_ppe_prepare_reset(struct mtk_ppe
  	return mtk_ppe_wait_busy(ppe);
  }
  
@@ -284,7 +284,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  void __mtk_ppe_check_skb(struct mtk_ppe *ppe, struct sk_buff *skb, u16 hash);
  
-@@ -397,9 +400,8 @@ int mtk_foe_entry_set_queue(struct mtk_e
+@@ -396,9 +399,8 @@ int mtk_foe_entry_set_queue(struct mtk_e
  			    unsigned int queue);
  int mtk_foe_entry_commit(struct mtk_ppe *ppe, struct mtk_flow_entry *entry);
  void mtk_foe_entry_clear(struct mtk_ppe *ppe, struct mtk_flow_entry *entry);
@@ -309,7 +309,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		seq_printf(m, "%05x %s %7s", i,
 --- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
 +++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -505,24 +505,21 @@ static int
+@@ -501,24 +501,21 @@ static int
  mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
  {
  	struct mtk_flow_entry *entry;
diff --git a/target/linux/generic/backport-6.6/752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch b/target/linux/generic/backport-6.6/752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch
index cd7fb92e20..d6ef40cd5b 100644
--- a/target/linux/generic/backport-6.6/752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch
+++ b/target/linux/generic/backport-6.6/752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch
@@ -14,7 +14,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -1712,19 +1712,20 @@ mtk_wed_irq_set_mask(struct mtk_wed_devi
+@@ -1713,19 +1713,20 @@ mtk_wed_irq_set_mask(struct mtk_wed_devi
  int mtk_wed_flow_add(int index)
  {
  	struct mtk_wed_hw *hw = hw_list[index];
@@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		goto out;
  	}
  
-@@ -1743,14 +1744,15 @@ void mtk_wed_flow_remove(int index)
+@@ -1744,14 +1745,15 @@ void mtk_wed_flow_remove(int index)
  {
  	struct mtk_wed_hw *hw = hw_list[index];
  
diff --git a/target/linux/generic/backport-6.6/752-06-v6.7-net-ethernet-mtk_wed-introduce-versioning-utility-ro.patch b/target/linux/generic/backport-6.6/752-06-v6.7-net-ethernet-mtk_wed-introduce-versioning-utility-ro.patch
index 2948188650..af4600a986 100644
--- a/target/linux/generic/backport-6.6/752-06-v6.7-net-ethernet-mtk_wed-introduce-versioning-utility-ro.patch
+++ b/target/linux/generic/backport-6.6/752-06-v6.7-net-ethernet-mtk_wed-introduce-versioning-utility-ro.patch
@@ -15,7 +15,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -277,7 +277,7 @@ mtk_wed_assign(struct mtk_wed_device *de
+@@ -278,7 +278,7 @@ mtk_wed_assign(struct mtk_wed_device *de
  		if (!hw->wed_dev)
  			goto out;
  
@@ -24,7 +24,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  			return NULL;
  
  		/* MT7986 WED devices do not have any pcie slot restrictions */
-@@ -358,7 +358,7 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
+@@ -359,7 +359,7 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
  			desc->buf0 = cpu_to_le32(buf_phys);
  			desc->buf1 = cpu_to_le32(buf_phys + txd_size);
  
@@ -33,7 +33,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  				ctrl = FIELD_PREP(MTK_WDMA_DESC_CTRL_LEN0, txd_size) |
  				       FIELD_PREP(MTK_WDMA_DESC_CTRL_LEN1,
  						  MTK_WED_BUF_SIZE - txd_size) |
-@@ -497,7 +497,7 @@ mtk_wed_set_ext_int(struct mtk_wed_devic
+@@ -498,7 +498,7 @@ mtk_wed_set_ext_int(struct mtk_wed_devic
  {
  	u32 mask = MTK_WED_EXT_INT_STATUS_ERROR_MASK;
  
@@ -42,7 +42,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		mask |= MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR;
  	else
  		mask |= MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH |
-@@ -576,7 +576,7 @@ mtk_wed_dma_disable(struct mtk_wed_devic
+@@ -577,7 +577,7 @@ mtk_wed_dma_disable(struct mtk_wed_devic
  		 MTK_WDMA_GLO_CFG_RX_INFO1_PRERES |
  		 MTK_WDMA_GLO_CFG_RX_INFO2_PRERES);
  
@@ -51,7 +51,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		regmap_write(dev->hw->mirror, dev->hw->index * 4, 0);
  		wdma_clr(dev, MTK_WDMA_GLO_CFG,
  			 MTK_WDMA_GLO_CFG_RX_INFO3_PRERES);
-@@ -605,7 +605,7 @@ mtk_wed_stop(struct mtk_wed_device *dev)
+@@ -606,7 +606,7 @@ mtk_wed_stop(struct mtk_wed_device *dev)
  	wdma_w32(dev, MTK_WDMA_INT_GRP2, 0);
  	wed_w32(dev, MTK_WED_WPDMA_INT_MASK, 0);
  
@@ -60,7 +60,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		return;
  
  	wed_w32(dev, MTK_WED_EXT_INT_MASK1, 0);
-@@ -624,7 +624,7 @@ mtk_wed_deinit(struct mtk_wed_device *de
+@@ -625,7 +625,7 @@ mtk_wed_deinit(struct mtk_wed_device *de
  		MTK_WED_CTRL_WED_TX_BM_EN |
  		MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
  
@@ -69,7 +69,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		return;
  
  	wed_clr(dev, MTK_WED_CTRL,
-@@ -730,7 +730,7 @@ mtk_wed_bus_init(struct mtk_wed_device *
+@@ -731,7 +731,7 @@ mtk_wed_bus_init(struct mtk_wed_device *
  static void
  mtk_wed_set_wpdma(struct mtk_wed_device *dev)
  {
@@ -78,7 +78,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_WPDMA_CFG_BASE,  dev->wlan.wpdma_phys);
  	} else {
  		mtk_wed_bus_init(dev);
-@@ -761,7 +761,7 @@ mtk_wed_hw_init_early(struct mtk_wed_dev
+@@ -762,7 +762,7 @@ mtk_wed_hw_init_early(struct mtk_wed_dev
  	      MTK_WED_WDMA_GLO_CFG_IDLE_DMAD_SUPPLY;
  	wed_m32(dev, MTK_WED_WDMA_GLO_CFG, mask, set);
  
@@ -87,7 +87,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		u32 offset = dev->hw->index ? 0x04000400 : 0;
  
  		wdma_set(dev, MTK_WDMA_GLO_CFG,
-@@ -934,7 +934,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d
+@@ -935,7 +935,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d
  
  	wed_w32(dev, MTK_WED_TX_BM_BUF_LEN, MTK_WED_PKT_SIZE);
  
@@ -96,7 +96,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_TX_BM_TKID,
  			FIELD_PREP(MTK_WED_TX_BM_TKID_START,
  				   dev->wlan.token_start) |
-@@ -967,7 +967,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d
+@@ -968,7 +968,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d
  
  	mtk_wed_reset(dev, MTK_WED_RESET_TX_BM);
  
@@ -105,7 +105,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_set(dev, MTK_WED_CTRL,
  			MTK_WED_CTRL_WED_TX_BM_EN |
  			MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
-@@ -1217,7 +1217,7 @@ mtk_wed_reset_dma(struct mtk_wed_device
+@@ -1218,7 +1218,7 @@ mtk_wed_reset_dma(struct mtk_wed_device
  	}
  
  	dev->init_done = false;
@@ -114,7 +114,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		return;
  
  	if (!busy) {
-@@ -1343,7 +1343,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev
+@@ -1344,7 +1344,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev
  		MTK_WED_CTRL_WED_TX_BM_EN |
  		MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
  
@@ -123,7 +123,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_PCIE_INT_TRIGGER,
  			MTK_WED_PCIE_INT_TRIGGER_STATUS);
  
-@@ -1416,7 +1416,7 @@ mtk_wed_dma_enable(struct mtk_wed_device
+@@ -1417,7 +1417,7 @@ mtk_wed_dma_enable(struct mtk_wed_device
  		 MTK_WDMA_GLO_CFG_RX_INFO1_PRERES |
  		 MTK_WDMA_GLO_CFG_RX_INFO2_PRERES);
  
@@ -132,7 +132,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wdma_set(dev, MTK_WDMA_GLO_CFG,
  			 MTK_WDMA_GLO_CFG_RX_INFO3_PRERES);
  	} else {
-@@ -1465,7 +1465,7 @@ mtk_wed_start(struct mtk_wed_device *dev
+@@ -1466,7 +1466,7 @@ mtk_wed_start(struct mtk_wed_device *dev
  
  	mtk_wed_set_ext_int(dev, true);
  
@@ -141,7 +141,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		u32 val = dev->wlan.wpdma_phys | MTK_PCIE_MIRROR_MAP_EN |
  			  FIELD_PREP(MTK_PCIE_MIRROR_MAP_WED_ID,
  				     dev->hw->index);
-@@ -1550,7 +1550,7 @@ mtk_wed_attach(struct mtk_wed_device *de
+@@ -1551,7 +1551,7 @@ mtk_wed_attach(struct mtk_wed_device *de
  	}
  
  	mtk_wed_hw_init_early(dev);
@@ -150,7 +150,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		regmap_update_bits(hw->hifsys, HIFSYS_DMA_AG_MAP,
  				   BIT(hw->index), 0);
  	} else {
-@@ -1618,7 +1618,7 @@ static int
+@@ -1619,7 +1619,7 @@ static int
  mtk_wed_txfree_ring_setup(struct mtk_wed_device *dev, void __iomem *regs)
  {
  	struct mtk_wed_ring *ring = &dev->txfree_ring;
@@ -159,7 +159,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	/*
  	 * For txfree event handling, the same DMA ring is shared between WED
-@@ -1676,7 +1676,7 @@ mtk_wed_irq_get(struct mtk_wed_device *d
+@@ -1677,7 +1677,7 @@ mtk_wed_irq_get(struct mtk_wed_device *d
  {
  	u32 val, ext_mask = MTK_WED_EXT_INT_STATUS_ERROR_MASK;
  
@@ -168,7 +168,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		ext_mask |= MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR;
  	else
  		ext_mask |= MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH |
-@@ -1843,7 +1843,7 @@ mtk_wed_setup_tc(struct mtk_wed_device *
+@@ -1844,7 +1844,7 @@ mtk_wed_setup_tc(struct mtk_wed_device *
  {
  	struct mtk_wed_hw *hw = wed->hw;
  
@@ -177,7 +177,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		return -EOPNOTSUPP;
  
  	switch (type) {
-@@ -1917,9 +1917,9 @@ void mtk_wed_add_hw(struct device_node *
+@@ -1918,9 +1918,9 @@ void mtk_wed_add_hw(struct device_node *
  	hw->wdma = wdma;
  	hw->index = index;
  	hw->irq = irq;
@@ -210,7 +210,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  {
 --- a/drivers/net/ethernet/mediatek/mtk_wed_debugfs.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed_debugfs.c
-@@ -263,7 +263,7 @@ void mtk_wed_hw_add_debugfs(struct mtk_w
+@@ -261,7 +261,7 @@ void mtk_wed_hw_add_debugfs(struct mtk_w
  	debugfs_create_u32("regidx", 0600, dir, &hw->debugfs_reg);
  	debugfs_create_file_unsafe("regval", 0600, dir, hw, &fops_regval);
  	debugfs_create_file_unsafe("txinfo", 0400, dir, hw, &wed_txinfo_fops);
diff --git a/target/linux/generic/backport-6.6/752-07-v6.7-net-ethernet-mtk_wed-do-not-configure-rx-offload-if-.patch b/target/linux/generic/backport-6.6/752-07-v6.7-net-ethernet-mtk_wed-do-not-configure-rx-offload-if-.patch
index bc34aa33a9..d5bacde325 100644
--- a/target/linux/generic/backport-6.6/752-07-v6.7-net-ethernet-mtk_wed-do-not-configure-rx-offload-if-.patch
+++ b/target/linux/generic/backport-6.6/752-07-v6.7-net-ethernet-mtk_wed-do-not-configure-rx-offload-if-.patch
@@ -15,7 +15,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -605,7 +605,7 @@ mtk_wed_stop(struct mtk_wed_device *dev)
+@@ -606,7 +606,7 @@ mtk_wed_stop(struct mtk_wed_device *dev)
  	wdma_w32(dev, MTK_WDMA_INT_GRP2, 0);
  	wed_w32(dev, MTK_WED_WPDMA_INT_MASK, 0);
  
@@ -24,7 +24,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		return;
  
  	wed_w32(dev, MTK_WED_EXT_INT_MASK1, 0);
-@@ -732,16 +732,21 @@ mtk_wed_set_wpdma(struct mtk_wed_device
+@@ -733,16 +733,21 @@ mtk_wed_set_wpdma(struct mtk_wed_device
  {
  	if (mtk_wed_is_v1(dev->hw)) {
  		wed_w32(dev, MTK_WED_WPDMA_CFG_BASE,  dev->wlan.wpdma_phys);
@@ -55,7 +55,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -973,15 +978,17 @@ mtk_wed_hw_init(struct mtk_wed_device *d
+@@ -974,15 +979,17 @@ mtk_wed_hw_init(struct mtk_wed_device *d
  			MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
  	} else {
  		wed_clr(dev, MTK_WED_TX_TKID_CTRL, MTK_WED_TX_TKID_CTRL_PAUSE);
@@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	}
  
  	wed_clr(dev, MTK_WED_TX_BM_CTRL, MTK_WED_TX_BM_CTRL_PAUSE);
-@@ -1353,8 +1360,6 @@ mtk_wed_configure_irq(struct mtk_wed_dev
+@@ -1354,8 +1361,6 @@ mtk_wed_configure_irq(struct mtk_wed_dev
  
  		wed_clr(dev, MTK_WED_WDMA_INT_CTRL, wdma_mask);
  	} else {
@@ -91,7 +91,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		/* initail tx interrupt trigger */
  		wed_w32(dev, MTK_WED_WPDMA_INT_CTRL_TX,
  			MTK_WED_WPDMA_INT_CTRL_TX0_DONE_EN |
-@@ -1373,15 +1378,20 @@ mtk_wed_configure_irq(struct mtk_wed_dev
+@@ -1374,15 +1379,20 @@ mtk_wed_configure_irq(struct mtk_wed_dev
  			FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_TX_FREE_DONE_TRIG,
  				   dev->wlan.txfree_tbit));
  
@@ -121,7 +121,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  		wed_w32(dev, MTK_WED_WDMA_INT_CLR, wdma_mask);
  		wed_set(dev, MTK_WED_WDMA_INT_CTRL,
-@@ -1400,6 +1410,8 @@ mtk_wed_configure_irq(struct mtk_wed_dev
+@@ -1401,6 +1411,8 @@ mtk_wed_configure_irq(struct mtk_wed_dev
  static void
  mtk_wed_dma_enable(struct mtk_wed_device *dev)
  {
@@ -130,7 +130,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	wed_set(dev, MTK_WED_WPDMA_INT_CTRL, MTK_WED_WPDMA_INT_CTRL_SUBRT_ADV);
  
  	wed_set(dev, MTK_WED_GLO_CFG,
-@@ -1419,33 +1431,33 @@ mtk_wed_dma_enable(struct mtk_wed_device
+@@ -1420,33 +1432,33 @@ mtk_wed_dma_enable(struct mtk_wed_device
  	if (mtk_wed_is_v1(dev->hw)) {
  		wdma_set(dev, MTK_WDMA_GLO_CFG,
  			 MTK_WDMA_GLO_CFG_RX_INFO3_PRERES);
@@ -186,7 +186,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -1472,7 +1484,7 @@ mtk_wed_start(struct mtk_wed_device *dev
+@@ -1473,7 +1485,7 @@ mtk_wed_start(struct mtk_wed_device *dev
  
  		val |= BIT(0) | (BIT(1) * !!dev->hw->index);
  		regmap_write(dev->hw->mirror, dev->hw->index * 4, val);
@@ -195,7 +195,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		/* driver set mid ready and only once */
  		wed_w32(dev, MTK_WED_EXT_INT_MASK1,
  			MTK_WED_EXT_INT_STATUS_WPDMA_MID_RDY);
-@@ -1484,7 +1496,6 @@ mtk_wed_start(struct mtk_wed_device *dev
+@@ -1485,7 +1497,6 @@ mtk_wed_start(struct mtk_wed_device *dev
  
  		if (mtk_wed_rro_cfg(dev))
  			return;
@@ -203,7 +203,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	}
  
  	mtk_wed_set_512_support(dev, dev->wlan.wcid_512);
-@@ -1550,13 +1561,14 @@ mtk_wed_attach(struct mtk_wed_device *de
+@@ -1551,13 +1562,14 @@ mtk_wed_attach(struct mtk_wed_device *de
  	}
  
  	mtk_wed_hw_init_early(dev);
diff --git a/target/linux/generic/backport-6.6/752-08-v6.7-net-ethernet-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch b/target/linux/generic/backport-6.6/752-08-v6.7-net-ethernet-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch
index 0a4a8ba0e1..618624adf7 100644
--- a/target/linux/generic/backport-6.6/752-08-v6.7-net-ethernet-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch
+++ b/target/linux/generic/backport-6.6/752-08-v6.7-net-ethernet-mtk_wed-rename-mtk_rxbm_desc-in-mtk_wed.patch
@@ -12,7 +12,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -599,7 +599,7 @@ mtk_wed_free_tx_buffer(struct mtk_wed_device
+@@ -422,7 +422,7 @@ free_pagelist:
  static int
  mtk_wed_rx_buffer_alloc(struct mtk_wed_device *dev)
  {
@@ -21,7 +21,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	dma_addr_t desc_phys;
  
  	dev->rx_buf_ring.size = dev->wlan.rx_nbuf;
-@@ -619,7 +619,7 @@ mtk_wed_rx_buffer_alloc(struct mtk_wed_d
+@@ -442,7 +442,7 @@ mtk_wed_rx_buffer_alloc(struct mtk_wed_d
  static void
  mtk_wed_free_rx_buffer(struct mtk_wed_device *dev)
  {
@@ -41,7 +41,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	__le32 buf0;
  	__le32 token;
  } __packed __aligned(4);
-@@ -109,7 +109,7 @@ struct mtk_wed_device {
+@@ -104,7 +104,7 @@ struct mtk_wed_device {
  
  	struct {
  		int size;
diff --git a/target/linux/generic/backport-6.6/752-09-v6.7-net-ethernet-mtk_wed-introduce-mtk_wed_buf-structure.patch b/target/linux/generic/backport-6.6/752-09-v6.7-net-ethernet-mtk_wed-introduce-mtk_wed_buf-structure.patch
index 8000a8759e..15dbaf0f6f 100644
--- a/target/linux/generic/backport-6.6/752-09-v6.7-net-ethernet-mtk_wed-introduce-mtk_wed_buf-structure.patch
+++ b/target/linux/generic/backport-6.6/752-09-v6.7-net-ethernet-mtk_wed-introduce-mtk_wed_buf-structure.patch
@@ -15,7 +15,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -299,9 +299,9 @@ out:
+@@ -300,9 +300,9 @@ out:
  static int
  mtk_wed_tx_buffer_alloc(struct mtk_wed_device *dev)
  {
@@ -26,7 +26,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	int token = dev->wlan.token_start;
  	int ring_size;
  	int n_pages;
-@@ -342,7 +342,8 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
+@@ -343,7 +343,8 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
  			return -ENOMEM;
  		}
  
@@ -36,7 +36,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		dma_sync_single_for_cpu(dev->hw->dev, page_phys, PAGE_SIZE,
  					DMA_BIDIRECTIONAL);
  
-@@ -386,8 +387,8 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
+@@ -387,8 +388,8 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
  static void
  mtk_wed_free_tx_buffer(struct mtk_wed_device *dev)
  {
@@ -46,7 +46,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	int page_idx;
  	int i;
  
-@@ -399,13 +400,12 @@ mtk_wed_free_tx_buffer(struct mtk_wed_de
+@@ -400,13 +401,12 @@ mtk_wed_free_tx_buffer(struct mtk_wed_de
  
  	for (i = 0, page_idx = 0; i < dev->tx_buf_ring.size;
  	     i += MTK_WED_BUF_PER_PAGE) {
diff --git a/target/linux/generic/backport-6.6/752-13-v6.7-net-ethernet-mtk_wed-add-mtk_wed_soc_data-structure.patch b/target/linux/generic/backport-6.6/752-13-v6.7-net-ethernet-mtk_wed-add-mtk_wed_soc_data-structure.patch
index c43114fb5b..71b32c545b 100644
--- a/target/linux/generic/backport-6.6/752-13-v6.7-net-ethernet-mtk_wed-add-mtk_wed_soc_data-structure.patch
+++ b/target/linux/generic/backport-6.6/752-13-v6.7-net-ethernet-mtk_wed-add-mtk_wed_soc_data-structure.patch
@@ -11,7 +11,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -48,6 +48,26 @@ struct mtk_wed_flow_block_priv {
+@@ -49,6 +49,26 @@ struct mtk_wed_flow_block_priv {
  	struct net_device *dev;
  };
  
@@ -38,7 +38,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  static void
  wed_m32(struct mtk_wed_device *dev, u32 reg, u32 mask, u32 val)
  {
-@@ -746,7 +766,7 @@ mtk_wed_set_wpdma(struct mtk_wed_device
+@@ -747,7 +767,7 @@ mtk_wed_set_wpdma(struct mtk_wed_device
  		return;
  
  	wed_w32(dev, MTK_WED_WPDMA_RX_GLO_CFG, dev->wlan.wpdma_rx_glo);
@@ -47,7 +47,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -940,22 +960,10 @@ mtk_wed_hw_init(struct mtk_wed_device *d
+@@ -941,22 +961,10 @@ mtk_wed_hw_init(struct mtk_wed_device *d
  	wed_w32(dev, MTK_WED_TX_BM_BUF_LEN, MTK_WED_PKT_SIZE);
  
  	if (mtk_wed_is_v1(dev->hw)) {
@@ -70,7 +70,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_TX_BM_DYN_THR,
  			FIELD_PREP(MTK_WED_TX_BM_DYN_THR_LO_V2, 0) |
  			MTK_WED_TX_BM_DYN_THR_HI_V2);
-@@ -970,6 +978,11 @@ mtk_wed_hw_init(struct mtk_wed_device *d
+@@ -971,6 +979,11 @@ mtk_wed_hw_init(struct mtk_wed_device *d
  			MTK_WED_TX_TKID_DYN_THR_HI);
  	}
  
@@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	mtk_wed_reset(dev, MTK_WED_RESET_TX_BM);
  
  	if (mtk_wed_is_v1(dev->hw)) {
-@@ -1104,13 +1117,8 @@ mtk_wed_rx_reset(struct mtk_wed_device *
+@@ -1105,13 +1118,8 @@ mtk_wed_rx_reset(struct mtk_wed_device *
  	if (ret) {
  		mtk_wed_reset(dev, MTK_WED_RESET_WED_RX_DMA);
  	} else {
@@ -98,7 +98,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_RESET_IDX, 0);
  	}
  
-@@ -1163,7 +1171,8 @@ mtk_wed_reset_dma(struct mtk_wed_device
+@@ -1164,7 +1172,8 @@ mtk_wed_reset_dma(struct mtk_wed_device
  	if (busy) {
  		mtk_wed_reset(dev, MTK_WED_RESET_WED_TX_DMA);
  	} else {
@@ -108,7 +108,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_RESET_IDX, 0);
  	}
  
-@@ -1255,7 +1264,6 @@ static int
+@@ -1256,7 +1265,6 @@ static int
  mtk_wed_wdma_rx_ring_setup(struct mtk_wed_device *dev, int idx, int size,
  			   bool reset)
  {
@@ -116,7 +116,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	struct mtk_wed_ring *wdma;
  
  	if (idx >= ARRAY_SIZE(dev->rx_wdma))
-@@ -1263,7 +1271,7 @@ mtk_wed_wdma_rx_ring_setup(struct mtk_we
+@@ -1264,7 +1272,7 @@ mtk_wed_wdma_rx_ring_setup(struct mtk_we
  
  	wdma = &dev->rx_wdma[idx];
  	if (!reset && mtk_wed_ring_alloc(dev, wdma, MTK_WED_WDMA_RING_SIZE,
@@ -125,7 +125,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		return -ENOMEM;
  
  	wdma_w32(dev, MTK_WDMA_RING_RX(idx) + MTK_WED_RING_OFS_BASE,
-@@ -1284,7 +1292,6 @@ static int
+@@ -1285,7 +1293,6 @@ static int
  mtk_wed_wdma_tx_ring_setup(struct mtk_wed_device *dev, int idx, int size,
  			   bool reset)
  {
@@ -133,7 +133,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	struct mtk_wed_ring *wdma;
  
  	if (idx >= ARRAY_SIZE(dev->tx_wdma))
-@@ -1292,7 +1299,7 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_we
+@@ -1293,7 +1300,7 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_we
  
  	wdma = &dev->tx_wdma[idx];
  	if (!reset && mtk_wed_ring_alloc(dev, wdma, MTK_WED_WDMA_RING_SIZE,
@@ -142,7 +142,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		return -ENOMEM;
  
  	wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_BASE,
-@@ -1931,7 +1938,12 @@ void mtk_wed_add_hw(struct device_node *
+@@ -1932,7 +1939,12 @@ void mtk_wed_add_hw(struct device_node *
  	hw->irq = irq;
  	hw->version = eth->soc->version;
  
@@ -156,7 +156,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		hw->mirror = syscon_regmap_lookup_by_phandle(eth_np,
  				"mediatek,pcie-mirror");
  		hw->hifsys = syscon_regmap_lookup_by_phandle(eth_np,
-@@ -1945,6 +1957,8 @@ void mtk_wed_add_hw(struct device_node *
+@@ -1946,6 +1958,8 @@ void mtk_wed_add_hw(struct device_node *
  			regmap_write(hw->mirror, 0, 0);
  			regmap_write(hw->mirror, 4, 0);
  		}
diff --git a/target/linux/generic/backport-6.6/752-14-v6.7-net-ethernet-mtk_wed-introduce-WED-support-for-MT798.patch b/target/linux/generic/backport-6.6/752-14-v6.7-net-ethernet-mtk_wed-introduce-WED-support-for-MT798.patch
index f874899c5b..12733b142f 100644
--- a/target/linux/generic/backport-6.6/752-14-v6.7-net-ethernet-mtk_wed-introduce-WED-support-for-MT798.patch
+++ b/target/linux/generic/backport-6.6/752-14-v6.7-net-ethernet-mtk_wed-introduce-WED-support-for-MT798.patch
@@ -13,7 +13,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -195,6 +195,7 @@ static const struct mtk_reg_map mt7988_r
+@@ -197,6 +197,7 @@ static const struct mtk_reg_map mt7988_r
  	.wdma_base = {
  		[0]		= 0x4800,
  		[1]		= 0x4c00,
@@ -46,7 +46,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  			}
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -16,17 +16,19 @@
+@@ -17,17 +17,19 @@
  #include <net/flow_offload.h>
  #include <net/pkt_cls.h>
  #include "mtk_eth_soc.h"
@@ -68,7 +68,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  #define MTK_WED_TX_RING_SIZE		2048
  #define MTK_WED_WDMA_RING_SIZE		1024
-@@ -40,7 +42,10 @@
+@@ -41,7 +43,10 @@
  #define MTK_WED_RRO_QUE_CNT		8192
  #define MTK_WED_MIOD_ENTRY_CNT		128
  
@@ -80,7 +80,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  static DEFINE_MUTEX(hw_lock);
  
  struct mtk_wed_flow_block_priv {
-@@ -55,6 +60,7 @@ static const struct mtk_wed_soc_data mt7
+@@ -56,6 +61,7 @@ static const struct mtk_wed_soc_data mt7
  		.reset_idx_tx_mask	= GENMASK(3, 0),
  		.reset_idx_rx_mask	= GENMASK(17, 16),
  	},
@@ -88,7 +88,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	.wdma_desc_size = sizeof(struct mtk_wdma_desc),
  };
  
-@@ -65,6 +71,18 @@ static const struct mtk_wed_soc_data mt7
+@@ -66,6 +72,18 @@ static const struct mtk_wed_soc_data mt7
  		.reset_idx_tx_mask	= GENMASK(1, 0),
  		.reset_idx_rx_mask	= GENMASK(7, 6),
  	},
@@ -107,7 +107,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	.wdma_desc_size = 2 * sizeof(struct mtk_wdma_desc),
  };
  
-@@ -319,33 +337,38 @@ out:
+@@ -320,33 +338,38 @@ out:
  static int
  mtk_wed_tx_buffer_alloc(struct mtk_wed_device *dev)
  {
@@ -159,7 +159,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		dma_addr_t page_phys, buf_phys;
  		struct page *page;
  		void *buf;
-@@ -371,28 +394,31 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
+@@ -372,28 +395,31 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
  		buf_phys = page_phys;
  
  		for (s = 0; s < MTK_WED_BUF_PER_PAGE; s++) {
@@ -209,7 +209,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  			buf += MTK_WED_BUF_SIZE;
  			buf_phys += MTK_WED_BUF_SIZE;
  		}
-@@ -408,31 +434,31 @@ static void
+@@ -409,31 +435,31 @@ static void
  mtk_wed_free_tx_buffer(struct mtk_wed_device *dev)
  {
  	struct mtk_wed_buf *page_list = dev->tx_buf_ring.pages;
@@ -251,7 +251,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  free_pagelist:
  	kfree(page_list);
-@@ -517,13 +543,23 @@ mtk_wed_set_ext_int(struct mtk_wed_devic
+@@ -518,13 +544,23 @@ mtk_wed_set_ext_int(struct mtk_wed_devic
  {
  	u32 mask = MTK_WED_EXT_INT_STATUS_ERROR_MASK;
  
@@ -277,7 +277,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	if (!dev->hw->num_flows)
  		mask &= ~MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD;
-@@ -535,6 +571,9 @@ mtk_wed_set_ext_int(struct mtk_wed_devic
+@@ -536,6 +572,9 @@ mtk_wed_set_ext_int(struct mtk_wed_devic
  static void
  mtk_wed_set_512_support(struct mtk_wed_device *dev, bool enable)
  {
@@ -287,7 +287,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	if (enable) {
  		wed_w32(dev, MTK_WED_TXDP_CTRL, MTK_WED_TXDP_DW9_OVERWR);
  		wed_w32(dev, MTK_WED_TXP_DW1,
-@@ -609,6 +648,14 @@ mtk_wed_dma_disable(struct mtk_wed_devic
+@@ -610,6 +649,14 @@ mtk_wed_dma_disable(struct mtk_wed_devic
  			MTK_WED_WPDMA_RX_D_RX_DRV_EN);
  		wed_clr(dev, MTK_WED_WDMA_GLO_CFG,
  			MTK_WED_WDMA_GLO_CFG_TX_DDONE_CHK);
@@ -302,7 +302,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	}
  
  	mtk_wed_set_512_support(dev, false);
-@@ -651,6 +698,14 @@ mtk_wed_deinit(struct mtk_wed_device *de
+@@ -652,6 +699,14 @@ mtk_wed_deinit(struct mtk_wed_device *de
  		MTK_WED_CTRL_RX_ROUTE_QM_EN |
  		MTK_WED_CTRL_WED_RX_BM_EN |
  		MTK_WED_CTRL_RX_RRO_QM_EN);
@@ -317,7 +317,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -700,21 +755,37 @@ mtk_wed_detach(struct mtk_wed_device *de
+@@ -701,21 +756,37 @@ mtk_wed_detach(struct mtk_wed_device *de
  	mutex_unlock(&hw_lock);
  }
  
@@ -362,7 +362,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  		wed_w32(dev, MTK_WED_PCIE_INT_CTRL,
  			FIELD_PREP(MTK_WED_PCIE_INT_CTRL_POLL_EN, 2));
-@@ -722,19 +793,9 @@ mtk_wed_bus_init(struct mtk_wed_device *
+@@ -723,19 +794,9 @@ mtk_wed_bus_init(struct mtk_wed_device *
  		/* pcie interrupt control: pola/source selection */
  		wed_set(dev, MTK_WED_PCIE_INT_CTRL,
  			MTK_WED_PCIE_INT_CTRL_MSK_EN_POLA |
@@ -385,7 +385,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		break;
  	}
  	case MTK_WED_BUS_AXI:
-@@ -772,18 +833,19 @@ mtk_wed_set_wpdma(struct mtk_wed_device
+@@ -773,18 +834,19 @@ mtk_wed_set_wpdma(struct mtk_wed_device
  static void
  mtk_wed_hw_init_early(struct mtk_wed_device *dev)
  {
@@ -412,7 +412,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	wed_m32(dev, MTK_WED_WDMA_GLO_CFG, mask, set);
  
  	if (mtk_wed_is_v1(dev->hw)) {
-@@ -931,11 +993,18 @@ mtk_wed_route_qm_hw_init(struct mtk_wed_
+@@ -932,11 +994,18 @@ mtk_wed_route_qm_hw_init(struct mtk_wed_
  	}
  
  	/* configure RX_ROUTE_QM */
@@ -436,7 +436,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	/* enable RX_ROUTE_QM */
  	wed_set(dev, MTK_WED_CTRL, MTK_WED_CTRL_RX_ROUTE_QM_EN);
  }
-@@ -948,22 +1017,30 @@ mtk_wed_hw_init(struct mtk_wed_device *d
+@@ -949,22 +1018,30 @@ mtk_wed_hw_init(struct mtk_wed_device *d
  
  	dev->init_done = true;
  	mtk_wed_set_ext_int(dev, false);
@@ -475,7 +475,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_TX_BM_DYN_THR,
  			FIELD_PREP(MTK_WED_TX_BM_DYN_THR_LO_V2, 0) |
  			MTK_WED_TX_BM_DYN_THR_HI_V2);
-@@ -973,9 +1050,6 @@ mtk_wed_hw_init(struct mtk_wed_device *d
+@@ -974,9 +1051,6 @@ mtk_wed_hw_init(struct mtk_wed_device *d
  				   dev->tx_buf_ring.size / 128) |
  			FIELD_PREP(MTK_WED_TX_TKID_CTRL_RSV_GRP_NUM,
  				   dev->tx_buf_ring.size / 128));
@@ -485,7 +485,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	}
  
  	wed_w32(dev, dev->hw->soc->regmap.tx_bm_tkid,
-@@ -985,26 +1059,62 @@ mtk_wed_hw_init(struct mtk_wed_device *d
+@@ -986,26 +1060,62 @@ mtk_wed_hw_init(struct mtk_wed_device *d
  
  	mtk_wed_reset(dev, MTK_WED_RESET_TX_BM);
  
@@ -561,7 +561,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -1302,6 +1412,24 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_we
+@@ -1303,6 +1413,24 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_we
  					 dev->hw->soc->wdma_desc_size, true))
  		return -ENOMEM;
  
@@ -586,7 +586,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_BASE,
  		 wdma->desc_phys);
  	wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_COUNT,
-@@ -1367,6 +1495,9 @@ mtk_wed_configure_irq(struct mtk_wed_dev
+@@ -1368,6 +1496,9 @@ mtk_wed_configure_irq(struct mtk_wed_dev
  
  		wed_clr(dev, MTK_WED_WDMA_INT_CTRL, wdma_mask);
  	} else {
@@ -596,7 +596,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		/* initail tx interrupt trigger */
  		wed_w32(dev, MTK_WED_WPDMA_INT_CTRL_TX,
  			MTK_WED_WPDMA_INT_CTRL_TX0_DONE_EN |
-@@ -1419,33 +1550,60 @@ mtk_wed_dma_enable(struct mtk_wed_device
+@@ -1420,33 +1551,60 @@ mtk_wed_dma_enable(struct mtk_wed_device
  {
  	int i;
  
@@ -668,7 +668,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	wed_clr(dev, MTK_WED_WPDMA_GLO_CFG,
  		MTK_WED_WPDMA_GLO_CFG_TX_TKID_KEEP |
  		MTK_WED_WPDMA_GLO_CFG_TX_DMAD_DW3_PREV);
-@@ -1457,11 +1615,22 @@ mtk_wed_dma_enable(struct mtk_wed_device
+@@ -1458,11 +1616,22 @@ mtk_wed_dma_enable(struct mtk_wed_device
  		MTK_WED_WDMA_GLO_CFG_TX_DRV_EN |
  		MTK_WED_WDMA_GLO_CFG_TX_DDONE_CHK);
  
@@ -693,7 +693,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	for (i = 0; i < MTK_WED_RX_QUEUES; i++)
  		mtk_wed_check_wfdma_rx_fill(dev, i);
-@@ -1501,6 +1670,12 @@ mtk_wed_start(struct mtk_wed_device *dev
+@@ -1502,6 +1671,12 @@ mtk_wed_start(struct mtk_wed_device *dev
  		wed_r32(dev, MTK_WED_EXT_INT_MASK1);
  		wed_r32(dev, MTK_WED_EXT_INT_MASK2);
  
@@ -706,7 +706,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		if (mtk_wed_rro_cfg(dev))
  			return;
  	}
-@@ -1552,6 +1727,7 @@ mtk_wed_attach(struct mtk_wed_device *de
+@@ -1553,6 +1728,7 @@ mtk_wed_attach(struct mtk_wed_device *de
  	dev->irq = hw->irq;
  	dev->wdma_idx = hw->index;
  	dev->version = hw->version;
@@ -714,7 +714,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	if (hw->eth->dma_dev == hw->eth->dev &&
  	    of_dma_is_coherent(hw->eth->dev->of_node))
-@@ -1619,6 +1795,23 @@ mtk_wed_tx_ring_setup(struct mtk_wed_dev
+@@ -1620,6 +1796,23 @@ mtk_wed_tx_ring_setup(struct mtk_wed_dev
  	ring->reg_base = MTK_WED_RING_TX(idx);
  	ring->wpdma = regs;
  
@@ -738,7 +738,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	/* WED -> WPDMA */
  	wpdma_tx_w32(dev, idx, MTK_WED_RING_OFS_BASE, ring->desc_phys);
  	wpdma_tx_w32(dev, idx, MTK_WED_RING_OFS_COUNT, MTK_WED_TX_RING_SIZE);
-@@ -1693,15 +1886,13 @@ mtk_wed_rx_ring_setup(struct mtk_wed_dev
+@@ -1694,15 +1887,13 @@ mtk_wed_rx_ring_setup(struct mtk_wed_dev
  static u32
  mtk_wed_irq_get(struct mtk_wed_device *dev, u32 mask)
  {
@@ -759,7 +759,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	val = wed_r32(dev, MTK_WED_EXT_INT_STATUS);
  	wed_w32(dev, MTK_WED_EXT_INT_STATUS, val);
-@@ -1942,6 +2133,9 @@ void mtk_wed_add_hw(struct device_node *
+@@ -1943,6 +2134,9 @@ void mtk_wed_add_hw(struct device_node *
  	case 2:
  		hw->soc = &mt7986_data;
  		break;
@@ -1254,7 +1254,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  #define MTK_WO_MCU_CFG_LS_HW_VER_ADDR			(MTK_WO_MCU_CFG_LS_BASE + 0x000)
 --- a/include/linux/soc/mediatek/mtk_wed.h
 +++ b/include/linux/soc/mediatek/mtk_wed.h
-@@ -139,6 +139,8 @@ struct mtk_wed_device {
+@@ -138,6 +138,8 @@ struct mtk_wed_device {
  		u32 wpdma_rx;
  
  		bool wcid_512;
@@ -1263,7 +1263,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  		u16 token_start;
  		unsigned int nbuf;
-@@ -212,10 +214,12 @@ mtk_wed_device_attach(struct mtk_wed_dev
+@@ -211,10 +213,12 @@ mtk_wed_device_attach(struct mtk_wed_dev
  	return ret;
  }
  
diff --git a/target/linux/generic/backport-6.6/752-15-v6.7-net-ethernet-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch b/target/linux/generic/backport-6.6/752-15-v6.7-net-ethernet-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch
index e91ae69d08..5e12343de2 100644
--- a/target/linux/generic/backport-6.6/752-15-v6.7-net-ethernet-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch
+++ b/target/linux/generic/backport-6.6/752-15-v6.7-net-ethernet-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch
@@ -14,7 +14,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -585,22 +585,15 @@ mtk_wed_set_512_support(struct mtk_wed_d
+@@ -586,22 +586,15 @@ mtk_wed_set_512_support(struct mtk_wed_d
  	}
  }
  
@@ -41,7 +41,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		if (cur_idx == MTK_WED_RX_RING_SIZE - 1)
  			break;
  
-@@ -609,12 +602,10 @@ mtk_wed_check_wfdma_rx_fill(struct mtk_w
+@@ -610,12 +603,10 @@ mtk_wed_check_wfdma_rx_fill(struct mtk_w
  
  	if (i == 3) {
  		dev_err(dev->hw->dev, "rx dma enable failed\n");
@@ -56,7 +56,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -1545,6 +1536,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev
+@@ -1546,6 +1537,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev
  	wed_w32(dev, MTK_WED_INT_MASK, irq_mask);
  }
  
@@ -64,7 +64,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  static void
  mtk_wed_dma_enable(struct mtk_wed_device *dev)
  {
-@@ -1632,8 +1624,26 @@ mtk_wed_dma_enable(struct mtk_wed_device
+@@ -1633,8 +1625,26 @@ mtk_wed_dma_enable(struct mtk_wed_device
  		wdma_set(dev, MTK_WDMA_WRBK_TX_CFG, MTK_WDMA_WRBK_TX_CFG_WRBK_EN);
  	}
  
diff --git a/target/linux/generic/backport-6.6/752-16-v6.7-net-ethernet-mtk_wed-introduce-partial-AMSDU-offload.patch b/target/linux/generic/backport-6.6/752-16-v6.7-net-ethernet-mtk_wed-introduce-partial-AMSDU-offload.patch
index 6534d73d8e..f70886aa0d 100644
--- a/target/linux/generic/backport-6.6/752-16-v6.7-net-ethernet-mtk_wed-introduce-partial-AMSDU-offload.patch
+++ b/target/linux/generic/backport-6.6/752-16-v6.7-net-ethernet-mtk_wed-introduce-partial-AMSDU-offload.patch
@@ -15,7 +15,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_ppe.c
 +++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
-@@ -438,7 +438,8 @@ int mtk_foe_entry_set_pppoe(struct mtk_e
+@@ -439,7 +439,8 @@ int mtk_foe_entry_set_pppoe(struct mtk_e
  }
  
  int mtk_foe_entry_set_wdma(struct mtk_eth *eth, struct mtk_foe_entry *entry,
@@ -25,7 +25,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  {
  	struct mtk_foe_mac_info *l2 = mtk_foe_entry_l2(eth, entry);
  	u32 *ib2 = mtk_foe_entry_ib2(eth, entry);
-@@ -450,6 +451,7 @@ int mtk_foe_entry_set_wdma(struct mtk_et
+@@ -451,6 +452,7 @@ int mtk_foe_entry_set_wdma(struct mtk_et
  			 MTK_FOE_IB2_WDMA_WINFO_V2;
  		l2->w3info = FIELD_PREP(MTK_FOE_WINFO_WCID_V3, wcid) |
  			     FIELD_PREP(MTK_FOE_WINFO_BSS_V3, bss);
@@ -96,7 +96,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  			case 0:
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -29,6 +29,8 @@
+@@ -30,6 +30,8 @@
  #define MTK_WED_RX_PAGE_BUF_PER_PAGE	(PAGE_SIZE / 128)
  #define MTK_WED_RX_RING_SIZE		1536
  #define MTK_WED_RX_PG_BM_CNT		8192
@@ -105,7 +105,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  #define MTK_WED_TX_RING_SIZE		2048
  #define MTK_WED_WDMA_RING_SIZE		1024
-@@ -172,6 +174,23 @@ mtk_wdma_rx_reset(struct mtk_wed_device
+@@ -173,6 +175,23 @@ mtk_wdma_rx_reset(struct mtk_wed_device
  	return ret;
  }
  
@@ -129,7 +129,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  static void
  mtk_wdma_tx_reset(struct mtk_wed_device *dev)
  {
-@@ -335,6 +354,118 @@ out:
+@@ -336,6 +355,118 @@ out:
  }
  
  static int
@@ -248,7 +248,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  mtk_wed_tx_buffer_alloc(struct mtk_wed_device *dev)
  {
  	u32 desc_size = dev->hw->soc->tx_ring_desc_size;
-@@ -708,6 +839,7 @@ __mtk_wed_detach(struct mtk_wed_device *
+@@ -709,6 +840,7 @@ __mtk_wed_detach(struct mtk_wed_device *
  
  	mtk_wdma_rx_reset(dev);
  	mtk_wed_reset(dev, MTK_WED_RESET_WED);
@@ -256,7 +256,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	mtk_wed_free_tx_buffer(dev);
  	mtk_wed_free_tx_rings(dev);
  
-@@ -1128,23 +1260,6 @@ mtk_wed_ring_reset(struct mtk_wed_ring *
+@@ -1129,23 +1261,6 @@ mtk_wed_ring_reset(struct mtk_wed_ring *
  	}
  }
  
@@ -280,7 +280,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  static int
  mtk_wed_rx_reset(struct mtk_wed_device *dev)
  {
-@@ -1691,6 +1806,7 @@ mtk_wed_start(struct mtk_wed_device *dev
+@@ -1692,6 +1807,7 @@ mtk_wed_start(struct mtk_wed_device *dev
  	}
  
  	mtk_wed_set_512_support(dev, dev->wlan.wcid_512);
@@ -288,7 +288,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	mtk_wed_dma_enable(dev);
  	dev->running = true;
-@@ -1747,6 +1863,10 @@ mtk_wed_attach(struct mtk_wed_device *de
+@@ -1748,6 +1864,10 @@ mtk_wed_attach(struct mtk_wed_device *de
  	if (ret)
  		goto out;
  
@@ -416,7 +416,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  #define MTK_WED_PCIE_BASE1			0x11310000
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -928,6 +928,7 @@ struct net_device_path {
+@@ -917,6 +917,7 @@ struct net_device_path {
  			u8 queue;
  			u16 wcid;
  			u8 bss;
@@ -426,7 +426,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  };
 --- a/include/linux/soc/mediatek/mtk_wed.h
 +++ b/include/linux/soc/mediatek/mtk_wed.h
-@@ -129,6 +129,7 @@ struct mtk_wed_device {
+@@ -128,6 +128,7 @@ struct mtk_wed_device {
  		enum mtk_wed_bus_tye bus_type;
  		void __iomem *base;
  		u32 phy_base;
@@ -434,7 +434,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  		u32 wpdma_phys;
  		u32 wpdma_int;
-@@ -147,10 +148,12 @@ struct mtk_wed_device {
+@@ -146,10 +147,12 @@ struct mtk_wed_device {
  		unsigned int rx_nbuf;
  		unsigned int rx_npkt;
  		unsigned int rx_size;
@@ -447,7 +447,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  		u32 (*init_buf)(void *ptr, dma_addr_t phys, int token_id);
  		int (*offload_enable)(struct mtk_wed_device *wed);
-@@ -224,6 +227,15 @@ static inline bool mtk_wed_get_rx_capa(s
+@@ -223,6 +226,15 @@ static inline bool mtk_wed_get_rx_capa(s
  #else
  	return false;
  #endif
diff --git a/target/linux/generic/backport-6.6/752-17-v6.7-net-ethernet-mtk_wed-introduce-hw_rro-support-for-MT.patch b/target/linux/generic/backport-6.6/752-17-v6.7-net-ethernet-mtk_wed-introduce-hw_rro-support-for-MT.patch
index 0cf4c18875..5c3015c338 100644
--- a/target/linux/generic/backport-6.6/752-17-v6.7-net-ethernet-mtk_wed-introduce-hw_rro-support-for-MT.patch
+++ b/target/linux/generic/backport-6.6/752-17-v6.7-net-ethernet-mtk_wed-introduce-hw_rro-support-for-MT.patch
@@ -13,7 +13,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -26,7 +26,7 @@
+@@ -27,7 +27,7 @@
  #define MTK_WED_BUF_SIZE		2048
  #define MTK_WED_PAGE_BUF_SIZE		128
  #define MTK_WED_BUF_PER_PAGE		(PAGE_SIZE / 2048)
@@ -22,7 +22,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  #define MTK_WED_RX_RING_SIZE		1536
  #define MTK_WED_RX_PG_BM_CNT		8192
  #define MTK_WED_AMSDU_BUF_SIZE		(PAGE_SIZE << 4)
-@@ -596,6 +596,68 @@ free_pagelist:
+@@ -597,6 +597,68 @@ free_pagelist:
  }
  
  static int
@@ -91,7 +91,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  mtk_wed_rx_buffer_alloc(struct mtk_wed_device *dev)
  {
  	struct mtk_wed_bm_desc *desc;
-@@ -612,7 +674,42 @@ mtk_wed_rx_buffer_alloc(struct mtk_wed_d
+@@ -613,7 +675,42 @@ mtk_wed_rx_buffer_alloc(struct mtk_wed_d
  	dev->rx_buf_ring.desc_phys = desc_phys;
  	dev->wlan.init_rx_buf(dev, dev->wlan.rx_npkt);
  
@@ -135,7 +135,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -626,6 +723,28 @@ mtk_wed_free_rx_buffer(struct mtk_wed_de
+@@ -627,6 +724,28 @@ mtk_wed_free_rx_buffer(struct mtk_wed_de
  	dev->wlan.release_rx_buf(dev);
  	dma_free_coherent(dev->hw->dev, dev->rx_buf_ring.size * sizeof(*desc),
  			  desc, dev->rx_buf_ring.desc_phys);
@@ -164,7 +164,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -639,6 +758,8 @@ mtk_wed_rx_buffer_hw_init(struct mtk_wed
+@@ -640,6 +759,8 @@ mtk_wed_rx_buffer_hw_init(struct mtk_wed
  	wed_w32(dev, MTK_WED_RX_BM_DYN_ALLOC_TH,
  		FIELD_PREP(MTK_WED_RX_BM_DYN_ALLOC_TH_H, 0xffff));
  	wed_set(dev, MTK_WED_CTRL, MTK_WED_CTRL_WED_RX_BM_EN);
@@ -173,7 +173,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -934,6 +1055,8 @@ mtk_wed_bus_init(struct mtk_wed_device *
+@@ -935,6 +1056,8 @@ mtk_wed_bus_init(struct mtk_wed_device *
  static void
  mtk_wed_set_wpdma(struct mtk_wed_device *dev)
  {
@@ -182,7 +182,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	if (mtk_wed_is_v1(dev->hw)) {
  		wed_w32(dev, MTK_WED_WPDMA_CFG_BASE,  dev->wlan.wpdma_phys);
  		return;
-@@ -951,6 +1074,15 @@ mtk_wed_set_wpdma(struct mtk_wed_device
+@@ -952,6 +1075,15 @@ mtk_wed_set_wpdma(struct mtk_wed_device
  
  	wed_w32(dev, MTK_WED_WPDMA_RX_GLO_CFG, dev->wlan.wpdma_rx_glo);
  	wed_w32(dev, dev->hw->soc->regmap.wpdma_rx_ring0, dev->wlan.wpdma_rx);
@@ -198,7 +198,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static void
-@@ -1762,6 +1894,165 @@ mtk_wed_dma_enable(struct mtk_wed_device
+@@ -1763,6 +1895,165 @@ mtk_wed_dma_enable(struct mtk_wed_device
  }
  
  static void
@@ -364,7 +364,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  mtk_wed_start(struct mtk_wed_device *dev, u32 irq_mask)
  {
  	int i;
-@@ -2215,6 +2506,10 @@ void mtk_wed_add_hw(struct device_node *
+@@ -2216,6 +2507,10 @@ void mtk_wed_add_hw(struct device_node *
  		.detach = mtk_wed_detach,
  		.ppe_check = mtk_wed_ppe_check,
  		.setup_tc = mtk_wed_setup_tc,
@@ -395,7 +395,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	struct {
  		int size;
-@@ -120,6 +124,13 @@ struct mtk_wed_device {
+@@ -119,6 +123,13 @@ struct mtk_wed_device {
  		dma_addr_t fdbk_phys;
  	} rro;
  
@@ -409,7 +409,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	/* filled by driver: */
  	struct {
  		union {
-@@ -138,6 +149,8 @@ struct mtk_wed_device {
+@@ -137,6 +148,8 @@ struct mtk_wed_device {
  		u32 wpdma_txfree;
  		u32 wpdma_rx_glo;
  		u32 wpdma_rx;
@@ -418,7 +418,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  		bool wcid_512;
  		bool hw_rro;
-@@ -152,9 +165,20 @@ struct mtk_wed_device {
+@@ -151,9 +164,20 @@ struct mtk_wed_device {
  
  		u8 tx_tbit[MTK_WED_TX_QUEUES];
  		u8 rx_tbit[MTK_WED_RX_QUEUES];
@@ -439,7 +439,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		u32 (*init_buf)(void *ptr, dma_addr_t phys, int token_id);
  		int (*offload_enable)(struct mtk_wed_device *wed);
  		void (*offload_disable)(struct mtk_wed_device *wed);
-@@ -193,6 +217,14 @@ struct mtk_wed_ops {
+@@ -192,6 +216,14 @@ struct mtk_wed_ops {
  	void (*irq_set_mask)(struct mtk_wed_device *dev, u32 mask);
  	int (*setup_tc)(struct mtk_wed_device *wed, struct net_device *dev,
  			enum tc_setup_type type, void *type_data);
@@ -454,7 +454,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  };
  
  extern const struct mtk_wed_ops __rcu *mtk_soc_wed_ops;
-@@ -264,6 +296,15 @@ static inline bool mtk_wed_is_amsdu_supp
+@@ -263,6 +295,15 @@ static inline bool mtk_wed_is_amsdu_supp
  #define mtk_wed_device_dma_reset(_dev) (_dev)->ops->reset_dma(_dev)
  #define mtk_wed_device_setup_tc(_dev, _netdev, _type, _type_data) \
  	(_dev)->ops->setup_tc(_dev, _netdev, _type, _type_data)
@@ -470,7 +470,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  #else
  static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
  {
-@@ -283,6 +324,10 @@ static inline bool mtk_wed_device_active
+@@ -282,6 +323,10 @@ static inline bool mtk_wed_device_active
  #define mtk_wed_device_stop(_dev) do {} while (0)
  #define mtk_wed_device_dma_reset(_dev) do {} while (0)
  #define mtk_wed_device_setup_tc(_dev, _netdev, _type, _type_data) -EOPNOTSUPP
diff --git a/target/linux/generic/backport-6.6/752-19-v6.7-net-ethernet-mtk_wed-debugfs-add-WED-3.0-debugfs-ent.patch b/target/linux/generic/backport-6.6/752-19-v6.7-net-ethernet-mtk_wed-debugfs-add-WED-3.0-debugfs-ent.patch
index f491d2fd80..9730c3042f 100644
--- a/target/linux/generic/backport-6.6/752-19-v6.7-net-ethernet-mtk_wed-debugfs-add-WED-3.0-debugfs-ent.patch
+++ b/target/linux/generic/backport-6.6/752-19-v6.7-net-ethernet-mtk_wed-debugfs-add-WED-3.0-debugfs-ent.patch
@@ -412,7 +412,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  mtk_wed_reg_set(void *data, u64 val)
  {
  	struct mtk_wed_hw *hw = data;
-@@ -266,7 +624,16 @@ void mtk_wed_hw_add_debugfs(struct mtk_w
+@@ -264,7 +622,16 @@ void mtk_wed_hw_add_debugfs(struct mtk_w
  	debugfs_create_u32("regidx", 0600, dir, &hw->debugfs_reg);
  	debugfs_create_file_unsafe("regval", 0600, dir, hw, &fops_regval);
  	debugfs_create_file_unsafe("txinfo", 0400, dir, hw, &wed_txinfo_fops);
diff --git a/target/linux/generic/backport-6.6/752-20-v6.7-net-ethernet-mtk_wed-add-wed-3.0-reset-support.patch b/target/linux/generic/backport-6.6/752-20-v6.7-net-ethernet-mtk_wed-add-wed-3.0-reset-support.patch
index aaaabf05e8..18aa4107db 100644
--- a/target/linux/generic/backport-6.6/752-20-v6.7-net-ethernet-mtk_wed-add-wed-3.0-reset-support.patch
+++ b/target/linux/generic/backport-6.6/752-20-v6.7-net-ethernet-mtk_wed-add-wed-3.0-reset-support.patch
@@ -13,7 +13,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -148,6 +148,90 @@ mtk_wdma_read_reset(struct mtk_wed_devic
+@@ -149,6 +149,90 @@ mtk_wdma_read_reset(struct mtk_wed_devic
  	return wdma_r32(dev, MTK_WDMA_GLO_CFG);
  }
  
@@ -104,7 +104,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  static int
  mtk_wdma_rx_reset(struct mtk_wed_device *dev)
  {
-@@ -160,6 +244,7 @@ mtk_wdma_rx_reset(struct mtk_wed_device
+@@ -161,6 +245,7 @@ mtk_wdma_rx_reset(struct mtk_wed_device
  	if (ret)
  		dev_err(dev->hw->dev, "rx reset failed\n");
  
@@ -112,7 +112,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	wdma_w32(dev, MTK_WDMA_RESET_IDX, MTK_WDMA_RESET_IDX_RX);
  	wdma_w32(dev, MTK_WDMA_RESET_IDX, 0);
  
-@@ -192,6 +277,84 @@ mtk_wed_poll_busy(struct mtk_wed_device
+@@ -193,6 +278,84 @@ mtk_wed_poll_busy(struct mtk_wed_device
  }
  
  static void
@@ -197,7 +197,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  mtk_wdma_tx_reset(struct mtk_wed_device *dev)
  {
  	u32 status, mask = MTK_WDMA_GLO_CFG_TX_DMA_BUSY;
-@@ -202,6 +365,7 @@ mtk_wdma_tx_reset(struct mtk_wed_device
+@@ -203,6 +366,7 @@ mtk_wdma_tx_reset(struct mtk_wed_device
  			       !(status & mask), 0, 10000))
  		dev_err(dev->hw->dev, "tx reset failed\n");
  
@@ -205,7 +205,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	wdma_w32(dev, MTK_WDMA_RESET_IDX, MTK_WDMA_RESET_IDX_TX);
  	wdma_w32(dev, MTK_WDMA_RESET_IDX, 0);
  
-@@ -1405,13 +1569,33 @@ mtk_wed_rx_reset(struct mtk_wed_device *
+@@ -1406,13 +1570,33 @@ mtk_wed_rx_reset(struct mtk_wed_device *
  	if (ret)
  		return ret;
  
@@ -239,7 +239,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_WPDMA_RX_D_RST_IDX,
  			MTK_WED_WPDMA_RX_D_RST_CRX_IDX |
  			MTK_WED_WPDMA_RX_D_RST_DRV_IDX);
-@@ -1439,23 +1623,52 @@ mtk_wed_rx_reset(struct mtk_wed_device *
+@@ -1440,23 +1624,52 @@ mtk_wed_rx_reset(struct mtk_wed_device *
  		wed_w32(dev, MTK_WED_RROQM_RST_IDX, 0);
  	}
  
@@ -298,7 +298,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	mtk_wed_reset(dev, MTK_WED_RESET_WDMA_TX_DRV);
  
  	/* reset wed rx dma */
-@@ -1476,6 +1689,14 @@ mtk_wed_rx_reset(struct mtk_wed_device *
+@@ -1477,6 +1690,14 @@ mtk_wed_rx_reset(struct mtk_wed_device *
  			  MTK_WED_CTRL_WED_RX_BM_BUSY);
  	mtk_wed_reset(dev, MTK_WED_RESET_RX_BM);
  
@@ -313,7 +313,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	/* wo change to enable state */
  	val = MTK_WED_WO_STATE_ENABLE;
  	ret = mtk_wed_mcu_send_msg(wo, MTK_WED_MODULE_ID_WO,
-@@ -1493,6 +1714,7 @@ mtk_wed_rx_reset(struct mtk_wed_device *
+@@ -1494,6 +1715,7 @@ mtk_wed_rx_reset(struct mtk_wed_device *
  				   false);
  	}
  	mtk_wed_free_rx_buffer(dev);
@@ -321,7 +321,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	return 0;
  }
-@@ -1526,15 +1748,41 @@ mtk_wed_reset_dma(struct mtk_wed_device
+@@ -1527,15 +1749,41 @@ mtk_wed_reset_dma(struct mtk_wed_device
  
  	/* 2. reset WDMA rx DMA */
  	busy = !!mtk_wdma_rx_reset(dev);
@@ -364,7 +364,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  		wed_w32(dev, MTK_WED_WDMA_RESET_IDX,
  			MTK_WED_WDMA_RESET_IDX_RX | MTK_WED_WDMA_RESET_IDX_DRV);
  		wed_w32(dev, MTK_WED_WDMA_RESET_IDX, 0);
-@@ -1550,8 +1798,13 @@ mtk_wed_reset_dma(struct mtk_wed_device
+@@ -1551,8 +1799,13 @@ mtk_wed_reset_dma(struct mtk_wed_device
  	wed_clr(dev, MTK_WED_CTRL, MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
  
  	for (i = 0; i < 100; i++) {
@@ -380,7 +380,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  			break;
  	}
  
-@@ -1573,6 +1826,8 @@ mtk_wed_reset_dma(struct mtk_wed_device
+@@ -1574,6 +1827,8 @@ mtk_wed_reset_dma(struct mtk_wed_device
  		mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_INT_AGENT);
  		mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_TX_DRV);
  		mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_RX_DRV);
@@ -389,7 +389,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	} else {
  		wed_w32(dev, MTK_WED_WPDMA_RESET_IDX,
  			MTK_WED_WPDMA_RESET_IDX_TX |
-@@ -1589,7 +1844,14 @@ mtk_wed_reset_dma(struct mtk_wed_device
+@@ -1590,7 +1845,14 @@ mtk_wed_reset_dma(struct mtk_wed_device
  		wed_w32(dev, MTK_WED_RESET_IDX, 0);
  	}
  
@@ -405,7 +405,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  }
  
  static int
-@@ -1841,6 +2103,7 @@ mtk_wed_dma_enable(struct mtk_wed_device
+@@ -1842,6 +2104,7 @@ mtk_wed_dma_enable(struct mtk_wed_device
  			MTK_WED_WPDMA_GLO_CFG_RX_DRV_UNS_VER_FORCE_4);
  
  		wdma_set(dev, MTK_WDMA_PREF_RX_CFG, MTK_WDMA_PREF_RX_CFG_PREF_EN);
@@ -413,7 +413,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	}
  
  	wed_clr(dev, MTK_WED_WPDMA_GLO_CFG,
-@@ -1904,6 +2167,12 @@ mtk_wed_start_hw_rro(struct mtk_wed_devi
+@@ -1905,6 +2168,12 @@ mtk_wed_start_hw_rro(struct mtk_wed_devi
  	if (!mtk_wed_get_rx_capa(dev) || !dev->wlan.hw_rro)
  		return;
  
diff --git a/target/linux/generic/backport-6.6/760-v6.9-net-phy-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch b/target/linux/generic/backport-6.6/760-v6.9-net-phy-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch
index 4fc32e3e96..4190a3d328 100644
--- a/target/linux/generic/backport-6.6/760-v6.9-net-phy-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch
+++ b/target/linux/generic/backport-6.6/760-v6.9-net-phy-aquantia-add-AQR111-and-AQR111B0-PHY-ID.patch
@@ -29,7 +29,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  #define PHY_ID_AQR112	0x03a1b662
  #define PHY_ID_AQR412	0x03a1b712
  #define PHY_ID_AQR113C	0x31c31c12
-@@ -670,6 +672,16 @@ static int aqr107_probe(struct phy_devic
+@@ -672,6 +674,16 @@ static int aqr107_probe(struct phy_devic
  	return aqr_hwmon_probe(phydev);
  }
  
@@ -46,7 +46,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  static struct phy_driver aqr_driver[] = {
  {
  	PHY_ID_MATCH_MODEL(PHY_ID_AQ1202),
-@@ -744,6 +756,44 @@ static struct phy_driver aqr_driver[] =
+@@ -746,6 +758,44 @@ static struct phy_driver aqr_driver[] =
  	.link_change_notify = aqr107_link_change_notify,
  },
  {
diff --git a/target/linux/generic/backport-6.6/761-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch b/target/linux/generic/backport-6.6/761-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch
index 5be82455c1..cd9161d023 100644
--- a/target/linux/generic/backport-6.6/761-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch
+++ b/target/linux/generic/backport-6.6/761-v6.9-net-phy-aquantia-add-AQR113-PHY-ID.patch
@@ -16,7 +16,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/phy/aquantia/aquantia_main.c
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -24,6 +24,7 @@
+@@ -26,6 +26,7 @@
  #define PHY_ID_AQR111B0	0x03a1b612
  #define PHY_ID_AQR112	0x03a1b662
  #define PHY_ID_AQR412	0x03a1b712
@@ -24,7 +24,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  #define PHY_ID_AQR113C	0x31c31c12
  
  #define MDIO_PHYXS_VEND_IF_STATUS		0xe812
-@@ -802,6 +803,25 @@ static struct phy_driver aqr_driver[] =
+@@ -840,6 +841,25 @@ static struct phy_driver aqr_driver[] =
  	.link_change_notify = aqr107_link_change_notify,
  },
  {
@@ -50,7 +50,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	PHY_ID_MATCH_MODEL(PHY_ID_AQR113C),
  	.name           = "Aquantia AQR113C",
  	.probe          = aqr107_probe,
-@@ -834,6 +854,7 @@ static struct mdio_device_id __maybe_unu
+@@ -874,6 +894,7 @@ static struct mdio_device_id __maybe_unu
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111B0) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
diff --git a/target/linux/generic/backport-6.6/762-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch b/target/linux/generic/backport-6.6/762-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch
index 7dcfe7d01b..fbdf810b35 100644
--- a/target/linux/generic/backport-6.6/762-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch
+++ b/target/linux/generic/backport-6.6/762-v6.9-net-phy-aquantia-add-AQR813-PHY-ID.patch
@@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/phy/aquantia/aquantia_main.c
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -26,6 +26,7 @@
+@@ -28,6 +28,7 @@
  #define PHY_ID_AQR412	0x03a1b712
  #define PHY_ID_AQR113	0x31c31c40
  #define PHY_ID_AQR113C	0x31c31c12
@@ -23,7 +23,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  
  #define MDIO_PHYXS_VEND_IF_STATUS		0xe812
  #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK	GENMASK(7, 3)
-@@ -840,6 +841,25 @@ static struct phy_driver aqr_driver[] =
+@@ -878,6 +879,25 @@ static struct phy_driver aqr_driver[] =
  	.get_stats      = aqr107_get_stats,
  	.link_change_notify = aqr107_link_change_notify,
  },
@@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  };
  
  module_phy_driver(aqr_driver);
-@@ -856,6 +876,7 @@ static struct mdio_device_id __maybe_unu
+@@ -896,6 +916,7 @@ static struct mdio_device_id __maybe_unu
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
diff --git a/target/linux/generic/backport-6.6/770-net-introduce-napi_is_scheduled-helper.patch b/target/linux/generic/backport-6.6/770-net-introduce-napi_is_scheduled-helper.patch
index 789b93e9f9..821fd60a2d 100644
--- a/target/linux/generic/backport-6.6/770-net-introduce-napi_is_scheduled-helper.patch
+++ b/target/linux/generic/backport-6.6/770-net-introduce-napi_is_scheduled-helper.patch
@@ -25,7 +25,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
 +++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
-@@ -2507,14 +2507,6 @@ static int napi_rx_handler(struct napi_s
+@@ -2501,14 +2501,6 @@ static int napi_rx_handler(struct napi_s
  	return work_done;
  }
  
@@ -42,7 +42,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
   *	@adap: the adapter
 --- a/drivers/net/wireless/realtek/rtw89/core.c
 +++ b/drivers/net/wireless/realtek/rtw89/core.c
-@@ -1479,7 +1479,7 @@ static void rtw89_core_rx_to_mac80211(st
+@@ -1744,7 +1744,7 @@ static void rtw89_core_rx_to_mac80211(st
  	struct napi_struct *napi = &rtwdev->napi;
  
  	/* In low power mode, napi isn't scheduled. Receive it to netif. */
@@ -53,7 +53,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	rtw89_core_hw_to_sband_rate(rx_status);
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -468,6 +468,29 @@ static inline bool napi_prefer_busy_poll
+@@ -480,6 +480,29 @@ static inline bool napi_prefer_busy_poll
  	return test_bit(NAPI_STATE_PREFER_BUSY_POLL, &n->state);
  }
  
@@ -85,7 +85,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  /**
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -6533,7 +6533,7 @@ static int __napi_poll(struct napi_struc
+@@ -6555,7 +6555,7 @@ static int __napi_poll(struct napi_struc
  	 * accidentally calling ->poll() when NAPI is not scheduled.
  	 */
  	work = 0;
diff --git a/target/linux/generic/backport-6.6/771-v6.7-01-net-stmmac-improve-TX-timer-arm-logic.patch b/target/linux/generic/backport-6.6/771-v6.7-01-net-stmmac-improve-TX-timer-arm-logic.patch
index aa0d730bc8..3951715fc6 100644
--- a/target/linux/generic/backport-6.6/771-v6.7-01-net-stmmac-improve-TX-timer-arm-logic.patch
+++ b/target/linux/generic/backport-6.6/771-v6.7-01-net-stmmac-improve-TX-timer-arm-logic.patch
@@ -46,7 +46,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -2974,13 +2974,25 @@ static void stmmac_tx_timer_arm(struct s
+@@ -3003,13 +3003,25 @@ static void stmmac_tx_timer_arm(struct s
  {
  	struct stmmac_tx_queue *tx_q = &priv->dma_conf.tx_queue[queue];
  	u32 tx_coal_timer = priv->tx_coal_timer[queue];
diff --git a/target/linux/generic/backport-6.6/771-v6.7-03-net-stmmac-increase-TX-coalesce-timer-to-5ms.patch b/target/linux/generic/backport-6.6/771-v6.7-03-net-stmmac-increase-TX-coalesce-timer-to-5ms.patch
index bce54eba4f..f56c48b4b8 100644
--- a/target/linux/generic/backport-6.6/771-v6.7-03-net-stmmac-increase-TX-coalesce-timer-to-5ms.patch
+++ b/target/linux/generic/backport-6.6/771-v6.7-03-net-stmmac-increase-TX-coalesce-timer-to-5ms.patch
@@ -27,7 +27,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
 
 --- a/drivers/net/ethernet/stmicro/stmmac/common.h
 +++ b/drivers/net/ethernet/stmicro/stmmac/common.h
-@@ -287,7 +287,7 @@ struct stmmac_safety_stats {
+@@ -318,7 +318,7 @@ struct stmmac_safety_stats {
  #define MIN_DMA_RIWT		0x10
  #define DEF_DMA_RIWT		0xa0
  /* Tx coalesce parameters */
diff --git a/target/linux/generic/backport-6.6/795-v6.7-16-r8152-use-napi_gro_frags.patch b/target/linux/generic/backport-6.6/795-v6.7-16-r8152-use-napi_gro_frags.patch
index 3c9680a279..85b320f15a 100644
--- a/target/linux/generic/backport-6.6/795-v6.7-16-r8152-use-napi_gro_frags.patch
+++ b/target/linux/generic/backport-6.6/795-v6.7-16-r8152-use-napi_gro_frags.patch
@@ -15,7 +15,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 
 --- a/drivers/net/usb/r8152.c
 +++ b/drivers/net/usb/r8152.c
-@@ -2583,8 +2583,9 @@ static int rx_bottom(struct r8152 *tp, i
+@@ -2584,8 +2584,9 @@ static int rx_bottom(struct r8152 *tp, i
  		while (urb->actual_length > len_used) {
  			struct net_device *netdev = tp->netdev;
  			struct net_device_stats *stats = &netdev->stats;
@@ -26,7 +26,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  			WARN_ON_ONCE(skb_queue_len(&tp->rx_queue) >= 1000);
  
-@@ -2597,45 +2598,77 @@ static int rx_bottom(struct r8152 *tp, i
+@@ -2598,45 +2599,77 @@ static int rx_bottom(struct r8152 *tp, i
  				break;
  
  			pkt_len -= ETH_FCS_LEN;
diff --git a/target/linux/generic/backport-6.6/815-v6.7-3-leds-turris-omnia-Support-HW-controlled-mode-via-pri.patch b/target/linux/generic/backport-6.6/815-v6.7-3-leds-turris-omnia-Support-HW-controlled-mode-via-pri.patch
index 00773ab0f6..bed20f9e99 100644
--- a/target/linux/generic/backport-6.6/815-v6.7-3-leds-turris-omnia-Support-HW-controlled-mode-via-pri.patch
+++ b/target/linux/generic/backport-6.6/815-v6.7-3-leds-turris-omnia-Support-HW-controlled-mode-via-pri.patch
@@ -49,7 +49,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
 
 --- a/drivers/leds/Kconfig
 +++ b/drivers/leds/Kconfig
-@@ -164,6 +164,7 @@ config LEDS_TURRIS_OMNIA
+@@ -188,6 +188,7 @@ config LEDS_TURRIS_OMNIA
  	depends on I2C
  	depends on MACH_ARMADA_38X || COMPILE_TEST
  	depends on OF
@@ -187,7 +187,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
  
  	/* put the LED into software mode */
  	ret = omnia_cmd_write_u8(client, CMD_LED_MODE,
-@@ -309,6 +385,12 @@ static int omnia_leds_probe(struct i2c_c
+@@ -308,6 +384,12 @@ static int omnia_leds_probe(struct i2c_c
  
  	mutex_init(&leds->lock);
  
diff --git a/target/linux/generic/backport-6.6/816-v6.7-0002-nvmem-add-explicit-config-option-to-read-old-syntax-.patch b/target/linux/generic/backport-6.6/816-v6.7-0002-nvmem-add-explicit-config-option-to-read-old-syntax-.patch
index 35b15776fb..80c9836010 100644
--- a/target/linux/generic/backport-6.6/816-v6.7-0002-nvmem-add-explicit-config-option-to-read-old-syntax-.patch
+++ b/target/linux/generic/backport-6.6/816-v6.7-0002-nvmem-add-explicit-config-option-to-read-old-syntax-.patch
@@ -67,7 +67,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/mtd/mtdcore.c
 +++ b/drivers/mtd/mtdcore.c
-@@ -523,6 +523,7 @@ static int mtd_nvmem_add(struct mtd_info
+@@ -552,6 +552,7 @@ static int mtd_nvmem_add(struct mtd_info
  	config.dev = &mtd->dev;
  	config.name = dev_name(&mtd->dev);
  	config.owner = THIS_MODULE;
@@ -75,7 +75,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	config.reg_read = mtd_nvmem_reg_read;
  	config.size = mtd->size;
  	config.word_size = 1;
-@@ -891,6 +892,7 @@ static struct nvmem_device *mtd_otp_nvme
+@@ -898,6 +899,7 @@ static struct nvmem_device *mtd_otp_nvme
  	config.name = compatible;
  	config.id = NVMEM_DEVID_AUTO;
  	config.owner = THIS_MODULE;
@@ -95,7 +95,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  		.stride = sizeof(u32),
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -998,9 +998,11 @@ struct nvmem_device *nvmem_register(cons
+@@ -1003,9 +1003,11 @@ struct nvmem_device *nvmem_register(cons
  	if (rval)
  		goto err_remove_cells;
  
@@ -122,7 +122,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	.stride = 1,
 --- a/drivers/nvmem/imx-ocotp.c
 +++ b/drivers/nvmem/imx-ocotp.c
-@@ -616,6 +616,7 @@ static int imx_ocotp_probe(struct platfo
+@@ -615,6 +615,7 @@ static int imx_ocotp_probe(struct platfo
  		return PTR_ERR(priv->clk);
  
  	priv->params = of_device_get_match_data(&pdev->dev);
@@ -142,7 +142,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	econfig->reg_read = meson_efuse_read;
 --- a/drivers/nvmem/meson-mx-efuse.c
 +++ b/drivers/nvmem/meson-mx-efuse.c
-@@ -211,6 +211,7 @@ static int meson_mx_efuse_probe(struct p
+@@ -210,6 +210,7 @@ static int meson_mx_efuse_probe(struct p
  	efuse->config.owner = THIS_MODULE;
  	efuse->config.dev = &pdev->dev;
  	efuse->config.priv = efuse;
@@ -212,7 +212,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	.read_only = true,
 --- a/drivers/nvmem/sc27xx-efuse.c
 +++ b/drivers/nvmem/sc27xx-efuse.c
-@@ -248,6 +248,7 @@ static int sc27xx_efuse_probe(struct pla
+@@ -247,6 +247,7 @@ static int sc27xx_efuse_probe(struct pla
  	econfig.reg_read = sc27xx_efuse_read;
  	econfig.priv = efuse;
  	econfig.dev = &pdev->dev;
@@ -262,7 +262,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	.size = QAC628_OTP_SIZE,
 --- a/drivers/nvmem/sunxi_sid.c
 +++ b/drivers/nvmem/sunxi_sid.c
-@@ -154,6 +154,7 @@ static int sunxi_sid_probe(struct platfo
+@@ -153,6 +153,7 @@ static int sunxi_sid_probe(struct platfo
  	nvmem_cfg->dev = dev;
  	nvmem_cfg->name = "sunxi-sid";
  	nvmem_cfg->type = NVMEM_TYPE_OTP;
diff --git a/target/linux/generic/backport-6.6/816-v6.7-0004-Revert-nvmem-add-new-config-option.patch b/target/linux/generic/backport-6.6/816-v6.7-0004-Revert-nvmem-add-new-config-option.patch
index 7d80ad37f1..39be82d4bf 100644
--- a/target/linux/generic/backport-6.6/816-v6.7-0004-Revert-nvmem-add-new-config-option.patch
+++ b/target/linux/generic/backport-6.6/816-v6.7-0004-Revert-nvmem-add-new-config-option.patch
@@ -38,7 +38,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/mtd/mtdcore.c
 +++ b/drivers/mtd/mtdcore.c
-@@ -531,7 +531,6 @@ static int mtd_nvmem_add(struct mtd_info
+@@ -560,7 +560,6 @@ static int mtd_nvmem_add(struct mtd_info
  	config.read_only = true;
  	config.root_only = true;
  	config.ignore_wp = true;
@@ -48,7 +48,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	mtd->nvmem = nvmem_register(&config);
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -936,7 +936,7 @@ struct nvmem_device *nvmem_register(cons
+@@ -941,7 +941,7 @@ struct nvmem_device *nvmem_register(cons
  	nvmem->nkeepout = config->nkeepout;
  	if (config->of_node)
  		nvmem->dev.of_node = config->of_node;
diff --git a/target/linux/generic/backport-6.6/818-v6.8-of-device-Export-of_device_make_bus_id.patch b/target/linux/generic/backport-6.6/818-v6.8-of-device-Export-of_device_make_bus_id.patch
index 564fe9822d..95e1a7b5fc 100644
--- a/target/linux/generic/backport-6.6/818-v6.8-of-device-Export-of_device_make_bus_id.patch
+++ b/target/linux/generic/backport-6.6/818-v6.8-of-device-Export-of_device_make_bus_id.patch
@@ -22,7 +22,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/of/device.c
 +++ b/drivers/of/device.c
-@@ -395,3 +395,44 @@ int of_device_uevent_modalias(struct dev
+@@ -304,3 +304,44 @@ int of_device_uevent_modalias(const stru
  	return 0;
  }
  EXPORT_SYMBOL_GPL(of_device_uevent_modalias);
@@ -69,7 +69,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 +EXPORT_SYMBOL_GPL(of_device_make_bus_id);
 --- a/drivers/of/platform.c
 +++ b/drivers/of/platform.c
-@@ -64,46 +64,6 @@ EXPORT_SYMBOL(of_find_device_by_node);
+@@ -98,46 +98,6 @@ static const struct of_device_id of_skip
   */
  
  /**
@@ -118,7 +118,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
   * @bus_id: Name to assign to the device.  May be null to use default name.
 --- a/include/linux/of_device.h
 +++ b/include/linux/of_device.h
-@@ -56,6 +56,9 @@ static inline int of_dma_configure(struc
+@@ -40,6 +40,9 @@ static inline int of_dma_configure(struc
  {
  	return of_dma_configure_id(dev, np, force_dma, NULL);
  }
@@ -128,7 +128,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  #else /* CONFIG_OF */
  
  static inline int of_driver_match_device(struct device *dev,
-@@ -113,6 +116,9 @@ static inline int of_dma_configure(struc
+@@ -82,6 +85,9 @@ static inline int of_dma_configure(struc
  {
  	return 0;
  }
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0001-nvmem-Move-of_nvmem_layout_get_container-in-another-.patch b/target/linux/generic/backport-6.6/819-v6.8-0001-nvmem-Move-of_nvmem_layout_get_container-in-another-.patch
index 2093fac8a1..59175c8051 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0001-nvmem-Move-of_nvmem_layout_get_container-in-another-.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0001-nvmem-Move-of_nvmem_layout_get_container-in-another-.patch
@@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -848,14 +848,6 @@ static int nvmem_add_cells_from_layout(s
+@@ -847,14 +847,6 @@ static int nvmem_add_cells_from_layout(s
  }
  
  #if IS_ENABLED(CONFIG_OF)
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0003-nvmem-Simplify-the-add_cells-hook.patch b/target/linux/generic/backport-6.6/819-v6.8-0003-nvmem-Simplify-the-add_cells-hook.patch
index db2d8c1b46..1f39dfea2f 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0003-nvmem-Simplify-the-add_cells-hook.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0003-nvmem-Simplify-the-add_cells-hook.patch
@@ -20,7 +20,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -817,7 +817,7 @@ static int nvmem_add_cells_from_layout(s
+@@ -816,7 +816,7 @@ static int nvmem_add_cells_from_layout(s
  	int ret;
  
  	if (layout && layout->add_cells) {
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0004-nvmem-Move-and-rename-fixup_cell_info.patch b/target/linux/generic/backport-6.6/819-v6.8-0004-nvmem-Move-and-rename-fixup_cell_info.patch
index 65aa37f834..d2c274033e 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0004-nvmem-Move-and-rename-fixup_cell_info.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0004-nvmem-Move-and-rename-fixup_cell_info.patch
@@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -676,7 +676,6 @@ static int nvmem_validate_keepouts(struc
+@@ -675,7 +675,6 @@ static int nvmem_validate_keepouts(struc
  
  static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
  {
@@ -33,7 +33,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	struct device *dev = &nvmem->dev;
  	struct device_node *child;
  	const __be32 *addr;
-@@ -706,8 +705,8 @@ static int nvmem_add_cells_from_dt(struc
+@@ -705,8 +704,8 @@ static int nvmem_add_cells_from_dt(struc
  
  		info.np = of_node_get(child);
  
@@ -44,7 +44,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  
  		ret = nvmem_add_one_cell(nvmem, &info);
  		kfree(info.name);
-@@ -896,6 +895,7 @@ struct nvmem_device *nvmem_register(cons
+@@ -895,6 +894,7 @@ struct nvmem_device *nvmem_register(cons
  
  	kref_init(&nvmem->refcnt);
  	INIT_LIST_HEAD(&nvmem->cells);
@@ -54,7 +54,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	if (!nvmem->owner && config->dev->driver)
 --- a/drivers/nvmem/imx-ocotp.c
 +++ b/drivers/nvmem/imx-ocotp.c
-@@ -584,17 +584,12 @@ static const struct of_device_id imx_oco
+@@ -583,17 +583,12 @@ static const struct of_device_id imx_oco
  };
  MODULE_DEVICE_TABLE(of, imx_ocotp_dt_ids);
  
@@ -74,7 +74,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  static int imx_ocotp_probe(struct platform_device *pdev)
  {
  	struct device *dev = &pdev->dev;
-@@ -620,7 +615,7 @@ static int imx_ocotp_probe(struct platfo
+@@ -619,7 +614,7 @@ static int imx_ocotp_probe(struct platfo
  	imx_ocotp_nvmem_config.size = 4 * priv->params->nregs;
  	imx_ocotp_nvmem_config.dev = dev;
  	imx_ocotp_nvmem_config.priv = priv;
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0005-nvmem-core-Rework-layouts-to-become-regular-devices.patch b/target/linux/generic/backport-6.6/819-v6.8-0005-nvmem-core-Rework-layouts-to-become-regular-devices.patch
index 1881332340..ce33b52328 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0005-nvmem-core-Rework-layouts-to-become-regular-devices.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0005-nvmem-core-Rework-layouts-to-become-regular-devices.patch
@@ -74,7 +74,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  # Devices
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -56,9 +56,6 @@ static LIST_HEAD(nvmem_lookup_list);
+@@ -55,9 +55,6 @@ static LIST_HEAD(nvmem_lookup_list);
  
  static BLOCKING_NOTIFIER_HEAD(nvmem_notifier);
  
@@ -84,7 +84,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  static int __nvmem_reg_read(struct nvmem_device *nvmem, unsigned int offset,
  			    void *val, size_t bytes)
  {
-@@ -741,97 +738,22 @@ static int nvmem_add_cells_from_fixed_la
+@@ -740,97 +737,22 @@ static int nvmem_add_cells_from_fixed_la
  	return err;
  }
  
@@ -189,7 +189,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  const void *nvmem_layout_get_match_data(struct nvmem_device *nvmem,
  					struct nvmem_layout *layout)
  {
-@@ -839,7 +761,7 @@ const void *nvmem_layout_get_match_data(
+@@ -838,7 +760,7 @@ const void *nvmem_layout_get_match_data(
  	const struct of_device_id *match;
  
  	layout_np = of_nvmem_layout_get_container(nvmem);
@@ -198,7 +198,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  
  	return match ? match->data : NULL;
  }
-@@ -951,19 +873,6 @@ struct nvmem_device *nvmem_register(cons
+@@ -950,19 +872,6 @@ struct nvmem_device *nvmem_register(cons
  			goto err_put_device;
  	}
  
@@ -218,7 +218,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	if (config->cells) {
  		rval = nvmem_add_cells(nvmem, config->cells, config->ncells);
  		if (rval)
-@@ -984,24 +893,24 @@ struct nvmem_device *nvmem_register(cons
+@@ -983,24 +892,24 @@ struct nvmem_device *nvmem_register(cons
  	if (rval)
  		goto err_remove_cells;
  
@@ -249,7 +249,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	if (config->compat)
  		nvmem_sysfs_remove_compat(nvmem, config);
  err_put_device:
-@@ -1023,7 +932,7 @@ static void nvmem_device_release(struct
+@@ -1022,7 +931,7 @@ static void nvmem_device_release(struct
  		device_remove_bin_file(nvmem->base_dev, &nvmem->eeprom);
  
  	nvmem_device_remove_all_cells(nvmem);
@@ -258,7 +258,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  	device_unregister(&nvmem->dev);
  }
  
-@@ -1325,6 +1234,12 @@ nvmem_cell_get_from_lookup(struct device
+@@ -1324,6 +1233,12 @@ nvmem_cell_get_from_lookup(struct device
  	return cell;
  }
  
@@ -271,7 +271,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  #if IS_ENABLED(CONFIG_OF)
  static struct nvmem_cell_entry *
  nvmem_find_cell_entry_by_node(struct nvmem_device *nvmem, struct device_node *np)
-@@ -1343,6 +1258,18 @@ nvmem_find_cell_entry_by_node(struct nvm
+@@ -1342,6 +1257,18 @@ nvmem_find_cell_entry_by_node(struct nvm
  	return cell;
  }
  
@@ -290,7 +290,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  /**
   * of_nvmem_cell_get() - Get a nvmem cell from given device node and cell id
   *
-@@ -1405,16 +1332,29 @@ struct nvmem_cell *of_nvmem_cell_get(str
+@@ -1404,16 +1331,29 @@ struct nvmem_cell *of_nvmem_cell_get(str
  		return ERR_CAST(nvmem);
  	}
  
@@ -322,7 +322,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  
  	return cell;
  }
-@@ -1528,6 +1468,7 @@ void nvmem_cell_put(struct nvmem_cell *c
+@@ -1527,6 +1467,7 @@ void nvmem_cell_put(struct nvmem_cell *c
  
  	kfree(cell);
  	__nvmem_device_put(nvmem);
@@ -330,7 +330,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  }
  EXPORT_SYMBOL_GPL(nvmem_cell_put);
  
-@@ -2105,11 +2046,22 @@ EXPORT_SYMBOL_GPL(nvmem_dev_name);
+@@ -2104,11 +2045,22 @@ EXPORT_SYMBOL_GPL(nvmem_dev_name);
  
  static int __init nvmem_init(void)
  {
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0006-nvmem-core-Expose-cells-through-sysfs.patch b/target/linux/generic/backport-6.6/819-v6.8-0006-nvmem-core-Expose-cells-through-sysfs.patch
index 89872bec2e..4a1f9aefc8 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0006-nvmem-core-Expose-cells-through-sysfs.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0006-nvmem-core-Expose-cells-through-sysfs.patch
@@ -45,7 +45,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -300,6 +300,43 @@ static umode_t nvmem_bin_attr_is_visible
+@@ -299,6 +299,43 @@ static umode_t nvmem_bin_attr_is_visible
  	return nvmem_bin_attr_get_umode(nvmem);
  }
  
@@ -89,7 +89,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  /* default read/write permissions */
  static struct bin_attribute bin_attr_rw_nvmem = {
  	.attr	= {
-@@ -321,11 +358,21 @@ static const struct attribute_group nvme
+@@ -320,11 +357,21 @@ static const struct attribute_group nvme
  	.is_bin_visible = nvmem_bin_attr_is_visible,
  };
  
@@ -111,7 +111,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  static struct bin_attribute bin_attr_nvmem_eeprom_compat = {
  	.attr	= {
  		.name	= "eeprom",
-@@ -381,6 +428,68 @@ static void nvmem_sysfs_remove_compat(st
+@@ -380,6 +427,68 @@ static void nvmem_sysfs_remove_compat(st
  		device_remove_bin_file(nvmem->base_dev, &nvmem->eeprom);
  }
  
@@ -180,7 +180,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  #else /* CONFIG_NVMEM_SYSFS */
  
  static int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
-@@ -740,11 +849,25 @@ static int nvmem_add_cells_from_fixed_la
+@@ -739,11 +848,25 @@ static int nvmem_add_cells_from_fixed_la
  
  int nvmem_layout_register(struct nvmem_layout *layout)
  {
@@ -207,7 +207,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
  }
  EXPORT_SYMBOL_GPL(nvmem_layout_register);
  
-@@ -903,10 +1026,20 @@ struct nvmem_device *nvmem_register(cons
+@@ -902,10 +1025,20 @@ struct nvmem_device *nvmem_register(cons
  	if (rval)
  		goto err_remove_dev;
  
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0008-nvmem-layouts-refactor-.add_cells-callback-arguments.patch b/target/linux/generic/backport-6.6/819-v6.8-0008-nvmem-layouts-refactor-.add_cells-callback-arguments.patch
index 1bf3ba35b6..400004c617 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0008-nvmem-layouts-refactor-.add_cells-callback-arguments.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0008-nvmem-layouts-refactor-.add_cells-callback-arguments.patch
@@ -44,7 +44,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -855,7 +855,7 @@ int nvmem_layout_register(struct nvmem_l
+@@ -854,7 +854,7 @@ int nvmem_layout_register(struct nvmem_l
  		return -EINVAL;
  
  	/* Populate the cells */
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0009-nvmem-drop-nvmem_layout_get_match_data.patch b/target/linux/generic/backport-6.6/819-v6.8-0009-nvmem-drop-nvmem_layout_get_match_data.patch
index 514b5f2de5..510f3dd841 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0009-nvmem-drop-nvmem_layout_get_match_data.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0009-nvmem-drop-nvmem_layout_get_match_data.patch
@@ -24,7 +24,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -877,19 +877,6 @@ void nvmem_layout_unregister(struct nvme
+@@ -876,19 +876,6 @@ void nvmem_layout_unregister(struct nvme
  }
  EXPORT_SYMBOL_GPL(nvmem_layout_unregister);
  
diff --git a/target/linux/generic/backport-6.6/819-v6.8-0010-nvmem-core-add-nvmem_dev_size-helper.patch b/target/linux/generic/backport-6.6/819-v6.8-0010-nvmem-core-add-nvmem_dev_size-helper.patch
index aa0bbaa0c5..ccdcc09736 100644
--- a/target/linux/generic/backport-6.6/819-v6.8-0010-nvmem-core-add-nvmem_dev_size-helper.patch
+++ b/target/linux/generic/backport-6.6/819-v6.8-0010-nvmem-core-add-nvmem_dev_size-helper.patch
@@ -21,7 +21,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -2164,6 +2164,19 @@ const char *nvmem_dev_name(struct nvmem_
+@@ -2163,6 +2163,19 @@ const char *nvmem_dev_name(struct nvmem_
  }
  EXPORT_SYMBOL_GPL(nvmem_dev_name);
  
diff --git a/target/linux/generic/backport-6.6/832-v6.7-net-phy-amd-Support-the-Altima-AMI101L.patch b/target/linux/generic/backport-6.6/832-v6.7-net-phy-amd-Support-the-Altima-AMI101L.patch
index 2969462838..fa2056b69a 100644
--- a/target/linux/generic/backport-6.6/832-v6.7-net-phy-amd-Support-the-Altima-AMI101L.patch
+++ b/target/linux/generic/backport-6.6/832-v6.7-net-phy-amd-Support-the-Altima-AMI101L.patch
@@ -16,7 +16,7 @@ Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
 
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -72,9 +72,9 @@ config SFP
+@@ -69,9 +69,9 @@ config SFP
  comment "MII PHY device drivers"
  
  config AMD_PHY
diff --git a/target/linux/generic/backport-6.6/834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch b/target/linux/generic/backport-6.6/834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch
index 1c8e014a1a..2ae209f9e1 100644
--- a/target/linux/generic/backport-6.6/834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch
+++ b/target/linux/generic/backport-6.6/834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch
@@ -35,7 +35,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
  		if (test_bit(TRIGGER_NETDEV_HALF_DUPLEX, &trigger_data->mode) &&
  		    trigger_data->duplex == DUPLEX_HALF)
  			blink_on = true;
-@@ -286,6 +298,9 @@ static ssize_t netdev_led_attr_show(stru
+@@ -289,6 +301,9 @@ static ssize_t netdev_led_attr_show(stru
  	case TRIGGER_NETDEV_LINK_10:
  	case TRIGGER_NETDEV_LINK_100:
  	case TRIGGER_NETDEV_LINK_1000:
@@ -45,7 +45,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
  	case TRIGGER_NETDEV_HALF_DUPLEX:
  	case TRIGGER_NETDEV_FULL_DUPLEX:
  	case TRIGGER_NETDEV_TX:
-@@ -316,6 +331,9 @@ static ssize_t netdev_led_attr_store(str
+@@ -319,6 +334,9 @@ static ssize_t netdev_led_attr_store(str
  	case TRIGGER_NETDEV_LINK_10:
  	case TRIGGER_NETDEV_LINK_100:
  	case TRIGGER_NETDEV_LINK_1000:
@@ -55,7 +55,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
  	case TRIGGER_NETDEV_HALF_DUPLEX:
  	case TRIGGER_NETDEV_FULL_DUPLEX:
  	case TRIGGER_NETDEV_TX:
-@@ -334,7 +352,10 @@ static ssize_t netdev_led_attr_store(str
+@@ -337,7 +355,10 @@ static ssize_t netdev_led_attr_store(str
  	if (test_bit(TRIGGER_NETDEV_LINK, &mode) &&
  	    (test_bit(TRIGGER_NETDEV_LINK_10, &mode) ||
  	     test_bit(TRIGGER_NETDEV_LINK_100, &mode) ||
@@ -67,7 +67,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
  		return -EINVAL;
  
  	cancel_delayed_work_sync(&trigger_data->work);
-@@ -364,6 +385,9 @@ DEFINE_NETDEV_TRIGGER(link, TRIGGER_NETD
+@@ -367,6 +388,9 @@ DEFINE_NETDEV_TRIGGER(link, TRIGGER_NETD
  DEFINE_NETDEV_TRIGGER(link_10, TRIGGER_NETDEV_LINK_10);
  DEFINE_NETDEV_TRIGGER(link_100, TRIGGER_NETDEV_LINK_100);
  DEFINE_NETDEV_TRIGGER(link_1000, TRIGGER_NETDEV_LINK_1000);
@@ -77,7 +77,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
  DEFINE_NETDEV_TRIGGER(half_duplex, TRIGGER_NETDEV_HALF_DUPLEX);
  DEFINE_NETDEV_TRIGGER(full_duplex, TRIGGER_NETDEV_FULL_DUPLEX);
  DEFINE_NETDEV_TRIGGER(tx, TRIGGER_NETDEV_TX);
-@@ -422,6 +446,9 @@ static struct attribute *netdev_trig_att
+@@ -425,6 +449,9 @@ static struct attribute *netdev_trig_att
  	&dev_attr_link_10.attr,
  	&dev_attr_link_100.attr,
  	&dev_attr_link_1000.attr,
@@ -87,7 +87,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
  	&dev_attr_full_duplex.attr,
  	&dev_attr_half_duplex.attr,
  	&dev_attr_rx.attr,
-@@ -519,6 +546,9 @@ static void netdev_trig_work(struct work
+@@ -522,6 +549,9 @@ static void netdev_trig_work(struct work
  			 test_bit(TRIGGER_NETDEV_LINK_10, &trigger_data->mode) ||
  			 test_bit(TRIGGER_NETDEV_LINK_100, &trigger_data->mode) ||
  			 test_bit(TRIGGER_NETDEV_LINK_1000, &trigger_data->mode) ||
@@ -99,7 +99,7 @@ Signed-off-by: Lee Jones <lee at kernel.org>
  		interval = jiffies_to_msecs(
 --- a/include/linux/leds.h
 +++ b/include/linux/leds.h
-@@ -533,6 +533,9 @@ enum led_trigger_netdev_modes {
+@@ -588,6 +588,9 @@ enum led_trigger_netdev_modes {
  	TRIGGER_NETDEV_LINK_10,
  	TRIGGER_NETDEV_LINK_100,
  	TRIGGER_NETDEV_LINK_1000,
diff --git a/target/linux/generic/backport-6.6/835-v6.9-net-phy-add-support-for-PHY-LEDs-polarity-modes.patch b/target/linux/generic/backport-6.6/835-v6.9-net-phy-add-support-for-PHY-LEDs-polarity-modes.patch
index 0182e6d1a2..30390299c8 100644
--- a/target/linux/generic/backport-6.6/835-v6.9-net-phy-add-support-for-PHY-LEDs-polarity-modes.patch
+++ b/target/linux/generic/backport-6.6/835-v6.9-net-phy-add-support-for-PHY-LEDs-polarity-modes.patch
@@ -28,7 +28,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -3138,6 +3138,7 @@ static int of_phy_led(struct phy_device
+@@ -3198,6 +3198,7 @@ static int of_phy_led(struct phy_device
  	struct device *dev = &phydev->mdio.dev;
  	struct led_init_data init_data = {};
  	struct led_classdev *cdev;
@@ -36,7 +36,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct phy_led *phyled;
  	u32 index;
  	int err;
-@@ -3155,6 +3156,21 @@ static int of_phy_led(struct phy_device
+@@ -3215,6 +3216,21 @@ static int of_phy_led(struct phy_device
  	if (index > U8_MAX)
  		return -EINVAL;
  
@@ -60,7 +60,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		cdev->brightness_set_blocking = phy_led_set_brightness;
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -791,6 +791,15 @@ struct phy_led {
+@@ -870,6 +870,15 @@ struct phy_led {
  
  #define to_phy_led(d) container_of(d, struct phy_led, led_cdev)
  
@@ -76,7 +76,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  /**
   * struct phy_driver - Driver structure for a particular PHY type
   *
-@@ -1059,6 +1068,19 @@ struct phy_driver {
+@@ -1146,6 +1155,19 @@ struct phy_driver {
  	int (*led_hw_control_get)(struct phy_device *dev, u8 index,
  				  unsigned long *rules);
  
diff --git a/target/linux/generic/backport-6.6/894-v6.8-net-ethtool-implement-ethtool_puts.patch b/target/linux/generic/backport-6.6/894-v6.8-net-ethtool-implement-ethtool_puts.patch
index 5094a6d774..9c61ff27ab 100644
--- a/target/linux/generic/backport-6.6/894-v6.8-net-ethtool-implement-ethtool_puts.patch
+++ b/target/linux/generic/backport-6.6/894-v6.8-net-ethtool-implement-ethtool_puts.patch
@@ -103,7 +103,7 @@ Signed-off-by: Justin Stitt <justinstitt at google.com>
 
 --- a/include/linux/ethtool.h
 +++ b/include/linux/ethtool.h
-@@ -843,4 +843,17 @@ int ethtool_get_phc_vclocks(struct net_d
+@@ -1052,4 +1052,17 @@ static inline int ethtool_mm_frag_size_m
   * next string.
   */
  extern __printf(2, 3) void ethtool_sprintf(u8 **data, const char *fmt, ...);
@@ -123,7 +123,7 @@ Signed-off-by: Justin Stitt <justinstitt at google.com>
  #endif /* _LINUX_ETHTOOL_H */
 --- a/net/ethtool/ioctl.c
 +++ b/net/ethtool/ioctl.c
-@@ -1974,6 +1974,13 @@ __printf(2, 3) void ethtool_sprintf(u8 *
+@@ -1991,6 +1991,13 @@ __printf(2, 3) void ethtool_sprintf(u8 *
  }
  EXPORT_SYMBOL(ethtool_sprintf);
  



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:43 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:43 -0400
Subject: [openwrt/openwrt]  generic: 6.6: manually refresh pending patches
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15320.1710184677.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5b6bca812dee241eaa4aa13aed295926550b59c9

commit 5b6bca812dee241eaa4aa13aed295926550b59c9
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Thu Jan 4 02:02:00 2024 +0800

    generic: 6.6: manually refresh pending patches
    
    Refresh pending patches for kernel 6.6.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 ...c_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch |  6 +--
 ...-.rename2-and-add-RENAME_WHITEOUT-support.patch | 32 +++++++-------
 .../141-jffs2-add-RENAME_EXCHANGE-support.patch    | 12 +++---
 .../pending-6.6/142-jffs2-add-splice-ops.patch     |  2 +-
 ...do-not-send-arp-replies-if-src-and-target.patch |  4 +-
 ...let_the_alarm_to_be_used_as_wakeup_source.patch |  2 +-
 .../pending-6.6/203-kallsyms_uncompressed.patch    |  4 +-
 .../pending-6.6/205-backtrace_module_info.patch    |  4 +-
 .../pending-6.6/302-mips_no_branch_likely.patch    |  2 +-
 .../pending-6.6/305-mips_module_reloc.patch        |  2 +-
 .../pending-6.6/332-arc-add-OWRTDTB-section.patch  |  2 +-
 ...egister-NVMEM-devices-for-partitions-with.patch |  2 +-
 ...ck-use-notifier-to-create-ubiblock-from-p.patch |  2 +-
 .../450-09-block-partitions-populate-fwnode.patch  |  4 +-
 .../450-11-block-implement-NVMEM-provider.patch    | 10 ++---
 .../450-13-mmc-core-set-card-fwnode_handle.patch   |  2 +-
 ...0-14-mmc-block-set-fwnode-of-disk-devices.patch |  2 +-
 ...465-m25p80-mx-disable-software-protection.patch | 10 ++---
 .../479-mtd-spi-nor-add-xtx-xt25f128b.patch        |  2 +-
 ...pi-nor-add-support-for-Gigadevice-GD25D05.patch |  2 +-
 ...spinand-Add-support-for-Etron-EM73D044VCx.patch | 16 ++++---
 ...-mounting-ubi0-rootfs-in-init-do_mounts.c.patch | 15 ++++---
 ...-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch |  2 +-
 ...td-spi-nor-disable-16-bit-sr-for-macronix.patch |  8 ++--
 .../pending-6.6/500-fs_cdrom_dependencies.patch    | 10 ++---
 ...t-bypass-device-lookup-for-dev-fit-rootfs.patch | 18 ++++----
 .../530-jffs2_make_lzma_available.patch            | 48 +++++++++++++--------
 .../pending-6.6/630-packet_socket_type.patch       | 14 +++---
 ...jecting-with-source-address-failed-policy.patch |  8 ++--
 ...80-NET-skip-GRO-for-foreign-MAC-addresses.patch | 10 ++---
 .../683-of_net-add-mac-address-to-of-tree.patch    |  6 +--
 ...-add-detach-callback-to-struct-phy_driver.patch |  6 +--
 ...ge-add-knob-for-filtering-rx-tx-BPDU-pack.patch | 50 +++++++++++-----------
 ...-realtek-detect-early-version-of-RTL8221B.patch |  2 +-
 ...t-mtk_eth_soc-work-around-issue-with-send.patch |  8 ++++
 ...t-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch | 14 +++---
 ...d-optional-threading-for-backlog-processi.patch |  4 +-
 ...rovide-old-opp-to-config_clks-on-_set_opp.patch |  2 +-
 ...-core-support-mac-base-fixed-layout-cells.patch |  6 +--
 .../811-pci_disable_usb_common_quirks.patch        |  2 +-
 .../generic/pending-6.6/834-ledtrig-libata.patch   |  8 ++--
 ...M-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch |  4 +-
 .../generic/pending-6.6/920-mangle_bootargs.patch  |  6 +--
 43 files changed, 198 insertions(+), 177 deletions(-)

diff --git a/target/linux/generic/pending-6.6/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-6.6/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
index 4bf473f9a7..099b07ef7a 100644
--- a/target/linux/generic/pending-6.6/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
+++ b/target/linux/generic/pending-6.6/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
@@ -69,9 +69,9 @@ previously calculated offset is zero for the named platform it is able to boot
 Signed-off-by: Tobias Wolf <dev-NTEO at vplace.de>
 ---
 
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -7897,7 +7897,7 @@ static void __init alloc_node_mem_map(st
+--- a/mm/mm_init.c
++++ b/mm/mm_init.c
+@@ -1673,7 +1673,7 @@ static void __init alloc_node_mem_map(st
  	if (pgdat == NODE_DATA(0)) {
  		mem_map = NODE_DATA(0)->node_mem_map;
  		if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
diff --git a/target/linux/generic/pending-6.6/140-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch b/target/linux/generic/pending-6.6/140-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch
index 8f40ae3ba2..b82f3d8012 100644
--- a/target/linux/generic/pending-6.6/140-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch
+++ b/target/linux/generic/pending-6.6/140-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch
@@ -8,18 +8,18 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/fs/jffs2/dir.c
 +++ b/fs/jffs2/dir.c
-@@ -614,8 +614,8 @@ static int jffs2_rmdir (struct inode *di
+@@ -617,8 +617,8 @@ static int jffs2_rmdir (struct inode *di
  	return ret;
  }
  
--static int jffs2_mknod (struct user_namespace *mnt_userns, struct inode *dir_i,
+-static int jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i,
 -		        struct dentry *dentry, umode_t mode, dev_t rdev)
-+static int __jffs2_mknod (struct user_namespace *mnt_userns, struct inode *dir_i,
-+			  struct dentry *dentry, umode_t mode, dev_t rdev, bool whiteout)
++static int __jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i,
++		          struct dentry *dentry, umode_t mode, dev_t rdev, bool whiteout)
  {
  	struct jffs2_inode_info *f, *dir_f;
  	struct jffs2_sb_info *c;
-@@ -754,7 +754,11 @@ static int jffs2_mknod (struct user_name
+@@ -758,7 +758,11 @@ static int jffs2_mknod (struct mnt_idmap
  	mutex_unlock(&dir_f->sem);
  	jffs2_complete_reservation(c);
  
@@ -32,27 +32,27 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	return 0;
  
   fail:
-@@ -762,6 +766,19 @@ static int jffs2_mknod (struct user_name
+@@ -766,6 +770,19 @@ static int jffs2_mknod (struct mnt_idmap
  	return ret;
  }
  
-+static int jffs2_mknod (struct user_namespace *mnt_userns, struct inode *dir_i,
-+			  struct dentry *dentry, umode_t mode, dev_t rdev)
++static int jffs2_mknod (struct mnt_idmap *idmap, struct inode *dir_i,
++			struct dentry *dentry, umode_t mode, dev_t rdev)
 +{
-+	return __jffs2_mknod(mnt_userns, dir_i, dentry, mode, rdev, false);
++	return __jffs2_mknod(idmap, dir_i, dentry, mode, rdev, false);
 +}
 +
-+static int jffs2_whiteout (struct user_namespace *mnt_userns, struct inode *old_dir,
-+			    struct dentry *old_dentry)
++static int jffs2_whiteout (struct mnt_idmap *idmap, struct inode *old_dir,
++			   struct dentry *old_dentry)
 +{
-+	return __jffs2_mknod(mnt_userns, old_dir, old_dentry, S_IFCHR | WHITEOUT_MODE,
++	return __jffs2_mknod(idmap, old_dir, old_dentry, S_IFCHR | WHITEOUT_MODE,
 +			     WHITEOUT_DEV, true);
 +}
 +
- static int jffs2_rename (struct user_namespace *mnt_userns,
+ static int jffs2_rename (struct mnt_idmap *idmap,
  			 struct inode *old_dir_i, struct dentry *old_dentry,
  			 struct inode *new_dir_i, struct dentry *new_dentry,
-@@ -773,7 +790,7 @@ static int jffs2_rename (struct user_nam
+@@ -777,7 +794,7 @@ static int jffs2_rename (struct mnt_idma
  	uint8_t type;
  	uint32_t now;
  
@@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		return -EINVAL;
  
  	/* The VFS will check for us and prevent trying to rename a
-@@ -839,9 +856,14 @@ static int jffs2_rename (struct user_nam
+@@ -843,9 +860,14 @@ static int jffs2_rename (struct mnt_idma
  	if (d_is_dir(old_dentry) && !victim_f)
  		inc_nlink(new_dir_i);
  
@@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 -			      old_dentry->d_name.name, old_dentry->d_name.len, NULL, now);
 +	if (flags & RENAME_WHITEOUT)
 +		/* Replace with whiteout */
-+		ret = jffs2_whiteout(mnt_userns, old_dir_i, old_dentry);
++		ret = jffs2_whiteout(idmap, old_dir_i, old_dentry);
 +	else
 +		/* Unlink the original */
 +		ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
diff --git a/target/linux/generic/pending-6.6/141-jffs2-add-RENAME_EXCHANGE-support.patch b/target/linux/generic/pending-6.6/141-jffs2-add-RENAME_EXCHANGE-support.patch
index f58fc791d2..c3a528ec90 100644
--- a/target/linux/generic/pending-6.6/141-jffs2-add-RENAME_EXCHANGE-support.patch
+++ b/target/linux/generic/pending-6.6/141-jffs2-add-RENAME_EXCHANGE-support.patch
@@ -6,7 +6,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/fs/jffs2/dir.c
 +++ b/fs/jffs2/dir.c
-@@ -787,18 +787,31 @@ static int jffs2_rename (struct user_nam
+@@ -791,18 +791,31 @@ static int jffs2_rename (struct mnt_idma
  	int ret;
  	struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
  	struct jffs2_inode_info *victim_f = NULL;
@@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		victim_f = JFFS2_INODE_INFO(d_inode(new_dentry));
  		if (d_is_dir(new_dentry)) {
  			struct jffs2_full_dirent *fd;
-@@ -833,7 +846,7 @@ static int jffs2_rename (struct user_nam
+@@ -837,7 +850,7 @@ static int jffs2_rename (struct mnt_idma
  	if (ret)
  		return ret;
  
@@ -49,10 +49,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		/* There was a victim. Kill it off nicely */
  		if (d_is_dir(new_dentry))
  			clear_nlink(d_inode(new_dentry));
-@@ -859,6 +872,12 @@ static int jffs2_rename (struct user_nam
+@@ -863,6 +876,12 @@ static int jffs2_rename (struct mnt_idma
  	if (flags & RENAME_WHITEOUT)
  		/* Replace with whiteout */
- 		ret = jffs2_whiteout(mnt_userns, old_dir_i, old_dentry);
+ 		ret = jffs2_whiteout(idmap, old_dir_i, old_dentry);
 +	else if (flags & RENAME_EXCHANGE)
 +		/* Replace the original */
 +		ret = jffs2_do_link(c, JFFS2_INODE_INFO(old_dir_i),
@@ -62,7 +62,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	else
  		/* Unlink the original */
  		ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
-@@ -890,7 +909,7 @@ static int jffs2_rename (struct user_nam
+@@ -895,7 +914,7 @@ static int jffs2_rename (struct mnt_idma
  		return ret;
  	}
  
@@ -70,4 +70,4 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (d_is_dir(old_dentry) && !(flags & RENAME_EXCHANGE))
  		drop_nlink(old_dir_i);
  
- 	new_dir_i->i_mtime = new_dir_i->i_ctime = old_dir_i->i_mtime = old_dir_i->i_ctime = ITIME(now);
+ 	old_dir_i->i_mtime = inode_set_ctime_to_ts(old_dir_i, ITIME(now));
diff --git a/target/linux/generic/pending-6.6/142-jffs2-add-splice-ops.patch b/target/linux/generic/pending-6.6/142-jffs2-add-splice-ops.patch
index de847a1f5c..ea57158cc2 100644
--- a/target/linux/generic/pending-6.6/142-jffs2-add-splice-ops.patch
+++ b/target/linux/generic/pending-6.6/142-jffs2-add-splice-ops.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	.open =		generic_file_open,
   	.read_iter =	generic_file_read_iter,
   	.write_iter =	generic_file_write_iter,
-+	.splice_read =	generic_file_splice_read,
++	.splice_read =	filemap_splice_read,
 +	.splice_write =	iter_file_splice_write,
  	.unlocked_ioctl=jffs2_ioctl,
  	.mmap =		generic_file_readonly_mmap,
diff --git a/target/linux/generic/pending-6.6/151-net-bridge-do-not-send-arp-replies-if-src-and-target.patch b/target/linux/generic/pending-6.6/151-net-bridge-do-not-send-arp-replies-if-src-and-target.patch
index f420d210c2..3abeacaffb 100644
--- a/target/linux/generic/pending-6.6/151-net-bridge-do-not-send-arp-replies-if-src-and-target.patch
+++ b/target/linux/generic/pending-6.6/151-net-bridge-do-not-send-arp-replies-if-src-and-target.patch
@@ -17,8 +17,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +++ b/net/bridge/br_arp_nd_proxy.c
 @@ -204,7 +204,10 @@ void br_do_proxy_suppress_arp(struct sk_
  			if ((p && (p->flags & BR_PROXYARP)) ||
- 			    (f->dst && (f->dst->flags & (BR_PROXYARP_WIFI |
- 							 BR_NEIGH_SUPPRESS)))) {
+ 			    (f->dst && (f->dst->flags & BR_PROXYARP_WIFI)) ||
+ 			    br_is_neigh_suppress_enabled(f->dst, vid)) {
 -				if (!vid)
 +				replied = true;
 +				if (!memcmp(n->ha, sha, dev->addr_len))
diff --git a/target/linux/generic/pending-6.6/191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source.patch b/target/linux/generic/pending-6.6/191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source.patch
index a9a5cdf8ba..85e5600847 100644
--- a/target/linux/generic/pending-6.6/191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source.patch
+++ b/target/linux/generic/pending-6.6/191-rtc-rs5c372-let_the_alarm_to_be_used_as_wakeup_source.patch
@@ -26,8 +26,8 @@ Signed-off-by: Daniel Gonz?lez Cabanelas <dgcbueu at gmail.com>
  	dev_dbg(&client->dev, "%s\n", __func__);
  
 @@ -868,6 +869,12 @@ static int rs5c372_probe(struct i2c_clie
- 	else
  		rs5c372->type = id->driver_data;
+ 	}
  
 +#ifdef CONFIG_OF
 +	if(of_property_read_bool(client->dev.of_node,
diff --git a/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
index 78ed262b78..5c6f620749 100644
--- a/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
@@ -66,8 +66,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int base_relative;
  static int lto_clang;
 @@ -608,6 +609,9 @@ static void write_src(void)
- 			(unsigned char)(table[i]->seq >> 0));
- 	printf("\n");
+ 
+ 	free(markers);
  
 +	if (uncompressed)
 +		return;
diff --git a/target/linux/generic/pending-6.6/205-backtrace_module_info.patch b/target/linux/generic/pending-6.6/205-backtrace_module_info.patch
index 27a1347981..7bbb596a5d 100644
--- a/target/linux/generic/pending-6.6/205-backtrace_module_info.patch
+++ b/target/linux/generic/pending-6.6/205-backtrace_module_info.patch
@@ -32,8 +32,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	mod = __module_address(value);
 +	if (mod)
 +		snprintf(sym + len, sizeof(sym) - len, " [%s@%p+0x%x]",
-+			 mod->name, mod->core_layout.base,
-+			 mod->core_layout.size);
++			 mod->name, mod->mem[MOD_TEXT].base,
++			 mod->mem[MOD_TEXT].size);
  #endif
 +	return string(buf, end, sym, spec);
  }
diff --git a/target/linux/generic/pending-6.6/302-mips_no_branch_likely.patch b/target/linux/generic/pending-6.6/302-mips_no_branch_likely.patch
index 542fba651f..669aa8143a 100644
--- a/target/linux/generic/pending-6.6/302-mips_no_branch_likely.patch
+++ b/target/linux/generic/pending-6.6/302-mips_no_branch_likely.patch
@@ -17,6 +17,6 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #
 -cflags-y			+= -G 0 -mno-abicalls -fno-pic -pipe
 +cflags-y			+= -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
- cflags-y			+= -msoft-float
+ cflags-y			+= -msoft-float -Wa,-msoft-float
  LDFLAGS_vmlinux			+= -G 0 -static -n -nostdlib
  KBUILD_AFLAGS_MODULE		+= -mlong-calls
diff --git a/target/linux/generic/pending-6.6/305-mips_module_reloc.patch b/target/linux/generic/pending-6.6/305-mips_module_reloc.patch
index 5de9019677..6d13574b66 100644
--- a/target/linux/generic/pending-6.6/305-mips_module_reloc.patch
+++ b/target/linux/generic/pending-6.6/305-mips_module_reloc.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +++ b/arch/mips/Makefile
 @@ -97,8 +97,18 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
  cflags-y			+= -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
- cflags-y			+= -msoft-float
+ cflags-y			+= -msoft-float -Wa,-msoft-float
  LDFLAGS_vmlinux			+= -G 0 -static -n -nostdlib
 +ifdef CONFIG_64BIT
  KBUILD_AFLAGS_MODULE		+= -mlong-calls
diff --git a/target/linux/generic/pending-6.6/332-arc-add-OWRTDTB-section.patch b/target/linux/generic/pending-6.6/332-arc-add-OWRTDTB-section.patch
index 30158cf399..4a76e216d5 100644
--- a/target/linux/generic/pending-6.6/332-arc-add-OWRTDTB-section.patch
+++ b/target/linux/generic/pending-6.6/332-arc-add-OWRTDTB-section.patch
@@ -74,7 +74,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin at synopsys.com>
 +	*
 +	* Note: "OWRTDTB:" won't be overwritten with .dtb, .dtb will follow it.
 +	*/
-+ 	.owrt : {
++	.owrt : {
 +		*(.owrt)
 +	. = ALIGN(PAGE_SIZE);
 +	}
diff --git a/target/linux/generic/pending-6.6/401-mtd-don-t-register-NVMEM-devices-for-partitions-with.patch b/target/linux/generic/pending-6.6/401-mtd-don-t-register-NVMEM-devices-for-partitions-with.patch
index 42b5a564b1..52acb0633b 100644
--- a/target/linux/generic/pending-6.6/401-mtd-don-t-register-NVMEM-devices-for-partitions-with.patch
+++ b/target/linux/generic/pending-6.6/401-mtd-don-t-register-NVMEM-devices-for-partitions-with.patch
@@ -43,6 +43,6 @@ Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
 +	    of_device_is_compatible(node, "brcm,env"))
 +		return 0;
 +
- 	config.id = -1;
+ 	config.id = NVMEM_DEVID_NONE;
  	config.dev = &mtd->dev;
  	config.name = dev_name(&mtd->dev);
diff --git a/target/linux/generic/pending-6.6/450-03-mtd-ubi-block-use-notifier-to-create-ubiblock-from-p.patch b/target/linux/generic/pending-6.6/450-03-mtd-ubi-block-use-notifier-to-create-ubiblock-from-p.patch
index eda3b108da..421daa0125 100644
--- a/target/linux/generic/pending-6.6/450-03-mtd-ubi-block-use-notifier-to-create-ubiblock-from-p.patch
+++ b/target/linux/generic/pending-6.6/450-03-mtd-ubi-block-use-notifier-to-create-ubiblock-from-p.patch
@@ -25,7 +25,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +#include <linux/namei.h>
  #include <linux/slab.h>
  #include <linux/mtd/ubi.h>
- #include <linux/workqueue.h>
+ #include <linux/blkdev.h>
 @@ -67,10 +68,10 @@ struct ubiblock_pdu {
  };
  
diff --git a/target/linux/generic/pending-6.6/450-09-block-partitions-populate-fwnode.patch b/target/linux/generic/pending-6.6/450-09-block-partitions-populate-fwnode.patch
index 8aa5cba678..b46044f5d9 100644
--- a/target/linux/generic/pending-6.6/450-09-block-partitions-populate-fwnode.patch
+++ b/target/linux/generic/pending-6.6/450-09-block-partitions-populate-fwnode.patch
@@ -21,10 +21,10 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +
  #include "check.h"
  
- static int (*check_part[])(struct parsed_partitions *) = {
+ static int (*const check_part[])(struct parsed_partitions *) = {
 @@ -298,6 +300,43 @@ static ssize_t whole_disk_show(struct de
  }
- static DEVICE_ATTR(whole_disk, 0444, whole_disk_show, NULL);
+ static const DEVICE_ATTR(whole_disk, 0444, whole_disk_show, NULL);
  
 +static struct fwnode_handle *find_partition_fwnode(struct block_device *bdev)
 +{
diff --git a/target/linux/generic/pending-6.6/450-11-block-implement-NVMEM-provider.patch b/target/linux/generic/pending-6.6/450-11-block-implement-NVMEM-provider.patch
index e18b0c3a5c..d1972d97dc 100644
--- a/target/linux/generic/pending-6.6/450-11-block-implement-NVMEM-provider.patch
+++ b/target/linux/generic/pending-6.6/450-11-block-implement-NVMEM-provider.patch
@@ -33,7 +33,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +
  source "block/partitions/Kconfig"
  
- config BLOCK_COMPAT
+ config BLK_MQ_PCI
 --- a/block/Makefile
 +++ b/block/Makefile
 @@ -35,6 +35,7 @@ obj-$(CONFIG_BLK_DEV_ZONED)	+= blk-zoned
@@ -97,7 +97,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	if (!bnv->bdev->bd_disk->fops->open)
 +		return -EIO;
 +
-+	ret = bnv->bdev->bd_disk->fops->open(bnv->bdev, FMODE_READ);
++	ret = bnv->bdev->bd_disk->fops->open(bnv->bdev->bd_disk, BLK_OPEN_READ);
 +	if (ret)
 +		return ret;
 +
@@ -119,12 +119,12 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	}
 +
 +err_release_bdev:
-+	bnv->bdev->bd_disk->fops->release(bnv->bdev->bd_disk, FMODE_READ);
++	bnv->bdev->bd_disk->fops->release(bnv->bdev->bd_disk);
 +
 +	return ret;
 +}
 +
-+static int blk_nvmem_register(struct device *dev, struct class_interface *iface)
++static int blk_nvmem_register(struct device *dev)
 +{
 +	struct device_node *np = dev_of_node(dev);
 +	struct block_device *bdev = dev_to_bdev(dev);
@@ -192,7 +192,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	return 0;
 +}
 +
-+static void blk_nvmem_unregister(struct device *dev, struct class_interface *iface)
++static void blk_nvmem_unregister(struct device *dev)
 +{
 +	struct block_device *bdev = dev_to_bdev(dev);
 +	struct blk_nvmem *bnv_c, *bnv = NULL;
diff --git a/target/linux/generic/pending-6.6/450-13-mmc-core-set-card-fwnode_handle.patch b/target/linux/generic/pending-6.6/450-13-mmc-core-set-card-fwnode_handle.patch
index fada280437..cfc43318ca 100644
--- a/target/linux/generic/pending-6.6/450-13-mmc-core-set-card-fwnode_handle.patch
+++ b/target/linux/generic/pending-6.6/450-13-mmc-core-set-card-fwnode_handle.patch
@@ -13,8 +13,8 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 --- a/drivers/mmc/core/bus.c
 +++ b/drivers/mmc/core/bus.c
 @@ -363,6 +363,8 @@ int mmc_add_card(struct mmc_card *card)
+ 
  	mmc_add_card_debugfs(card);
- #endif
  	card->dev.of_node = mmc_of_find_child_device(card->host, 0);
 +	if (card->dev.of_node && !card->dev.fwnode)
 +		card->dev.fwnode = &card->dev.of_node->fwnode;
diff --git a/target/linux/generic/pending-6.6/450-14-mmc-block-set-fwnode-of-disk-devices.patch b/target/linux/generic/pending-6.6/450-14-mmc-block-set-fwnode-of-disk-devices.patch
index a9e53f1155..e645855475 100644
--- a/target/linux/generic/pending-6.6/450-14-mmc-block-set-fwnode-of-disk-devices.patch
+++ b/target/linux/generic/pending-6.6/450-14-mmc-block-set-fwnode-of-disk-devices.patch
@@ -36,4 +36,4 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +
  	string_get_size((u64)size, 512, STRING_UNITS_2,
  			cap_str, sizeof(cap_str));
- 	pr_info("%s: %s %s %s %s\n",
+ 	pr_info("%s: %s %s %s%s\n",
diff --git a/target/linux/generic/pending-6.6/465-m25p80-mx-disable-software-protection.patch b/target/linux/generic/pending-6.6/465-m25p80-mx-disable-software-protection.patch
index 1e28077338..0bed77b3b5 100644
--- a/target/linux/generic/pending-6.6/465-m25p80-mx-disable-software-protection.patch
+++ b/target/linux/generic/pending-6.6/465-m25p80-mx-disable-software-protection.patch
@@ -8,11 +8,11 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/mtd/spi-nor/macronix.c
 +++ b/drivers/mtd/spi-nor/macronix.c
-@@ -106,6 +106,7 @@ static void macronix_nor_default_init(st
+@@ -115,6 +115,7 @@ static void macronix_nor_default_init(st
  {
- 	nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable;
- 	nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode;
+ 	if (!nor->params->set_4byte_addr_mode)
+ 		nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b;
 +	nor->flags |= SNOR_F_HAS_LOCK;
- }
  
- static const struct spi_nor_fixups macronix_nor_fixups = {
+ 	return 0;
+ }
diff --git a/target/linux/generic/pending-6.6/479-mtd-spi-nor-add-xtx-xt25f128b.patch b/target/linux/generic/pending-6.6/479-mtd-spi-nor-add-xtx-xt25f128b.patch
index d2a9fb3436..371f1a7276 100644
--- a/target/linux/generic/pending-6.6/479-mtd-spi-nor-add-xtx-xt25f128b.patch
+++ b/target/linux/generic/pending-6.6/479-mtd-spi-nor-add-xtx-xt25f128b.patch
@@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	&spi_nor_xtx,
  };
  
- static const struct flash_info *spi_nor_match_id(struct spi_nor *nor,
+ static const struct flash_info spi_nor_generic_flash = {
 --- a/drivers/mtd/spi-nor/core.h
 +++ b/drivers/mtd/spi-nor/core.h
 @@ -633,6 +633,7 @@ extern const struct spi_nor_manufacturer
diff --git a/target/linux/generic/pending-6.6/481-mtd-spi-nor-add-support-for-Gigadevice-GD25D05.patch b/target/linux/generic/pending-6.6/481-mtd-spi-nor-add-support-for-Gigadevice-GD25D05.patch
index 581e06190b..3fdd354e6b 100644
--- a/target/linux/generic/pending-6.6/481-mtd-spi-nor-add-support-for-Gigadevice-GD25D05.patch
+++ b/target/linux/generic/pending-6.6/481-mtd-spi-nor-add-support-for-Gigadevice-GD25D05.patch
@@ -15,7 +15,7 @@ Signed-off-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
  
  static const struct flash_info gigadevice_nor_parts[] = {
 +	{ "gd25q05", INFO(0xc84010, 0, 64 * 1024,  1)
-+		FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) 
++		FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
 +		NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
 +			      SPI_NOR_QUAD_READ) },
  	{ "gd25q16", INFO(0xc84015, 0, 64 * 1024,  32)
diff --git a/target/linux/generic/pending-6.6/487-mtd-spinand-Add-support-for-Etron-EM73D044VCx.patch b/target/linux/generic/pending-6.6/487-mtd-spinand-Add-support-for-Etron-EM73D044VCx.patch
index 81378fba86..8fd1365952 100644
--- a/target/linux/generic/pending-6.6/487-mtd-spinand-Add-support-for-Etron-EM73D044VCx.patch
+++ b/target/linux/generic/pending-6.6/487-mtd-spinand-Add-support-for-Etron-EM73D044VCx.patch
@@ -40,15 +40,17 @@ Submitted-by: Daniel Danzberger <daniel at dd-wrt.com>
 
 --- a/drivers/mtd/nand/spi/Makefile
 +++ b/drivers/mtd/nand/spi/Makefile
-@@ -1,3 +1,3 @@
+@@ -1,4 +1,4 @@
  # SPDX-License-Identifier: GPL-2.0
--spinand-objs := core.o ato.o esmt.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
-+spinand-objs := core.o ato.o esmt.o etron.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
+-spinand-objs := core.o alliancememory.o ato.o esmt.o gigadevice.o macronix.o
+-spinand-objs += micron.o paragon.o toshiba.o winbond.o xtx.o
++spinand-objs := core.o alliancememory.o ato.o esmt.o etron.o gigadevice.o
++spinand-objs += macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
 --- a/drivers/mtd/nand/spi/core.c
 +++ b/drivers/mtd/nand/spi/core.c
-@@ -939,6 +939,7 @@ static const struct nand_ops spinand_ops
- static const struct spinand_manufacturer *spinand_manufacturers[] = {
+@@ -940,6 +940,7 @@ static const struct spinand_manufacturer
+ 	&alliancememory_spinand_manufacturer,
  	&ato_spinand_manufacturer,
  	&esmt_c8_spinand_manufacturer,
 +	&etron_spinand_manufacturer,
@@ -158,8 +160,8 @@ Submitted-by: Daniel Danzberger <daniel at dd-wrt.com>
 +};
 --- a/include/linux/mtd/spinand.h
 +++ b/include/linux/mtd/spinand.h
-@@ -262,6 +262,7 @@ struct spinand_manufacturer {
- /* SPI NAND manufacturers */
+@@ -263,6 +263,7 @@ struct spinand_manufacturer {
+ extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
  extern const struct spinand_manufacturer ato_spinand_manufacturer;
  extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer;
 +extern const struct spinand_manufacturer etron_spinand_manufacturer;
diff --git a/target/linux/generic/pending-6.6/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch b/target/linux/generic/pending-6.6/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
index f95ec46f14..b63b333c47 100644
--- a/target/linux/generic/pending-6.6/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
+++ b/target/linux/generic/pending-6.6/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
@@ -40,14 +40,15 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #ifdef CONFIG_ROOT_NFS
  
  #define NFSROOT_TIMEOUT_MIN	5
-@@ -579,6 +602,10 @@ void __init mount_root(void)
- 		return;
- 	}
- #endif
+@@ -408,6 +408,11 @@ void __init mount_root(void)
+ 
+ void __init mount_root(char *root_device_name)
+ {
 +#ifdef CONFIG_MTD_ROOTFS_ROOT_DEV
 +	if (!mount_ubi_rootfs())
 +		return;
 +#endif
- 	if (ROOT_DEV == 0 && root_device_name && root_fs_names) {
- 		if (mount_nodev_root() == 0)
- 			return;
++
+ 	switch (ROOT_DEV) {
+ 	case Root_NFS:
+ 		mount_nfs_root();
diff --git a/target/linux/generic/pending-6.6/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch b/target/linux/generic/pending-6.6/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
index 5357c7e15d..16bdfdd4b5 100644
--- a/target/linux/generic/pending-6.6/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
+++ b/target/linux/generic/pending-6.6/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
@@ -31,4 +31,4 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +
  	return 0;
  
- out_destroy_wq:
+ out_remove_minor:
diff --git a/target/linux/generic/pending-6.6/499-mtd-spi-nor-disable-16-bit-sr-for-macronix.patch b/target/linux/generic/pending-6.6/499-mtd-spi-nor-disable-16-bit-sr-for-macronix.patch
index 99e0fc72bf..e69eaf6bcc 100644
--- a/target/linux/generic/pending-6.6/499-mtd-spi-nor-disable-16-bit-sr-for-macronix.patch
+++ b/target/linux/generic/pending-6.6/499-mtd-spi-nor-disable-16-bit-sr-for-macronix.patch
@@ -20,11 +20,11 @@ Signed-off-by: Nick Hainke <vincent at systemli.org>
 
 --- a/drivers/mtd/spi-nor/macronix.c
 +++ b/drivers/mtd/spi-nor/macronix.c
-@@ -107,6 +107,7 @@ static void macronix_nor_default_init(st
+@@ -115,6 +115,7 @@ static void macronix_nor_default_init(st
  {
- 	nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable;
- 	nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode;
+ 	if (!nor->params->set_4byte_addr_mode)
+ 		nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b;
 +	nor->flags &= ~SNOR_F_HAS_16BIT_SR;
  	nor->flags |= SNOR_F_HAS_LOCK;
- }
  
+ 	return 0;
diff --git a/target/linux/generic/pending-6.6/500-fs_cdrom_dependencies.patch b/target/linux/generic/pending-6.6/500-fs_cdrom_dependencies.patch
index 2053c0fbe2..7c143584a4 100644
--- a/target/linux/generic/pending-6.6/500-fs_cdrom_dependencies.patch
+++ b/target/linux/generic/pending-6.6/500-fs_cdrom_dependencies.patch
@@ -17,9 +17,9 @@ Subject: [PATCH] fs: add cdrom dependency
  	tristate "Apple Macintosh file system support"
  	depends on BLOCK
 +	select CDROM
+ 	select BUFFER_HEAD
  	select NLS
- 	help
- 	  If you say Y here, you will be able to mount Macintosh-formatted
+ 	select LEGACY_DIRECT_IO
 --- a/fs/hfsplus/Kconfig
 +++ b/fs/hfsplus/Kconfig
 @@ -2,6 +2,7 @@
@@ -27,9 +27,9 @@ Subject: [PATCH] fs: add cdrom dependency
  	tristate "Apple Extended HFS file system support"
  	depends on BLOCK
 +	select CDROM
+ 	select BUFFER_HEAD
  	select NLS
  	select NLS_UTF8
- 	help
 --- a/fs/isofs/Kconfig
 +++ b/fs/isofs/Kconfig
 @@ -1,6 +1,7 @@
@@ -37,9 +37,9 @@ Subject: [PATCH] fs: add cdrom dependency
  config ISO9660_FS
  	tristate "ISO 9660 CDROM file system support"
 +	select CDROM
+ 	select BUFFER_HEAD
  	help
  	  This is the standard file system used on CD-ROMs.  It was previously
- 	  known as "High Sierra File System" and is called "hsfs" on other
 --- a/fs/udf/Kconfig
 +++ b/fs/udf/Kconfig
 @@ -1,6 +1,7 @@
@@ -47,6 +47,6 @@ Subject: [PATCH] fs: add cdrom dependency
  config UDF_FS
  	tristate "UDF file system support"
 +	select CDROM
+ 	select BUFFER_HEAD
  	select CRC_ITU_T
  	select NLS
- 	help
diff --git a/target/linux/generic/pending-6.6/511-init-bypass-device-lookup-for-dev-fit-rootfs.patch b/target/linux/generic/pending-6.6/511-init-bypass-device-lookup-for-dev-fit-rootfs.patch
index 685a5f9da5..e6ad104981 100644
--- a/target/linux/generic/pending-6.6/511-init-bypass-device-lookup-for-dev-fit-rootfs.patch
+++ b/target/linux/generic/pending-6.6/511-init-bypass-device-lookup-for-dev-fit-rootfs.patch
@@ -13,13 +13,13 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/init/do_mounts.c
 +++ b/init/do_mounts.c
-@@ -645,7 +645,8 @@ void __init prepare_namespace(void)
+@@ -463,7 +463,8 @@ static dev_t __init parse_root_device(char
+ 	int error;
+ 	dev_t dev;
  
- 	if (saved_root_name[0]) {
- 		root_device_name = saved_root_name;
--		if (!strncmp(root_device_name, "mtd", 3) ||
-+		if (!strncmp(root_device_name, "fit", 3) ||
-+		    !strncmp(root_device_name, "mtd", 3) ||
- 		    !strncmp(root_device_name, "ubi", 3)) {
- 			mount_block_root(root_device_name, root_mountflags);
- 			goto out;
+-	if (!strncmp(root_device_name, "mtd", 3) ||
++	if (!strncmp(root_device_name, "fit", 3) ||
++	    !strncmp(root_device_name, "mtd", 3) ||
+ 	    !strncmp(root_device_name, "ubi", 3))
+ 		return Root_Generic;
+ 	if (strcmp(root_device_name, "/dev/nfs") == 0)
diff --git a/target/linux/generic/pending-6.6/530-jffs2_make_lzma_available.patch b/target/linux/generic/pending-6.6/530-jffs2_make_lzma_available.patch
index 27a673399a..3e93c61839 100644
--- a/target/linux/generic/pending-6.6/530-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/pending-6.6/530-jffs2_make_lzma_available.patch
@@ -66,26 +66,33 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
 +CFLAGS_compr_lzma.o += -Iinclude/linux -Ilib/lzma
 --- a/fs/jffs2/compr.c
 +++ b/fs/jffs2/compr.c
-@@ -378,6 +378,9 @@ int __init jffs2_compressors_init(void)
- #ifdef CONFIG_JFFS2_LZO
- 	jffs2_lzo_init();
- #endif
-+#ifdef CONFIG_JFFS2_LZMA
-+	jffs2_lzma_init();
-+#endif
+@@ -381,6 +381,9 @@ int __init jffs2_compressors_init(void)
+ 	ret = jffs2_lzo_init();
+ 	if (ret)
+ 		goto exit_dynrubin;
++	ret = jffs2_lzma_init();
++	if (ret)
++		goto exit_lzo;
+ 
+ 
  /* Setting default compression mode */
- #ifdef CONFIG_JFFS2_CMODE_NONE
- 	jffs2_compression_mode = JFFS2_COMPR_MODE_NONE;
-@@ -401,6 +404,9 @@ int __init jffs2_compressors_init(void)
+@@ -402,6 +405,8 @@ int __init jffs2_compressors_init(void)
+ #endif
+ 	return 0;
+ 
++exit_lzo:
++	jffs2_lzo_exit();
+ exit_dynrubin:
+ 	jffs2_dynrubin_exit();
+ exit_runinmips:
+@@ -417,6 +422,7 @@ int __init jffs2_compressors_init(void)
  int jffs2_compressors_exit(void)
  {
  /* Unregistering compressors */
-+#ifdef CONFIG_JFFS2_LZMA
 +	jffs2_lzma_exit();
-+#endif
- #ifdef CONFIG_JFFS2_LZO
  	jffs2_lzo_exit();
- #endif
+ 	jffs2_dynrubin_exit();
+ 	jffs2_rubinmips_exit();
 --- a/fs/jffs2/compr.h
 +++ b/fs/jffs2/compr.h
 @@ -29,9 +29,9 @@
@@ -101,13 +108,16 @@ Signed-off-by: Alexandros C. Couloumbis <alex at ozo.com>
  
  #define JFFS2_RUBINMIPS_DISABLED /* RUBINs will be used only */
  #define JFFS2_DYNRUBIN_DISABLED  /*	   for decompression */
-@@ -101,5 +101,9 @@ void jffs2_zlib_exit(void);
- int jffs2_lzo_init(void);
- void jffs2_lzo_exit(void);
+@@ -115,5 +115,12 @@ extern void jffs2_lzo_exit(void);
+ static inline int jffs2_lzo_init(void) { return 0; }
+ static inline void jffs2_lzo_exit(void) {}
  #endif
 +#ifdef CONFIG_JFFS2_LZMA
-+int jffs2_lzma_init(void);
-+void jffs2_lzma_exit(void);
++extern int jffs2_lzma_init(void);
++extern void jffs2_lzma_exit(void);
++#else
++static inline int jffs2_lzma_init(void) { return 0; }
++static inline void jffs2_lzma_exit(void) {}
 +#endif
  
  #endif /* __JFFS2_COMPR_H__ */
diff --git a/target/linux/generic/pending-6.6/630-packet_socket_type.patch b/target/linux/generic/pending-6.6/630-packet_socket_type.patch
index c40c709635..f12a09e65f 100644
--- a/target/linux/generic/pending-6.6/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-6.6/630-packet_socket_type.patch
@@ -21,10 +21,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /* Packet socket options */
  
 @@ -59,6 +61,7 @@ struct sockaddr_ll {
- #define PACKET_ROLLOVER_STATS		21
  #define PACKET_FANOUT_DATA		22
  #define PACKET_IGNORE_OUTGOING		23
-+#define PACKET_RECV_TYPE		24
+ #define PACKET_VNET_HDR_SZ		24
++#define PACKET_RECV_TYPE		25
  
  #define PACKET_FANOUT_HASH		0
  #define PACKET_FANOUT_LB		1
@@ -96,7 +96,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
 @@ -4013,6 +4016,16 @@ packet_setsockopt(struct socket *sock, i
- 		WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
+ 		packet_sock_flag_set(po, PACKET_SOCK_QDISC_BYPASS, val);
  		return 0;
  	}
 +	case PACKET_RECV_TYPE:
@@ -113,8 +113,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		return -ENOPROTOOPT;
  	}
 @@ -4069,6 +4082,13 @@ static int packet_getsockopt(struct sock
- 	case PACKET_VNET_HDR:
- 		val = po->has_vnet_hdr;
+ 	case PACKET_VNET_HDR_SZ:
+ 		val = READ_ONCE(po->vnet_hdr_sz);
  		break;
 +	case PACKET_RECV_TYPE:
 +		if (len > sizeof(unsigned int))
@@ -129,10 +129,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 --- a/net/packet/internal.h
 +++ b/net/packet/internal.h
 @@ -136,6 +136,7 @@ struct packet_sock {
- 	int			(*xmit)(struct sk_buff *skb);
+ 	struct net_device __rcu	*cached_dev;
  	struct packet_type	prot_hook ____cacheline_aligned_in_smp;
  	atomic_t		tp_drops ____cacheline_aligned_in_smp;
 +	unsigned int		pkt_type;
  };
  
- static inline struct packet_sock *pkt_sk(struct sock *sk)
+ #define pkt_sk(ptr) container_of_const(ptr, struct packet_sock, sk)
diff --git a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 72e8de2f1d..3ab023fdeb 100644
--- a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -125,7 +125,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  
 +static const struct rt6_info ip6_policy_failed_entry_template = {
 +	.dst = {
-+		.__refcnt	= ATOMIC_INIT(1),
++		.__rcuref	= RCUREF_INIT(1),
 +		.__use		= 1,
 +		.obsolete	= DST_OBSOLETE_FORCE_CHK,
 +		.error		= -EACCES,
@@ -137,7 +137,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 +
  static const struct rt6_info ip6_blk_hole_entry_template = {
  	.dst = {
- 		.__refcnt	= ATOMIC_INIT(1),
+ 		.__rcuref	= RCUREF_INIT(1),
 @@ -1039,6 +1053,7 @@ static const int fib6_prop[RTN_MAX + 1]
  	[RTN_BLACKHOLE]	= -EINVAL,
  	[RTN_UNREACHABLE] = -EHOSTUNREACH,
@@ -213,7 +213,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  					       GFP_KERNEL);
 @@ -6499,11 +6535,21 @@ static int __net_init ip6_route_net_init
  			 ip6_template_metrics, true);
- 	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
+ 	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
  
 +	net->ipv6.ip6_policy_failed_entry =
 +				kmemdup(&ip6_policy_failed_entry_template,
@@ -223,7 +223,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 +	net->ipv6.ip6_policy_failed_entry->dst.ops = &net->ipv6.ip6_dst_ops;
 +	dst_init_metrics(&net->ipv6.ip6_policy_failed_entry->dst,
 +			 ip6_template_metrics, true);
-+	INIT_LIST_HEAD(&net->ipv6.ip6_policy_failed_entry->rt6i_uncached);
++	INIT_LIST_HEAD(&net->ipv6.ip6_policy_failed_entry->dst.rt_uncached);
 +
  	net->ipv6.ip6_blk_hole_entry = kmemdup(&ip6_blk_hole_entry_template,
  					       sizeof(*net->ipv6.ip6_blk_hole_entry),
diff --git a/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index 11850c0418..26836240ee 100644
--- a/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -28,13 +28,13 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif
 +	__u8			gro_skip:1;
  
+ #if IS_ENABLED(CONFIG_IP_VS)
  	__u8			ipvs_property:1;
- 	__u8			inner_protocol_type:1;
 --- a/net/core/gro.c
 +++ b/net/core/gro.c
 @@ -491,6 +491,9 @@ static enum gro_result dev_gro_receive(s
+ 	enum gro_result ret;
  	int same_flow;
- 	int grow;
  
 +	if (skb->gro_skip)
 +		goto normal;
@@ -109,9 +109,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  				      &changeupper_info.info);
  
-@@ -8824,6 +8868,7 @@ int dev_set_mac_address(struct net_devic
- 	if (err)
- 		return err;
+@@ -8821,6 +8865,7 @@ int dev_set_mac_address(struct net_devic
+ 			return err;
+ 	}
  	dev->addr_assign_type = NET_ADDR_SET;
 +	netdev_update_addr_mask(dev);
  	call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
diff --git a/target/linux/generic/pending-6.6/683-of_net-add-mac-address-to-of-tree.patch b/target/linux/generic/pending-6.6/683-of_net-add-mac-address-to-of-tree.patch
index 03ee537fb8..9e81cb1f27 100644
--- a/target/linux/generic/pending-6.6/683-of_net-add-mac-address-to-of-tree.patch
+++ b/target/linux/generic/pending-6.6/683-of_net-add-mac-address-to-of-tree.patch
@@ -18,8 +18,8 @@ property. This way, the MAC address can be accessed using procfs.
 --- a/net/core/of_net.c
 +++ b/net/core/of_net.c
 @@ -95,6 +95,27 @@ static int of_get_mac_addr_nvmem(struct
- 	return 0;
  }
+ EXPORT_SYMBOL(of_get_mac_address_nvmem);
  
 +static int of_add_mac_address(struct device_node *np, u8* addr)
 +{
@@ -62,8 +62,8 @@ property. This way, the MAC address can be accessed using procfs.
 -		return 0;
 +		goto found;
  
--	return of_get_mac_addr_nvmem(np, addr);
-+	ret = of_get_mac_addr_nvmem(np, addr);
+-	return of_get_mac_address_nvmem(np, addr);
++	ret = of_get_mac_address_nvmem(np, addr);
 +	if (ret)
 +		return ret;
 +
diff --git a/target/linux/generic/pending-6.6/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-6.6/703-phy-add-detach-callback-to-struct-phy_driver.patch
index e4937a1df1..61dd11727f 100644
--- a/target/linux/generic/pending-6.6/703-phy-add-detach-callback-to-struct-phy_driver.patch
+++ b/target/linux/generic/pending-6.6/703-phy-add-detach-callback-to-struct-phy_driver.patch
@@ -11,9 +11,9 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1850,6 +1850,9 @@ void phy_detach(struct phy_device *phyde
- 	struct module *ndev_owner = NULL;
- 	struct mii_bus *bus;
+@@ -1753,6 +1753,9 @@ void phy_detach(struct phy_device *phyde
+ 	if (phydev->devlink)
+ 		device_link_del(phydev->devlink);
  
 +	if (phydev->drv && phydev->drv->detach)
 +		phydev->drv->detach(phydev);
diff --git a/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch b/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
index 989aca8f35..85e42d5a94 100644
--- a/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
+++ b/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
@@ -15,18 +15,18 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 --- a/include/linux/if_bridge.h
 +++ b/include/linux/if_bridge.h
 @@ -59,6 +59,7 @@ struct br_ip_list {
- #define BR_MRP_LOST_IN_CONT	BIT(19)
- #define BR_TX_FWD_OFFLOAD	BIT(20)
  #define BR_PORT_LOCKED		BIT(21)
-+#define BR_BPDU_FILTER		BIT(22)
+ #define BR_PORT_MAB		BIT(22)
+ #define BR_NEIGH_VLAN_SUPPRESS	BIT(23)
++#define BR_BPDU_FILTER		BIT(24)
  
  #define BR_DEFAULT_AGEING_TIME	(300 * HZ)
  
 --- a/net/bridge/br_forward.c
 +++ b/net/bridge/br_forward.c
 @@ -199,6 +199,7 @@ out:
- void br_flood(struct net_bridge *br, struct sk_buff *skb,
- 	      enum br_pkt_type pkt_type, bool local_rcv, bool local_orig)
+ 	      enum br_pkt_type pkt_type, bool local_rcv, bool local_orig,
+ 	      u16 vid)
  {
 +	const unsigned char *dest = eth_hdr(skb)->h_dest;
  	struct net_bridge_port *prev = NULL;
@@ -107,9 +107,9 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 --- a/include/uapi/linux/if_link.h
 +++ b/include/uapi/linux/if_link.h
 @@ -561,6 +561,7 @@ enum {
- 	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
- 	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
- 	IFLA_BRPORT_LOCKED,
+ 	IFLA_BRPORT_MCAST_MAX_GROUPS,
+ 	IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
+ 	IFLA_BRPORT_BACKUP_NHID,
 +	IFLA_BRPORT_BPDU_FILTER,
  	__IFLA_BRPORT_MAX
  };
@@ -117,47 +117,47 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 --- a/net/bridge/br_netlink.c
 +++ b/net/bridge/br_netlink.c
 @@ -188,6 +188,7 @@ static inline size_t br_port_info_size(v
- 		+ nla_total_size(1)	/* IFLA_BRPORT_NEIGH_SUPPRESS */
- 		+ nla_total_size(1)	/* IFLA_BRPORT_ISOLATED */
  		+ nla_total_size(1)	/* IFLA_BRPORT_LOCKED */
+ 		+ nla_total_size(1)	/* IFLA_BRPORT_MAB */
+ 		+ nla_total_size(1)	/* IFLA_BRPORT_NEIGH_VLAN_SUPPRESS */
 +		+ nla_total_size(1)	/* IFLA_BRPORT_BPDU_FILTER */
  		+ nla_total_size(sizeof(struct ifla_bridge_id))	/* IFLA_BRPORT_ROOT_ID */
  		+ nla_total_size(sizeof(struct ifla_bridge_id))	/* IFLA_BRPORT_BRIDGE_ID */
  		+ nla_total_size(sizeof(u16))	/* IFLA_BRPORT_DESIGNATED_PORT */
 @@ -274,7 +275,8 @@ static int br_port_fill_attrs(struct sk_
- 	    nla_put_u8(skb, IFLA_BRPORT_MRP_IN_OPEN,
- 		       !!(p->flags & BR_MRP_LOST_IN_CONT)) ||
- 	    nla_put_u8(skb, IFLA_BRPORT_ISOLATED, !!(p->flags & BR_ISOLATED)) ||
--	    nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED)))
-+	    nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED)) ||
+ 	    nla_put_u8(skb, IFLA_BRPORT_LOCKED, !!(p->flags & BR_PORT_LOCKED)) ||
+ 	    nla_put_u8(skb, IFLA_BRPORT_MAB, !!(p->flags & BR_PORT_MAB)) ||
+ 	    nla_put_u8(skb, IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
+-		       !!(p->flags & BR_NEIGH_VLAN_SUPPRESS)))
++		       !!(p->flags & BR_NEIGH_VLAN_SUPPRESS)) ||
 +	    nla_put_u8(skb, IFLA_BRPORT_BPDU_FILTER, !!(p->flags & BR_BPDU_FILTER)))
  		return -EMSGSIZE;
  
  	timerval = br_timer_value(&p->message_age_timer);
 @@ -878,6 +880,7 @@ static const struct nla_policy br_port_p
- 	[IFLA_BRPORT_LOCKED] = { .type = NLA_U8 },
- 	[IFLA_BRPORT_BACKUP_PORT] = { .type = NLA_U32 },
- 	[IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT] = { .type = NLA_U32 },
+ 	[IFLA_BRPORT_MCAST_MAX_GROUPS] = { .type = NLA_U32 },
+ 	[IFLA_BRPORT_NEIGH_VLAN_SUPPRESS] = NLA_POLICY_MAX(NLA_U8, 1),
+ 	[IFLA_BRPORT_BACKUP_NHID] = { .type = NLA_U32 },
 +	[IFLA_BRPORT_BPDU_FILTER] = { .type = NLA_U8 },
  };
  
  /* Change the state of the port and notify spanning tree */
 @@ -943,6 +946,7 @@ static int br_setport(struct net_bridge_
- 	br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_SUPPRESS, BR_NEIGH_SUPPRESS);
- 	br_set_port_flag(p, tb, IFLA_BRPORT_ISOLATED, BR_ISOLATED);
- 	br_set_port_flag(p, tb, IFLA_BRPORT_LOCKED, BR_PORT_LOCKED);
+ 	br_set_port_flag(p, tb, IFLA_BRPORT_MAB, BR_PORT_MAB);
+ 	br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
+ 			 BR_NEIGH_VLAN_SUPPRESS);
 +	br_set_port_flag(p, tb, IFLA_BRPORT_BPDU_FILTER, BR_BPDU_FILTER);
  
- 	changed_mask = old_flags ^ p->flags;
- 
+ 	if ((p->flags & BR_PORT_MAB) &&
+ 	    (!(p->flags & BR_PORT_LOCKED) || !(p->flags & BR_LEARNING))) {
 --- a/net/core/rtnetlink.c
 +++ b/net/core/rtnetlink.c
 @@ -57,7 +57,7 @@
  #include "dev.h"
  
  #define RTNL_MAX_TYPE		50
--#define RTNL_SLAVE_MAX_TYPE	40
-+#define RTNL_SLAVE_MAX_TYPE	41
+-#define RTNL_SLAVE_MAX_TYPE	44
++#define RTNL_SLAVE_MAX_TYPE	45
  
  struct rtnl_link {
  	rtnl_doit_func		doit;
diff --git a/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch b/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
index f5987109f6..32d81d56f8 100644
--- a/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
+++ b/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
@@ -22,7 +22,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	int val;
 +	u32 id;
 +
-+	if (phydev->mdio.bus->probe_capabilities >= MDIOBUS_C45) {
++	if (phydev->drv->read_mmd) {
 +		val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PKGID1);
 +		if (val < 0)
 +			return 0;
diff --git a/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch b/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
index a1cc109050..17c7d92ce0 100644
--- a/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
+++ b/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
@@ -16,6 +16,14 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+@@ -26,6 +26,7 @@
+ #include <linux/bitfield.h>
+ #include <net/dsa.h>
+ #include <net/dst_metadata.h>
++#include <net/gso.h>
+ #include <net/page_pool/helpers.h>
+
+ #include "mtk_eth_soc.h"
 @@ -1562,12 +1562,28 @@ static void mtk_wake_queue(struct mtk_et
  	}
  }
diff --git a/target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch b/target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
index 5bd2850fec..6fe29bc6c9 100644
--- a/target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
+++ b/target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
@@ -27,13 +27,13 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  F:	include/linux/pcs/pcs-mtk-lynxi.h
 +F:	include/linux/pcs/pcs-mtk-usxgmii.h
  
- MEDIATEK I2C CONTROLLER DRIVER
- M:	Qii Wang <qii.wang at mediatek.com>
+ MEDIATEK ETHERNET PHY DRIVERS
+ M:	Daniel Golle <daniel at makrotopia.org>
 --- a/drivers/net/pcs/Kconfig
 +++ b/drivers/net/pcs/Kconfig
 @@ -18,6 +18,17 @@ config PCS_LYNX
- 	  This module provides helpers to phylink for managing the Lynx PCS
- 	  which is part of the Layerscape and QorIQ Ethernet SERDES.
+ 	  This module provides helpers to phylink for managing the LynxI PCS
+ 	  which is part of MediaTek's SoC and Ethernet switch ICs.
  
 +config PCS_MTK_USXGMII
 +	tristate "MediaTek USXGMII PCS"
@@ -51,10 +51,10 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	depends on OF && (ARCH_RZN1 || COMPILE_TEST)
 --- a/drivers/net/pcs/Makefile
 +++ b/drivers/net/pcs/Makefile
-@@ -8,3 +8,4 @@ obj-$(CONFIG_PCS_LYNX)		+= pcs-lynx.o
- obj-$(CONFIG_PCS_RZN1_MIIC)	+= pcs-rzn1-miic.o
- obj-$(CONFIG_PCS_ALTERA_TSE)	+= pcs-altera-tse.o
+@@ -8,3 +8,4 @@ obj-$(CONFIG_PCS_XPCS)		+= pcs_xpcs.o
+ obj-$(CONFIG_PCS_LYNX)		+= pcs-lynx.o
  obj-$(CONFIG_PCS_MTK_LYNXI)	+= pcs-mtk-lynxi.o
+ obj-$(CONFIG_PCS_RZN1_MIIC)	+= pcs-rzn1-miic.o
 +obj-$(CONFIG_PCS_MTK_USXGMII)	+= pcs-mtk-usxgmii.o
 --- /dev/null
 +++ b/drivers/net/pcs/pcs-mtk-usxgmii.c
diff --git a/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch b/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
index 42c8519c90..bb9149a668 100644
--- a/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
+++ b/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
@@ -20,10 +20,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  /**
   *	napi_disable - prevent NAPI from scheduling
-@@ -3152,6 +3153,7 @@ struct softnet_data {
+@@ -3129,6 +3130,7 @@ struct softnet_data {
+ 	/* stats */
  	unsigned int		processed;
  	unsigned int		time_squeeze;
- 	unsigned int		received_rps;
 +	unsigned int		process_queue_empty;
  #ifdef CONFIG_RPS
  	struct softnet_data	*rps_ipi_list;
diff --git a/target/linux/generic/pending-6.6/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch b/target/linux/generic/pending-6.6/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch
index 2b3e4bbf71..cb5d30db27 100644
--- a/target/linux/generic/pending-6.6/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch
+++ b/target/linux/generic/pending-6.6/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch
@@ -80,7 +80,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  
 -typedef int (*config_clks_t)(struct device *dev, struct opp_table *opp_table,
 +typedef int (*config_clks_t)(struct device *dev,
-+			struct opp_table *opp_table, struct dev_pm_opp *old_opp, 
++			struct opp_table *opp_table, struct dev_pm_opp *old_opp,
  			struct dev_pm_opp *opp, void *data, bool scaling_down);
  
  /**
diff --git a/target/linux/generic/pending-6.6/804-nvmem-core-support-mac-base-fixed-layout-cells.patch b/target/linux/generic/pending-6.6/804-nvmem-core-support-mac-base-fixed-layout-cells.patch
index 9bb94a28b5..2f0dcd91d9 100644
--- a/target/linux/generic/pending-6.6/804-nvmem-core-support-mac-base-fixed-layout-cells.patch
+++ b/target/linux/generic/pending-6.6/804-nvmem-core-support-mac-base-fixed-layout-cells.patch
@@ -10,14 +10,14 @@ string.
 
 --- a/drivers/nvmem/Kconfig
 +++ b/drivers/nvmem/Kconfig
-@@ -1,6 +1,7 @@
- # SPDX-License-Identifier: GPL-2.0-only
+@@ -2,6 +2,7 @@
  menuconfig NVMEM
  	bool "NVMEM Support"
-+	select GENERIC_NET_UTILS
  	imply NVMEM_LAYOUTS
++	select GENERIC_NET_UTILS
  	help
  	  Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES...
+ 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
 @@ -7,9 +7,12 @@
diff --git a/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch
index 98ea4c06d9..eb5aa15d30 100644
--- a/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch
+++ b/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch
@@ -111,5 +111,5 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +}
 +#endif
  
- #ifdef CONFIG_PM
  extern const struct dev_pm_ops usb_hcd_pci_pm_ops;
+ #endif /* CONFIG_USB_PCI */
diff --git a/target/linux/generic/pending-6.6/834-ledtrig-libata.patch b/target/linux/generic/pending-6.6/834-ledtrig-libata.patch
index 050c3515f6..562f9b866c 100644
--- a/target/linux/generic/pending-6.6/834-ledtrig-libata.patch
+++ b/target/linux/generic/pending-6.6/834-ledtrig-libata.patch
@@ -46,7 +46,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 --- a/drivers/ata/libata-core.c
 +++ b/drivers/ata/libata-core.c
 @@ -663,6 +663,19 @@ u64 ata_tf_read_block(const struct ata_t
- 	return block;
+ 	qc->flags |= ATA_QCFLAG_HAS_CDL | ATA_QCFLAG_RESULT_TF;
  }
  
 +#ifdef CONFIG_ATA_LEDS
@@ -85,10 +85,10 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -5473,6 +5492,12 @@ static void ata_host_release(struct kref
- 
+@@ -5469,6 +5488,12 @@ static void ata_host_release(struct kref
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
+ 		kfree(ap->ncq_sense_buf);
 +#ifdef CONFIG_ATA_LEDS
 +		if (ap->ledtrig) {
 +			led_trigger_unregister(ap->ledtrig);
@@ -145,5 +145,5 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +#endif
 +
  	/* owned by EH */
+ 	u8			*ncq_sense_buf;
  	u8			sector_buf[ATA_SECT_SIZE] ____cacheline_aligned;
- };
diff --git a/target/linux/generic/pending-6.6/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch b/target/linux/generic/pending-6.6/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch
index e25389363f..1f860e9c76 100644
--- a/target/linux/generic/pending-6.6/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch
+++ b/target/linux/generic/pending-6.6/870-ARM-dts-nxp-imx7d-pico-add-cpu-supply-nodes.patch
@@ -24,8 +24,8 @@ Signed-off-by: Lech Perczak <lech.perczak at gmail.com>
  arch/arm/boot/dts/imx7d-pico.dtsi | 8 ++++++++
  1 file changed, 8 insertions(+)
 
---- a/arch/arm/boot/dts/imx7d-pico.dtsi
-+++ b/arch/arm/boot/dts/imx7d-pico.dtsi
+--- a/arch/arm/boot/dts/nxp/imx/imx7d-pico.dtsi
++++ b/arch/arm/boot/dts/nxp/imx/imx7d-pico.dtsi
 @@ -108,6 +108,14 @@
  	assigned-clock-rates = <0>, <32768>;
  };
diff --git a/target/linux/generic/pending-6.6/920-mangle_bootargs.patch b/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
index 4552b4cd66..0d690e42e8 100644
--- a/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
+++ b/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
@@ -13,9 +13,9 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1836,6 +1836,15 @@ config EMBEDDED
- 	  an embedded system so certain expert options are available
- 	  for configuration.
+@@ -1827,6 +1827,15 @@ config EMBEDDED
+ 
+ 	  If unsure, say N.
  
 +config MANGLE_BOOTARGS
 +	bool "Rename offending bootargs"



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:41 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:41 -0400
Subject: [openwrt/openwrt]  generic: 6.6: drop pending patch backported as
 fixes
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15323.1710184677.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1057d9b39d1b813705289a274982c194f8bd1a31

commit 1057d9b39d1b813705289a274982c194f8bd1a31
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Thu Jan 4 01:49:26 2024 +0800

    generic: 6.6: drop pending patch backported as fixes
    
    Drop pending patch backported as fixes in later kernel version.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 ...Add-Silicon-Labs-EM3581-device-compatible.patch |  32 --
 ...Add-Silicon-Labs-SI3210-device-compatible.patch |  32 --
 ...61-enable_wilink_platform_without_drivers.patch |  20 --
 ...irqchip-bcm-6345-l1-request-memory-region.patch | 113 -------
 ...d-spinand-add-support-for-ESMT-F50x1G41LB.patch | 143 ---------
 ...t-mtk_eth_soc-fix-remaining-throughput-re.patch |  42 ---
 ...t-mtk_eth_soc-ppe-fix-L2-offloading-with-.patch |  33 --
 ...t-mtk_eth_soc-set-coherent-mask-to-get-PP.patch |  46 ---
 ...et-dsa-b53-add-support-for-BCM63xx-RGMIIs.patch | 174 -----------
 .../773-net-dsa-b53-mmap-add-more-63xx-SoCs.patch  | 108 -------
 ...-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch | 195 ------------
 ...-dsa-b53-add-BCM63268-RGMII-configuration.patch | 123 --------
 ...net-dsa-b53-mdio-add-support-for-BCM53134.patch | 189 -----------
 ...t7530-fix-10M-100M-speed-on-MT7988-switch.patch |  45 ---
 ...-clk-add-BCM63268-timer-clock-definitions.patch | 114 -------
 ...eset-add-BCM63268-timer-reset-definitions.patch | 107 -------
 ...Add-BCM63268-timer-clock-and-reset-driver.patch | 345 ---------------------
 ...mtk-track-busclk-state-to-avoid-bus-error.patch |  61 ----
 18 files changed, 1922 deletions(-)

diff --git a/target/linux/generic/pending-6.6/110-v6.3-0001-spidev-Add-Silicon-Labs-EM3581-device-compatible.patch b/target/linux/generic/pending-6.6/110-v6.3-0001-spidev-Add-Silicon-Labs-EM3581-device-compatible.patch
deleted file mode 100644
index ebeeae2f8f..0000000000
--- a/target/linux/generic/pending-6.6/110-v6.3-0001-spidev-Add-Silicon-Labs-EM3581-device-compatible.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From f7982c726e02001afc19052fe48f642dfcbc00b2 Mon Sep 17 00:00:00 2001
-From: Vincent Tremblay <vincent at vtremblay.dev>
-Date: Mon, 26 Dec 2022 21:10:37 -0500
-Subject: [PATCH 1/2] spidev: Add Silicon Labs EM3581 device compatible
-
-Add compatible string for Silicon Labs EM3581 device.
-
-Note: This patch is adapted from a patch submitted to the for-next branch (v6.3).
-
-Signed-off-by: Vincent Tremblay <vincent at vtremblay.dev>
----
- drivers/spi/spidev.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/drivers/spi/spidev.c
-+++ b/drivers/spi/spidev.c
-@@ -700,6 +700,7 @@ static const struct spi_device_id spidev
- 	{ .name = "m53cpld" },
- 	{ .name = "spi-petra" },
- 	{ .name = "spi-authenta" },
-+	{ .name = "em3581" },
- 	{},
- };
- MODULE_DEVICE_TABLE(spi, spidev_spi_ids);
-@@ -726,6 +727,7 @@ static const struct of_device_id spidev_
- 	{ .compatible = "menlo,m53cpld", .data = &spidev_of_check },
- 	{ .compatible = "cisco,spi-petra", .data = &spidev_of_check },
- 	{ .compatible = "micron,spi-authenta", .data = &spidev_of_check },
-+	{ .compatible = "silabs,em3581", .data = &spidev_of_check },
- 	{},
- };
- MODULE_DEVICE_TABLE(of, spidev_dt_ids);
diff --git a/target/linux/generic/pending-6.6/110-v6.3-0002-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch b/target/linux/generic/pending-6.6/110-v6.3-0002-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch
deleted file mode 100644
index db5b5800f4..0000000000
--- a/target/linux/generic/pending-6.6/110-v6.3-0002-spidev-Add-Silicon-Labs-SI3210-device-compatible.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 536581825219e97fa2ae0c4de35605d2f6311416 Mon Sep 17 00:00:00 2001
-From: Vincent Tremblay <vincent at vtremblay.dev>
-Date: Tue, 27 Dec 2022 09:00:58 -0500
-Subject: [PATCH 2/2] spidev: Add Silicon Labs SI3210 device compatible
-
-Add compatible string for Silicon Labs SI3210 device.
-
-Note: This patch is adapted from a patch submitted to the for-next branch (v6.3).
-
-Signed-off-by: Vincent Tremblay <vincent at vtremblay.dev>
----
- drivers/spi/spidev.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/drivers/spi/spidev.c
-+++ b/drivers/spi/spidev.c
-@@ -701,6 +701,7 @@ static const struct spi_device_id spidev
- 	{ .name = "spi-petra" },
- 	{ .name = "spi-authenta" },
- 	{ .name = "em3581" },
-+	{ .name = "si3210" },
- 	{},
- };
- MODULE_DEVICE_TABLE(spi, spidev_spi_ids);
-@@ -728,6 +729,7 @@ static const struct of_device_id spidev_
- 	{ .compatible = "cisco,spi-petra", .data = &spidev_of_check },
- 	{ .compatible = "micron,spi-authenta", .data = &spidev_of_check },
- 	{ .compatible = "silabs,em3581", .data = &spidev_of_check },
-+	{ .compatible = "silabs,si3210", .data = &spidev_of_check },
- 	{},
- };
- MODULE_DEVICE_TABLE(of, spidev_dt_ids);
diff --git a/target/linux/generic/pending-6.6/261-enable_wilink_platform_without_drivers.patch b/target/linux/generic/pending-6.6/261-enable_wilink_platform_without_drivers.patch
deleted file mode 100644
index cd31f9d934..0000000000
--- a/target/linux/generic/pending-6.6/261-enable_wilink_platform_without_drivers.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-From: Imre Kaloz <kaloz at openwrt.org>
-Subject: [PATCH] hack: net: wireless: make the wl12xx glue code available with
- compat-wireless, too
-
-Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
----
- drivers/net/wireless/ti/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/net/wireless/ti/Kconfig
-+++ b/drivers/net/wireless/ti/Kconfig
-@@ -20,7 +20,7 @@ source "drivers/net/wireless/ti/wlcore/K
- 
- config WILINK_PLATFORM_DATA
- 	bool "TI WiLink platform data"
--	depends on WLCORE_SDIO || WL1251_SDIO
-+	depends on WLCORE_SDIO || WL1251_SDIO || ARCH_OMAP2PLUS
- 	default y
- 	help
- 	Small platform data bit needed to pass data to the sdio modules.
diff --git a/target/linux/generic/pending-6.6/351-irqchip-bcm-6345-l1-request-memory-region.patch b/target/linux/generic/pending-6.6/351-irqchip-bcm-6345-l1-request-memory-region.patch
deleted file mode 100644
index 2675ca4791..0000000000
--- a/target/linux/generic/pending-6.6/351-irqchip-bcm-6345-l1-request-memory-region.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From patchwork Thu Mar 16 19:28:33 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13178238
-Return-Path: <linux-mips-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id 5EF2AC6FD19
-	for <linux-mips at archiver.kernel.org>; Thu, 16 Mar 2023 19:28:43 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S230076AbjCPT2l (ORCPT <rfc822;linux-mips at archiver.kernel.org>);
-        Thu, 16 Mar 2023 15:28:41 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56412 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S230039AbjCPT2k (ORCPT
-        <rfc822;linux-mips at vger.kernel.org>); Thu, 16 Mar 2023 15:28:40 -0400
-Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
- [IPv6:2a00:1450:4864:20::42f])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7259B7D9F;
-        Thu, 16 Mar 2023 12:28:38 -0700 (PDT)
-Received: by mail-wr1-x42f.google.com with SMTP id y14so2539231wrq.4;
-        Thu, 16 Mar 2023 12:28:38 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1678994917;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=j8afldfRZftLeVmekmQfoh01jVdumsVP7nkKoPaU3Q0=;
-        b=FzMRr5ekh/fDiJqTlezNj6nLjzvn5z92FtYeB8MquVSMB8PuvarccnyqAzsXiccf+v
-         uwRFIomnTWNLGVjzc1xrB2hGiCKD3jBo5n1u8p/yEV6rpolbxVjfM7eTHXyAHXGXz7ZJ
-         TPeVbWfAlxiSD6+BPtXr/efehcdI64fIoL6G/U1WHNMo01Tzr/Obf3y5tug17N0fGcXg
-         CH6E5a2HguZUtwrm26LcK9IOV/7xEx5eIE1cOvTLMxPbGWaZwEjjP16HylJr06xRLhaf
-         RpiYBT3mXwwuOx0jLOhqavY/2kZ9GVbZRWMMwZrZv9xNO13SBwc1VUVgD4k3FntnSk7Z
-         AaOQ==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1678994917;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=j8afldfRZftLeVmekmQfoh01jVdumsVP7nkKoPaU3Q0=;
-        b=OaA5DMgqalrfqO5iOtmmxFPsH90MkN7l4EJpyVnzuiO1Wd6rSCpqPOR7xpxZno8OPP
-         tdfm4vzn9Ie4AUDbFKDTUlPG+tgkmIruo3K9C0VnY9DD2PRZMEYBbWaJKU1otqKt0NKu
-         IAAHNvxvQvCESKzbXFLYwWbRKFScOSMGmGBTDfgThz51A18Ff1hJy/BmnuZk7M2TLgHO
-         wQpy9t7oeB/Hkxl41y46emLc/nESsvwvAG/fx/zPzCe9UiaQLrdZq+BKeOwSBedktzK5
-         U/ZTfgzU2UGSI67aGRqqGnI0uXq+MAJMK18qzM0VByxj6W+AXJ6BJr5P0quljeQ8upSg
-         bEUg==
-X-Gm-Message-State: AO0yUKWnqTlccBDnqwCSRdqOBGc2FyfiLy1Tg7EjPENlISpzXuDYwW/R
-        lJSI06rrfq+Vel/SigfpGJI=
-X-Google-Smtp-Source: 
- AK7set/jYfYl9ttVzIXJO+ZQVfa6cE/yOsP8fx4teiTmGNNWyVlIJRzMAlF3IUGqRAXAmY3hAabIuQ==
-X-Received: by 2002:a5d:40ce:0:b0:2cd:ceab:df1a with SMTP id
- b14-20020a5d40ce000000b002cdceabdf1amr381006wrq.32.1678994916642;
-        Thu, 16 Mar 2023 12:28:36 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- l10-20020a5d4bca000000b002cfea3c49d5sm180041wrt.52.2023.03.16.12.28.35
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Thu, 16 Mar 2023 12:28:35 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: f.fainelli at gmail.com, jonas.gorski at gmail.com,
-        bcm-kernel-feedback-list at broadcom.com, tglx at linutronix.de,
-        maz at kernel.org, linux-mips at vger.kernel.org,
-        linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-Subject: [PATCH v2] irqchip/bcm-6345-l1: request memory region
-Date: Thu, 16 Mar 2023 20:28:33 +0100
-Message-Id: <20230316192833.1603149-1-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230316180701.783785-1-noltari at gmail.com>
-References: <20230316180701.783785-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <linux-mips.vger.kernel.org>
-X-Mailing-List: linux-mips at vger.kernel.org
-
-Request memory region in order to display it in /proc/iomem.
-Also stop printing the MMIO address since it just displays (ptrval).
-
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
-Acked-by: Florian Fainelli <f.fainelli at gmail.com>
----
- v2: request memory region and stop displaying MMIO address.
-
- drivers/irqchip/irq-bcm6345-l1.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
---- a/drivers/irqchip/irq-bcm6345-l1.c
-+++ b/drivers/irqchip/irq-bcm6345-l1.c
-@@ -253,6 +253,9 @@ static int __init bcm6345_l1_init_one(st
- 	if (!cpu->map_base)
- 		return -ENOMEM;
- 
-+	if (!request_mem_region(res.start, sz, res.name))
-+		pr_err("failed to request intc memory");
-+
- 	for (i = 0; i < n_words; i++) {
- 		cpu->enable_cache[i] = 0;
- 		__raw_writel(0, cpu->map_base + reg_enable(intc, i));
-@@ -331,8 +334,7 @@ static int __init bcm6345_l1_of_init(str
- 	for_each_cpu(idx, &intc->cpumask) {
- 		struct bcm6345_l1_cpu *cpu = intc->cpus[idx];
- 
--		pr_info("  CPU%u at MMIO 0x%p (irq = %d)\n", idx,
--				cpu->map_base, cpu->parent_irq);
-+		pr_info("  CPU%u (irq = %d)\n", idx, cpu->parent_irq);
- 	}
- 
- 	return 0;
diff --git a/target/linux/generic/pending-6.6/486-01-mtd-spinand-add-support-for-ESMT-F50x1G41LB.patch b/target/linux/generic/pending-6.6/486-01-mtd-spinand-add-support-for-ESMT-F50x1G41LB.patch
deleted file mode 100644
index b8116db842..0000000000
--- a/target/linux/generic/pending-6.6/486-01-mtd-spinand-add-support-for-ESMT-F50x1G41LB.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From a43b844cb40bf1b783055fdc81b7f991e21e7e76 Mon Sep 17 00:00:00 2001
-From: Chuanhong Guo <gch981213 at gmail.com>
-Date: Wed, 13 Apr 2022 11:58:17 +0800
-Subject: [PATCH] mtd: spinand: add support for ESMT F50x1G41LB
-
-This patch adds support for ESMT F50L1G41LB and F50D1G41LB.
-It seems that ESMT likes to use random JEDEC ID from other vendors.
-Their 1G chips uses 0xc8 from GigaDevice and 2G/4G chips uses 0x2c from
-Micron. For this reason, the ESMT entry is named esmt_c8 with explicit
-JEDEC ID in variable name.
-
-Datasheets:
-https://www.esmt.com.tw/upload/pdf/ESMT/datasheets/F50L1G41LB(2M).pdf
-https://www.esmt.com.tw/upload/pdf/ESMT/datasheets/F50D1G41LB(2M).pdf
-
-Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
----
- drivers/mtd/nand/spi/Makefile |  2 +-
- drivers/mtd/nand/spi/core.c   |  1 +
- drivers/mtd/nand/spi/esmt.c   | 89 +++++++++++++++++++++++++++++++++++
- include/linux/mtd/spinand.h   |  1 +
- 4 files changed, 92 insertions(+), 1 deletion(-)
- create mode 100644 drivers/mtd/nand/spi/esmt.c
-
---- a/drivers/mtd/nand/spi/Makefile
-+++ b/drivers/mtd/nand/spi/Makefile
-@@ -1,3 +1,3 @@
- # SPDX-License-Identifier: GPL-2.0
--spinand-objs := core.o ato.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
-+spinand-objs := core.o ato.o esmt.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
- obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
---- a/drivers/mtd/nand/spi/core.c
-+++ b/drivers/mtd/nand/spi/core.c
-@@ -938,6 +938,7 @@ static const struct nand_ops spinand_ops
- 
- static const struct spinand_manufacturer *spinand_manufacturers[] = {
- 	&ato_spinand_manufacturer,
-+	&esmt_c8_spinand_manufacturer,
- 	&gigadevice_spinand_manufacturer,
- 	&macronix_spinand_manufacturer,
- 	&micron_spinand_manufacturer,
---- /dev/null
-+++ b/drivers/mtd/nand/spi/esmt.c
-@@ -0,0 +1,89 @@
-+// SPDX-License-Identifier: GPL-2.0
-+/*
-+ * Author:
-+ *	Chuanhong Guo <gch981213 at gmail.com>
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/kernel.h>
-+#include <linux/mtd/spinand.h>
-+
-+/* ESMT uses GigaDevice 0xc8 JECDEC ID on some SPI NANDs */
-+#define SPINAND_MFR_ESMT_C8			0xc8
-+
-+static SPINAND_OP_VARIANTS(read_cache_variants,
-+			   SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
-+			   SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
-+			   SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0),
-+			   SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0),
-+			   SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
-+			   SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
-+
-+static SPINAND_OP_VARIANTS(write_cache_variants,
-+			   SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
-+			   SPINAND_PROG_LOAD(true, 0, NULL, 0));
-+
-+static SPINAND_OP_VARIANTS(update_cache_variants,
-+			   SPINAND_PROG_LOAD_X4(false, 0, NULL, 0),
-+			   SPINAND_PROG_LOAD(false, 0, NULL, 0));
-+
-+static int f50l1g41lb_ooblayout_ecc(struct mtd_info *mtd, int section,
-+				    struct mtd_oob_region *region)
-+{
-+	if (section > 3)
-+		return -ERANGE;
-+
-+	region->offset = 16 * section + 8;
-+	region->length = 8;
-+
-+	return 0;
-+}
-+
-+static int f50l1g41lb_ooblayout_free(struct mtd_info *mtd, int section,
-+				     struct mtd_oob_region *region)
-+{
-+	if (section > 3)
-+		return -ERANGE;
-+
-+	region->offset = 16 * section + 2;
-+	region->length = 6;
-+
-+	return 0;
-+}
-+
-+static const struct mtd_ooblayout_ops f50l1g41lb_ooblayout = {
-+	.ecc = f50l1g41lb_ooblayout_ecc,
-+	.free = f50l1g41lb_ooblayout_free,
-+};
-+
-+static const struct spinand_info esmt_c8_spinand_table[] = {
-+	SPINAND_INFO("F50L1G41LB",
-+		     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x01),
-+		     NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
-+		     NAND_ECCREQ(1, 512),
-+		     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
-+					      &write_cache_variants,
-+					      &update_cache_variants),
-+		     0,
-+		     SPINAND_ECCINFO(&f50l1g41lb_ooblayout, NULL)),
-+	SPINAND_INFO("F50D1G41LB",
-+		     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x11),
-+		     NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
-+		     NAND_ECCREQ(1, 512),
-+		     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
-+					      &write_cache_variants,
-+					      &update_cache_variants),
-+		     0,
-+		     SPINAND_ECCINFO(&f50l1g41lb_ooblayout, NULL)),
-+};
-+
-+static const struct spinand_manufacturer_ops esmt_spinand_manuf_ops = {
-+};
-+
-+const struct spinand_manufacturer esmt_c8_spinand_manufacturer = {
-+	.id = SPINAND_MFR_ESMT_C8,
-+	.name = "ESMT",
-+	.chips = esmt_c8_spinand_table,
-+	.nchips = ARRAY_SIZE(esmt_c8_spinand_table),
-+	.ops = &esmt_spinand_manuf_ops,
-+};
---- a/include/linux/mtd/spinand.h
-+++ b/include/linux/mtd/spinand.h
-@@ -261,6 +261,7 @@ struct spinand_manufacturer {
- 
- /* SPI NAND manufacturers */
- extern const struct spinand_manufacturer ato_spinand_manufacturer;
-+extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer;
- extern const struct spinand_manufacturer gigadevice_spinand_manufacturer;
- extern const struct spinand_manufacturer macronix_spinand_manufacturer;
- extern const struct spinand_manufacturer micron_spinand_manufacturer;
diff --git a/target/linux/generic/pending-6.6/732-03-net-ethernet-mtk_eth_soc-fix-remaining-throughput-re.patch b/target/linux/generic/pending-6.6/732-03-net-ethernet-mtk_eth_soc-fix-remaining-throughput-re.patch
deleted file mode 100644
index 0a49c75b00..0000000000
--- a/target/linux/generic/pending-6.6/732-03-net-ethernet-mtk_eth_soc-fix-remaining-throughput-re.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Wed, 29 Mar 2023 16:02:54 +0200
-Subject: [PATCH] net: ethernet: mtk_eth_soc: fix remaining throughput
- regression
-
-Based on further tests, it seems that the QDMA shaper is not able to
-perform shaping close to the MAC link rate without throughput loss.
-This cannot be compensated by increasing the shaping rate, so it seems
-to be an internal limit.
-
-Fix the remaining throughput regression by detecting that condition and
-limiting shaping to ports with lower link speed.
-
-This patch intentionally ignores link speed gain from TRGMII, because
-even on such links, shaping to 1000 Mbit/s incurs some throughput
-degradation.
-
-Fixes: f63959c7eec3 ("net: ethernet: mtk_eth_soc: implement multi-queue support for per-port queues")
-Reported-by: Frank Wunderlich <frank-w at public-files.de>
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -767,6 +767,7 @@ static void mtk_mac_link_up(struct phyli
- 		 MAC_MCR_FORCE_RX_FC);
- 
- 	/* Configure speed */
-+	mac->speed = speed;
- 	switch (speed) {
- 	case SPEED_2500:
- 	case SPEED_1000:
-@@ -3348,6 +3349,9 @@ found:
- 	if (dp->index >= MTK_QDMA_NUM_QUEUES)
- 		return NOTIFY_DONE;
- 
-+	if (mac->speed > 0 && mac->speed <= s.base.speed)
-+		s.base.speed = 0;
-+
- 	mtk_set_queue_speed(eth, dp->index + 3, s.base.speed);
- 
- 	return NOTIFY_DONE;
diff --git a/target/linux/generic/pending-6.6/734-net-ethernet-mtk_eth_soc-ppe-fix-L2-offloading-with-.patch b/target/linux/generic/pending-6.6/734-net-ethernet-mtk_eth_soc-ppe-fix-L2-offloading-with-.patch
deleted file mode 100644
index 61042c1ad0..0000000000
--- a/target/linux/generic/pending-6.6/734-net-ethernet-mtk_eth_soc-ppe-fix-L2-offloading-with-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Tue, 27 Dec 2022 15:02:51 +0100
-Subject: [PATCH] net: ethernet: mtk_eth_soc: ppe: fix L2 offloading with DSA
- untagging offload enabled
-
-Check for skb metadata in order to detect the case where the DSA header is not
-present.
-
-Fixes: 2d7605a72906 ("net: ethernet: mtk_eth_soc: enable hardware DSA untagging")
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/drivers/net/ethernet/mediatek/mtk_ppe.c
-+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
-@@ -8,6 +8,7 @@
- #include <linux/platform_device.h>
- #include <linux/if_ether.h>
- #include <linux/if_vlan.h>
-+#include <net/dst_metadata.h>
- #include <net/dsa.h>
- #include "mtk_eth_soc.h"
- #include "mtk_ppe.h"
-@@ -829,7 +830,9 @@ void __mtk_ppe_check_skb(struct mtk_ppe
- 		    skb->dev->dsa_ptr->tag_ops->proto != DSA_TAG_PROTO_MTK)
- 			goto out;
- 
--		tag += 4;
-+		if (!skb_metadata_dst(skb))
-+			tag += 4;
-+
- 		if (get_unaligned_be16(tag) != ETH_P_8021Q)
- 			break;
- 
diff --git a/target/linux/generic/pending-6.6/738-net-ethernet-mtk_eth_soc-set-coherent-mask-to-get-PP.patch b/target/linux/generic/pending-6.6/738-net-ethernet-mtk_eth_soc-set-coherent-mask-to-get-PP.patch
deleted file mode 100644
index b598d15866..0000000000
--- a/target/linux/generic/pending-6.6/738-net-ethernet-mtk_eth_soc-set-coherent-mask-to-get-PP.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From dee3f591103910c8d8b2a6d57879ccd2a4be4b10 Mon Sep 17 00:00:00 2001
-Message-ID: <dee3f591103910c8d8b2a6d57879ccd2a4be4b10.1706067287.git.daniel at makrotopia.org>
-From: Daniel Golle <daniel at makrotopia.org>
-Date: Wed, 24 Jan 2024 03:19:49 +0000
-Subject: [PATCH net] net: ethernet: mtk_eth_soc: set coherent mask to get PPE
- working
-To: Felix Fietkau <nbd at nbd.name>,
-    Sean Wang <sean.wang at mediatek.com>,
-    Mark Lee <Mark-MC.Lee at mediatek.com>,
-    Lorenzo Bianconi <lorenzo at kernel.org>,
-    David S. Miller <davem at davemloft.net>,
-    Eric Dumazet <edumazet at google.com>,
-    Jakub Kicinski <kuba at kernel.org>,
-    Paolo Abeni <pabeni at redhat.com>,
-    Matthias Brugger <matthias.bgg at gmail.com>,
-    AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>,
-    Daniel Golle <daniel at makrotopia.org>,
-    netdev at vger.kernel.org,
-    linux-kernel at vger.kernel.org,
-    linux-arm-kernel at lists.infradead.org,
-    linux-mediatek at lists.infradead.org
-
-Set DMA coherent mask to 32-bit which makes PPE offloading engine start
-working on BPi-R4 which got 4 GiB of RAM.
-
-Fixes: 2d75891ebc09 ("net: ethernet: mtk_eth_soc: support 36-bit DMA addressing on MT7988")
-Suggested-by: Elad Yifee <eladwf at users.github.com>
-Signed-off-by: Daniel Golle <daniel at makrotopia.org>
----
- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4963,7 +4963,10 @@ static int mtk_probe(struct platform_dev
- 	}
- 
- 	if (MTK_HAS_CAPS(eth->soc->caps, MTK_36BIT_DMA)) {
--		err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(36));
-+		err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(36));
-+		if (!err)
-+			err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
-+
- 		if (err) {
- 			dev_err(&pdev->dev, "Wrong DMA config\n");
- 			return -EINVAL;
diff --git a/target/linux/generic/pending-6.6/772-net-dsa-b53-add-support-for-BCM63xx-RGMIIs.patch b/target/linux/generic/pending-6.6/772-net-dsa-b53-add-support-for-BCM63xx-RGMIIs.patch
deleted file mode 100644
index 23859816fa..0000000000
--- a/target/linux/generic/pending-6.6/772-net-dsa-b53-add-support-for-BCM63xx-RGMIIs.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From patchwork Sun Mar 19 22:08:05 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13180645
-X-Patchwork-Delegate: kuba at kernel.org
-Return-Path: <netdev-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id A7A46C6FD1F
-	for <netdev at archiver.kernel.org>; Sun, 19 Mar 2023 22:08:15 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S230223AbjCSWIN (ORCPT <rfc822;netdev at archiver.kernel.org>);
-        Sun, 19 Mar 2023 18:08:13 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32878 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S229565AbjCSWIM (ORCPT
-        <rfc822;netdev at vger.kernel.org>); Sun, 19 Mar 2023 18:08:12 -0400
-Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
- [IPv6:2a00:1450:4864:20::42e])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 605D3E062;
-        Sun, 19 Mar 2023 15:08:10 -0700 (PDT)
-Received: by mail-wr1-x42e.google.com with SMTP id h17so8695188wrt.8;
-        Sun, 19 Mar 2023 15:08:10 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1679263689;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=GmPK75Q9ZD3h3IYflWYuDwS99V2e532KgDlnNucAoJg=;
-        b=PSdrywW48P4Lq8z9wOSPXFB/ZdO/JfuyiGlw3Gz1Iriy+Smo/cBnJ0Ve9zKkX3AKTO
-         Tr7/g8xhSQX8sU5WAOEPC13uVjKpO4VZsamXHTmMKL4mmfII3K/piAsQcMQkkNpgouab
-         Ci9yr+7ASSmqEUHIbYTM6sl6a47rPwqk3b3DcTIE2CwJsPPNXnpQ/aSVbJAcEdhcZICc
-         X4rAmjrYjcsl8coFIGHHPlrMH9ShekQWxB84vEb6bO1nXOORNPizOHuY1vJ3wa3WgXsx
-         YwlvutMFVIUXfgL2ZwCmQAKWJPiAaFk+CCk3oxSeOYoAzkjcbMyapz9VnooStfvR2aV3
-         k+2g==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1679263689;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=GmPK75Q9ZD3h3IYflWYuDwS99V2e532KgDlnNucAoJg=;
-        b=NGjqrGERyaxRwINtevHaY97h9X9W+1UY62YYwotqwv5+cfvB8myjBbD3WH2WzaqMes
-         o9MMER9RE8/arW3jIVlBv4ORDUuEZ7AeGgy5UbFyQZIPHlp+hJ/sxFrGvYUwamg4Qrr9
-         ojargh8ORsEiMeqaf+5AkmEagNhrrV3ax0pUuWDzbJ3vXGoHjfCetHz5xyNL46dvXBfb
-         l/OZqjv9IYob552uUoUmCy/TbEQDqvmjkFrROFK9gtBNxgxUJkwbyiWIOVsf6RR8OarP
-         f7bbvSJYkvTvzx2u/g0Up7NW5ZyihMGBmDs377M3yW6AnSxW6jlfl30QmMU1aEigYXvy
-         v3mA==
-X-Gm-Message-State: AO0yUKUm1PYmYa4xlHuVD23mZcZm83a+xbhcbs0Xryi3yF/+UnjM4Cho
-        GAfqSh5MZ/rlOAm3Vnpn//9hOG5Lc8vLYg==
-X-Google-Smtp-Source: 
- AK7set+5pTahGGgk1hF/mHGkGBhsMf0//oQjZd4QFHx+HaeSgP5f6q7g0bRUcTX8kRtgHH0T7l1/hQ==
-X-Received: by 2002:a5d:474f:0:b0:2d6:2ae8:70d with SMTP id
- o15-20020a5d474f000000b002d62ae8070dmr2382593wrs.39.1679263688549;
-        Sun, 19 Mar 2023 15:08:08 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- d6-20020a5d6dc6000000b002c53f6c7599sm7354727wrz.29.2023.03.19.15.08.07
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Sun, 19 Mar 2023 15:08:07 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: f.fainelli at gmail.com, jonas.gorski at gmail.com, andrew at lunn.ch,
-        olteanv at gmail.com, davem at davemloft.net, edumazet at google.com,
-        kuba at kernel.org, pabeni at redhat.com, netdev at vger.kernel.org,
-        linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-Subject: [PATCH v2] net: dsa: b53: add support for BCM63xx RGMIIs
-Date: Sun, 19 Mar 2023 23:08:05 +0100
-Message-Id: <20230319220805.124024-1-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230319183330.761251-1-noltari at gmail.com>
-References: <20230319183330.761251-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <netdev.vger.kernel.org>
-X-Mailing-List: netdev at vger.kernel.org
-X-Patchwork-Delegate: kuba at kernel.org
-
-BCM63xx RGMII ports require additional configuration in order to work.
-
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
----
- v2: add changes suggested by Andrew:
-  - Use a switch statement.
-  - Use dev_dbg() instead of dev_info().
-
- drivers/net/dsa/b53/b53_common.c | 46 ++++++++++++++++++++++++++++++++
- drivers/net/dsa/b53/b53_priv.h   |  1 +
- 2 files changed, 47 insertions(+)
-
---- a/drivers/net/dsa/b53/b53_common.c
-+++ b/drivers/net/dsa/b53/b53_common.c
-@@ -1209,6 +1209,46 @@ static void b53_force_port_config(struct
- 	b53_write8(dev, B53_CTRL_PAGE, off, reg);
- }
- 
-+static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
-+				  phy_interface_t interface)
-+{
-+	struct b53_device *dev = ds->priv;
-+	u8 rgmii_ctrl = 0, off;
-+
-+	if (port == dev->imp_port)
-+		off = B53_RGMII_CTRL_IMP;
-+	else
-+		off = B53_RGMII_CTRL_P(port);
-+
-+	b53_read8(dev, B53_CTRL_PAGE, off, &rgmii_ctrl);
-+
-+	switch (interface) {
-+	case PHY_INTERFACE_MODE_RGMII_ID:
-+		rgmii_ctrl |= (RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
-+		break;
-+	case PHY_INTERFACE_MODE_RGMII_RXID:
-+		rgmii_ctrl &= ~(RGMII_CTRL_DLL_TXC);
-+		rgmii_ctrl |= RGMII_CTRL_DLL_RXC;
-+		break;
-+	case PHY_INTERFACE_MODE_RGMII_TXID:
-+		rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC);
-+		rgmii_ctrl |= RGMII_CTRL_DLL_TXC;
-+		break;
-+	case PHY_INTERFACE_MODE_RGMII:
-+	default:
-+		rgmii_ctrl &= ~(RGMII_CTRL_DLL_RXC | RGMII_CTRL_DLL_TXC);
-+		break;
-+	}
-+
-+	if (port != dev->imp_port)
-+		rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
-+
-+	b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
-+
-+	dev_dbg(ds->dev, "Configured port %d for %s\n", port,
-+		phy_modes(interface));
-+}
-+
- static void b53_adjust_link(struct dsa_switch *ds, int port,
- 			    struct phy_device *phydev)
- {
-@@ -1235,6 +1275,9 @@ static void b53_adjust_link(struct dsa_s
- 			      tx_pause, rx_pause);
- 	b53_force_link(dev, port, phydev->link);
- 
-+	if (is63xx(dev) && port >= B53_63XX_RGMII0)
-+		b53_adjust_63xx_rgmii(ds, port, phydev->interface);
-+
- 	if (is531x5(dev) && phy_interface_is_rgmii(phydev)) {
- 		if (port == dev->imp_port)
- 			off = B53_RGMII_CTRL_IMP;
-@@ -1402,6 +1445,9 @@ void b53_phylink_mac_link_up(struct dsa_
- {
- 	struct b53_device *dev = ds->priv;
- 
-+	if (is63xx(dev) && port >= B53_63XX_RGMII0)
-+		b53_adjust_63xx_rgmii(ds, port, interface);
-+
- 	if (mode == MLO_AN_PHY)
- 		return;
- 
---- a/drivers/net/dsa/b53/b53_priv.h
-+++ b/drivers/net/dsa/b53/b53_priv.h
-@@ -211,6 +211,7 @@ static inline int is58xx(struct b53_devi
- 		dev->chip_id == BCM7278_DEVICE_ID;
- }
- 
-+#define B53_63XX_RGMII0	4
- #define B53_CPU_PORT_25	5
- #define B53_CPU_PORT	8
- 
diff --git a/target/linux/generic/pending-6.6/773-net-dsa-b53-mmap-add-more-63xx-SoCs.patch b/target/linux/generic/pending-6.6/773-net-dsa-b53-mmap-add-more-63xx-SoCs.patch
deleted file mode 100644
index 8ab701ef56..0000000000
--- a/target/linux/generic/pending-6.6/773-net-dsa-b53-mmap-add-more-63xx-SoCs.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From patchwork Tue Mar 21 17:33:57 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13183003
-X-Patchwork-Delegate: kuba at kernel.org
-Return-Path: <netdev-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id 823A1C761AF
-	for <netdev at archiver.kernel.org>; Tue, 21 Mar 2023 17:35:06 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S230490AbjCURfE (ORCPT <rfc822;netdev at archiver.kernel.org>);
-        Tue, 21 Mar 2023 13:35:04 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47440 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S230357AbjCURex (ORCPT
-        <rfc822;netdev at vger.kernel.org>); Tue, 21 Mar 2023 13:34:53 -0400
-Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com
- [IPv6:2a00:1450:4864:20::430])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9A45559D8;
-        Tue, 21 Mar 2023 10:34:26 -0700 (PDT)
-Received: by mail-wr1-x430.google.com with SMTP id m2so14547588wrh.6;
-        Tue, 21 Mar 2023 10:34:26 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1679420063;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=cUvnluVaZPzfEQB9fMRuYo+4/361t/7po7nyUBBJfxc=;
-        b=F0pa8JmQZ1FeXVtdpCygur8UmLrgKwxCcjaMn312u5zNvsXsEPeCAIDqP2tvNNTwv/
-         UYjaNaoZ77HSvv/gSqeG808AXGyNs1PvLuHZYuUTJRNuLaMixKtkNFi4ypheCdk0WCiE
-         IWz0DIm6ojmdwMqafDUKQ6Qwkv5R0vo8Wh5vpjimEmCelOyMvfuLZNqubsiGqpnCguBp
-         uWlmKh95/VubCGgiGG2xK1IXQayL14ENuWseDds7nVpVK50NycrFgJbL17Bd6qJKYkbo
-         m70IC+9jM0hjwKXpyi6ipCBNcW+1E6JIwILVC04Xi+BTpOGhbUAQ59Yn2hyq7tQM7dzs
-         4PLg==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1679420063;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=cUvnluVaZPzfEQB9fMRuYo+4/361t/7po7nyUBBJfxc=;
-        b=SCX78yTuGjdnE5nuL0p7+kxGnOzsCExsigLdaV+x/JswmwxSpZvxn223i1yM95klj9
-         Rk0RnXqATLF1wZA7L1YmbeZ66zxUwW/osnCjJHPeEF8AGgjK/qawtLl/HJQHN67NaRNQ
-         bDsRn2nWQ2GRTRFpvD+iGRy4uyQCDu9HFxLbn43fBsBmRnXWGPQP5cEb90tL83/Onp4D
-         Lx/XcyZOh9QRfJNhj+G1BAeRCLRA/sdA0W3Ecu5SCFs+LtS6uvLVGWDKEDfnZhYY8Xqf
-         Mx9evWzdW2OorEN2FI6+xTglvnEBcVhHIJ7XEGAhCG6ocgMZeck++774S8RWumWl8xpy
-         /K9Q==
-X-Gm-Message-State: AO0yUKUORAlGfbkNwnYmQnTWcGPqW6sp4g9WfgQmRZGCV+9tCB0OebSP
-        ICq6v4YPmUPNRl/WNnVCbps=
-X-Google-Smtp-Source: 
- AK7set8pFDl8fHRwGPhAguqxIfqnQ4PY+b57IHEsybIaQ/HPNwdJ1cs1+IPBGHe3TL14dTS4aVNpHA==
-X-Received: by 2002:a5d:6991:0:b0:2ce:aab5:f96b with SMTP id
- g17-20020a5d6991000000b002ceaab5f96bmr2965175wru.67.1679420062764;
-        Tue, 21 Mar 2023 10:34:22 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- b13-20020a056000054d00b002da1261aa44sm184775wrf.48.2023.03.21.10.34.21
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Tue, 21 Mar 2023 10:34:21 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: f.fainelli at gmail.com, jonas.gorski at gmail.com, andrew at lunn.ch,
-        olteanv at gmail.com, davem at davemloft.net, edumazet at google.com,
-        kuba at kernel.org, pabeni at redhat.com, robh+dt at kernel.org,
-        krzysztof.kozlowski+dt at linaro.org, netdev at vger.kernel.org,
-        devicetree at vger.kernel.org, linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-Subject: [PATCH v2 2/4] net: dsa: b53: mmap: add more 63xx SoCs
-Date: Tue, 21 Mar 2023 18:33:57 +0100
-Message-Id: <20230321173359.251778-3-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230321173359.251778-1-noltari at gmail.com>
-References: <20230320155024.164523-1-noltari at gmail.com>
- <20230321173359.251778-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <netdev.vger.kernel.org>
-X-Mailing-List: netdev at vger.kernel.org
-X-Patchwork-Delegate: kuba at kernel.org
-
-BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
-
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
-Reviewed-by: Florian Fainelli <f.fainelli at gmail.com>
----
- v2: no changes.
-
- drivers/net/dsa/b53/b53_mmap.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/drivers/net/dsa/b53/b53_mmap.c
-+++ b/drivers/net/dsa/b53/b53_mmap.c
-@@ -345,8 +345,11 @@ static void b53_mmap_shutdown(struct pla
- 
- static const struct of_device_id b53_mmap_of_table[] = {
- 	{ .compatible = "brcm,bcm3384-switch" },
-+	{ .compatible = "brcm,bcm6318-switch" },
- 	{ .compatible = "brcm,bcm6328-switch" },
-+	{ .compatible = "brcm,bcm6362-switch" },
- 	{ .compatible = "brcm,bcm6368-switch" },
-+	{ .compatible = "brcm,bcm63268-switch" },
- 	{ .compatible = "brcm,bcm63xx-switch" },
- 	{ /* sentinel */ },
- };
diff --git a/target/linux/generic/pending-6.6/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch b/target/linux/generic/pending-6.6/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch
deleted file mode 100644
index de237374af..0000000000
--- a/target/linux/generic/pending-6.6/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-From patchwork Tue Mar 21 17:33:58 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13183004
-X-Patchwork-Delegate: kuba at kernel.org
-Return-Path: <netdev-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id B2B12C74A5B
-	for <netdev at archiver.kernel.org>; Tue, 21 Mar 2023 17:35:12 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S230297AbjCURfK (ORCPT <rfc822;netdev at archiver.kernel.org>);
-        Tue, 21 Mar 2023 13:35:10 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47438 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S230374AbjCURex (ORCPT
-        <rfc822;netdev at vger.kernel.org>); Tue, 21 Mar 2023 13:34:53 -0400
-Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com
- [IPv6:2a00:1450:4864:20::432])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C906B5550A;
-        Tue, 21 Mar 2023 10:34:26 -0700 (PDT)
-Received: by mail-wr1-x432.google.com with SMTP id y14so14546846wrq.4;
-        Tue, 21 Mar 2023 10:34:26 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1679420064;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=vnvnwWc5Tmg09HBQo/m9RbRM6yM8KLx8r1VA+Abfg3k=;
-        b=eFv+mwe94Y2YZMiJP5gydXVrGlbIAR5HCrY0rdcoGoMPzQUHLFckZeYCgEKudI55I7
-         gMLZYCtLwvDXvKeHM2AUigsq2YuJSeF5QwICPrhTnMwUGBg4yyyltrc3+J0lSd6/4kQv
-         h0yM1Oo4v0d8CuqjBU6bXienIk34AFVJfsPq+vWQTjAbUL7ht4WHZ2Ez2MFoTvZpkIJA
-         5iWMyVoMbugZl6eqNRjvDHFmtBtrZIv8AFs10r2Ca6+Yxm+aq0v33DRkbSVVqgFPNEzy
-         q5QOXOeLBPL6BvyovOpmVSWGoHf1zFV7lrzcqi+uc+FuYxQ9dyN3ND73DrrhWSkLaSg9
-         r8yA==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1679420064;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=vnvnwWc5Tmg09HBQo/m9RbRM6yM8KLx8r1VA+Abfg3k=;
-        b=jIRB8pIlrLA/ovhnEoePs/6SX8fn6l7l4fY2CxX2pLrTbP1JI8AAetPavvrNVQTr2M
-         Vm0iLbKyL/VpTq9+bSN1SMjaoi4lAMj0pgafoHrwABMVZpFauYvtCfSYTstZ2pw4Dr1j
-         wYQGj3BUSpFIYHtSIDMkb5449WA3T3TONhaQLRFAUCBD6gAFyEky5fY+DIHrGaj352B6
-         9ST/tkqHgPpuFlmromr42KQWoTFU+Pj0Uhyp7ru4BsnF7tTshWroZZIHUJmSACudEadr
-         fBPiuurX9jgp9zNqj8Oy0HjiVUnULFCapj8yICGp5s44uDAK/XFqFXpOuJ8ptS6uPazU
-         xUwg==
-X-Gm-Message-State: AO0yUKX2w6QZfaGDHtlZAlY/U8F8VuJa3HwlgXbxgGChgdgvIoFThawv
-        oDyFAhWbVfe4DxwXTwxgJ/I=
-X-Google-Smtp-Source: 
- AK7set+sH60XiJYup7bqrZTzFJVNe1YGcX/UTfjWV9xfGwNyodc34cHvKpqNagw5J+vEpv6CKvNHaA==
-X-Received: by 2002:adf:f344:0:b0:2cd:de25:1c76 with SMTP id
- e4-20020adff344000000b002cdde251c76mr12989754wrp.17.1679420064464;
-        Tue, 21 Mar 2023 10:34:24 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- b13-20020a056000054d00b002da1261aa44sm184775wrf.48.2023.03.21.10.34.22
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Tue, 21 Mar 2023 10:34:23 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: f.fainelli at gmail.com, jonas.gorski at gmail.com, andrew at lunn.ch,
-        olteanv at gmail.com, davem at davemloft.net, edumazet at google.com,
-        kuba at kernel.org, pabeni at redhat.com, robh+dt at kernel.org,
-        krzysztof.kozlowski+dt at linaro.org, netdev at vger.kernel.org,
-        devicetree at vger.kernel.org, linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-Subject: [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID
-Date: Tue, 21 Mar 2023 18:33:58 +0100
-Message-Id: <20230321173359.251778-4-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230321173359.251778-1-noltari at gmail.com>
-References: <20230320155024.164523-1-noltari at gmail.com>
- <20230321173359.251778-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <netdev.vger.kernel.org>
-X-Mailing-List: netdev at vger.kernel.org
-X-Patchwork-Delegate: kuba at kernel.org
-
-BCM6318 and BCM63268 SoCs require a special handling for their RGMIIs, so we
-should be able to identify them as a special BCM63xx switch.
-
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
----
- v2:
-  - Add missing chip to b53_switch_chips[].
-  - Fix device_get_match_data() casting warning.
-  - Add BCM63268_DEVICE_ID to BCM6318 too.
-  - Add BCM6318 in commit description.
-
- drivers/net/dsa/b53/b53_common.c | 13 +++++++++++++
- drivers/net/dsa/b53/b53_mmap.c   | 32 +++++++++++++++++++++++---------
- drivers/net/dsa/b53/b53_priv.h   |  9 ++++++++-
- 3 files changed, 44 insertions(+), 10 deletions(-)
-
---- a/drivers/net/dsa/b53/b53_common.c
-+++ b/drivers/net/dsa/b53/b53_common.c
-@@ -2466,6 +2466,19 @@ static const struct b53_chip_data b53_sw
- 		.jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX,
- 	},
- 	{
-+		.chip_id = BCM63268_DEVICE_ID,
-+		.dev_name = "BCM63268",
-+		.vlans = 4096,
-+		.enabled_ports = 0, /* pdata must provide them */
-+		.arl_bins = 4,
-+		.arl_buckets = 1024,
-+		.imp_port = 8,
-+		.vta_regs = B53_VTA_REGS_63XX,
-+		.duplex_reg = B53_DUPLEX_STAT_63XX,
-+		.jumbo_pm_reg = B53_JUMBO_PORT_MASK_63XX,
-+		.jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX,
-+	},
-+	{
- 		.chip_id = BCM53010_DEVICE_ID,
- 		.dev_name = "BCM53010",
- 		.vlans = 4096,
---- a/drivers/net/dsa/b53/b53_mmap.c
-+++ b/drivers/net/dsa/b53/b53_mmap.c
-@@ -262,7 +262,7 @@ static int b53_mmap_probe_of(struct plat
- 		return -ENOMEM;
- 
- 	pdata->regs = mem;
--	pdata->chip_id = BCM63XX_DEVICE_ID;
-+	pdata->chip_id = (u32)(unsigned long)device_get_match_data(dev);
- 	pdata->big_endian = of_property_read_bool(np, "big-endian");
- 
- 	of_ports = of_get_child_by_name(np, "ports");
-@@ -344,14 +344,28 @@ static void b53_mmap_shutdown(struct pla
- }
- 
- static const struct of_device_id b53_mmap_of_table[] = {
--	{ .compatible = "brcm,bcm3384-switch" },
--	{ .compatible = "brcm,bcm6318-switch" },
--	{ .compatible = "brcm,bcm6328-switch" },
--	{ .compatible = "brcm,bcm6362-switch" },
--	{ .compatible = "brcm,bcm6368-switch" },
--	{ .compatible = "brcm,bcm63268-switch" },
--	{ .compatible = "brcm,bcm63xx-switch" },
--	{ /* sentinel */ },
-+	{
-+		.compatible = "brcm,bcm3384-switch",
-+		.data = (void *)BCM63XX_DEVICE_ID,
-+	}, {
-+		.compatible = "brcm,bcm6318-switch",
-+		.data = (void *)BCM63268_DEVICE_ID,
-+	}, {
-+		.compatible = "brcm,bcm6328-switch",
-+		.data = (void *)BCM63XX_DEVICE_ID,
-+	}, {
-+		.compatible = "brcm,bcm6362-switch",
-+		.data = (void *)BCM63XX_DEVICE_ID,
-+	}, {
-+		.compatible = "brcm,bcm6368-switch",
-+		.data = (void *)BCM63XX_DEVICE_ID,
-+	}, {
-+		.compatible = "brcm,bcm63268-switch",
-+		.data = (void *)BCM63268_DEVICE_ID,
-+	}, {
-+		.compatible = "brcm,bcm63xx-switch",
-+		.data = (void *)BCM63XX_DEVICE_ID,
-+	}, { /* sentinel */ }
- };
- MODULE_DEVICE_TABLE(of, b53_mmap_of_table);
- 
---- a/drivers/net/dsa/b53/b53_priv.h
-+++ b/drivers/net/dsa/b53/b53_priv.h
-@@ -70,6 +70,7 @@ enum {
- 	BCM53125_DEVICE_ID = 0x53125,
- 	BCM53128_DEVICE_ID = 0x53128,
- 	BCM63XX_DEVICE_ID = 0x6300,
-+	BCM63268_DEVICE_ID = 0x63268,
- 	BCM53010_DEVICE_ID = 0x53010,
- 	BCM53011_DEVICE_ID = 0x53011,
- 	BCM53012_DEVICE_ID = 0x53012,
-@@ -191,7 +192,13 @@ static inline int is531x5(struct b53_dev
- 
- static inline int is63xx(struct b53_device *dev)
- {
--	return dev->chip_id == BCM63XX_DEVICE_ID;
-+	return dev->chip_id == BCM63XX_DEVICE_ID ||
-+		dev->chip_id == BCM63268_DEVICE_ID;
-+}
-+
-+static inline int is63268(struct b53_device *dev)
-+{
-+	return dev->chip_id == BCM63268_DEVICE_ID;
- }
- 
- static inline int is5301x(struct b53_device *dev)
diff --git a/target/linux/generic/pending-6.6/775-net-dsa-b53-add-BCM63268-RGMII-configuration.patch b/target/linux/generic/pending-6.6/775-net-dsa-b53-add-BCM63268-RGMII-configuration.patch
deleted file mode 100644
index d90d757fb2..0000000000
--- a/target/linux/generic/pending-6.6/775-net-dsa-b53-add-BCM63268-RGMII-configuration.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From patchwork Tue Mar 21 17:33:59 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13183005
-X-Patchwork-Delegate: kuba at kernel.org
-Return-Path: <netdev-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id 31BE4C761A6
-	for <netdev at archiver.kernel.org>; Tue, 21 Mar 2023 17:35:16 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S229674AbjCURfN (ORCPT <rfc822;netdev at archiver.kernel.org>);
-        Tue, 21 Mar 2023 13:35:13 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47684 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S230327AbjCURfB (ORCPT
-        <rfc822;netdev at vger.kernel.org>); Tue, 21 Mar 2023 13:35:01 -0400
-Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com
- [IPv6:2a00:1450:4864:20::436])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E1D855507D;
-        Tue, 21 Mar 2023 10:34:27 -0700 (PDT)
-Received: by mail-wr1-x436.google.com with SMTP id i9so14537769wrp.3;
-        Tue, 21 Mar 2023 10:34:27 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1679420066;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=asmFs22xWYwR1Ql9m/IrNv+MPUNDn8hSjmwDRYvO7mE=;
-        b=Cqj2C6aG5vEOlhh9N3ybvDA0CV38nhQODnfdnr7utNddd323iDagoJty1Wmi3MAzj1
-         5ORmYT5fQvUnild7C4RhcCNTBn+MoYZ+wDZwZYelu6BKHkW11YFK949ax5B50by+ASR2
-         z+rGI3wR5fVXd4VDgmcsT6zF5x69wKyhbhqIfrhG9BVFTctfaBgDS/l+bX1C56kSqv82
-         bQkKSSAehSLGpFoCU3q62OGoZVi3jDe6HDb5M1Dp2mgHhqsW19otZpJ57DjtZ1CmtPai
-         o7T/ew6WoIYSl6whBmV36jeNaDJ3TItOBrKc4nMJBDWaCg4DNzUSe0ei5Xz7Oik5lb3p
-         y9ew==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1679420066;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=asmFs22xWYwR1Ql9m/IrNv+MPUNDn8hSjmwDRYvO7mE=;
-        b=UdI2iQNBYwRf40ivf3ROR132t95BU/p3RUzXdZLCyz6c6JWtECQ5byyGeEwoX10n5u
-         HlepoNTJxMFLYrAHGvNLDPpWPuLXMa645S1mCVZ7NyWp8W96XzSynNZPeXHuJdb464QU
-         A7UTRSW3mlvKe9OR3EcB2CfBZv0yHWR0ldbnxcxGUFw8z78PNqpOVnITtjBdfpGesJ9c
-         VJw+fiM6hCcahor4nk9LLcAryPm8xmhDLxBKaLILO8wyTUiHY8G9hsXnFCtcpetnF5wS
-         pW13beAE+odb7ZZaXZUYpWGYhCe/hLzNjbo8YpgzHwadZthxPrT5YvNIYwyrvoViLM0n
-         KDRQ==
-X-Gm-Message-State: AO0yUKW+9H/kqcAUyWeZhZJhiJjsBcYn1THmZaSDrPrk/pNuGXJXGtJd
-        NgsGZW8iSqLEv81yK+U5Os8=
-X-Google-Smtp-Source: 
- AK7set/lzQZwCSxVaOe5dZ+7TR3xaQty/vg5xvZDpRW8TwTiPQblIbw5kJJTPLp67RySehrPIlCqSg==
-X-Received: by 2002:a5d:65c9:0:b0:2ce:ac31:54ff with SMTP id
- e9-20020a5d65c9000000b002ceac3154ffmr2776515wrw.2.1679420066191;
-        Tue, 21 Mar 2023 10:34:26 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- b13-20020a056000054d00b002da1261aa44sm184775wrf.48.2023.03.21.10.34.24
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Tue, 21 Mar 2023 10:34:25 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: f.fainelli at gmail.com, jonas.gorski at gmail.com, andrew at lunn.ch,
-        olteanv at gmail.com, davem at davemloft.net, edumazet at google.com,
-        kuba at kernel.org, pabeni at redhat.com, robh+dt at kernel.org,
-        krzysztof.kozlowski+dt at linaro.org, netdev at vger.kernel.org,
-        devicetree at vger.kernel.org, linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>,
- Simon Horman <simon.horman at corigine.com>
-Subject: [PATCH v2 4/4] net: dsa: b53: add BCM63268 RGMII configuration
-Date: Tue, 21 Mar 2023 18:33:59 +0100
-Message-Id: <20230321173359.251778-5-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230321173359.251778-1-noltari at gmail.com>
-References: <20230320155024.164523-1-noltari at gmail.com>
- <20230321173359.251778-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <netdev.vger.kernel.org>
-X-Mailing-List: netdev at vger.kernel.org
-X-Patchwork-Delegate: kuba at kernel.org
-
-BCM63268 requires special RGMII configuration to work.
-
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
-Reviewed-by: Florian Fainelli <f.fainelli at gmail.com>
-Reviewed-by: Simon Horman <simon.horman at corigine.com>
----
- v2: no changes.
-
- drivers/net/dsa/b53/b53_common.c | 6 +++++-
- drivers/net/dsa/b53/b53_regs.h   | 1 +
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
---- a/drivers/net/dsa/b53/b53_common.c
-+++ b/drivers/net/dsa/b53/b53_common.c
-@@ -1240,8 +1240,12 @@ static void b53_adjust_63xx_rgmii(struct
- 		break;
- 	}
- 
--	if (port != dev->imp_port)
-+	if (port != dev->imp_port) {
-+		if (is63268(dev))
-+			rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;
-+
- 		rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
-+	}
- 
- 	b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
- 
---- a/drivers/net/dsa/b53/b53_regs.h
-+++ b/drivers/net/dsa/b53/b53_regs.h
-@@ -138,6 +138,7 @@
- 
- #define B53_RGMII_CTRL_IMP		0x60
- #define   RGMII_CTRL_ENABLE_GMII	BIT(7)
-+#define   RGMII_CTRL_MII_OVERRIDE	BIT(6)
- #define   RGMII_CTRL_TIMING_SEL		BIT(2)
- #define   RGMII_CTRL_DLL_RXC		BIT(1)
- #define   RGMII_CTRL_DLL_TXC		BIT(0)
diff --git a/target/linux/generic/pending-6.6/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch b/target/linux/generic/pending-6.6/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch
deleted file mode 100644
index f0ae2defce..0000000000
--- a/target/linux/generic/pending-6.6/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-From patchwork Fri Mar 24 08:41:38 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13186549
-X-Patchwork-Delegate: kuba at kernel.org
-Return-Path: <netdev-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id EF744C76195
-	for <netdev at archiver.kernel.org>; Fri, 24 Mar 2023 08:42:01 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S231807AbjCXImA (ORCPT <rfc822;netdev at archiver.kernel.org>);
-        Fri, 24 Mar 2023 04:42:00 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32956 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S231272AbjCXIly (ORCPT
-        <rfc822;netdev at vger.kernel.org>); Fri, 24 Mar 2023 04:41:54 -0400
-Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com
- [IPv6:2a00:1450:4864:20::535])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 113A517CF3;
-        Fri, 24 Mar 2023 01:41:46 -0700 (PDT)
-Received: by mail-ed1-x535.google.com with SMTP id ek18so4877175edb.6;
-        Fri, 24 Mar 2023 01:41:45 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1679647304;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=OfUWRaFIQIQw/lRivER+LHryfdLliXzvabGrcmkQVEU=;
-        b=JMrl6Eay1FS0JZqgPHsbcVzuNAbFELc0SLNGyzYtOVQXcI+YwKDM9Ls7I9PsQVEPoZ
-         CthomCTYoz5G9DU7uBuia207rnjOhssZJRu0syrCoU+O/ZiQyGLJDvq61z5oZJxC2S40
-         kzRsUsC6MRjn64DKPWmxhsSTMKLzn2+P233LKNFbHtfi3NWF5Qu/85sUkxMurnfUgja0
-         qQhl25qYY7ZIvmlFHYefaI5UkITQFuiybrqJW9tztCdHf/gS+f33YkkvQ8njmMQa1DW0
-         ppedfOUotX+6kmHZGX1yea2V5ezEGGvRourZtYMoecTiD0E5d1J1bKhktKslVLIDm0ig
-         oc2g==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1679647304;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=OfUWRaFIQIQw/lRivER+LHryfdLliXzvabGrcmkQVEU=;
-        b=b3Gmga5ZDbnmQfnw1GCz+eU2JwgsVzfciZuSmfYAiVxpW4c6cur3MHbpzDPhi99wzA
-         ZYAM7ryLv88rXl/tQB5g2Nte5rvMfxUeHXsT/JpsRcSSocFRbRrk0QJyiA/Xj86NiD5N
-         C1sKz50Im190FmrvPcBh6OHQbv/3MQyE+1fQx+9q3jW5rQiAWQaYk4Ng8GlWA7gtG3jB
-         fHO6Fuoenn32pgkveJbQLYL/2t2f53wGf3QLQ3IeKW7jdfIHNThwrwqBMxdHoIDaTBT9
-         UWMeJuiYtylIibo/3zbORbWOgIERlWxZRf3BCOFpnzUn4eBzio4LgjtNxZ77ITRxsmbk
-         3+Hg==
-X-Gm-Message-State: AAQBX9dfyBfbR7Sdd5wqxMiAv3Yhk47pK1XzD87MZyAF3AxyoFyKcMaF
-        EbwJLyRvTGQEFdVWCGw1eMU=
-X-Google-Smtp-Source: 
- AKy350bpDVLq7k1FxG2Mek/VIobZL4KhufiKx8qfmpxpcWmLI3bLg8wfQKEAKJRNJBleo/7CZuCL5g==
-X-Received: by 2002:aa7:c711:0:b0:4a2:588f:b3c5 with SMTP id
- i17-20020aa7c711000000b004a2588fb3c5mr2261236edq.21.1679647304260;
-        Fri, 24 Mar 2023 01:41:44 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- z21-20020a50cd15000000b004acbda55f6bsm10323728edi.27.2023.03.24.01.41.43
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Fri, 24 Mar 2023 01:41:43 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: paul.geurts at prodrive-technologies.com, f.fainelli at gmail.com,
-        jonas.gorski at gmail.com, andrew at lunn.ch, olteanv at gmail.com,
-        davem at davemloft.net, edumazet at google.com, kuba at kernel.org,
-        pabeni at redhat.com, robh+dt at kernel.org,
-        krzysztof.kozlowski+dt at linaro.org, netdev at vger.kernel.org,
-        devicetree at vger.kernel.org, linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-Subject: [PATCH v2 2/2] net: dsa: b53: mdio: add support for BCM53134
-Date: Fri, 24 Mar 2023 09:41:38 +0100
-Message-Id: <20230324084138.664285-3-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230324084138.664285-1-noltari at gmail.com>
-References: <20230323121804.2249605-1-noltari at gmail.com>
- <20230324084138.664285-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <netdev.vger.kernel.org>
-X-Mailing-List: netdev at vger.kernel.org
-X-Patchwork-Delegate: kuba at kernel.org
-
-From: Paul Geurts <paul.geurts at prodrive-technologies.com>
-
-Add support for the BCM53134 Ethernet switch in the existing b53 dsa driver.
-BCM53134 is very similar to the BCM58XX series.
-
-Signed-off-by: Paul Geurts <paul.geurts at prodrive-technologies.com>
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
----
- v2: add BCM53134 to is531x5() and remove special RGMII config
-
- drivers/net/dsa/b53/b53_common.c | 15 +++++++++++++++
- drivers/net/dsa/b53/b53_mdio.c   |  5 ++++-
- drivers/net/dsa/b53/b53_priv.h   |  7 +++++--
- 3 files changed, 24 insertions(+), 3 deletions(-)
-
---- a/drivers/net/dsa/b53/b53_common.c
-+++ b/drivers/net/dsa/b53/b53_common.c
-@@ -2613,6 +2613,20 @@ static const struct b53_chip_data b53_sw
- 		.jumbo_pm_reg = B53_JUMBO_PORT_MASK,
- 		.jumbo_size_reg = B53_JUMBO_MAX_SIZE,
- 	},
-+	{
-+		.chip_id = BCM53134_DEVICE_ID,
-+		.dev_name = "BCM53134",
-+		.vlans = 4096,
-+		.enabled_ports = 0x12f,
-+		.imp_port = 8,
-+		.cpu_port = B53_CPU_PORT,
-+		.vta_regs = B53_VTA_REGS,
-+		.arl_bins = 4,
-+		.arl_buckets = 1024,
-+		.duplex_reg = B53_DUPLEX_STAT_GE,
-+		.jumbo_pm_reg = B53_JUMBO_PORT_MASK,
-+		.jumbo_size_reg = B53_JUMBO_MAX_SIZE,
-+	},
- };
- 
- static int b53_switch_init(struct b53_device *dev)
-@@ -2790,6 +2804,7 @@ int b53_switch_detect(struct b53_device
- 		case BCM53012_DEVICE_ID:
- 		case BCM53018_DEVICE_ID:
- 		case BCM53019_DEVICE_ID:
-+		case BCM53134_DEVICE_ID:
- 			dev->chip_id = id32;
- 			break;
- 		default:
---- a/drivers/net/dsa/b53/b53_mdio.c
-+++ b/drivers/net/dsa/b53/b53_mdio.c
-@@ -286,6 +286,7 @@ static const struct b53_io_ops b53_mdio_
- #define B53_BRCM_OUI_2	0x03625c00
- #define B53_BRCM_OUI_3	0x00406000
- #define B53_BRCM_OUI_4	0x01410c00
-+#define B53_BRCM_OUI_5	0xae025000
- 
- static int b53_mdio_probe(struct mdio_device *mdiodev)
- {
-@@ -313,7 +314,8 @@ static int b53_mdio_probe(struct mdio_de
- 	if ((phy_id & 0xfffffc00) != B53_BRCM_OUI_1 &&
- 	    (phy_id & 0xfffffc00) != B53_BRCM_OUI_2 &&
- 	    (phy_id & 0xfffffc00) != B53_BRCM_OUI_3 &&
--	    (phy_id & 0xfffffc00) != B53_BRCM_OUI_4) {
-+	    (phy_id & 0xfffffc00) != B53_BRCM_OUI_4 &&
-+	    (phy_id & 0xfffffc00) != B53_BRCM_OUI_5) {
- 		dev_err(&mdiodev->dev, "Unsupported device: 0x%08x\n", phy_id);
- 		return -ENODEV;
- 	}
-@@ -375,6 +377,7 @@ static const struct of_device_id b53_of_
- 	{ .compatible = "brcm,bcm53115" },
- 	{ .compatible = "brcm,bcm53125" },
- 	{ .compatible = "brcm,bcm53128" },
-+	{ .compatible = "brcm,bcm53134" },
- 	{ .compatible = "brcm,bcm5365" },
- 	{ .compatible = "brcm,bcm5389" },
- 	{ .compatible = "brcm,bcm5395" },
---- a/drivers/net/dsa/b53/b53_priv.h
-+++ b/drivers/net/dsa/b53/b53_priv.h
-@@ -80,6 +80,7 @@ enum {
- 	BCM583XX_DEVICE_ID = 0x58300,
- 	BCM7445_DEVICE_ID = 0x7445,
- 	BCM7278_DEVICE_ID = 0x7278,
-+	BCM53134_DEVICE_ID = 0x5075,
- };
- 
- struct b53_pcs {
-@@ -187,7 +188,8 @@ static inline int is531x5(struct b53_dev
- {
- 	return dev->chip_id == BCM53115_DEVICE_ID ||
- 		dev->chip_id == BCM53125_DEVICE_ID ||
--		dev->chip_id == BCM53128_DEVICE_ID;
-+		dev->chip_id == BCM53128_DEVICE_ID ||
-+		dev->chip_id == BCM53134_DEVICE_ID;
- }
- 
- static inline int is63xx(struct b53_device *dev)
-@@ -215,7 +217,8 @@ static inline int is58xx(struct b53_devi
- 	return dev->chip_id == BCM58XX_DEVICE_ID ||
- 		dev->chip_id == BCM583XX_DEVICE_ID ||
- 		dev->chip_id == BCM7445_DEVICE_ID ||
--		dev->chip_id == BCM7278_DEVICE_ID;
-+		dev->chip_id == BCM7278_DEVICE_ID ||
-+		dev->chip_id == BCM53134_DEVICE_ID;
- }
- 
- #define B53_63XX_RGMII0	4
diff --git a/target/linux/generic/pending-6.6/796-net-dsa-mt7530-fix-10M-100M-speed-on-MT7988-switch.patch b/target/linux/generic/pending-6.6/796-net-dsa-mt7530-fix-10M-100M-speed-on-MT7988-switch.patch
deleted file mode 100644
index 47e3b140c8..0000000000
--- a/target/linux/generic/pending-6.6/796-net-dsa-mt7530-fix-10M-100M-speed-on-MT7988-switch.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From a444877c10a665cd8a869e6d37facdb89fd95f79 Mon Sep 17 00:00:00 2001
-Message-ID: <a444877c10a665cd8a869e6d37facdb89fd95f79.1706070008.git.daniel at makrotopia.org>
-From: Daniel Golle <daniel at makrotopia.org>
-Date: Wed, 24 Jan 2024 04:17:11 +0000
-Subject: [PATCH net] net: dsa: mt7530: fix 10M/100M speed on MT7988 switch
-To: Ar?n? ?NAL <arinc.unal at arinc9.com>,
-    Daniel Golle <daniel at makrotopia.org>,
-    DENG Qingfang <dqfext at gmail.com>,
-    Sean Wang <sean.wang at mediatek.com>,
-    Andrew Lunn <andrew at lunn.ch>,
-    Florian Fainelli <f.fainelli at gmail.com>,
-    Vladimir Oltean <olteanv at gmail.com>,
-    David S. Miller <davem at davemloft.net>,
-    Eric Dumazet <edumazet at google.com>,
-    Jakub Kicinski <kuba at kernel.org>,
-    Paolo Abeni <pabeni at redhat.com>,
-    Matthias Brugger <matthias.bgg at gmail.com>,
-    AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>,
-    netdev at vger.kernel.org,
-    linux-kernel at vger.kernel.org,
-    linux-arm-kernel at lists.infradead.org,
-    linux-mediatek at lists.infradead.org
-
-Setup PMCR port register for actual speed and duplex on internally
-connected PHYs of the MT7988 built-in switch. This fixes links with
-speeds other than 1000M.
-
-Fixes: ("110c18bfed414 net: dsa: mt7530: introduce driver for MT7988 built-in switch")
-Signed-off-by: Daniel Golle <daniel at makrotopia.org>
----
- drivers/net/dsa/mt7530.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
---- a/drivers/net/dsa/mt7530.c
-+++ b/drivers/net/dsa/mt7530.c
-@@ -2849,8 +2849,7 @@ static void mt753x_phylink_mac_link_up(s
- 	/* MT753x MAC works in 1G full duplex mode for all up-clocked
- 	 * variants.
- 	 */
--	if (interface == PHY_INTERFACE_MODE_INTERNAL ||
--	    interface == PHY_INTERFACE_MODE_TRGMII ||
-+	if (interface == PHY_INTERFACE_MODE_TRGMII ||
- 	    (phy_interface_mode_is_8023z(interface))) {
- 		speed = SPEED_1000;
- 		duplex = DUPLEX_FULL;
diff --git a/target/linux/generic/pending-6.6/850-dt-bindings-clk-add-BCM63268-timer-clock-definitions.patch b/target/linux/generic/pending-6.6/850-dt-bindings-clk-add-BCM63268-timer-clock-definitions.patch
deleted file mode 100644
index cc6f1e0d9d..0000000000
--- a/target/linux/generic/pending-6.6/850-dt-bindings-clk-add-BCM63268-timer-clock-definitions.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From patchwork Wed Mar 22 17:15:12 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13184389
-Return-Path: <linux-clk-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id 73F2DC6FD1C
-	for <linux-clk at archiver.kernel.org>; Wed, 22 Mar 2023 17:15:59 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S231363AbjCVRP5 (ORCPT <rfc822;linux-clk at archiver.kernel.org>);
-        Wed, 22 Mar 2023 13:15:57 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58824 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S231408AbjCVRPy (ORCPT
-        <rfc822;linux-clk at vger.kernel.org>); Wed, 22 Mar 2023 13:15:54 -0400
-Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
- [IPv6:2a00:1450:4864:20::32d])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70E4C64B28;
-        Wed, 22 Mar 2023 10:15:24 -0700 (PDT)
-Received: by mail-wm1-x32d.google.com with SMTP id n19so1740892wms.0;
-        Wed, 22 Mar 2023 10:15:24 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1679505322;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=dEknM98Izmc8d/crPsoJ+ejZxfl78958Ei6SPYhYDHs=;
-        b=LTOQ75W3s5nYo+nEfiJAKqytSopONB4jCtU3zRygzPMasugVOrYFMsUR+WrpsAjuRT
-         v4HgWpJxEsIWeRXrUN9W21mFXhGgJLJXSxRnrio0CsZZBNMdkebbNOphgKXIWAdm+2iM
-         PzqAdGm5t38wT2mmm6V/9hCy90+12raHM82tNFdhhiezfg2cukVOKP3j/TeOVCwas0gQ
-         iFc+CuZB6y73zYXvMUMUpTsqI5vev4xJsSMHIQJVmUxJAwqhOBhN9JCRo7Ao+wayjn2d
-         Fxo6AV3A8v68nVfoQ0K0I+eWXG48nMCX45iWh/lVvVTOFcR99kn4va7NY1oVnPsh+WQz
-         WcLA==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1679505322;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=dEknM98Izmc8d/crPsoJ+ejZxfl78958Ei6SPYhYDHs=;
-        b=wv2NSR1B5RnsdoEE7mgJSHAfSs1JHZbQ1HPMldyaGWAk1dcucqh/uDzM3Flz+ADRi1
-         19NoaB2Ur7QaWZejbuplnIOK/nte3PnmqJ9ZNw8HejmuS4eU8mB1V1aJUSKSPGsfUi4a
-         LYe3HSw87l0jrAC7ptdKvdUtzBoIkX0CeFvfguTQQkDhUTyAFIG144hY6uPXY9Mga96b
-         gnNe2dLCzHQLbEJpaDaavT7FEEcLDxaq7jNcR2xqEEZaIwfcew+Q05t4xL/3i8GAj9Ru
-         6ivQjIbBKfYQF88o7KnOW9o1wjrGsk+Nd4Iy0OLZix3JQasCJGrKV7ib5awI9J39upYV
-         fa4A==
-X-Gm-Message-State: AO0yUKWw75I1M5Vjrd4vXq4GTruQu0H84pycgyi2CT3bczTYRJpWmEWg
-        +bHDhvp1n5IWW85GI9vKWpbclB13a/S0RQ==
-X-Google-Smtp-Source: 
- AK7set9T/2oJsVetUb2L4mPEWu8YqDrnK8EzHK5bJf1ABIa1Et8f7BFJ7AA3j14ITZuf8cH0HqlRtg==
-X-Received: by 2002:a05:600c:2304:b0:3ed:2949:985b with SMTP id
- 4-20020a05600c230400b003ed2949985bmr206833wmo.23.1679505322457;
-        Wed, 22 Mar 2023 10:15:22 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- v10-20020a05600c470a00b003ee11ac2288sm8414333wmo.21.2023.03.22.10.15.21
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Wed, 22 Mar 2023 10:15:22 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: mturquette at baylibre.com, sboyd at kernel.org, robh+dt at kernel.org,
-        krzysztof.kozlowski+dt at linaro.org, p.zabel at pengutronix.de,
-        f.fainelli at gmail.com, jonas.gorski at gmail.com,
-        william.zhang at broadcom.com, linux-clk at vger.kernel.org,
-        devicetree at vger.kernel.org, linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>,
- Rob Herring <robh at kernel.org>
-Subject: [PATCH v4 1/4] dt-bindings: clk: add BCM63268 timer clock definitions
-Date: Wed, 22 Mar 2023 18:15:12 +0100
-Message-Id: <20230322171515.120353-2-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230322171515.120353-1-noltari at gmail.com>
-References: <20230322171515.120353-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <linux-clk.vger.kernel.org>
-X-Mailing-List: linux-clk at vger.kernel.org
-
-Add missing timer clock definitions for BCM63268.
-
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
-Acked-by: Rob Herring <robh at kernel.org>
----
- v4: no changes
- v3: no changes
- v2: change commit title, as suggested by Stephen Boyd
-
- include/dt-bindings/clock/bcm63268-clock.h | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
---- a/include/dt-bindings/clock/bcm63268-clock.h
-+++ b/include/dt-bindings/clock/bcm63268-clock.h
-@@ -27,4 +27,17 @@
- #define BCM63268_CLK_TBUS	27
- #define BCM63268_CLK_ROBOSW250	31
- 
-+#define BCM63268_TCLK_EPHY1		0
-+#define BCM63268_TCLK_EPHY2		1
-+#define BCM63268_TCLK_EPHY3		2
-+#define BCM63268_TCLK_GPHY1		3
-+#define BCM63268_TCLK_DSL		4
-+#define BCM63268_TCLK_WAKEON_EPHY	6
-+#define BCM63268_TCLK_WAKEON_DSL	7
-+#define BCM63268_TCLK_FAP1		11
-+#define BCM63268_TCLK_FAP2		15
-+#define BCM63268_TCLK_UTO_50		16
-+#define BCM63268_TCLK_UTO_EXTIN		17
-+#define BCM63268_TCLK_USB_REF		18
-+
- #endif /* __DT_BINDINGS_CLOCK_BCM63268_H */
diff --git a/target/linux/generic/pending-6.6/851-dt-bindings-reset-add-BCM63268-timer-reset-definitions.patch b/target/linux/generic/pending-6.6/851-dt-bindings-reset-add-BCM63268-timer-reset-definitions.patch
deleted file mode 100644
index 5f1be105ac..0000000000
--- a/target/linux/generic/pending-6.6/851-dt-bindings-reset-add-BCM63268-timer-reset-definitions.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From patchwork Wed Mar 22 17:15:13 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13184390
-Return-Path: <linux-clk-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id D0B1AC6FD1C
-	for <linux-clk at archiver.kernel.org>; Wed, 22 Mar 2023 17:16:08 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S231472AbjCVRQI (ORCPT <rfc822;linux-clk at archiver.kernel.org>);
-        Wed, 22 Mar 2023 13:16:08 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58934 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S231435AbjCVRP5 (ORCPT
-        <rfc822;linux-clk at vger.kernel.org>); Wed, 22 Mar 2023 13:15:57 -0400
-Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
- [IPv6:2a00:1450:4864:20::329])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9655064863;
-        Wed, 22 Mar 2023 10:15:25 -0700 (PDT)
-Received: by mail-wm1-x329.google.com with SMTP id
- v4-20020a05600c470400b003ee4f06428fso2424553wmo.4;
-        Wed, 22 Mar 2023 10:15:25 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1679505324;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=C7ykhArT1dO7P8wtmI92eo4c7KtPZI9w182/5+cB3T0=;
-        b=WRZRU2SM9n1LfUj4SgTPfQczADC2pfvoIrOsNpBLTym2eOfmkTetb/WbGSla5kw2Wb
-         SH5MIC2fFeScJg6T5FFAUOOLmRVW9xvl8Q3T3NKb3z/9wvPHO767nrdIbffRWMJFs7gW
-         wT/kuTpn8GYdfY0sZ/dMTkq41DVusEkxfX6GxtG85O98ZP8xMHQog8aPs9fRfUvI5ZKB
-         eGYcRz/Wn1cHhjey9jtWzQEEmZ/BT3b0HQTF9Tl88oofhiEgbyjFXr91+vRsLbsJpGXH
-         /1FjjaLG5DnonKubV9rmbuCU8KzwH331gi2KuRjvLD2V+OMewqSa5i+GvgVv8x2zC8y+
-         /mLQ==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1679505324;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=C7ykhArT1dO7P8wtmI92eo4c7KtPZI9w182/5+cB3T0=;
-        b=bhd0fNh0jDOMlGSC4F+p5igV8AUlGEPj2cXUwgdgqRfSSuUy9z+Li8cT0MbY/aWH5Z
-         qInRVA+R1cWV3ubrDyKag6oEc0LDU234bnMFcP9b7MRlrM8Dpit9TFSyqJU4sDUWNDs5
-         KOe2k/SNIdat6munC9VOuEBDO0eB/UDMN+repKwXNdHChp/Toq9qMvW4Uy8uHxosbQlD
-         8P88GbKFjynb1E8I8croGjfub7+y8PPsWB0xNUcafIv6xs3MnVOP1Mk4KwBCbqS509la
-         mfjsriXtIybO8XFqtn100ungjvbFWdogEplLdSPVdgAqdfF5J8gHxAoApoeYejYkL5/R
-         kOhQ==
-X-Gm-Message-State: AO0yUKWdzr3dMmjKhD8tF+ec4Dfdq9VGZ/WCU4d85npKQvxSwhNPZZ1J
-        5WYRIqivh0suFC1OqEidwenpiJYvXedYjw==
-X-Google-Smtp-Source: 
- AK7set87ew2/mKWeShXTTW/YBbBJNR2zeGFV0CfuqLXhiJEU6tqFuyKcW+vFEoKHIbNUS8wRy1SzLA==
-X-Received: by 2002:a05:600c:290:b0:3ee:6d88:774a with SMTP id
- 16-20020a05600c029000b003ee6d88774amr160734wmk.14.1679505323514;
-        Wed, 22 Mar 2023 10:15:23 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- v10-20020a05600c470a00b003ee11ac2288sm8414333wmo.21.2023.03.22.10.15.22
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Wed, 22 Mar 2023 10:15:23 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: mturquette at baylibre.com, sboyd at kernel.org, robh+dt at kernel.org,
-        krzysztof.kozlowski+dt at linaro.org, p.zabel at pengutronix.de,
-        f.fainelli at gmail.com, jonas.gorski at gmail.com,
-        william.zhang at broadcom.com, linux-clk at vger.kernel.org,
-        devicetree at vger.kernel.org, linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>,
- Rob Herring <robh at kernel.org>
-Subject: [PATCH v4 2/4] dt-bindings: reset: add BCM63268 timer reset
- definitions
-Date: Wed, 22 Mar 2023 18:15:13 +0100
-Message-Id: <20230322171515.120353-3-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230322171515.120353-1-noltari at gmail.com>
-References: <20230322171515.120353-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <linux-clk.vger.kernel.org>
-X-Mailing-List: linux-clk at vger.kernel.org
-
-Add missing timer reset definitions for BCM63268.
-
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
-Acked-by: Rob Herring <robh at kernel.org>
----
- v4: no changes
- v3: no changes
- v2: change commit title, as suggested by Stephen Boyd
-
- include/dt-bindings/reset/bcm63268-reset.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/include/dt-bindings/reset/bcm63268-reset.h
-+++ b/include/dt-bindings/reset/bcm63268-reset.h
-@@ -23,4 +23,8 @@
- #define BCM63268_RST_PCIE_HARD	17
- #define BCM63268_RST_GPHY	18
- 
-+#define BCM63268_TRST_SW	29
-+#define BCM63268_TRST_HW	30
-+#define BCM63268_TRST_POR	31
-+
- #endif /* __DT_BINDINGS_RESET_BCM63268_H */
diff --git a/target/linux/generic/pending-6.6/852-clk-bcm-Add-BCM63268-timer-clock-and-reset-driver.patch b/target/linux/generic/pending-6.6/852-clk-bcm-Add-BCM63268-timer-clock-and-reset-driver.patch
deleted file mode 100644
index 7e500cd1b5..0000000000
--- a/target/linux/generic/pending-6.6/852-clk-bcm-Add-BCM63268-timer-clock-and-reset-driver.patch
+++ /dev/null
@@ -1,345 +0,0 @@
-From patchwork Wed Mar 22 17:15:15 2023
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
- <noltari at gmail.com>
-X-Patchwork-Id: 13184392
-Return-Path: <linux-clk-owner at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
-	aws-us-west-2-korg-lkml-1.web.codeaurora.org
-Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
-	by smtp.lore.kernel.org (Postfix) with ESMTP id 199D9C76196
-	for <linux-clk at archiver.kernel.org>; Wed, 22 Mar 2023 17:16:11 +0000 (UTC)
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
-        id S231512AbjCVRQJ (ORCPT <rfc822;linux-clk at archiver.kernel.org>);
-        Wed, 22 Mar 2023 13:16:09 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58942 "EHLO
-        lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
-        with ESMTP id S231442AbjCVRP5 (ORCPT
-        <rfc822;linux-clk at vger.kernel.org>); Wed, 22 Mar 2023 13:15:57 -0400
-Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
- [IPv6:2a00:1450:4864:20::32c])
-        by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DDB36487D;
-        Wed, 22 Mar 2023 10:15:27 -0700 (PDT)
-Received: by mail-wm1-x32c.google.com with SMTP id
- i5-20020a05600c354500b003edd24054e0so6717370wmq.4;
-        Wed, 22 Mar 2023 10:15:27 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=gmail.com; s=20210112; t=1679505325;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
-         :message-id:reply-to;
-        bh=rkv/eZYA1ncHp5FnV2ZWc3hgYnAx28S86QA9vmcXFCY=;
-        b=Y1mva2Bt3sUbKxLgEUS331CJbGxUc4z8kTQW8qiHWGhYlFKtm+d5z4sT40E5BeZAnU
-         zmTbCI7jbroe9NYBxGUmSli6LNVDPjND80ChbhWTqbqMQTmeQFWut9KmeBWK6Oze2lC/
-         XMSOorUzowjcU2xtHNrzoq2KH2pstW573lsB8WnzFVfhMaRkE9DfRr6WNyA7zC8DyxM5
-         ezxlCQtCmgPfCqlyksbIDKrgrRf3GiUR0yUd6xRU+MssyvH1FkYGDCerPctDto6lGHBz
-         8Y15jT3l6OnQMT6dkekgpPF5/XrSUY93u9g0B4U8+0dhNj+K7vmDen+jqdess+tpLnq/
-         gFrA==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
-        d=1e100.net; s=20210112; t=1679505325;
-        h=content-transfer-encoding:mime-version:references:in-reply-to
-         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
-         :subject:date:message-id:reply-to;
-        bh=rkv/eZYA1ncHp5FnV2ZWc3hgYnAx28S86QA9vmcXFCY=;
-        b=Ym4+u8bbTQGNkewUBrLf+89vE0EFJBQp2f1crwUxZFboKTROF9ltZonY1CGepo7b0B
-         fkx3TbWQy5X65g3ScuieqtClCI8WanPeNBJ48+JipJYO3ODVNBxnVaTuW/0FOIcahfqe
-         sG5GvggHhzRz+Yeybsbnupmzxnw8Ez0BpMl3p7zcjHL7BGZDdOOX2Zbw3zfyYa5sg2nX
-         UXYJT36zy2h39gxUsy9QkhQ76CG3w6omniohZpYidpojpiDjbOy0nKFky4kUe+YyA1fF
-         4IBhjAm6mH+uh6wHSG1qj+NAXHs0xDDJps16PbJwAgL7Qt9K5WW+R/UAYPmHFgaRIHOw
-         /seA==
-X-Gm-Message-State: AO0yUKXRtoYO8Nfus6Ca8lhM39P1Xn6TGkhatEfoISd1YNOkTJJN2hW+
-        xRphLgxlzNfCLcVPlpGK9dk=
-X-Google-Smtp-Source: 
- AK7set9VnMEykugk8ZYnkXuqK41bX1dzlvKsAXHEjr8i2NZBld0buKhQLcGYEcwxnBgVTtC7eRGfXw==
-X-Received: by 2002:a1c:7c0b:0:b0:3e2:1dac:b071 with SMTP id
- x11-20020a1c7c0b000000b003e21dacb071mr178053wmc.13.1679505325582;
-        Wed, 22 Mar 2023 10:15:25 -0700 (PDT)
-Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
- [79.146.124.255])
-        by smtp.gmail.com with ESMTPSA id
- v10-20020a05600c470a00b003ee11ac2288sm8414333wmo.21.2023.03.22.10.15.24
-        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
-        Wed, 22 Mar 2023 10:15:25 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-To: mturquette at baylibre.com, sboyd at kernel.org, robh+dt at kernel.org,
-        krzysztof.kozlowski+dt at linaro.org, p.zabel at pengutronix.de,
-        f.fainelli at gmail.com, jonas.gorski at gmail.com,
-        william.zhang at broadcom.com, linux-clk at vger.kernel.org,
-        devicetree at vger.kernel.org, linux-kernel at vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=  <noltari at gmail.com>
-Subject: [PATCH v4 4/4] clk: bcm: Add BCM63268 timer clock and reset driver
-Date: Wed, 22 Mar 2023 18:15:15 +0100
-Message-Id: <20230322171515.120353-5-noltari at gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230322171515.120353-1-noltari at gmail.com>
-References: <20230322171515.120353-1-noltari at gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID: <linux-clk.vger.kernel.org>
-X-Mailing-List: linux-clk at vger.kernel.org
-
-Add driver for BCM63268 timer clock and reset controller.
-
-Signed-off-by: ?lvaro Fern?ndez Rojas <noltari at gmail.com>
----
- v4: add changes suggested by Stephen Boyd:
-  - Usage of of_device_get_match_data() isn't needed.
-  - Use devm_clk_hw_register_gate().
-  - Drop clk_hw_unregister_gate().
- v3: add missing <linux/io.h> include to fix build warning
- v2: add changes suggested by Stephen Boyd
-
- drivers/clk/bcm/Kconfig              |   9 ++
- drivers/clk/bcm/Makefile             |   1 +
- drivers/clk/bcm/clk-bcm63268-timer.c | 215 +++++++++++++++++++++++++++
- 3 files changed, 225 insertions(+)
- create mode 100644 drivers/clk/bcm/clk-bcm63268-timer.c
-
---- a/drivers/clk/bcm/Kconfig
-+++ b/drivers/clk/bcm/Kconfig
-@@ -37,6 +37,15 @@ config CLK_BCM_63XX_GATE
- 	  Enable common clock framework support for Broadcom BCM63xx DSL SoCs
- 	  based on the MIPS architecture
- 
-+config CLK_BCM63268_TIMER
-+	bool "Broadcom BCM63268 timer clock and reset support"
-+	depends on BMIPS_GENERIC || COMPILE_TEST
-+	default BMIPS_GENERIC
-+	select RESET_CONTROLLER
-+	help
-+	  Enable timer clock and reset support for Broadcom BCM63268 DSL SoCs
-+	  based on the MIPS architecture.
-+
- config CLK_BCM_KONA
- 	bool "Broadcom Kona CCU clock support"
- 	depends on ARCH_BCM_MOBILE || COMPILE_TEST
---- a/drivers/clk/bcm/Makefile
-+++ b/drivers/clk/bcm/Makefile
-@@ -1,6 +1,7 @@
- # SPDX-License-Identifier: GPL-2.0
- obj-$(CONFIG_CLK_BCM_63XX)	+= clk-bcm63xx.o
- obj-$(CONFIG_CLK_BCM_63XX_GATE)	+= clk-bcm63xx-gate.o
-+obj-$(CONFIG_CLK_BCM63268_TIMER) += clk-bcm63268-timer.o
- obj-$(CONFIG_CLK_BCM_KONA)	+= clk-kona.o
- obj-$(CONFIG_CLK_BCM_KONA)	+= clk-kona-setup.o
- obj-$(CONFIG_CLK_BCM_KONA)	+= clk-bcm281xx.o
---- /dev/null
-+++ b/drivers/clk/bcm/clk-bcm63268-timer.c
-@@ -0,0 +1,215 @@
-+// SPDX-License-Identifier: GPL-2.0
-+/*
-+ * BCM63268 Timer Clock and Reset Controller Driver
-+ *
-+ * Copyright (C) 2023 ?lvaro Fern?ndez Rojas <noltari at gmail.com>
-+ */
-+
-+#include <linux/clk-provider.h>
-+#include <linux/delay.h>
-+#include <linux/io.h>
-+#include <linux/of.h>
-+#include <linux/of_device.h>
-+#include <linux/platform_device.h>
-+#include <linux/reset-controller.h>
-+
-+#include <dt-bindings/clock/bcm63268-clock.h>
-+
-+#define BCM63268_TIMER_RESET_SLEEP_MIN_US	10000
-+#define BCM63268_TIMER_RESET_SLEEP_MAX_US	20000
-+
-+struct bcm63268_tclkrst_hw {
-+	void __iomem *regs;
-+	spinlock_t lock;
-+
-+	struct reset_controller_dev rcdev;
-+	struct clk_hw_onecell_data data;
-+};
-+
-+struct bcm63268_tclk_table_entry {
-+	const char * const name;
-+	u8 bit;
-+};
-+
-+static const struct bcm63268_tclk_table_entry bcm63268_timer_clocks[] = {
-+	{
-+		.name = "ephy1",
-+		.bit = BCM63268_TCLK_EPHY1,
-+	}, {
-+		.name = "ephy2",
-+		.bit = BCM63268_TCLK_EPHY2,
-+	}, {
-+		.name = "ephy3",
-+		.bit = BCM63268_TCLK_EPHY3,
-+	}, {
-+		.name = "gphy1",
-+		.bit = BCM63268_TCLK_GPHY1,
-+	}, {
-+		.name = "dsl",
-+		.bit = BCM63268_TCLK_DSL,
-+	}, {
-+		.name = "wakeon_ephy",
-+		.bit = BCM63268_TCLK_WAKEON_EPHY,
-+	}, {
-+		.name = "wakeon_dsl",
-+		.bit = BCM63268_TCLK_WAKEON_DSL,
-+	}, {
-+		.name = "fap1_pll",
-+		.bit = BCM63268_TCLK_FAP1,
-+	}, {
-+		.name = "fap2_pll",
-+		.bit = BCM63268_TCLK_FAP2,
-+	}, {
-+		.name = "uto_50",
-+		.bit = BCM63268_TCLK_UTO_50,
-+	}, {
-+		.name = "uto_extin",
-+		.bit = BCM63268_TCLK_UTO_EXTIN,
-+	}, {
-+		.name = "usb_ref",
-+		.bit = BCM63268_TCLK_USB_REF,
-+	}, {
-+		/* sentinel */
-+	}
-+};
-+
-+static inline struct bcm63268_tclkrst_hw *
-+to_bcm63268_timer_reset(struct reset_controller_dev *rcdev)
-+{
-+	return container_of(rcdev, struct bcm63268_tclkrst_hw, rcdev);
-+}
-+
-+static int bcm63268_timer_reset_update(struct reset_controller_dev *rcdev,
-+				unsigned long id, bool assert)
-+{
-+	struct bcm63268_tclkrst_hw *reset = to_bcm63268_timer_reset(rcdev);
-+	unsigned long flags;
-+	uint32_t val;
-+
-+	spin_lock_irqsave(&reset->lock, flags);
-+	val = __raw_readl(reset->regs);
-+	if (assert)
-+		val &= ~BIT(id);
-+	else
-+		val |= BIT(id);
-+	__raw_writel(val, reset->regs);
-+	spin_unlock_irqrestore(&reset->lock, flags);
-+
-+	return 0;
-+}
-+
-+static int bcm63268_timer_reset_assert(struct reset_controller_dev *rcdev,
-+				unsigned long id)
-+{
-+	return bcm63268_timer_reset_update(rcdev, id, true);
-+}
-+
-+static int bcm63268_timer_reset_deassert(struct reset_controller_dev *rcdev,
-+				  unsigned long id)
-+{
-+	return bcm63268_timer_reset_update(rcdev, id, false);
-+}
-+
-+static int bcm63268_timer_reset_reset(struct reset_controller_dev *rcdev,
-+			       unsigned long id)
-+{
-+	bcm63268_timer_reset_update(rcdev, id, true);
-+	usleep_range(BCM63268_TIMER_RESET_SLEEP_MIN_US,
-+		     BCM63268_TIMER_RESET_SLEEP_MAX_US);
-+
-+	bcm63268_timer_reset_update(rcdev, id, false);
-+	/*
-+	 * Ensure component is taken out reset state by sleeping also after
-+	 * deasserting the reset. Otherwise, the component may not be ready
-+	 * for operation.
-+	 */
-+	usleep_range(BCM63268_TIMER_RESET_SLEEP_MIN_US,
-+		     BCM63268_TIMER_RESET_SLEEP_MAX_US);
-+
-+	return 0;
-+}
-+
-+static int bcm63268_timer_reset_status(struct reset_controller_dev *rcdev,
-+				unsigned long id)
-+{
-+	struct bcm63268_tclkrst_hw *reset = to_bcm63268_timer_reset(rcdev);
-+
-+	return !(__raw_readl(reset->regs) & BIT(id));
-+}
-+
-+static struct reset_control_ops bcm63268_timer_reset_ops = {
-+	.assert = bcm63268_timer_reset_assert,
-+	.deassert = bcm63268_timer_reset_deassert,
-+	.reset = bcm63268_timer_reset_reset,
-+	.status = bcm63268_timer_reset_status,
-+};
-+
-+static int bcm63268_tclk_probe(struct platform_device *pdev)
-+{
-+	struct device *dev = &pdev->dev;
-+	const struct bcm63268_tclk_table_entry *entry;
-+	struct bcm63268_tclkrst_hw *hw;
-+	struct clk_hw *clk;
-+	u8 maxbit = 0;
-+	int i, ret;
-+
-+	for (entry = bcm63268_timer_clocks; entry->name; entry++)
-+		maxbit = max(maxbit, entry->bit);
-+	maxbit++;
-+
-+	hw = devm_kzalloc(&pdev->dev, struct_size(hw, data.hws, maxbit),
-+			  GFP_KERNEL);
-+	if (!hw)
-+		return -ENOMEM;
-+
-+	platform_set_drvdata(pdev, hw);
-+
-+	spin_lock_init(&hw->lock);
-+
-+	hw->data.num = maxbit;
-+	for (i = 0; i < maxbit; i++)
-+		hw->data.hws[i] = ERR_PTR(-ENODEV);
-+
-+	hw->regs = devm_platform_ioremap_resource(pdev, 0);
-+	if (IS_ERR(hw->regs))
-+		return PTR_ERR(hw->regs);
-+
-+	for (entry = bcm63268_timer_clocks; entry->name; entry++) {
-+		clk = devm_clk_hw_register_gate(dev, entry->name, NULL, 0,
-+						hw->regs, entry->bit,
-+						CLK_GATE_BIG_ENDIAN,
-+						&hw->lock);
-+		if (IS_ERR(clk))
-+			return PTR_ERR(clk);
-+
-+		hw->data.hws[entry->bit] = clk;
-+	}
-+
-+	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
-+					  &hw->data);
-+	if (ret)
-+		return ret;
-+
-+	hw->rcdev.of_node = dev->of_node;
-+	hw->rcdev.ops = &bcm63268_timer_reset_ops;
-+
-+	ret = devm_reset_controller_register(dev, &hw->rcdev);
-+	if (ret)
-+		dev_err(dev, "Failed to register reset controller\n");
-+
-+	return 0;
-+}
-+
-+static const struct of_device_id bcm63268_tclk_dt_ids[] = {
-+	{ .compatible = "brcm,bcm63268-timer-clocks" },
-+	{ /* sentinel */ }
-+};
-+
-+static struct platform_driver bcm63268_tclk = {
-+	.probe = bcm63268_tclk_probe,
-+	.driver = {
-+		.name = "bcm63268-timer-clock",
-+		.of_match_table = bcm63268_tclk_dt_ids,
-+	},
-+};
-+builtin_platform_driver(bcm63268_tclk);
diff --git a/target/linux/generic/pending-6.6/860-serial-8250_mtk-track-busclk-state-to-avoid-bus-error.patch b/target/linux/generic/pending-6.6/860-serial-8250_mtk-track-busclk-state-to-avoid-bus-error.patch
deleted file mode 100644
index c5db5d9491..0000000000
--- a/target/linux/generic/pending-6.6/860-serial-8250_mtk-track-busclk-state-to-avoid-bus-error.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 629c701fc39f1ada9416e0766a86729e83bde86c Mon Sep 17 00:00:00 2001
-Message-ID: <629c701fc39f1ada9416e0766a86729e83bde86c.1694465766.git.daniel at makrotopia.org>
-From: Daniel Golle <daniel at makrotopia.org>
-Date: Mon, 11 Sep 2023 21:27:44 +0100
-Subject: [PATCH] serial: 8250_mtk: track busclk state to avoid bus error
-To: Greg Kroah-Hartman <gregkh at linuxfoundation.org>,
-    Jiri Slaby <jirislaby at kernel.org>,
-    Matthias Brugger <matthias.bgg at gmail.com>,
-    AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>,
-    Daniel Golle <daniel at makrotopia.org>,
-    John Ogness <john.ogness at linutronix.de>,
-    Chen-Yu Tsai <wenst at chromium.org>,
-    Changqi Hu <changqi.hu at mediatek.com>,
-    linux-kernel at vger.kernel.org,
-    linux-serial at vger.kernel.org,
-    linux-arm-kernel at lists.infradead.org,
-    linux-mediatek at lists.infradead.org
-
-Commit e32a83c70cf9 ("serial: 8250-mtk: modify mtk uart power and
-clock management") introduced polling a debug register to make sure
-the UART is idle before disabling the bus clock. However, at least on
-some MediaTek SoCs access to that very debug register requires the bus
-clock being enabled. Hence calling the suspend function while already
-in suspended state results in that register access triggering a bus
-error. In order to avoid that, track the state of the bus clock and
-only poll the debug register if not already in suspended state.
-
-Fixes: e32a83c70cf9 ("serial: 8250-mtk: modify mtk uart power and clock management")
-Signed-off-by: Daniel Golle <daniel at makrotopia.org>
----
- drivers/tty/serial/8250/8250_mtk.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
---- a/drivers/tty/serial/8250/8250_mtk.c
-+++ b/drivers/tty/serial/8250/8250_mtk.c
-@@ -32,7 +32,7 @@
- #define MTK_UART_RXTRI_AD	0x14	/* RX Trigger address */
- #define MTK_UART_FRACDIV_L	0x15	/* Fractional divider LSB address */
- #define MTK_UART_FRACDIV_M	0x16	/* Fractional divider MSB address */
--#define MTK_UART_DEBUG0	0x18
-+#define MTK_UART_DEBUG0		0x18
- #define MTK_UART_IER_XOFFI	0x20	/* Enable XOFF character interrupt */
- #define MTK_UART_IER_RTSI	0x40	/* Enable RTS Modem status interrupt */
- #define MTK_UART_IER_CTSI	0x80	/* Enable CTS Modem status interrupt */
-@@ -418,13 +418,12 @@ static int __maybe_unused mtk8250_runtim
- 	struct mtk8250_data *data = dev_get_drvdata(dev);
- 	struct uart_8250_port *up = serial8250_get_port(data->line);
- 
--	/* wait until UART in idle status */
--	while
--		(serial_in(up, MTK_UART_DEBUG0));
--
- 	if (data->clk_count == 0U) {
- 		dev_dbg(dev, "%s clock count is 0\n", __func__);
- 	} else {
-+		/* wait until UART in idle status */
-+		while
-+			(serial_in(up, MTK_UART_DEBUG0));
- 		clk_disable_unprepare(data->bus_clk);
- 		data->clk_count--;
- 	}



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:44 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:44 -0400
Subject: [openwrt/openwrt]  generic: 6.6: manually refresh hack patches
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15326.1710184683.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d9bc5c93de1412ee13acc61e3aa0a52327b44e5e

commit d9bc5c93de1412ee13acc61e3aa0a52327b44e5e
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Thu Jan 4 02:02:53 2024 +0800

    generic: 6.6: manually refresh hack patches
    
    Refresh hack patches for kernel 6.6.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 .../linux/generic/hack-6.6/204-module_strip.patch  |  24 ++---
 .../hack-6.6/211-darwin-uuid-typedef-clash.patch   |   6 +-
 .../generic/hack-6.6/212-tools_portability.patch   |  34 +++----
 .../generic/hack-6.6/220-arm-gc_sections.patch     |   2 +-
 .../generic/hack-6.6/221-module_exports.patch      |  58 ++++-------
 target/linux/generic/hack-6.6/251-kconfig.patch    |   6 +-
 .../generic/hack-6.6/259-regmap_dynamic.patch      |  44 +++++---
 .../hack-6.6/260-crypto_test_dependencies.patch    |  36 +++----
 .../generic/hack-6.6/261-lib-arc4-unhide.patch     |   6 +-
 ...mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch |   4 +-
 .../hack-6.6/721-net-add-packet-mangeling.patch    |   6 +-
 ...net-phy-aquantia-enable-AQR112-and-AQR412.patch |  71 ++++---------
 ...-aquantia-add-PHY_IDs-for-AQR112-variants.patch |  14 +--
 ...-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch |  33 ++++--
 ...t-usb-r8152-add-LED-configuration-from-OF.patch |   2 +-
 .../765-mxl-gpy-control-LED-reg-from-DT.patch      |  10 +-
 .../hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch    |   4 +-
 .../hack-6.6/800-GPIO-add-named-gpio-exports.patch | 112 +++++++++------------
 .../generic/hack-6.6/901-debloat_sock_diag.patch   |  53 +++++-----
 19 files changed, 243 insertions(+), 282 deletions(-)

diff --git a/target/linux/generic/hack-6.6/204-module_strip.patch b/target/linux/generic/hack-6.6/204-module_strip.patch
index 9fefd0bd6e..6ff9d6a13b 100644
--- a/target/linux/generic/hack-6.6/204-module_strip.patch
+++ b/target/linux/generic/hack-6.6/204-module_strip.patch
@@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  endif # MODULES
 --- a/kernel/module/main.c
 +++ b/kernel/module/main.c
-@@ -988,6 +988,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
+@@ -997,6 +997,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
  
  static const char vermagic[] = VERMAGIC_STRING;
  
@@ -110,15 +110,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  int try_to_force_load(struct module *mod, const char *reason)
  {
  #ifdef CONFIG_MODULE_FORCE_LOAD
-@@ -999,6 +1000,7 @@ int try_to_force_load(struct module *mod
+@@ -1008,6 +1009,7 @@ int try_to_force_load(struct module *mod
  	return -ENOEXEC;
  #endif
  }
 +#endif
  
- static char *get_modinfo(const struct load_info *info, const char *tag);
- static char *get_next_modinfo(const struct load_info *info, const char *tag,
-@@ -1958,9 +1960,11 @@ static int setup_load_info(struct load_i
+ /* Parse tag=value strings from .modinfo section */
+ char *module_next_tag_pair(char *string, unsigned long *secsize)
+@@ -2075,9 +2077,11 @@ static void module_augment_kernel_taints
  
  static int check_modinfo(struct module *mod, struct load_info *info, int flags)
  {
@@ -131,14 +131,14 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (flags & MODULE_INIT_IGNORE_VERMAGIC)
  		modmagic = NULL;
  
-@@ -1981,6 +1985,7 @@ static int check_modinfo(struct module *
- 				mod->name);
- 		add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
+@@ -2091,6 +2095,7 @@ static int check_modinfo(struct module *
+ 		       info->name, modmagic, vermagic);
+ 		return -ENOEXEC;
  	}
 +#endif
  
- 	check_modinfo_retpoline(mod, info);
- 
+ 	err = check_modinfo_livepatch(mod, info);
+ 	if (err)
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
 @@ -1785,7 +1785,9 @@ static void read_symbols(const char *mod
@@ -150,8 +150,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +#endif
  	}
  
- 	for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {
-@@ -1948,8 +1950,10 @@ static void add_header(struct buffer *b,
+ 	check_sec_ref(mod, &info);
+@@ -1944,8 +1946,10 @@ static void add_header(struct buffer *b,
  	buf_printf(b, "BUILD_SALT;\n");
  	buf_printf(b, "BUILD_LTO_INFO;\n");
  	buf_printf(b, "\n");
diff --git a/target/linux/generic/hack-6.6/211-darwin-uuid-typedef-clash.patch b/target/linux/generic/hack-6.6/211-darwin-uuid-typedef-clash.patch
index 50a6227148..9a1905a138 100644
--- a/target/linux/generic/hack-6.6/211-darwin-uuid-typedef-clash.patch
+++ b/target/linux/generic/hack-6.6/211-darwin-uuid-typedef-clash.patch
@@ -11,12 +11,12 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
 --- a/scripts/mod/file2alias.c
 +++ b/scripts/mod/file2alias.c
 @@ -38,6 +38,9 @@ typedef struct {
- 	__u8 b[16];
- } guid_t;
+ typedef uint16_t	__u16;
+ typedef unsigned char	__u8;
  
 +#ifdef __APPLE__
 +#define uuid_t compat_uuid_t
 +#endif
- /* backwards compatibility, don't use in new code */
+ /* UUID types for backward compatibility, don't use in new code */
  typedef struct {
  	__u8 b[16];
diff --git a/target/linux/generic/hack-6.6/212-tools_portability.patch b/target/linux/generic/hack-6.6/212-tools_portability.patch
index add281991e..4671e75128 100644
--- a/target/linux/generic/hack-6.6/212-tools_portability.patch
+++ b/target/linux/generic/hack-6.6/212-tools_portability.patch
@@ -74,8 +74,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  struct page;
  struct kmem_cache;
 @@ -51,7 +55,9 @@ typedef __s8  s8;
- #define __force
  #define __user
+ #endif
  #define __must_check
 +#ifndef __cold
  #define __cold
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 --- a/tools/arch/x86/include/asm/orc_types.h
 +++ b/tools/arch/x86/include/asm/orc_types.h
 @@ -40,7 +40,6 @@
- #define ORC_REG_MAX			15
+ #define ORC_TYPE_REGS_PARTIAL		4
  
  #ifndef __ASSEMBLY__
 -#include <asm/byteorder.h>
@@ -123,13 +123,13 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +#if __BYTE_ORDER == __LITTLE_ENDIAN
  	unsigned	sp_reg:4;
  	unsigned	bp_reg:4;
- 	unsigned	type:2;
- 	unsigned	end:1;
+ 	unsigned	type:3;
+ 	unsigned	signal:1;
 -#elif defined(__BIG_ENDIAN_BITFIELD)
 +#elif __BYTE_ORDER == __BIG_ENDIAN
  	unsigned	bp_reg:4;
  	unsigned	sp_reg:4;
- 	unsigned	unused:5;
+ 	unsigned	unused:4;
 --- a/tools/arch/x86/lib/insn.c
 +++ b/tools/arch/x86/lib/insn.c
 @@ -15,7 +15,11 @@
@@ -199,15 +199,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	unsigned long  __rb_parent_color;
 --- a/tools/objtool/Makefile
 +++ b/tools/objtool/Makefile
-@@ -4,7 +4,7 @@ include ../scripts/Makefile.arch
+@@ -40,7 +40,7 @@ include ../scripts/Makefile.arch
+ OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED)
  
- # always use the host compiler
- AR	 = $(HOSTAR)
--CC	 = $(HOSTCC)
-+CC	 = $(HOSTCC) $(HOST_EXTRACFLAGS)
- LD	 = $(HOSTLD)
+ # Always want host compilation.
+-HOST_OVERRIDES := CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)"
++HOST_OVERRIDES := CC="$(HOSTCC) $(HOST_EXTRACFLAGS)" LD="$(HOSTLD)" AR="$(HOSTAR)"
  
- ifeq ($(srctree),)
+ AWK = awk
+ MKDIR = mkdir
 @@ -43,6 +43,7 @@ BUILD_ORC := n
  
  ifeq ($(SRCARCH),x86)
@@ -252,8 +252,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
 +#endif
  
- #define NEGATIVE_RELOC	((void *)-1L)
- 
+ static struct reloc *insn_reloc(struct objtool_file *file, struct instruction *insn)
+ {
 --- a/tools/objtool/include/objtool/objtool.h
 +++ b/tools/objtool/include/objtool/objtool.h
 @@ -12,7 +12,9 @@
@@ -268,10 +268,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	bool clean;
 --- a/tools/objtool/orc_dump.c
 +++ b/tools/objtool/orc_dump.c
-@@ -5,10 +5,10 @@
+@@ -4,10 +4,10 @@
+  */
  
  #include <unistd.h>
- #include <linux/objtool.h>
 -#include <asm/orc_types.h>
  #include <objtool/objtool.h>
  #include <objtool/warn.h>
@@ -285,7 +285,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 @@ -7,11 +7,11 @@
  #include <string.h>
  
- #include <linux/objtool.h>
+ #include <linux/objtool_types.h>
 -#include <asm/orc_types.h>
  
  #include <objtool/check.h>
diff --git a/target/linux/generic/hack-6.6/220-arm-gc_sections.patch b/target/linux/generic/hack-6.6/220-arm-gc_sections.patch
index a6a6c7cf2c..257796aee9 100644
--- a/target/linux/generic/hack-6.6/220-arm-gc_sections.patch
+++ b/target/linux/generic/hack-6.6/220-arm-gc_sections.patch
@@ -13,7 +13,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 --- a/arch/arm/Kconfig
 +++ b/arch/arm/Kconfig
 @@ -124,6 +124,7 @@ config ARM
- 	select HAVE_VIRT_CPU_ACCOUNTING_GEN
+ 	select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
  	select IRQ_FORCED_THREADING
  	select LOCK_MM_AND_FIND_VMA
 +	select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
diff --git a/target/linux/generic/hack-6.6/221-module_exports.patch b/target/linux/generic/hack-6.6/221-module_exports.patch
index 967510bcb6..5af4eba372 100644
--- a/target/linux/generic/hack-6.6/221-module_exports.patch
+++ b/target/linux/generic/hack-6.6/221-module_exports.patch
@@ -27,8 +27,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +#define SYMTAB_DISCARD_GPL
 +#endif
 +
- /* Align . to a 8 byte boundary equals to maximum function alignment. */
- #define ALIGN_FUNCTION()  . = ALIGN(8)
+ /* Align . function alignment. */
+ #define ALIGN_FUNCTION()  . = ALIGN(CONFIG_FUNCTION_ALIGNMENT)
  
 @@ -511,14 +521,14 @@
  	/* Kernel symbol table: Normal symbols */			\
@@ -64,12 +64,12 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	SYMTAB_DISCARD_GPL						\
  	*(.discard)							\
  	*(.discard.*)							\
- 	*(.modinfo)							\
---- a/include/linux/export.h
-+++ b/include/linux/export.h
-@@ -72,6 +72,12 @@ struct kernel_symbol {
- 
- #else
+ 	*(.export_symbol)						\
+--- a/include/linux/export-internal.h
++++ b/include/linux/export-internal.h
+@@ -23,6 +23,12 @@
+ #define __KSYM_REF(sym)		".long " #sym
+ #endif
  
 +#ifdef MODULE
 +#define __EXPORT_SUFFIX(sym)
@@ -80,39 +80,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /*
   * For every exported symbol, do the following:
   *
-@@ -87,7 +93,7 @@ struct kernel_symbol {
- 	extern typeof(sym) sym;							\
- 	extern const char __kstrtab_##sym[];					\
- 	extern const char __kstrtabns_##sym[];					\
--	asm("	.section \"__ksymtab_strings\",\"aMS\",%progbits,1	\n"	\
-+	asm("	.section \"__ksymtab_strings" __EXPORT_SUFFIX(sym) "\",\"aMS\",%progbits,1	\n"	\
- 	    "__kstrtab_" #sym ":					\n"	\
- 	    "	.asciz 	\"" #sym "\"					\n"	\
- 	    "__kstrtabns_" #sym ":					\n"	\
---- a/include/asm-generic/export.h
-+++ b/include/asm-generic/export.h
-@@ -31,6 +31,12 @@
- #endif
- .endm
- 
-+#ifdef MODULE
-+#define __EXPORT_SUFFIX(name)
-+#else
-+#define __EXPORT_SUFFIX(name) + #name
-+#endif
-+
- /*
-  * note on .section use: we specify progbits since usage of the "M" (SHF_MERGE)
-  * section flag requires it. Use '%progbits' instead of '@progbits' since the
-@@ -44,7 +50,7 @@
- __ksymtab_\name:
- 	__put \val, __kstrtab_\name
- 	.previous
--	.section __ksymtab_strings,"aMS",%progbits,1
-+	.section __ksymtab_strings __EXPORT_SUFFIX(name),"aMS",%progbits,1
- __kstrtab_\name:
- 	.asciz "\name"
- 	.previous
+@@ -35,7 +41,7 @@
+  * former apparently works on all arches according to the binutils source.
+  */
+ #define __KSYMTAB(name, sym, sec, ns)						\
+-	asm("	.section \"__ksymtab_strings\",\"aMS\",%progbits,1"	"\n"	\
++	asm("	.section \"__ksymtab_strings" __EXPORT_SUFFIX(sym) "\",\"aMS\",%progbits,1"	"\n"	\
+ 	    "__kstrtab_" #name ":"					"\n"	\
+ 	    "	.asciz \"" #name "\""					"\n"	\
+ 	    "__kstrtabns_" #name ":"					"\n"	\
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
 @@ -388,7 +388,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa
diff --git a/target/linux/generic/hack-6.6/251-kconfig.patch b/target/linux/generic/hack-6.6/251-kconfig.patch
index fcf4eaf6e8..0cdbe948a1 100644
--- a/target/linux/generic/hack-6.6/251-kconfig.patch
+++ b/target/linux/generic/hack-6.6/251-kconfig.patch
@@ -35,7 +35,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	select CRYPTO_ALGAPI
  
 @@ -75,7 +75,7 @@ config CRYPTO_AEAD2
- 	select CRYPTO_RNG2
+ 	select CRYPTO_ALGAPI2
  
  config CRYPTO_SKCIPHER
 -	tristate
@@ -44,7 +44,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	select CRYPTO_ALGAPI
  
 @@ -85,7 +85,7 @@ config CRYPTO_SKCIPHER2
- 	select CRYPTO_RNG2
+ 	select CRYPTO_ALGAPI2
  
  config CRYPTO_HASH
 -	tristate
@@ -136,7 +136,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  config SND_SEQ_DEVICE
  	tristate
 @@ -27,7 +27,7 @@ config SND_RAWMIDI
- 	select SND_SEQ_DEVICE if SND_SEQUENCER != n
+ 	  The device contains 16 substreams corresponding to UMP groups.
  
  config SND_COMPRESS_OFFLOAD
 -	tristate
diff --git a/target/linux/generic/hack-6.6/259-regmap_dynamic.patch b/target/linux/generic/hack-6.6/259-regmap_dynamic.patch
index 8d25f59ce2..c62e0a6242 100644
--- a/target/linux/generic/hack-6.6/259-regmap_dynamic.patch
+++ b/target/linux/generic/hack-6.6/259-regmap_dynamic.patch
@@ -14,20 +14,27 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/base/regmap/Kconfig
 +++ b/drivers/base/regmap/Kconfig
-@@ -4,10 +4,9 @@
+@@ -4,8 +4,7 @@
  # subsystems should select the appropriate symbols.
  
  config REGMAP
--	default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SOUNDWIRE_MBQ || REGMAP_SCCB || REGMAP_I3C || REGMAP_SPI_AVMM || REGMAP_MDIO)
- 	select IRQ_DOMAIN if REGMAP_IRQ
- 	select MDIO_BUS if REGMAP_MDIO
 -	bool
+-	default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SOUNDWIRE_MBQ || REGMAP_SCCB || REGMAP_I3C || REGMAP_SPI_AVMM || REGMAP_MDIO || REGMAP_FSI)
 +	tristate
+ 	select IRQ_DOMAIN if REGMAP_IRQ
+ 	select MDIO_BUS if REGMAP_MDIO
+ 	help
+@@ -19,7 +18,7 @@ config REGMAP
  
- config REGCACHE_COMPRESSED
- 	select LZO_COMPRESS
-@@ -15,53 +14,67 @@ config REGCACHE_COMPRESSED
- 	bool
+ config REGMAP_KUNIT
+ 	tristate "KUnit tests for regmap"
+-	depends on KUNIT && REGMAP
++	depends on KUNIT
+ 	default KUNIT_ALL_TESTS
+ 	select REGMAP_RAM
+ 
+@@ -34,60 +33,76 @@ config REGMAP_BUILD
+ 	  normally enabled.
  
  config REGMAP_AC97
 +	select REGMAP
@@ -70,6 +77,10 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	select REGMAP
  	bool
  
+ config REGMAP_RAM
++	select REGMAP
+ 	tristate
+ 
  config REGMAP_SOUNDWIRE
 +	select REGMAP
  	tristate
@@ -94,27 +105,28 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	select REGMAP
  	tristate
  	depends on SPI
+ 
+ config REGMAP_FSI
++	select REGMAP
+ 	tristate
+ 	depends on FSI
 --- a/drivers/base/regmap/Makefile
 +++ b/drivers/base/regmap/Makefile
-@@ -2,10 +2,14 @@
+@@ -2,9 +2,11 @@
  # For include/trace/define_trace.h to include trace.h
  CFLAGS_regmap.o := -I$(src)
  
 -obj-$(CONFIG_REGMAP) += regmap.o regcache.o
--obj-$(CONFIG_REGMAP) += regcache-rbtree.o regcache-flat.o
--obj-$(CONFIG_REGCACHE_COMPRESSED) += regcache-lzo.o
+-obj-$(CONFIG_REGMAP) += regcache-rbtree.o regcache-flat.o regcache-maple.o
 -obj-$(CONFIG_DEBUG_FS) += regmap-debugfs.o
-+regmap-core-objs = regmap.o regcache.o regcache-rbtree.o regcache-flat.o
++regmap-core-objs = regmap.o regcache.o regcache-rbtree.o regcache-flat.o regcache-maple.o
 +ifdef CONFIG_DEBUG_FS
 +regmap-core-objs += regmap-debugfs.o
 +endif
-+ifdef CONFIG_REGCACHE_COMPRESSED
-+regmap-core-objs += regcache-lzo.o
-+endif
 +obj-$(CONFIG_REGMAP) += regmap-core.o
+ obj-$(CONFIG_REGMAP_KUNIT) += regmap-kunit.o
  obj-$(CONFIG_REGMAP_AC97) += regmap-ac97.o
  obj-$(CONFIG_REGMAP_I2C) += regmap-i2c.o
- obj-$(CONFIG_REGMAP_SLIMBUS) += regmap-slimbus.o
 --- a/drivers/base/regmap/regmap.c
 +++ b/drivers/base/regmap/regmap.c
 @@ -9,6 +9,7 @@
diff --git a/target/linux/generic/hack-6.6/260-crypto_test_dependencies.patch b/target/linux/generic/hack-6.6/260-crypto_test_dependencies.patch
index 7ea517496e..6221d0f868 100644
--- a/target/linux/generic/hack-6.6/260-crypto_test_dependencies.patch
+++ b/target/linux/generic/hack-6.6/260-crypto_test_dependencies.patch
@@ -14,39 +14,41 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/crypto/Kconfig
 +++ b/crypto/Kconfig
-@@ -142,13 +142,13 @@ config CRYPTO_MANAGER
+@@ -148,15 +148,15 @@ config CRYPTO_MANAGER
  	  cbc(aes).
  
  config CRYPTO_MANAGER2
 -	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
+-	select CRYPTO_ACOMP2
 -	select CRYPTO_AEAD2
--	select CRYPTO_HASH2
--	select CRYPTO_SKCIPHER2
 -	select CRYPTO_AKCIPHER2
+-	select CRYPTO_SIG2
+-	select CRYPTO_HASH2
 -	select CRYPTO_KPP2
--	select CRYPTO_ACOMP2
+-	select CRYPTO_RNG2
+-	select CRYPTO_SKCIPHER2
 +	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y && !CRYPTO_MANAGER_DISABLE_TESTS)
++	select CRYPTO_ACOMP2 if !CRYPTO_MANAGER_DISABLE_TESTS
 +	select CRYPTO_AEAD2 if !CRYPTO_MANAGER_DISABLE_TESTS
-+	select CRYPTO_HASH2 if !CRYPTO_MANAGER_DISABLE_TESTS
-+	select CRYPTO_SKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
 +	select CRYPTO_AKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
++	select CRYPTO_SIG2 if !CRYPTO_MANAGER_DISABLE_TESTS
++	select CRYPTO_HASH2 if !CRYPTO_MANAGER_DISABLE_TESTS
 +	select CRYPTO_KPP2 if !CRYPTO_MANAGER_DISABLE_TESTS
-+	select CRYPTO_ACOMP2 if !CRYPTO_MANAGER_DISABLE_TESTS
++	select CRYPTO_RNG2 if !CRYPTO_MANAGER_DISABLE_TESTS
++	select CRYPTO_SKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
  
  config CRYPTO_USER
  	tristate "Userspace cryptographic algorithm configuration"
 --- a/crypto/algboss.c
 +++ b/crypto/algboss.c
-@@ -211,8 +211,12 @@ static int cryptomgr_schedule_test(struc
- 	type = alg->cra_flags;
+@@ -204,6 +204,10 @@ static int cryptomgr_schedule_test(struc
+ 	memcpy(param->alg, alg->cra_name, sizeof(param->alg));
+ 	param->type = alg->cra_flags;
  
- 	/* Do not test internal algorithms. */
 +#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
-+	type |= CRYPTO_ALG_TESTED;
-+#else
- 	if (type & CRYPTO_ALG_INTERNAL)
- 		type |= CRYPTO_ALG_TESTED;
++	param->type |= CRYPTO_ALG_TESTED;
 +#endif
- 
- 	param->type = type;
- 
++
+ 	thread = kthread_run(cryptomgr_test, param, "cryptomgr_test");
+ 	if (IS_ERR(thread))
+ 		goto err_free_param;
diff --git a/target/linux/generic/hack-6.6/261-lib-arc4-unhide.patch b/target/linux/generic/hack-6.6/261-lib-arc4-unhide.patch
index 01829b2d51..64b4ca4521 100644
--- a/target/linux/generic/hack-6.6/261-lib-arc4-unhide.patch
+++ b/target/linux/generic/hack-6.6/261-lib-arc4-unhide.patch
@@ -14,11 +14,11 @@ from backports.
 --- a/lib/crypto/Kconfig
 +++ b/lib/crypto/Kconfig
 @@ -9,7 +9,7 @@ config CRYPTO_LIB_AES
- 	tristate
+ 	select CRYPTO_LIB_UTILS
  
  config CRYPTO_LIB_ARC4
 -	tristate
 +	tristate "ARC4 cipher library"
  
- config CRYPTO_ARCH_HAVE_LIB_BLAKE2S
- 	bool
+ config CRYPTO_LIB_GF128MUL
+ 	tristate
diff --git a/target/linux/generic/hack-6.6/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch b/target/linux/generic/hack-6.6/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch
index 7c7e4c814e..726a2a0f18 100644
--- a/target/linux/generic/hack-6.6/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch
+++ b/target/linux/generic/hack-6.6/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch
@@ -16,8 +16,8 @@ Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
  
  	mutex_unlock(&mtd_table_mutex);
  
--	if (of_find_property(mtd_get_of_node(mtd), "linux,rootfs", NULL)) {
-+	if (of_find_property(mtd_get_of_node(mtd), "linux,rootfs", NULL) ||
+-	if (of_property_read_bool(mtd_get_of_node(mtd), "linux,rootfs")) {
++	if (of_property_read_bool(mtd_get_of_node(mtd), "linux,rootfs") ||
 +	    (IS_ENABLED(CONFIG_MTD_ROOTFS_ROOT_DEV) && !strcmp(mtd->name, "rootfs") && ROOT_DEV == 0)) {
  		if (IS_BUILTIN(CONFIG_MTD)) {
  			pr_info("mtd: setting mtd%d (%s) as root device\n", mtd->index, mtd->name);
diff --git a/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch b/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch
index b0be9dfdcb..64465fae2a 100644
--- a/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch
+++ b/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch
@@ -19,11 +19,11 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1730,6 +1730,7 @@ enum netdev_priv_flags {
- 	/* was IFF_LIVE_RENAME_OK */
+@@ -1707,6 +1707,7 @@ enum netdev_priv_flags {
  	IFF_TX_SKB_NO_LINEAR		= BIT_ULL(31),
  	IFF_CHANGE_PROTO_DOWN		= BIT_ULL(32),
-+	IFF_NO_IP_ALIGN			= BIT_ULL(33),
+ 	IFF_SEE_ALL_HWTSTAMP_REQUESTS	= BIT_ULL(33),
++	IFF_NO_IP_ALIGN			= BIT_ULL(34),
  };
  
  #define IFF_802_1Q_VLAN			IFF_802_1Q_VLAN
diff --git a/target/linux/generic/hack-6.6/722-net-phy-aquantia-enable-AQR112-and-AQR412.patch b/target/linux/generic/hack-6.6/722-net-phy-aquantia-enable-AQR112-and-AQR412.patch
index faaa40f9bd..1232c664ed 100644
--- a/target/linux/generic/hack-6.6/722-net-phy-aquantia-enable-AQR112-and-AQR412.patch
+++ b/target/linux/generic/hack-6.6/722-net-phy-aquantia-enable-AQR112-and-AQR412.patch
@@ -15,16 +15,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean at nxp.com>
 
 --- a/drivers/net/phy/aquantia/aquantia_main.c
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -27,6 +27,8 @@
- #define PHY_ID_AQR113	0x31c31c40
- #define PHY_ID_AQR113C	0x31c31c12
- #define PHY_ID_AQR813	0x31c31cb2
-+#define PHY_ID_AQR112	0x03a1b662
-+#define PHY_ID_AQR412	0x03a1b712
- 
- #define MDIO_PHYXS_VEND_IF_STATUS		0xe812
- #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK	GENMASK(7, 3)
-@@ -99,6 +101,29 @@
+@@ -101,6 +101,29 @@
  #define AQR107_OP_IN_PROG_SLEEP		1000
  #define AQR107_OP_IN_PROG_TIMEOUT	100000
  
@@ -54,7 +45,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean at nxp.com>
  struct aqr107_hw_stat {
  	const char *name;
  	int reg;
-@@ -230,6 +255,51 @@ static int aqr_config_aneg(struct phy_de
+@@ -232,6 +255,51 @@ static int aqr_config_aneg(struct phy_de
  	return genphy_c45_check_and_restart_aneg(phydev, changed);
  }
  
@@ -106,43 +97,21 @@ Signed-off-by: Alex Marginean <alexandru.marginean at nxp.com>
  static int aqr_config_intr(struct phy_device *phydev)
  {
  	bool en = phydev->interrupts == PHY_INTERRUPT_ENABLED;
-@@ -860,6 +930,30 @@ static struct phy_driver aqr_driver[] =
- 	.get_stats	= aqr107_get_stats,
- 	.link_change_notify = aqr107_link_change_notify,
- },
-+{
-+	PHY_ID_MATCH_MODEL(PHY_ID_AQR112),
-+	.name		= "Aquantia AQR112",
-+	.probe		= aqr107_probe,
-+	.config_aneg	= aqr_config_aneg_set_prot,
-+	.config_intr	= aqr_config_intr,
-+	.handle_interrupt = aqr_handle_interrupt,
-+	.read_status	= aqr107_read_status,
-+	.get_sset_count	= aqr107_get_sset_count,
-+	.get_strings	= aqr107_get_strings,
-+	.get_stats	= aqr107_get_stats,
-+},
-+{
-+	PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
-+	.name		= "Aquantia AQR412",
-+	.probe		= aqr107_probe,
-+	.config_aneg	= aqr_config_aneg_set_prot,
-+	.config_intr	= aqr_config_intr,
-+	.handle_interrupt = aqr_handle_interrupt,
-+	.read_status	= aqr107_read_status,
-+	.get_sset_count	= aqr107_get_sset_count,
-+	.get_strings	= aqr107_get_strings,
-+	.get_stats	= aqr107_get_stats,
-+},
- };
- 
- module_phy_driver(aqr_driver);
-@@ -877,6 +971,8 @@ static struct mdio_device_id __maybe_unu
- 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113) },
- 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
- 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
-+	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
-+	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
- 	{ }
- };
- 
+@@ -809,7 +877,7 @@ static struct phy_driver aqr_driver[] =
+ 	PHY_ID_MATCH_MODEL(PHY_ID_AQR112),
+ 	.name		= "Aquantia AQR112",
+ 	.probe		= aqr107_probe,
+-	.config_aneg    = aqr_config_aneg,
++	.config_aneg    = aqr_config_aneg_set_prot,
+ 	.config_intr	= aqr_config_intr,
+ 	.handle_interrupt = aqr_handle_interrupt,
+ 	.get_tunable    = aqr107_get_tunable,
+@@ -827,7 +895,7 @@ static struct phy_driver aqr_driver[] =
+ 	PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
+ 	.name		= "Aquantia AQR412",
+ 	.probe		= aqr107_probe,
+-	.config_aneg    = aqr_config_aneg,
++	.config_aneg    = aqr_config_aneg_set_prot,
+ 	.config_intr	= aqr_config_intr,
+ 	.handle_interrupt = aqr_handle_interrupt,
+ 	.get_tunable    = aqr107_get_tunable,
diff --git a/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch b/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
index d83cc48a33..bee48be007 100644
--- a/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
+++ b/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
@@ -13,17 +13,17 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 --- a/drivers/net/phy/aquantia/aquantia_main.c
 +++ b/drivers/net/phy/aquantia/aquantia_main.c
 @@ -29,6 +29,8 @@
+ #define PHY_ID_AQR113	0x31c31c40
+ #define PHY_ID_AQR113C	0x31c31c12
  #define PHY_ID_AQR813	0x31c31cb2
- #define PHY_ID_AQR112	0x03a1b662
- #define PHY_ID_AQR412	0x03a1b712
 +#define PHY_ID_AQR112C	0x03a1b790
 +#define PHY_ID_AQR112R	0x31c31d12
  
  #define MDIO_PHYXS_VEND_IF_STATUS		0xe812
  #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK	GENMASK(7, 3)
-@@ -960,6 +962,30 @@ static struct phy_driver aqr_driver[] =
- 	.get_strings	= aqr107_get_strings,
+@@ -898,6 +900,30 @@ static struct phy_driver aqr_driver[] =
  	.get_stats	= aqr107_get_stats,
+ 	.link_change_notify = aqr107_link_change_notify,
  },
 +{
 +	PHY_ID_MATCH_MODEL(PHY_ID_AQR112C),
@@ -52,10 +52,10 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  };
  
  module_phy_driver(aqr_driver);
-@@ -979,6 +1005,8 @@ static struct mdio_device_id __maybe_unu
+@@ -917,6 +943,8 @@ static struct mdio_device_id __maybe_unu
+ 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113) },
+ 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
- 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
- 	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112C) },
 +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112R) },
  	{ }
diff --git a/target/linux/generic/hack-6.6/750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch b/target/linux/generic/hack-6.6/750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch
index a2bd3a3dbb..b50973f20b 100644
--- a/target/linux/generic/hack-6.6/750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch
+++ b/target/linux/generic/hack-6.6/750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/pcs/pcs-mtk-lynxi.c
 +++ b/drivers/net/pcs/pcs-mtk-lynxi.c
-@@ -114,14 +114,23 @@ static void mtk_pcs_lynxi_get_state(stru
+@@ -92,14 +92,23 @@ static void mtk_pcs_lynxi_get_state(struct
  				    struct phylink_link_state *state)
  {
  	struct mtk_pcs_lynxi *mpcs = pcs_to_mtk_pcs_lynxi(pcs);
@@ -30,24 +30,35 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +		state->an_complete = !!(bmsr & BMSR_ANEGCOMPLETE);
 +		state->speed = SPEED_2500;
 +		state->duplex = DUPLEX_FULL;
++
++		return;
++	}
  
 -	phylink_mii_c22_pcs_decode_state(state, FIELD_GET(SGMII_BMSR, bm),
 -					 FIELD_GET(SGMII_LPA, adv));
-+		return;
-+	}
-+
 +	regmap_read(mpcs->regmap, SGMSYS_PCS_ADVERTISE, &adv);
 +	phylink_mii_c22_pcs_decode_state(state, bmsr, FIELD_GET(SGMII_LPA, adv));
  }
  
  static void mtk_sgmii_reset(struct mtk_pcs_lynxi *mpcs)
-@@ -163,7 +172,8 @@ static int mtk_pcs_lynxi_config(struct p
- 	if (neg_mode & PHYLINK_PCS_NEG_INBAND)
- 		sgm_mode |= SGMII_REMOTE_FAULT_DIS;
+@@ -109,7 +118,7 @@ static int mtk_pcs_lynxi_config(struct p
+ {
+ 	struct mtk_pcs_lynxi *mpcs = pcs_to_mtk_pcs_lynxi(pcs);
+ 	bool mode_changed = false, changed;
+-	unsigned int rgc3, sgm_mode, bmcr;
++	unsigned int rgc3, sgm_mode, bmcr = 0;
+ 	int advertise, link_timer;
  
--	if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED) {
-+	if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED &&
-+	    interface != PHY_INTERFACE_MODE_2500BASEX) {
+ 	advertise = phylink_mii_c22_pcs_encode_advertisement(interface,
+@@ -132,9 +141,8 @@ static int mtk_pcs_lynxi_config(struct p
+ 	if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED) {
  		if (interface == PHY_INTERFACE_MODE_SGMII)
  			sgm_mode |= SGMII_SPEED_DUPLEX_AN;
- 		bmcr = BMCR_ANENABLE;
+-		bmcr = BMCR_ANENABLE;
+-	} else {
+-		bmcr = 0;
++		if (interface != PHY_INTERFACE_MODE_2500BASEX)
++			bmcr = BMCR_ANENABLE;
+ 	}
+ 
+ 	if (mpcs->interface != interface) {
diff --git a/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch b/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch
index 48d4626ed6..9ef11623fc 100644
--- a/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch
+++ b/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch
@@ -36,7 +36,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 +
 +	if (ret)
 +		return ret;
-+	
++
 +	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, led_data);
 +
 +	return 0;
diff --git a/target/linux/generic/hack-6.6/765-mxl-gpy-control-LED-reg-from-DT.patch b/target/linux/generic/hack-6.6/765-mxl-gpy-control-LED-reg-from-DT.patch
index 2724efa15e..dc582bba28 100644
--- a/target/linux/generic/hack-6.6/765-mxl-gpy-control-LED-reg-from-DT.patch
+++ b/target/linux/generic/hack-6.6/765-mxl-gpy-control-LED-reg-from-DT.patch
@@ -30,7 +30,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 +#include <linux/of.h>
  #include <linux/phy.h>
  #include <linux/polynomial.h>
- #include <linux/netdevice.h>
+ #include <linux/property.h>
 @@ -33,6 +34,7 @@
  #define PHY_MIISTAT		0x18	/* MII state */
  #define PHY_IMASK		0x19	/* interrupt mask */
@@ -52,9 +52,9 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 +/* LED */
 +#define VSPEC1_LED(x)		(0x1 + x)
 +
- /* SGMII */
- #define VSPEC1_SGMII_CTRL	0x08
- #define VSPEC1_SGMII_CTRL_ANEN	BIT(12)		/* Aneg enable */
+ #define PHY_PMA_MGBT_POLARITY	0x82
+ #define PHY_MDI_MDI_X_MASK	GENMASK(1, 0)
+ #define PHY_MDI_MDI_X_NORMAL	0x3
 @@ -241,6 +248,35 @@ out:
  	return ret;
  }
@@ -102,4 +102,4 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 +	return gpy_led_write(phydev);
  }
  
- static bool gpy_has_broken_mdint(struct phy_device *phydev)
+ static int gpy_probe(struct phy_device *phydev)
diff --git a/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch b/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch
index bb21bb39d3..8fb8aa84d5 100644
--- a/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch
+++ b/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch
@@ -27,8 +27,8 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 --- a/drivers/net/phy/sfp.c
 +++ b/drivers/net/phy/sfp.c
 @@ -409,6 +409,9 @@ static const struct sfp_quirk sfp_quirks
- 	SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex,
- 		  sfp_fixup_ignore_tx_fault),
+ 	// FS 2.5G Base-T
+ 	SFP_QUIRK_M("FS", "SFP-2.5G-T", sfp_quirk_oem_2_5g),
  
 +	// OEM SFP-GE-T is 1000Base-T module
 +	SFP_QUIRK_F("OEM", "SFP-GE-T", sfp_fixup_ignore_tx_fault),
diff --git a/target/linux/generic/hack-6.6/800-GPIO-add-named-gpio-exports.patch b/target/linux/generic/hack-6.6/800-GPIO-add-named-gpio-exports.patch
index b60b428dc8..59acb9e57b 100644
--- a/target/linux/generic/hack-6.6/800-GPIO-add-named-gpio-exports.patch
+++ b/target/linux/generic/hack-6.6/800-GPIO-add-named-gpio-exports.patch
@@ -6,18 +6,18 @@ Subject: [PATCH 30/36] GPIO: add named gpio exports
 Signed-off-by: John Crispin <blogic at openwrt.org>
 --- a/drivers/gpio/gpiolib-of.c
 +++ b/drivers/gpio/gpiolib-of.c
-@@ -19,6 +19,8 @@
- #include <linux/pinctrl/pinctrl.h>
- #include <linux/slab.h>
+@@ -21,6 +21,8 @@
+ 
+ #include <linux/gpio/consumer.h>
  #include <linux/gpio/machine.h>
 +#include <linux/init.h>
 +#include <linux/platform_device.h>
  
  #include "gpiolib.h"
  #include "gpiolib-of.h"
-@@ -1030,3 +1032,100 @@ void of_gpio_dev_init(struct gpio_chip *
- 	else
- 		gc->of_node = gdev->dev.of_node;
+@@ -1111,3 +1113,74 @@ void of_gpiochip_remove(struct gpio_chip
+ {
+ 	of_node_put(dev_of_node(&chip->gpiodev->dev));
  }
 +
 +#ifdef CONFIG_GPIO_SYSFS
@@ -44,57 +44,31 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
 +		of_property_read_string(cnp, "gpio-export,name", &name);
 +
 +		if (!name)
-+			max_gpio = of_gpio_count(cnp);
++			max_gpio = of_gpio_named_count(cnp, "gpios");
 +
 +		for (i = 0; i < max_gpio; i++) {
 +			struct gpio_desc *desc;
 +			unsigned flags = 0;
 +			enum of_gpio_flags of_flags;
 +
-+			gpio = of_get_gpio_flags(cnp, i, &of_flags);
-+			if (!gpio_is_valid(gpio))
-+				return gpio;
++			desc = of_get_named_gpiod_flags(cnp, "gpios", i, &of_flags);
++			if (IS_ERR(desc))
++				return PTR_ERR(desc);
++			gpio = desc_to_gpio(desc);
 +
 +			if (of_flags & OF_GPIO_ACTIVE_LOW)
 +				flags |= GPIOF_ACTIVE_LOW;
 +
-+			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 {
++			if (!of_property_read_u32(cnp, "gpio-export,output", &val))
++				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);
++			gpio_export_with_name(gpio_to_desc(gpio), dmc, name);
 +			nb++;
 +		}
 +	}
@@ -116,36 +90,24 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
 +module_platform_driver(gpio_export_driver);
 +
 +#endif
---- a/include/asm-generic/gpio.h
-+++ b/include/asm-generic/gpio.h
-@@ -125,6 +125,12 @@ static inline int gpio_export(unsigned g
- 	return gpiod_export(gpio_to_desc(gpio), direction_may_change);
- }
- 
-+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
-+static inline int gpio_export_with_name(unsigned gpio, bool direction_may_change, const char *name)
-+{
-+	return __gpiod_export(gpio_to_desc(gpio), direction_may_change, name);
-+}
-+
- static inline int gpio_export_link(struct device *dev, const char *name,
- 				   unsigned gpio)
- {
 --- a/include/linux/gpio/consumer.h
 +++ b/include/linux/gpio/consumer.h
-@@ -715,6 +715,7 @@ static inline struct gpio_desc *acpi_get
+@@ -644,7 +644,10 @@ static inline struct gpio_desc *acpi_get
  
  #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
  
-+int _gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
++int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
  int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
++int gpio_export_with_name(struct gpio_desc *desc, bool direction_may_change,
++			  const char *name);
  int gpiod_export_link(struct device *dev, const char *name,
  		      struct gpio_desc *desc);
-@@ -722,6 +723,13 @@ void gpiod_unexport(struct gpio_desc *de
+ void gpiod_unexport(struct gpio_desc *desc);
+@@ -653,12 +656,26 @@ void gpiod_unexport(struct gpio_desc *de
  
- #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
+ #include <asm/errno.h>
  
-+static inline int _gpiod_export(struct gpio_desc *desc,
++static inline int __gpiod_export(struct gpio_desc *desc,
 +			       bool direction_may_change,
 +			       const char *name)
 +{
@@ -154,10 +116,23 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
 +
  static inline int gpiod_export(struct gpio_desc *desc,
  			       bool direction_may_change)
+ {
+ 	return -ENOSYS;
+ }
+ 
++static inline int gpio_export_with_name(struct gpio_desc *desc,
++					bool direction_may_change,
++					const char *name)
++{
++	return -ENOSYS;
++}
++
+ static inline int gpiod_export_link(struct device *dev, const char *name,
+ 				    struct gpio_desc *desc)
  {
 --- a/drivers/gpio/gpiolib-sysfs.c
 +++ b/drivers/gpio/gpiolib-sysfs.c
-@@ -547,7 +547,7 @@ static struct class gpio_class = {
+@@ -557,7 +557,7 @@ static struct class gpio_class = {
   *
   * Returns zero on success, else an error.
   */
@@ -166,7 +141,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
  {
  	struct gpio_chip	*chip;
  	struct gpio_device	*gdev;
-@@ -609,6 +609,8 @@ int gpiod_export(struct gpio_desc *desc,
+@@ -619,6 +619,8 @@ int gpiod_export(struct gpio_desc *desc,
  	offset = gpio_chip_hwgpio(desc);
  	if (chip->names && chip->names[offset])
  		ioname = chip->names[offset];
@@ -175,7 +150,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
  
  	dev = device_create_with_groups(&gpio_class, &gdev->dev,
  					MKDEV(0, 0), data, gpio_groups,
-@@ -630,6 +632,12 @@ err_unlock:
+@@ -640,8 +642,21 @@ int gpiod_export(struct gpio_desc *desc,
  	gpiod_dbg(desc, "%s: status %d\n", __func__, status);
  	return status;
  }
@@ -187,4 +162,13 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
 +}
  EXPORT_SYMBOL_GPL(gpiod_export);
  
++int gpio_export_with_name(struct gpio_desc *desc, bool direction_may_change,
++			  const char *name)
++{
++	return __gpiod_export(desc, direction_may_change, name);
++}
++EXPORT_SYMBOL_GPL(gpio_export_with_name);
++
  static int match_export(struct device *dev, const void *desc)
+ {
+ 	struct gpiod_data *data = dev_get_drvdata(dev);
diff --git a/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch b/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch
index ec71f9af4b..92b35efa55 100644
--- a/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch
+++ b/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch
@@ -28,13 +28,14 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	help
 --- a/net/core/Makefile
 +++ b/net/core/Makefile
-@@ -11,11 +11,12 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_core.
+@@ -11,12 +11,13 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_core.
  
  obj-y		     += dev.o dev_addr_lists.o dst.o netevent.o \
  			neighbour.o rtnetlink.o utils.o link_watch.o filter.o \
 -			sock_diag.o dev_ioctl.o tso.o sock_reuseport.o \
-+ 			dev_ioctl.o tso.o sock_reuseport.o \
- 			fib_notifier.o xdp.o flow_offload.o gro.o
++			dev_ioctl.o tso.o sock_reuseport.o \
+ 			fib_notifier.o xdp.o flow_offload.o gro.o \
+ 			netdev-genl.o netdev-genl-gen.o gso.o
  
  obj-$(CONFIG_NETDEV_ADDR_LIST_TEST) += dev_addr_lists_test.o
  
@@ -44,15 +45,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  obj-$(CONFIG_PROC_FS) += net-procfs.o
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -115,6 +115,7 @@
- #include <linux/memcontrol.h>
- #include <linux/prefetch.h>
- #include <linux/compat.h>
+@@ -117,6 +117,7 @@
+ #include <linux/mroute.h>
+ #include <linux/mroute6.h>
+ #include <linux/icmpv6.h>
 +#include <linux/cookie.h>
  
  #include <linux/uaccess.h>
  
-@@ -146,6 +147,7 @@
+@@ -149,6 +150,7 @@
  
  static DEFINE_MUTEX(proto_list_mutex);
  static LIST_HEAD(proto_list);
@@ -60,26 +61,29 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  static void sock_def_write_space_wfree(struct sock *sk);
  static void sock_def_write_space(struct sock *sk);
-@@ -585,6 +587,18 @@ discard_and_relse:
+@@ -588,6 +590,21 @@ int __sk_receive_skb(struct sock *sk, str
  }
  EXPORT_SYMBOL(__sk_receive_skb);
  
 +u64 __sock_gen_cookie(struct sock *sk)
 +{
-+	while (1) {
-+		u64 res = atomic64_read(&sk->sk_cookie);
++	u64 res = atomic64_read(&sk->sk_cookie);
 +
-+		if (res)
-+			return res;
-+		res = gen_cookie_next(&sock_cookie);
-+		atomic64_cmpxchg(&sk->sk_cookie, 0, res);
++	if (!res) {
++		u64 new = gen_cookie_next(&sock_cookie);
++
++		atomic64_cmpxchg(&sk->sk_cookie, res, new);
++
++		/* Another thread might have changed sk_cookie before us. */
++		res = atomic64_read(&sk->sk_cookie);
 +	}
++	return res;
 +}
 +
  INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
  							  u32));
  INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
-@@ -2188,9 +2202,11 @@ static void __sk_free(struct sock *sk)
+@@ -2238,9 +2255,11 @@ static void __sk_free(struct sock *sk)
  	if (likely(sk->sk_net_refcnt))
  		sock_inuse_add(sock_net(sk), -1);
  
@@ -101,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/inet_diag.h>
  #include <linux/sock_diag.h>
  
-@@ -21,20 +20,6 @@ static int (*inet_rcv_compat)(struct sk_
+@@ -21,23 +20,6 @@ static int (*inet_rcv_compat)(struct sk_
  static DEFINE_MUTEX(sock_diag_table_mutex);
  static struct workqueue_struct *broadcast_wq;
  
@@ -109,14 +113,17 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 -
 -u64 __sock_gen_cookie(struct sock *sk)
 -{
--	while (1) {
--		u64 res = atomic64_read(&sk->sk_cookie);
+-	u64 res = atomic64_read(&sk->sk_cookie);
+-
+-	if (!res) {
+-		u64 new = gen_cookie_next(&sock_cookie);
+-
+-		atomic64_cmpxchg(&sk->sk_cookie, res, new);
 -
--		if (res)
--			return res;
--		res = gen_cookie_next(&sock_cookie);
--		atomic64_cmpxchg(&sk->sk_cookie, 0, res);
+-		/* Another thread might have changed sk_cookie before us. */
+-		res = atomic64_read(&sk->sk_cookie);
 -	}
+-	return res;
 -}
 -
  int sock_diag_check_cookie(struct sock *sk, const __u32 *cookie)



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:54 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:54 -0400
Subject: [openwrt/openwrt]  kernel: modules: input: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15332.1710185678.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0c98d99c5e8178ee8e578e67afa7bee7da9e4a14

commit 0c98d99c5e8178ee8e578e67afa7bee7da9e4a14
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sat Jan 6 15:08:41 2024 +0800

    kernel: modules: input: adapt for kernel 6.6
    
    Adapt input kmods for building under kernel 6.6:
    * kmod-input-touchscreen-edt-ft5x06 depends on kmod-regmap-i2c
    from 6.3 as it starts to use regmap to access registers
    * CONFIG_HID_SUPPORT needs to be set in addition to CONFIG_HID.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/linux/modules/input.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/input.mk b/package/kernel/linux/modules/input.mk
index 92587b1874..89fba29005 100644
--- a/package/kernel/linux/modules/input.mk
+++ b/package/kernel/linux/modules/input.mk
@@ -11,7 +11,7 @@ define KernelPackage/hid
   SUBMENU:=$(INPUT_MODULES_MENU)
   TITLE:=HID Devices
   DEPENDS:=+kmod-input-core +kmod-input-evdev
-  KCONFIG:=CONFIG_HID CONFIG_HIDRAW=y CONFIG_HID_BATTERY_STRENGTH=y
+  KCONFIG:=CONFIG_HID CONFIG_HID_SUPPORT=y CONFIG_HIDRAW=y CONFIG_HID_BATTERY_STRENGTH=y
   FILES:=$(LINUX_DIR)/drivers/hid/hid.ko
   AUTOLOAD:=$(call AutoLoad,61,hid)
 endef
@@ -179,7 +179,7 @@ $(eval $(call KernelPackage,input-touchscreen-ads7846))
 define KernelPackage/input-touchscreen-edt-ft5x06
   SUBMENU:=$(INPUT_MODULES_MENU)
   TITLE:=EDT FT5x06 and Focaltech FT6236 based touchscreens
-  DEPENDS:=+kmod-i2c-core +kmod-input-core
+  DEPENDS:=+kmod-i2c-core +kmod-input-core +LINUX_6_6:kmod-regmap-i2c
   KCONFIG:= \
 	CONFIG_INPUT_TOUCHSCREEN=y \
 	CONFIG_TOUCHSCREEN_EDT_FT5X06



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:53 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:53 -0400
Subject: [openwrt/openwrt]  kernel: modules: iio: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15333.1710185681.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/8d83b9ee2dd4e22a1bf08d117c9b508ff5c66709

commit 8d83b9ee2dd4e22a1bf08d117c9b508ff5c66709
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sat Jan 6 13:15:41 2024 +0800

    kernel: modules: iio: adapt for kernel 6.6
    
    Adapt iio kmods for building under kernel 6.6:
    * kmod-iio-lsm6dsx depends on kmod-kmod-industrialio-triggered-buffer
    from 6.2
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/linux/modules/iio.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/iio.mk b/package/kernel/linux/modules/iio.mk
index f901f87ddd..7cf0952db3 100644
--- a/package/kernel/linux/modules/iio.mk
+++ b/package/kernel/linux/modules/iio.mk
@@ -383,7 +383,7 @@ $(eval $(call KernelPackage,iio-st_accel-spi))
 
 
 define KernelPackage/iio-lsm6dsx
-  DEPENDS:=+kmod-iio-kfifo-buf +kmod-regmap-core
+  DEPENDS:=+kmod-iio-kfifo-buf +kmod-regmap-core +LINUX_6_6:kmod-industrialio-triggered-buffer
   TITLE:=ST LSM6DSx driver for IMU MEMS sensors
   KCONFIG:=CONFIG_IIO_ST_LSM6DSX
   FILES:=$(LINUX_DIR)/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.ko



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:50 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:50 -0400
Subject: [openwrt/openwrt]  generic: v6.6: update fitblk driver to work with
 Linux 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15334.1710185684.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d356fb33c311a8f37d676aac5bb554715d1d19d2

commit d356fb33c311a8f37d676aac5bb554715d1d19d2
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 1 00:08:35 2024 +0000

    generic: v6.6: update fitblk driver to work with Linux 6.6
    
    Update fitblk driver which has previously been backported to Linux 6.1
    so it can build and work with Linux 6.6.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...lock-add-uImage.FIT-subimage-block-driver.patch | 37 ++++++++++++++++++----
 1 file changed, 30 insertions(+), 7 deletions(-)

diff --git a/target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch b/target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch
index c565350dc0..117edbcef2 100644
--- a/target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch
+++ b/target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch
@@ -81,7 +81,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  swim_mod-y	:= swim.o swim_asm.o
 --- /dev/null
 +++ b/drivers/block/fitblk.c
-@@ -0,0 +1,636 @@
+@@ -0,0 +1,659 @@
 +// SPDX-License-Identifier: GPL-2.0-only
 +/*
 + * uImage.FIT virtual block device driver.
@@ -199,9 +199,9 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	bool			dead;
 +};
 +
-+static int fitblk_open(struct block_device *bdev, fmode_t mode)
++static int fitblk_open(struct gendisk *disk, fmode_t mode)
 +{
-+	struct fitblk *fitblk = bdev->bd_disk->private_data;
++	struct fitblk *fitblk = disk->private_data;
 +
 +	if (fitblk->dead)
 +		return -ENOENT;
@@ -209,7 +209,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	return 0;
 +}
 +
-+static void fitblk_release(struct gendisk *disk, fmode_t mode)
++static void fitblk_release(struct gendisk *disk)
 +{
 +	return;
 +}
@@ -283,7 +283,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +
 +	if (refcount_dec_if_one(&num_devs)) {
 +		sysfs_remove_link(&pdev->dev.kobj, "lower_dev");
-+		blkdev_put(fitblk->lower_bdev, FMODE_READ | FMODE_EXCL);
++		blkdev_put(fitblk->lower_bdev, &_fitblk_claim_ptr);
 +	}
 +
 +	kfree(fitblk);
@@ -373,6 +373,29 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	return err;
 +}
 +
++static void fitblk_mark_dead(struct block_device *bdev, bool surprise)
++{
++	struct list_head *n, *tmp;
++	struct fitblk *fitblk;
++
++	mutex_lock(&devices_mutex);
++	list_for_each_safe(n, tmp, &fitblk_devices) {
++		fitblk = list_entry(n, struct fitblk, list);
++		if (fitblk->lower_bdev != bdev)
++			continue;
++
++		fitblk->dead = true;
++		list_del(&fitblk->list);
++		/* removal needs to be deferred to avoid deadlock */
++		schedule_work(&fitblk->remove_work);
++	}
++	mutex_unlock(&devices_mutex);
++}
++
++static const struct blk_holder_ops fitblk_hops = {
++	.mark_dead = fitblk_mark_dead,
++};
++
 +static int parse_fit_on_dev(struct device *dev)
 +{
 +	struct block_device *bdev;
@@ -401,7 +424,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	unsigned int slot = 0;
 +
 +	/* Exclusive open the block device to receive holder notifications */
-+	bdev = blkdev_get_by_dev(dev->devt, FMODE_READ | FMODE_EXCL, &_fitblk_claim_ptr);
++	bdev = blkdev_get_by_dev(dev->devt, BLK_OPEN_READ, &_fitblk_claim_ptr, &fitblk_hops);
 +	if (!bdev)
 +		return -ENODEV;
 +
@@ -653,7 +676,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	kfree(fit);
 +out_blkdev:
 +	if (!found || ret)
-+		blkdev_put(bdev, FMODE_READ | FMODE_EXCL);
++		blkdev_put(bdev, &_fitblk_claim_ptr);
 +
 +	return ret;
 +}



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:04 -0400
Subject: [openwrt/openwrt]  kernel: crypto: remove geniv from aead with kernel
 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15335.1710185702.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e12945032149eb3da7f62b516f0a249711ec7275

commit e12945032149eb3da7f62b516f0a249711ec7275
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Mar 7 15:04:59 2024 +0100

    kernel: crypto: remove geniv from aead with kernel 6.6
    
    geniv was separated intentionally from aead in kernel 6.5, and since
    we now have it packaged separately as well remove it from kmod-aead
    in 6.6.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 335930cfaa..36b03bcdef 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -40,10 +40,10 @@ define KernelPackage/crypto-aead
   KCONFIG:= \
 	CONFIG_CRYPTO_AEAD \
 	CONFIG_CRYPTO_AEAD2 \
-	CONFIG_CRYPTO_GENIV
+	CONFIG_CRYPTO_GENIV at lt6.6
   FILES:= \
 	  $(LINUX_DIR)/crypto/aead.ko \
-	  $(LINUX_DIR)/crypto/geniv.ko
+	  $(LINUX_DIR)/crypto/geniv.ko at lt6.6
   AUTOLOAD:=$(call AutoLoad,09,aead,1)
   $(call AddDepends/crypto, +kmod-crypto-null)
 endef



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:48 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:48 -0400
Subject: [openwrt/openwrt]  generic: 6.6: add missing symbols
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15336.1710185709.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7f356a7bd37eacb7446af5e707de9567a7cfd9a3

commit 7f356a7bd37eacb7446af5e707de9567a7cfd9a3
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Jan 5 16:31:24 2024 +0800

    generic: 6.6: add missing symbols
    
    Add missing symbols to config for 6.6.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 target/linux/generic/config-6.6 | 204 ++++++++++++++++++++++++++++++++++++++--
 1 file changed, 196 insertions(+), 8 deletions(-)

diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 34a6503ce0..0d010a7b03 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -32,6 +32,7 @@ CONFIG_64BIT_TIME=y
 # CONFIG_AD2S1210 is not set
 # CONFIG_AD2S90 is not set
 # CONFIG_AD3552R is not set
+# CONFIG_AD4130 is not set
 # CONFIG_AD5064 is not set
 # CONFIG_AD5110 is not set
 # CONFIG_AD525X_DPOT is not set
@@ -68,6 +69,7 @@ CONFIG_64BIT_TIME=y
 # CONFIG_AD7293 is not set
 # CONFIG_AD7298 is not set
 # CONFIG_AD7303 is not set
+# CONFIG_AD74115 is not set
 # CONFIG_AD74413R is not set
 # CONFIG_AD7476 is not set
 # CONFIG_AD7606 is not set
@@ -95,6 +97,7 @@ CONFIG_64BIT_TIME=y
 # CONFIG_ADE7854 is not set
 # CONFIG_ADF4350 is not set
 # CONFIG_ADF4371 is not set
+# CONFIG_ADF4377 is not set
 # CONFIG_ADFS_FS is not set
 # CONFIG_ADIN1100_PHY is not set
 # CONFIG_ADIN1110 is not set
@@ -144,6 +147,7 @@ CONFIG_AEABI=y
 # CONFIG_AF_KCM is not set
 # CONFIG_AF_RXRPC is not set
 # CONFIG_AF_RXRPC_INJECT_LOSS is not set
+# CONFIG_AF_RXRPC_INJECT_RX_DELAY is not set
 # CONFIG_AF_RXRPC_IPV6 is not set
 CONFIG_AF_UNIX_OOB=y
 # CONFIG_AGP is not set
@@ -151,6 +155,7 @@ CONFIG_AF_UNIX_OOB=y
 # CONFIG_AHCI_CEVA is not set
 # CONFIG_AHCI_DWC is not set
 # CONFIG_AHCI_IMX is not set
+# CONFIG_ARCH_MA35 is not set
 # CONFIG_AHCI_MVEBU is not set
 # CONFIG_AHCI_QORIQ is not set
 # CONFIG_AHCI_XGENE is not set
@@ -366,7 +371,10 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARM64_ERRATUM_2077057 is not set
 # CONFIG_ARM64_ERRATUM_2441007 is not set
 # CONFIG_ARM64_ERRATUM_2441009 is not set
+# CONFIG_ARM64_ERRATUM_2645198 is not set
 # CONFIG_ARM64_ERRATUM_2658417 is not set
+# CONFIG_ARM64_ERRATUM_2966298 is not set
+# CONFIG_ARM64_ERRATUM_3117295 is not set
 # CONFIG_ARM64_ERRATUM_819472 is not set
 # CONFIG_ARM64_ERRATUM_824069 is not set
 # CONFIG_ARM64_ERRATUM_826319 is not set
@@ -376,7 +384,6 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
 # CONFIG_ARM64_ERRATUM_843419 is not set
 # CONFIG_ARM64_ERRATUM_845719 is not set
 # CONFIG_ARM64_ERRATUM_858921 is not set
-# CONFIG_ARM64_ERRATUM_2966298 is not set
 # CONFIG_ARM64_HW_AFDBM is not set
 # CONFIG_ARM64_LSE_ATOMICS is not set
 CONFIG_ARM64_MODULE_PLTS=y
@@ -566,6 +573,7 @@ CONFIG_ATM_CLIP_NO_ICMP=y
 # CONFIG_BACKLIGHT_GENERIC is not set
 # CONFIG_BACKLIGHT_GPIO is not set
 # CONFIG_BACKLIGHT_KTD253 is not set
+# CONFIG_BACKLIGHT_KTZ8866 is not set
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 # CONFIG_BACKLIGHT_LED is not set
 # CONFIG_BACKLIGHT_LM3630A is not set
@@ -773,6 +781,7 @@ CONFIG_BPF=y
 CONFIG_BPF_JIT=y
 # CONFIG_BPF_JIT_ALWAYS_ON is not set
 CONFIG_BPF_JIT_DEFAULT_ON=y
+# CONFIG_BPF_LSM is not set
 # CONFIG_BPF_PRELOAD is not set
 # CONFIG_BPF_STREAM_PARSER is not set
 CONFIG_BPF_SYSCALL=y
@@ -832,6 +841,7 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
 # CONFIG_BT_CMTP is not set
 # CONFIG_BT_FEATURE_DEBUG is not set
 # CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBCM4377 is not set
 # CONFIG_BT_HCIBFUSB is not set
 # CONFIG_BT_HCIBLUECARD is not set
 # CONFIG_BT_HCIBPA10X is not set
@@ -840,6 +850,7 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
 # CONFIG_BT_HCIBTUSB is not set
 # CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
 # CONFIG_BT_HCIBTUSB_MTK is not set
+CONFIG_BT_HCIBTUSB_POLL_SYNC=y
 # CONFIG_BT_HCIBTUSB_RTL is not set
 # CONFIG_BT_HCIDTL1 is not set
 # CONFIG_BT_HCIUART is not set
@@ -857,10 +868,12 @@ CONFIG_BT_HCIUART_H4=y
 # CONFIG_BT_HS is not set
 # CONFIG_BT_LE is not set
 # CONFIG_BT_LEDS is not set
+CONFIG_BT_LE_L2CAP_ECRED=y
 # CONFIG_BT_MRVL is not set
 # CONFIG_BT_MSFTEXT is not set
 # CONFIG_BT_MTKSDIO is not set
 # CONFIG_BT_MTKUART is not set
+# CONFIG_BT_NXPUART is not set
 # CONFIG_BT_RFCOMM is not set
 CONFIG_BT_RFCOMM_TTY=y
 # CONFIG_BT_SELFTEST is not set
@@ -873,6 +886,7 @@ CONFIG_BUILDTIME_TABLE_SORT=y
 CONFIG_BUILD_SALT=""
 # CONFIG_C2PORT is not set
 CONFIG_CACHE_L2X0_PMU=y
+# CONFIG_CACHESTAT_SYSCALL is not set
 # CONFIG_CADENCE_WATCHDOG is not set
 # CONFIG_CAIF is not set
 # CONFIG_CAN is not set
@@ -928,6 +942,7 @@ CONFIG_CC_CAN_LINK=y
 CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 # CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_CDX_BUS is not set
 # CONFIG_CEPH_FS is not set
 # CONFIG_CEPH_LIB is not set
 # CONFIG_CFG80211 is not set
@@ -957,7 +972,10 @@ CONFIG_CFG80211_HEADERS=y
 # CONFIG_CHARGER_MAX77976 is not set
 # CONFIG_CHARGER_MAX8903 is not set
 # CONFIG_CHARGER_QCOM_SMBB is not set
+# CONFIG_CHARGER_QCOM_SMB2 is not set
 # CONFIG_CHARGER_RT9455 is not set
+# CONFIG_CHARGER_RT9467 is not set
+# CONFIG_CHARGER_RT9471 is not set
 # CONFIG_CHARGER_SBS is not set
 # CONFIG_CHARGER_SMB347 is not set
 # CONFIG_CHARGER_TWL4030 is not set
@@ -1025,6 +1043,7 @@ CONFIG_CMDLINE=""
 # CONFIG_COMMON_CLK_FIXED_MMIO is not set
 # CONFIG_COMMON_CLK_IPROC is not set
 # CONFIG_COMMON_CLK_MAX9485 is not set
+# CONFIG_COMMON_CLK_MEDIATEK_FHCTL is not set
 # CONFIG_COMMON_CLK_MT6765 is not set
 # CONFIG_COMMON_CLK_MT8167 is not set
 # CONFIG_COMMON_CLK_MT8167_AUDSYS is not set
@@ -1032,6 +1051,7 @@ CONFIG_CMDLINE=""
 # CONFIG_COMMON_CLK_MT8167_MFGCFG is not set
 # CONFIG_COMMON_CLK_MT8167_MMSYS is not set
 # CONFIG_COMMON_CLK_MT8167_VDECSYS is not set
+# CONFIG_COMMON_CLK_MT8188 is not set
 # CONFIG_COMMON_CLK_MT8192 is not set
 # CONFIG_COMMON_CLK_NXP is not set
 # CONFIG_COMMON_CLK_PIC32 is not set
@@ -1043,10 +1063,12 @@ CONFIG_CMDLINE=""
 # CONFIG_COMMON_CLK_RP1_SDIO  is not set
 # CONFIG_COMMON_CLK_RS9_PCIE is not set
 # CONFIG_COMMON_CLK_SI514 is not set
+# CONFIG_COMMON_CLK_SI521XX is not set
 # CONFIG_COMMON_CLK_SI5341 is not set
 # CONFIG_COMMON_CLK_SI5351 is not set
 # CONFIG_COMMON_CLK_SI544 is not set
 # CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_VC3 is not set
 # CONFIG_COMMON_CLK_VC5 is not set
 # CONFIG_COMMON_CLK_VC7 is not set
 # CONFIG_COMMON_CLK_XGENE is not set
@@ -1095,6 +1117,8 @@ CONFIG_CONSTRUCTORS=y
 # CONFIG_CPU_NO_EFFICIENT_FFS is not set
 CONFIG_CPU_SW_DOMAIN_PAN=y
 # CONFIG_CPU_THERMAL is not set
+# CONFIG_CPUFREQ_DT is not set
+# CONFIG_CPUFREQ_DT_PLATDEV is not set
 # CONFIG_CRAMFS is not set
 CONFIG_CRAMFS_BLOCKDEV=y
 # CONFIG_CRAMFS_MTD is not set
@@ -1244,6 +1268,7 @@ CONFIG_CRYPTO_HASH2=y
 # CONFIG_CRYPTO_HMAC is not set
 # CONFIG_CRYPTO_HW is not set
 # CONFIG_CRYPTO_JITTERENTROPY is not set
+# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set
 # CONFIG_CRYPTO_KEYWRAP is not set
 # CONFIG_CRYPTO_KHAZAD is not set
 CONFIG_CRYPTO_KPP=y
@@ -1368,6 +1393,7 @@ CONFIG_CRYPTO_SKCIPHER2=y
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
 # CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_CGROUP_REF is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_DEBUG_DRIVER is not set
@@ -1384,7 +1410,8 @@ CONFIG_DEBUG_FS_ALLOW_ALL=y
 # CONFIG_DEBUG_ICEDCC is not set
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_INFO_BTF is not set
-# CONFIG_DEBUG_INFO_COMPRESSED is not set
+CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
+# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
 # CONFIG_DEBUG_INFO_DWARF4 is not set
 # CONFIG_DEBUG_INFO_DWARF5 is not set
 CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
@@ -1442,6 +1469,7 @@ CONFIG_DEBUG_KERNEL=y
 # CONFIG_DEBUG_USER is not set
 # CONFIG_DEBUG_VIRTUAL is not set
 # CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VM_MAPLE_TREE is not set
 # CONFIG_DEBUG_VM_PGFLAGS is not set
 # CONFIG_DEBUG_VM_PGTABLE is not set
 # CONFIG_DEBUG_VM_RB is not set
@@ -1515,6 +1543,7 @@ CONFIG_DEVPORT=y
 # CONFIG_DMARD09 is not set
 # CONFIG_DMARD10 is not set
 # CONFIG_DMASCC is not set
+# CONFIG_DMAPOOL_TEST is not set
 # CONFIG_DMATEST is not set
 # CONFIG_DMA_API_DEBUG is not set
 CONFIG_DMA_COHERENT_POOL=y
@@ -1550,6 +1579,7 @@ CONFIG_DMA_NONCOHERENT_MMAP=y
 # CONFIG_DM_VERITY is not set
 # CONFIG_DM_WRITECACHE is not set
 # CONFIG_DM_ZERO is not set
+# CONFIG_DM_ZONED is not set
 # CONFIG_DNET is not set
 # CONFIG_DNOTIFY is not set
 # CONFIG_DNS_RESOLVER is not set
@@ -1561,16 +1591,19 @@ CONFIG_DOUBLEFAULT=y
 # CONFIG_DP83869_PHY is not set
 # CONFIG_DP83TC811_PHY is not set
 # CONFIG_DP83TD510_PHY is not set
+# CONFIG_DPM_WATCHDOG is not set
 # CONFIG_DPOT_DAC is not set
 # CONFIG_DPS310 is not set
 CONFIG_DQL=y
 # CONFIG_DRAGONRISE_FF is not set
 # CONFIG_DRM is not set
+# CONFIG_DRM_ACCEL is not set
 # CONFIG_DRM_AMDGPU is not set
 # CONFIG_DRM_AMDGPU_CIK is not set
 # CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
 # CONFIG_DRM_AMDGPU_SI is not set
 # CONFIG_DRM_AMDGPU_USERPTR is not set
+# CONFIG_DRM_AMDGPU_WERROR is not set
 # CONFIG_DRM_AMD_ACP is not set
 # CONFIG_DRM_AMD_DC_DCN2_0 is not set
 # CONFIG_DRM_AMD_DC_DCN3_0 is not set
@@ -1625,6 +1658,7 @@ CONFIG_DQL=y
 # CONFIG_DRM_LIMA is not set
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 # CONFIG_DRM_LOGICVC is not set
+# CONFIG_DRM_LOONGSON is not set
 # CONFIG_DRM_LONTIUM_LT8912B is not set
 # CONFIG_DRM_LONTIUM_LT9211 is not set
 # CONFIG_DRM_LONTIUM_LT9611 is not set
@@ -1643,6 +1677,7 @@ CONFIG_DQL=y
 # CONFIG_DRM_PANEL_ABT_Y030XX067A is not set
 # CONFIG_DRM_PANEL_ARM_VERSATILE is not set
 # CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set
+# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set
 # CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0 is not set
 # CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set
 # CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set
@@ -1677,6 +1712,7 @@ CONFIG_DQL=y
 # CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set
 # CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set
 # CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set
+# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set
 # CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set
 # CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set
 # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set
@@ -1690,6 +1726,7 @@ CONFIG_DQL=y
 # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set
@@ -1733,6 +1770,7 @@ CONFIG_DQL=y
 # CONFIG_DRM_RP1_DPI is not set
 # CONFIG_DRM_RP1_DSI is not set
 # CONFIG_DRM_RP1_VEC is not set
+# CONFIG_DRM_SAMSUNG_DSIM is not set
 # CONFIG_DRM_SII902X is not set
 # CONFIG_DRM_SII9234 is not set
 # CONFIG_DRM_SIL_SII8620 is not set
@@ -2060,6 +2098,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 # CONFIG_FB_CYBER2000 is not set
 # CONFIG_FB_DA8XX is not set
 # CONFIG_FB_DDC is not set
+# CONFIG_FB_DEVICE is not set
 # CONFIG_FB_FLEX is not set
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 # CONFIG_FB_FSL_DIU is not set
@@ -2221,6 +2260,7 @@ CONFIG_FSNOTIFY=y
 # CONFIG_FUJITSU_LAPTOP is not set
 # CONFIG_FUJITSU_TABLET is not set
 # CONFIG_FUNCTION_ERROR_INJECTION is not set
+# CONFIG_FUNCTION_GRAPH_RETVAL is not set
 # CONFIG_FUNCTION_TRACER is not set
 # CONFIG_FUN_ETH is not set
 # CONFIG_FUSE_FS is not set
@@ -2231,8 +2271,10 @@ CONFIG_FSNOTIFY=y
 CONFIG_FUTEX=y
 CONFIG_FUTEX_PI=y
 # CONFIG_FW_CFG_SYSFS is not set
+# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set
 CONFIG_FW_LOADER=y
 # CONFIG_FW_LOADER_COMPRESS is not set
+# CONFIG_FW_LOADER_DEBUG is not set
 CONFIG_FW_LOADER_USER_HELPER=y
 CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
 # CONFIG_FW_UPLOAD is not set
@@ -2271,6 +2313,7 @@ CONFIG_GENERIC_VDSO_TIME_NS=y
 # CONFIG_GLOB_SELFTEST is not set
 # CONFIG_GNSS is not set
 # CONFIG_GOLDFISH is not set
+# CONFIG_GOOGLE_CBMEM is not set
 # CONFIG_GOOGLE_FIRMWARE is not set
 # CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT is not set
 # CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY is not set
@@ -2301,17 +2344,21 @@ CONFIG_GPIOLIB_FASTPATH_LIMIT=512
 # CONFIG_GPIO_CDEV_V1 is not set
 # CONFIG_GPIO_CS5535 is not set
 # CONFIG_GPIO_DWAPB is not set
+# CONFIG_GPIO_DS4520 is not set
 # CONFIG_GPIO_EM is not set
 # CONFIG_GPIO_EXAR is not set
 # CONFIG_GPIO_F7188X is not set
 # CONFIG_GPIO_FTGPIO010 is not set
+# CONFIG_GPIO_FXL6408 is not set
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
 # CONFIG_GPIO_GPIO_MM is not set
 # CONFIG_GPIO_GRGPIO is not set
 # CONFIG_GPIO_GW_PLD is not set
+# CONFIG_GPIO_HISI is not set
 # CONFIG_GPIO_HLWD is not set
 # CONFIG_GPIO_ICH is not set
 # CONFIG_GPIO_IT87 is not set
+# CONFIG_GPIO_LATCH is not set
 # CONFIG_GPIO_LOGICVC is not set
 # CONFIG_GPIO_LYNXPOINT is not set
 # CONFIG_GPIO_MAX3191X is not set
@@ -2412,6 +2459,7 @@ CONFIG_HARDEN_EL2_VECTORS=y
 # CONFIG_HID_BELKIN is not set
 # CONFIG_HID_BETOP_FF is not set
 # CONFIG_HID_BIGBEN_FF is not set
+# CONFIG_HID_BPF is not set
 # CONFIG_HID_CHERRY is not set
 # CONFIG_HID_CHICONY is not set
 # CONFIG_HID_CMEDIA is not set
@@ -2425,6 +2473,7 @@ CONFIG_HARDEN_EL2_VECTORS=y
 # CONFIG_HID_ELECOM is not set
 # CONFIG_HID_ELO is not set
 # CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_EVISION is not set
 # CONFIG_HID_EZKEY is not set
 # CONFIG_HID_FT260 is not set
 # CONFIG_HID_GEMBIRD is not set
@@ -2432,6 +2481,7 @@ CONFIG_HARDEN_EL2_VECTORS=y
 # CONFIG_HID_GFRM is not set
 # CONFIG_HID_GLORIOUS is not set
 # CONFIG_HID_GOOGLE_HAMMER is not set
+# CONFIG_HID_GOOGLE_STADIA_FF is not set
 # CONFIG_HID_GREENASIA is not set
 # CONFIG_HID_GT683R is not set
 # CONFIG_HID_GYRATION is not set
@@ -2461,6 +2511,7 @@ CONFIG_HARDEN_EL2_VECTORS=y
 # CONFIG_HID_NINTENDO is not set
 # CONFIG_HID_NTI is not set
 # CONFIG_HID_NTRIG is not set
+# CONFIG_HID_NVIDIA_SHIELD is not set
 # CONFIG_HID_ORTEK is not set
 # CONFIG_HID_PANTHERLORD is not set
 # CONFIG_HID_PENMOUNT is not set
@@ -2553,6 +2604,7 @@ CONFIG_HPET_MMAP_DEFAULT=y
 # CONFIG_HTU21 is not set
 # CONFIG_HUGETLBFS is not set
 # CONFIG_HUGETLB_PAGE is not set
+# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set
 # CONFIG_HVC_DCC is not set
 # CONFIG_HVC_UDBG is not set
 # CONFIG_HWLAT_TRACER is not set
@@ -2638,6 +2690,7 @@ CONFIG_HZ_100=y
 # CONFIG_I2C_HID_OF is not set
 # CONFIG_I2C_HID_OF_ELAN is not set
 # CONFIG_I2C_HID_OF_GOODIX is not set
+# CONFIG_I2C_HISI is not set
 # CONFIG_I2C_I801 is not set
 # CONFIG_I2C_IBM_IIC is not set
 # CONFIG_I2C_IMG is not set
@@ -2740,6 +2793,8 @@ CONFIG_HZ_100=y
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set
 # CONFIG_IIO_INTERRUPT_TRIGGER is not set
+# CONFIG_IIO_KX022A_I2C is not set
+# CONFIG_IIO_KX022A_SPI is not set
 # CONFIG_IIO_MUX is not set
 # CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
 # CONFIG_IIO_RESCALE is not set
@@ -2792,6 +2847,7 @@ CONFIG_INET_TABLE_PERTURB_ORDER=16
 # CONFIG_INGENIC_ADC is not set
 # CONFIG_INGENIC_CGU_JZ4725B is not set
 # CONFIG_INGENIC_CGU_JZ4740 is not set
+# CONFIG_INGENIC_CGU_JZ4755 is not set
 # CONFIG_INGENIC_CGU_JZ4760 is not set
 # CONFIG_INGENIC_CGU_JZ4770 is not set
 # CONFIG_INGENIC_CGU_JZ4780 is not set
@@ -2947,6 +3003,7 @@ CONFIG_IO_WQ=y
 # CONFIG_IPC_NS is not set
 # CONFIG_IPMB_DEVICE_INTERFACE is not set
 # CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPU_BRIDGE is not set
 # CONFIG_IPV6 is not set
 # CONFIG_IPV6_FOU is not set
 # CONFIG_IPV6_FOU_TUNNEL is not set
@@ -3025,6 +3082,7 @@ CONFIG_IP_VS_MH_TAB_INDEX=10
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 # CONFIG_IRQ_POLL is not set
 # CONFIG_IRQ_TIME_ACCOUNTING is not set
+# CONFIG_IRSD200 is not set
 # CONFIG_IR_GPIO_CIR is not set
 # CONFIG_IR_HIX5HD2 is not set
 # CONFIG_IR_IGORPLUGUSB is not set
@@ -3108,6 +3166,7 @@ CONFIG_JOLIET=y
 # CONFIG_KALLSYMS is not set
 # CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
 # CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_SELFTEST is not set
 CONFIG_KALLSYMS_BASE_RELATIVE=y
 # CONFIG_KALLSYMS_UNCOMPRESSED is not set
 # CONFIG_KARMA_PARTITION is not set
@@ -3231,9 +3290,11 @@ CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y
 # CONFIG_LD_HEAD_STUB_CATCH is not set
 # CONFIG_LEDS_AN30259A is not set
 # CONFIG_LEDS_APU is not set
+# CONFIG_LEDS_AW200XX is not set
 # CONFIG_LEDS_AW2013 is not set
 # CONFIG_LEDS_BCM6328 is not set
 # CONFIG_LEDS_BCM6358 is not set
+# CONFIG_LEDS_BD2606MVV is not set
 # CONFIG_LEDS_BD2802 is not set
 # CONFIG_LEDS_BLINKM is not set
 CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
@@ -3244,6 +3305,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=y
 # CONFIG_LEDS_DAC124S085 is not set
 # CONFIG_LEDS_EL15203000 is not set
 # CONFIG_LEDS_GPIO is not set
+# CONFIG_LEDS_GROUP_MULTICOLOR is not set
 # CONFIG_LEDS_INTEL_SS4200 is not set
 # CONFIG_LEDS_IS31FL319X is not set
 # CONFIG_LEDS_IS31FL32XX is not set
@@ -3252,6 +3314,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=y
 # CONFIG_LEDS_LM355x is not set
 # CONFIG_LEDS_LM3642 is not set
 # CONFIG_LEDS_LM3692X is not set
+# CONFIG_LEDS_LM3697 is not set
 # CONFIG_LEDS_LP3944 is not set
 # CONFIG_LEDS_LP3952 is not set
 # CONFIG_LEDS_LP50XX is not set
@@ -3270,6 +3333,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=y
 # CONFIG_LEDS_PCA9532 is not set
 # CONFIG_LEDS_PCA955X is not set
 # CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_PCA995X is not set
 # CONFIG_LEDS_PWM is not set
 # CONFIG_LEDS_PWM_MULTICOLOR is not set
 # CONFIG_LEDS_REGULATOR is not set
@@ -3300,6 +3364,7 @@ CONFIG_LEDS_TRIGGER_TIMER=y
 # CONFIG_LEDS_USER is not set
 # CONFIG_LED_TRIGGER_PHY is not set
 # CONFIG_LEGACY_PTYS is not set
+# CONFIG_LEGACY_TIOCSTI is not set
 # CONFIG_LGUEST is not set
 # CONFIG_LIB80211 is not set
 # CONFIG_LIB80211_CRYPT_CCMP is not set
@@ -3321,6 +3386,7 @@ CONFIG_LINEAR_RANGES=y
 # CONFIG_LIQUIDIO_VF is not set
 # CONFIG_LIRC is not set
 # CONFIG_LIS3L02DQ is not set
+# CONFIG_LIST_HARDENED is not set
 # CONFIG_LITEX_LITEETH is not set
 # CONFIG_LITEX_SOC_CONTROLLER is not set
 # CONFIG_LIVEPATCH is not set
@@ -3425,16 +3491,20 @@ CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
 # CONFIG_MANDATORY_FILE_LOCKING is not set
 # CONFIG_MANGLE_BOOTARGS is not set
 # CONFIG_MARVELL_10G_PHY is not set
+# CONFIG_MARVELL_88Q2XXX_PHY is not set
 # CONFIG_MARVELL_88X2222_PHY is not set
 # CONFIG_MARVELL_PHY is not set
 # CONFIG_MAX1027 is not set
 # CONFIG_MAX11100 is not set
 # CONFIG_MAX1118 is not set
 # CONFIG_MAX11205 is not set
+# CONFIG_MAX11410 is not set
 # CONFIG_MAX1241 is not set
 # CONFIG_MAX1363 is not set
 # CONFIG_MAX30100 is not set
 # CONFIG_MAX30102 is not set
+# CONFIG_MAX30208 is not set
+# CONFIG_MAX31827 is not set
 # CONFIG_MAX31856 is not set
 # CONFIG_MAX31865 is not set
 # CONFIG_MAX44000 is not set
@@ -3443,11 +3513,13 @@ CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
 # CONFIG_MAX5432 is not set
 # CONFIG_MAX5481 is not set
 # CONFIG_MAX5487 is not set
+# CONFIG_MAX5522 is not set
 # CONFIG_MAX5821 is not set
 # CONFIG_MAX63XX_WATCHDOG is not set
 # CONFIG_MAX9611 is not set
 # CONFIG_MAXIM_THERMOCOUPLE is not set
 # CONFIG_MAXLINEAR_GPHY is not set
+CONFIG_MAX_SKB_FRAGS=17
 CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MB1232 is not set
 # CONFIG_MC3230 is not set
@@ -3460,6 +3532,7 @@ CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MCP4131 is not set
 # CONFIG_MCP4531 is not set
 # CONFIG_MCP4725 is not set
+# CONFIG_MCP4728 is not set
 # CONFIG_MCP4922 is not set
 # CONFIG_MCPM is not set
 # CONFIG_MCTP is not set
@@ -3480,6 +3553,7 @@ CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MDIO_THUNDER is not set
 # CONFIG_MDIO_XPCS is not set
 # CONFIG_MDM_GCC_9607 is not set
+# CONFIG_MD_BITMAP_FILE is not set
 # CONFIG_MD_FAULTY is not set
 # CONFIG_MEDIATEK_GE_PHY is not set
 # CONFIG_MEDIATEK_MT6577_AUXADC is not set
@@ -3543,6 +3617,7 @@ CONFIG_MAY_USE_DEVLINK=y
 # CONFIG_MEGARAID_SAS is not set
 # CONFIG_MELLANOX_PLATFORM is not set
 CONFIG_MEMBARRIER=y
+CONFIG_MEMFD_CREATE=y
 # CONFIG_MEMORY is not set
 # CONFIG_MEMORY_FAILURE is not set
 # CONFIG_MEMORY_HOTPLUG is not set
@@ -3572,6 +3647,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_CORE is not set
 # CONFIG_MFD_CPCAP is not set
 # CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_CS42L43_I2C is not set
 # CONFIG_MFD_CS5535 is not set
 # CONFIG_MFD_DA9052_I2C is not set
 # CONFIG_MFD_DA9052_SPI is not set
@@ -3583,7 +3659,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_EXYNOS_LPASS is not set
 # CONFIG_MFD_GATEWORKS_GSC is not set
 # CONFIG_MFD_HI6421_PMIC is not set
-# CONFIG_MFD_INTEL_M10_BMC is not set
+# CONFIG_MFD_INTEL_M10_BMC_SPI is not set
 # CONFIG_MFD_INTEL_PMT is not set
 # CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
 # CONFIG_MFD_IQS62X is not set
@@ -3595,6 +3671,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_LP8788 is not set
 # CONFIG_MFD_MADERA is not set
 # CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX5970 is not set
+# CONFIG_MFD_MAX77541 is not set
 # CONFIG_MFD_MAX77620 is not set
 # CONFIG_MFD_MAX77650 is not set
 # CONFIG_MFD_MAX77686 is not set
@@ -3626,6 +3704,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_RDC321X is not set
 # CONFIG_MFD_RETU is not set
 # CONFIG_MFD_RK808 is not set
+# CONFIG_MFD_RK8XX_I2C is not set
+# CONFIG_MFD_RK8XX_SPI is not set
 # CONFIG_MFD_RN5T618 is not set
 # CONFIG_MFD_ROHM_BD70528 is not set
 # CONFIG_MFD_ROHM_BD71828 is not set
@@ -3645,6 +3725,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_SKY81452 is not set
 # CONFIG_MFD_SL28CPLD is not set
 # CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SMPRO is not set
 # CONFIG_MFD_SMSC is not set
 # CONFIG_MFD_STMFX is not set
 # CONFIG_MFD_STMPE is not set
@@ -3665,11 +3746,14 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MFD_TPS65090 is not set
 # CONFIG_MFD_TPS65217 is not set
 # CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS65219 is not set
 # CONFIG_MFD_TPS6586X is not set
 # CONFIG_MFD_TPS65910 is not set
 # CONFIG_MFD_TPS65912 is not set
 # CONFIG_MFD_TPS65912_I2C is not set
 # CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS6594_I2C is not set
+# CONFIG_MFD_TPS6594_SPI is not set
 # CONFIG_MFD_TPS68470 is not set
 # CONFIG_MFD_TPS80031 is not set
 # CONFIG_MFD_TQMX86 is not set
@@ -3695,6 +3779,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_MICROCHIP_KSZ is not set
 # CONFIG_MICROCHIP_PHY is not set
 # CONFIG_MICROCHIP_PIT64B is not set
+# CONFIG_MICROCHIP_T1S_PHY is not set
 # CONFIG_MICROCHIP_T1_PHY is not set
 # CONFIG_MICROSEMI_PHY is not set
 # CONFIG_MIGRATION is not set
@@ -3744,6 +3829,7 @@ CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y
 # CONFIG_MLX4_EN is not set
 # CONFIG_MLX5_CORE is not set
 # CONFIG_MLX5_EN_MACSEC is not set
+# CONFIG_MLX5_MACSEC is not set
 # CONFIG_MLX5_SF is not set
 # CONFIG_MLX5_VFIO_PCI is not set
 # CONFIG_MLX90614 is not set
@@ -3818,6 +3904,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_COMPRESS_NONE=y
 # CONFIG_MODULE_COMPRESS_XZ is not set
 # CONFIG_MODULE_COMPRESS_ZSTD is not set
+# CONFIG_MODULE_DEBUG is not set
 # CONFIG_MODULE_FORCE_LOAD is not set
 # CONFIG_MODULE_FORCE_UNLOAD is not set
 # CONFIG_MODULE_SIG is not set
@@ -3846,6 +3933,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_MPLS is not set
 # CONFIG_MPLS_IPTUNNEL is not set
 # CONFIG_MPLS_ROUTING is not set
+# CONFIG_MPRLS0025PA is not set
 # CONFIG_MPTCP is not set
 # CONFIG_MPU3050_I2C is not set
 # CONFIG_MQ_IOSCHED_DEADLINE is not set
@@ -4070,12 +4158,14 @@ CONFIG_MULTIUSER=y
 # CONFIG_NATSEMI is not set
 # CONFIG_NAU7802 is not set
 # CONFIG_NBPFAXI_DMA is not set
+# CONFIG_NCN26000_PHY is not set
 # CONFIG_NCP_FS is not set
 # CONFIG_NE2000 is not set
 # CONFIG_NE2K_PCI is not set
 # CONFIG_NEC_MARKEINS is not set
 CONFIG_NET=y
 # CONFIG_NETCONSOLE is not set
+# CONFIG_NETCONSOLE_EXTENDED_LOG is not set
 CONFIG_NETDEVICES=y
 # CONFIG_NETDEVSIM is not set
 # CONFIG_NETFILTER is not set
@@ -4221,6 +4311,7 @@ CONFIG_NET_CORE=y
 # CONFIG_NET_DSA_MICROCHIP_KSZ9477 is not set
 # CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON is not set
 # CONFIG_NET_DSA_MSCC_FELIX is not set
+# CONFIG_NET_DSA_MSCC_OCELOT_EXT is not set
 # CONFIG_NET_DSA_MSCC_SEVILLE is not set
 # CONFIG_NET_DSA_MT7530 is not set
 # CONFIG_NET_DSA_MV88E6060 is not set
@@ -4250,6 +4341,7 @@ CONFIG_NET_CORE=y
 # CONFIG_NET_DSA_TAG_KSZ is not set
 # CONFIG_NET_DSA_TAG_LAN9303 is not set
 # CONFIG_NET_DSA_TAG_MTK is not set
+# CONFIG_NET_DSA_TAG_NONE is not set
 # CONFIG_NET_DSA_TAG_OCELOT is not set
 # CONFIG_NET_DSA_TAG_OCELOT_8021Q is not set
 # CONFIG_NET_DSA_TAG_QCA is not set
@@ -4426,6 +4518,7 @@ CONFIG_NEW_LEDS=y
 # CONFIG_NFC is not set
 # CONFIG_NFP is not set
 # CONFIG_NFSD is not set
+# CONFIG_NFSD_V2 is not set
 # CONFIG_NFSD_V2_ACL is not set
 CONFIG_NFSD_V3=y
 # CONFIG_NFSD_V3_ACL is not set
@@ -4585,6 +4678,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
 # CONFIG_NLS_MAC_ROMAN is not set
 # CONFIG_NLS_MAC_ROMANIAN is not set
 # CONFIG_NLS_MAC_TURKISH is not set
+# CONFIG_NLS_UCS2_UTILS is not set
 # CONFIG_NLS_UTF8 is not set
 CONFIG_NMI_LOG_BUF_SHIFT=13
 # CONFIG_NOA1305 is not set
@@ -4628,6 +4722,7 @@ CONFIG_NMI_LOG_BUF_SHIFT=13
 # CONFIG_NVRAM is not set
 # CONFIG_NV_TCO is not set
 # CONFIG_NXP_C45_TJA11XX_PHY is not set
+# CONFIG_NXP_CBTX_PHY is not set
 # CONFIG_NXP_STB220 is not set
 # CONFIG_NXP_STB225 is not set
 # CONFIG_NXP_TJA11XX_PHY is not set
@@ -4653,12 +4748,14 @@ CONFIG_OF_RESERVED_MEM=y
 # CONFIG_OPROFILE is not set
 # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
 # CONFIG_OPT3001 is not set
+# CONFIG_OPT4001 is not set
 CONFIG_OPTIMIZE_INLINING=y
 # CONFIG_ORANGEFS_FS is not set
 # CONFIG_ORION_WATCHDOG is not set
 # CONFIG_OSF_PARTITION is not set
 # CONFIG_OSNOISE_TRACER is not set
 CONFIG_OVERLAY_FS=y
+# CONFIG_OVERLAY_FS_DEBUG is not set
 # CONFIG_OVERLAY_FS_INDEX is not set
 # CONFIG_OVERLAY_FS_METACOPY is not set
 CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
@@ -4697,6 +4794,7 @@ CONFIG_PANIC_TIMEOUT=1
 # CONFIG_PARPORT_GSC is not set
 # CONFIG_PARPORT_PC is not set
 CONFIG_PARTITION_ADVANCED=y
+# CONFIG_PATA_ACPI is not set
 # CONFIG_PATA_ALI is not set
 # CONFIG_PATA_AMD is not set
 # CONFIG_PATA_ARASAN_CF is not set
@@ -4732,6 +4830,7 @@ CONFIG_PARTITION_ADVANCED=y
 # CONFIG_PATA_OLDPIIX is not set
 # CONFIG_PATA_OPTI is not set
 # CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PARPORT is not set
 # CONFIG_PATA_PCMCIA is not set
 # CONFIG_PATA_PDC2027X is not set
 # CONFIG_PATA_PDC_OLD is not set
@@ -4789,6 +4888,7 @@ CONFIG_PCIE_BUS_DEFAULT=y
 # CONFIG_PCI_CNB20LE_QUIRK is not set
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set
+# CONFIG_PCI_DYNAMIC_OF_NODES is not set
 # CONFIG_PCI_ENDPOINT is not set
 # CONFIG_PCI_ENDPOINT_TEST is not set
 # CONFIG_PCI_FTPCI100 is not set
@@ -4842,12 +4942,14 @@ CONFIG_PCI_SYSCALL=y
 # CONFIG_PD6729 is not set
 # CONFIG_PDA_POWER is not set
 # CONFIG_PDC_ADMA is not set
+# CONFIG_PDS_CORE is not set
 # CONFIG_PECI is not set
 # CONFIG_PERCPU_STATS is not set
 # CONFIG_PERCPU_TEST is not set
 # CONFIG_PERF_EVENTS is not set
 # CONFIG_PERF_EVENTS_AMD_POWER is not set
 # CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_PER_VMA_LOCK_STATS is not set
 # CONFIG_PHANTOM is not set
 # CONFIG_PHONET is not set
 # CONFIG_PHYLIB is not set
@@ -4981,6 +5083,10 @@ CONFIG_PPC_4K_PAGES=y
 # CONFIG_PPP is not set
 # CONFIG_PPPOATM is not set
 # CONFIG_PPPOE is not set
+# CONFIG_PPPOE_HASH_BITS_1 is not set
+# CONFIG_PPPOE_HASH_BITS_2 is not set
+CONFIG_PPPOE_HASH_BITS_4=y
+# CONFIG_PPPOE_HASH_BITS_8 is not set
 # CONFIG_PPPOL2TP is not set
 # CONFIG_PPP_ASYNC is not set
 # CONFIG_PPP_BSDCOMP is not set
@@ -5055,6 +5161,7 @@ CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240
 # CONFIG_PTP_1588_CLOCK_IDTCM is not set
 # CONFIG_PTP_1588_CLOCK_IXP46X is not set
 # CONFIG_PTP_1588_CLOCK_KVM is not set
+# CONFIG_PTP_1588_CLOCK_MOCK is not set
 # CONFIG_PTP_1588_CLOCK_OCP is not set
 # CONFIG_PTP_1588_CLOCK_PCH is not set
 # CONFIG_PTP_1588_CLOCK_VMW is not set
@@ -5144,6 +5251,7 @@ CONFIG_PWRSEQ_SIMPLE=y
 # CONFIG_RANDOMIZE_BASE is not set
 CONFIG_RANDOMIZE_KSTACK_OFFSET=y
 # CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set
+# CONFIG_RANDOM_KMALLOC_CACHES is not set
 CONFIG_RANDOM_TRUST_BOOTLOADER=y
 CONFIG_RANDOM_TRUST_CPU=y
 # CONFIG_RANDSTRUCT_NONE is not set
@@ -5152,6 +5260,7 @@ CONFIG_RANDOM_TRUST_CPU=y
 # CONFIG_RASPBERRYPI_GPIOMEM is not set
 # CONFIG_RBTREE_TEST is not set
 # CONFIG_RCU_BOOST is not set
+# CONFIG_RCU_CPU_STALL_CPUTIME is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_RCU_EQS_DEBUG is not set
 # CONFIG_RCU_EXPEDITE_BOOT is not set
@@ -5198,6 +5307,7 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_REGULATOR_ACT8865 is not set
 # CONFIG_REGULATOR_AD5398 is not set
 # CONFIG_REGULATOR_ANATOP is not set
+# CONFIG_REGULATOR_AW37503 is not set
 # CONFIG_REGULATOR_DA9121 is not set
 # CONFIG_REGULATOR_DA9210 is not set
 # CONFIG_REGULATOR_DA9211 is not set
@@ -5216,8 +5326,10 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_REGULATOR_LTC3676 is not set
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX20086 is not set
+# CONFIG_REGULATOR_MAX20411 is not set
 # CONFIG_REGULATOR_MAX77620 is not set
 # CONFIG_REGULATOR_MAX77826 is not set
+# CONFIG_REGULATOR_MAX77857 is not set
 # CONFIG_REGULATOR_MAX8649 is not set
 # CONFIG_REGULATOR_MAX8660 is not set
 # CONFIG_REGULATOR_MAX8893 is not set
@@ -5238,14 +5350,19 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_REGULATOR_PV88080 is not set
 # CONFIG_REGULATOR_PV88090 is not set
 # CONFIG_REGULATOR_PWM is not set
+# CONFIG_REGULATOR_RAA215300 is not set
 # CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
 # CONFIG_REGULATOR_RT4801 is not set
+# CONFIG_REGULATOR_RT4803 is not set
 # CONFIG_REGULATOR_RT5190A is not set
+# CONFIG_REGULATOR_RT5739 is not set
 # CONFIG_REGULATOR_RT5759 is not set
 # CONFIG_REGULATOR_RT6160 is not set
+# CONFIG_REGULATOR_RT6190 is not set
 # CONFIG_REGULATOR_RT6245 is not set
 # CONFIG_REGULATOR_RTMV20 is not set
 # CONFIG_REGULATOR_RTQ2134 is not set
+# CONFIG_REGULATOR_RTQ2208 is not set
 # CONFIG_REGULATOR_RTQ6752 is not set
 # CONFIG_REGULATOR_SLG51000 is not set
 # CONFIG_REGULATOR_SY8106A is not set
@@ -5255,6 +5372,7 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS6286X is not set
+# CONFIG_REGULATOR_TPS6287X is not set
 # CONFIG_REGULATOR_TPS65023 is not set
 # CONFIG_REGULATOR_TPS6507X is not set
 # CONFIG_REGULATOR_TPS65132 is not set
@@ -5305,11 +5423,17 @@ CONFIG_RFKILL=y
 # CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set
 # CONFIG_RMI4_CORE is not set
 # CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_ERRATUM_3588001 is not set
 # CONFIG_ROCKCHIP_PHY is not set
 # CONFIG_ROCKER is not set
+# CONFIG_ROHM_BU27008 is not set
+# CONFIG_ROHM_BU27034 is not set
 # CONFIG_ROMFS_FS is not set
 # CONFIG_ROSE is not set
 # CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1 is not set
+# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2 is not set
+# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA is not set
 # CONFIG_RPMSG_QCOM_GLINK_RPM is not set
 # CONFIG_RPMSG_VIRTIO is not set
 # CONFIG_RPMSG_WWAN_CTRL is not set
@@ -5442,6 +5566,7 @@ CONFIG_RUNTIME_TESTING_MENU=y
 # CONFIG_RV is not set
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_RXKAD=y
+# CONFIG_RXPERF is not set
 # CONFIG_S2IO is not set
 # CONFIG_SAMPLES is not set
 # CONFIG_SAMSUNG_LAPTOP is not set
@@ -5596,6 +5721,7 @@ CONFIG_SCSI_PROC_FS=y
 # CONFIG_SD_ADC_MODULATOR is not set
 # CONFIG_SECCOMP is not set
 # CONFIG_SECCOMP_CACHE_DEBUG is not set
+# CONFIG_SECRETMEM is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 # CONFIG_SECURITY is not set
 # CONFIG_SECURITYFS is not set
@@ -5610,6 +5736,7 @@ CONFIG_SECURITY_DMESG_RESTRICT=y
 # CONFIG_SECURITY_SELINUX_AVC_STATS is not set
 # CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0
+# CONFIG_SECURITY_SELINUX_DEBUG is not set
 # CONFIG_SECURITY_SELINUX_DEVELOP is not set
 # CONFIG_SECURITY_SELINUX_DISABLE is not set
 # CONFIG_SECURITY_SMACK is not set
@@ -5621,6 +5748,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSIRION_SGP40 is not set
 # CONFIG_SENSORS_ABITUGURU is not set
 # CONFIG_SENSORS_ABITUGURU3 is not set
+# CONFIG_SENSORS_ACBEL_FSG032 is not set
 # CONFIG_SENSORS_ACPI_POWER is not set
 # CONFIG_SENSORS_AD7314 is not set
 # CONFIG_SENSORS_AD7414 is not set
@@ -5693,6 +5821,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_HMC5843 is not set
 # CONFIG_SENSORS_HMC5843_I2C is not set
 # CONFIG_SENSORS_HMC5843_SPI is not set
+# CONFIG_SENSORS_HS3001 is not set
 # CONFIG_SENSORS_HTU21 is not set
 # CONFIG_SENSORS_I5500 is not set
 # CONFIG_SENSORS_I5K_AMB is not set
@@ -5774,10 +5903,12 @@ CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_MAX6650 is not set
 # CONFIG_SENSORS_MAX6697 is not set
 # CONFIG_SENSORS_MAX8688 is not set
+# CONFIG_SENSORS_MC34VR500 is not set
 # CONFIG_SENSORS_MCP3021 is not set
 # CONFIG_SENSORS_MP2888 is not set
 # CONFIG_SENSORS_MP2975 is not set
 # CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MPQ7932 is not set
 # CONFIG_SENSORS_MR75203 is not set
 # CONFIG_SENSORS_NCT6683 is not set
 # CONFIG_SENSORS_NCT6775 is not set
@@ -5823,6 +5954,7 @@ CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_SENSORS_STTS751 is not set
 # CONFIG_SENSORS_TC654 is not set
 # CONFIG_SENSORS_TC74 is not set
+# CONFIG_SENSORS_TDA38640 is not set
 # CONFIG_SENSORS_THMC50 is not set
 # CONFIG_SENSORS_TMP102 is not set
 # CONFIG_SENSORS_TMP103 is not set
@@ -5883,6 +6015,7 @@ CONFIG_SERIAL_8250_DMA=y
 # CONFIG_SERIAL_8250_MOXA is not set
 CONFIG_SERIAL_8250_NR_UARTS=2
 # CONFIG_SERIAL_8250_PCI is not set
+# CONFIG_SERIAL_8250_PCI1XXXX is not set
 # CONFIG_SERIAL_8250_PERICOM is not set
 # CONFIG_SERIAL_8250_RSA is not set
 # CONFIG_SERIAL_8250_RT288X is not set
@@ -5898,7 +6031,7 @@ CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 # CONFIG_SERIAL_DEV_BUS is not set
 CONFIG_SERIAL_EARLYCON=y
-# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set
+# CONFIG_SERIAL_EARLYCON_SEMIHOST is not set
 # CONFIG_SERIAL_FSL_LINFLEXUART is not set
 # CONFIG_SERIAL_FSL_LPUART is not set
 # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
@@ -5983,7 +6116,7 @@ CONFIG_SIGNALFD=y
 # CONFIG_SKGE is not set
 # CONFIG_SKY2 is not set
 # CONFIG_SKY2_DEBUG is not set
-# CONFIG_SLAB is not set
+# CONFIG_SLAB_DEPRECATED is not set
 CONFIG_SLABINFO=y
 CONFIG_SLAB_FREELIST_HARDENED=y
 CONFIG_SLAB_FREELIST_RANDOM=y
@@ -5999,6 +6132,7 @@ CONFIG_SLUB_CPU_PARTIAL=y
 # CONFIG_SLUB_DEBUG_ON is not set
 # CONFIG_SLUB_MEMCG_SYSFS_ON is not set
 # CONFIG_SLUB_STATS is not set
+# CONFIG_SLUB_TINY is not set
 # CONFIG_SMARTJOYPLUS_FF is not set
 # CONFIG_SMB_SERVER is not set
 # CONFIG_SMC911X is not set
@@ -6140,6 +6274,7 @@ CONFIG_SND_OSSEMUL=y
 CONFIG_SND_PCI=y
 # CONFIG_SND_PCM is not set
 # CONFIG_SND_PCMCIA is not set
+# CONFIG_SND_PCMTEST is not set
 # CONFIG_SND_PCM_OSS is not set
 CONFIG_SND_PCM_OSS_PLUGINS=y
 # CONFIG_SND_PCM_TIMER is not set
@@ -6163,6 +6298,7 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SBAWE_SEQ is not set
 # CONFIG_SND_SE6X is not set
 # CONFIG_SND_SEQUENCER is not set
+# CONFIG_SND_SEQ_UMP is not set
 # CONFIG_SND_SERIAL_GENERIC is not set
 # CONFIG_SND_SERIAL_U16550 is not set
 # CONFIG_SND_SIMPLE_CARD is not set
@@ -6197,9 +6333,14 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_AMD_RENOIR is not set
 # CONFIG_SND_SOC_AU1XAUDIO is not set
 # CONFIG_SND_SOC_AU1XPSC is not set
+# CONFIG_SND_SOC_AUDIO_IIO_AUX is not set
 # CONFIG_SND_SOC_AW8738 is not set
+# CONFIG_SND_SOC_AW88261 is not set
+# CONFIG_SND_SOC_AW88395 is not set
 # CONFIG_SND_SOC_BD28623 is not set
 # CONFIG_SND_SOC_BT_SCO is not set
+# CONFIG_SND_SOC_CHV3_CODEC is not set
+# CONFIG_SND_SOC_CHV3_I2S is not set
 # CONFIG_SND_SOC_CS35L32 is not set
 # CONFIG_SND_SOC_CS35L33 is not set
 # CONFIG_SND_SOC_CS35L34 is not set
@@ -6209,6 +6350,8 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_CS35L41_SPI is not set
 # CONFIG_SND_SOC_CS35L45_I2C is not set
 # CONFIG_SND_SOC_CS35L45_SPI is not set
+# CONFIG_SND_SOC_CS35L56_I2C is not set
+# CONFIG_SND_SOC_CS35L56_SPI is not set
 # CONFIG_SND_SOC_CS4234 is not set
 # CONFIG_SND_SOC_CS4265 is not set
 # CONFIG_SND_SOC_CS4270 is not set
@@ -6252,6 +6395,7 @@ CONFIG_SND_PROC_FS=y
 # CONFIG_SND_SOC_GTM601 is not set
 # CONFIG_SND_SOC_HDA is not set
 # CONFIG_SND_SOC_ICS43432 is not set
+# CONFIG_SND_SOC_IDT821034 is not set
 # CONFIG_SND_SOC_IMG is not set
 # CONFIG_SND_SOC_IMX_AUDMIX is not set
 # CONFIG_SND_SOC_IMX_AUDMUX is not set
@@ -6300,6 +6444,8 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 # CONFIG_SND_SOC_JZ4725B_CODEC is not set
 # CONFIG_SND_SOC_JZ4740_CODEC is not set
 # CONFIG_SND_SOC_JZ4770_CODEC is not set
+# CONFIG_SND_SOC_LOONGSON_CARD is not set
+# CONFIG_SND_SOC_LOONGSON_I2S_PCI is not set
 # CONFIG_SND_SOC_LPASS_RX_MACRO is not set
 # CONFIG_SND_SOC_LPASS_TX_MACRO is not set
 # CONFIG_SND_SOC_LPASS_VA_MACRO is not set
@@ -6307,9 +6453,11 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 # CONFIG_SND_SOC_MA120X0P is not set
 # CONFIG_SND_SOC_MAX9759 is not set
 # CONFIG_SND_SOC_MAX98088 is not set
+# CONFIG_SND_SOC_MAX98090 is not set
 # CONFIG_SND_SOC_MAX98357A is not set
 # CONFIG_SND_SOC_MAX98373 is not set
 # CONFIG_SND_SOC_MAX98373_I2C is not set
+# CONFIG_SND_SOC_MAX98388 is not set
 # CONFIG_SND_SOC_MAX98390 is not set
 # CONFIG_SND_SOC_MAX98396 is not set
 # CONFIG_SND_SOC_MAX98504 is not set
@@ -6332,6 +6480,7 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 # CONFIG_SND_SOC_MT8173 is not set
 # CONFIG_SND_SOC_MT8183 is not set
 # CONFIG_SND_SOC_MT8186 is not set
+# CONFIG_SND_SOC_MT8188 is not set
 # CONFIG_SND_SOC_MT8192 is not set
 # CONFIG_SND_SOC_MT8195 is not set
 # CONFIG_SND_SOC_MTK_BTCVSD is not set
@@ -6355,6 +6504,7 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 # CONFIG_SND_SOC_PCM5102A is not set
 # CONFIG_SND_SOC_PCM512x_I2C is not set
 # CONFIG_SND_SOC_PCM512x_SPI is not set
+# CONFIG_SND_SOC_PEB2466 is not set
 # CONFIG_SND_SOC_QCOM is not set
 # CONFIG_SND_SOC_RK3328 is not set
 # CONFIG_SND_SOC_RK817 is not set
@@ -6369,6 +6519,7 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 # CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set
 # CONFIG_SND_SOC_SIMPLE_MUX is not set
 # CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
+# CONFIG_SND_SOC_SMA1303 is not set
 # CONFIG_SND_SOC_SOF_TOPLEVEL is not set
 # CONFIG_SND_SOC_SPDIF is not set
 # CONFIG_SND_SOC_SRC4XXX_I2C is not set
@@ -6376,6 +6527,7 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 # CONFIG_SND_SOC_SSM2518 is not set
 # CONFIG_SND_SOC_SSM2602_I2C is not set
 # CONFIG_SND_SOC_SSM2602_SPI is not set
+# CONFIG_SND_SOC_SSM3515 is not set
 # CONFIG_SND_SOC_SSM4567 is not set
 # CONFIG_SND_SOC_STA32X is not set
 # CONFIG_SND_SOC_STA350 is not set
@@ -6385,6 +6537,7 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 # CONFIG_SND_SOC_TAS2764 is not set
 # CONFIG_SND_SOC_TAS2770 is not set
 # CONFIG_SND_SOC_TAS2780 is not set
+# CONFIG_SND_SOC_TAS2781_I2C is not set
 # CONFIG_SND_SOC_TAS5086 is not set
 # CONFIG_SND_SOC_TAS571X is not set
 # CONFIG_SND_SOC_TAS5720 is not set
@@ -6430,6 +6583,7 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 # CONFIG_SND_SOC_WM8904 is not set
 # CONFIG_SND_SOC_WM8940 is not set
 # CONFIG_SND_SOC_WM8960 is not set
+# CONFIG_SND_SOC_WM8961 is not set
 # CONFIG_SND_SOC_WM8962 is not set
 # CONFIG_SND_SOC_WM8974 is not set
 # CONFIG_SND_SOC_WM8978 is not set
@@ -6453,6 +6607,7 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
 CONFIG_SND_USB=y
 # CONFIG_SND_USB_6FIRE is not set
 # CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set
 # CONFIG_SND_USB_CAIAQ is not set
 # CONFIG_SND_USB_HIFACE is not set
 # CONFIG_SND_USB_POD is not set
@@ -6541,6 +6696,7 @@ CONFIG_SND_X86=y
 # CONFIG_SPI_OCTEON is not set
 # CONFIG_SPI_OC_TINY is not set
 # CONFIG_SPI_ORION is not set
+# CONFIG_SPI_PCI1XXXX is not set
 # CONFIG_SPI_PL022 is not set
 # CONFIG_SPI_PPC4xx is not set
 # CONFIG_SPI_PXA2XX is not set
@@ -6551,6 +6707,7 @@ CONFIG_SND_X86=y
 # CONFIG_SPI_SC18IS602 is not set
 # CONFIG_SPI_SIFIVE is not set
 # CONFIG_SPI_SLAVE is not set
+# CONFIG_SPI_SN_F_OSPI is not set
 # CONFIG_SPI_SPIDEV is not set
 # CONFIG_SPI_THUNDERX is not set
 # CONFIG_SPI_TI_QSPI is not set
@@ -6567,9 +6724,10 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
 # CONFIG_SPS30_SERIAL is not set
 CONFIG_SQUASHFS=y
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
-# CONFIG_SQUASHFS_DECOMP_MULTI is not set
-CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
-# CONFIG_SQUASHFS_DECOMP_SINGLE is not set
+# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set
+# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set
+CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU=y
+# CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE is not set
 CONFIG_SQUASHFS_EMBEDDED=y
 # CONFIG_SQUASHFS_FILE_CACHE is not set
 CONFIG_SQUASHFS_FILE_DIRECT=y
@@ -6647,6 +6805,8 @@ CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES=y
 # CONFIG_SUSPEND is not set
 # CONFIG_SUSPEND_SKIP_SYNC is not set
 CONFIG_SWAP=y
+# CONFIG_SWIOTLB is not set
+# CONFIG_SWIOTLB_DYNAMIC is not set
 # CONFIG_SWCONFIG is not set
 # CONFIG_SWCONFIG_B53 is not set
 # CONFIG_SWCONFIG_B53_MDIO_DRIVER is not set
@@ -6742,6 +6902,7 @@ CONFIG_TCP_CONG_CUBIC=y
 # CONFIG_TEST_BPF is not set
 # CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set
 # CONFIG_TEST_DEBUG_VIRTUAL is not set
+# CONFIG_TEST_DHRY is not set
 # CONFIG_TEST_DIV64 is not set
 # CONFIG_TEST_DYNAMIC_DEBUG is not set
 # CONFIG_TEST_FIRMWARE is not set
@@ -6783,6 +6944,7 @@ CONFIG_TEXTSEARCH=y
 # CONFIG_TEXTSEARCH_FSM is not set
 # CONFIG_TEXTSEARCH_KMP is not set
 # CONFIG_THERMAL is not set
+# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set
 # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
@@ -6833,8 +6995,10 @@ CONFIG_TINY_RCU=y
 # CONFIG_TI_ADC128S052 is not set
 # CONFIG_TI_ADC161S626 is not set
 # CONFIG_TI_ADS1015 is not set
+# CONFIG_TI_ADS1100 is not set
 # CONFIG_TI_ADS124S08 is not set
 # CONFIG_TI_ADS131E08 is not set
+# CONFIG_TI_ADS7924 is not set
 # CONFIG_TI_ADS7950 is not set
 # CONFIG_TI_ADS8344 is not set
 # CONFIG_TI_ADS8688 is not set
@@ -6850,9 +7014,11 @@ CONFIG_TINY_RCU=y
 # CONFIG_TI_DAC7612 is not set
 # CONFIG_TI_DAVINCI_CPDMA is not set
 # CONFIG_TI_DAVINCI_MDIO is not set
+# CONFIG_TI_LMP92064 is not set
 # CONFIG_TI_ST is not set
 # CONFIG_TI_SYSCON_RESET is not set
 # CONFIG_TI_TLC4541 is not set
+# CONFIG_TI_TMAG5273 is not set
 # CONFIG_TI_TSC2046 is not set
 # CONFIG_TLAN is not set
 # CONFIG_TLS is not set
@@ -6865,6 +7031,7 @@ CONFIG_TINY_RCU=y
 CONFIG_TMPFS=y
 # CONFIG_TMPFS_INODE64 is not set
 # CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_TMPFS_QUOTA is not set
 CONFIG_TMPFS_XATTR=y
 # CONFIG_TOPSTAR_LAPTOP is not set
 # CONFIG_TORTURE_TEST is not set
@@ -6890,6 +7057,7 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
 # CONFIG_TOUCHSCREEN_CYTTSP4_I2C is not set
 # CONFIG_TOUCHSCREEN_CYTTSP4_SPI is not set
+# CONFIG_TOUCHSCREEN_CYTTSP5 is not set
 # CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
 # CONFIG_TOUCHSCREEN_CYTTSP_I2C is not set
 # CONFIG_TOUCHSCREEN_CYTTSP_SPI is not set
@@ -6909,10 +7077,12 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_GUNZE is not set
 # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
 # CONFIG_TOUCHSCREEN_HIDEEP is not set
+# CONFIG_TOUCHSCREEN_HIMAX_HX83112B is not set
 # CONFIG_TOUCHSCREEN_HP600 is not set
 # CONFIG_TOUCHSCREEN_HP7XX is not set
 # CONFIG_TOUCHSCREEN_HTCPEN is not set
 # CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set
+# CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX is not set
 # CONFIG_TOUCHSCREEN_ILI210X is not set
 # CONFIG_TOUCHSCREEN_ILITEK is not set
 # CONFIG_TOUCHSCREEN_IMAGIS is not set
@@ -6921,6 +7091,7 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_IPAQ_MICRO is not set
 # CONFIG_TOUCHSCREEN_IPROC is not set
 # CONFIG_TOUCHSCREEN_IQS5XX is not set
+# CONFIG_TOUCHSCREEN_IQS7211 is not set
 # CONFIG_TOUCHSCREEN_LPC32XX is not set
 # CONFIG_TOUCHSCREEN_MAX11801 is not set
 # CONFIG_TOUCHSCREEN_MC13783 is not set
@@ -6933,6 +7104,7 @@ CONFIG_TMPFS_XATTR=y
 # CONFIG_TOUCHSCREEN_MTOUCH is not set
 # CONFIG_TOUCHSCREEN_MX25 is not set
 # CONFIG_TOUCHSCREEN_MXS_LRADC is not set
+# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set
 # CONFIG_TOUCHSCREEN_PCAP is not set
 # CONFIG_TOUCHSCREEN_PENMOUNT is not set
 # CONFIG_TOUCHSCREEN_PIXCIR is not set
@@ -7476,6 +7648,7 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_USERFAULTFD is not set
 # CONFIG_USERIO is not set
 # CONFIG_USER_DECRYPTED_DATA is not set
+# CONFIG_USER_EVENTS is not set
 # CONFIG_USE_OF is not set
 # CONFIG_UTS_NS is not set
 # CONFIG_UWB is not set
@@ -7485,6 +7658,7 @@ CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 # CONFIG_V4L_TEST_DRIVERS is not set
 # CONFIG_VALIDATE_FS_PARSER is not set
 # CONFIG_VBOXGUEST is not set
+# CONFIG_VCAP is not set
 # CONFIG_VCNL3020 is not set
 # CONFIG_VCNL4000 is not set
 # CONFIG_VCNL4035 is not set
@@ -7562,8 +7736,12 @@ CONFIG_VHOST_MENU=y
 # CONFIG_VIDEO_CX88 is not set
 # CONFIG_VIDEO_DEV is not set
 # CONFIG_VIDEO_DM6446_CCDC is not set
+# CONFIG_VIDEO_DS90UB913 is not set
+# CONFIG_VIDEO_DS90UB953 is not set
+# CONFIG_VIDEO_DS90UB960 is not set
 # CONFIG_VIDEO_DT3155 is not set
 # CONFIG_VIDEO_DW9714 is not set
+# CONFIG_VIDEO_DW9719 is not set
 # CONFIG_VIDEO_DW9768 is not set
 # CONFIG_VIDEO_DW9807_VCM is not set
 # CONFIG_VIDEO_EM28XX is not set
@@ -7688,9 +7866,11 @@ CONFIG_VHOST_MENU=y
 # CONFIG_VIDEO_SUN6I_CSI is not set
 # CONFIG_VIDEO_SUN8I_A83T_MIPI_CSI2 is not set
 # CONFIG_VIDEO_SR030PC30 is not set
+# CONFIG_VIDEO_STK1160 is not set
 # CONFIG_VIDEO_STK1160_COMMON is not set
 # CONFIG_VIDEO_ST_MIPID02 is not set
 # CONFIG_VIDEO_TC358743 is not set
+# CONFIG_VIDEO_TC358746 is not set
 # CONFIG_VIDEO_TDA1997X is not set
 # CONFIG_VIDEO_TDA7432 is not set
 # CONFIG_VIDEO_TDA9840 is not set
@@ -7846,6 +8026,8 @@ CONFIG_WLAN=y
 # CONFIG_WLAN_VENDOR_TI is not set
 # CONFIG_WLAN_VENDOR_ZYDAS is not set
 # CONFIG_WLCORE is not set
+# CONFIG_WPCM450_SOC is not set
+# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set
 CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
 # CONFIG_WQ_WATCHDOG is not set
 # CONFIG_WWAN is not set
@@ -7855,6 +8037,7 @@ CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
 # CONFIG_X509_CERTIFICATE_PARSER is not set
 # CONFIG_X86_PKG_TEMP_THERMAL is not set
 CONFIG_X86_SYSFB=y
+# CONFIG_X9250 is not set
 # CONFIG_XDP_SOCKETS is not set
 # CONFIG_XEN is not set
 # CONFIG_XEN_GRANT_DMA_ALLOC is not set
@@ -7873,6 +8056,7 @@ CONFIG_XFRM=y
 # CONFIG_XFS_POSIX_ACL is not set
 # CONFIG_XFS_QUOTA is not set
 # CONFIG_XFS_RT is not set
+# CONFIG_XFS_SUPPORT_ASCII_CI is not set
 # CONFIG_XFS_SUPPORT_V4 is not set
 # CONFIG_XFS_WARN is not set
 # CONFIG_XILINX_AXI_EMAC is not set
@@ -7884,7 +8068,9 @@ CONFIG_XFRM=y
 # CONFIG_XILINX_SDFEC is not set
 # CONFIG_XILINX_VCU is not set
 # CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_XILINX_WINDOW_WATCHDOG is not set
 # CONFIG_XILINX_XADC is not set
+# CONFIG_XILINX_XDMA is not set
 # CONFIG_XILINX_ZYNQMP_DMA is not set
 # CONFIG_XILINX_ZYNQMP_DPDMA is not set
 # CONFIG_XILLYBUS is not set
@@ -7931,6 +8117,8 @@ CONFIG_ZONE_DMA=y
 # CONFIG_ZRAM_DEF_COMP_LZORLE is not set
 # CONFIG_ZRAM_DEF_COMP_ZSTD is not set
 # CONFIG_ZRAM_MEMORY_TRACKING is not set
+# CONFIG_ZRAM_MULTI_COMP is not set
 # CONFIG_ZSMALLOC is not set
+CONFIG_ZSMALLOC_CHAIN_SIZE=8
 # CONFIG_ZSWAP is not set
 # CONFIG_ZX_TDM is not set



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:56 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:56 -0400
Subject: [openwrt/openwrt]  kernel: modules: netdevices: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15339.1710185717.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ad2906b40573b35d01d5de636fd41edcc9b6a26d

commit ad2906b40573b35d01d5de636fd41edcc9b6a26d
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 2 04:21:29 2024 +0000

    kernel: modules: netdevices: adapt for kernel 6.6
    
    Adapt netdevices kmods for building under kernel 6.6:
    * Add missing module dependency for kmod-stmmac-core on kmod-of-mdio.
    * Invert criteria to allow Airoha EN8811H PHY driver to build with
      Linux 6.1 as well as Linux 6.6.
    * Mellanox mlx5 driver started exposing thermal sensors and now it requires
      hwmon
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/kernel/linux/modules/netdevices.mk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk
index 72504d8de7..d43866ed9b 100644
--- a/package/kernel/linux/modules/netdevices.mk
+++ b/package/kernel/linux/modules/netdevices.mk
@@ -378,7 +378,7 @@ $(eval $(call KernelPackage,phy-smsc))
 define KernelPackage/phy-airoha-en8811h
   SUBMENU:=$(NETWORK_DEVICES_MENU)
   TITLE:=Airoha EN8811H 2.5G Ethernet PHY
-  DEPENDS:=+airoha-en8811h-firmware +kmod-libphy @LINUX_6_1
+  DEPENDS:=+airoha-en8811h-firmware +kmod-libphy @!LINUX_5_15
   KCONFIG:=CONFIG_AIR_EN8811H_PHY
   FILES:= \
    $(LINUX_DIR)/drivers/net/phy/air_en8811h.ko
@@ -1360,7 +1360,7 @@ $(eval $(call KernelPackage,mlx4-core))
 define KernelPackage/mlx5-core
   SUBMENU:=$(NETWORK_DEVICES_MENU)
   TITLE:=Mellanox ConnectX(R) mlx5 core Network Driver
-  DEPENDS:=@PCI_SUPPORT +kmod-ptp +kmod-mlxfw
+  DEPENDS:=@PCI_SUPPORT +kmod-ptp +kmod-mlxfw +LINUX_6_6:kmod-hwmon-core
   FILES:=$(LINUX_DIR)/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko
   KCONFIG:= CONFIG_MLX5_CORE \
 	CONFIG_MLX5_CORE_EN=y \
@@ -1573,7 +1573,7 @@ $(eval $(call KernelPackage,pcs-xpcs))
 define KernelPackage/stmmac-core
   SUBMENU:=$(NETWORK_DEVICES_MENU)
   TITLE:=Synopsis Ethernet Controller core (NXP,STMMicro,others)
-  DEPENDS:=@TARGET_x86_64||TARGET_armsr_armv8 +kmod-pcs-xpcs +kmod-ptp
+  DEPENDS:=@TARGET_x86_64||TARGET_armsr_armv8 +kmod-pcs-xpcs +LINUX_6_6:kmod-of-mdio +kmod-ptp
   KCONFIG:=CONFIG_STMMAC_ETH \
     CONFIG_STMMAC_SELFTESTS=n \
     CONFIG_STMMAC_PLATFORM \



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:00 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:00 -0400
Subject: [openwrt/openwrt]  kernel: modules: video: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15340.1710185720.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5b08b56007205b9703f207c8f6235ca83ba359af

commit 5b08b56007205b9703f207c8f6235ca83ba359af
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sat Jan 6 16:19:10 2024 +0800

    kernel: modules: video: adapt for kernel 6.6
    
    Adapt video kmods for building under kernel 6.6:
    * Add drm_exec.ko and drm_suballoc_helper.ko for kmod-drm as they
    are added since 6.6 and 6.4
    * Add uvc.ko for kmod-video-uvc as related contents was split as a
    new module since 6.3
    
    Signed-off-by: Tan Zien <nabsdh9 at gmail.com>
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/linux/modules/video.mk | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
index 982bcb1db0..e3a350e781 100644
--- a/package/kernel/linux/modules/video.mk
+++ b/package/kernel/linux/modules/video.mk
@@ -246,11 +246,15 @@ define KernelPackage/drm
   HIDDEN:=1
   DEPENDS:=+kmod-dma-buf +kmod-i2c-core +PACKAGE_kmod-backlight:kmod-backlight \
 	+kmod-fb
-  KCONFIG:=CONFIG_DRM
+  KCONFIG:=CONFIG_DRM \
+	CONFIG_DRM_EXEC at ge6.6 \
+	CONFIG_DRM_SUBALLOC_HELPER at ge6.4
   FILES:= \
 	$(LINUX_DIR)/drivers/gpu/drm/drm.ko \
-	$(LINUX_DIR)/drivers/gpu/drm/drm_panel_orientation_quirks.ko
-  AUTOLOAD:=$(call AutoLoad,05,drm)
+	$(LINUX_DIR)/drivers/gpu/drm/drm_panel_orientation_quirks.ko \
+	$(LINUX_DIR)/drivers/gpu/drm/drm_exec.ko at ge6.6 \
+	$(LINUX_DIR)/drivers/gpu/drm/drm_suballoc_helper.ko at ge6.4
+  AUTOLOAD:=$(call AutoLoad,05,drm_exec at ge6.6 drm_suballoc_helper at ge6.4 drm)
 endef
 
 define KernelPackage/drm/description
@@ -262,7 +266,7 @@ $(eval $(call KernelPackage,drm))
 define KernelPackage/drm-buddy
   SUBMENU:=$(VIDEO_MENU)
   TITLE:=A page based buddy allocator
-  DEPENDS:=@DISPLAY_SUPPORT +kmod-drm @LINUX_6_1
+  DEPENDS:=@DISPLAY_SUPPORT +kmod-drm @LINUX_6_1||LINUX_6_6
   KCONFIG:=CONFIG_DRM_BUDDY
   FILES:= $(LINUX_DIR)/drivers/gpu/drm/drm_buddy.ko
   AUTOLOAD:=$(call AutoProbe,drm_buddy)
@@ -277,7 +281,7 @@ $(eval $(call KernelPackage,drm-buddy))
 define KernelPackage/drm-display-helper
   SUBMENU:=$(VIDEO_MENU)
   TITLE:=DRM helpers for display adapters drivers
-  DEPENDS:=@DISPLAY_SUPPORT +kmod-drm-kms-helper @LINUX_6_1
+  DEPENDS:=@DISPLAY_SUPPORT +kmod-drm-kms-helper @LINUX_6_1||LINUX_6_6
   KCONFIG:=CONFIG_DRM_DISPLAY_HELPER
   FILES:=$(LINUX_DIR)/drivers/gpu/drm/display/drm_display_helper.ko
   AUTOLOAD:=$(call AutoProbe,drm_display_helper)
@@ -349,7 +353,8 @@ define KernelPackage/drm-amdgpu
 	CONFIG_DRM_AMD_DC=y \
 	CONFIG_DEBUG_KERNEL_DC=n
   FILES:=$(LINUX_DIR)/drivers/gpu/drm/amd/amdgpu/amdgpu.ko \
-	$(LINUX_DIR)/drivers/gpu/drm/scheduler/gpu-sched.ko
+	$(LINUX_DIR)/drivers/gpu/drm/scheduler/gpu-sched.ko \
+	$(LINUX_DIR)/drivers/gpu/drm/amd/amdxcp/amdxcp.ko at ge6.5
   AUTOLOAD:=$(call AutoProbe,amdgpu)
 endef
 
@@ -557,9 +562,10 @@ $(eval $(call KernelPackage,video-pwc))
 define KernelPackage/video-uvc
   TITLE:=USB Video Class (UVC) support
   DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-video-videobuf2 +kmod-input-core
-  KCONFIG:= CONFIG_USB_VIDEO_CLASS
-  FILES:=$(LINUX_DIR)/drivers/media/$(V4L2_USB_DIR)/uvc/uvcvideo.ko
-  AUTOLOAD:=$(call AutoProbe,uvcvideo)
+  KCONFIG:= CONFIG_USB_VIDEO_CLASS CONFIG_UVC_COMMON at ge6.3
+  FILES:=$(LINUX_DIR)/drivers/media/$(V4L2_USB_DIR)/uvc/uvcvideo.ko \
+	$(LINUX_DIR)/drivers/media/common/uvc.ko at ge6.3
+  AUTOLOAD:=$(call AutoProbe,uvc at ge6.3 uvcvideo)
   $(call AddDepends/camera)
 endef
 



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:10 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:10 -0400
Subject: [openwrt/openwrt]  ath10k-ct: fix build error on linux kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15341.1710185723.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ba521e5cf29815aa0c1f2258c6e3ecf42d28c237

commit ba521e5cf29815aa0c1f2258c6e3ecf42d28c237
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Mar 1 00:47:56 2024 +0800

    ath10k-ct: fix build error on linux kernel 6.6
    
    Fix a build error caused by fortify checking memcpy data range.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 .../ath10k-ct/patches/300-fix-fortify-checking-error.patch    | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/package/kernel/ath10k-ct/patches/300-fix-fortify-checking-error.patch b/package/kernel/ath10k-ct/patches/300-fix-fortify-checking-error.patch
new file mode 100644
index 0000000000..6966a5a487
--- /dev/null
+++ b/package/kernel/ath10k-ct/patches/300-fix-fortify-checking-error.patch
@@ -0,0 +1,11 @@
+--- a/ath10k-6.4/wmi.h
++++ b/ath10k-6.4/wmi.h
+@@ -6341,7 +6341,7 @@ struct qca9880_set_ctl_table_cmd {
+ 	__le32 ctl_len; /* in bytes.  This may be ignored in firmware,
+ 			 * make sure ctl_info data is sizeof(qca9880_power_ctl) */
+ 	/** ctl array (len adjusted to  number of words) */
+-	__le32 ctl_info[1]; /* data would be the qca9880_power_ctl table above */
++	__le32 ctl_info[]; /* data would be the qca9880_power_ctl table above */
+ };
+ 
+ /* Used by:   WMI_PDEV_SET_MIMOGAIN_TABLE_CMDID */



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:02 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:02 -0400
Subject: [openwrt/openwrt]  kernel: modules: hwmon: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15342.1710185727.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/faf3d80bf1751e457af73fa22f2d2f3517f2d93f

commit faf3d80bf1751e457af73fa22f2d2f3517f2d93f
Author: Tan Zien <nabsdh9 at gmail.com>
AuthorDate: Mon Mar 4 00:57:03 2024 +0800

    kernel: modules: hwmon: adapt for kernel 6.6
    
    Adapt hwmon kmods for building under kernel 6.6:
    * ad7418 now requires regmap
    * Invert criteria to allow adt7410 be built with Linux 6.1 as well
      as Linux 6.6.
    
    Signed-off-by: Tan Zien <nabsdh9 at gmail.com>
---
 package/kernel/linux/modules/hwmon.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/hwmon.mk b/package/kernel/linux/modules/hwmon.mk
index 8afe315344..0d105dcc9e 100644
--- a/package/kernel/linux/modules/hwmon.mk
+++ b/package/kernel/linux/modules/hwmon.mk
@@ -34,7 +34,7 @@ define KernelPackage/hwmon-ad7418
   KCONFIG:=CONFIG_SENSORS_AD7418
   FILES:=$(LINUX_DIR)/drivers/hwmon/ad7418.ko
   AUTOLOAD:=$(call AutoLoad,60,ad7418 ad7418)
-  $(call AddDepends/hwmon,+kmod-i2c-core)
+  $(call AddDepends/hwmon,+kmod-i2c-core +LINUX_6_6:kmod-regmap-core)
 endef
 
 define KernelPackage/hwmon-ad7418/description
@@ -52,7 +52,7 @@ define KernelPackage/hwmon-adt7410
 	$(LINUX_DIR)/drivers/hwmon/adt7x10.ko \
 	$(LINUX_DIR)/drivers/hwmon/adt7410.ko
   AUTOLOAD:=$(call AutoLoad,60,adt7x10 adt7410)
-  $(call AddDepends/hwmon,+kmod-i2c-core +LINUX_6_1:kmod-regmap-core)
+  $(call AddDepends/hwmon,+kmod-i2c-core +!LINUX_5_15:kmod-regmap-core)
 endef
 
 define KernelPackage/hwmon-adt7410/description



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:07 -0400
Subject: [openwrt/openwrt]  mac80211: fix build with linux kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15343.1710185731.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a325c5fa014c534a3daf69f3cec99f0fc7b9b7e9

commit a325c5fa014c534a3daf69f3cec99f0fc7b9b7e9
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Thu Feb 29 23:56:40 2024 +0800

    mac80211: fix build with linux kernel 6.6
    
    Fix build failure with linux kernel 6.6
    
    Related kernel commits:
    
    20b0b53aca43 (genetlink: introduce split op representation)
    
    bffcc6882a1b (genetlink: remove userhdr from struct genl_info)
    
    e9a688bcb193 (random: use rejection sampling for uniform bounded
    random integers)
    
    3c202d14a9d7 (prandom: remove prandom_u32_max())
    
    3d2f20ad46f8 (wifi: iwlwifi: Use generic thermal_zone_get_trip()
    function)
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 .../build/230-backport_genl_info_userhdr.patch     |  32 +++++
 .../build/240-backport_genl_split_ops.patch        |  32 +++++
 .../build/250-backport_iwlwifi_thermal.patch       | 160 +++++++++++++++++++++
 ...a-randomize-BA-session-dialog-token-alloc.patch |   6 +-
 4 files changed, 229 insertions(+), 1 deletion(-)

diff --git a/package/kernel/mac80211/patches/build/230-backport_genl_info_userhdr.patch b/package/kernel/mac80211/patches/build/230-backport_genl_info_userhdr.patch
new file mode 100644
index 0000000000..38f86dc37a
--- /dev/null
+++ b/package/kernel/mac80211/patches/build/230-backport_genl_info_userhdr.patch
@@ -0,0 +1,32 @@
+--- a/backport-include/net/genetlink.h
++++ b/backport-include/net/genetlink.h
+@@ -3,6 +3,7 @@
+ #include_next <net/genetlink.h>
+ #include <linux/version.h>
+ 
++#if LINUX_VERSION_IS_LESS(4,12,0)
+ static inline void __bp_genl_info_userhdr_set(struct genl_info *info,
+ 					      void *userhdr)
+ {
+@@ -14,7 +15,6 @@ static inline void *__bp_genl_info_userh
+ 	return info->userhdr;
+ }
+ 
+-#if LINUX_VERSION_IS_LESS(4,12,0)
+ #define GENL_SET_ERR_MSG(info, msg) NL_SET_ERR_MSG(genl_info_extack(info), msg)
+ 
+ static inline int genl_err_attr(struct genl_info *info, int err,
+@@ -44,11 +44,13 @@ static inline struct netlink_ext_ack *ge
+ #endif
+ }
+ 
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ /* this gets put in place of info->userhdr, since we use that above */
+ static inline void *genl_info_userhdr(struct genl_info *info)
+ {
+ 	return (u8 *)info->genlhdr + GENL_HDRLEN;
+ }
++#endif
+ 
+ #if LINUX_VERSION_IS_LESS(4,10,0)
+ #define __genl_ro_after_init
diff --git a/package/kernel/mac80211/patches/build/240-backport_genl_split_ops.patch b/package/kernel/mac80211/patches/build/240-backport_genl_split_ops.patch
new file mode 100644
index 0000000000..b22804cf92
--- /dev/null
+++ b/package/kernel/mac80211/patches/build/240-backport_genl_split_ops.patch
@@ -0,0 +1,32 @@
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -16442,8 +16442,14 @@ static u32 nl80211_internal_flags[] = {
+ #undef SELECTOR
+ };
+ 
++#if LINUX_VERSION_IS_LESS(6,2,0)
+ static int nl80211_pre_doit(const struct genl_ops *ops, struct sk_buff *skb,
+ 			    struct genl_info *info)
++#else
++static int nl80211_pre_doit(const struct genl_split_ops *ops,
++			    struct sk_buff *skb,
++			    struct genl_info *info)
++#endif
+ {
+ 	struct cfg80211_registered_device *rdev = NULL;
+ 	struct wireless_dev *wdev = NULL;
+@@ -16543,8 +16549,14 @@ out_unlock:
+ 	return err;
+ }
+ 
++#if LINUX_VERSION_IS_LESS(6,2,0)
+ static void nl80211_post_doit(const struct genl_ops *ops, struct sk_buff *skb,
+ 			      struct genl_info *info)
++#else
++static void nl80211_post_doit(const struct genl_split_ops *ops,
++			      struct sk_buff *skb,
++			      struct genl_info *info)
++#endif
+ {
+ 	u32 internal_flags = nl80211_internal_flags[ops->internal_flags];
+ 
diff --git a/package/kernel/mac80211/patches/build/250-backport_iwlwifi_thermal.patch b/package/kernel/mac80211/patches/build/250-backport_iwlwifi_thermal.patch
new file mode 100644
index 0000000000..631fdd710d
--- /dev/null
+++ b/package/kernel/mac80211/patches/build/250-backport_iwlwifi_thermal.patch
@@ -0,0 +1,160 @@
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
+@@ -531,7 +531,11 @@ struct iwl_mvm_tt_mgmt {
+  * @tzone: thermal zone device data
+ */
+ struct iwl_mvm_thermal_device {
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	s16 temp_trips[IWL_MAX_DTS_TRIPS];
++#else
++	struct thermal_trip trips[IWL_MAX_DTS_TRIPS];
++#endif
+ 	u8 fw_trips_index[IWL_MAX_DTS_TRIPS];
+ 	struct thermal_zone_device *tzone;
+ };
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c
+@@ -573,6 +573,7 @@ int iwl_mvm_send_temp_report_ths_cmd(str
+ 	 * and uncompressed, the FW should get it compressed and sorted
+ 	 */
+ 
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	/* compress temp_trips to cmd array, remove uninitialized values*/
+ 	for (i = 0; i < IWL_MAX_DTS_TRIPS; i++) {
+ 		if (mvm->tz_device.temp_trips[i] != S16_MIN) {
+@@ -580,6 +581,15 @@ int iwl_mvm_send_temp_report_ths_cmd(str
+ 				cpu_to_le16(mvm->tz_device.temp_trips[i]);
+ 		}
+ 	}
++#else
++	/* compress trips to cmd array, remove uninitialized values*/
++	for (i = 0; i < IWL_MAX_DTS_TRIPS; i++) {
++		if (mvm->tz_device.trips[i].temperature != INT_MIN) {
++			cmd.thresholds[idx++] =
++				cpu_to_le16((s16)(mvm->tz_device.trips[i].temperature / 1000));
++		}
++	}
++#endif
+ 	cmd.num_temps = cpu_to_le32(idx);
+ 
+ 	if (!idx)
+@@ -593,8 +603,13 @@ int iwl_mvm_send_temp_report_ths_cmd(str
+ 	 */
+ 	for (i = 0; i < idx; i++) {
+ 		for (j = 0; j < IWL_MAX_DTS_TRIPS; j++) {
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 			if (le16_to_cpu(cmd.thresholds[i]) ==
+ 				mvm->tz_device.temp_trips[j])
++#else
++			if ((int)(le16_to_cpu(cmd.thresholds[i]) * 1000) ==
++				mvm->tz_device.trips[j].temperature)
++#endif
+ 				mvm->tz_device.fw_trips_index[i] = j;
+ 		}
+ 	}
+@@ -638,6 +653,7 @@ out:
+ 	return ret;
+ }
+ 
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ static int iwl_mvm_tzone_get_trip_temp(struct thermal_zone_device *device,
+ 				       int trip, int *temp)
+ {
+@@ -661,14 +677,19 @@ static int iwl_mvm_tzone_get_trip_type(s
+ 
+ 	return 0;
+ }
++#endif
+ 
+ static int iwl_mvm_tzone_set_trip_temp(struct thermal_zone_device *device,
+ 				       int trip, int temp)
+ {
+ 	struct iwl_mvm *mvm = thermal_zone_device_priv(device);
+ 	struct iwl_mvm_thermal_device *tzone;
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	int i, ret;
+ 	s16 temperature;
++#else
++	int ret;
++#endif
+ 
+ 	mutex_lock(&mvm->mutex);
+ 
+@@ -678,17 +699,21 @@ static int iwl_mvm_tzone_set_trip_temp(s
+ 		goto out;
+ 	}
+ 
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	if (trip < 0 || trip >= IWL_MAX_DTS_TRIPS) {
+ 		ret = -EINVAL;
+ 		goto out;
+ 	}
++#endif
+ 
+ 	if ((temp / 1000) > S16_MAX) {
+ 		ret = -EINVAL;
+ 		goto out;
+ 	}
+ 
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	temperature = (s16)(temp / 1000);
++#endif
+ 	tzone = &mvm->tz_device;
+ 
+ 	if (!tzone) {
+@@ -696,6 +721,7 @@ static int iwl_mvm_tzone_set_trip_temp(s
+ 		goto out;
+ 	}
+ 
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	/* no updates*/
+ 	if (tzone->temp_trips[trip] == temperature) {
+ 		ret = 0;
+@@ -711,6 +737,7 @@ static int iwl_mvm_tzone_set_trip_temp(s
+ 	}
+ 
+ 	tzone->temp_trips[trip] = temperature;
++#endif
+ 
+ 	ret = iwl_mvm_send_temp_report_ths_cmd(mvm);
+ out:
+@@ -720,8 +747,10 @@ out:
+ 
+ static  struct thermal_zone_device_ops tzone_ops = {
+ 	.get_temp = iwl_mvm_tzone_get_temp,
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	.get_trip_temp = iwl_mvm_tzone_get_trip_temp,
+ 	.get_trip_type = iwl_mvm_tzone_get_trip_type,
++#endif
+ 	.set_trip_temp = iwl_mvm_tzone_set_trip_temp,
+ };
+ 
+@@ -743,7 +772,12 @@ static void iwl_mvm_thermal_zone_registe
+ 	BUILD_BUG_ON(ARRAY_SIZE(name) >= THERMAL_NAME_LENGTH);
+ 
+ 	sprintf(name, "iwlwifi_%u", atomic_inc_return(&counter) & 0xFF);
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	mvm->tz_device.tzone = thermal_zone_device_register(name,
++#else
++	mvm->tz_device.tzone = thermal_zone_device_register_with_trips(name,
++							mvm->tz_device.trips,
++#endif
+ 							IWL_MAX_DTS_TRIPS,
+ 							IWL_WRITABLE_TRIPS_MSK,
+ 							mvm, &tzone_ops,
+@@ -766,8 +800,15 @@ static void iwl_mvm_thermal_zone_registe
+ 	/* 0 is a valid temperature,
+ 	 * so initialize the array with S16_MIN which invalid temperature
+ 	 */
++#if LINUX_VERSION_IS_LESS(6,6,0)
+ 	for (i = 0 ; i < IWL_MAX_DTS_TRIPS; i++)
+ 		mvm->tz_device.temp_trips[i] = S16_MIN;
++#else
++	for (i = 0 ; i < IWL_MAX_DTS_TRIPS; i++) {
++		mvm->tz_device.trips[i].temperature = INT_MIN;
++		mvm->tz_device.trips[i].type = THERMAL_TRIP_PASSIVE;
++	}
++#endif
+ }
+ 
+ static int iwl_mvm_tcool_get_max_state(struct thermal_cooling_device *cdev,
diff --git a/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch b/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch
index ec1e1d12eb..1034e2c928 100644
--- a/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch
+++ b/package/kernel/mac80211/patches/subsys/301-mac80211-sta-randomize-BA-session-dialog-token-alloc.patch
@@ -28,11 +28,15 @@ Signed-off-by: Johannes Berg <johannes.berg at intel.com>
 
 --- a/net/mac80211/sta_info.c
 +++ b/net/mac80211/sta_info.c
-@@ -561,6 +561,7 @@ __sta_info_alloc(struct ieee80211_sub_if
+@@ -561,6 +561,11 @@ __sta_info_alloc(struct ieee80211_sub_if
  	INIT_WORK(&sta->drv_deliver_wk, sta_deliver_ps_frames);
  	INIT_WORK(&sta->ampdu_mlme.work, ieee80211_ba_session_work);
  	mutex_init(&sta->ampdu_mlme.mtx);
++#if LINUX_VERSION_IS_LESS(6,2,0)
 +	sta->ampdu_mlme.dialog_token_allocator = prandom_u32_max(U8_MAX);
++#else
++	sta->ampdu_mlme.dialog_token_allocator = get_random_u32_below(U8_MAX);
++#endif
  #ifdef CPTCFG_MAC80211_MESH
  	if (ieee80211_vif_is_mesh(&sdata->vif)) {
  		sta->mesh = kzalloc(sizeof(*sta->mesh), gfp);



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:03 -0400
Subject: [openwrt/openwrt]  kernel: crypto: package geniv as a separate module
 for 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15346.1710185734.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b065981e15d454351e04e2c27ad2c13745a1bf7a

commit b065981e15d454351e04e2c27ad2c13745a1bf7a
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Mar 7 14:47:13 2024 +0100

    kernel: crypto: package geniv as a separate module for 6.6
    
    In kernel 6.5 geniv was split from AEAD config symbol, in order to manage
    its dependencies on other code.
    
    So, lets do the same in OpenWrt and split it from aead module so others
    can depend on geniv directly.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index f61f258603..335930cfaa 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -891,6 +891,19 @@ endef
 $(eval $(call KernelPackage,crypto-rng))
 
 
+define KernelPackage/crypto-geniv
+  TITLE:=CryptoAPI Shared IV generator
+  HIDDEN:=1
+  DEPENDS:=+kmod-crypto-rng +kmod-crypto-aead @LINUX_6_6
+  KCONFIG:=CONFIG_CRYPTO_GENIV
+  FILES:=$(LINUX_DIR)/crypto/geniv.ko
+  AUTOLOAD:=$(call AutoLoad,09,geniv)
+  $(call AddDepends/crypto)
+endef
+
+$(eval $(call KernelPackage,crypto-geniv))
+
+
 define KernelPackage/crypto-seqiv
   TITLE:=CryptoAPI Sequence Number IV Generator
   DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:09 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:09 -0400
Subject: [openwrt/openwrt]  rtl8812au-ct: fix build failure on linux kernel
 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15347.1710185737.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/01f04539701c6a08bee3f648ec40dade7aba46cc

commit 01f04539701c6a08bee3f648ec40dade7aba46cc
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Mar 1 00:46:12 2024 +0800

    rtl8812au-ct: fix build failure on linux kernel 6.6
    
    Use the correct return status code to avoid incompatible type error
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 .../rtl8812au-ct/patches/008-fix-ret-status-code-type.patch   | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/package/kernel/rtl8812au-ct/patches/008-fix-ret-status-code-type.patch b/package/kernel/rtl8812au-ct/patches/008-fix-ret-status-code-type.patch
new file mode 100644
index 0000000000..2c776288bf
--- /dev/null
+++ b/package/kernel/rtl8812au-ct/patches/008-fix-ret-status-code-type.patch
@@ -0,0 +1,11 @@
+--- a/core/rtw_bt_mp.c
++++ b/core/rtw_bt_mp.c
+@@ -169,7 +169,7 @@ mptbt_CheckBtRspStatus(
+     PBT_EXT_C2H			pExtC2h
+ )
+ {
+-	BT_CTRL_STATUS	retStatus=BT_OP_STATUS_SUCCESS;
++	BT_CTRL_STATUS	retStatus=BT_STATUS_SUCCESS;
+ 
+ 	switch(pExtC2h->statusCode) {
+ 	case BT_OP_STATUS_SUCCESS:



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:51 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:51 -0400
Subject: [openwrt/openwrt]  generic: 6.6: fix uncompressed kallsyms
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15348.1710185741.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7acb8203c2e61d045c5129bb2c3df0b3a99d0f0b

commit 7acb8203c2e61d045c5129bb2c3df0b3a99d0f0b
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 1 14:15:15 2024 +0100

    generic: 6.6: fix uncompressed kallsyms
    
    Currently, the existing uncompressed kallsym support is causing qualcommax
    boards to hang on boot, and only after earlycon and verbose BUG() prints
    are enabled the trace is visible:
    [    0.000000] ------------[ cut here ]------------
    [    0.000000] kernel BUG at kernel/kallsyms.c:340!
    [    0.000000] Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
    
    Felix has fixed up the uncompressed kallsyms support so modify the current
    patch with the fix.
    All credits for the code go to Felix.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../pending-6.6/203-kallsyms_uncompressed.patch    | 69 ++++++++++++++++++----
 1 file changed, 59 insertions(+), 10 deletions(-)

diff --git a/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
index d935077c05..c23811ed39 100644
--- a/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/pending-6.6/203-kallsyms_uncompressed.patch
@@ -65,17 +65,66 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int absolute_percpu;
  static int base_relative;
  static int lto_clang;
-@@ -469,6 +470,9 @@ static void write_src(void)
+@@ -453,13 +454,15 @@ static void write_src(void)
+ 	}
+ 	printf("\n");
+ 
+-	/*
+-	 * Now that we wrote out the compressed symbol names, restore the
+-	 * original names, which are needed in some of the later steps.
+-	 */
+-	for (i = 0; i < table_cnt; i++) {
+-		expand_symbol(table[i]->sym, table[i]->len, buf);
+-		strcpy((char *)table[i]->sym, buf);
++	if (!uncompressed) {
++		/*
++		 * Now that we wrote out the compressed symbol names, restore the
++		 * original names, which are needed in some of the later steps.
++		 */
++		for (i = 0; i < table_cnt; i++) {
++			expand_symbol(table[i]->sym, table[i]->len, buf);
++			strcpy((char *)table[i]->sym, buf);
++		}
+ 	}
+ 
+ 	output_label("kallsyms_markers");
+@@ -469,20 +472,22 @@ static void write_src(void)
  
  	free(markers);
  
-+	if (uncompressed)
-+		return;
-+
- 	output_label("kallsyms_token_table");
- 	off = 0;
- 	for (i = 0; i < 256; i++) {
-@@ -582,6 +586,9 @@ static unsigned char *find_token(unsigne
+-	output_label("kallsyms_token_table");
+-	off = 0;
+-	for (i = 0; i < 256; i++) {
+-		best_idx[i] = off;
+-		expand_symbol(best_table[i], best_table_len[i], buf);
+-		printf("\t.asciz\t\"%s\"\n", buf);
+-		off += strlen(buf) + 1;
+-	}
+-	printf("\n");
++	if (!uncompressed) {
++		output_label("kallsyms_token_table");
++		off = 0;
++		for (i = 0; i < 256; i++) {
++			best_idx[i] = off;
++			expand_symbol(best_table[i], best_table_len[i], buf);
++			printf("\t.asciz\t\"%s\"\n", buf);
++			off += strlen(buf) + 1;
++		}
++		printf("\n");
+ 
+-	output_label("kallsyms_token_index");
+-	for (i = 0; i < 256; i++)
+-		printf("\t.short\t%d\n", best_idx[i]);
+-	printf("\n");
++		output_label("kallsyms_token_index");
++		for (i = 0; i < 256; i++)
++			printf("\t.short\t%d\n", best_idx[i]);
++		printf("\n");
++	}
+ 
+ 	if (!base_relative)
+ 		output_label("kallsyms_addresses");
+@@ -582,6 +587,9 @@ static unsigned char *find_token(unsigne
  {
  	int i;
  
@@ -85,7 +134,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	for (i = 0; i < len - 1; i++) {
  		if (str[i] == token[0] && str[i+1] == token[1])
  			return &str[i];
-@@ -654,6 +661,9 @@ static void optimize_result(void)
+@@ -654,6 +662,9 @@ static void optimize_result(void)
  {
  	int i, best;
  
@@ -95,7 +144,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	/* using the '\0' symbol last allows compress_symbols to use standard
  	 * fast string functions */
  	for (i = 255; i >= 0; i--) {
-@@ -815,6 +825,7 @@ int main(int argc, char **argv)
+@@ -815,6 +826,7 @@ int main(int argc, char **argv)
  			{"absolute-percpu", no_argument, &absolute_percpu, 1},
  			{"base-relative",   no_argument, &base_relative,   1},
  			{"lto-clang",       no_argument, &lto_clang,       1},



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:57 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:57 -0400
Subject: [openwrt/openwrt]  kernel: modules: usb: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15349.1710185749.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ef523fdb075b2fd0cd96d1a209693f120ab7369c

commit ef523fdb075b2fd0cd96d1a209693f120ab7369c
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sat Jan 6 15:17:17 2024 +0800

    kernel: modules: usb: adapt for kernel 6.6
    
    Adapt usb kmods for building under kernel 6.6:
    * Add kmod-phylink as dependency for usb-net-asix
    * Add kmod-net-selftests as dependency for usb-net-smsc95xx
    * Add kmod-iio-core as dependency for usb-hid-mcp2221 as ADC/DAC
    support was added since 6.2 which requires IIO.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/linux/modules/usb.mk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk
index f4a2113e17..7b680288b9 100644
--- a/package/kernel/linux/modules/usb.mk
+++ b/package/kernel/linux/modules/usb.mk
@@ -1184,7 +1184,7 @@ define KernelPackage/usb-net-asix
   TITLE:=Kernel module for USB-to-Ethernet Asix convertors
   DEPENDS:= \
 	+kmod-libphy +kmod-net-selftests +kmod-mdio-devres +kmod-phy-ax88796b \
-	+LINUX_6_1:kmod-phylink
+	+LINUX_6_1:kmod-phylink +LINUX_6_6:kmod-phylink
   KCONFIG:=CONFIG_USB_NET_AX8817X
   FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/asix.ko
   AUTOLOAD:=$(call AutoProbe,asix)
@@ -1312,7 +1312,7 @@ $(eval $(call KernelPackage,usb-net-smsc75xx))
 
 define KernelPackage/usb-net-smsc95xx
   TITLE:=SMSC LAN95XX based USB 2.0 10/100 ethernet devices
-  DEPENDS:=+kmod-libphy +kmod-phy-smsc +LINUX_6_1:kmod-net-selftests
+  DEPENDS:=+kmod-libphy +kmod-phy-smsc +!LINUX_5_15:kmod-net-selftests
   KCONFIG:=CONFIG_USB_NET_SMSC95XX
   FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/smsc95xx.ko
   AUTOLOAD:=$(call AutoProbe,smsc95xx)
@@ -1605,7 +1605,7 @@ define KernelPackage/usb-hid-mcp2221
   SUBMENU:=$(USB_MENU)
   TITLE:=Microchip USB 2.0 to I2C/UART Protocol Converter with GPIO
   KCONFIG:=CONFIG_HID_MCP2221
-  DEPENDS:=@GPIO_SUPPORT +kmod-usb-hid +kmod-i2c-core
+  DEPENDS:=@GPIO_SUPPORT +kmod-usb-hid +kmod-i2c-core +LINUX_6_6:kmod-iio-core
   FILES:=$(LINUX_DIR)/drivers/hid/hid-mcp2221.ko
   AUTOLOAD:=$(call AutoProbe,hid-mcp2221)
 endef



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:52 -0400
Subject: [openwrt/openwrt]  generic: 6.6: fix realtek PHY detection patch
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15350.1710185752.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f6c27b22f6f84b13ad230dcf3afa7f11efe7a8bc

commit f6c27b22f6f84b13ad230dcf3afa7f11efe7a8bc
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 2 04:48:08 2024 +0000

    generic: 6.6: fix realtek PHY detection patch
    
    Avoid crashing the kernel when trying to detect early versions of
    RealTek RTL8221B 2.5G Ethernet PHY.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...-realtek-detect-early-version-of-RTL8221B.patch | 43 ++++++++++++++++++----
 ...phy-realtek-support-interrupt-of-RTL8221B.patch |  4 +-
 2 files changed, 37 insertions(+), 10 deletions(-)

diff --git a/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch b/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
index 2a8e742a74..1d30a19654 100644
--- a/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
+++ b/target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
@@ -1,4 +1,4 @@
-From 0de82310d2b32e78ff79d42c08b1122a6ede3778 Mon Sep 17 00:00:00 2001
+From e52faf1564a8bcaf866f9a6c7bf0e8a8748afb15 Mon Sep 17 00:00:00 2001
 From: Daniel Golle <daniel at makrotopia.org>
 Date: Sun, 30 Apr 2023 00:15:41 +0100
 Subject: [PATCH] net: phy: realtek: detect early version of RTL8221B
@@ -10,11 +10,22 @@ Implement custom identify function using the PKGID instead of iterating
 over the implemented MMDs.
 
 Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/phy/realtek.c | 50 ++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 49 insertions(+), 1 deletion(-)
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -782,6 +782,38 @@ static int rtl8226_match_phy_device(stru
- 	       rtlgen_supports_2_5gbps(phydev);
+@@ -81,6 +81,7 @@
+ 
+ #define RTL_GENERIC_PHYID			0x001cc800
+ #define RTL_8211FVD_PHYID			0x001cc878
++#define RTL_8221B_VB_CG				0x001cc849
+ 
+ MODULE_DESCRIPTION("Realtek PHY driver");
+ MODULE_AUTHOR("Johnson Leung");
+@@ -801,6 +802,54 @@ static int rtl822x_probe(struct phy_devi
+ 	return 0;
  }
  
 +static int rtl8221b_vb_cg_match_phy_device(struct phy_device *phydev)
@@ -22,7 +33,15 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	int val;
 +	u32 id;
 +
-+	if (phydev->drv->read_mmd) {
++	if (phydev->is_c45) {
++		if (phydev->c45_ids.device_ids[1])
++			return phydev->c45_ids.device_ids[1] == RTL_8221B_VB_CG;
++	} else {
++		if (phydev->phy_id)
++			return phydev->phy_id == RTL_8221B_VB_CG;
++	}
++
++	if (phydev->mdio.bus->read_c45) {
 +		val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PKGID1);
 +		if (val < 0)
 +			return 0;
@@ -46,13 +65,21 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +		id |= val;
 +	}
 +
-+	return (id == 0x001cc849);
++	if (id != RTL_8221B_VB_CG)
++		return 0;
++
++	if (phydev->is_c45)
++		phydev->c45_ids.device_ids[1] = id;
++	else
++		phydev->phy_id = id;
++
++	return 1;
 +}
 +
- static int rtl822x_probe(struct phy_device *phydev)
+ static int rtlgen_resume(struct phy_device *phydev)
  {
- 	struct device *dev = &phydev->mdio.dev;
-@@ -1134,7 +1166,7 @@ static struct phy_driver realtek_drvs[]
+ 	int ret = genphy_resume(phydev);
+@@ -1134,7 +1183,7 @@ static struct phy_driver realtek_drvs[]
  		.write_page     = rtl821x_write_page,
  		.soft_reset     = genphy_soft_reset,
  	}, {
diff --git a/target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch b/target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
index 3c68bf8bbd..aab0d3f7d5 100644
--- a/target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
+++ b/target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -1009,6 +1009,51 @@ static int rtl8221b_config_init(struct p
+@@ -1026,6 +1026,51 @@ static int rtl8221b_config_init(struct p
  	return 0;
  }
  
@@ -52,7 +52,7 @@
  static struct phy_driver realtek_drvs[] = {
  	{
  		PHY_ID_MATCH_EXACT(0x00008201),
-@@ -1171,6 +1216,8 @@ static struct phy_driver realtek_drvs[]
+@@ -1188,6 +1233,8 @@ static struct phy_driver realtek_drvs[]
  		.get_features   = rtl822x_get_features,
  		.config_init    = rtl8221b_config_init,
  		.config_aneg    = rtl822x_config_aneg,



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:06 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:06 -0400
Subject: [openwrt/openwrt]  gpio-button-hotplug: fix 6.2 build failure
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15351.1710185763.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7fcbcea75120fbab5adb87b6c63029dfd8812a39

commit 7fcbcea75120fbab5adb87b6c63029dfd8812a39
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sun Jan 7 03:31:28 2024 +0800

    gpio-button-hotplug: fix 6.2 build failure
    
    devm_gpiod_get_from_of_node() was removed since linux 6.2.
    devm_fwnode_gpiod_get() is the recommended replacement.
    
    Link:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/gpio/gpiolib-devres.c?id=650f2dc970539b3344a98c4bd18efa309e66623b
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c b/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c
index 522085bb2f..e36494c2fe 100644
--- a/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c
+++ b/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c
@@ -538,8 +538,9 @@ static int gpio_keys_button_probe(struct platform_device *pdev,
 			struct device_node *child =
 				of_get_next_child(dev->of_node, prev);
 
-			bdata->gpiod = devm_gpiod_get_from_of_node(dev,
-				child, "gpios", 0, GPIOD_IN, desc);
+			bdata->gpiod = devm_fwnode_gpiod_get(dev,
+				of_fwnode_handle(child), NULL, GPIOD_IN,
+				desc);
 
 			prev = child;
 		}



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:01 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:01 -0400
Subject: [openwrt/openwrt]  kernel: modules: crypto: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15352.1710185776.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/35b04bafa187a99044ced7df9eb9148bc771be64

commit 35b04bafa187a99044ced7df9eb9148bc771be64
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sun Mar 3 22:07:29 2024 +0800

    kernel: modules: crypto: adapt for kernel 6.6
    
    Adapt crypto kmods for building under kernel 6.6:
    * mpi.ko moved from lib/mpi/mpi.ko to lib/crypto/mpi/mpi.ko
    * jitterentropy_rng requires SHA3 support for kernel 6.6
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
    Signed-off-by: Tan Zien <nabsdh9 at gmail.com>
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index b7cecb8919..f61f258603 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -39,7 +39,8 @@ define KernelPackage/crypto-aead
   TITLE:=CryptoAPI AEAD support
   KCONFIG:= \
 	CONFIG_CRYPTO_AEAD \
-	CONFIG_CRYPTO_AEAD2
+	CONFIG_CRYPTO_AEAD2 \
+	CONFIG_CRYPTO_GENIV
   FILES:= \
 	  $(LINUX_DIR)/crypto/aead.ko \
 	  $(LINUX_DIR)/crypto/geniv.ko
@@ -216,7 +217,7 @@ $(eval $(call KernelPackage,crypto-ecb))
 
 define KernelPackage/crypto-ecdh
   TITLE:=ECDH algorithm
-  DEPENDS:=+kmod-crypto-kpp
+  DEPENDS:=+kmod-crypto-kpp +kmod-crypto-rng
   KCONFIG:= CONFIG_CRYPTO_ECDH
   FILES:= \
 	$(LINUX_DIR)/crypto/ecdh_generic.ko \
@@ -846,7 +847,8 @@ define KernelPackage/crypto-rsa
   KCONFIG:= CONFIG_CRYPTO_RSA
   HIDDEN:=1
   FILES:= \
-	$(LINUX_DIR)/lib/mpi/mpi.ko \
+	$(LINUX_DIR)/lib/mpi/mpi.ko at lt6.5 \
+	$(LINUX_DIR)/lib/crypto/mpi/mpi.ko at ge6.5 \
 	$(LINUX_DIR)/crypto/akcipher.ko \
 	$(LINUX_DIR)/crypto/rsa_generic.ko
   AUTOLOAD:=$(call AutoLoad,10,rsa_generic)
@@ -870,7 +872,7 @@ $(eval $(call KernelPackage,crypto-rmd160))
 
 define KernelPackage/crypto-rng
   TITLE:=CryptoAPI random number generation
-  DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha512
+  DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha512 +LINUX_6_6:kmod-crypto-sha3
   KCONFIG:= \
 	CONFIG_CRYPTO_DRBG \
 	CONFIG_CRYPTO_DRBG_HMAC=y \



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:47 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:47 -0400
Subject: [openwrt/openwrt]  generic: 6.6: refresh hack patches
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15355.1710185782.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9a673642a28ca0f42c3c7ac666d5d4f85d7c3978

commit 9a673642a28ca0f42c3c7ac666d5d4f85d7c3978
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Mar 8 22:04:26 2024 +0800

    generic: 6.6: refresh hack patches
    
    Refresh hack patches with make target/linux/refresh.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 .../linux/generic/hack-6.6/204-module_strip.patch  | 22 +++++++++++-----------
 .../hack-6.6/211-darwin-uuid-typedef-clash.patch   |  2 +-
 .../generic/hack-6.6/212-tools_portability.patch   | 20 ++++++++++----------
 .../generic/hack-6.6/220-arm-gc_sections.patch     | 14 +++++++-------
 .../generic/hack-6.6/221-module_exports.patch      | 12 ++++++------
 .../hack-6.6/230-openwrt_lzma_options.patch        |  2 +-
 .../generic/hack-6.6/250-netfilter_depends.patch   |  4 ++--
 target/linux/generic/hack-6.6/251-kconfig.patch    | 12 ++++++------
 .../linux/generic/hack-6.6/253-ksmbd-config.patch  |  4 ++--
 .../generic/hack-6.6/259-regmap_dynamic.patch      |  4 ++--
 .../generic/hack-6.6/261-lib-arc4-unhide.patch     |  2 +-
 ...-blktrans-call-add-disks-after-mtd-device.patch |  4 ++--
 ...mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch |  2 +-
 .../650-netfilter-add-xt_FLOWOFFLOAD-target.patch  |  8 ++++----
 .../hack-6.6/651-wireless_mesh_header.patch        |  2 +-
 ...nel-ct-size-the-hashtable-more-adequately.patch |  2 +-
 .../hack-6.6/700-swconfig_switch_drivers.patch     |  4 ++--
 ...1-net-dsa-mv88e6xxx-disable-ATU-violation.patch |  2 +-
 .../hack-6.6/721-net-add-packet-mangeling.patch    | 18 +++++++++---------
 ...-aquantia-add-PHY_IDs-for-AQR112-variants.patch |  4 ++--
 ...-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch |  6 +++---
 ...t-usb-r8152-add-LED-configuration-from-OF.patch |  8 ++++----
 .../765-mxl-gpy-control-LED-reg-from-DT.patch      |  8 ++++----
 .../780-usb-net-MeigLink_modem_support.patch       |  2 +-
 .../hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch    |  6 +++---
 .../hack-6.6/800-GPIO-add-named-gpio-exports.patch |  9 ++++-----
 .../hack-6.6/810-bcma-ssb-fallback-sprom.patch     |  2 +-
 .../generic/hack-6.6/901-debloat_sock_diag.patch   | 12 ++++++------
 .../linux/generic/hack-6.6/902-debloat_proc.patch  | 20 ++++++++++----------
 .../generic/hack-6.6/904-debloat_dma_buf.patch     |  6 +++---
 .../911-kobject_add_broadcast_uevent.patch         |  2 +-
 .../generic/hack-6.6/920-device_tree_cmdline.patch |  2 +-
 ...rt-Revert-driver-core-Set-fw_devlink-on-b.patch |  2 +-
 33 files changed, 114 insertions(+), 115 deletions(-)

diff --git a/target/linux/generic/hack-6.6/204-module_strip.patch b/target/linux/generic/hack-6.6/204-module_strip.patch
index 6ff9d6a13b..32a83ece9f 100644
--- a/target/linux/generic/hack-6.6/204-module_strip.patch
+++ b/target/linux/generic/hack-6.6/204-module_strip.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
-@@ -163,6 +163,7 @@ extern void cleanup_module(void);
+@@ -164,6 +164,7 @@ extern void cleanup_module(void);
  
  /* Generic info of form tag = "info" */
  #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
@@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  /* For userspace: you can also call me... */
  #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias)
-@@ -232,12 +233,12 @@ extern void cleanup_module(void);
+@@ -233,12 +234,12 @@ extern void cleanup_module(void);
   * Author(s), use "Name <email>" or just "Name", for multiple
   * authors use multiple MODULE_AUTHOR() statements/lines.
   */
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /* Creates an alias so file2alias.c can find device table. */
  #define MODULE_DEVICE_TABLE(type, name)					\
  extern typeof(name) __mod_##type##__##name##_device_table		\
-@@ -264,7 +265,9 @@ extern typeof(name) __mod_##type##__##na
+@@ -265,7 +266,9 @@ extern typeof(name) __mod_##type##__##na
   */
  
  #if defined(MODULE) || !defined(CONFIG_SYSFS)
@@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #else
  #define MODULE_VERSION(_version)					\
  	MODULE_INFO(version, _version);					\
-@@ -287,7 +290,7 @@ extern typeof(name) __mod_##type##__##na
+@@ -288,7 +291,7 @@ extern typeof(name) __mod_##type##__##na
  /* Optional firmware file (or files) needed by the module
   * format is simply firmware file name.  Multiple firmware
   * files require multiple MODULE_FIRMWARE() specifiers */
@@ -88,7 +88,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/kernel/module/Kconfig
 +++ b/kernel/module/Kconfig
-@@ -290,4 +290,11 @@ config MODULES_TREE_LOOKUP
+@@ -389,4 +389,11 @@ config MODULES_TREE_LOOKUP
  	def_bool y
  	depends on PERF_EVENTS || TRACING || CFI_CLANG
  
@@ -141,7 +141,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (err)
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
-@@ -1785,7 +1785,9 @@ static void read_symbols(const char *mod
+@@ -1745,7 +1745,9 @@ static void read_symbols(const char *mod
  		symname = remove_dot(info.strtab + sym->st_name);
  
  		handle_symbol(mod, &info, sym, symname);
@@ -151,7 +151,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}
  
  	check_sec_ref(mod, &info);
-@@ -1944,8 +1946,10 @@ static void add_header(struct buffer *b,
+@@ -1918,8 +1920,10 @@ static void add_header(struct buffer *b,
  	buf_printf(b, "BUILD_SALT;\n");
  	buf_printf(b, "BUILD_LTO_INFO;\n");
  	buf_printf(b, "\n");
@@ -162,7 +162,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	buf_printf(b, "\n");
  	buf_printf(b, "__visible struct module __this_module\n");
  	buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n");
-@@ -1963,8 +1967,10 @@ static void add_header(struct buffer *b,
+@@ -1933,8 +1937,10 @@ static void add_header(struct buffer *b,
  	buf_printf(b, "\t.arch = MODULE_ARCH_INIT,\n");
  	buf_printf(b, "};\n");
  
@@ -173,7 +173,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	buf_printf(b,
  		   "\n"
-@@ -1972,8 +1978,10 @@ static void add_header(struct buffer *b,
+@@ -1942,8 +1948,10 @@ static void add_header(struct buffer *b,
  		   "MODULE_INFO(retpoline, \"Y\");\n"
  		   "#endif\n");
  
@@ -184,7 +184,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	if (strstarts(mod->name, "tools/testing"))
  		buf_printf(b, "\nMODULE_INFO(test, \"Y\");\n");
-@@ -2069,11 +2077,13 @@ static void add_depends(struct buffer *b
+@@ -2053,11 +2061,13 @@ static void add_depends(struct buffer *b
  
  static void add_srcversion(struct buffer *b, struct module *mod)
  {
@@ -198,7 +198,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  static void write_buf(struct buffer *b, const char *fname)
-@@ -2159,7 +2169,9 @@ static void write_mod_c_file(struct modu
+@@ -2140,7 +2150,9 @@ static void write_mod_c_file(struct modu
  	add_exported_symbols(&buf, mod);
  	add_versions(&buf, mod);
  	add_depends(&buf, mod);
diff --git a/target/linux/generic/hack-6.6/211-darwin-uuid-typedef-clash.patch b/target/linux/generic/hack-6.6/211-darwin-uuid-typedef-clash.patch
index 9a1905a138..c0e0b24e3c 100644
--- a/target/linux/generic/hack-6.6/211-darwin-uuid-typedef-clash.patch
+++ b/target/linux/generic/hack-6.6/211-darwin-uuid-typedef-clash.patch
@@ -10,7 +10,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
 
 --- a/scripts/mod/file2alias.c
 +++ b/scripts/mod/file2alias.c
-@@ -38,6 +38,9 @@ typedef struct {
+@@ -35,6 +35,9 @@ typedef uint32_t	__u32;
  typedef uint16_t	__u16;
  typedef unsigned char	__u8;
  
diff --git a/target/linux/generic/hack-6.6/212-tools_portability.patch b/target/linux/generic/hack-6.6/212-tools_portability.patch
index 4671e75128..ec10f4b966 100644
--- a/target/linux/generic/hack-6.6/212-tools_portability.patch
+++ b/target/linux/generic/hack-6.6/212-tools_portability.patch
@@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  struct page;
  struct kmem_cache;
-@@ -51,7 +55,9 @@ typedef __s8  s8;
+@@ -56,7 +60,9 @@ typedef __s8  s8;
  #define __user
  #endif
  #define __must_check
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  typedef __u16 __bitwise __be16;
 --- a/tools/perf/pmu-events/jevents.py
 +++ b/tools/perf/pmu-events/jevents.py
-@@ -684,6 +684,7 @@ def main() -> None:
+@@ -1197,6 +1197,7 @@ such as "arm/cortex-a34".''',
  #include "util/header.h"
  #include "util/pmu.h"
  #include <string.h>
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
 --- a/tools/arch/x86/include/asm/orc_types.h
 +++ b/tools/arch/x86/include/asm/orc_types.h
-@@ -40,7 +40,6 @@
+@@ -46,7 +46,6 @@
  #define ORC_TYPE_REGS_PARTIAL		4
  
  #ifndef __ASSEMBLY__
@@ -115,7 +115,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  /*
   * This struct is more or less a vastly simplified version of the DWARF Call
-@@ -53,12 +52,12 @@
+@@ -59,12 +58,12 @@
  struct orc_entry {
  	s16		sp_offset;
  	s16		bp_offset;
@@ -199,7 +199,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	unsigned long  __rb_parent_color;
 --- a/tools/objtool/Makefile
 +++ b/tools/objtool/Makefile
-@@ -40,7 +40,7 @@ include ../scripts/Makefile.arch
+@@ -40,7 +40,7 @@ elfshdr := $(shell echo '$(pound)include
  OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED)
  
  # Always want host compilation.
@@ -208,7 +208,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  AWK = awk
  MKDIR = mkdir
-@@ -43,6 +43,7 @@ BUILD_ORC := n
+@@ -55,6 +55,7 @@ BUILD_ORC := n
  
  ifeq ($(SRCARCH),x86)
  	BUILD_ORC := y
@@ -218,7 +218,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  export BUILD_ORC
 --- a/tools/objtool/check.c
 +++ b/tools/objtool/check.c
-@@ -1164,11 +1164,12 @@ static int add_ignore_alternatives(struc
+@@ -1288,11 +1288,12 @@ static int add_ignore_alternatives(struc
  	return 0;
  }
  
@@ -232,7 +232,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  {
  	return false;
  }
-@@ -1177,7 +1178,7 @@ __weak bool arch_is_retpoline(struct sym
+@@ -1301,7 +1302,7 @@ __weak bool arch_is_retpoline(struct sym
   * Symbols that replace INSN_RETURN, every (tail) call to such a symbol
   * will be added to the .return_sites section.
   */
@@ -241,7 +241,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  {
  	return false;
  }
-@@ -1186,10 +1187,11 @@ __weak bool arch_is_rethunk(struct symbo
+@@ -1310,10 +1311,11 @@ __weak bool arch_is_rethunk(struct symbo
   * Symbols that are embedded inside other instructions, because sometimes crazy
   * code exists. These are mostly ignored for validation purposes.
   */
@@ -297,7 +297,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			  struct instruction *insn)
 --- a/tools/objtool/special.c
 +++ b/tools/objtool/special.c
-@@ -54,9 +54,11 @@ struct special_entry entries[] = {
+@@ -54,9 +54,11 @@ static const struct special_entry entrie
  	{},
  };
  
diff --git a/target/linux/generic/hack-6.6/220-arm-gc_sections.patch b/target/linux/generic/hack-6.6/220-arm-gc_sections.patch
index 257796aee9..eb49704ff7 100644
--- a/target/linux/generic/hack-6.6/220-arm-gc_sections.patch
+++ b/target/linux/generic/hack-6.6/220-arm-gc_sections.patch
@@ -12,7 +12,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
 ---
 --- a/arch/arm/Kconfig
 +++ b/arch/arm/Kconfig
-@@ -124,6 +124,7 @@ config ARM
+@@ -128,6 +128,7 @@ config ARM
  	select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
  	select IRQ_FORCED_THREADING
  	select LOCK_MM_AND_FIND_VMA
@@ -22,7 +22,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  	select OF_EARLY_FLATTREE if OF
 --- a/arch/arm/boot/compressed/Makefile
 +++ b/arch/arm/boot/compressed/Makefile
-@@ -91,6 +91,7 @@ endif
+@@ -92,6 +92,7 @@ endif
  ifeq ($(CONFIG_USE_OF),y)
  OBJS	+= $(libfdt_objs) fdt_check_mem_start.o
  endif
@@ -32,7 +32,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  
 --- a/arch/arm/kernel/vmlinux.lds.S
 +++ b/arch/arm/kernel/vmlinux.lds.S
-@@ -75,7 +75,7 @@ SECTIONS
+@@ -74,7 +74,7 @@ SECTIONS
  	. = ALIGN(4);
  	__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
  		__start___ex_table = .;
@@ -41,7 +41,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  		__stop___ex_table = .;
  	}
  
-@@ -100,24 +100,24 @@ SECTIONS
+@@ -99,24 +99,24 @@ SECTIONS
  	}
  	.init.arch.info : {
  		__arch_info_begin = .;
@@ -88,7 +88,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  		__idmap_text_end = .;					\
  
  #define ARM_DISCARD							\
-@@ -109,12 +109,12 @@
+@@ -108,12 +108,12 @@
  	. = ALIGN(8);							\
  	.ARM.unwind_idx : {						\
  		__start_unwind_idx = .;					\
@@ -103,7 +103,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  		__stop_unwind_tab = .;					\
  	}
  
-@@ -126,7 +126,7 @@
+@@ -125,7 +125,7 @@
  	__vectors_lma = .;						\
  	OVERLAY 0xffff0000 : NOCROSSREFS AT(__vectors_lma) {		\
  		.vectors {						\
@@ -112,7 +112,7 @@ Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
  		}							\
  		.vectors.bhb.loop8 {					\
  			*(.vectors.bhb.loop8)				\
-@@ -144,7 +144,7 @@
+@@ -143,7 +143,7 @@
  									\
  	__stubs_lma = .;						\
  	.stubs ADDR(.vectors) + 0x1000 : AT(__stubs_lma) {		\
diff --git a/target/linux/generic/hack-6.6/221-module_exports.patch b/target/linux/generic/hack-6.6/221-module_exports.patch
index 5af4eba372..294944a34b 100644
--- a/target/linux/generic/hack-6.6/221-module_exports.patch
+++ b/target/linux/generic/hack-6.6/221-module_exports.patch
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /* Align . function alignment. */
  #define ALIGN_FUNCTION()  . = ALIGN(CONFIG_FUNCTION_ALIGNMENT)
  
-@@ -511,14 +521,14 @@
+@@ -486,14 +496,14 @@
  	/* Kernel symbol table: Normal symbols */			\
  	__ksymtab         : AT(ADDR(__ksymtab) - LOAD_OFFSET) {		\
  		__start___ksymtab = .;					\
@@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		__stop___ksymtab_gpl = .;				\
  	}								\
  									\
-@@ -538,7 +548,7 @@
+@@ -513,7 +523,7 @@
  									\
  	/* Kernel symbol table: strings */				\
          __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) {	\
@@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}								\
  									\
  	/* __*init sections */						\
-@@ -1042,6 +1052,8 @@
+@@ -1000,6 +1010,8 @@
  #define COMMON_DISCARDS							\
  	SANITIZER_DISCARDS						\
  	PATCHABLE_DISCARDS						\
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	*(.export_symbol)						\
 --- a/include/linux/export-internal.h
 +++ b/include/linux/export-internal.h
-@@ -23,6 +23,12 @@
+@@ -26,6 +26,12 @@
  #define __KSYM_REF(sym)		".long " #sym
  #endif
  
@@ -80,7 +80,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /*
   * For every exported symbol, do the following:
   *
-@@ -35,7 +41,7 @@
+@@ -38,7 +44,7 @@
   * former apparently works on all arches according to the binutils source.
   */
  #define __KSYMTAB(name, sym, sec, ns)						\
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	    "__kstrtabns_" #name ":"					"\n"	\
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
-@@ -388,7 +388,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa
+@@ -366,7 +366,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa
  # Linker scripts preprocessor (.lds.S -> .lds)
  # ---------------------------------------------------------------------------
  quiet_cmd_cpp_lds_S = LDS     $@
diff --git a/target/linux/generic/hack-6.6/230-openwrt_lzma_options.patch b/target/linux/generic/hack-6.6/230-openwrt_lzma_options.patch
index 55530c5c7e..a22acafea1 100644
--- a/target/linux/generic/hack-6.6/230-openwrt_lzma_options.patch
+++ b/target/linux/generic/hack-6.6/230-openwrt_lzma_options.patch
@@ -23,7 +23,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  	{ {0x02, 0x21}, "lz4", unlz4 },
 --- a/scripts/Makefile.lib
 +++ b/scripts/Makefile.lib
-@@ -443,10 +443,10 @@ quiet_cmd_bzip2_with_size = BZIP2   $@
+@@ -456,10 +456,10 @@ quiet_cmd_bzip2_with_size = BZIP2   $@
  # ---------------------------------------------------------------------------
  
  quiet_cmd_lzma = LZMA    $@
diff --git a/target/linux/generic/hack-6.6/250-netfilter_depends.patch b/target/linux/generic/hack-6.6/250-netfilter_depends.patch
index fbb5a61157..43faa9959e 100644
--- a/target/linux/generic/hack-6.6/250-netfilter_depends.patch
+++ b/target/linux/generic/hack-6.6/250-netfilter_depends.patch
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -253,7 +253,6 @@ config NF_CONNTRACK_FTP
+@@ -259,7 +259,6 @@ config NF_CONNTRACK_FTP
  
  config NF_CONNTRACK_H323
  	tristate "H.323 protocol support"
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	depends on NETFILTER_ADVANCED
  	help
  	  H.323 is a VoIP signalling protocol from ITU-T. As one of the most
-@@ -1118,7 +1117,6 @@ config NETFILTER_XT_TARGET_SECMARK
+@@ -1120,7 +1119,6 @@ config NETFILTER_XT_TARGET_SECMARK
  
  config NETFILTER_XT_TARGET_TCPMSS
  	tristate '"TCPMSS" target support'
diff --git a/target/linux/generic/hack-6.6/251-kconfig.patch b/target/linux/generic/hack-6.6/251-kconfig.patch
index 0cdbe948a1..845cfbfcc8 100644
--- a/target/linux/generic/hack-6.6/251-kconfig.patch
+++ b/target/linux/generic/hack-6.6/251-kconfig.patch
@@ -34,7 +34,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	select CRYPTO_AEAD2
  	select CRYPTO_ALGAPI
  
-@@ -75,7 +75,7 @@ config CRYPTO_AEAD2
+@@ -82,7 +82,7 @@ config CRYPTO_SIG2
  	select CRYPTO_ALGAPI2
  
  config CRYPTO_SKCIPHER
@@ -43,7 +43,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	select CRYPTO_SKCIPHER2
  	select CRYPTO_ALGAPI
  
-@@ -85,7 +85,7 @@ config CRYPTO_SKCIPHER2
+@@ -91,7 +91,7 @@ config CRYPTO_SKCIPHER2
  	select CRYPTO_ALGAPI2
  
  config CRYPTO_HASH
@@ -52,7 +52,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	select CRYPTO_HASH2
  	select CRYPTO_ALGAPI
  
-@@ -94,7 +94,7 @@ config CRYPTO_HASH2
+@@ -100,7 +100,7 @@ config CRYPTO_HASH2
  	select CRYPTO_ALGAPI2
  
  config CRYPTO_RNG
@@ -92,7 +92,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	bool
 --- a/lib/Kconfig
 +++ b/lib/Kconfig
-@@ -457,16 +457,16 @@ config BCH_CONST_T
+@@ -460,16 +460,16 @@ config BCH_CONST_T
  # Textsearch support is select'ed if needed
  #
  config TEXTSEARCH
@@ -135,7 +135,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  
  config SND_SEQ_DEVICE
  	tristate
-@@ -27,7 +27,7 @@ config SND_RAWMIDI
+@@ -40,7 +40,7 @@ config SND_UMP_LEGACY_RAWMIDI
  	  The device contains 16 substreams corresponding to UMP groups.
  
  config SND_COMPRESS_OFFLOAD
@@ -146,7 +146,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	bool
 --- a/net/Kconfig
 +++ b/net/Kconfig
-@@ -430,7 +430,7 @@ config NET_DEVLINK
+@@ -467,7 +467,7 @@ config NET_DEVLINK
  	default n
  
  config PAGE_POOL
diff --git a/target/linux/generic/hack-6.6/253-ksmbd-config.patch b/target/linux/generic/hack-6.6/253-ksmbd-config.patch
index a57c914180..298a0787b7 100644
--- a/target/linux/generic/hack-6.6/253-ksmbd-config.patch
+++ b/target/linux/generic/hack-6.6/253-ksmbd-config.patch
@@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -2013,7 +2013,7 @@ config PADATA
+@@ -1989,7 +1989,7 @@ config PADATA
  	bool
  
  config ASN1
@@ -21,7 +21,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string
  	  that can be interpreted by the ASN.1 stream decoder and used to
 --- a/lib/Kconfig
 +++ b/lib/Kconfig
-@@ -637,7 +637,7 @@ config LIBFDT
+@@ -647,7 +647,7 @@ config LIBFDT
  	bool
  
  config OID_REGISTRY
diff --git a/target/linux/generic/hack-6.6/259-regmap_dynamic.patch b/target/linux/generic/hack-6.6/259-regmap_dynamic.patch
index c62e0a6242..8a799679bf 100644
--- a/target/linux/generic/hack-6.6/259-regmap_dynamic.patch
+++ b/target/linux/generic/hack-6.6/259-regmap_dynamic.patch
@@ -137,7 +137,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/mutex.h>
  #include <linux/err.h>
  #include <linux/property.h>
-@@ -3513,3 +3514,5 @@ static int __init regmap_initcall(void)
+@@ -3433,3 +3434,5 @@ static int __init regmap_initcall(void)
  	return 0;
  }
  postcore_initcall(regmap_initcall);
@@ -145,7 +145,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +MODULE_LICENSE("GPL");
 --- a/include/linux/regmap.h
 +++ b/include/linux/regmap.h
-@@ -180,7 +180,7 @@ struct reg_sequence {
+@@ -197,7 +197,7 @@ struct reg_sequence {
  	__ret ?: __tmp; \
  })
  
diff --git a/target/linux/generic/hack-6.6/261-lib-arc4-unhide.patch b/target/linux/generic/hack-6.6/261-lib-arc4-unhide.patch
index 64b4ca4521..af1d286208 100644
--- a/target/linux/generic/hack-6.6/261-lib-arc4-unhide.patch
+++ b/target/linux/generic/hack-6.6/261-lib-arc4-unhide.patch
@@ -13,7 +13,7 @@ from backports.
 
 --- a/lib/crypto/Kconfig
 +++ b/lib/crypto/Kconfig
-@@ -9,7 +9,7 @@ config CRYPTO_LIB_AES
+@@ -15,7 +15,7 @@ config CRYPTO_LIB_AESGCM
  	select CRYPTO_LIB_UTILS
  
  config CRYPTO_LIB_ARC4
diff --git a/target/linux/generic/hack-6.6/402-mtd-blktrans-call-add-disks-after-mtd-device.patch b/target/linux/generic/hack-6.6/402-mtd-blktrans-call-add-disks-after-mtd-device.patch
index c82ca3edd8..29607b155d 100644
--- a/target/linux/generic/hack-6.6/402-mtd-blktrans-call-add-disks-after-mtd-device.patch
+++ b/target/linux/generic/hack-6.6/402-mtd-blktrans-call-add-disks-after-mtd-device.patch
@@ -83,7 +83,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	unsigned long flags;
 --- a/drivers/mtd/mtdcore.c
 +++ b/drivers/mtd/mtdcore.c
-@@ -32,6 +32,7 @@
+@@ -33,6 +33,7 @@
  
  #include <linux/mtd/mtd.h>
  #include <linux/mtd/partitions.h>
@@ -91,7 +91,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  #include "mtdcore.h"
  
-@@ -1098,6 +1099,8 @@ int mtd_device_parse_register(struct mtd
+@@ -1125,6 +1126,8 @@ int mtd_device_parse_register(struct mtd
  		register_reboot_notifier(&mtd->reboot_notifier);
  	}
  
diff --git a/target/linux/generic/hack-6.6/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch b/target/linux/generic/hack-6.6/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch
index 726a2a0f18..c32d8ec184 100644
--- a/target/linux/generic/hack-6.6/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch
+++ b/target/linux/generic/hack-6.6/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch
@@ -12,7 +12,7 @@ Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
 
 --- a/drivers/mtd/mtdcore.c
 +++ b/drivers/mtd/mtdcore.c
-@@ -773,7 +773,8 @@ int add_mtd_device(struct mtd_info *mtd)
+@@ -801,7 +801,8 @@ int add_mtd_device(struct mtd_info *mtd)
  
  	mutex_unlock(&mtd_table_mutex);
  
diff --git a/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index 59a5fb4d91..cb7ac007b1 100644
--- a/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -1023,6 +1023,15 @@ config NETFILTER_XT_TARGET_NOTRACK
+@@ -1025,6 +1025,15 @@ config NETFILTER_XT_TARGET_NOTRACK
  	depends on NETFILTER_ADVANCED
  	select NETFILTER_XT_TARGET_CT
  
@@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	depends on NETFILTER_ADVANCED
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -154,6 +154,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF
+@@ -163,6 +163,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF
  obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
@@ -749,7 +749,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <net/netfilter/nf_flow_table.h>
  #include <net/netfilter/nf_conntrack.h>
  #include <net/netfilter/nf_conntrack_core.h>
-@@ -374,8 +373,7 @@ flow_offload_lookup(struct nf_flowtable
+@@ -377,8 +376,7 @@ flow_offload_lookup(struct nf_flowtable
  }
  EXPORT_SYMBOL_GPL(flow_offload_lookup);
  
@@ -759,7 +759,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		      void (*iter)(struct nf_flowtable *flowtable,
  				   struct flow_offload *flow, void *data),
  		      void *data)
-@@ -436,6 +434,7 @@ static void nf_flow_offload_gc_step(stru
+@@ -439,6 +437,7 @@ static void nf_flow_offload_gc_step(stru
  		nf_flow_offload_stats(flow_table, flow);
  	}
  }
diff --git a/target/linux/generic/hack-6.6/651-wireless_mesh_header.patch b/target/linux/generic/hack-6.6/651-wireless_mesh_header.patch
index fd7d5346ad..3a2a9970bd 100644
--- a/target/linux/generic/hack-6.6/651-wireless_mesh_header.patch
+++ b/target/linux/generic/hack-6.6/651-wireless_mesh_header.patch
@@ -11,7 +11,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -149,8 +149,8 @@ static inline bool dev_xmit_complete(int
+@@ -157,8 +157,8 @@ static inline bool dev_xmit_complete(int
  
  #if defined(CONFIG_HYPERV_NET)
  # define LL_MAX_HEADER 128
diff --git a/target/linux/generic/hack-6.6/661-kernel-ct-size-the-hashtable-more-adequately.patch b/target/linux/generic/hack-6.6/661-kernel-ct-size-the-hashtable-more-adequately.patch
index fe94a9da0c..020f3f3a11 100644
--- a/target/linux/generic/hack-6.6/661-kernel-ct-size-the-hashtable-more-adequately.patch
+++ b/target/linux/generic/hack-6.6/661-kernel-ct-size-the-hashtable-more-adequately.patch
@@ -14,7 +14,7 @@ Signed-off-by: Rui Salvaterra <rsalvaterra at gmail.com>
 
 --- a/net/netfilter/nf_conntrack_core.c
 +++ b/net/netfilter/nf_conntrack_core.c
-@@ -2705,7 +2705,7 @@ int nf_conntrack_init_start(void)
+@@ -2682,7 +2682,7 @@ int nf_conntrack_init_start(void)
  
  	if (!nf_conntrack_htable_size) {
  		nf_conntrack_htable_size
diff --git a/target/linux/generic/hack-6.6/700-swconfig_switch_drivers.patch b/target/linux/generic/hack-6.6/700-swconfig_switch_drivers.patch
index 673082d840..4428ebbb5a 100644
--- a/target/linux/generic/hack-6.6/700-swconfig_switch_drivers.patch
+++ b/target/linux/generic/hack-6.6/700-swconfig_switch_drivers.patch
@@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -67,6 +67,80 @@ config SFP
+@@ -66,6 +66,80 @@ config SFP
  	depends on HWMON || HWMON=n
  	select MDIO_I2C
  
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  config AIR_EN8811H_PHY
 --- a/drivers/net/phy/Makefile
 +++ b/drivers/net/phy/Makefile
-@@ -24,6 +24,21 @@ libphy-$(CONFIG_LED_TRIGGER_PHY)	+= phy_
+@@ -26,6 +26,21 @@ libphy-$(CONFIG_LED_TRIGGER_PHY)	+= phy_
  obj-$(CONFIG_PHYLINK)		+= phylink.o
  obj-$(CONFIG_PHYLIB)		+= libphy.o
  
diff --git a/target/linux/generic/hack-6.6/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch b/target/linux/generic/hack-6.6/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
index f09ad117b0..6a2c60107b 100644
--- a/target/linux/generic/hack-6.6/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
+++ b/target/linux/generic/hack-6.6/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
@@ -9,7 +9,7 @@ Subject: [PATCH] net/dsa/mv88e6xxx: disable ATU violation
 
 --- a/drivers/net/dsa/mv88e6xxx/chip.c
 +++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -3488,6 +3488,9 @@ static int mv88e6xxx_setup_port(struct m
+@@ -3305,6 +3305,9 @@ static int mv88e6xxx_setup_port(struct m
  	else
  		reg = 1 << port;
  
diff --git a/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch b/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch
index 64465fae2a..2fd8aef2b5 100644
--- a/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch
+++ b/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch
@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1707,6 +1707,7 @@ enum netdev_priv_flags {
+@@ -1759,6 +1759,7 @@ enum netdev_priv_flags {
  	IFF_TX_SKB_NO_LINEAR		= BIT_ULL(31),
  	IFF_CHANGE_PROTO_DOWN		= BIT_ULL(32),
  	IFF_SEE_ALL_HWTSTAMP_REQUESTS	= BIT_ULL(33),
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  };
  
  #define IFF_802_1Q_VLAN			IFF_802_1Q_VLAN
-@@ -1763,6 +1764,7 @@ enum netdev_priv_flags {
+@@ -1792,6 +1793,7 @@ enum netdev_priv_flags {
  #define IFF_FAILOVER_SLAVE		IFF_FAILOVER_SLAVE
  #define IFF_L3MDEV_RX_HANDLER		IFF_L3MDEV_RX_HANDLER
  #define IFF_TX_SKB_NO_LINEAR		IFF_TX_SKB_NO_LINEAR
@@ -35,7 +35,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  /* Specifies the type of the struct net_device::ml_priv pointer */
  enum netdev_ml_priv_type {
-@@ -2131,6 +2133,11 @@ struct net_device {
+@@ -2184,6 +2186,11 @@ struct net_device {
  	const struct tlsdev_ops *tlsdev_ops;
  #endif
  
@@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	const struct header_ops *header_ops;
  
  	unsigned char		operstate;
-@@ -2206,6 +2213,10 @@ struct net_device {
+@@ -2259,6 +2266,10 @@ struct net_device {
  	struct mctp_dev __rcu	*mctp_ptr;
  #endif
  
@@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
   */
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -3040,6 +3040,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -3075,6 +3075,10 @@ static inline int pskb_trim(struct sk_bu
  	return (len < skb->len) ? __pskb_trim(skb, len) : 0;
  }
  
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  /**
   *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
   *	@skb: buffer to alter
-@@ -3189,16 +3193,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -3240,16 +3244,6 @@ static inline struct sk_buff *dev_alloc_
  }
  
  
@@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	help
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -3607,6 +3607,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3571,6 +3571,11 @@ static int xmit_one(struct sk_buff *skb,
  	if (dev_nit_active(dev))
  		dev_queue_xmit_nit(skb, dev);
  
@@ -119,7 +119,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	rc = netdev_start_xmit(skb, dev, txq, more);
 --- a/net/core/skbuff.c
 +++ b/net/core/skbuff.c
-@@ -61,6 +61,7 @@
+@@ -62,6 +62,7 @@
  #include <linux/if_vlan.h>
  #include <linux/mpls.h>
  #include <linux/kcov.h>
@@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  #include <net/protocol.h>
  #include <net/dst.h>
-@@ -709,6 +710,22 @@ skb_fail:
+@@ -844,6 +845,22 @@ skb_fail:
  }
  EXPORT_SYMBOL(__napi_alloc_skb);
  
diff --git a/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch b/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
index bee48be007..ee7d0c57b0 100644
--- a/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
+++ b/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
@@ -21,7 +21,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  #define MDIO_PHYXS_VEND_IF_STATUS		0xe812
  #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK	GENMASK(7, 3)
-@@ -898,6 +900,30 @@ static struct phy_driver aqr_driver[] =
+@@ -972,6 +974,30 @@ static struct phy_driver aqr_driver[] =
  	.get_stats	= aqr107_get_stats,
  	.link_change_notify = aqr107_link_change_notify,
  },
@@ -52,7 +52,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  };
  
  module_phy_driver(aqr_driver);
-@@ -917,6 +943,8 @@ static struct mdio_device_id __maybe_unu
+@@ -991,6 +1017,8 @@ static struct mdio_device_id __maybe_unu
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
diff --git a/target/linux/generic/hack-6.6/750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch b/target/linux/generic/hack-6.6/750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch
index b50973f20b..30a502a237 100644
--- a/target/linux/generic/hack-6.6/750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch
+++ b/target/linux/generic/hack-6.6/750-net-pcs-mtk-lynxi-workaround-2500BaseX-no-an.patch
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/pcs/pcs-mtk-lynxi.c
 +++ b/drivers/net/pcs/pcs-mtk-lynxi.c
-@@ -92,14 +92,23 @@ static void mtk_pcs_lynxi_get_state(struct
+@@ -114,14 +114,23 @@ static void mtk_pcs_lynxi_get_state(stru
  				    struct phylink_link_state *state)
  {
  	struct mtk_pcs_lynxi *mpcs = pcs_to_mtk_pcs_lynxi(pcs);
@@ -41,7 +41,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  }
  
  static void mtk_sgmii_reset(struct mtk_pcs_lynxi *mpcs)
-@@ -109,7 +118,7 @@ static int mtk_pcs_lynxi_config(struct p
+@@ -142,7 +151,7 @@ static int mtk_pcs_lynxi_config(struct p
  {
  	struct mtk_pcs_lynxi *mpcs = pcs_to_mtk_pcs_lynxi(pcs);
  	bool mode_changed = false, changed;
@@ -50,7 +50,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	int advertise, link_timer;
  
  	advertise = phylink_mii_c22_pcs_encode_advertisement(interface,
-@@ -132,9 +141,8 @@ static int mtk_pcs_lynxi_config(struct p
+@@ -165,9 +174,8 @@ static int mtk_pcs_lynxi_config(struct p
  	if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED) {
  		if (interface == PHY_INTERFACE_MODE_SGMII)
  			sgm_mode |= SGMII_SPEED_DUPLEX_AN;
diff --git a/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch b/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch
index 9ef11623fc..190dd3507c 100644
--- a/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch
+++ b/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch
@@ -22,7 +22,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  #include <linux/crc32.h>
  #include <linux/if_vlan.h>
  #include <linux/uaccess.h>
-@@ -7034,6 +7035,22 @@ static void rtl_tally_reset(struct r8152
+@@ -7035,6 +7036,22 @@ static void rtl_tally_reset(struct r8152
  	ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
  }
  
@@ -45,7 +45,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  static void r8152b_init(struct r8152 *tp)
  {
  	u32 ocp_data;
-@@ -7075,6 +7092,8 @@ static void r8152b_init(struct r8152 *tp
+@@ -7076,6 +7093,8 @@ static void r8152b_init(struct r8152 *tp
  	ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
  	ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
  	ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
@@ -54,7 +54,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  }
  
  static void r8153_init(struct r8152 *tp)
-@@ -7215,6 +7234,8 @@ static void r8153_init(struct r8152 *tp)
+@@ -7216,6 +7235,8 @@ static void r8153_init(struct r8152 *tp)
  		tp->coalesce = COALESCE_SLOW;
  		break;
  	}
@@ -63,7 +63,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  }
  
  static void r8153b_init(struct r8152 *tp)
-@@ -7297,6 +7318,8 @@ static void r8153b_init(struct r8152 *tp
+@@ -7298,6 +7319,8 @@ static void r8153b_init(struct r8152 *tp
  	rtl_tally_reset(tp);
  
  	tp->coalesce = 15000;	/* 15 us */
diff --git a/target/linux/generic/hack-6.6/765-mxl-gpy-control-LED-reg-from-DT.patch b/target/linux/generic/hack-6.6/765-mxl-gpy-control-LED-reg-from-DT.patch
index dc582bba28..51a03be2ad 100644
--- a/target/linux/generic/hack-6.6/765-mxl-gpy-control-LED-reg-from-DT.patch
+++ b/target/linux/generic/hack-6.6/765-mxl-gpy-control-LED-reg-from-DT.patch
@@ -31,7 +31,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  #include <linux/phy.h>
  #include <linux/polynomial.h>
  #include <linux/property.h>
-@@ -33,6 +34,7 @@
+@@ -38,6 +39,7 @@
  #define PHY_MIISTAT		0x18	/* MII state */
  #define PHY_IMASK		0x19	/* interrupt mask */
  #define PHY_ISTAT		0x1A	/* interrupt status */
@@ -39,7 +39,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  #define PHY_FWV			0x1E	/* firmware version */
  
  #define PHY_MIISTAT_SPD_MASK	GENMASK(2, 0)
-@@ -56,10 +58,15 @@
+@@ -61,10 +63,15 @@
  				 PHY_IMASK_ADSC | \
  				 PHY_IMASK_ANC)
  
@@ -55,7 +55,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  #define PHY_PMA_MGBT_POLARITY	0x82
  #define PHY_MDI_MDI_X_MASK	GENMASK(1, 0)
  #define PHY_MDI_MDI_X_NORMAL	0x3
-@@ -241,6 +248,35 @@ out:
+@@ -260,6 +267,35 @@ out:
  	return ret;
  }
  
@@ -91,7 +91,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  static int gpy_config_init(struct phy_device *phydev)
  {
  	int ret;
-@@ -252,7 +288,10 @@ static int gpy_config_init(struct phy_de
+@@ -271,7 +307,10 @@ static int gpy_config_init(struct phy_de
  
  	/* Clear all pending interrupts */
  	ret = phy_read(phydev, PHY_ISTAT);
diff --git a/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch b/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch
index 51f939356f..794a28b716 100644
--- a/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch
+++ b/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch
@@ -10,7 +10,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
 
 --- a/drivers/net/usb/qmi_wwan.c
 +++ b/drivers/net/usb/qmi_wwan.c
-@@ -1082,12 +1082,18 @@ static const struct usb_device_id produc
+@@ -1083,12 +1083,18 @@ static const struct usb_device_id produc
  		USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7),
  		.driver_info = (unsigned long)&qmi_wwan_info,
  	},
diff --git a/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch b/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch
index 8fb8aa84d5..d48f382ce5 100644
--- a/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch
+++ b/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch
@@ -26,7 +26,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/sfp.c
 +++ b/drivers/net/phy/sfp.c
-@@ -409,6 +409,9 @@ static const struct sfp_quirk sfp_quirks
+@@ -471,6 +471,9 @@ static const struct sfp_quirk sfp_quirks
  	// FS 2.5G Base-T
  	SFP_QUIRK_M("FS", "SFP-2.5G-T", sfp_quirk_oem_2_5g),
  
@@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	// Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report
  	// 2500MBd NRZ in their EEPROM
  	SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex),
-@@ -2344,7 +2347,8 @@ static void sfp_sm_main(struct sfp *sfp,
+@@ -2587,7 +2590,8 @@ static void sfp_sm_main(struct sfp *sfp,
  			 * or t_start_up, so assume there is a fault.
  			 */
  			sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
@@ -46,7 +46,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
  	init_done:
  			/* Create mdiobus and start trying for PHY */
-@@ -2578,10 +2582,12 @@ static void sfp_check_state(struct sfp *
+@@ -2841,10 +2845,12 @@ static void sfp_check_state(struct sfp *
  	mutex_lock(&sfp->st_mutex);
  	state = sfp_get_state(sfp);
  	changed = state ^ sfp->state;
diff --git a/target/linux/generic/hack-6.6/800-GPIO-add-named-gpio-exports.patch b/target/linux/generic/hack-6.6/800-GPIO-add-named-gpio-exports.patch
index 59acb9e57b..666dcfad4d 100644
--- a/target/linux/generic/hack-6.6/800-GPIO-add-named-gpio-exports.patch
+++ b/target/linux/generic/hack-6.6/800-GPIO-add-named-gpio-exports.patch
@@ -103,7 +103,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
  int gpiod_export_link(struct device *dev, const char *name,
  		      struct gpio_desc *desc);
  void gpiod_unexport(struct gpio_desc *desc);
-@@ -653,12 +656,26 @@ void gpiod_unexport(struct gpio_desc *de
+@@ -653,11 +656,25 @@ void gpiod_unexport(struct gpio_desc *de
  
  #include <asm/errno.h>
  
@@ -119,17 +119,16 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
  {
  	return -ENOSYS;
  }
- 
++
 +static inline int gpio_export_with_name(struct gpio_desc *desc,
 +					bool direction_may_change,
 +					const char *name)
 +{
 +	return -ENOSYS;
 +}
-+
+ 
  static inline int gpiod_export_link(struct device *dev, const char *name,
  				    struct gpio_desc *desc)
- {
 --- a/drivers/gpio/gpiolib-sysfs.c
 +++ b/drivers/gpio/gpiolib-sysfs.c
 @@ -557,7 +557,7 @@ static struct class gpio_class = {
@@ -150,7 +149,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
  
  	dev = device_create_with_groups(&gpio_class, &gdev->dev,
  					MKDEV(0, 0), data, gpio_groups,
-@@ -640,8 +642,21 @@ int gpiod_export(struct gpio_desc *desc,
+@@ -640,8 +642,21 @@ err_unlock:
  	gpiod_dbg(desc, "%s: status %d\n", __func__, status);
  	return status;
  }
diff --git a/target/linux/generic/hack-6.6/810-bcma-ssb-fallback-sprom.patch b/target/linux/generic/hack-6.6/810-bcma-ssb-fallback-sprom.patch
index c581a512cb..9375a721b5 100644
--- a/target/linux/generic/hack-6.6/810-bcma-ssb-fallback-sprom.patch
+++ b/target/linux/generic/hack-6.6/810-bcma-ssb-fallback-sprom.patch
@@ -54,7 +54,7 @@ Subject: [PATCH] ssb_sprom: add generic kernel support for Broadcom  Fallback SP
  
 --- a/drivers/bcma/main.c
 +++ b/drivers/bcma/main.c
-@@ -668,6 +668,14 @@ static int __init bcma_modinit(void)
+@@ -671,6 +671,14 @@ static int __init bcma_modinit(void)
  {
  	int err;
  
diff --git a/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch b/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch
index 92b35efa55..b0054da2eb 100644
--- a/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch
+++ b/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch
@@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/Kconfig
 +++ b/net/Kconfig
-@@ -104,6 +104,9 @@ source "net/mptcp/Kconfig"
+@@ -129,6 +129,9 @@ source "net/mptcp/Kconfig"
  
  endif # if INET
  
@@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  obj-$(CONFIG_PROC_FS) += net-procfs.o
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -117,6 +117,7 @@
+@@ -118,6 +118,7 @@
  #include <linux/mroute.h>
  #include <linux/mroute6.h>
  #include <linux/icmpv6.h>
@@ -53,7 +53,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  #include <linux/uaccess.h>
  
-@@ -149,6 +150,7 @@
+@@ -150,6 +151,7 @@
  
  static DEFINE_MUTEX(proto_list_mutex);
  static LIST_HEAD(proto_list);
@@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  static void sock_def_write_space_wfree(struct sock *sk);
  static void sock_def_write_space(struct sock *sk);
-@@ -588,6 +590,21 @@ int __sk_receive_skb(struct sock *sk, str
+@@ -589,6 +591,21 @@ discard_and_relse:
  }
  EXPORT_SYMBOL(__sk_receive_skb);
  
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
  							  u32));
  INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
-@@ -2238,9 +2255,11 @@ static void __sk_free(struct sock *sk)
+@@ -2246,9 +2263,11 @@ static void __sk_free(struct sock *sk)
  	if (likely(sk->sk_net_refcnt))
  		sock_inuse_add(sock_net(sk), -1);
  
@@ -161,7 +161,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	  Support for PF_PACKET sockets monitoring interface used by the ss tool.
 --- a/net/unix/Kconfig
 +++ b/net/unix/Kconfig
-@@ -33,6 +33,7 @@ config	AF_UNIX_OOB
+@@ -29,6 +29,7 @@ config	AF_UNIX_OOB
  config UNIX_DIAG
  	tristate "UNIX: socket monitoring interface"
  	depends on UNIX
diff --git a/target/linux/generic/hack-6.6/902-debloat_proc.patch b/target/linux/generic/hack-6.6/902-debloat_proc.patch
index a90169efc9..ea9c20c1ab 100644
--- a/target/linux/generic/hack-6.6/902-debloat_proc.patch
+++ b/target/linux/generic/hack-6.6/902-debloat_proc.patch
@@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/fs/locks.c
 +++ b/fs/locks.c
-@@ -2909,6 +2909,8 @@ static const struct seq_operations locks
+@@ -2897,6 +2897,8 @@ static const struct seq_operations locks
  
  static int __init proc_locks_init(void)
  {
@@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	depends on PROC_FS
 --- a/fs/proc/consoles.c
 +++ b/fs/proc/consoles.c
-@@ -92,6 +92,9 @@ static const struct seq_operations conso
+@@ -107,6 +107,9 @@ static const struct seq_operations conso
  
  static int __init proc_consoles_init(void)
  {
@@ -235,7 +235,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!pe)
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
-@@ -4205,6 +4205,8 @@ static const struct seq_operations vmall
+@@ -4439,6 +4439,8 @@ static const struct seq_operations vmall
  
  static int __init proc_vmalloc_init(void)
  {
@@ -246,7 +246,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  				&vmalloc_op,
 --- a/mm/vmstat.c
 +++ b/mm/vmstat.c
-@@ -2109,10 +2109,12 @@ void __init init_mm_internals(void)
+@@ -2135,10 +2135,12 @@ void __init init_mm_internals(void)
  	start_shepherd_timer();
  #endif
  #ifdef CONFIG_PROC_FS
@@ -286,7 +286,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		goto err;
 --- a/net/core/net-procfs.c
 +++ b/net/core/net-procfs.c
-@@ -319,10 +319,12 @@ static int __net_init dev_proc_net_init(
+@@ -327,10 +327,12 @@ static int __net_init dev_proc_net_init(
  	if (!proc_create_net("dev", 0444, net->proc_net, &dev_seq_ops,
  			sizeof(struct seq_net_private)))
  		goto out;
@@ -301,7 +301,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  			sizeof(struct seq_net_private)))
  		goto out_softnet;
  
-@@ -332,9 +334,11 @@ static int __net_init dev_proc_net_init(
+@@ -340,9 +342,11 @@ static int __net_init dev_proc_net_init(
  out:
  	return rc;
  out_ptype:
@@ -315,7 +315,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  out_dev:
  	remove_proc_entry("dev", net->proc_net);
  	goto out;
-@@ -344,8 +348,10 @@ static void __net_exit dev_proc_net_exit
+@@ -352,8 +356,10 @@ static void __net_exit dev_proc_net_exit
  {
  	wext_proc_exit(net);
  
@@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -4114,6 +4114,8 @@ static __net_initdata struct pernet_oper
+@@ -4144,6 +4144,8 @@ static __net_initdata struct pernet_oper
  
  static int __init proto_init(void)
  {
@@ -385,7 +385,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/ipv4/proc.c
 +++ b/net/ipv4/proc.c
-@@ -553,5 +553,8 @@ static __net_initdata struct pernet_oper
+@@ -556,5 +556,8 @@ static __net_initdata struct pernet_oper
  
  int __init ip_misc_proc_init(void)
  {
@@ -408,7 +408,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/ipv4/inet_timewait_sock.c
 +++ b/net/ipv4/inet_timewait_sock.c
-@@ -269,7 +269,7 @@ void __inet_twsk_schedule(struct inet_ti
+@@ -266,7 +266,7 @@ void __inet_twsk_schedule(struct inet_ti
  	 */
  
  	if (!rearm) {
diff --git a/target/linux/generic/hack-6.6/904-debloat_dma_buf.patch b/target/linux/generic/hack-6.6/904-debloat_dma_buf.patch
index 105eb3da4b..8fdaab5ad6 100644
--- a/target/linux/generic/hack-6.6/904-debloat_dma_buf.patch
+++ b/target/linux/generic/hack-6.6/904-debloat_dma_buf.patch
@@ -64,7 +64,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +dma-shared-buffer-objs :=  $(dma-buf-objs-y)
 --- a/drivers/dma-buf/dma-buf.c
 +++ b/drivers/dma-buf/dma-buf.c
-@@ -1636,4 +1636,5 @@ static void __exit dma_buf_deinit(void)
+@@ -1731,4 +1731,5 @@ static void __exit dma_buf_deinit(void)
  	kern_unmount(dma_buf_mnt);
  	dma_buf_uninit_sysfs_statistics();
  }
@@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +MODULE_LICENSE("GPL");
 --- a/kernel/sched/core.c
 +++ b/kernel/sched/core.c
-@@ -4367,6 +4367,7 @@ int wake_up_state(struct task_struct *p,
+@@ -4487,6 +4487,7 @@ int wake_up_state(struct task_struct *p,
  {
  	return try_to_wake_up(p, state, 0);
  }
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
   * Perform scheduler related setup for a newly forked process p.
 --- a/fs/d_path.c
 +++ b/fs/d_path.c
-@@ -313,6 +313,7 @@ char *dynamic_dname(char *buffer, int bu
+@@ -314,6 +314,7 @@ char *dynamic_dname(char *buffer, int bu
  	buffer += buflen - sz;
  	return memcpy(buffer, temp, sz);
  }
diff --git a/target/linux/generic/hack-6.6/911-kobject_add_broadcast_uevent.patch b/target/linux/generic/hack-6.6/911-kobject_add_broadcast_uevent.patch
index 9854585d25..7a21e73dae 100644
--- a/target/linux/generic/hack-6.6/911-kobject_add_broadcast_uevent.patch
+++ b/target/linux/generic/hack-6.6/911-kobject_add_broadcast_uevent.patch
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #ifdef CONFIG_UEVENT_HELPER
  /* path to the userspace helper executed on an event */
  extern char uevent_helper[];
-@@ -224,4 +226,7 @@ int kobject_synth_uevent(struct kobject
+@@ -219,4 +221,7 @@ int kobject_synth_uevent(struct kobject
  __printf(2, 3)
  int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...);
  
diff --git a/target/linux/generic/hack-6.6/920-device_tree_cmdline.patch b/target/linux/generic/hack-6.6/920-device_tree_cmdline.patch
index cc384bb553..2a43ffb7ad 100644
--- a/target/linux/generic/hack-6.6/920-device_tree_cmdline.patch
+++ b/target/linux/generic/hack-6.6/920-device_tree_cmdline.patch
@@ -9,7 +9,7 @@ Subject: [PATCH] of/ftd: add device tree cmdline
 
 --- a/drivers/of/fdt.c
 +++ b/drivers/of/fdt.c
-@@ -1183,6 +1183,9 @@ int __init early_init_dt_scan_chosen(cha
+@@ -1185,6 +1185,9 @@ int __init early_init_dt_scan_chosen(cha
  	p = of_get_flat_dt_prop(node, "bootargs", &l);
  	if (p != NULL && l > 0)
  		strscpy(cmdline, p, min(l, COMMAND_LINE_SIZE));
diff --git a/target/linux/generic/hack-6.6/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch b/target/linux/generic/hack-6.6/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch
index 04aaab7adf..2cec82bb01 100644
--- a/target/linux/generic/hack-6.6/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch
+++ b/target/linux/generic/hack-6.6/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch
@@ -19,7 +19,7 @@ Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
 
 --- a/drivers/base/core.c
 +++ b/drivers/base/core.c
-@@ -1702,7 +1702,7 @@ static void device_links_purge(struct de
+@@ -1642,7 +1642,7 @@ static void device_links_purge(struct de
  #define FW_DEVLINK_FLAGS_RPM		(FW_DEVLINK_FLAGS_ON | \
  					 DL_FLAG_PM_RUNTIME)
  



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:05 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:05 -0400
Subject: [openwrt/openwrt]  kernel: crypto: add kmod-crypto-geniv as
 dependency to modules that use it
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15358.1710185791.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/729ad2feb32b70e9060073c29e3feedc5f6c418a

commit 729ad2feb32b70e9060073c29e3feedc5f6c418a
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Mar 7 15:08:27 2024 +0100

    kernel: crypto: add kmod-crypto-geniv as dependency to modules that use it
    
    Now that geniv is packaged separately for kernel 6.6, we need to add it
    as a dependency to kmod-crypto-seqiv and kmod-crypto-echainiv that require
    it under kernel 6.6.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/crypto.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 36b03bcdef..49882c58df 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -231,7 +231,7 @@ $(eval $(call KernelPackage,crypto-ecdh))
 
 define KernelPackage/crypto-echainiv
   TITLE:=Encrypted Chain IV Generator
-  DEPENDS:=+kmod-crypto-aead
+  DEPENDS:=+kmod-crypto-aead +LINUX_6_6:kmod-crypto-geniv
   KCONFIG:=CONFIG_CRYPTO_ECHAINIV
   FILES:=$(LINUX_DIR)/crypto/echainiv.ko
   AUTOLOAD:=$(call AutoLoad,09,echainiv)
@@ -906,7 +906,7 @@ $(eval $(call KernelPackage,crypto-geniv))
 
 define KernelPackage/crypto-seqiv
   TITLE:=CryptoAPI Sequence Number IV Generator
-  DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng
+  DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng +LINUX_6_6:kmod-crypto-geniv
   KCONFIG:=CONFIG_CRYPTO_SEQIV
   FILES:=$(LINUX_DIR)/crypto/seqiv.ko
   AUTOLOAD:=$(call AutoLoad,09,seqiv)



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:49 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:49 -0400
Subject: [openwrt/openwrt]  generic: 6.6: refresh config symbols
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15359.1710185798.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6be4e487da8ca2c5e318e57f5d75efc4b7bbfacb

commit 6be4e487da8ca2c5e318e57f5d75efc4b7bbfacb
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Jan 5 16:49:18 2024 +0800

    generic: 6.6: refresh config symbols
    
    Sort generic config for 6.6.
    
    The sort commands:
    $ ./scripts/kconfig.pl '+' target/linux/generic/config-6.6 /dev/null > target/linux/generic/config-6.6-new
    $ mv target/linux/generic/config-6.6-new target/linux/generic/config-6.6
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 target/linux/generic/config-6.6 | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 0d010a7b03..319f56fe01 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -155,14 +155,13 @@ CONFIG_AF_UNIX_OOB=y
 # CONFIG_AHCI_CEVA is not set
 # CONFIG_AHCI_DWC is not set
 # CONFIG_AHCI_IMX is not set
-# CONFIG_ARCH_MA35 is not set
 # CONFIG_AHCI_MVEBU is not set
 # CONFIG_AHCI_QORIQ is not set
 # CONFIG_AHCI_XGENE is not set
 CONFIG_AIO=y
-# CONFIG_AIR_EN8811H_PHY is not set
 # CONFIG_AIRO is not set
 # CONFIG_AIRO_CS is not set
+# CONFIG_AIR_EN8811H_PHY is not set
 # CONFIG_AIX_PARTITION is not set
 # CONFIG_AK09911 is not set
 # CONFIG_AK8974 is not set
@@ -265,6 +264,7 @@ CONFIG_ARCH_FORCE_MAX_ORDER=11
 # CONFIG_ARCH_LAYERSCAPE is not set
 # CONFIG_ARCH_LG1K is not set
 # CONFIG_ARCH_LPC32XX is not set
+# CONFIG_ARCH_MA35 is not set
 # CONFIG_ARCH_MEDIATEK is not set
 # CONFIG_ARCH_MESON is not set
 # CONFIG_ARCH_MILBEAUT is not set
@@ -885,8 +885,8 @@ CONFIG_BUILDTIME_TABLE_SORT=y
 # CONFIG_BUILD_BIN2C is not set
 CONFIG_BUILD_SALT=""
 # CONFIG_C2PORT is not set
-CONFIG_CACHE_L2X0_PMU=y
 # CONFIG_CACHESTAT_SYSCALL is not set
+CONFIG_CACHE_L2X0_PMU=y
 # CONFIG_CADENCE_WATCHDOG is not set
 # CONFIG_CAIF is not set
 # CONFIG_CAN is not set
@@ -971,8 +971,8 @@ CONFIG_CFG80211_HEADERS=y
 # CONFIG_CHARGER_MANAGER is not set
 # CONFIG_CHARGER_MAX77976 is not set
 # CONFIG_CHARGER_MAX8903 is not set
-# CONFIG_CHARGER_QCOM_SMBB is not set
 # CONFIG_CHARGER_QCOM_SMB2 is not set
+# CONFIG_CHARGER_QCOM_SMBB is not set
 # CONFIG_CHARGER_RT9455 is not set
 # CONFIG_CHARGER_RT9467 is not set
 # CONFIG_CHARGER_RT9471 is not set
@@ -1092,6 +1092,8 @@ CONFIG_CONSTRUCTORS=y
 # CONFIG_CORTINA_PHY is not set
 # CONFIG_COUNTER is not set
 # CONFIG_CPA_DEBUG is not set
+# CONFIG_CPUFREQ_DT is not set
+# CONFIG_CPUFREQ_DT_PLATDEV is not set
 # CONFIG_CPU_BIG_ENDIAN is not set
 # CONFIG_CPU_BPREDICT_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
@@ -1117,8 +1119,6 @@ CONFIG_CONSTRUCTORS=y
 # CONFIG_CPU_NO_EFFICIENT_FFS is not set
 CONFIG_CPU_SW_DOMAIN_PAN=y
 # CONFIG_CPU_THERMAL is not set
-# CONFIG_CPUFREQ_DT is not set
-# CONFIG_CPUFREQ_DT_PLATDEV is not set
 # CONFIG_CRAMFS is not set
 CONFIG_CRAMFS_BLOCKDEV=y
 # CONFIG_CRAMFS_MTD is not set
@@ -1539,11 +1539,11 @@ CONFIG_DEVPORT=y
 # CONFIG_DMABUF_SYSFS_STATS is not set
 # CONFIG_DMADEVICES is not set
 # CONFIG_DMADEVICES_DEBUG is not set
+# CONFIG_DMAPOOL_TEST is not set
 # CONFIG_DMARD06 is not set
 # CONFIG_DMARD09 is not set
 # CONFIG_DMARD10 is not set
 # CONFIG_DMASCC is not set
-# CONFIG_DMAPOOL_TEST is not set
 # CONFIG_DMATEST is not set
 # CONFIG_DMA_API_DEBUG is not set
 CONFIG_DMA_COHERENT_POOL=y
@@ -1658,11 +1658,11 @@ CONFIG_DQL=y
 # CONFIG_DRM_LIMA is not set
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 # CONFIG_DRM_LOGICVC is not set
-# CONFIG_DRM_LOONGSON is not set
 # CONFIG_DRM_LONTIUM_LT8912B is not set
 # CONFIG_DRM_LONTIUM_LT9211 is not set
 # CONFIG_DRM_LONTIUM_LT9611 is not set
 # CONFIG_DRM_LONTIUM_LT9611UXC is not set
+# CONFIG_DRM_LOONGSON is not set
 # CONFIG_DRM_LVDS_CODEC is not set
 # CONFIG_DRM_LVDS_ENCODER is not set
 # CONFIG_DRM_MALI_DISPLAY is not set
@@ -2343,8 +2343,8 @@ CONFIG_GPIOLIB_FASTPATH_LIMIT=512
 # CONFIG_GPIO_CDEV is not set
 # CONFIG_GPIO_CDEV_V1 is not set
 # CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_DWAPB is not set
 # CONFIG_GPIO_DS4520 is not set
+# CONFIG_GPIO_DWAPB is not set
 # CONFIG_GPIO_EM is not set
 # CONFIG_GPIO_EXAR is not set
 # CONFIG_GPIO_F7188X is not set
@@ -3166,8 +3166,8 @@ CONFIG_JOLIET=y
 # CONFIG_KALLSYMS is not set
 # CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
 # CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_SELFTEST is not set
 CONFIG_KALLSYMS_BASE_RELATIVE=y
+# CONFIG_KALLSYMS_SELFTEST is not set
 # CONFIG_KALLSYMS_UNCOMPRESSED is not set
 # CONFIG_KARMA_PARTITION is not set
 # CONFIG_KASAN is not set
@@ -3406,9 +3406,9 @@ CONFIG_LOCKDEP_STACK_TRACE_BITS=19
 CONFIG_LOCKDEP_STACK_TRACE_HASH_BITS=14
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_LOCKD_V4=y
-CONFIG_LOCK_MM_AND_FIND_VMA=y
 # CONFIG_LOCKUP_DETECTOR is not set
 # CONFIG_LOCK_EVENT_COUNTS is not set
+CONFIG_LOCK_MM_AND_FIND_VMA=y
 # CONFIG_LOCK_STAT is not set
 # CONFIG_LOCK_TORTURE_TEST is not set
 # CONFIG_LOGFS is not set
@@ -5186,9 +5186,9 @@ CONFIG_PWRSEQ_SIMPLE=y
 # CONFIG_QCA7000 is not set
 # CONFIG_QCA7000_SPI is not set
 # CONFIG_QCA7000_UART is not set
-# CONFIG_QCA83XX_PHY is not set
 # CONFIG_QCA807X_PHY is not set
 # CONFIG_QCA808X_PHY is not set
+# CONFIG_QCA83XX_PHY is not set
 # CONFIG_QCOM_A7PLL is not set
 # CONFIG_QCOM_BAM_DMUX is not set
 # CONFIG_QCOM_EMAC is not set
@@ -6116,8 +6116,8 @@ CONFIG_SIGNALFD=y
 # CONFIG_SKGE is not set
 # CONFIG_SKY2 is not set
 # CONFIG_SKY2_DEBUG is not set
-# CONFIG_SLAB_DEPRECATED is not set
 CONFIG_SLABINFO=y
+# CONFIG_SLAB_DEPRECATED is not set
 CONFIG_SLAB_FREELIST_HARDENED=y
 CONFIG_SLAB_FREELIST_RANDOM=y
 CONFIG_SLAB_MERGE_DEFAULT=y
@@ -6805,8 +6805,6 @@ CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES=y
 # CONFIG_SUSPEND is not set
 # CONFIG_SUSPEND_SKIP_SYNC is not set
 CONFIG_SWAP=y
-# CONFIG_SWIOTLB is not set
-# CONFIG_SWIOTLB_DYNAMIC is not set
 # CONFIG_SWCONFIG is not set
 # CONFIG_SWCONFIG_B53 is not set
 # CONFIG_SWCONFIG_B53_MDIO_DRIVER is not set
@@ -6814,6 +6812,8 @@ CONFIG_SWAP=y
 # CONFIG_SWCONFIG_B53_SPI_DRIVER is not set
 # CONFIG_SWCONFIG_B53_SRAB_DRIVER is not set
 # CONFIG_SWCONFIG_LEDS is not set
+# CONFIG_SWIOTLB is not set
+# CONFIG_SWIOTLB_DYNAMIC is not set
 # CONFIG_SW_SYNC is not set
 # CONFIG_SX9310 is not set
 # CONFIG_SX9324 is not set
@@ -7193,8 +7193,8 @@ CONFIG_TRAD_SIGNALS=y
 # CONFIG_TRUSTED_FOUNDATIONS is not set
 # CONFIG_TRUSTED_KEYS is not set
 # CONFIG_TRUSTED_KEYS_CAAM is not set
-# CONFIG_TRUSTED_KEYS_TPM is not set
 # CONFIG_TRUSTED_KEYS_TEE is not set
+# CONFIG_TRUSTED_KEYS_TPM is not set
 # CONFIG_TSL2583 is not set
 # CONFIG_TSL2591 is not set
 # CONFIG_TSL2772 is not set
@@ -7245,8 +7245,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 # CONFIG_UFS_FS is not set
 # CONFIG_UHID is not set
 CONFIG_UID16=y
-# CONFIG_UIO is not set
 # CONFIG_UIMAGE_FIT_BLK is not set
+# CONFIG_UIO is not set
 # CONFIG_ULTRA is not set
 # CONFIG_ULTRIX_PARTITION is not set
 # CONFIG_UNICODE is not set
@@ -7862,13 +7862,13 @@ CONFIG_VHOST_MENU=y
 # CONFIG_VIDEO_SMIAPP is not set
 # CONFIG_VIDEO_SOLO6X10 is not set
 # CONFIG_VIDEO_SONY_BTF_MPX is not set
-# CONFIG_VIDEO_SUN4I_CSI is not set
-# CONFIG_VIDEO_SUN6I_CSI is not set
-# CONFIG_VIDEO_SUN8I_A83T_MIPI_CSI2 is not set
 # CONFIG_VIDEO_SR030PC30 is not set
 # CONFIG_VIDEO_STK1160 is not set
 # CONFIG_VIDEO_STK1160_COMMON is not set
 # CONFIG_VIDEO_ST_MIPID02 is not set
+# CONFIG_VIDEO_SUN4I_CSI is not set
+# CONFIG_VIDEO_SUN6I_CSI is not set
+# CONFIG_VIDEO_SUN8I_A83T_MIPI_CSI2 is not set
 # CONFIG_VIDEO_TC358743 is not set
 # CONFIG_VIDEO_TC358746 is not set
 # CONFIG_VIDEO_TDA1997X is not set



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:08 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:08 -0400
Subject: [openwrt/openwrt]  mt76: fix build failure on linux kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15360.1710185806.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/504cf50eea5a8f56b114cd985e7dc7af6cf64bfa

commit 504cf50eea5a8f56b114cd985e7dc7af6cf64bfa
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Mar 1 15:49:13 2024 +0800

    mt76: fix build failure on linux kernel 6.6
    
    A commit introduced in kernel 6.6 has splitted page_pool.h into
    several headers. Thus the included header must be modified for a
    successful build.
    
    Ref: a9ca9f9ceff3 (page_pool: split types and declarations from
    page_pool.h)
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 .../100-fix-build-on-linux-kernel-6.6.patch        | 24 ++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/package/kernel/mt76/patches/100-fix-build-on-linux-kernel-6.6.patch b/package/kernel/mt76/patches/100-fix-build-on-linux-kernel-6.6.patch
new file mode 100644
index 0000000000..4fdba0c472
--- /dev/null
+++ b/package/kernel/mt76/patches/100-fix-build-on-linux-kernel-6.6.patch
@@ -0,0 +1,24 @@
+--- a/mac80211.c
++++ b/mac80211.c
+@@ -4,7 +4,9 @@
+  */
+ #include <linux/sched.h>
+ #include <linux/of.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,6,0)
+ #include <net/page_pool.h>
++#endif
+ #include "mt76.h"
+ 
+ #define CHAN2G(_idx, _freq) {			\
+--- a/mt76.h
++++ b/mt76.h
+@@ -13,6 +13,9 @@
+ #include <linux/leds.h>
+ #include <linux/usb.h>
+ #include <linux/average.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,6,0)
++#include <net/page_pool/helpers.h>
++#endif
+ #include <linux/soc/mediatek/mtk_wed.h>
+ #include <net/mac80211.h>
+ #include "util.h"



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:55 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:55 -0400
Subject: [openwrt/openwrt]  kernel: modules: netsupport: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15361.1710185811.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/48b52d51dcb976a57875435786562987d5b8d2f7

commit 48b52d51dcb976a57875435786562987d5b8d2f7
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sat Jan 6 15:09:12 2024 +0800

    kernel: modules: netsupport: adapt for kernel 6.6
    
    Adapt netsupport kmods for building under kernel 6.6:
    * common part of mqprio was split into a new Kconfig since 6.3.
    Add new kmod-sched-mqprio-common as dependency for kmod-sched-mqprio.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/linux/modules/netsupport.mk | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk
index 535c087dec..0ee58fada4 100644
--- a/package/kernel/linux/modules/netsupport.mk
+++ b/package/kernel/linux/modules/netsupport.mk
@@ -907,10 +907,26 @@ endef
 $(eval $(call KernelPackage,sched-ipset))
 
 
+define KernelPackage/sched-mqprio-common
+  SUBMENU:=$(NETWORK_SUPPORT_MENU)
+  TITLE:=mqprio queue common dependencies support
+  DEPENDS:=@LINUX_6_6
+  HIDDEN:=1
+  KCONFIG:=CONFIG_NET_SCH_MQPRIO_LIB
+  FILES:=$(LINUX_DIR)/net/sched/sch_mqprio_lib.ko
+endef
+
+define KernelPackage/sched-mqprio-common/description
+ Common library for manipulating mqprio queue configurations
+endef
+
+$(eval $(call KernelPackage,sched-mqprio-common))
+
+
 define KernelPackage/sched-mqprio
   SUBMENU:=$(NETWORK_SUPPORT_MENU)
   TITLE:=Multi-queue priority scheduler (MQPRIO)
-  DEPENDS:=+kmod-sched-core
+  DEPENDS:=+kmod-sched-core +LINUX_6_6:kmod-sched-mqprio-common
   KCONFIG:=CONFIG_NET_SCH_MQPRIO
   FILES:=$(LINUX_DIR)/net/sched/sch_mqprio.ko
   AUTOLOAD:=$(call AutoProbe, sch_mqprio)



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:59 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:59 -0400
Subject: [openwrt/openwrt]  kernel: modules: block: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15362.1710185814.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/85ede9291bfa204982d35c5e036d42024575ae99

commit 85ede9291bfa204982d35c5e036d42024575ae99
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sat Jan 6 16:12:06 2024 +0800

    kernel: modules: block: adapt for kernel 6.6
    
    Adapt block kmods for building under kernel 6.6:
    * To build scsi_transport_iscsi.ko, change CONFIG_SCSI_ISCSI_ATTRS
    from =y to =m as this config is always tristate since 2.6.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/linux/modules/block.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/block.mk b/package/kernel/linux/modules/block.mk
index 5e6eefa76a..49a1b6fce1 100644
--- a/package/kernel/linux/modules/block.mk
+++ b/package/kernel/linux/modules/block.mk
@@ -263,7 +263,7 @@ define KernelPackage/iscsi-initiator
 	CONFIG_INET \
 	CONFIG_SCSI_LOWLEVEL=y \
 	CONFIG_ISCSI_TCP \
-	CONFIG_SCSI_ISCSI_ATTRS=y
+	CONFIG_SCSI_ISCSI_ATTRS
   FILES:= \
 	$(LINUX_DIR)/drivers/scsi/iscsi_tcp.ko \
 	$(LINUX_DIR)/drivers/scsi/libiscsi.ko \



From lede-commits at lists.infradead.org  Mon Mar 11 12:17:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:17:58 -0400
Subject: [openwrt/openwrt]  kernel: modules: fs: adapt for kernel 6.6
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15363.1710185822.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f9198480da262d379dc1604e2c5338a213aef6d0

commit f9198480da262d379dc1604e2c5338a213aef6d0
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Sat Jan 6 15:56:26 2024 +0800

    kernel: modules: fs: adapt for kernel 6.6
    
    Adapt fs kmods for building under kernel 6.6:
    * Add kmod-fs-netfs as dependency for kmod-fs-9p
    * Add kmod-fs-netfs as dependency for fs-smbfs-common as netfs is
    required for cifs since 6.3
    * Add new kmod-nls-ucs2-utils as dependency for smbfs/jfs as UCS2
    support was split as new module since 6.6.
    * Add kmod-lib-zlib-deflate and kmod-lib-zlib-inflate as
    dependencies for kmod-pstore due to crypto API compression was
    replaced with zlib_deflate library calls since 6.6
    * Remove nfs_ssc.ko from kmod-fs-nfs-common. The nfs_ssc was no
    longer a kernel module described by NFS_V4_2_SSC_HELPER since 5.13 [1]
    
    Link:
    [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/fs/Kconfig?id=d9092b4bb2109502eb8972021a3f74febc931a63
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 package/kernel/linux/modules/fs.mk  |  8 +++++---
 package/kernel/linux/modules/nls.mk | 17 +++++++++++++++++
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/package/kernel/linux/modules/fs.mk b/package/kernel/linux/modules/fs.mk
index 58af180c28..8f1ed41484 100644
--- a/package/kernel/linux/modules/fs.mk
+++ b/package/kernel/linux/modules/fs.mk
@@ -10,7 +10,7 @@ FS_MENU:=Filesystems
 define KernelPackage/fs-9p
   SUBMENU:=$(FS_MENU)
   TITLE:=Plan 9 Resource Sharing Support
-  DEPENDS:=+kmod-9pnet +LINUX_6_1:kmod-fs-netfs
+  DEPENDS:=+kmod-9pnet +LINUX_6_1:kmod-fs-netfs +LINUX_6_6:kmod-fs-netfs
   KCONFIG:=\
 	CONFIG_9P_FS \
 	CONFIG_9P_FS_POSIX_ACL=n \
@@ -87,6 +87,7 @@ define KernelPackage/fs-smbfs-common
   SUBMENU:=$(FS_MENU)
   TITLE:=SMBFS common dependencies support
   HIDDEN:=1
+  DEPENDS:=+LINUX_6_6:kmod-fs-netfs +LINUX_6_6:kmod-nls-ucs2-utils
   KCONFIG:=\
 	CONFIG_SMBFS_COMMON at lt6.1 \
 	CONFIG_SMBFS at ge6.1
@@ -344,6 +345,7 @@ define KernelPackage/fs-jfs
   FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko
   AUTOLOAD:=$(call AutoLoad,30,jfs,1)
   $(call AddDepends/nls)
+  DEPENDS:=+LINUX_6_6:kmod-nls-ucs2-utils
 endef
 
 define KernelPackage/fs-jfs/description
@@ -470,8 +472,7 @@ define KernelPackage/fs-nfs-common
   FILES:= \
 	$(LINUX_DIR)/fs/lockd/lockd.ko \
 	$(LINUX_DIR)/net/sunrpc/sunrpc.ko \
-	$(LINUX_DIR)/fs/nfs_common/grace.ko \
-	$(LINUX_DIR)/fs/nfs_common/nfs_ssc.ko
+	$(LINUX_DIR)/fs/nfs_common/grace.ko
   AUTOLOAD:=$(call AutoLoad,30,grace sunrpc lockd)
 endef
 
@@ -712,6 +713,7 @@ define KernelPackage/pstore
 	CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
   FILES:= $(LINUX_DIR)/fs/pstore/pstore.ko
   AUTOLOAD:=$(call AutoLoad,30,pstore,1)
+  DEPENDS:=+LINUX_6_6:kmod-lib-zlib-deflate +LINUX_6_6:kmod-lib-zlib-inflate
 endef
 
 define KernelPackage/pstore/description
diff --git a/package/kernel/linux/modules/nls.mk b/package/kernel/linux/modules/nls.mk
index 7450ed1ce5..893ec9c23a 100644
--- a/package/kernel/linux/modules/nls.mk
+++ b/package/kernel/linux/modules/nls.mk
@@ -339,3 +339,20 @@ define KernelPackage/nls-utf8/description
 endef
 
 $(eval $(call KernelPackage,nls-utf8))
+
+
+define KernelPackage/nls-ucs2-utils
+  SUBMENU:=Native Language Support
+  TITLE:=UCS-2 common library
+  DEPENDS+=@LINUX_6_6
+  HIDDEN:=1
+  KCONFIG:=CONFIG_NLS_UCS2_UTILS
+  FILES:=$(LINUX_DIR)/fs/nls/nls_ucs2_utils.ko
+  $(call AddDepends/nls)
+endef
+
+define KernelPackage/nls-ucs2-utils/description
+ UCS-2 common library
+endef
+
+$(eval $(call KernelPackage,nls-ucs2-utils))



From lede-commits at lists.infradead.org  Mon Mar 11 12:18:11 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 15:18:11 -0400
Subject: [openwrt/openwrt]  fitblk: invert kernel version dependency
In-Reply-To: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
References: <171018465710.2802951.4954970249964030126@git-01.infra.openwrt.org>
Message-ID: <mailman.15366.1710185826.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b72a7bf186ef86f8a805b94b1b244fd9393b4af9

commit b72a7bf186ef86f8a805b94b1b244fd9393b4af9
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 2 16:09:29 2024 +0000

    fitblk: invert kernel version dependency
    
    Allow building fitblk with Linux 6.6 by depending on !LINUX_5_15
    instead of LINUX_6_1.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/utils/fitblk/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/utils/fitblk/Makefile b/package/utils/fitblk/Makefile
index cb9e7ebb40..4da4dc46f1 100644
--- a/package/utils/fitblk/Makefile
+++ b/package/utils/fitblk/Makefile
@@ -16,7 +16,7 @@ define Package/fitblk
   SECTION:=base
   CATEGORY:=Base system
   TITLE:=fitblk firmware release tool
-  DEPENDS:=@LINUX_6_1
+  DEPENDS:=@!LINUX_5_15
 endef
 
 define Package/fitblk/description



From lede-commits at lists.infradead.org  Mon Mar 11 13:53:37 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 16:53:37 -0400
Subject: [openwrt/openwrt]  kernel: config: add symbol introduced with 6.1.81
In-Reply-To: <171019041627.3008969.6991934453419631313@git-01.infra.openwrt.org>
References: <171019041627.3008969.6991934453419631313@git-01.infra.openwrt.org>
Message-ID: <mailman.15369.1710190427.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d84128658b46f28a2f01fd5aa15d001cf59fcb9f

commit d84128658b46f28a2f01fd5aa15d001cf59fcb9f
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Wed Mar 6 16:19:12 2024 -0500

    kernel: config: add symbol introduced with 6.1.81
    
    Add CONFIG_EFI_HANDOVER_PROTOCOL=y to the default config[1] and disable CONFIG_NFSD_V2
    
    1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/arch/x86/Kconfig?id=v6.1.81&id2=v6.1.80
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
---
 target/linux/generic/config-6.1 | 1 +
 target/linux/x86/config-6.1     | 1 +
 2 files changed, 2 insertions(+)

diff --git a/target/linux/generic/config-6.1 b/target/linux/generic/config-6.1
index deecb62ba8..fabe7029c5 100644
--- a/target/linux/generic/config-6.1
+++ b/target/linux/generic/config-6.1
@@ -4437,6 +4437,7 @@ CONFIG_NFS_COMMON=y
 # CONFIG_NFS_FSCACHE is not set
 # CONFIG_NFS_SWAP is not set
 # CONFIG_NFS_V2 is not set
+# CONFIG_NFSD_V2 is not set
 CONFIG_NFS_V3=y
 # CONFIG_NFS_V3_ACL is not set
 # CONFIG_NFS_V4 is not set
diff --git a/target/linux/x86/config-6.1 b/target/linux/x86/config-6.1
index af3676f371..6580969faf 100644
--- a/target/linux/x86/config-6.1
+++ b/target/linux/x86/config-6.1
@@ -106,6 +106,7 @@ CONFIG_EARLY_PRINTK=y
 CONFIG_EDAC_ATOMIC_SCRUB=y
 CONFIG_EDAC_SUPPORT=y
 # CONFIG_EDD is not set
+CONFIG_EFI_HANDOVER_PROTOCOL=y
 # CONFIG_EISA is not set
 # CONFIG_EUROTECH_WDT is not set
 # CONFIG_EXAR_WDT is not set



From lede-commits at lists.infradead.org  Mon Mar 11 13:53:36 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 16:53:36 -0400
Subject: [openwrt/openwrt]  kernel: bump 6.1 to 6.1.81
In-Reply-To: <171019041627.3008969.6991934453419631313@git-01.infra.openwrt.org>
References: <171019041627.3008969.6991934453419631313@git-01.infra.openwrt.org>
Message-ID: <mailman.15370.1710190427.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/dd02da54e9c4c25258107ad8681acf0ab70c98f5

commit dd02da54e9c4c25258107ad8681acf0ab70c98f5
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Wed Mar 6 16:29:01 2024 -0500

    kernel: bump 6.1 to 6.1.81
    
    Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.81
    
    All patches automatically rebased.
    
    Build system: x86/64
    Build-tested: x86/64/AMD Cezanne, ramips/tplink_archer-a6-v3, flogic/xiaomi_redmi-router-ax6000-ubootmod
    Run-tested: x86/64/AMD Cezanne, ramips/tplink_archer-a6-v3, flogic/xiaomi_redmi-router-ax6000-ubootmod
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
---
 include/kernel-6.1                                                | 4 ++--
 .../950-0100-lan78xx-Enable-LEDs-and-auto-negotiation.patch       | 6 +++---
 .../950-0137-lan78xx-Read-initial-EEE-status-from-DT.patch        | 2 +-
 ...50-0142-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch | 2 +-
 ...950-0143-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch | 4 ++--
 ...0152-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch | 2 +-
 .../950-0153-lan78xx-EEE-support-is-now-a-PHY-property.patch      | 2 +-
 ...0195-media-i2c-imx477-Support-for-the-Sony-IMX477-sensor.patch | 2 +-
 ...0196-media-i2c-imx519-Support-for-the-Sony-IMX519-sensor.patch | 2 +-
 ...197-Documentation-devicetree-Add-documentation-for-imx37.patch | 2 +-
 ...379-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch | 2 +-
 ...0528-dtbindings-media-i2c-Add-IMX708-CMOS-sensor-binding.patch | 2 +-
 ...593-dt-bindings-media-i2c-Add-IMX296-CMOS-sensor-binding.patch | 2 +-
 .../950-0594-media-i2c-IMX296-camera-sensor-driver.patch          | 2 +-
 .../950-0649-media-dt-bindings-Convert-imx290.txt-to-YAML.patch   | 2 +-
 ...676-dt-bindings-media-i2c-Replace-IMX708-sensor-binding-.patch | 2 +-
 ...950-1194-media-dt-bindings-i2c-Add-Rohm-BU64754-bindings.patch | 2 +-
 .../950-1195-media-i2c-Add-driver-for-OmniVision-OV64A40.patch    | 2 +-
 .../714-net-pcs-add-driver-for-MediaTek-SGMII-PCS.patch           | 2 +-
 ...71-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch | 8 ++++----
 ...-v6.4-0010-net-dsa-mt7530-introduce-separate-MDIO-driver.patch | 2 +-
 ...012-net-dsa-mt7530-introduce-driver-for-MT7988-built-in-.patch | 2 +-
 ...net-phy-Add-driver-for-Motorcomm-yt8521-gigabit-ethernet.patch | 2 +-
 .../510-block-add-uImage.FIT-subimage-block-driver.patch          | 2 +-
 ...701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch | 2 +-
 .../739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch      | 2 +-
 .../700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch     | 2 +-
 .../701-net-dsa-add-out-of-band-tagging-protocol.patch            | 2 +-
 ...6.5-net-phy-add-driver-for-MediaTek-SoC-built-in-GE-PHYs.patch | 2 +-
 ...v6.5-09-MAINTAINERS-add-Mediatek-MTMIPS-Clock-maintainer.patch | 2 +-
 target/linux/ramips/patches-6.1/200-add-ralink-eth.patch          | 2 +-
 31 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/include/kernel-6.1 b/include/kernel-6.1
index d00860a68c..1d3d508822 100644
--- a/include/kernel-6.1
+++ b/include/kernel-6.1
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.1 = .80
-LINUX_KERNEL_HASH-6.1.80 = 568ecaaebb8b87c7c8246bba67bc83402972bf34f5811651a2d3cd548ff7b671
+LINUX_VERSION-6.1 = .81
+LINUX_KERNEL_HASH-6.1.81 = 0ebd861c6fd47bb0a9d3a09664d704833d1a54750c7bf9c4ad8b5e9cbd49342b
diff --git a/target/linux/bcm27xx/patches-6.1/950-0100-lan78xx-Enable-LEDs-and-auto-negotiation.patch b/target/linux/bcm27xx/patches-6.1/950-0100-lan78xx-Enable-LEDs-and-auto-negotiation.patch
index 9c5a7333c4..b0c577587a 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0100-lan78xx-Enable-LEDs-and-auto-negotiation.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0100-lan78xx-Enable-LEDs-and-auto-negotiation.patch
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -2881,6 +2881,11 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2883,6 +2883,11 @@ static int lan78xx_reset(struct lan78xx_
  	int ret;
  	u32 buf;
  	u8 sig;
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  
  	ret = lan78xx_read_reg(dev, HW_CFG, &buf);
  	if (ret < 0)
-@@ -2945,6 +2950,10 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2947,6 +2952,10 @@ static int lan78xx_reset(struct lan78xx_
  
  	buf |= HW_CFG_MEF_;
  
@@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  	ret = lan78xx_write_reg(dev, HW_CFG, buf);
  	if (ret < 0)
  		return ret;
-@@ -3043,6 +3052,9 @@ static int lan78xx_reset(struct lan78xx_
+@@ -3046,6 +3055,9 @@ static int lan78xx_reset(struct lan78xx_
  			buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
  		}
  	}
diff --git a/target/linux/bcm27xx/patches-6.1/950-0137-lan78xx-Read-initial-EEE-status-from-DT.patch b/target/linux/bcm27xx/patches-6.1/950-0137-lan78xx-Read-initial-EEE-status-from-DT.patch
index 8d097c1ea9..7c9268289c 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0137-lan78xx-Read-initial-EEE-status-from-DT.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0137-lan78xx-Read-initial-EEE-status-from-DT.patch
@@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -3108,6 +3108,22 @@ static int lan78xx_open(struct net_devic
+@@ -3111,6 +3111,22 @@ static int lan78xx_open(struct net_devic
  
  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0142-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/target/linux/bcm27xx/patches-6.1/950-0142-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
index 22a67a0eb1..ad16a61cbc 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0142-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0142-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.org>
  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
  {
  	u32 *buf;
-@@ -3467,8 +3476,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -3470,8 +3479,14 @@ static int lan78xx_bind(struct lan78xx_n
  	if (DEFAULT_RX_CSUM_ENABLE)
  		dev->net->features |= NETIF_F_RXCSUM;
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0143-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch b/target/linux/bcm27xx/patches-6.1/950-0143-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
index 66acf38301..f8016c66d2 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0143-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0143-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
@@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -2417,6 +2417,22 @@ static int lan78xx_phy_init(struct lan78
+@@ -2419,6 +2419,22 @@ static int lan78xx_phy_init(struct lan78
  	mii_adv_to_linkmode_adv_t(fc, mii_adv);
  	linkmode_or(phydev->advertising, fc, phydev->advertising);
  
@@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  	if (phydev->mdio.dev.of_node) {
  		u32 reg;
  		int len;
-@@ -3117,22 +3133,6 @@ static int lan78xx_open(struct net_devic
+@@ -3120,22 +3136,6 @@ static int lan78xx_open(struct net_devic
  
  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0152-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/target/linux/bcm27xx/patches-6.1/950-0152-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
index 127ddbc537..85514feac4 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0152-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0152-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
@@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
  {
  	u32 *buf;
-@@ -4454,7 +4459,13 @@ static int lan78xx_probe(struct usb_inte
+@@ -4457,7 +4462,13 @@ static int lan78xx_probe(struct usb_inte
  	if (ret < 0)
  		goto out4;
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0153-lan78xx-EEE-support-is-now-a-PHY-property.patch b/target/linux/bcm27xx/patches-6.1/950-0153-lan78xx-EEE-support-is-now-a-PHY-property.patch
index b38c62273e..38510a6fd5 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0153-lan78xx-EEE-support-is-now-a-PHY-property.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0153-lan78xx-EEE-support-is-now-a-PHY-property.patch
@@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -2422,7 +2422,7 @@ static int lan78xx_phy_init(struct lan78
+@@ -2424,7 +2424,7 @@ static int lan78xx_phy_init(struct lan78
  	mii_adv_to_linkmode_adv_t(fc, mii_adv);
  	linkmode_or(phydev->advertising, fc, phydev->advertising);
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0195-media-i2c-imx477-Support-for-the-Sony-IMX477-sensor.patch b/target/linux/bcm27xx/patches-6.1/950-0195-media-i2c-imx477-Support-for-the-Sony-IMX477-sensor.patch
index 102b1e2309..4860bae933 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0195-media-i2c-imx477-Support-for-the-Sony-IMX477-sensor.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0195-media-i2c-imx477-Support-for-the-Sony-IMX477-sensor.patch
@@ -343,7 +343,7 @@ Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19283,6 +19283,14 @@ T:	git git://linuxtv.org/media_tree.git
+@@ -19290,6 +19290,14 @@ T:	git git://linuxtv.org/media_tree.git
  F:	Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml
  F:	drivers/media/i2c/imx412.c
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0196-media-i2c-imx519-Support-for-the-Sony-IMX519-sensor.patch b/target/linux/bcm27xx/patches-6.1/950-0196-media-i2c-imx519-Support-for-the-Sony-IMX519-sensor.patch
index bae8b88490..662c057e9a 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0196-media-i2c-imx519-Support-for-the-Sony-IMX519-sensor.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0196-media-i2c-imx519-Support-for-the-Sony-IMX519-sensor.patch
@@ -177,7 +177,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19291,6 +19291,14 @@ T:	git git://linuxtv.org/media_tree.git
+@@ -19298,6 +19298,14 @@ T:	git git://linuxtv.org/media_tree.git
  F:	Documentation/devicetree/bindings/media/i2c/imx477.yaml
  F:	drivers/media/i2c/imx477.c
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0197-Documentation-devicetree-Add-documentation-for-imx37.patch b/target/linux/bcm27xx/patches-6.1/950-0197-Documentation-devicetree-Add-documentation-for-imx37.patch
index 2a42b1feac..e1115b80bb 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0197-Documentation-devicetree-Add-documentation-for-imx37.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0197-Documentation-devicetree-Add-documentation-for-imx37.patch
@@ -132,7 +132,7 @@ Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19288,6 +19288,7 @@ M:	Raspberry Pi Kernel Maintenance <kern
+@@ -19295,6 +19295,7 @@ M:	Raspberry Pi Kernel Maintenance <kern
  L:	linux-media at vger.kernel.org
  S:	Maintained
  T:	git git://linuxtv.org/media_tree.git
diff --git a/target/linux/bcm27xx/patches-6.1/950-0379-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch b/target/linux/bcm27xx/patches-6.1/950-0379-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch
index 2d5c962d23..10032530fe 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0379-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0379-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch
@@ -10,7 +10,7 @@ Subject: [PATCH] Patching lan78xx for SOF_TIMESTAMPING_TX_SOFTWARE
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -1953,6 +1953,7 @@ static const struct ethtool_ops lan78xx_
+@@ -1955,6 +1955,7 @@ static const struct ethtool_ops lan78xx_
  	.set_link_ksettings = lan78xx_set_link_ksettings,
  	.get_regs_len	= lan78xx_get_regs_len,
  	.get_regs	= lan78xx_get_regs,
diff --git a/target/linux/bcm27xx/patches-6.1/950-0528-dtbindings-media-i2c-Add-IMX708-CMOS-sensor-binding.patch b/target/linux/bcm27xx/patches-6.1/950-0528-dtbindings-media-i2c-Add-IMX708-CMOS-sensor-binding.patch
index 541f19f261..efee9ebcd7 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0528-dtbindings-media-i2c-Add-IMX708-CMOS-sensor-binding.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0528-dtbindings-media-i2c-Add-IMX708-CMOS-sensor-binding.patch
@@ -138,7 +138,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19332,6 +19332,14 @@ T:	git git://linuxtv.org/media_tree.git
+@@ -19339,6 +19339,14 @@ T:	git git://linuxtv.org/media_tree.git
  F:	Documentation/devicetree/bindings/media/i2c/imx519.yaml
  F:	drivers/media/i2c/imx519.c
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0593-dt-bindings-media-i2c-Add-IMX296-CMOS-sensor-binding.patch b/target/linux/bcm27xx/patches-6.1/950-0593-dt-bindings-media-i2c-Add-IMX296-CMOS-sensor-binding.patch
index ece309fc06..003e0d4ccb 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0593-dt-bindings-media-i2c-Add-IMX296-CMOS-sensor-binding.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0593-dt-bindings-media-i2c-Add-IMX296-CMOS-sensor-binding.patch
@@ -128,7 +128,7 @@ Signed-off-by: Sakari Ailus <sakari.ailus at linux.intel.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19274,6 +19274,14 @@ T:	git git://linuxtv.org/media_tree.git
+@@ -19281,6 +19281,14 @@ T:	git git://linuxtv.org/media_tree.git
  F:	Documentation/devicetree/bindings/media/i2c/imx290.txt
  F:	drivers/media/i2c/imx290.c
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-0594-media-i2c-IMX296-camera-sensor-driver.patch b/target/linux/bcm27xx/patches-6.1/950-0594-media-i2c-IMX296-camera-sensor-driver.patch
index 9c084cc80f..853b2c757a 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0594-media-i2c-IMX296-camera-sensor-driver.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0594-media-i2c-IMX296-camera-sensor-driver.patch
@@ -23,7 +23,7 @@ Signed-off-by: Sakari Ailus <sakari.ailus at linux.intel.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19281,6 +19281,7 @@ L:	linux-media at vger.kernel.org
+@@ -19288,6 +19288,7 @@ L:	linux-media at vger.kernel.org
  S:	Maintained
  T:	git git://linuxtv.org/media_tree.git
  F:	Documentation/devicetree/bindings/media/i2c/sony,imx296.yaml
diff --git a/target/linux/bcm27xx/patches-6.1/950-0649-media-dt-bindings-Convert-imx290.txt-to-YAML.patch b/target/linux/bcm27xx/patches-6.1/950-0649-media-dt-bindings-Convert-imx290.txt-to-YAML.patch
index db0e89b166..b2417364c6 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0649-media-dt-bindings-Convert-imx290.txt-to-YAML.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0649-media-dt-bindings-Convert-imx290.txt-to-YAML.patch
@@ -219,7 +219,7 @@ Signed-off-by: Sakari Ailus <sakari.ailus at linux.intel.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19271,7 +19271,7 @@ M:	Manivannan Sadhasivam <manivannan.sad
+@@ -19278,7 +19278,7 @@ M:	Manivannan Sadhasivam <manivannan.sad
  L:	linux-media at vger.kernel.org
  S:	Maintained
  T:	git git://linuxtv.org/media_tree.git
diff --git a/target/linux/bcm27xx/patches-6.1/950-0676-dt-bindings-media-i2c-Replace-IMX708-sensor-binding-.patch b/target/linux/bcm27xx/patches-6.1/950-0676-dt-bindings-media-i2c-Replace-IMX708-sensor-binding-.patch
index 1e469f6c32..cb016b3ca6 100644
--- a/target/linux/bcm27xx/patches-6.1/950-0676-dt-bindings-media-i2c-Replace-IMX708-sensor-binding-.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-0676-dt-bindings-media-i2c-Replace-IMX708-sensor-binding-.patch
@@ -271,7 +271,7 @@ Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19346,7 +19346,7 @@ M:	Raspberry Pi Kernel Maintenance <kern
+@@ -19353,7 +19353,7 @@ M:	Raspberry Pi Kernel Maintenance <kern
  L:	linux-media at vger.kernel.org
  S:	Maintained
  T:	git git://linuxtv.org/media_tree.git
diff --git a/target/linux/bcm27xx/patches-6.1/950-1194-media-dt-bindings-i2c-Add-Rohm-BU64754-bindings.patch b/target/linux/bcm27xx/patches-6.1/950-1194-media-dt-bindings-i2c-Add-Rohm-BU64754-bindings.patch
index 5ea162577c..c11fbe2ec6 100644
--- a/target/linux/bcm27xx/patches-6.1/950-1194-media-dt-bindings-i2c-Add-Rohm-BU64754-bindings.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-1194-media-dt-bindings-i2c-Add-Rohm-BU64754-bindings.patch
@@ -67,7 +67,7 @@ Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -17897,6 +17897,13 @@ S:	Maintained
+@@ -17904,6 +17904,13 @@ S:	Maintained
  F:	Documentation/devicetree/bindings/iio/light/bh1750.yaml
  F:	drivers/iio/light/bh1750.c
  
diff --git a/target/linux/bcm27xx/patches-6.1/950-1195-media-i2c-Add-driver-for-OmniVision-OV64A40.patch b/target/linux/bcm27xx/patches-6.1/950-1195-media-i2c-Add-driver-for-OmniVision-OV64A40.patch
index 9888ad8ade..01940e18e3 100644
--- a/target/linux/bcm27xx/patches-6.1/950-1195-media-i2c-Add-driver-for-OmniVision-OV64A40.patch
+++ b/target/linux/bcm27xx/patches-6.1/950-1195-media-i2c-Add-driver-for-OmniVision-OV64A40.patch
@@ -16,7 +16,7 @@ Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -15323,6 +15323,14 @@ S:	Maintained
+@@ -15330,6 +15330,14 @@ S:	Maintained
  T:	git git://linuxtv.org/media_tree.git
  F:	drivers/media/i2c/ov5695.c
  
diff --git a/target/linux/generic/backport-6.1/714-net-pcs-add-driver-for-MediaTek-SGMII-PCS.patch b/target/linux/generic/backport-6.1/714-net-pcs-add-driver-for-MediaTek-SGMII-PCS.patch
index d56a142451..80c870159b 100644
--- a/target/linux/generic/backport-6.1/714-net-pcs-add-driver-for-MediaTek-SGMII-PCS.patch
+++ b/target/linux/generic/backport-6.1/714-net-pcs-add-driver-for-MediaTek-SGMII-PCS.patch
@@ -32,7 +32,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -12928,6 +12928,14 @@ L:	netdev at vger.kernel.org
+@@ -12935,6 +12935,14 @@ L:	netdev at vger.kernel.org
  S:	Maintained
  F:	drivers/net/ethernet/mediatek/
  
diff --git a/target/linux/generic/backport-6.1/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch b/target/linux/generic/backport-6.1/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
index 95dd24881b..8736120654 100644
--- a/target/linux/generic/backport-6.1/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
+++ b/target/linux/generic/backport-6.1/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
@@ -42,7 +42,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	__netif_tx_unlock_bh(netdev_get_tx_queue(priv->dev, queue));
  
-@@ -5488,12 +5492,13 @@ static int stmmac_napi_poll_tx(struct na
+@@ -5490,12 +5494,13 @@ static int stmmac_napi_poll_tx(struct na
  	struct stmmac_channel *ch =
  		container_of(napi, struct stmmac_channel, tx_napi);
  	struct stmmac_priv *priv = ch->priv_data;
@@ -57,7 +57,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	work_done = min(work_done, budget);
  
  	if (work_done < budget && napi_complete_done(napi, work_done)) {
-@@ -5504,6 +5509,10 @@ static int stmmac_napi_poll_tx(struct na
+@@ -5506,6 +5511,10 @@ static int stmmac_napi_poll_tx(struct na
  		spin_unlock_irqrestore(&ch->lock, flags);
  	}
  
@@ -68,7 +68,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	return work_done;
  }
  
-@@ -5512,12 +5521,13 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5514,12 +5523,13 @@ static int stmmac_napi_poll_rxtx(struct
  	struct stmmac_channel *ch =
  		container_of(napi, struct stmmac_channel, rxtx_napi);
  	struct stmmac_priv *priv = ch->priv_data;
@@ -83,7 +83,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	tx_done = min(tx_done, budget);
  
  	rx_done = stmmac_rx_zc(priv, budget, chan);
-@@ -5542,6 +5552,10 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5544,6 +5554,10 @@ static int stmmac_napi_poll_rxtx(struct
  		spin_unlock_irqrestore(&ch->lock, flags);
  	}
  
diff --git a/target/linux/generic/backport-6.1/790-v6.4-0010-net-dsa-mt7530-introduce-separate-MDIO-driver.patch b/target/linux/generic/backport-6.1/790-v6.4-0010-net-dsa-mt7530-introduce-separate-MDIO-driver.patch
index d203711884..f57a1bf06a 100644
--- a/target/linux/generic/backport-6.1/790-v6.4-0010-net-dsa-mt7530-introduce-separate-MDIO-driver.patch
+++ b/target/linux/generic/backport-6.1/790-v6.4-0010-net-dsa-mt7530-introduce-separate-MDIO-driver.patch
@@ -25,7 +25,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -13062,6 +13062,7 @@ M:	Landen Chao <Landen.Chao at mediatek.com
+@@ -13069,6 +13069,7 @@ M:	Landen Chao <Landen.Chao at mediatek.com
  M:	DENG Qingfang <dqfext at gmail.com>
  L:	netdev at vger.kernel.org
  S:	Maintained
diff --git a/target/linux/generic/backport-6.1/790-v6.4-0012-net-dsa-mt7530-introduce-driver-for-MT7988-built-in-.patch b/target/linux/generic/backport-6.1/790-v6.4-0012-net-dsa-mt7530-introduce-driver-for-MT7988-built-in-.patch
index 63bf0e77fa..05adccf517 100644
--- a/target/linux/generic/backport-6.1/790-v6.4-0012-net-dsa-mt7530-introduce-driver-for-MT7988-built-in-.patch
+++ b/target/linux/generic/backport-6.1/790-v6.4-0012-net-dsa-mt7530-introduce-driver-for-MT7988-built-in-.patch
@@ -28,7 +28,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -13060,9 +13060,11 @@ MEDIATEK SWITCH DRIVER
+@@ -13067,9 +13067,11 @@ MEDIATEK SWITCH DRIVER
  M:	Sean Wang <sean.wang at mediatek.com>
  M:	Landen Chao <Landen.Chao at mediatek.com>
  M:	DENG Qingfang <dqfext at gmail.com>
diff --git a/target/linux/generic/backport-6.1/791-v6.2-01-net-phy-Add-driver-for-Motorcomm-yt8521-gigabit-ethernet.patch b/target/linux/generic/backport-6.1/791-v6.2-01-net-phy-Add-driver-for-Motorcomm-yt8521-gigabit-ethernet.patch
index 4cdd67cdcc..3cf98acc85 100644
--- a/target/linux/generic/backport-6.1/791-v6.2-01-net-phy-Add-driver-for-Motorcomm-yt8521-gigabit-ethernet.patch
+++ b/target/linux/generic/backport-6.1/791-v6.2-01-net-phy-Add-driver-for-Motorcomm-yt8521-gigabit-ethernet.patch
@@ -21,7 +21,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -13964,6 +13964,7 @@ F:	include/uapi/linux/meye.h
+@@ -13971,6 +13971,7 @@ F:	include/uapi/linux/meye.h
  
  MOTORCOMM PHY DRIVER
  M:	Peter Geis <pgwipeout at gmail.com>
diff --git a/target/linux/generic/pending-6.1/510-block-add-uImage.FIT-subimage-block-driver.patch b/target/linux/generic/pending-6.1/510-block-add-uImage.FIT-subimage-block-driver.patch
index 54234caf94..f88136541f 100644
--- a/target/linux/generic/pending-6.1/510-block-add-uImage.FIT-subimage-block-driver.patch
+++ b/target/linux/generic/pending-6.1/510-block-add-uImage.FIT-subimage-block-driver.patch
@@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -21052,6 +21052,12 @@ F:	Documentation/filesystems/ubifs-authe
+@@ -21059,6 +21059,12 @@ F:	Documentation/filesystems/ubifs-authe
  F:	Documentation/filesystems/ubifs.rst
  F:	fs/ubifs/
  
diff --git a/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 757c0b2449..4c3ac8ee07 100644
--- a/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-6.1/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7911,7 +7911,7 @@ static int nft_register_flowtable_net_ho
+@@ -7918,7 +7918,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);
diff --git a/target/linux/generic/pending-6.1/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch b/target/linux/generic/pending-6.1/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
index 5bd2850fec..fd1bba3089 100644
--- a/target/linux/generic/pending-6.1/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
+++ b/target/linux/generic/pending-6.1/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
@@ -19,7 +19,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -12934,7 +12934,9 @@ M:	Daniel Golle <daniel at makrotopia.org>
+@@ -12941,7 +12941,9 @@ M:	Daniel Golle <daniel at makrotopia.org>
  L:	netdev at vger.kernel.org
  S:	Maintained
  F:	drivers/net/pcs/pcs-mtk-lynxi.c
diff --git a/target/linux/ipq40xx/patches-6.1/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch b/target/linux/ipq40xx/patches-6.1/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch
index 4b1a43259f..be12bfcd21 100644
--- a/target/linux/ipq40xx/patches-6.1/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch
+++ b/target/linux/ipq40xx/patches-6.1/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch
@@ -32,7 +32,7 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier at bootlin.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -17068,6 +17068,13 @@ L:	netdev at vger.kernel.org
+@@ -17075,6 +17075,13 @@ L:	netdev at vger.kernel.org
  S:	Maintained
  F:	drivers/net/ethernet/qualcomm/emac/
  
diff --git a/target/linux/ipq40xx/patches-6.1/701-net-dsa-add-out-of-band-tagging-protocol.patch b/target/linux/ipq40xx/patches-6.1/701-net-dsa-add-out-of-band-tagging-protocol.patch
index ab01e6704a..68d1a2e23b 100644
--- a/target/linux/ipq40xx/patches-6.1/701-net-dsa-add-out-of-band-tagging-protocol.patch
+++ b/target/linux/ipq40xx/patches-6.1/701-net-dsa-add-out-of-band-tagging-protocol.patch
@@ -64,7 +64,7 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier at bootlin.com>
  
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -17074,6 +17074,7 @@ L:	netdev at vger.kernel.org
+@@ -17081,6 +17081,7 @@ L:	netdev at vger.kernel.org
  S:	Maintained
  F:	Documentation/devicetree/bindings/net/qcom,ipq4019-ess-edma.yaml
  F:	drivers/net/ethernet/qualcomm/ipqess/
diff --git a/target/linux/mediatek/patches-6.1/730-v6.5-net-phy-add-driver-for-MediaTek-SoC-built-in-GE-PHYs.patch b/target/linux/mediatek/patches-6.1/730-v6.5-net-phy-add-driver-for-MediaTek-SoC-built-in-GE-PHYs.patch
index 0bbf9ac773..4022b2a842 100644
--- a/target/linux/mediatek/patches-6.1/730-v6.5-net-phy-add-driver-for-MediaTek-SoC-built-in-GE-PHYs.patch
+++ b/target/linux/mediatek/patches-6.1/730-v6.5-net-phy-add-driver-for-MediaTek-SoC-built-in-GE-PHYs.patch
@@ -24,7 +24,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -12938,6 +12938,15 @@ F:	drivers/net/pcs/pcs-mtk-usxgmii.c
+@@ -12945,6 +12945,15 @@ F:	drivers/net/pcs/pcs-mtk-usxgmii.c
  F:	include/linux/pcs/pcs-mtk-lynxi.h
  F:	include/linux/pcs/pcs-mtk-usxgmii.h
  
diff --git a/target/linux/ramips/patches-6.1/005-v6.5-09-MAINTAINERS-add-Mediatek-MTMIPS-Clock-maintainer.patch b/target/linux/ramips/patches-6.1/005-v6.5-09-MAINTAINERS-add-Mediatek-MTMIPS-Clock-maintainer.patch
index 361dc81df7..f7ab99bc76 100644
--- a/target/linux/ramips/patches-6.1/005-v6.5-09-MAINTAINERS-add-Mediatek-MTMIPS-Clock-maintainer.patch
+++ b/target/linux/ramips/patches-6.1/005-v6.5-09-MAINTAINERS-add-Mediatek-MTMIPS-Clock-maintainer.patch
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -13014,6 +13014,12 @@ S:	Maintained
+@@ -13021,6 +13021,12 @@ S:	Maintained
  F:	Documentation/devicetree/bindings/clock/mediatek,mt7621-sysc.yaml
  F:	drivers/clk/ralink/clk-mt7621.c
  
diff --git a/target/linux/ramips/patches-6.1/200-add-ralink-eth.patch b/target/linux/ramips/patches-6.1/200-add-ralink-eth.patch
index cd18fe7dd4..c52c12526b 100644
--- a/target/linux/ramips/patches-6.1/200-add-ralink-eth.patch
+++ b/target/linux/ramips/patches-6.1/200-add-ralink-eth.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/ethernet/Kconfig
 +++ b/drivers/net/ethernet/Kconfig
-@@ -167,6 +167,7 @@ source "drivers/net/ethernet/pensando/Kc
+@@ -166,6 +166,7 @@ source "drivers/net/ethernet/pensando/Kc
  source "drivers/net/ethernet/qlogic/Kconfig"
  source "drivers/net/ethernet/brocade/Kconfig"
  source "drivers/net/ethernet/qualcomm/Kconfig"



From lede-commits at lists.infradead.org  Mon Mar 11 14:16:46 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:16:46 -0400
Subject: [openwrt/openwrt]  ramips: Add support for Cudy WR1300 v3
In-Reply-To: <171019180671.3054621.8026546335713026844@git-01.infra.openwrt.org>
References: <171019180671.3054621.8026546335713026844@git-01.infra.openwrt.org>
Message-ID: <mailman.15375.1710191811.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/1bbb94df9687e7376ca5f50c69f24aa15c704f85

commit 1bbb94df9687e7376ca5f50c69f24aa15c704f85
Author: Filip Milivojevic <zekica at gmail.com>
AuthorDate: Thu Jan 18 19:47:47 2024 +0100

    ramips: Add support for Cudy WR1300 v3
    
    Specifications:
     - SoC: MediaTek MT7621AT
     - RAM: 128 MB (DDR3)
     - Flash: 16 MB (SPI NOR)
     - WiFi: MediaTek MT7603E, MediaTek MT7613BE
     - Switch: 1 WAN, 4 LAN (Gigabit)
     - Buttons: Reset, WPS
     - LEDs: System, Wan, Lan 1-4, WiFi 2.4G, WiFi 5G, WPS
     - Power: DC 12V 1A tip positive
    
    Download and flash the manufacturer's built OpenWRT image available at
    http://www.cudytech.com/openwrt_software_download
    Install the new OpenWRT image via luci (System -> Backup/Flash firmware)
    Be sure to NOT keep settings. The force upgrade may need to be checked
    due to differences in router naming conventions.
    
    Cudy WR1300 v3 differs from v2 only in swapped WiFi chip PCIe slots. Common
    nodes are extracted to .dtsi and new v2 and v3 dts are created.
    
    Cudy WR1300 v2 dts now contains ieee80211-freq-limit.
    
    The same manufacturer's built OpenWRT image is provided for both v2 and v3
    devices as a step in installing, but for proper WiFi functionality,
    a separate build is required.
    
    Recovery:
     - Loads only signed manufacture firmware due to bootloader RSA verification
     - serve tftp-recovery image as /recovery.bin on 192.168.1.88/24
     - connect to any lan ethernet port
     - power on the device while holding the reset button
     - wait at least 8 seconds before releasing reset button for image to
       download
     - See http://www.cudytech.com/newsinfo/547425.html
    
    Backported from branch main to 23.05.
    
    Signed-off-by: Filip Milivojevic <zekica at gmail.com>
    (cherry picked from commit 288738c59de0eeca1a0d2042882445ad54d95fe7)
---
 target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts  | 173 +--------------------
 ..._wr1300-v2.dts => mt7621_cudy_wr1300-v2v3.dtsi} |  24 ---
 target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts  |  36 +++++
 target/linux/ramips/image/mt7621.mk                |  12 ++
 4 files changed, 51 insertions(+), 194 deletions(-)

diff --git a/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts b/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts
index a5d2fc4607..feeff0e7b0 100644
--- a/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts
+++ b/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts
@@ -1,117 +1,10 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "mt7621.dtsi"
-
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/gpio/gpio.h>
+#include "mt7621_cudy_wr1300-v2v3.dtsi"
 
 / {
 	compatible = "cudy,wr1300-v2", "mediatek,mt7621-soc";
 	model = "Cudy WR1300 v2";
-
-	aliases {
-		led-boot = &led_sys;
-		led-failsafe = &led_sys;
-		led-running = &led_sys;
-		led-upgrade = &led_sys;
-		label-mac-device = &gmac0;
-	};
-
-	chosen {
-		bootargs = "console=ttyS0,115200";
-	};
-
-	keys {
-		compatible = "gpio-keys";
-
-		reset {
-			label = "reset";
-			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_RESTART>;
-		};
-
-		wps {
-			label = "wps";
-			gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_WPS_BUTTON>;
-		};
-	};
-
-	leds {
-		compatible = "gpio-leds";
-
-		led_sys: sys {
-			label = "green:sys";
-			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
-		};
-
-		wps {
-			label = "green:wps";
-			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
-		};
-	};
-};
-
-&spi0 {
-	status = "okay";
-
-	flash at 0 {
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-max-frequency = <40000000>;
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition at 0 {
-				label = "u-boot";
-				reg = <0x0 0x30000>;
-				read-only;
-			};
-
-			partition at 30000 {
-				label = "u-boot-env";
-				reg = <0x30000 0x10000>;
-				read-only;
-			};
-
-			factory: partition at 40000 {
-				label = "factory";
-				reg = <0x40000 0x10000>;
-				read-only;
-			};
-
-			partition at 50000 {
-				compatible = "denx,uimage";
-				label = "firmware";
-				reg = <0x50000 0xf80000>;
-			};
-
-			partition at fd0000 {
-				label = "debug";
-				reg = <0xfd0000 0x10000>;
-				read-only;
-			};
-
-			partition at fe0000 {
-				label = "backup";
-				reg = <0xfe0000 0x10000>;
-				read-only;
-			};
-
-			bdinfo: partition at ff0000 {
-				label = "bdinfo";
-				reg = <0xff0000 0x10000>;
-				read-only;
-			};
-		};
-	};
-};
-
-&pcie {
-	status = "okay";
 };
 
 &pcie1 {
@@ -121,6 +14,7 @@
 		mediatek,mtd-eeprom = <&factory 0x0000>;
 		nvmem-cells = <&macaddr_bdinfo_de00>;
 		nvmem-cell-names = "mac-address";
+		ieee80211-freq-limit = <2400000 2500000>;
 	};
 };
 
@@ -132,67 +26,6 @@
 		nvmem-cells = <&macaddr_bdinfo_de00>;
 		nvmem-cell-names = "mac-address";
 		mac-address-increment = <2>;
-	};
-};
-
-&gmac0 {
-	nvmem-cells = <&macaddr_bdinfo_de00>;
-	nvmem-cell-names = "mac-address";
-};
-
-&gmac1 {
-	status = "okay";
-	label = "wan";
-	phy-handle = <&ethphy4>;
-
-	nvmem-cells = <&macaddr_bdinfo_de00>;
-	nvmem-cell-names = "mac-address";
-	mac-address-increment = <1>;
-};
-
-&mdio {
-	ethphy4: ethernet-phy at 4 {
-		reg = <4>;
-	};
-};
-
-&switch0 {
-	ports {
-		port at 0 {
-			status = "okay";
-			label = "lan4";
-		};
-
-		port at 1 {
-			status = "okay";
-			label = "lan3";
-		};
-
-		port at 2 {
-			status = "okay";
-			label = "lan2";
-		};
-
-		port at 3 {
-			status = "okay";
-			label = "lan1";
-		};
-	};
-};
-
-&state_default {
-	gpio {
-		groups = "wdt", "i2c", "jtag";
-		function = "gpio";
-	};
-};
-
-&bdinfo {
-	compatible = "nvmem-cells";
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	macaddr_bdinfo_de00: macaddr at de00 {
-		reg = <0xde00 0x6>;
+		ieee80211-freq-limit = <5000000 6000000>;
 	};
 };
diff --git a/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts b/target/linux/ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi
similarity index 83%
copy from target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts
copy to target/linux/ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi
index a5d2fc4607..9d68ad7f82 100644
--- a/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts
+++ b/target/linux/ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi
@@ -6,9 +6,6 @@
 #include <dt-bindings/gpio/gpio.h>
 
 / {
-	compatible = "cudy,wr1300-v2", "mediatek,mt7621-soc";
-	model = "Cudy WR1300 v2";
-
 	aliases {
 		led-boot = &led_sys;
 		led-failsafe = &led_sys;
@@ -114,27 +111,6 @@
 	status = "okay";
 };
 
-&pcie1 {
-	wifi at 0,0 {
-		compatible = "mediatek,mt76";
-		reg = <0x0000 0 0 0 0>;
-		mediatek,mtd-eeprom = <&factory 0x0000>;
-		nvmem-cells = <&macaddr_bdinfo_de00>;
-		nvmem-cell-names = "mac-address";
-	};
-};
-
-&pcie0 {
-	wifi at 0,0 {
-		compatible = "mediatek,mt76";
-		reg = <0x0000 0 0 0 0>;
-		mediatek,mtd-eeprom = <&factory 0x8000>;
-		nvmem-cells = <&macaddr_bdinfo_de00>;
-		nvmem-cell-names = "mac-address";
-		mac-address-increment = <2>;
-	};
-};
-
 &gmac0 {
 	nvmem-cells = <&macaddr_bdinfo_de00>;
 	nvmem-cell-names = "mac-address";
diff --git a/target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts b/target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts
new file mode 100644
index 0000000000..062f901c31
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621_cudy_wr1300-v2v3.dtsi"
+
+/ {
+	compatible = "cudy,wr1300-v3", "mediatek,mt7621-soc";
+	model = "Cudy WR1300 v3";
+};
+
+&pcie0 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x0000>;
+		nvmem-cells = <&macaddr_bdinfo_de00>;
+		nvmem-cell-names = "mac-address";
+		ieee80211-freq-limit = <2400000 2500000>;
+
+		led {
+			led-sources = <0>;
+			led-active-low;
+		};
+	};
+};
+
+&pcie1 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x8000>;
+		nvmem-cells = <&macaddr_bdinfo_de00>;
+		nvmem-cell-names = "mac-address";
+		mac-address-increment = <2>;
+		ieee80211-freq-limit = <5000000 6000000>;
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index d25f91a0ed..945fe3668f 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -584,6 +584,18 @@ define Device/cudy_wr1300-v2
 endef
 TARGET_DEVICES += cudy_wr1300-v2
 
+define Device/cudy_wr1300-v3
+  $(Device/dsa-migration)
+  IMAGE_SIZE := 15872k
+  DEVICE_VENDOR := Cudy
+  DEVICE_MODEL := WR1300
+  DEVICE_VARIANT := v3
+  DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap \
+	-uboot-envtools
+  SUPPORTED_DEVICES += cudy,wr1300 R30
+endef
+TARGET_DEVICES += cudy_wr1300-v3
+
 define Device/cudy_wr2100
   $(Device/dsa-migration)
   DEVICE_VENDOR := Cudy



From lede-commits at lists.infradead.org  Mon Mar 11 14:24:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:24:03 -0400
Subject: [openwrt/openwrt]  mediatek: leds-smartrg-system: fix build on Linux
 6.6
In-Reply-To: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
References: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
Message-ID: <mailman.15379.1710192243.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/dcac4a28e61bee2dc2df02a87d7a70813db1995b

commit dcac4a28e61bee2dc2df02a87d7a70813db1995b
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 2 04:23:22 2024 +0000

    mediatek: leds-smartrg-system: fix build on Linux 6.6
    
    Adapt to changed function pointer prototypes.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 target/linux/mediatek/files/drivers/leds/leds-smartrg-system.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/target/linux/mediatek/files/drivers/leds/leds-smartrg-system.c b/target/linux/mediatek/files/drivers/leds/leds-smartrg-system.c
index 1679555068..7736905704 100644
--- a/target/linux/mediatek/files/drivers/leds/leds-smartrg-system.c
+++ b/target/linux/mediatek/files/drivers/leds/leds-smartrg-system.c
@@ -159,7 +159,12 @@ srg_led_init_led(struct srg_led_ctrl *sysled_ctrl, struct device_node *np)
 }
 
 static int
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,6,0)
 srg_led_probe(struct i2c_client *client, const struct i2c_device_id *id)
+#else
+srg_led_probe(struct i2c_client *client)
+#endif
 {
 	struct device_node *np = client->dev.of_node, *child;
 	struct srg_led_ctrl *sysled_ctrl;



From lede-commits at lists.infradead.org  Mon Mar 11 14:24:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:24:04 -0400
Subject: [openwrt/openwrt]  mediatek: fix build of MT7988 clk drivers on Linux
 6.6
In-Reply-To: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
References: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
Message-ID: <mailman.15380.1710192244.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/3043bd2621a190add88fd51e5b0d7f50e0157a90

commit 3043bd2621a190add88fd51e5b0d7f50e0157a90
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 2 04:24:15 2024 +0000

    mediatek: fix build of MT7988 clk drivers on Linux 6.6
    
    As shared remove functions now returns void instead of int we need to
    use .remove_new instead of .remove.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch        | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/linux/mediatek/patches-6.6/249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch b/target/linux/mediatek/patches-6.6/249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch
index dab08a5a39..6ec9bd2101 100644
--- a/target/linux/mediatek/patches-6.6/249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch
+++ b/target/linux/mediatek/patches-6.6/249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch
@@ -327,7 +327,7 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 +		.of_match_table = of_match_clk_mt7988_eth,
 +	},
 +	.probe = mtk_clk_simple_probe,
-+	.remove = mtk_clk_simple_remove,
++	.remove_new = mtk_clk_simple_remove,
 +};
 +module_platform_driver(clk_mt7988_eth_drv);
 +
@@ -607,7 +607,7 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 +		.of_match_table = of_match_clk_mt7988_infracfg,
 +	},
 +	.probe = mtk_clk_simple_probe,
-+	.remove = mtk_clk_simple_remove,
++	.remove_new = mtk_clk_simple_remove,
 +};
 +module_platform_driver(clk_mt7988_infracfg_drv);
 +MODULE_LICENSE("GPL");
@@ -931,7 +931,7 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 +
 +static struct platform_driver clk_mt7988_topckgen_drv = {
 +	.probe = mtk_clk_simple_probe,
-+	.remove = mtk_clk_simple_remove,
++	.remove_new = mtk_clk_simple_remove,
 +	.driver = {
 +		.name = "clk-mt7988-topckgen",
 +		.of_match_table = of_match_clk_mt7988_topckgen,
@@ -1018,7 +1018,7 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 +		.of_match_table = of_match_clk_mt7988_xfipll,
 +	},
 +	.probe = clk_mt7988_xfipll_probe,
-+	.remove = mtk_clk_simple_remove,
++	.remove_new = mtk_clk_simple_remove,
 +};
 +module_platform_driver(clk_mt7988_xfipll_drv);
 +



From lede-commits at lists.infradead.org  Mon Mar 11 14:23:57 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:23:57 -0400
Subject: [openwrt/openwrt]  generic: 6.6: fix copy & refresh
In-Reply-To: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
References: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
Message-ID: <mailman.15381.1710192245.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/c0e1e7542cfd19c7bc62c6b0a9406352f9fc46f8

commit c0e1e7542cfd19c7bc62c6b0a9406352f9fc46f8
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Mon Mar 11 19:10:49 2024 +0000

    generic: 6.6: fix copy & refresh
    
    A new patch was added meanwhile which will go as fix via netdev tree.
    Copy & refresh it for Linux 6.6 as well.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...k-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch | 50 ++++++++++++++++++++++
 ...t-mtk_eth_soc-add-paths-and-SerDes-modes-.patch | 41 +++++++++---------
 2 files changed, 71 insertions(+), 20 deletions(-)

diff --git a/target/linux/generic/pending-6.6/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch b/target/linux/generic/pending-6.6/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
new file mode 100644
index 0000000000..dedd084545
--- /dev/null
+++ b/target/linux/generic/pending-6.6/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
@@ -0,0 +1,50 @@
+From ef5976ae4e117fae9a61bb3c0f8319a917a425ea Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Mon, 11 Mar 2024 17:43:28 +0000
+Subject: [PATCH] net: mediatek: mtk_eth_soc: release MAC_MCR_FORCE_LINK only when MAC is up
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Clearing bit MAC_MCR_FORCE_LINK which forces the link down too early
+can result in MAC ending up in a broken/blocked state.
+
+Fix this by handling this bit in the .mac_link_up and .mac_link_down
+calls instead of in .mac_finish.
+
+Fixes: b8fc9f30821ec ("net: ethernet: mediatek: Add basic PHYLINK support")
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+@@ -678,8 +678,7 @@ static int mtk_mac_finish(struct phylink
+ 	mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ 	mcr_new = mcr_cur;
+ 	mcr_new |= MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
+-		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_FORCE_LINK |
+-		   MAC_MCR_RX_FIFO_CLR_DIS;
++		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_RX_FIFO_CLR_DIS;
+ 
+ 	/* Only update control register when needed! */
+ 	if (mcr_new != mcr_cur)
+@@ -695,7 +694,7 @@ static void mtk_mac_link_down(struct phy
+ 					   phylink_config);
+ 	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ 
+-	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
++	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
+ 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ }
+ 
+@@ -804,7 +803,7 @@ static void mtk_mac_link_up(struct phyli
+ 	if (rx_pause)
+ 		mcr |= MAC_MCR_FORCE_RX_FC;
+ 
+-	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN;
++	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK;
+ 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ }
+ 
diff --git a/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch b/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
index c9cd726aca..aedeedece9 100644
--- a/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
+++ b/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
@@ -1,4 +1,4 @@
-From 91bda2f441f9e37273922028ffc48ce8e91bf5bd Mon Sep 17 00:00:00 2001
+From d5e337e7aecc2e1cc9e96768062610adb95f8f72 Mon Sep 17 00:00:00 2001
 From: Daniel Golle <daniel at makrotopia.org>
 Date: Tue, 12 Dec 2023 03:51:14 +0000
 Subject: [PATCH] net: ethernet: mtk_eth_soc: add paths and SerDes modes for
@@ -19,9 +19,9 @@ modes.
 Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 ---
  drivers/net/ethernet/mediatek/mtk_eth_path.c | 122 +++++++-
- drivers/net/ethernet/mediatek/mtk_eth_soc.c  | 291 +++++++++++++++++--
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c  | 292 +++++++++++++++++--
  drivers/net/ethernet/mediatek/mtk_eth_soc.h  | 107 ++++++-
- 3 files changed, 469 insertions(+), 51 deletions(-)
+ 3 files changed, 470 insertions(+), 51 deletions(-)
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_path.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_path.c
@@ -390,24 +390,25 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	/* Enable SGMII */
  	if (interface == PHY_INTERFACE_MODE_SGMII ||
  	    phy_interface_mode_is_8023z(interface))
-@@ -693,10 +778,13 @@ static void mtk_mac_link_down(struct phy
+@@ -692,10 +777,14 @@ static void mtk_mac_link_down(struct phy
  {
  	struct mtk_mac *mac = container_of(config, struct mtk_mac,
  					   phylink_config);
 -	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
  
--	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
+-	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
 -	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
 +	if (!mtk_interface_mode_is_xgmii(interface)) {
-+		mtk_m32(mac->hw, MAC_MCR_TX_EN | MAC_MCR_RX_EN, 0, MTK_MAC_MCR(mac->id));
-+		mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, MTK_XGMAC_STS(mac->id));
-+	} else if (mac->id != MTK_GMAC1_ID) {
++		mtk_m32(mac->hw, MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK, 0, MTK_MAC_MCR(mac->id));
++		if (mtk_is_netsys_v3_or_greater(mac->hw))
++			mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, MTK_XGMAC_STS(mac->id));
++	} else if (mtk_is_netsys_v3_or_greater(mac->hw) && mac->id != MTK_GMAC1_ID) {
 +		mtk_m32(mac->hw, XMAC_MCR_TRX_DISABLE, XMAC_MCR_TRX_DISABLE, MTK_XMAC_MCR(mac->id));
 +	}
  }
  
  static void mtk_set_queue_speed(struct mtk_eth *eth, unsigned int idx,
-@@ -768,13 +856,11 @@ static void mtk_set_queue_speed(struct m
+@@ -767,13 +856,11 @@ static void mtk_set_queue_speed(struct m
  	mtk_w32(eth, val, soc->reg_map->qdma.qtx_sch + ofs);
  }
  
@@ -425,7 +426,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	u32 mcr;
  
  	mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
-@@ -808,9 +894,63 @@ static void mtk_mac_link_up(struct phyli
+@@ -807,9 +894,63 @@ static void mtk_mac_link_up(struct phyli
  	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
  }
  
@@ -470,7 +471,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +	struct mtk_mac *mac = container_of(config, struct mtk_mac,
 +					   phylink_config);
 +
-+	if (mtk_interface_mode_is_xgmii(interface))
++	if (mtk_is_netsys_v3_or_greater(mac->hw) && mtk_interface_mode_is_xgmii(interface))
 +		mtk_xgdm_mac_link_up(mac, phy, mode, interface, speed, duplex,
 +				     tx_pause, rx_pause);
 +	else
@@ -489,7 +490,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	.mac_finish = mtk_mac_finish,
  	.mac_link_down = mtk_mac_link_down,
  	.mac_link_up = mtk_mac_link_up,
-@@ -3391,6 +3531,9 @@ static int mtk_open(struct net_device *d
+@@ -3390,6 +3531,9 @@ static int mtk_open(struct net_device *d
  	struct mtk_eth *eth = mac->hw;
  	int i, err;
  
@@ -499,7 +500,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0);
  	if (err) {
  		netdev_err(dev, "%s: could not attach PHY: %d\n", __func__,
-@@ -3520,6 +3663,9 @@ static int mtk_stop(struct net_device *d
+@@ -3519,6 +3663,9 @@ static int mtk_stop(struct net_device *d
  	for (i = 0; i < ARRAY_SIZE(eth->ppe); i++)
  		mtk_ppe_stop(eth->ppe[i]);
  
@@ -509,7 +510,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return 0;
  }
  
-@@ -4517,6 +4663,7 @@ static const struct net_device_ops mtk_n
+@@ -4516,6 +4663,7 @@ static const struct net_device_ops mtk_n
  static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
  {
  	const __be32 *_id = of_get_property(np, "reg", NULL);
@@ -517,7 +518,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	phy_interface_t phy_mode;
  	struct phylink *phylink;
  	struct mtk_mac *mac;
-@@ -4553,16 +4700,41 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4552,16 +4700,41 @@ static int mtk_add_mac(struct mtk_eth *e
  	mac->id = id;
  	mac->hw = eth;
  	mac->of_node = np;
@@ -567,7 +568,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	}
  
  	memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip));
-@@ -4645,8 +4817,21 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4644,8 +4817,21 @@ static int mtk_add_mac(struct mtk_eth *e
  		phy_interface_zero(mac->phylink_config.supported_interfaces);
  		__set_bit(PHY_INTERFACE_MODE_INTERNAL,
  			  mac->phylink_config.supported_interfaces);
@@ -589,7 +590,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	phylink = phylink_create(&mac->phylink_config,
  				 of_fwnode_handle(mac->of_node),
  				 phy_mode, &mtk_phylink_ops);
-@@ -4697,6 +4882,26 @@ free_netdev:
+@@ -4696,6 +4882,26 @@ free_netdev:
  	return err;
  }
  
@@ -616,7 +617,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev)
  {
  	struct net_device *dev, *tmp;
-@@ -4843,7 +5048,8 @@ static int mtk_probe(struct platform_dev
+@@ -4842,7 +5048,8 @@ static int mtk_probe(struct platform_dev
  			regmap_write(cci, 0, 3);
  	}
  
@@ -626,7 +627,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		err = mtk_sgmii_init(eth);
  
  		if (err)
-@@ -4954,6 +5160,24 @@ static int mtk_probe(struct platform_dev
+@@ -4953,6 +5160,24 @@ static int mtk_probe(struct platform_dev
  		}
  	}
  
@@ -651,7 +652,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) {
  		err = devm_request_irq(eth->dev, eth->irq[0],
  				       mtk_handle_irq, 0,
-@@ -5056,6 +5280,11 @@ static int mtk_remove(struct platform_de
+@@ -5055,6 +5280,11 @@ static int mtk_remove(struct platform_de
  		mtk_stop(eth->netdev[i]);
  		mac = netdev_priv(eth->netdev[i]);
  		phylink_disconnect_phy(mac->phylink);



From lede-commits at lists.infradead.org  Mon Mar 11 14:24:06 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:24:06 -0400
Subject: [openwrt/openwrt]  mediatek: add Linux 6.6 as testing kernel
In-Reply-To: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
References: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
Message-ID: <mailman.15384.1710192245.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/448b48c24566f6d7961bccaae1074da887b1b8b9

commit 448b48c24566f6d7961bccaae1074da887b1b8b9
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 2 04:25:43 2024 +0000

    mediatek: add Linux 6.6 as testing kernel
    
    Add KERNEL_TESTING_PATCHVER for Linux 6.6.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 target/linux/mediatek/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/mediatek/Makefile b/target/linux/mediatek/Makefile
index 279c167b83..288fb537a7 100644
--- a/target/linux/mediatek/Makefile
+++ b/target/linux/mediatek/Makefile
@@ -9,6 +9,7 @@ SUBTARGETS:=mt7622 mt7623 mt7629 filogic
 FEATURES:=dt-overlay emmc fpu gpio nand pci pcie rootfs-part separate_ramdisk squashfs usb
 
 KERNEL_PATCHVER:=6.1
+KERNEL_TESTING_PATCHVER:=6.6
 
 include $(INCLUDE_DIR)/target.mk
 DEFAULT_PACKAGES += \



From lede-commits at lists.infradead.org  Mon Mar 11 14:24:01 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:24:01 -0400
Subject: [openwrt/openwrt]  mediatek: 6.6: drop patches backported as fixes
In-Reply-To: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
References: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
Message-ID: <mailman.15385.1710192245.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f4223abd8faa683991a5077f5d01a7e1483629e1

commit f4223abd8faa683991a5077f5d01a7e1483629e1
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 1 01:59:21 2024 +0000

    mediatek: 6.6: drop patches backported as fixes
    
    Drop patches backported as fixes in later kernel version.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...t7986-define-3W-max-power-to-both-SFP-on-.patch |  34 ---
 ...6.7-arm64-dts-mt7986-change-cooling-trips.patch |  59 -----
 ...dts-mt7986-change-thermal-trips-on-BPI-R3.patch |  38 ---
 ...iatek-ge-soc-sync-driver-with-MediaTek-SD.patch | 270 ---------------------
 ...drivers-mediatek-Fix-probe-for-THERMAL_V2.patch |  33 ---
 5 files changed, 434 deletions(-)

diff --git a/target/linux/mediatek/patches-6.6/020-v6.7-arm64-dts-mt7986-define-3W-max-power-to-both-SFP-on-.patch b/target/linux/mediatek/patches-6.6/020-v6.7-arm64-dts-mt7986-define-3W-max-power-to-both-SFP-on-.patch
deleted file mode 100644
index 8cba3b2059..0000000000
--- a/target/linux/mediatek/patches-6.6/020-v6.7-arm64-dts-mt7986-define-3W-max-power-to-both-SFP-on-.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From f8ed4088ed9c61ae92193da6130d04c37e7b19f2 Mon Sep 17 00:00:00 2001
-From: Frank Wunderlich <frank-w at public-files.de>
-Date: Sun, 20 Aug 2023 17:31:33 +0200
-Subject: [PATCH 20/22] arm64: dts: mt7986: define 3W max power to both SFP on
- BPI-R3
-
-All SFP power supplies are connected to the system VDD33 which is 3v3/8A.
-Set 3A per SFP slot to allow SFPs work which need more power than the
-default 1W.
-
-Fixes: 8e01fb15b815 ("arm64: dts: mt7986: add Bananapi R3")
-Signed-off-by: Frank Wunderlich <frank-w at public-files.de>
----
- arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts
-+++ b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts
-@@ -126,6 +126,7 @@
- 		compatible = "sff,sfp";
- 		i2c-bus = <&i2c_sfp1>;
- 		los-gpios = <&pio 46 GPIO_ACTIVE_HIGH>;
-+		maximum-power-milliwatt = <3000>;
- 		mod-def0-gpios = <&pio 49 GPIO_ACTIVE_LOW>;
- 		tx-disable-gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
- 		tx-fault-gpios = <&pio 7 GPIO_ACTIVE_HIGH>;
-@@ -137,6 +138,7 @@
- 		i2c-bus = <&i2c_sfp2>;
- 		los-gpios = <&pio 31 GPIO_ACTIVE_HIGH>;
- 		mod-def0-gpios = <&pio 47 GPIO_ACTIVE_LOW>;
-+		maximum-power-milliwatt = <3000>;
- 		tx-disable-gpios = <&pio 15 GPIO_ACTIVE_HIGH>;
- 		tx-fault-gpios = <&pio 48 GPIO_ACTIVE_HIGH>;
- 	};
diff --git a/target/linux/mediatek/patches-6.6/021-v6.7-arm64-dts-mt7986-change-cooling-trips.patch b/target/linux/mediatek/patches-6.6/021-v6.7-arm64-dts-mt7986-change-cooling-trips.patch
deleted file mode 100644
index 20d4468cf0..0000000000
--- a/target/linux/mediatek/patches-6.6/021-v6.7-arm64-dts-mt7986-change-cooling-trips.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From aa3d6df9803c267725dc72286bb91602b7579882 Mon Sep 17 00:00:00 2001
-From: Frank Wunderlich <frank-w at public-files.de>
-Date: Sun, 20 Aug 2023 17:31:34 +0200
-Subject: [PATCH 21/22] arm64: dts: mt7986: change cooling trips
-
-Add Critical and hot trips for emergency system shutdown and limiting
-system load.
-
-Change passive trip to active to make sure fan is activated on the
-lowest trip.
-
-Fixes: 1f5be05132f3 ("arm64: dts: mt7986: add thermal-zones")
-Suggested-by: Daniel Golle <daniel at makrotopia.org>
-Signed-off-by: Frank Wunderlich <frank-w at public-files.de>
----
- arch/arm64/boot/dts/mediatek/mt7986a.dtsi | 20 ++++++++++++++++----
- 1 file changed, 16 insertions(+), 4 deletions(-)
-
---- a/arch/arm64/boot/dts/mediatek/mt7986a.dtsi
-+++ b/arch/arm64/boot/dts/mediatek/mt7986a.dtsi
-@@ -610,22 +610,34 @@
- 			thermal-sensors = <&thermal 0>;
- 
- 			trips {
-+				cpu_trip_crit: crit {
-+					temperature = <125000>;
-+					hysteresis = <2000>;
-+					type = "critical";
-+				};
-+
-+				cpu_trip_hot: hot {
-+					temperature = <120000>;
-+					hysteresis = <2000>;
-+					type = "hot";
-+				};
-+
- 				cpu_trip_active_high: active-high {
- 					temperature = <115000>;
- 					hysteresis = <2000>;
- 					type = "active";
- 				};
- 
--				cpu_trip_active_low: active-low {
-+				cpu_trip_active_med: active-med {
- 					temperature = <85000>;
- 					hysteresis = <2000>;
- 					type = "active";
- 				};
- 
--				cpu_trip_passive: passive {
--					temperature = <40000>;
-+				cpu_trip_active_low: active-low {
-+					temperature = <60000>;
- 					hysteresis = <2000>;
--					type = "passive";
-+					type = "active";
- 				};
- 			};
- 		};
diff --git a/target/linux/mediatek/patches-6.6/022-v6.7-arm64-dts-mt7986-change-thermal-trips-on-BPI-R3.patch b/target/linux/mediatek/patches-6.6/022-v6.7-arm64-dts-mt7986-change-thermal-trips-on-BPI-R3.patch
deleted file mode 100644
index 7166ab6a14..0000000000
--- a/target/linux/mediatek/patches-6.6/022-v6.7-arm64-dts-mt7986-change-thermal-trips-on-BPI-R3.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 6ddf23526955b8dbedfeaa57e691261fd73f9d4e Mon Sep 17 00:00:00 2001
-From: Frank Wunderlich <frank-w at public-files.de>
-Date: Sun, 20 Aug 2023 17:31:35 +0200
-Subject: [PATCH 22/22] arm64: dts: mt7986: change thermal trips on BPI-R3
-
-Apply new naming after mt7986 thermal trips were changed.
-
-Fixes: c26f779a2295 ("arm64: dts: mt7986: add pwm-fan and cooling-maps to BPI-R3 dts")
-Suggested-by: Daniel Golle <daniel at makrotopia.org>
-Signed-off-by: Frank Wunderlich <frank-w at public-files.de>
----
- .../boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts      | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
---- a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts
-+++ b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts
-@@ -152,16 +152,16 @@
- 			trip = <&cpu_trip_active_high>;
- 		};
- 
--		cpu-active-low {
-+		cpu-active-med {
- 			/* active: set fan to cooling level 1 */
- 			cooling-device = <&fan 1 1>;
--			trip = <&cpu_trip_active_low>;
-+			trip = <&cpu_trip_active_med>;
- 		};
- 
--		cpu-passive {
--			/* passive: set fan to cooling level 0 */
-+		cpu-active-low {
-+			/* active: set fan to cooling level 0 */
- 			cooling-device = <&fan 0 0>;
--			trip = <&cpu_trip_passive>;
-+			trip = <&cpu_trip_active_low>;
- 		};
- 	};
- };
diff --git a/target/linux/mediatek/patches-6.6/734-v6.8-net-phy-mediatek-ge-soc-sync-driver-with-MediaTek-SD.patch b/target/linux/mediatek/patches-6.6/734-v6.8-net-phy-mediatek-ge-soc-sync-driver-with-MediaTek-SD.patch
deleted file mode 100644
index 5daa62b6b7..0000000000
--- a/target/linux/mediatek/patches-6.6/734-v6.8-net-phy-mediatek-ge-soc-sync-driver-with-MediaTek-SD.patch
+++ /dev/null
@@ -1,270 +0,0 @@
-From f2195279c234c0f618946424b8236026126bc595 Mon Sep 17 00:00:00 2001
-Message-ID: <f2195279c234c0f618946424b8236026126bc595.1706071311.git.daniel at makrotopia.org>
-From: Daniel Golle <daniel at makrotopia.org>
-Date: Wed, 24 Jan 2024 02:27:04 +0000
-Subject: [PATCH net] net: phy: mediatek-ge-soc: sync driver with MediaTek SDK
-To: Daniel Golle <daniel at makrotopia.org>,
-    Qingfang Deng <dqfext at gmail.com>,
-    SkyLake Huang <SkyLake.Huang at mediatek.com>,
-    Andrew Lunn <andrew at lunn.ch>,
-    Heiner Kallweit <hkallweit1 at gmail.com>,
-    Russell King <linux at armlinux.org.uk>,
-    David S. Miller <davem at davemloft.net>,
-    Eric Dumazet <edumazet at google.com>,
-    Jakub Kicinski <kuba at kernel.org>,
-    Paolo Abeni <pabeni at redhat.com>,
-    Matthias Brugger <matthias.bgg at gmail.com>,
-    AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>,
-    netdev at vger.kernel.org,
-    linux-kernel at vger.kernel.org,
-    linux-arm-kernel at lists.infradead.org,
-    linux-mediatek at lists.infradead.org
-
-Sync initialization and calibration routines with MediaTek's reference
-driver. Improves compliance and resolves link stability issues with
-CH340 IoT devices connected to MT798x built-in PHYs.
-
-Fixes: 98c485eaf509 ("net: phy: add driver for MediaTek SoC built-in GE PHYs")
-Signed-off-by: Daniel Golle <daniel at makrotopia.org>
----
- drivers/net/phy/mediatek-ge-soc.c | 147 ++++++++++++++++--------------
- 1 file changed, 81 insertions(+), 66 deletions(-)
-
---- a/drivers/net/phy/mediatek-ge-soc.c
-+++ b/drivers/net/phy/mediatek-ge-soc.c
-@@ -491,7 +491,7 @@ static int tx_r50_fill_result(struct phy
- 	u16 reg, val;
- 
- 	if (phydev->drv->phy_id == MTK_GPHY_ID_MT7988)
--		bias = -2;
-+		bias = -1;
- 
- 	val = clamp_val(bias + tx_r50_cal_val, 0, 63);
- 
-@@ -707,6 +707,11 @@ restore:
- static void mt798x_phy_common_finetune(struct phy_device *phydev)
- {
- 	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
-+	/* SlvDSPreadyTime = 24, MasDSPreadyTime = 24 */
-+	__phy_write(phydev, 0x11, 0xc71);
-+	__phy_write(phydev, 0x12, 0xc);
-+	__phy_write(phydev, 0x10, 0x8fae);
-+
- 	/* EnabRandUpdTrig = 1 */
- 	__phy_write(phydev, 0x11, 0x2f00);
- 	__phy_write(phydev, 0x12, 0xe);
-@@ -717,15 +722,56 @@ static void mt798x_phy_common_finetune(s
- 	__phy_write(phydev, 0x12, 0x0);
- 	__phy_write(phydev, 0x10, 0x83aa);
- 
--	/* TrFreeze = 0 */
-+	/* FfeUpdGainForce = 1(Enable), FfeUpdGainForceVal = 4 */
-+	__phy_write(phydev, 0x11, 0x240);
-+	__phy_write(phydev, 0x12, 0x0);
-+	__phy_write(phydev, 0x10, 0x9680);
-+
-+	/* TrFreeze = 0 (mt7988 default) */
- 	__phy_write(phydev, 0x11, 0x0);
- 	__phy_write(phydev, 0x12, 0x0);
- 	__phy_write(phydev, 0x10, 0x9686);
- 
-+	/* SSTrKp100 = 5 */
-+	/* SSTrKf100 = 6 */
-+	/* SSTrKp1000Mas = 5 */
-+	/* SSTrKf1000Mas = 6 */
- 	/* SSTrKp1000Slv = 5 */
-+	/* SSTrKf1000Slv = 6 */
- 	__phy_write(phydev, 0x11, 0xbaef);
- 	__phy_write(phydev, 0x12, 0x2e);
- 	__phy_write(phydev, 0x10, 0x968c);
-+	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
-+}
-+
-+static void mt7981_phy_finetune(struct phy_device *phydev)
-+{
-+	u16 val[8] = { 0x01ce, 0x01c1,
-+		       0x020f, 0x0202,
-+		       0x03d0, 0x03c0,
-+		       0x0013, 0x0005 };
-+	int i, k;
-+
-+	/* 100M eye finetune:
-+	 * Keep middle level of TX MLT3 shapper as default.
-+	 * Only change TX MLT3 overshoot level here.
-+	 */
-+	for (k = 0, i = 1; i < 12; i++) {
-+		if (i % 3 == 0)
-+			continue;
-+		phy_write_mmd(phydev, MDIO_MMD_VEND1, i, val[k++]);
-+	}
-+
-+	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
-+	/* ResetSyncOffset = 6 */
-+	__phy_write(phydev, 0x11, 0x600);
-+	__phy_write(phydev, 0x12, 0x0);
-+	__phy_write(phydev, 0x10, 0x8fc0);
-+
-+	/* VgaDecRate = 1 */
-+	__phy_write(phydev, 0x11, 0x4c2a);
-+	__phy_write(phydev, 0x12, 0x3e);
-+	__phy_write(phydev, 0x10, 0x8fa4);
- 
- 	/* MrvlTrFix100Kp = 3, MrvlTrFix100Kf = 2,
- 	 * MrvlTrFix1000Kp = 3, MrvlTrFix1000Kf = 2
-@@ -740,7 +786,7 @@ static void mt798x_phy_common_finetune(s
- 	__phy_write(phydev, 0x10, 0x8ec0);
- 	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
- 
--	/* TR_OPEN_LOOP_EN = 1, lpf_x_average = 9*/
-+	/* TR_OPEN_LOOP_EN = 1, lpf_x_average = 9 */
- 	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG234,
- 		       MTK_PHY_TR_OPEN_LOOP_EN_MASK | MTK_PHY_LPF_X_AVERAGE_MASK,
- 		       BIT(0) | FIELD_PREP(MTK_PHY_LPF_X_AVERAGE_MASK, 0x9));
-@@ -773,48 +819,6 @@ static void mt798x_phy_common_finetune(s
- 	phy_write_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_LDO_OUTPUT_V, 0x2222);
- }
- 
--static void mt7981_phy_finetune(struct phy_device *phydev)
--{
--	u16 val[8] = { 0x01ce, 0x01c1,
--		       0x020f, 0x0202,
--		       0x03d0, 0x03c0,
--		       0x0013, 0x0005 };
--	int i, k;
--
--	/* 100M eye finetune:
--	 * Keep middle level of TX MLT3 shapper as default.
--	 * Only change TX MLT3 overshoot level here.
--	 */
--	for (k = 0, i = 1; i < 12; i++) {
--		if (i % 3 == 0)
--			continue;
--		phy_write_mmd(phydev, MDIO_MMD_VEND1, i, val[k++]);
--	}
--
--	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
--	/* SlvDSPreadyTime = 24, MasDSPreadyTime = 24 */
--	__phy_write(phydev, 0x11, 0xc71);
--	__phy_write(phydev, 0x12, 0xc);
--	__phy_write(phydev, 0x10, 0x8fae);
--
--	/* ResetSyncOffset = 6 */
--	__phy_write(phydev, 0x11, 0x600);
--	__phy_write(phydev, 0x12, 0x0);
--	__phy_write(phydev, 0x10, 0x8fc0);
--
--	/* VgaDecRate = 1 */
--	__phy_write(phydev, 0x11, 0x4c2a);
--	__phy_write(phydev, 0x12, 0x3e);
--	__phy_write(phydev, 0x10, 0x8fa4);
--
--	/* FfeUpdGainForce = 4 */
--	__phy_write(phydev, 0x11, 0x240);
--	__phy_write(phydev, 0x12, 0x0);
--	__phy_write(phydev, 0x10, 0x9680);
--
--	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
--}
--
- static void mt7988_phy_finetune(struct phy_device *phydev)
- {
- 	u16 val[12] = { 0x0187, 0x01cd, 0x01c8, 0x0182,
-@@ -829,17 +833,7 @@ static void mt7988_phy_finetune(struct p
- 	/* TCT finetune */
- 	phy_write_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_TX_FILTER, 0x5);
- 
--	/* Disable TX power saving */
--	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RXADC_CTRL_RG7,
--		       MTK_PHY_DA_AD_BUF_BIAS_LP_MASK, 0x3 << 8);
--
- 	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
--
--	/* SlvDSPreadyTime = 24, MasDSPreadyTime = 12 */
--	__phy_write(phydev, 0x11, 0x671);
--	__phy_write(phydev, 0x12, 0xc);
--	__phy_write(phydev, 0x10, 0x8fae);
--
- 	/* ResetSyncOffset = 5 */
- 	__phy_write(phydev, 0x11, 0x500);
- 	__phy_write(phydev, 0x12, 0x0);
-@@ -847,13 +841,27 @@ static void mt7988_phy_finetune(struct p
- 
- 	/* VgaDecRate is 1 at default on mt7988 */
- 
--	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
-+	/* MrvlTrFix100Kp = 6, MrvlTrFix100Kf = 7,
-+	 * MrvlTrFix1000Kp = 6, MrvlTrFix1000Kf = 7
-+	 */
-+	__phy_write(phydev, 0x11, 0xb90a);
-+	__phy_write(phydev, 0x12, 0x6f);
-+	__phy_write(phydev, 0x10, 0x8f82);
-+
-+	/* RemAckCntLimitCtrl = 1 */
-+	__phy_write(phydev, 0x11, 0xfbba);
-+	__phy_write(phydev, 0x12, 0xc3);
-+	__phy_write(phydev, 0x10, 0x87f8);
- 
--	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_2A30);
--	/* TxClkOffset = 2 */
--	__phy_modify(phydev, MTK_PHY_ANARG_RG, MTK_PHY_TCLKOFFSET_MASK,
--		     FIELD_PREP(MTK_PHY_TCLKOFFSET_MASK, 0x2));
- 	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
-+
-+	/* TR_OPEN_LOOP_EN = 1, lpf_x_average = 10 */
-+	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG234,
-+		       MTK_PHY_TR_OPEN_LOOP_EN_MASK | MTK_PHY_LPF_X_AVERAGE_MASK,
-+		       BIT(0) | FIELD_PREP(MTK_PHY_LPF_X_AVERAGE_MASK, 0xa));
-+
-+	/* rg_tr_lpf_cnt_val = 1023 */
-+	phy_write_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_LPF_CNT_VAL, 0x3ff);
- }
- 
- static void mt798x_phy_eee(struct phy_device *phydev)
-@@ -886,11 +894,11 @@ static void mt798x_phy_eee(struct phy_de
- 		       MTK_PHY_LPI_SLV_SEND_TX_EN,
- 		       FIELD_PREP(MTK_PHY_LPI_SLV_SEND_TX_TIMER_MASK, 0x120));
- 
--	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG239,
--		       MTK_PHY_LPI_SEND_LOC_TIMER_MASK |
--		       MTK_PHY_LPI_TXPCS_LOC_RCV,
--		       FIELD_PREP(MTK_PHY_LPI_SEND_LOC_TIMER_MASK, 0x117));
-+	/* Keep MTK_PHY_LPI_SEND_LOC_TIMER as 375 */
-+	phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG239,
-+			   MTK_PHY_LPI_TXPCS_LOC_RCV);
- 
-+	/* This also fixes some IoT issues, such as CH340 */
- 	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_DEV1E_REG2C7,
- 		       MTK_PHY_MAX_GAIN_MASK | MTK_PHY_MIN_GAIN_MASK,
- 		       FIELD_PREP(MTK_PHY_MAX_GAIN_MASK, 0x8) |
-@@ -924,7 +932,7 @@ static void mt798x_phy_eee(struct phy_de
- 	__phy_write(phydev, 0x12, 0x0);
- 	__phy_write(phydev, 0x10, 0x9690);
- 
--	/* REG_EEE_st2TrKf1000 = 3 */
-+	/* REG_EEE_st2TrKf1000 = 2 */
- 	__phy_write(phydev, 0x11, 0x114f);
- 	__phy_write(phydev, 0x12, 0x2);
- 	__phy_write(phydev, 0x10, 0x969a);
-@@ -949,7 +957,7 @@ static void mt798x_phy_eee(struct phy_de
- 	__phy_write(phydev, 0x12, 0x0);
- 	__phy_write(phydev, 0x10, 0x96b8);
- 
--	/* REGEEE_wake_slv_tr_wait_dfesigdet_en = 1 */
-+	/* REGEEE_wake_slv_tr_wait_dfesigdet_en = 0 */
- 	__phy_write(phydev, 0x11, 0x1463);
- 	__phy_write(phydev, 0x12, 0x0);
- 	__phy_write(phydev, 0x10, 0x96ca);
-@@ -1461,6 +1469,13 @@ static int mt7988_phy_probe(struct phy_d
- 	if (err)
- 		return err;
- 
-+	/* Disable TX power saving at probing to:
-+	 * 1. Meet common mode compliance test criteria
-+	 * 2. Make sure that TX-VCM calibration works fine
-+	 */
-+	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RXADC_CTRL_RG7,
-+		       MTK_PHY_DA_AD_BUF_BIAS_LP_MASK, 0x3 << 8);
-+
- 	return mt798x_phy_calibration(phydev);
- }
- 
diff --git a/target/linux/mediatek/patches-6.6/830-v6.7-44-thermal-drivers-mediatek-Fix-probe-for-THERMAL_V2.patch b/target/linux/mediatek/patches-6.6/830-v6.7-44-thermal-drivers-mediatek-Fix-probe-for-THERMAL_V2.patch
deleted file mode 100644
index 88f383c4ae..0000000000
--- a/target/linux/mediatek/patches-6.6/830-v6.7-44-thermal-drivers-mediatek-Fix-probe-for-THERMAL_V2.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e6f43063f2fe9f08b34797bc6d223f7d63b01910 Mon Sep 17 00:00:00 2001
-From: Markus Schneider-Pargmann <msp at baylibre.com>
-Date: Mon, 18 Sep 2023 12:07:06 +0200
-Subject: [PATCH 39/42] thermal/drivers/mediatek: Fix probe for THERMAL_V2
-
-Fix the probe function to call mtk_thermal_release_periodic_ts for
-everything != MTK_THERMAL_V1. This was accidentally changed from V1
-to V2 in the original patch.
-
-Reported-by: Frank Wunderlich <frank-w at public-files.de>
-Closes: https://lore.kernel.org/lkml/B0B3775B-B8D1-4284-814F-4F41EC22F532 at public-files.de/
-Reported-by: Daniel Lezcano <daniel.lezcano at linaro.org>
-Closes: https://lore.kernel.org/lkml/07a569b9-e691-64ea-dd65-3b49842af33d at linaro.org/
-Fixes: 33140e668b10 ("thermal/drivers/mediatek: Control buffer enablement tweaks")
-Signed-off-by: Markus Schneider-Pargmann <msp at baylibre.com>
-Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>
-Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
-Link: https://lore.kernel.org/r/20230918100706.1229239-1-msp at baylibre.com
----
- drivers/thermal/mediatek/auxadc_thermal.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/thermal/mediatek/auxadc_thermal.c
-+++ b/drivers/thermal/mediatek/auxadc_thermal.c
-@@ -1268,7 +1268,7 @@ static int mtk_thermal_probe(struct plat
- 
- 	mtk_thermal_turn_on_buffer(mt, apmixed_base);
- 
--	if (mt->conf->version != MTK_THERMAL_V2)
-+	if (mt->conf->version != MTK_THERMAL_V1)
- 		mtk_thermal_release_periodic_ts(mt, auxadc_base);
- 
- 	if (mt->conf->version == MTK_THERMAL_V1)



From lede-commits at lists.infradead.org  Mon Mar 11 14:24:05 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:24:05 -0400
Subject: [openwrt/openwrt]  mediatek: add kernel configs for Linux 6.6
In-Reply-To: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
References: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
Message-ID: <mailman.15386.1710192252.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cd509d739a8ec8a548fb7db62dab88ca13c38a7c

commit cd509d739a8ec8a548fb7db62dab88ca13c38a7c
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Mar 2 04:29:48 2024 +0000

    mediatek: add kernel configs for Linux 6.6
    
    Add config-6.6 for all mediatek subtargets.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 target/linux/mediatek/filogic/config-6.6 | 499 ++++++++++++++++++++++++
 target/linux/mediatek/mt7622/config-6.6  | 495 ++++++++++++++++++++++++
 target/linux/mediatek/mt7623/config-6.6  | 637 +++++++++++++++++++++++++++++++
 target/linux/mediatek/mt7629/config-6.6  | 360 +++++++++++++++++
 4 files changed, 1991 insertions(+)

diff --git a/target/linux/mediatek/filogic/config-6.6 b/target/linux/mediatek/filogic/config-6.6
new file mode 100644
index 0000000000..704c32be8a
--- /dev/null
+++ b/target/linux/mediatek/filogic/config-6.6
@@ -0,0 +1,499 @@
+CONFIG_64BIT=y
+# CONFIG_AHCI_MTK is not set
+CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
+CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
+CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_FORCE_MAX_ORDER=10
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
+CONFIG_ARCH_MMAP_RND_BITS=18
+CONFIG_ARCH_MMAP_RND_BITS_MAX=24
+CONFIG_ARCH_MMAP_RND_BITS_MIN=18
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WANTS_NO_INSTR=y
+CONFIG_ARCH_WANTS_THP_SWAP=y
+CONFIG_ARM64=y
+CONFIG_ARM64_4K_PAGES=y
+CONFIG_ARM64_ERRATUM_843419=y
+CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
+CONFIG_ARM64_PAGE_SHIFT=12
+CONFIG_ARM64_PA_BITS=48
+CONFIG_ARM64_PA_BITS_48=y
+CONFIG_ARM64_TAGGED_ADDR_ABI=y
+CONFIG_ARM64_VA_BITS=39
+CONFIG_ARM64_VA_BITS_39=y
+CONFIG_ARM_AMBA=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_V2M=y
+CONFIG_ARM_GIC_V3=y
+CONFIG_ARM_GIC_V3_ITS=y
+CONFIG_ARM_GIC_V3_ITS_PCI=y
+CONFIG_ARM_MEDIATEK_CPUFREQ=y
+CONFIG_ARM_PMU=y
+CONFIG_ARM_PMUV3=y
+CONFIG_ARM_PSCI_FW=y
+# CONFIG_ARM_SMMU_V3_PMU is not set
+CONFIG_ATA=y
+CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_NVMEM=y
+CONFIG_BLK_PM=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_BUFFER_HEAD=y
+CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y
+CONFIG_CC_HAVE_SHADOW_CALL_STACK=y
+CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
+CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
+CONFIG_CC_NO_ARRAY_BOUNDS=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CMDLINE_OVERRIDE=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMMON_CLK_MEDIATEK=y
+# CONFIG_COMMON_CLK_MT2712 is not set
+# CONFIG_COMMON_CLK_MT6779 is not set
+# CONFIG_COMMON_CLK_MT6795 is not set
+# CONFIG_COMMON_CLK_MT6797 is not set
+# CONFIG_COMMON_CLK_MT7622 is not set
+CONFIG_COMMON_CLK_MT7981=y
+CONFIG_COMMON_CLK_MT7981_ETHSYS=y
+CONFIG_COMMON_CLK_MT7986=y
+CONFIG_COMMON_CLK_MT7986_ETHSYS=y
+CONFIG_COMMON_CLK_MT7988=y
+# CONFIG_COMMON_CLK_MT8173 is not set
+# CONFIG_COMMON_CLK_MT8183 is not set
+# CONFIG_COMMON_CLK_MT8186 is not set
+# CONFIG_COMMON_CLK_MT8195 is not set
+# CONFIG_COMMON_CLK_MT8365 is not set
+# CONFIG_COMMON_CLK_MT8516 is not set
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+# CONFIG_COMPAT_32BIT_TIME is not set
+CONFIG_CONFIGFS_FS=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15
+CONFIG_CONTEXT_TRACKING=y
+CONFIG_CONTEXT_TRACKING_IDLE=y
+CONFIG_CPU_FREQ=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CRC16=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRYPTO_AES_ARM64=y
+CONFIG_CRYPTO_AES_ARM64_CE=y
+CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
+CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ECC=y
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_GHASH_ARM64_CE=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_GF128MUL=y
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_LIB_UTILS=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA256_ARM64=y
+CONFIG_CRYPTO_SHA2_ARM64_CE=y
+CONFIG_CRYPTO_SHA3=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_SM4=y
+CONFIG_CRYPTO_SM4_ARM64_CE_BLK=y
+CONFIG_CRYPTO_SM4_ARM64_CE_CCM=y
+CONFIG_CRYPTO_SM4_ARM64_CE_GCM=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_MISC=y
+CONFIG_DIMLIB=y
+CONFIG_DMADEVICES=y
+CONFIG_DMATEST=y
+CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y
+CONFIG_DMA_DIRECT_REMAP=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_ENGINE_RAID=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DTC=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EINT_MTK=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+CONFIG_EXT4_FS=y
+CONFIG_F2FS_FS=y
+CONFIG_FIT_PARTITION=y
+CONFIG_FIXED_PHY=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_FRAME_POINTER=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FUNCTION_ALIGNMENT=4
+CONFIG_FUNCTION_ALIGNMENT_4B=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
+CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IOREMAP=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GLOB=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_WATCHDOG=y
+CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y
+CONFIG_GRO_CELLS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HWMON=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_MTK=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MT65XX=y
+CONFIG_ICPLUS_PHY=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_IRQ_WORK=y
+CONFIG_JBD2=y
+CONFIG_JUMP_LABEL=y
+CONFIG_LEDS_SMARTRG_LED=y
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAXLINEAR_GPHY=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MEDIATEK_2P5G_PHY=y
+CONFIG_MEDIATEK_GE_PHY=y
+CONFIG_MEDIATEK_GE_SOC_PHY=y
+CONFIG_MEDIATEK_WATCHDOG=y
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
+CONFIG_MFD_SYSCON=y
+CONFIG_MIGRATION=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_CQHCI=y
+CONFIG_MMC_MTK=y
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_MEDIATEK=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_NAND_MTK=y
+CONFIG_MTD_NAND_MTK_BMT=y
+CONFIG_MTD_PARSER_TRX=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_SPI_NAND=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_FIT_FW=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_MTD_UBI_NVMEM=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+# CONFIG_MTK_CMDQ is not set
+CONFIG_MTK_CPUX_TIMER=y
+# CONFIG_MTK_CQDMA is not set
+CONFIG_MTK_HSDMA=y
+CONFIG_MTK_INFRACFG=y
+CONFIG_MTK_LVTS_THERMAL=y
+CONFIG_MTK_LVTS_THERMAL_DEBUGFS=y
+CONFIG_MTK_PMIC_WRAP=y
+CONFIG_MTK_REGULATOR_COUPLER=y
+CONFIG_MTK_SCPSYS=y
+CONFIG_MTK_SCPSYS_PM_DOMAINS=y
+CONFIG_MTK_SOC_THERMAL=y
+# CONFIG_MTK_SVS is not set
+CONFIG_MTK_THERMAL=y
+CONFIG_MTK_TIMER=y
+# CONFIG_MTK_UART_APDMA is not set
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=y
+CONFIG_NET_DSA_MT7530=y
+CONFIG_NET_DSA_MT7530_MDIO=y
+CONFIG_NET_DSA_MT7530_MMIO=y
+CONFIG_NET_DSA_TAG_MTK=y
+CONFIG_NET_EGRESS=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_MEDIATEK_SOC=y
+CONFIG_NET_MEDIATEK_SOC_WED=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_VENDOR_MEDIATEK=y
+CONFIG_NET_XGRESS=y
+CONFIG_NLS=y
+CONFIG_NO_HZ_COMMON=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NR_CPUS=4
+CONFIG_NVMEM=y
+CONFIG_NVMEM_LAYOUTS=y
+CONFIG_NVMEM_MTK_EFUSE=y
+CONFIG_NVMEM_SYSFS=y
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_DYNAMIC=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_RESOLVE=y
+CONFIG_PADATA=y
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_POOL_STATS=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
+CONFIG_PARTITION_PERCPU=y
+CONFIG_PCI=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEFAULT is not set
+CONFIG_PCIEASPM_PERFORMANCE=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+CONFIG_PCIEPORTBUS=y
+# CONFIG_PCIE_MEDIATEK is not set
+CONFIG_PCIE_MEDIATEK_GEN3=y
+CONFIG_PCIE_PME=y
+CONFIG_PCI_DEBUG=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_MSI=y
+CONFIG_PCS_MTK_LYNXI=y
+CONFIG_PCS_MTK_USXGMII=y
+CONFIG_PERF_EVENTS=y
+CONFIG_PER_VMA_LOCK=y
+CONFIG_PGTABLE_LEVELS=3
+CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
+CONFIG_PHYLINK=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+# CONFIG_PHY_MTK_DP is not set
+# CONFIG_PHY_MTK_PCIE is not set
+CONFIG_PHY_MTK_TPHY=y
+# CONFIG_PHY_MTK_UFS is not set
+CONFIG_PHY_MTK_XFI_TPHY=y
+CONFIG_PHY_MTK_XSPHY=y
+CONFIG_PINCTRL=y
+# CONFIG_PINCTRL_MT2712 is not set
+# CONFIG_PINCTRL_MT6765 is not set
+# CONFIG_PINCTRL_MT6795 is not set
+# CONFIG_PINCTRL_MT6797 is not set
+# CONFIG_PINCTRL_MT7622 is not set
+CONFIG_PINCTRL_MT7981=y
+CONFIG_PINCTRL_MT7986=y
+CONFIG_PINCTRL_MT7988=y
+# CONFIG_PINCTRL_MT8173 is not set
+# CONFIG_PINCTRL_MT8183 is not set
+# CONFIG_PINCTRL_MT8186 is not set
+# CONFIG_PINCTRL_MT8188 is not set
+# CONFIG_PINCTRL_MT8516 is not set
+CONFIG_PINCTRL_MTK_MOORE=y
+CONFIG_PINCTRL_MTK_V2=y
+# CONFIG_PINCTRL_SINGLE is not set
+CONFIG_PM=y
+CONFIG_PM_CLK=y
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_PM_OPP=y
+CONFIG_POLYNOMIAL=y
+CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_PREEMPT_NONE_BUILD=y
+CONFIG_PRINTK_TIME=y
+CONFIG_PSTORE=y
+CONFIG_PSTORE_COMPRESS=y
+CONFIG_PSTORE_CONSOLE=y
+CONFIG_PSTORE_PMSG=y
+CONFIG_PSTORE_RAM=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PWM=y
+CONFIG_PWM_MEDIATEK=y
+# CONFIG_PWM_MTK_DISP is not set
+CONFIG_PWM_SYSFS=y
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_RANDSTRUCT_NONE=y
+CONFIG_RAS=y
+CONFIG_RATIONAL=y
+# CONFIG_RAVE_SP_CORE is not set
+CONFIG_REALTEK_PHY=y
+CONFIG_REED_SOLOMON=y
+CONFIG_REED_SOLOMON_DEC8=y
+CONFIG_REED_SOLOMON_ENC8=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_MT6380=y
+CONFIG_REGULATOR_RT5190A=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_TI_SYSCON=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
+CONFIG_RPS=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_MT7622=y
+CONFIG_RTC_I2C_AND_SPI=y
+# CONFIG_RTL8367S_GSW is not set
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_SCHED_MC=y
+CONFIG_SCSI=y
+CONFIG_SCSI_COMMON=y
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_MT6577=y
+CONFIG_SERIAL_8250_NR_UARTS=3
+CONFIG_SERIAL_8250_RUNTIME_UARTS=3
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SGL_ALLOC=y
+CONFIG_SG_POOL=y
+CONFIG_SMP=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SPARSEMEM=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_DYNAMIC=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_MT65XX=y
+# CONFIG_SPI_MTK_NOR is not set
+CONFIG_SPI_MTK_SNFI=y
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
+CONFIG_SWIOTLB=y
+CONFIG_SWPHY=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_GOV_BANG_BANG=y
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_OF=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_UBIFS_FS=y
+# CONFIG_UCLAMP_TASK is not set
+CONFIG_UIMAGE_FIT_BLK=y
+# CONFIG_UNMAP_KERNEL_AT_EL0 is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_VMAP_STACK=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC=y
+CONFIG_WATCHDOG_PRETIMEOUT_GOV=y
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP is not set
+CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=y
+CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m
+CONFIG_WATCHDOG_SYSFS=y
+CONFIG_XPS=y
+CONFIG_XXHASH=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ZSTD_COMMON=y
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/mediatek/mt7622/config-6.6 b/target/linux/mediatek/mt7622/config-6.6
new file mode 100644
index 0000000000..8eb7158914
--- /dev/null
+++ b/target/linux/mediatek/mt7622/config-6.6
@@ -0,0 +1,495 @@
+CONFIG_64BIT=y
+# CONFIG_AHCI_MTK is not set
+CONFIG_AQUANTIA_PHY=y
+CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
+CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
+CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_FORCE_MAX_ORDER=10
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
+CONFIG_ARCH_MMAP_RND_BITS=18
+CONFIG_ARCH_MMAP_RND_BITS_MAX=24
+CONFIG_ARCH_MMAP_RND_BITS_MIN=18
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WANTS_NO_INSTR=y
+CONFIG_ARCH_WANTS_THP_SWAP=y
+CONFIG_ARM64=y
+CONFIG_ARM64_4K_PAGES=y
+CONFIG_ARM64_ERRATUM_843419=y
+CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
+CONFIG_ARM64_PAGE_SHIFT=12
+CONFIG_ARM64_PA_BITS=48
+CONFIG_ARM64_PA_BITS_48=y
+CONFIG_ARM64_TAGGED_ADDR_ABI=y
+CONFIG_ARM64_VA_BITS=39
+CONFIG_ARM64_VA_BITS_39=y
+CONFIG_ARM_AMBA=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_V2M=y
+CONFIG_ARM_GIC_V3=y
+CONFIG_ARM_GIC_V3_ITS=y
+CONFIG_ARM_GIC_V3_ITS_PCI=y
+CONFIG_ARM_MEDIATEK_CPUFREQ=y
+CONFIG_ARM_PMU=y
+CONFIG_ARM_PMUV3=y
+CONFIG_ARM_PSCI_FW=y
+# CONFIG_ARM_SMMU_V3_PMU is not set
+CONFIG_ATA=y
+CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_PM=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_BUFFER_HEAD=y
+CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y
+CONFIG_CC_HAVE_SHADOW_CALL_STACK=y
+CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
+CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
+CONFIG_CC_NO_ARRAY_BOUNDS=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_CLONE_BACKWARDS=y
+# CONFIG_CMDLINE_OVERRIDE is not set
+CONFIG_COMMON_CLK=y
+CONFIG_COMMON_CLK_MEDIATEK=y
+CONFIG_COMMON_CLK_MT2712=y
+# CONFIG_COMMON_CLK_MT2712_BDPSYS is not set
+# CONFIG_COMMON_CLK_MT2712_IMGSYS is not set
+# CONFIG_COMMON_CLK_MT2712_JPGDECSYS is not set
+# CONFIG_COMMON_CLK_MT2712_MFGCFG is not set
+# CONFIG_COMMON_CLK_MT2712_MMSYS is not set
+# CONFIG_COMMON_CLK_MT2712_VDECSYS is not set
+# CONFIG_COMMON_CLK_MT2712_VENCSYS is not set
+# CONFIG_COMMON_CLK_MT6779 is not set
+# CONFIG_COMMON_CLK_MT6795 is not set
+# CONFIG_COMMON_CLK_MT6797 is not set
+CONFIG_COMMON_CLK_MT7622=y
+CONFIG_COMMON_CLK_MT7622_AUDSYS=y
+CONFIG_COMMON_CLK_MT7622_ETHSYS=y
+CONFIG_COMMON_CLK_MT7622_HIFSYS=y
+# CONFIG_COMMON_CLK_MT7981 is not set
+# CONFIG_COMMON_CLK_MT7986 is not set
+# CONFIG_COMMON_CLK_MT7988 is not set
+# CONFIG_COMMON_CLK_MT8173 is not set
+# CONFIG_COMMON_CLK_MT8183 is not set
+# CONFIG_COMMON_CLK_MT8186 is not set
+# CONFIG_COMMON_CLK_MT8195 is not set
+# CONFIG_COMMON_CLK_MT8365 is not set
+# CONFIG_COMMON_CLK_MT8516 is not set
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15
+CONFIG_CONTEXT_TRACKING=y
+CONFIG_CONTEXT_TRACKING_IDLE=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CRC16=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRYPTO_AES_ARM64=y
+CONFIG_CRYPTO_AES_ARM64_CE=y
+CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
+CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ECC=y
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_GHASH_ARM64_CE=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_GF128MUL=y
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_LIB_UTILS=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA256_ARM64=y
+CONFIG_CRYPTO_SHA2_ARM64_CE=y
+CONFIG_CRYPTO_SHA3=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_SM4=y
+CONFIG_CRYPTO_SM4_ARM64_CE_BLK=y
+CONFIG_CRYPTO_SM4_ARM64_CE_CCM=y
+CONFIG_CRYPTO_SM4_ARM64_CE_GCM=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_MISC=y
+CONFIG_DIMLIB=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y
+CONFIG_DMA_DIRECT_REMAP=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DTC=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EINT_MTK=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+CONFIG_EXT4_FS=y
+CONFIG_F2FS_FS=y
+# CONFIG_FIT_PARTITION is not set
+CONFIG_FIXED_PHY=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_FRAME_POINTER=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FUNCTION_ALIGNMENT=4
+CONFIG_FUNCTION_ALIGNMENT_4B=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
+CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IOREMAP=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GLOB=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GRO_CELLS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_MTK=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MT65XX=y
+CONFIG_ICPLUS_PHY=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_IRQ_WORK=y
+CONFIG_JBD2=y
+CONFIG_JUMP_LABEL=y
+# CONFIG_LEDS_SMARTRG_LED is not set
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAXLINEAR_GPHY=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+# CONFIG_MEDIATEK_2P5G_PHY is not set
+CONFIG_MEDIATEK_GE_PHY=y
+# CONFIG_MEDIATEK_GE_SOC_PHY is not set
+CONFIG_MEDIATEK_WATCHDOG=y
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
+CONFIG_MFD_SYSCON=y
+CONFIG_MIGRATION=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_CQHCI=y
+CONFIG_MMC_MTK=y
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_MEDIATEK=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_NAND_MTK=y
+CONFIG_MTD_NAND_MTK_BMT=y
+CONFIG_MTD_PARSER_TRX=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_SPI_NAND=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
+CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_FIT_FW=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_MTD_UBI_NVMEM=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+# CONFIG_MTK_CMDQ is not set
+CONFIG_MTK_CPUX_TIMER=y
+# CONFIG_MTK_CQDMA is not set
+CONFIG_MTK_HSDMA=y
+CONFIG_MTK_INFRACFG=y
+# CONFIG_MTK_LVTS_THERMAL is not set
+CONFIG_MTK_PMIC_WRAP=y
+CONFIG_MTK_REGULATOR_COUPLER=y
+CONFIG_MTK_SCPSYS=y
+CONFIG_MTK_SCPSYS_PM_DOMAINS=y
+CONFIG_MTK_SOC_THERMAL=y
+# CONFIG_MTK_SVS is not set
+CONFIG_MTK_THERMAL=y
+CONFIG_MTK_TIMER=y
+# CONFIG_MTK_UART_APDMA is not set
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=y
+CONFIG_NET_DSA_MT7530=y
+CONFIG_NET_DSA_MT7530_MDIO=y
+# CONFIG_NET_DSA_MT7530_MMIO is not set
+CONFIG_NET_DSA_TAG_MTK=y
+CONFIG_NET_EGRESS=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_MEDIATEK_SOC=y
+CONFIG_NET_MEDIATEK_SOC_WED=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_VENDOR_MEDIATEK=y
+CONFIG_NET_XGRESS=y
+CONFIG_NLS=y
+CONFIG_NO_HZ_COMMON=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NR_CPUS=2
+CONFIG_NVMEM=y
+CONFIG_NVMEM_LAYOUTS=y
+CONFIG_NVMEM_MTK_EFUSE=y
+CONFIG_NVMEM_SYSFS=y
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_DYNAMIC=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_RESOLVE=y
+CONFIG_PADATA=y
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_POOL_STATS=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
+CONFIG_PARTITION_PERCPU=y
+CONFIG_PCI=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEFAULT is not set
+CONFIG_PCIEASPM_PERFORMANCE=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_MEDIATEK=y
+CONFIG_PCIE_PME=y
+CONFIG_PCI_DEBUG=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_MSI=y
+CONFIG_PCS_MTK_LYNXI=y
+CONFIG_PERF_EVENTS=y
+CONFIG_PER_VMA_LOCK=y
+CONFIG_PGTABLE_LEVELS=3
+CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
+CONFIG_PHYLINK=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+# CONFIG_PHY_MTK_DP is not set
+# CONFIG_PHY_MTK_PCIE is not set
+CONFIG_PHY_MTK_TPHY=y
+# CONFIG_PHY_MTK_UFS is not set
+# CONFIG_PHY_MTK_XSPHY is not set
+CONFIG_PINCTRL=y
+# CONFIG_PINCTRL_MT2712 is not set
+# CONFIG_PINCTRL_MT6765 is not set
+# CONFIG_PINCTRL_MT6795 is not set
+# CONFIG_PINCTRL_MT6797 is not set
+CONFIG_PINCTRL_MT7622=y
+# CONFIG_PINCTRL_MT7981 is not set
+# CONFIG_PINCTRL_MT7986 is not set
+# CONFIG_PINCTRL_MT7988 is not set
+# CONFIG_PINCTRL_MT8173 is not set
+# CONFIG_PINCTRL_MT8183 is not set
+# CONFIG_PINCTRL_MT8186 is not set
+# CONFIG_PINCTRL_MT8188 is not set
+# CONFIG_PINCTRL_MT8516 is not set
+CONFIG_PINCTRL_MTK_MOORE=y
+CONFIG_PINCTRL_MTK_V2=y
+CONFIG_PM=y
+CONFIG_PM_CLK=y
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_PM_OPP=y
+CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_PREEMPT_NONE_BUILD=y
+CONFIG_PRINTK_TIME=y
+CONFIG_PSTORE=y
+CONFIG_PSTORE_COMPRESS=y
+CONFIG_PSTORE_CONSOLE=y
+CONFIG_PSTORE_PMSG=y
+CONFIG_PSTORE_RAM=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PWM=y
+CONFIG_PWM_MEDIATEK=y
+# CONFIG_PWM_MTK_DISP is not set
+CONFIG_PWM_SYSFS=y
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_RANDSTRUCT_NONE=y
+CONFIG_RAS=y
+CONFIG_RATIONAL=y
+# CONFIG_RAVE_SP_CORE is not set
+CONFIG_REALTEK_PHY=y
+CONFIG_REED_SOLOMON=y
+CONFIG_REED_SOLOMON_DEC8=y
+CONFIG_REED_SOLOMON_ENC8=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_MT6380=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
+CONFIG_RPS=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_MT7622=y
+CONFIG_RTC_I2C_AND_SPI=y
+CONFIG_RTL8367S_GSW=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_SCHED_MC=y
+CONFIG_SCSI=y
+CONFIG_SCSI_COMMON=y
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_MT6577=y
+CONFIG_SERIAL_8250_NR_UARTS=3
+CONFIG_SERIAL_8250_RUNTIME_UARTS=3
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SGL_ALLOC=y
+CONFIG_SG_POOL=y
+CONFIG_SMP=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SPARSEMEM=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_DYNAMIC=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_MT65XX=y
+CONFIG_SPI_MTK_NOR=y
+CONFIG_SPI_MTK_SNFI=y
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
+CONFIG_SWCONFIG=y
+CONFIG_SWIOTLB=y
+CONFIG_SWPHY=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_EMULATION=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_OF=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_UBIFS_FS=y
+# CONFIG_UCLAMP_TASK is not set
+CONFIG_UIMAGE_FIT_BLK=y
+# CONFIG_UNMAP_KERNEL_AT_EL0 is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_VMAP_STACK=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC=y
+CONFIG_WATCHDOG_PRETIMEOUT_GOV=y
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP is not set
+CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=y
+CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m
+CONFIG_WATCHDOG_SYSFS=y
+CONFIG_XPS=y
+CONFIG_XXHASH=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ZSTD_COMMON=y
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/mediatek/mt7623/config-6.6 b/target/linux/mediatek/mt7623/config-6.6
new file mode 100644
index 0000000000..fad11c8ae8
--- /dev/null
+++ b/target/linux/mediatek/mt7623/config-6.6
@@ -0,0 +1,637 @@
+# CONFIG_AIO is not set
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MULTIPLATFORM=y
+CONFIG_ARCH_MULTI_V6_V7=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM=y
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+# CONFIG_ARM_ATAG_DTB_COMPAT is not set
+CONFIG_ARM_CPU_SUSPEND=y
+# CONFIG_ARM_CPU_TOPOLOGY is not set
+CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
+CONFIG_ARM_DMA_USE_IOMMU=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_HAS_GROUP_RELOCS=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+# CONFIG_ARM_MEDIATEK_CCI_DEVFREQ is not set
+CONFIG_ARM_MEDIATEK_CPUFREQ=y
+CONFIG_ARM_PATCH_IDIV=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+# CONFIG_ARM_SMMU is not set
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+CONFIG_ARM_UNWIND=y
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
+CONFIG_ATAGS=y
+CONFIG_AUTO_ZRELADDR=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_GPIO=y
+CONFIG_BACKLIGHT_LED=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_PM=y
+CONFIG_BOUNCE=y
+CONFIG_BUFFER_HEAD=y
+# CONFIG_CACHE_L2X0 is not set
+CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y
+CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
+CONFIG_CC_NO_ARRAY_BOUNDS=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CMDLINE="earlyprintk console=ttyS0,115200 rootfstype=squashfs,jffs2"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_OVERRIDE is not set
+CONFIG_CMDLINE_PARTITION=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMMON_CLK_MEDIATEK=y
+CONFIG_COMMON_CLK_MT2701=y
+CONFIG_COMMON_CLK_MT2701_AUDSYS=y
+CONFIG_COMMON_CLK_MT2701_BDPSYS=y
+CONFIG_COMMON_CLK_MT2701_ETHSYS=y
+CONFIG_COMMON_CLK_MT2701_G3DSYS=y
+CONFIG_COMMON_CLK_MT2701_HIFSYS=y
+CONFIG_COMMON_CLK_MT2701_IMGSYS=y
+CONFIG_COMMON_CLK_MT2701_MMSYS=y
+CONFIG_COMMON_CLK_MT2701_VDECSYS=y
+# CONFIG_COMMON_CLK_MT6795 is not set
+# CONFIG_COMMON_CLK_MT7622 is not set
+# CONFIG_COMMON_CLK_MT7629 is not set
+# CONFIG_COMMON_CLK_MT7981 is not set
+# CONFIG_COMMON_CLK_MT7986 is not set
+# CONFIG_COMMON_CLK_MT7988 is not set
+# CONFIG_COMMON_CLK_MT8135 is not set
+# CONFIG_COMMON_CLK_MT8365 is not set
+# CONFIG_COMMON_CLK_MT8516 is not set
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_CONTEXT_TRACKING=y
+CONFIG_CONTEXT_TRACKING_IDLE=y
+CONFIG_COREDUMP=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_PM=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_SPECTRE=y
+CONFIG_CPU_THUMB_CAPABLE=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_V7=y
+CONFIG_CRC16=y
+# CONFIG_CRC32_SARWATE is not set
+CONFIG_CRC32_SLICEBY8=y
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_GENIV=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_GF128MUL=y
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_LIB_UTILS=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA3=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_CURRENT_POINTER_IN_TPIDRURO=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_ALIGN_RODATA=y
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_GPIO=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
+CONFIG_DEBUG_MISC=y
+CONFIG_DEBUG_MT6589_UART0=y
+# CONFIG_DEBUG_MT8127_UART0 is not set
+# CONFIG_DEBUG_MT8135_UART3 is not set
+CONFIG_DEBUG_PREEMPT=y
+CONFIG_DEBUG_UART_8250=y
+CONFIG_DEBUG_UART_8250_SHIFT=2
+CONFIG_DEBUG_UART_PHYS=0x11004000
+CONFIG_DEBUG_UART_VIRT=0xf1004000
+# CONFIG_DEVFREQ_GOV_PASSIVE is not set
+# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
+# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
+# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
+CONFIG_DIMLIB=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_OPS=y
+CONFIG_DMA_SHARED_BUFFER=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DRM=y
+CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_DISPLAY_CONNECTOR=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+CONFIG_DRM_GEM_SHMEM_HELPER=y
+CONFIG_DRM_KMS_HELPER=y
+CONFIG_DRM_LIMA=y
+CONFIG_DRM_LVDS_CODEC=y
+CONFIG_DRM_MEDIATEK=y
+# CONFIG_DRM_MEDIATEK_DP is not set
+CONFIG_DRM_MEDIATEK_HDMI=y
+CONFIG_DRM_MIPI_DSI=y
+CONFIG_DRM_PANEL=y
+CONFIG_DRM_PANEL_BRIDGE=y
+# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
+# CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set
+# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
+# CONFIG_DRM_PANEL_NEWVISION_NV3051D is not set
+# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set
+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
+CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=y
+# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set
+# CONFIG_DRM_PANEL_STARTEK_KD070FHFID015 is not set
+# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set
+# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set
+CONFIG_DRM_SCHED=y
+CONFIG_DRM_SIMPLE_BRIDGE=y
+CONFIG_DTC=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EINT_MTK=y
+CONFIG_ELF_CORE=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+CONFIG_EXT4_FS=y
+CONFIG_EXTCON=y
+CONFIG_F2FS_FS=y
+CONFIG_FB=y
+CONFIG_FB_CORE=y
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_DEVICE=y
+CONFIG_FB_SYSMEM_HELPERS=y
+CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+# CONFIG_FIT_PARTITION is not set
+CONFIG_FIXED_PHY=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_FONT_8x16=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_SUPPORT=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FREEZER=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FUNCTION_ALIGNMENT=0
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_CACHE=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_IRQ_MIGRATION=y
+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_VDSO_32=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GRO_CELLS=y
+CONFIG_HARDEN_BRANCH_PREDICTOR=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAVE_SMP=y
+CONFIG_HDMI=y
+CONFIG_HID=y
+CONFIG_HID_SUPPORT=y
+CONFIG_HIGHMEM=y
+CONFIG_HIGHPTE=y
+CONFIG_HOTPLUG_CORE_SYNC=y
+CONFIG_HOTPLUG_CORE_SYNC_DEAD=y
+CONFIG_HOTPLUG_CPU=y
+CONFIG_HWMON=y
+CONFIG_HW_CONSOLE=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_MTK=y
+CONFIG_HZ_FIXED=0
+CONFIG_I2C=y
+CONFIG_I2C_ALGOBIT=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MT65XX=y
+CONFIG_ICPLUS_PHY=y
+CONFIG_IIO=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_INPUT=y
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_IOMMUFD is not set
+CONFIG_IOMMU_API=y
+# CONFIG_IOMMU_DEBUGFS is not set
+# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set
+CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_IOMMU_IO_PGTABLE=y
+CONFIG_IOMMU_IO_PGTABLE_ARMV7S=y
+# CONFIG_IOMMU_IO_PGTABLE_ARMV7S_SELFTEST is not set
+# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_IRQCHIP=y
+CONFIG_IRQSTACKS=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_WORK=y
+CONFIG_JBD2=y
+CONFIG_KALLSYMS=y
+CONFIG_KCMP=y
+CONFIG_KEYBOARD_MTK_PMIC=y
+CONFIG_KMAP_LOCAL=y
+CONFIG_KMAP_LOCAL_NON_LINEAR_PTE_ARRAY=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_PLATFORM=y
+CONFIG_LEDS_MT6323=y
+# CONFIG_LEDS_QCOM_LPG is not set
+# CONFIG_LEDS_SMARTRG_LED is not set
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+# CONFIG_MACH_MT2701 is not set
+# CONFIG_MACH_MT6589 is not set
+# CONFIG_MACH_MT6592 is not set
+CONFIG_MACH_MT7623=y
+# CONFIG_MACH_MT7629 is not set
+# CONFIG_MACH_MT8127 is not set
+# CONFIG_MACH_MT8135 is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAILBOX=y
+# CONFIG_MAILBOX_TEST is not set
+CONFIG_MDIO_BITBANG=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MDIO_GPIO=y
+CONFIG_MEDIATEK_GE_PHY=y
+CONFIG_MEDIATEK_MT6577_AUXADC=y
+CONFIG_MEDIATEK_WATCHDOG=y
+CONFIG_MEMORY=y
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_HI6421_SPMI is not set
+CONFIG_MFD_MT6397=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_MIGRATION=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_CQHCI=y
+CONFIG_MMC_MTK=y
+CONFIG_MMC_SDHCI=y
+# CONFIG_MMC_SDHCI_PCI is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_NAND_ECC_MEDIATEK is not set
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_UIMAGE_FW=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+# CONFIG_MTK_ADSP_MBOX is not set
+CONFIG_MTK_CMDQ=y
+CONFIG_MTK_CMDQ_MBOX=y
+CONFIG_MTK_CPUX_TIMER=y
+CONFIG_MTK_CQDMA=y
+# CONFIG_MTK_HSDMA is not set
+CONFIG_MTK_INFRACFG=y
+CONFIG_MTK_IOMMU=y
+CONFIG_MTK_IOMMU_V1=y
+# CONFIG_MTK_LVTS_THERMAL is not set
+CONFIG_MTK_MMSYS=y
+CONFIG_MTK_PMIC_WRAP=y
+CONFIG_MTK_REGULATOR_COUPLER=y
+CONFIG_MTK_SCPSYS=y
+CONFIG_MTK_SCPSYS_PM_DOMAINS=y
+CONFIG_MTK_SMI=y
+CONFIG_MTK_SOC_THERMAL=y
+# CONFIG_MTK_SVS is not set
+CONFIG_MTK_THERMAL=y
+CONFIG_MTK_TIMER=y
+# CONFIG_MTK_UART_APDMA is not set
+# CONFIG_MUSB_PIO_ONLY is not set
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_SRCU_NMI_SAFE=y
+CONFIG_NEON=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=y
+CONFIG_NET_DSA_MT7530=y
+CONFIG_NET_DSA_MT7530_MDIO=y
+# CONFIG_NET_DSA_MT7530_MMIO is not set
+CONFIG_NET_DSA_TAG_MTK=y
+CONFIG_NET_EGRESS=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_MEDIATEK_SOC=y
+CONFIG_NET_MEDIATEK_SOC_WED=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_VENDOR_MEDIATEK=y
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_NET_XGRESS=y
+CONFIG_NLS=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_NO_HZ=y
+CONFIG_NO_HZ_COMMON=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NR_CPUS=4
+CONFIG_NVMEM=y
+CONFIG_NVMEM_LAYOUTS=y
+CONFIG_NVMEM_MTK_EFUSE=y
+# CONFIG_NVMEM_SPMI_SDAM is not set
+CONFIG_NVMEM_SYSFS=y
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_DYNAMIC=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IOMMU=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_RESOLVE=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_PADATA=y
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_POOL_STATS=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
+CONFIG_PCI=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_MEDIATEK=y
+CONFIG_PCIE_PME=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_MSI=y
+CONFIG_PCS_MTK_LYNXI=y
+CONFIG_PERF_USE_VMALLOC=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
+CONFIG_PHYLINK=y
+# CONFIG_PHY_MTK_DP is not set
+CONFIG_PHY_MTK_HDMI=y
+CONFIG_PHY_MTK_MIPI_DSI=y
+# CONFIG_PHY_MTK_PCIE is not set
+CONFIG_PHY_MTK_TPHY=y
+# CONFIG_PHY_MTK_UFS is not set
+# CONFIG_PHY_MTK_XSPHY is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_MT2701=y
+# CONFIG_PINCTRL_MT6397 is not set
+CONFIG_PINCTRL_MT7623=y
+CONFIG_PINCTRL_MTK=y
+CONFIG_PINCTRL_MTK_MOORE=y
+CONFIG_PINCTRL_MTK_V2=y
+CONFIG_PM=y
+CONFIG_PM_CLK=y
+CONFIG_PM_DEVFREQ=y
+# CONFIG_PM_DEVFREQ_EVENT is not set
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
+CONFIG_PM_OPP=y
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_MT6323 is not set
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_SUPPLY_HWMON=y
+CONFIG_PREEMPT=y
+CONFIG_PREEMPTION=y
+CONFIG_PREEMPT_BUILD=y
+CONFIG_PREEMPT_COUNT=y
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_RCU=y
+CONFIG_PRINTK_TIME=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PWM=y
+CONFIG_PWM_MEDIATEK=y
+# CONFIG_PWM_MTK_DISP is not set
+CONFIG_PWM_SYSFS=y
+CONFIG_RANDSTRUCT_NONE=y
+CONFIG_RAS=y
+CONFIG_RATIONAL=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_MT6323=y
+# CONFIG_REGULATOR_MT6331 is not set
+# CONFIG_REGULATOR_MT6332 is not set
+# CONFIG_REGULATOR_MT6357 is not set
+# CONFIG_REGULATOR_MT6358 is not set
+# CONFIG_REGULATOR_MT6380 is not set
+# CONFIG_REGULATOR_MT6397 is not set
+# CONFIG_REGULATOR_QCOM_LABIBB is not set
+# CONFIG_REGULATOR_QCOM_SPMI is not set
+# CONFIG_REGULATOR_QCOM_USB_VBUS is not set
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RPS=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_DRV_MT6397 is not set
+# CONFIG_RTC_DRV_MT7622 is not set
+CONFIG_RTC_I2C_AND_SPI=y
+CONFIG_RTC_MC146818_LIB=y
+# CONFIG_RTL8367S_GSW is not set
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+# CONFIG_SERIAL_8250_DMA is not set
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_MT6577=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SGL_ALLOC=y
+CONFIG_SMP=y
+# CONFIG_SMP_ON_UP is not set
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_DYNAMIC=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_MT65XX=y
+# CONFIG_SPI_MTK_NOR is not set
+CONFIG_SPMI=y
+# CONFIG_SPMI_HISI3670 is not set
+# CONFIG_SPMI_MTK_PMIF is not set
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
+# CONFIG_STRIP_ASM_SYMS is not set
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_SWPHY=y
+CONFIG_SWP_EMULATE=y
+CONFIG_SYNC_FILE=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_OF=y
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+# CONFIG_UACCE is not set
+CONFIG_UBIFS_FS=y
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_UIMAGE_FIT_BLK=y
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_UNWINDER_ARM=y
+CONFIG_USB=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_F_ACM=y
+CONFIG_USB_F_ECM=y
+CONFIG_USB_F_MASS_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GPIO_VBUS=y
+CONFIG_USB_G_MULTI=y
+CONFIG_USB_G_MULTI_CDC=y
+# CONFIG_USB_G_MULTI_RNDIS is not set
+CONFIG_USB_HID=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_INVENTRA_DMA=y
+CONFIG_USB_LIBCOMPOSITE=y
+CONFIG_USB_MUSB_DUAL_ROLE=y
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_MEDIATEK=y
+CONFIG_USB_OTG=y
+CONFIG_USB_PHY=y
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_U_ETHER=y
+CONFIG_USB_U_SERIAL=y
+CONFIG_USE_OF=y
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_VIDEOMODE_HELPERS=y
+CONFIG_VIDEO_CMDLINE=y
+CONFIG_VIDEO_NOMODESET=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_XPS=y
+CONFIG_XXHASH=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZSTD_COMMON=y
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/mediatek/mt7629/config-6.6 b/target/linux/mediatek/mt7629/config-6.6
new file mode 100644
index 0000000000..15329133c0
--- /dev/null
+++ b/target/linux/mediatek/mt7629/config-6.6
@@ -0,0 +1,360 @@
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MULTIPLATFORM=y
+CONFIG_ARCH_MULTI_V6_V7=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_HAS_GROUP_RELOCS=y
+CONFIG_ARM_HEAVY_MB=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_PATCH_IDIV=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_UNWIND=y
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_ATAGS=y
+CONFIG_AUTO_ZRELADDR=y
+CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_PM=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_CACHE_L2X0=y
+CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y
+CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
+CONFIG_CC_NO_ARRAY_BOUNDS=y
+# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_CHR_DEV_SCH=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+CONFIG_CMDLINE_OVERRIDE=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMMON_CLK_MEDIATEK=y
+# CONFIG_COMMON_CLK_MT2701 is not set
+# CONFIG_COMMON_CLK_MT6795 is not set
+# CONFIG_COMMON_CLK_MT7622 is not set
+CONFIG_COMMON_CLK_MT7629=y
+CONFIG_COMMON_CLK_MT7629_ETHSYS=y
+CONFIG_COMMON_CLK_MT7629_HIFSYS=y
+# CONFIG_COMMON_CLK_MT7981 is not set
+# CONFIG_COMMON_CLK_MT7986 is not set
+# CONFIG_COMMON_CLK_MT7988 is not set
+# CONFIG_COMMON_CLK_MT8135 is not set
+# CONFIG_COMMON_CLK_MT8365 is not set
+# CONFIG_COMMON_CLK_MT8516 is not set
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_CONTEXT_TRACKING=y
+CONFIG_CONTEXT_TRACKING_IDLE=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_PM=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_SPECTRE=y
+CONFIG_CPU_THUMB_CAPABLE=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_V7=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_GF128MUL=y
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_UTILS=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_CURRENT_POINTER_IN_TPIDRURO=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_DEBUG_MISC=y
+CONFIG_DEFAULT_HOSTNAME="(mt7629)"
+CONFIG_DIMLIB=y
+CONFIG_DMA_OPS=y
+CONFIG_DTC=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EINT_MTK=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+# CONFIG_FIT_PARTITION is not set
+CONFIG_FIXED_PHY=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_FS_IOMAP=y
+CONFIG_FUNCTION_ALIGNMENT=0
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_IRQ_MIGRATION=y
+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_VDSO_32=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GRO_CELLS=y
+CONFIG_HARDEN_BRANCH_PREDICTOR=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAVE_SMP=y
+CONFIG_HOTPLUG_CORE_SYNC=y
+CONFIG_HOTPLUG_CORE_SYNC_DEAD=y
+CONFIG_HOTPLUG_CPU=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_MTK=y
+CONFIG_HZ_FIXED=0
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IRQCHIP=y
+CONFIG_IRQSTACKS=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_IRQ_WORK=y
+# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+# CONFIG_MACH_MT2701 is not set
+# CONFIG_MACH_MT6589 is not set
+# CONFIG_MACH_MT6592 is not set
+# CONFIG_MACH_MT7623 is not set
+CONFIG_MACH_MT7629=y
+# CONFIG_MACH_MT8127 is not set
+# CONFIG_MACH_MT8135 is not set
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MEDIATEK_GE_PHY=y
+CONFIG_MEDIATEK_WATCHDOG=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_MIGRATION=y
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_MEDIATEK=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_NAND_MTK_BMT=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_SPI_NAND=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_FIT_FW=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+# CONFIG_MTK_CMDQ is not set
+CONFIG_MTK_CPUX_TIMER=y
+CONFIG_MTK_INFRACFG=y
+# CONFIG_MTK_PMIC_WRAP is not set
+CONFIG_MTK_SCPSYS=y
+CONFIG_MTK_SCPSYS_PM_DOMAINS=y
+CONFIG_MTK_TIMER=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_SRCU_NMI_SAFE=y
+CONFIG_NETFILTER=y
+CONFIG_NETFILTER_BPF_LINK=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=y
+CONFIG_NET_DSA_MT7530=y
+CONFIG_NET_DSA_MT7530_MDIO=y
+# CONFIG_NET_DSA_MT7530_MMIO is not set
+CONFIG_NET_DSA_TAG_MTK=y
+CONFIG_NET_EGRESS=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_MEDIATEK_SOC=y
+CONFIG_NET_MEDIATEK_SOC_WED=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_VENDOR_MEDIATEK=y
+CONFIG_NET_XGRESS=y
+CONFIG_NLS=y
+CONFIG_NO_HZ_COMMON=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NR_CPUS=2
+CONFIG_NVMEM=y
+CONFIG_NVMEM_LAYOUTS=y
+# CONFIG_NVMEM_MTK_EFUSE is not set
+CONFIG_NVMEM_SYSFS=y
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_PADATA=y
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_POOL_STATS=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
+CONFIG_PCI=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_MEDIATEK=y
+CONFIG_PCIE_PME=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_MSI=y
+CONFIG_PCS_MTK_LYNXI=y
+CONFIG_PERF_USE_VMALLOC=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
+CONFIG_PHYLINK=y
+# CONFIG_PHY_MTK_DP is not set
+# CONFIG_PHY_MTK_PCIE is not set
+CONFIG_PHY_MTK_TPHY=y
+# CONFIG_PHY_MTK_UFS is not set
+# CONFIG_PHY_MTK_XSPHY is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_MT7629=y
+CONFIG_PINCTRL_MTK_MOORE=y
+CONFIG_PINCTRL_MTK_V2=y
+CONFIG_PM=y
+CONFIG_PM_CLK=y
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_PREEMPT_NONE_BUILD=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PWM=y
+CONFIG_PWM_MEDIATEK=y
+# CONFIG_PWM_MTK_DISP is not set
+CONFIG_PWM_SYSFS=y
+CONFIG_RANDSTRUCT_NONE=y
+CONFIG_RAS=y
+CONFIG_RATIONAL=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RPS=y
+# CONFIG_RTL8367S_GSW is not set
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_SCSI=y
+CONFIG_SCSI_COMMON=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_MT6577=y
+CONFIG_SERIAL_8250_NR_UARTS=3
+CONFIG_SERIAL_8250_RUNTIME_UARTS=3
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SGL_ALLOC=y
+CONFIG_SG_POOL=y
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_MT65XX=y
+CONFIG_SPI_MTK_NOR=y
+CONFIG_SPI_MTK_SNFI=y
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
+CONFIG_STACKTRACE=y
+# CONFIG_SWAP is not set
+CONFIG_SWCONFIG=y
+CONFIG_SWPHY=y
+CONFIG_SWP_EMULATE=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_UBIFS_FS=y
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+CONFIG_UNWINDER_ARM=y
+CONFIG_USB=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_MTK=y
+# CONFIG_USB_XHCI_PLATFORM is not set
+CONFIG_USE_OF=y
+# CONFIG_VFP is not set
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_XPS=y
+CONFIG_XXHASH=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZSTD_COMMON=y
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y



From lede-commits at lists.infradead.org  Mon Mar 11 14:23:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:23:58 -0400
Subject: [openwrt/openwrt]  mediatek: copy files-6.1 to files-6.6
In-Reply-To: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
References: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
Message-ID: <mailman.15389.1710192252.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9cb70f399caa14102032dcd5305dcfb3b444f8b4

commit 9cb70f399caa14102032dcd5305dcfb3b444f8b4
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 1 01:56:31 2024 +0000

    mediatek: copy files-6.1 to files-6.6
    
    Copy files from files-6.1 to files-6.6. No changes.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../dts/mediatek/mt7981-rfb-mxl-2p5g-phy-eth1.dtso |   32 +
 .../dts/mediatek/mt7981-rfb-mxl-2p5g-phy-swp5.dtso |   33 +
 .../boot/dts/mediatek/mt7981-rfb-spim-nand.dtso    |   66 +
 .../arch/arm64/boot/dts/mediatek/mt7981-rfb.dts    |  188 +++
 .../arch/arm64/boot/dts/mediatek/mt7981.dtsi       |  822 ++++++++++
 .../boot/dts/mediatek/mt7986a-rfb-spim-nand.dts    |   52 +
 .../boot/dts/mediatek/mt7986a-rfb-spim-nor.dts     |   51 +
 .../arch/arm64/boot/dts/mediatek/mt7986a-rfb.dtsi  |  389 +++++
 .../dts/mediatek/mt7988a-bananapi-bpi-r4-emmc.dtso |   62 +
 .../dts/mediatek/mt7988a-bananapi-bpi-r4-rtc.dtso  |   19 +
 .../dts/mediatek/mt7988a-bananapi-bpi-r4-sd.dtso   |   60 +
 .../mt7988a-bananapi-bpi-r4-wifi-mt7996a.dtso      |   99 ++
 .../boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts  |  407 +++++
 .../arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso  |   33 +
 .../boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso    |   41 +
 .../dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso   |   30 +
 .../boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso    |   39 +
 .../boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso    |   47 +
 .../boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso    |   41 +
 .../boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso    |   39 +
 .../boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso    |   47 +
 .../arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso    |   31 +
 .../boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso   |   69 +
 .../boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso   |   64 +
 .../boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso    |   59 +
 .../arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts   |  200 +++
 .../arch/arm64/boot/dts/mediatek/mt7988a.dtsi      | 1569 ++++++++++++++++++++
 .../files-6.6/drivers/net/phy/mediatek-2p5ge.c     |  316 ++++
 .../drivers/pinctrl/mediatek/pinctrl-mt7988.c      | 1517 +++++++++++++++++++
 29 files changed, 6422 insertions(+)

diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-mxl-2p5g-phy-eth1.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-mxl-2p5g-phy-eth1.dtso
new file mode 100644
index 0000000000..4d0e5c0406
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-mxl-2p5g-phy-eth1.dtso
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7981-rfb", "mediatek,mt7981";
+
+	fragment at 0 {
+		target = <&gmac1>;
+		__overlay__ {
+			phy-mode = "2500base-x";
+			phy-handle = <&phy5>;
+		};
+	};
+
+	fragment at 1 {
+		target = <&mdio_bus>;
+		__overlay__ {
+			reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>;
+			reset-delay-us = <600>;
+			reset-post-delay-us = <20000>;
+
+			phy5: ethernet-phy at 5 {
+				reg = <5>;
+				compatible = "ethernet-phy-ieee802.3-c45";
+				phy-mode = "2500base-x";
+			};
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-mxl-2p5g-phy-swp5.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-mxl-2p5g-phy-swp5.dtso
new file mode 100644
index 0000000000..710e6c0bcf
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-mxl-2p5g-phy-swp5.dtso
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7981-rfb", "mediatek,mt7981";
+
+	fragment at 0 {
+		target = <&sw_p5>;
+		__overlay__ {
+			phy-mode = "2500base-x";
+			phy-handle = <&phy5>;
+			status = "okay";
+		};
+	};
+
+	fragment at 1 {
+		target = <&mdio_bus>;
+		__overlay__ {
+			reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>;
+			reset-delay-us = <600>;
+			reset-post-delay-us = <20000>;
+
+			phy5: ethernet-phy at 5 {
+				reg = <5>;
+				compatible = "ethernet-phy-ieee802.3-c45";
+				phy-mode = "2500base-x";
+			};
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-spim-nand.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-spim-nand.dtso
new file mode 100644
index 0000000000..5b51dfd671
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb-spim-nand.dtso
@@ -0,0 +1,66 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "mediatek,mt7981-rfb", "mediatek,mt7981";
+
+	fragment at 0 {
+		target = <&spi0>;
+		__overlay__ {
+			status = "okay";
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			spi_nand: spi_nand at 0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "spi-nand";
+				reg = <1>;
+				spi-max-frequency = <10000000>;
+				spi-tx-bus-width = <4>;
+				spi-rx-bus-width = <4>;
+
+				partitions {
+					compatible = "fixed-partitions";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					partition at 0 {
+						label = "BL2";
+						reg = <0x00000 0x0100000>;
+						read-only;
+					};
+
+					partition at 100000 {
+						label = "u-boot-env";
+						reg = <0x0100000 0x0080000>;
+					};
+
+					factory: partition at 180000 {
+						label = "Factory";
+						reg = <0x180000 0x0200000>;
+					};
+
+					partition at 380000 {
+						label = "FIP";
+						reg = <0x380000 0x0200000>;
+					};
+
+					partition at 580000 {
+						label = "ubi";
+						reg = <0x580000 0x4000000>;
+					};
+				};
+			};
+		};
+	};
+
+	fragment at 1 {
+		target = <&wifi>;
+		__overlay__ {
+			mediatek,mtd-eeprom = <&factory 0x0>;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb.dts b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb.dts
new file mode 100644
index 0000000000..b2bb692956
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981-rfb.dts
@@ -0,0 +1,188 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+#include "mt7981.dtsi"
+
+/ {
+	model = "MediaTek MT7981 RFB";
+	compatible = "mediatek,mt7981-rfb", "mediatek,mt7981";
+
+	aliases {
+		serial0 = &uart0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	memory {
+		reg = <0 0x40000000 0 0x20000000>;
+	};
+
+	reg_3p3v: regulator-3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_5v: regulator-5v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+		};
+		wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
+		};
+	};
+};
+
+&eth {
+	status = "okay";
+
+	gmac0: mac at 0 {
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+
+		fixed-link {
+			speed = <2500>;
+			full-duplex;
+			pause;
+		};
+	};
+
+	gmac1: mac at 1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&int_gbe_phy>;
+	};
+};
+
+&mdio_bus {
+	switch: switch at 1f {
+		compatible = "mediatek,mt7531";
+		reg = <31>;
+		interrupt-controller;
+		#interrupt-cells = <1>;
+		interrupt-parent = <&pio>;
+		interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
+		reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
+	};
+};
+
+&crypto {
+	status = "okay";
+};
+
+&pio {
+	spi0_flash_pins: spi0-pins {
+		mux {
+			function = "spi";
+			groups = "spi0", "spi0_wp_hold";
+		};
+		conf-pu {
+			pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
+			drive-strength = <MTK_DRIVE_8mA>;
+			bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
+		};
+		conf-pd {
+			pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
+			drive-strength = <MTK_DRIVE_8mA>;
+			bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
+		};
+	};
+
+};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi0_flash_pins>;
+	cs-gpios = <0>, <0>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+	status = "disabled";
+};
+
+&switch {
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		port at 0 {
+			reg = <0>;
+			label = "lan1";
+		};
+
+		port at 1 {
+			reg = <1>;
+			label = "lan2";
+		};
+
+		port at 2 {
+			reg = <2>;
+			label = "lan3";
+		};
+
+		port at 3 {
+			reg = <3>;
+			label = "lan4";
+		};
+
+		sw_p5: port at 5 {
+			reg = <5>;
+			label = "lan5";
+			status = "disabled";
+		};
+
+		port at 6 {
+			reg = <6>;
+			ethernet = <&gmac0>;
+			phy-mode = "2500base-x";
+
+			fixed-link {
+				speed = <2500>;
+				full-duplex;
+				pause;
+			};
+		};
+	};
+};
+
+&xhci {
+	vusb33-supply = <&reg_3p3v>;
+	vbus-supply = <&reg_5v>;
+	status = "okay";
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&usb_phy {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981.dtsi b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981.dtsi
new file mode 100644
index 0000000000..54cfd0b4b9
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7981.dtsi
@@ -0,0 +1,822 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (c) 2020 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ * Author: Jianhui Zhao <zhaojh329 at gmail.com>
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/clock/mediatek,mt7981-clk.h>
+#include <dt-bindings/reset/mt7986-resets.h>
+#include <dt-bindings/pinctrl/mt65xx.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/mux/mux.h>
+
+/ {
+	compatible = "mediatek,mt7981";
+	interrupt-parent = <&gic>;
+	#address-cells = <2>;
+	#size-cells = <2>;
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu at 0 {
+			compatible = "arm,cortex-a53";
+			reg = <0x0>;
+			device_type = "cpu";
+			enable-method = "psci";
+		};
+
+		cpu at 1 {
+			compatible = "arm,cortex-a53";
+			reg = <0x1>;
+			device_type = "cpu";
+			enable-method = "psci";
+		};
+	};
+
+	ice: ice_debug {
+		compatible = "mediatek,mt7981-ice_debug", "mediatek,mt2701-ice_debug";
+		clocks = <&infracfg CLK_INFRA_DBG_CK>;
+		clock-names = "ice_dbg";
+	};
+
+	clk40m: oscillator-40m {
+		compatible = "fixed-clock";
+		clock-frequency = <40000000>;
+		clock-output-names = "clkxtal";
+		#clock-cells = <0>;
+	};
+
+	psci {
+		compatible = "arm,psci-0.2";
+		method = "smc";
+	};
+
+	fan: pwm-fan {
+		compatible = "pwm-fan";
+		/* cooling level (0, 1, 2, 3, 4, 5, 6, 7) : (0%/25%/37.5%/50%/62.5%/75%/87.5%/100% duty) */
+		cooling-levels = <0 63 95 127 159 191 223 255>;
+		#cooling-cells = <2>;
+		status = "disabled";
+	};
+
+	reg_3p3v: regulator-3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reserved-memory {
+		ranges;
+		#address-cells = <2>;
+		#size-cells = <2>;
+
+		/* 64 KiB reserved for ramoops/pstore */
+		ramoops at 42ff0000 {
+			compatible = "ramoops";
+			reg = <0 0x42ff0000 0 0x10000>;
+			record-size = <0x1000>;
+		};
+
+		/* 192 KiB reserved for ARM Trusted Firmware (BL31) */
+		secmon_reserved: secmon at 43000000 {
+			reg = <0 0x43000000 0 0x30000>;
+			no-map;
+		};
+
+		wmcpu_emi: wmcpu-reserved at 47c80000 {
+			reg = <0 0x47c80000 0 0x100000>;
+			no-map;
+		};
+
+		wo_emi0: wo-emi at 47d80000 {
+			reg = <0 0x47d80000 0 0x40000>;
+			no-map;
+		};
+
+		wo_data: wo-data at 47dc0000 {
+			reg = <0 0x47dc0000 0 0x240000>;
+			no-map;
+		};
+	};
+
+	soc {
+		compatible = "simple-bus";
+		ranges;
+		#address-cells = <2>;
+		#size-cells = <2>;
+
+		gic: interrupt-controller at c000000 {
+			compatible = "arm,gic-v3";
+			reg = <0 0x0c000000 0 0x40000>,  /* GICD */
+			      <0 0x0c080000 0 0x200000>; /* GICR */
+			interrupt-parent = <&gic>;
+			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <3>;
+		};
+
+		consys: consys at 10000000 {
+			compatible = "mediatek,mt7981-consys";
+			reg = <0 0x10000000 0 0x8600000>;
+			memory-region = <&wmcpu_emi>;
+		};
+
+		infracfg: clock-controller at 10001000 {
+			compatible = "mediatek,mt7981-infracfg", "syscon";
+			reg = <0 0x10001000 0 0x1000>;
+			#clock-cells = <1>;
+		};
+
+		wed_pcie: wed_pcie at 10003000 {
+			compatible = "mediatek,wed_pcie";
+			reg = <0 0x10003000 0 0x10>;
+		};
+
+		topckgen: clock-controller at 1001b000 {
+			compatible = "mediatek,mt7981-topckgen", "syscon";
+			reg = <0 0x1001b000 0 0x1000>;
+			#clock-cells = <1>;
+		};
+
+		watchdog: watchdog at 1001c000 {
+			compatible = "mediatek,mt7986-wdt",
+				     "mediatek,mt6589-wdt";
+			reg = <0 0x1001c000 0 0x1000>;
+			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+			#reset-cells = <1>;
+			status = "disabled";
+		};
+
+		apmixedsys: clock-controller at 1001e000 {
+			compatible = "mediatek,mt7981-apmixedsys", "syscon";
+			reg = <0 0x1001e000 0 0x1000>;
+			#clock-cells = <1>;
+		};
+
+		pwm: pwm at 10048000 {
+			compatible = "mediatek,mt7981-pwm";
+			reg = <0 0x10048000 0 0x1000>;
+			clocks = <&infracfg CLK_INFRA_PWM_STA>,
+				 <&infracfg CLK_INFRA_PWM_HCK>,
+				 <&infracfg CLK_INFRA_PWM1_CK>,
+				 <&infracfg CLK_INFRA_PWM2_CK>,
+				 <&infracfg CLK_INFRA_PWM3_CK>;
+			clock-names = "top", "main", "pwm1", "pwm2", "pwm3";
+			#pwm-cells = <2>;
+		};
+
+		sgmiisys0: syscon at 10060000 {
+			compatible = "mediatek,mt7981-sgmiisys_0", "syscon";
+			reg = <0 0x10060000 0 0x1000>;
+			mediatek,pnswap;
+			#clock-cells = <1>;
+		};
+
+		sgmiisys1: syscon at 10070000 {
+			compatible = "mediatek,mt7981-sgmiisys_1", "syscon";
+			reg = <0 0x10070000 0 0x1000>;
+			#clock-cells = <1>;
+		};
+
+		crypto: crypto at 10320000 {
+			compatible = "inside-secure,safexcel-eip97";
+			reg = <0 0x10320000 0 0x40000>;
+			interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "ring0", "ring1", "ring2", "ring3";
+			clocks = <&topckgen CLK_TOP_EIP97B>;
+			clock-names = "top_eip97_ck";
+			assigned-clocks = <&topckgen CLK_TOP_EIP97B_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_CB_NET1_D5>;
+		};
+
+		uart0: serial at 11002000 {
+			compatible = "mediatek,mt6577-uart";
+			reg = <0 0x11002000 0 0x400>;
+			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_UART0_SEL>,
+				 <&infracfg CLK_INFRA_UART0_CK>;
+			clock-names = "baud", "bus";
+			assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
+					  <&infracfg CLK_INFRA_UART0_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_CB_CKSQ_40M>,
+						 <&topckgen CLK_TOP_UART_SEL>;
+			pinctrl-0 = <&uart0_pins>;
+			pinctrl-names = "default";
+			status = "disabled";
+		};
+
+		uart1: serial at 11003000 {
+			compatible = "mediatek,mt6577-uart";
+			reg = <0 0x11003000 0 0x400>;
+			interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_UART1_SEL>,
+				 <&infracfg CLK_INFRA_UART1_CK>;
+			clock-names = "baud", "bus";
+			assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
+					  <&infracfg CLK_INFRA_UART1_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_CB_CKSQ_40M>,
+						 <&topckgen CLK_TOP_UART_SEL>;
+			status = "disabled";
+		};
+
+		uart2: serial at 11004000 {
+			compatible = "mediatek,mt6577-uart";
+			reg = <0 0x11004000 0 0x400>;
+			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_UART2_SEL>,
+				 <&infracfg CLK_INFRA_UART2_CK>;
+			clock-names = "baud", "bus";
+			assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
+					  <&infracfg CLK_INFRA_UART2_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_CB_CKSQ_40M>,
+						 <&topckgen CLK_TOP_UART_SEL>;
+			status = "disabled";
+		};
+
+		snand: snfi at 11005000 {
+			compatible = "mediatek,mt7986-snand";
+			reg = <0 0x11005000 0 0x1000>, <0 0x11006000 0 0x1000>;
+			reg-names = "nfi", "ecc";
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_SPINFI1_CK>,
+				 <&infracfg CLK_INFRA_NFI1_CK>,
+				 <&infracfg CLK_INFRA_NFI_HCK_CK>;
+			clock-names = "pad_clk", "nfi_clk", "nfi_hclk";
+			assigned-clocks = <&topckgen CLK_TOP_SPINFI_SEL>,
+					  <&topckgen CLK_TOP_NFI1X_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_CB_M_D8>,
+						 <&topckgen CLK_TOP_CB_M_D8>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c0: i2c at 11007000 {
+			compatible = "mediatek,mt7981-i2c";
+			reg = <0 0x11007000 0 0x1000>,
+			      <0 0x10217080 0 0x80>;
+			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+			clock-div = <1>;
+			clocks = <&infracfg CLK_INFRA_I2C0_CK>,
+				 <&infracfg CLK_INFRA_AP_DMA_CK>,
+				 <&infracfg CLK_INFRA_I2C_MCK_CK>,
+				 <&infracfg CLK_INFRA_I2C_PCK_CK>;
+			clock-names = "main", "dma", "arb", "pmic";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi2: spi at 11009000 {
+			compatible = "mediatek,mt7986-spi-ipm", "mediatek,spi-ipm";
+			reg = <0 0x11009000 0 0x100>;
+			interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&topckgen CLK_TOP_CB_M_D2>,
+				 <&topckgen CLK_TOP_SPI_SEL>,
+				 <&infracfg CLK_INFRA_SPI2_CK>,
+				 <&infracfg CLK_INFRA_SPI2_HCK_CK>;
+			clock-names = "parent-clk", "sel-clk", "spi-clk", "hclk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi0: spi at 1100a000 {
+			compatible = "mediatek,mt7986-spi-ipm", "mediatek,spi-ipm";
+			reg = <0 0x1100a000 0 0x100>;
+			interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&topckgen CLK_TOP_CB_M_D2>,
+				 <&topckgen CLK_TOP_SPI_SEL>,
+				 <&infracfg CLK_INFRA_SPI0_CK>,
+				 <&infracfg CLK_INFRA_SPI0_HCK_CK>;
+			clock-names = "parent-clk", "sel-clk", "spi-clk", "hclk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi1: spi at 1100b000 {
+			compatible = "mediatek,mt7986-spi-ipm", "mediatek,spi-ipm";
+			reg = <0 0x1100b000 0 0x100>;
+			interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&topckgen CLK_TOP_CB_M_D2>,
+				 <&topckgen CLK_TOP_SPIM_MST_SEL>,
+				 <&infracfg CLK_INFRA_SPI1_CK>,
+				 <&infracfg CLK_INFRA_SPI1_HCK_CK>;
+			clock-names = "parent-clk", "sel-clk", "spi-clk", "hclk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		thermal: thermal at 1100c800 {
+			compatible = "mediatek,mt7981-thermal", "mediatek,mt7986-thermal";
+			reg = <0 0x1100c800 0 0x800>;
+			interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_THERM_CK>,
+				 <&infracfg CLK_INFRA_ADC_26M_CK>;
+			clock-names = "therm", "auxadc";
+			nvmem-cells = <&thermal_calibration>;
+			nvmem-cell-names = "calibration-data";
+			#thermal-sensor-cells = <1>;
+			mediatek,auxadc = <&auxadc>;
+			mediatek,apmixedsys = <&apmixedsys>;
+		};
+
+		auxadc: adc at 1100d000 {
+			compatible = "mediatek,mt7981-auxadc",
+				     "mediatek,mt7986-auxadc",
+				     "mediatek,mt7622-auxadc";
+			reg = <0 0x1100d000 0 0x1000>;
+			clocks = <&infracfg CLK_INFRA_ADC_26M_CK>,
+				 <&infracfg CLK_INFRA_ADC_FRC_CK>;
+			clock-names = "main", "32k";
+			#io-channel-cells = <1>;
+		};
+
+		xhci: usb at 11200000 {
+			compatible = "mediatek,mt7986-xhci",
+				     "mediatek,mtk-xhci";
+			reg = <0 0x11200000 0 0x2e00>,
+			      <0 0x11203e00 0 0x0100>;
+			reg-names = "mac", "ippc";
+			interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_IUSB_SYS_CK>,
+				 <&infracfg CLK_INFRA_IUSB_CK>,
+				 <&infracfg CLK_INFRA_IUSB_133_CK>,
+				 <&infracfg CLK_INFRA_IUSB_66M_CK>,
+				 <&topckgen CLK_TOP_U2U3_XHCI_SEL>;
+			clock-names = "sys_ck",
+				      "ref_ck",
+				      "mcu_ck",
+				      "dma_ck",
+				      "xhci_ck";
+			phys = <&u2port0 PHY_TYPE_USB2>,
+			       <&u3port0 PHY_TYPE_USB3>;
+			vusb33-supply = <&reg_3p3v>;
+			status = "disabled";
+		};
+
+		afe: audio-controller at 11210000 {
+			compatible = "mediatek,mt79xx-audio";
+			reg = <0 0x11210000 0 0x9000>;
+			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_AUD_BUS_CK>,
+				 <&infracfg CLK_INFRA_AUD_26M_CK>,
+				 <&infracfg CLK_INFRA_AUD_L_CK>,
+				 <&infracfg CLK_INFRA_AUD_AUD_CK>,
+				 <&infracfg CLK_INFRA_AUD_EG2_CK>,
+				 <&topckgen CLK_TOP_AUD_SEL>;
+			clock-names = "aud_bus_ck",
+				      "aud_26m_ck",
+				      "aud_l_ck",
+				      "aud_aud_ck",
+				      "aud_eg2_ck",
+				      "aud_sel";
+			assigned-clocks = <&topckgen CLK_TOP_AUD_SEL>,
+					  <&topckgen CLK_TOP_A1SYS_SEL>,
+					  <&topckgen CLK_TOP_AUD_L_SEL>,
+					  <&topckgen CLK_TOP_A_TUNER_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_CB_APLL2_196M>,
+						 <&topckgen CLK_TOP_APLL2_D4>,
+						 <&topckgen CLK_TOP_CB_APLL2_196M>,
+						 <&topckgen CLK_TOP_APLL2_D4>;
+			status = "disabled";
+		};
+
+		mmc0: mmc at 11230000 {
+			compatible = "mediatek,mt7986-mmc", "mediatek,mt7981-mmc";
+			reg = <0 0x11230000 0 0x1000>, <0 0x11c20000 0 0x1000>;
+			interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_MSDC_CK>,
+				 <&infracfg CLK_INFRA_MSDC_HCK_CK>,
+				 <&infracfg CLK_INFRA_MSDC_66M_CK>,
+				 <&infracfg CLK_INFRA_MSDC_133M_CK>;
+			assigned-clocks = <&topckgen CLK_TOP_EMMC_208M_SEL>,
+					  <&topckgen CLK_TOP_EMMC_400M_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_CB_M_D2>,
+						 <&topckgen CLK_TOP_CB_NET2_D2>;
+			clock-names = "source", "hclk", "axi_cg", "ahb_cg";
+			status = "disabled";
+		};
+
+		pcie: pcie at 11280000 {
+			compatible = "mediatek,mt7981-pcie",
+				     "mediatek,mt7986-pcie";
+			reg = <0 0x11280000 0 0x4000>;
+			reg-names = "pcie-mac";
+			ranges = <0x82000000 0 0x20000000
+				  0x0 0x20000000 0 0x10000000>;
+			device_type = "pci";
+			interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
+			bus-range = <0x00 0xff>;
+			clocks = <&infracfg CLK_INFRA_IPCIE_CK>,
+				 <&infracfg CLK_INFRA_IPCIE_PIPE_CK>,
+				 <&infracfg CLK_INFRA_IPCIER_CK>,
+				 <&infracfg CLK_INFRA_IPCIEB_CK>;
+			phys = <&u3port0 PHY_TYPE_PCIE>;
+			phy-names = "pcie-phy";
+			interrupt-map-mask = <0 0 0 7>;
+			interrupt-map = <0 0 0 1 &pcie_intc 0>,
+					<0 0 0 2 &pcie_intc 1>,
+					<0 0 0 3 &pcie_intc 2>,
+					<0 0 0 4 &pcie_intc 3>;
+			#interrupt-cells = <1>;
+			#address-cells = <3>;
+			#size-cells = <2>;
+			status = "disabled";
+
+			pcie_intc: interrupt-controller {
+				interrupt-controller;
+				#interrupt-cells = <1>;
+				#address-cells = <0>;
+			};
+		};
+
+		pio: pinctrl at 11d00000 {
+			compatible = "mediatek,mt7981-pinctrl";
+			reg = <0 0x11d00000 0 0x1000>,
+			      <0 0x11c00000 0 0x1000>,
+			      <0 0x11c10000 0 0x1000>,
+			      <0 0x11d20000 0 0x1000>,
+			      <0 0x11e00000 0 0x1000>,
+			      <0 0x11e20000 0 0x1000>,
+			      <0 0x11f00000 0 0x1000>,
+			      <0 0x11f10000 0 0x1000>,
+			      <0 0x1000b000 0 0x1000>;
+			reg-names = "gpio", "iocfg_rt", "iocfg_rm",
+				    "iocfg_rb", "iocfg_lb", "iocfg_bl",
+				    "iocfg_tm", "iocfg_tl", "eint";
+			gpio-controller;
+			#gpio-cells = <2>;
+			gpio-ranges = <&pio 0 0 56>;
+			interrupt-controller;
+			interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-parent = <&gic>;
+			#interrupt-cells = <2>;
+
+			mdio_pins: mdc-mdio-pins {
+				mux {
+					function = "eth";
+					groups = "smi_mdc_mdio";
+				};
+			};
+
+			uart0_pins: uart0-pins {
+				mux {
+					function = "uart";
+					groups = "uart0";
+				};
+			};
+
+			wifi_dbdc_pins: wifi-dbdc-pins {
+				mux {
+					function = "eth";
+					groups = "wf0_mode1";
+				};
+
+				conf {
+					pins = "WF_HB1", "WF_HB2", "WF_HB3", "WF_HB4",
+					       "WF_HB0", "WF_HB0_B", "WF_HB5", "WF_HB6",
+					       "WF_HB7", "WF_HB8", "WF_HB9", "WF_HB10",
+					       "WF_TOP_CLK", "WF_TOP_DATA", "WF_XO_REQ",
+					       "WF_CBA_RESETB", "WF_DIG_RESETB";
+					drive-strength = <4>;
+				};
+			};
+
+			gbe_led0_pins: gbe-led0-pins {
+				mux {
+					function = "led";
+					groups = "gbe_led0";
+				};
+			};
+
+			gbe_led1_pins: gbe-led1-pins {
+				mux {
+					function = "led";
+					groups = "gbe_led1";
+				};
+			};
+		};
+
+		topmisc: topmisc at 11d10000 {
+			compatible = "mediatek,mt7981-topmisc", "syscon";
+			reg = <0 0x11d10000 0 0x10000>;
+			#clock-cells = <1>;
+		};
+
+		usb_phy: usb-phy at 11e10000 {
+			compatible = "mediatek,mt7981",
+				     "mediatek,generic-tphy-v2";
+			ranges = <0 0 0x11e10000 0x1700>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			status = "disabled";
+
+			u2port0: usb-phy at 0 {
+				reg = <0x0 0x700>;
+				clocks = <&topckgen CLK_TOP_USB_FRMCNT_SEL>;
+				clock-names = "ref";
+				#phy-cells = <1>;
+			};
+
+			u3port0: usb-phy at 700 {
+				reg = <0x700 0x900>;
+				clocks = <&topckgen CLK_TOP_USB3_PHY_SEL>;
+				clock-names = "ref";
+				#phy-cells = <1>;
+				mediatek,syscon-type = <&topmisc 0x218 0>;
+				status = "okay";
+			};
+		};
+
+		efuse: efuse at 11f20000 {
+			compatible = "mediatek,mt7981-efuse",
+				     "mediatek,efuse";
+			reg = <0 0x11f20000 0 0x1000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			status = "okay";
+
+			thermal_calibration: thermal-calib at 274 {
+				reg = <0x274 0xc>;
+			};
+
+			phy_calibration: phy-calib at 8dc {
+				reg = <0x8dc 0x10>;
+			};
+
+			comb_rx_imp_p0: usb3-rx-imp at 8c8 {
+				reg = <0x8c8 1>;
+				bits = <0 5>;
+			};
+
+			comb_tx_imp_p0: usb3-tx-imp at 8c8 {
+				reg = <0x8c8 2>;
+				bits = <5 5>;
+			};
+
+			comb_intr_p0: usb3-intr at 8c9 {
+				reg = <0x8c9 1>;
+				bits = <2 6>;
+			};
+		};
+
+		ethsys: clock-controller at 15000000 {
+			compatible = "mediatek,mt7981-ethsys",
+				     "syscon";
+			reg = <0 0x15000000 0 0x1000>;
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+		};
+
+		wed: wed at 15010000 {
+			compatible = "mediatek,mt7981-wed",
+				     "mediatek,mt7986-wed",
+				     "syscon";
+			reg = <0 0x15010000 0 0x1000>;
+			interrupt-parent = <&gic>;
+			interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
+			memory-region = <&wo_emi0>, <&wo_data>;
+			memory-region-names = "wo-emi", "wo-data";
+			mediatek,wo-ccif = <&wo_ccif0>;
+			mediatek,wo-ilm = <&wo_ilm0>;
+			mediatek,wo-dlm = <&wo_dlm0>;
+			mediatek,wo-cpuboot = <&wo_cpuboot>;
+		};
+
+		eth: ethernet at 15100000 {
+			compatible = "mediatek,mt7981-eth";
+			reg = <0 0x15100000 0 0x80000>;
+			interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
+					<GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
+					<GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
+					<GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ethsys CLK_ETH_FE_EN>,
+				<&ethsys CLK_ETH_GP2_EN>,
+				<&ethsys CLK_ETH_GP1_EN>,
+				<&ethsys CLK_ETH_WOCPU0_EN>,
+				<&sgmiisys0 CLK_SGM0_TX_EN>,
+				<&sgmiisys0 CLK_SGM0_RX_EN>,
+				<&sgmiisys0 CLK_SGM0_CK0_EN>,
+				<&sgmiisys0 CLK_SGM0_CDR_CK0_EN>,
+				<&sgmiisys1 CLK_SGM1_TX_EN>,
+				<&sgmiisys1 CLK_SGM1_RX_EN>,
+				<&sgmiisys1 CLK_SGM1_CK1_EN>,
+				<&sgmiisys1 CLK_SGM1_CDR_CK1_EN>,
+				<&topckgen CLK_TOP_SGM_REG>,
+				<&topckgen CLK_TOP_NETSYS_SEL>,
+				<&topckgen CLK_TOP_NETSYS_500M_SEL>;
+			clock-names = "fe", "gp2", "gp1", "wocpu0",
+						"sgmii_tx250m", "sgmii_rx250m",
+						"sgmii_cdr_ref", "sgmii_cdr_fb",
+						"sgmii2_tx250m", "sgmii2_rx250m",
+						"sgmii2_cdr_ref", "sgmii2_cdr_fb",
+						"sgmii_ck", "netsys0", "netsys1";
+			assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
+					  <&topckgen CLK_TOP_SGM_325M_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_CB_NET2_800M>,
+						 <&topckgen CLK_TOP_CB_SGM_325M>;
+			mediatek,ethsys = <&ethsys>;
+			mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
+			mediatek,infracfg = <&topmisc>;
+			mediatek,wed = <&wed>;
+			#reset-cells = <1>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+
+			mdio_bus: mdio-bus {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				int_gbe_phy: ethernet-phy at 0 {
+					compatible = "ethernet-phy-ieee802.3-c22";
+					reg = <0>;
+					phy-mode = "gmii";
+					phy-is-integrated;
+					nvmem-cells = <&phy_calibration>;
+					nvmem-cell-names = "phy-cal-data";
+
+					leds {
+						#address-cells = <1>;
+						#size-cells = <0>;
+
+						int_gbe_phy_led0: int-gbe-phy-led0 at 0 {
+							reg = <0>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+
+						int_gbe_phy_led1: int-gbe-phy-led1 at 1 {
+							reg = <1>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+					};
+				};
+			};
+		};
+
+		wdma: wdma at 15104800 {
+			compatible = "mediatek,wed-wdma";
+			reg = <0 0x15104800 0 0x400>,
+			      <0 0x15104c00 0 0x400>;
+		};
+
+		wo_cpuboot: syscon at 15194000 {
+			compatible = "mediatek,mt7986-wo-cpuboot", "syscon";
+			reg = <0 0x15194000 0 0x1000>;
+		};
+
+		ap2woccif: ap2woccif at 151a5000 {
+			compatible = "mediatek,ap2woccif";
+			reg = <0 0x151a5000 0 0x1000>,
+			      <0 0x151ad000 0 0x1000>;
+			interrupt-parent = <&gic>;
+			interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
+		};
+
+		wo_ccif0: syscon at 151a5000 {
+			compatible = "mediatek,mt7986-wo-ccif", "syscon";
+			reg = <0 0x151a5000 0 0x1000>;
+			interrupt-parent = <&gic>;
+			interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>;
+		};
+
+		wo_ilm0: syscon at 151e0000 {
+			compatible = "mediatek,mt7986-wo-ilm", "syscon";
+			reg = <0 0x151e0000 0 0x8000>;
+		};
+
+		wo_dlm0: syscon at 151e8000 {
+			compatible = "mediatek,mt7986-wo-dlm", "syscon";
+			reg = <0 0x151e8000 0 0x2000>;
+		};
+
+		wifi: wifi at 18000000 {
+			compatible = "mediatek,mt7981-wmac";
+			reg = <0 0x18000000 0 0x1000000>,
+			      <0 0x10003000 0 0x1000>,
+			      <0 0x11d10000 0 0x1000>;
+			resets = <&watchdog MT7986_TOPRGU_CONSYS_SW_RST>;
+			reset-names = "consys";
+			pinctrl-0 = <&wifi_dbdc_pins>;
+			pinctrl-names = "dbdc";
+			clocks = <&topckgen CLK_TOP_NETSYS_MCU_SEL>,
+				 <&topckgen CLK_TOP_AP2CNN_HOST_SEL>;
+			clock-names = "mcu", "ap2conn";
+			interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
+			memory-region = <&wmcpu_emi>;
+			status = "disabled";
+		};
+	};
+
+	thermal-zones {
+		cpu_thermal: cpu-thermal {
+			polling-delay-passive = <1000>;
+			polling-delay = <1000>;
+			thermal-sensors = <&thermal 0>;
+
+			trips {
+				cpu_trip_active_highest: active-highest {
+					temperature = <70000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+
+				cpu_trip_active_high: active-high {
+					temperature = <60000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+
+				cpu_trip_active_med: active-med {
+					temperature = <50000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+
+				cpu_trip_active_low: active-low {
+					temperature = <45000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+
+				cpu_trip_active_lowest: active-lowest {
+					temperature = <40000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+			};
+
+			cooling-maps {
+				cpu-active-highest {
+					/* active: set fan to cooling level 7 */
+					cooling-device = <&fan 7 7>;
+					trip = <&cpu_trip_active_highest>;
+				};
+
+				cpu-active-high {
+					/* active: set fan to cooling level 5 */
+					cooling-device = <&fan 5 5>;
+					trip = <&cpu_trip_active_high>;
+				};
+
+				cpu-active-med {
+					/* active: set fan to cooling level 3 */
+					cooling-device = <&fan 3 3>;
+					trip = <&cpu_trip_active_med>;
+				};
+
+				cpu-active-low {
+					/* active: set fan to cooling level 2 */
+					cooling-device = <&fan 2 2>;
+					trip = <&cpu_trip_active_low>;
+				};
+
+				cpu-active-lowest {
+					/* active: set fan to cooling level 1 */
+					cooling-device = <&fan 1 1>;
+					trip = <&cpu_trip_active_lowest>;
+				};
+			};
+		};
+	};
+
+	timer {
+		compatible = "arm,armv8-timer";
+		interrupt-parent = <&gic>;
+		clock-frequency = <13000000>;
+		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
+
+	};
+
+	trng {
+		compatible = "mediatek,mt7981-rng";
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb-spim-nand.dts b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb-spim-nand.dts
new file mode 100644
index 0000000000..ce007099d2
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb-spim-nand.dts
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+
+#include "mt7986a-rfb.dtsi"
+
+/ {
+	compatible = "mediatek,mt7986a-rfb-snand";
+};
+
+&spi0 {
+	status = "okay";
+
+	spi_nand: spi_nand at 0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "spi-nand";
+		reg = <1>;
+		spi-max-frequency = <10000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			partition at 0 {
+				label = "BL2";
+				reg = <0x00000 0x0100000>;
+				read-only;
+			};
+			partition at 100000 {
+				label = "u-boot-env";
+				reg = <0x0100000 0x0080000>;
+			};
+			factory: partition at 180000 {
+				label = "Factory";
+				reg = <0x180000 0x0200000>;
+			};
+			partition at 380000 {
+				label = "FIP";
+				reg = <0x380000 0x0200000>;
+			};
+			partition at 580000 {
+				label = "ubi";
+				reg = <0x580000 0x4000000>;
+			};
+		};
+	};
+};
+
+&wifi {
+	mediatek,mtd-eeprom = <&factory 0>;
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb-spim-nor.dts b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb-spim-nor.dts
new file mode 100644
index 0000000000..ea148315f0
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb-spim-nor.dts
@@ -0,0 +1,51 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+
+#include "mt7986a-rfb.dtsi"
+
+/ {
+	compatible = "mediatek,mt7986a-rfb-snor";
+};
+
+&spi0 {
+	status = "okay";
+
+	spi_nor: spi_nor at 0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <52000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 00000 {
+				label = "BL2";
+				reg = <0x00000 0x0040000>;
+			};
+			partition at 40000 {
+				label = "u-boot-env";
+				reg = <0x40000 0x0010000>;
+			};
+			factory: partition at 50000 {
+				label = "Factory";
+				reg = <0x50000 0x00B0000>;
+			};
+			partition at 100000 {
+				label = "FIP";
+				reg = <0x100000 0x0080000>;
+			};
+			partition at 180000 {
+				label = "firmware";
+				reg = <0x180000 0xE00000>;
+			};
+		};
+	};
+};
+
+&wifi {
+	mediatek,mtd-eeprom = <&factory 0>;
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dtsi b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dtsi
new file mode 100644
index 0000000000..26d560bd4b
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dtsi
@@ -0,0 +1,389 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2021 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+#include "mt7986a.dtsi"
+
+/ {
+	model = "MediaTek MT7986a RFB";
+	compatible = "mediatek,mt7986a-rfb";
+
+	aliases {
+		serial0 = &uart0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	memory {
+		reg = <0 0x40000000 0 0x40000000>;
+	};
+
+	reg_1p8v: regulator-1p8v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-1.8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_3p3v: regulator-3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_5v: regulator-5v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+};
+
+&eth {
+	status = "okay";
+
+	gmac0: mac at 0 {
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+
+		fixed-link {
+			speed = <2500>;
+			full-duplex;
+			pause;
+		};
+	};
+
+	gmac1: mac at 1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "2500base-x";
+	};
+
+	mdio: mdio-bus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+	};
+};
+
+&wifi {
+	status = "okay";
+	pinctrl-names = "default", "dbdc";
+	pinctrl-0 = <&wf_2g_5g_pins>;
+	pinctrl-1 = <&wf_dbdc_pins>;
+};
+
+&mdio {
+	phy5: phy at 5 {
+		compatible = "ethernet-phy-id67c9.de0a";
+		reg = <5>;
+
+		reset-gpios = <&pio 6 1>;
+		reset-deassert-us = <20000>;
+	};
+
+	phy6: phy at 6 {
+		compatible = "ethernet-phy-id67c9.de0a";
+		reg = <6>;
+	};
+
+	switch: switch at 1f {
+		compatible = "mediatek,mt7531";
+		reg = <31>;
+		reset-gpios = <&pio 5 0>;
+	};
+};
+
+&crypto {
+	status = "okay";
+};
+
+&mmc0 {
+	pinctrl-names = "default", "state_uhs";
+	pinctrl-0 = <&mmc0_pins_default>;
+	pinctrl-1 = <&mmc0_pins_uhs>;
+	bus-width = <8>;
+	max-frequency = <200000000>;
+	cap-mmc-highspeed;
+	mmc-hs200-1_8v;
+	mmc-hs400-1_8v;
+	hs400-ds-delay = <0x14014>;
+	vmmc-supply = <&reg_3p3v>;
+	vqmmc-supply = <&reg_1p8v>;
+	non-removable;
+	no-sd;
+	no-sdio;
+	status = "okay";
+};
+
+&pcie {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie_pins>;
+	status = "okay";
+};
+
+&pcie_phy {
+	status = "okay";
+};
+
+&pio {
+	mmc0_pins_default: mmc0-pins {
+		mux {
+			function = "emmc";
+			groups = "emmc_51";
+		};
+		conf-cmd-dat {
+			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
+			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
+			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
+			input-enable;
+			drive-strength = <4>;
+			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
+		};
+		conf-clk {
+			pins = "EMMC_CK";
+			drive-strength = <6>;
+			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
+		};
+		conf-ds {
+			pins = "EMMC_DSL";
+			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
+		};
+		conf-rst {
+			pins = "EMMC_RSTB";
+			drive-strength = <4>;
+			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
+		};
+	};
+
+	mmc0_pins_uhs: mmc0-uhs-pins {
+		mux {
+			function = "emmc";
+			groups = "emmc_51";
+		};
+		conf-cmd-dat {
+			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
+			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
+			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
+			input-enable;
+			drive-strength = <4>;
+			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
+		};
+		conf-clk {
+			pins = "EMMC_CK";
+			drive-strength = <6>;
+			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
+		};
+		conf-ds {
+			pins = "EMMC_DSL";
+			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
+		};
+		conf-rst {
+			pins = "EMMC_RSTB";
+			drive-strength = <4>;
+			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
+		};
+	};
+
+	pcie_pins: pcie-pins {
+		mux {
+			function = "pcie";
+			groups = "pcie_clk", "pcie_wake", "pcie_pereset";
+		};
+	};
+
+	spic_pins_g2: spic-pins-29-to-32 {
+		mux {
+			function = "spi";
+			groups = "spi1_2";
+		};
+	};
+
+	spi_flash_pins: spi-flash-pins-33-to-38 {
+		mux {
+			function = "spi";
+			groups = "spi0", "spi0_wp_hold";
+		};
+		conf-pu {
+			pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
+			drive-strength = <8>;
+			mediatek,pull-up-adv = <0>;	/* bias-disable */
+		};
+		conf-pd {
+			pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
+			drive-strength = <8>;
+			mediatek,pull-down-adv = <0>;	/* bias-disable */
+		};
+	};
+
+	uart1_pins: uart1-pins {
+		mux {
+			function = "uart";
+			groups = "uart1";
+		};
+	};
+
+	uart2_pins: uart2-pins {
+		mux {
+			function = "uart";
+			groups = "uart2";
+		};
+	};
+
+	wf_2g_5g_pins: wf_2g_5g-pins {
+		mux {
+			function = "wifi";
+			groups = "wf_2g", "wf_5g";
+		};
+		conf {
+			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
+			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
+			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
+			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
+			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
+			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
+			       "WF1_TOP_CLK", "WF1_TOP_DATA";
+			drive-strength = <4>;
+		};
+	};
+
+	wf_dbdc_pins: wf_dbdc-pins {
+		mux {
+			function = "wifi";
+			groups = "wf_dbdc";
+		};
+		conf {
+			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
+			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
+			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
+			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
+			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
+			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
+			       "WF1_TOP_CLK", "WF1_TOP_DATA";
+			drive-strength = <4>;
+		};
+	};
+};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi_flash_pins>;
+	cs-gpios = <0>, <0>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+	status = "disabled";
+};
+
+&spi1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spic_pins_g2>;
+	status = "okay";
+
+	proslic_spi: proslic_spi at 0 {
+		compatible = "silabs,proslic_spi";
+		reg = <0>;
+		spi-max-frequency = <10000000>;
+		spi-cpha = <1>;
+		spi-cpol = <1>;
+		channel_count = <1>;
+		debug_level = <4>;       /* 1 = TRC, 2 = DBG, 4 = ERR */
+		reset_gpio = <&pio 7 0>;
+		ig,enable-spi = <1>;     /* 1: Enable, 0: Disable */
+	};
+};
+
+&gmac1 {
+	phy-mode = "2500base-x";
+	phy-connection-type = "2500base-x";
+	phy-handle = <&phy6>;
+};
+
+&switch {
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		port at 0 {
+			reg = <0>;
+			label = "lan1";
+		};
+
+		port at 1 {
+			reg = <1>;
+			label = "lan2";
+		};
+
+		port at 2 {
+			reg = <2>;
+			label = "lan3";
+		};
+
+		port at 3 {
+			reg = <3>;
+			label = "lan4";
+		};
+
+		port at 4 {
+			reg = <4>;
+			label = "wan";
+		};
+
+		port at 5 {
+			reg = <5>;
+			label = "lan6";
+
+			phy-mode = "2500base-x";
+			phy-handle = <&phy5>;
+		};
+
+		port at 6 {
+			reg = <6>;
+			ethernet = <&gmac0>;
+			phy-mode = "2500base-x";
+
+			fixed-link {
+				speed = <2500>;
+				full-duplex;
+				pause;
+			};
+		};
+	};
+};
+
+&ssusb {
+	vusb33-supply = <&reg_3p3v>;
+	vbus-supply = <&reg_5v>;
+	status = "okay";
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_pins>;
+	status = "okay";
+};
+
+&uart2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart2_pins>;
+	status = "okay";
+};
+
+&usb_phy {
+	status = "okay";
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-emmc.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-emmc.dtso
new file mode 100644
index 0000000000..4945185d69
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-emmc.dtso
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2021 MediaTek Inc.
+ * Author: Frank Wunderlich <frank-w at public-files.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "bananapi,bpi-r4", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target-path = "/soc/mmc at 11230000";
+		__overlay__ {
+			pinctrl-names = "default", "state_uhs";
+			pinctrl-0 = <&mmc0_pins_emmc_51>;
+			pinctrl-1 = <&mmc0_pins_emmc_51>;
+			bus-width = <8>;
+			max-frequency = <200000000>;
+			cap-mmc-highspeed;
+			mmc-hs200-1_8v;
+			mmc-hs400-1_8v;
+			hs400-ds-delay = <0x12814>;
+			vqmmc-supply = <&reg_1p8v>;
+			vmmc-supply = <&reg_3p3v>;
+			non-removable;
+			no-sd;
+			no-sdio;
+			status = "okay";
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			card at 0 {
+				compatible = "mmc-card";
+				reg = <0>;
+
+				block {
+					compatible = "block-device";
+					partitions {
+						block-partition-env {
+							partname = "ubootenv";
+							nvmem-layout {
+								compatible = "u-boot,env-layout";
+							};
+						};
+						emmc_rootfs: block-partition-production {
+							partname = "production";
+						};
+					};
+				};
+			};
+		};
+	};
+
+	fragment at 2 {
+		target-path = "/chosen";
+		__overlay__ {
+			rootdisk-emmc = <&emmc_rootfs>;
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-rtc.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-rtc.dtso
new file mode 100644
index 0000000000..39910b8cfe
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-rtc.dtso
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2023
+ * Author: Daniel Golle <daniel at makrotopia.org>
+ */
+
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "bananapi,bpi-r4", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&pcf8563>;
+		__overlay__ {
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-sd.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-sd.dtso
new file mode 100644
index 0000000000..1f5e1491a4
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-sd.dtso
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2023 MediaTek Inc.
+ * Author: Frank Wunderlich <frank-w at public-files.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "bananapi,bpi-r4", "mediatek,mt7988a";
+
+	fragment at 1 {
+		target-path = "/soc/mmc at 11230000";
+		__overlay__ {
+			pinctrl-names = "default", "state_uhs";
+			pinctrl-0 = <&mmc0_pins_sdcard>;
+			pinctrl-1 = <&mmc0_pins_sdcard>;
+			cd-gpios = <&pio 12 GPIO_ACTIVE_LOW>;
+			bus-width = <4>;
+			max-frequency = <52000000>;
+			cap-sd-highspeed;
+			vmmc-supply = <&reg_3p3v>;
+			vqmmc-supply = <&reg_3p3v>;
+			no-mmc;
+			status = "okay";
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			card at 0 {
+				compatible = "mmc-card";
+				reg = <0>;
+
+				block {
+					compatible = "block-device";
+					partitions {
+						block-partition-env {
+							partname = "ubootenv";
+							nvmem-layout {
+								compatible = "u-boot,env-layout";
+							};
+						};
+						sd_rootfs: block-partition-production {
+							partname = "production";
+						};
+					};
+				};
+			};
+		};
+	};
+
+	fragment at 2 {
+		target-path = "/chosen";
+		__overlay__ {
+			rootdisk-sd = <&sd_rootfs>;
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-wifi-mt7996a.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-wifi-mt7996a.dtso
new file mode 100644
index 0000000000..8a029b149f
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-wifi-mt7996a.dtso
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "bananapi,bpi-r4", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target-path = "/";
+		__overlay__ {
+			wifi_12v: regulator-wifi-12v {
+				compatible = "regulator-fixed";
+				regulator-name = "wifi";
+				regulator-min-microvolt = <12000000>;
+				regulator-max-microvolt = <12000000>;
+				gpio = <&pio 4 GPIO_ACTIVE_HIGH>;
+				enable-active-high;
+				regulator-always-on;
+			};
+		};
+	};
+
+	fragment at 1 {
+		target = <&i2c_wifi>;
+		__overlay__ {
+			// 5G WIFI MAC Address EEPROM
+			wifi_eeprom at 51 {
+				compatible = "atmel,24c02";
+				reg = <0x51>;
+				address-bits = <8>;
+				page-size = <8>;
+				size = <256>;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_5g: macaddr at 0 {
+						reg = <0x0 0x6>;
+					};
+				};
+			};
+
+			// 6G WIFI MAC Address EEPROM
+			wifi_eeprom at 52 {
+				compatible = "atmel,24c02";
+				reg = <0x52>;
+				address-bits = <8>;
+				page-size = <8>;
+				size = <256>;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_6g: macaddr at 0 {
+						reg = <0x0 0x6>;
+					};
+				};
+			};
+		};
+	};
+
+	fragment at 2 {
+		target = <&pcie0>;
+		__overlay__ {
+			pcie at 0,0 {
+				reg = <0x0000 0 0 0 0>;
+
+				wifi at 0,0 {
+					compatible = "mediatek,mt76";
+					reg = <0x0000 0 0 0 0>;
+					nvmem-cell-names = "mac-address";
+					nvmem-cells = <&macaddr_5g>;
+				};
+			};
+		};
+	};
+
+	fragment at 3 {
+		target = <&pcie1>;
+		__overlay__ {
+			pcie at 0,0 {
+				reg = <0x0000 0 0 0 0>;
+
+				wifi at 0,0 {
+					compatible = "mediatek,mt76";
+					reg = <0x0000 0 0 0 0>;
+					nvmem-cell-names = "mac-address";
+					nvmem-cells = <&macaddr_6g>;
+				};
+			};
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
new file mode 100644
index 0000000000..416958428f
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
@@ -0,0 +1,407 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+#include "mt7988a.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/richtek,rt5190a-regulator.h>
+
+/ {
+	model = "Bananapi BPI-R4";
+	compatible = "bananapi,bpi-r4",
+		     "mediatek,mt7988";
+
+	aliases {
+		serial0 = &uart0;
+		led-boot = &led_green;
+		led-failsafe = &led_green;
+		led-running = &led_green;
+		led-upgrade = &led_green;
+	};
+
+	chosen {
+		stdout-path = &uart0;
+		bootargs = "console=ttyS0,115200n1 loglevel=8 pci=pcie_bus_perf ubi.block=0,fit root=/dev/fit0";
+		rootdisk-spim-nand = <&ubi_rootfs>;
+	};
+
+	memory {
+		reg = <0x00 0x40000000 0x00 0x10000000>;
+	};
+
+	/* SFP1 cage (WAN) */
+	sfp1: sfp1 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c_sfp1>;
+		los-gpios = <&pio 54 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpios = <&pio 82 GPIO_ACTIVE_LOW>;
+		tx-disable-gpios = <&pio 70 GPIO_ACTIVE_HIGH>;
+		tx-fault-gpios = <&pio 69 GPIO_ACTIVE_HIGH>;
+		rate-select0-gpios = <&pio 21 GPIO_ACTIVE_LOW>;
+		maximum-power-milliwatt = <3000>;
+	};
+
+	/* SFP2 cage (LAN) */
+	sfp2: sfp2 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c_sfp2>;
+		los-gpios = <&pio 2 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpios = <&pio 83 GPIO_ACTIVE_LOW>;
+		tx-disable-gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
+		tx-fault-gpios = <&pio 1 GPIO_ACTIVE_HIGH>;
+		rate-select0-gpios = <&pio 3 GPIO_ACTIVE_LOW>;
+		maximum-power-milliwatt = <3000>;
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		wps {
+			label = "WPS";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 14 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		led_green: led-green {
+			function = LED_FUNCTION_STATUS;
+			color = <LED_COLOR_ID_GREEN>;
+			gpios = <&pio 79 GPIO_ACTIVE_HIGH>;
+			default-state = "on";
+		};
+
+		led_blue: led-blue {
+			function = LED_FUNCTION_WPS;
+			color = <LED_COLOR_ID_BLUE>;
+			gpios = <&pio 63 GPIO_ACTIVE_HIGH>;
+			default-state = "off";
+		};
+	};
+};
+
+&eth {
+	status = "okay";
+};
+
+&gmac0 {
+	status = "okay";
+};
+
+&gmac1 {
+	sfp = <&sfp2>;
+	managed = "in-band-status";
+	phy-mode = "usxgmii";
+	status = "okay";
+};
+
+&gmac2 {
+	sfp = <&sfp1>;
+	managed = "in-band-status";
+	phy-mode = "usxgmii";
+	status = "okay";
+};
+
+&switch {
+	status = "okay";
+};
+
+&gsw_phy0 {
+	pinctrl-names = "gbe-led";
+	pinctrl-0 = <&gbe0_led0_pins>;
+};
+
+&gsw_port0 {
+	label = "wan";
+};
+
+&gsw_phy0_led0 {
+	status = "okay";
+	color = <LED_COLOR_ID_GREEN>;
+};
+
+&gsw_phy1 {
+	pinctrl-names = "gbe-led";
+	pinctrl-0 = <&gbe1_led0_pins>;
+};
+
+&gsw_phy1_led0 {
+	status = "okay";
+	color = <LED_COLOR_ID_GREEN>;
+};
+
+&gsw_phy2 {
+	pinctrl-names = "gbe-led";
+	pinctrl-0 = <&gbe2_led0_pins>;
+};
+
+&gsw_phy2_led0 {
+	status = "okay";
+	color = <LED_COLOR_ID_GREEN>;
+};
+
+&gsw_phy3 {
+	pinctrl-names = "gbe-led";
+	pinctrl-0 = <&gbe3_led0_pins>;
+};
+
+&gsw_phy3_led0 {
+	status = "okay";
+	color = <LED_COLOR_ID_GREEN>;
+};
+
+&cpu0 {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&cpu1 {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&cpu2 {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&cpu3 {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&cci {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_pins>;
+	status = "okay";
+
+	rt5190a_64: rt5190a at 64 {
+		compatible = "richtek,rt5190a";
+		reg = <0x64>;
+		vin2-supply = <&rt5190_buck1>;
+		vin3-supply = <&rt5190_buck1>;
+		vin4-supply = <&rt5190_buck1>;
+
+		regulators {
+			rt5190_buck1: buck1 {
+				regulator-name = "rt5190a-buck1";
+				regulator-min-microvolt = <5090000>;
+				regulator-max-microvolt = <5090000>;
+				regulator-allowed-modes =
+				<RT5190A_OPMODE_AUTO RT5190A_OPMODE_FPWM>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+			buck2 {
+				regulator-name = "vcore";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1400000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+			rt5190_buck3: buck3 {
+				regulator-name = "vproc";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1400000>;
+				regulator-boot-on;
+			};
+			buck4 {
+				regulator-name = "rt5190a-buck4";
+				regulator-min-microvolt = <850000>;
+				regulator-max-microvolt = <850000>;
+				regulator-allowed-modes =
+				<RT5190A_OPMODE_AUTO RT5190A_OPMODE_FPWM>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+			ldo {
+				regulator-name = "rt5190a-ldo";
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+		};
+	};
+};
+
+&i2c2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c2_1_pins>;
+	status = "okay";
+
+	pca9545: i2c-switch at 70 {
+		reg = <0x70>;
+		compatible = "nxp,pca9545";
+		reset-gpios = <&pio 5 GPIO_ACTIVE_LOW>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		i2c_rtc: i2c at 0 { //eeprom,rtc,ngff
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+
+			eeprom at 50 {
+				compatible = "atmel,24c02";
+				reg = <0x50>;
+				address-bits = <8>;
+				page-size = <8>;
+				size = <256>;
+			};
+
+			eeprom at 57 {
+				compatible = "atmel,24c02";
+				reg = <0x57>;
+				address-bits = <8>;
+				page-size = <8>;
+				size = <256>;
+			};
+
+			pcf8563: rtc at 51 {
+				compatible = "nxp,pcf8563";
+				reg = <0x51>;
+				status = "disabled";
+			};
+		};
+
+		i2c_sfp1: i2c at 1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+		};
+
+		i2c_sfp2: i2c at 2 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <2>;
+		};
+
+		i2c_wifi: i2c at 3 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <3>;
+		};
+	};
+};
+
+/* mPCIe SIM2 */
+&pcie0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie0_pins>;
+	status = "okay";
+};
+
+/* mPCIe SIM3 */
+&pcie1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie1_pins>;
+	status = "okay";
+};
+
+/* M.2 key-B SIM1 */
+&pcie2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie2_pins>;
+	status = "okay";
+};
+
+/* M.2 key-M SSD */
+&pcie3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie3_pins>;
+	status = "okay";
+};
+
+&ssusb1 {
+	status = "okay";
+};
+
+&tphy {
+	status = "okay";
+};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi0_flash_pins>;
+	status = "okay";
+
+	spi_nand: spi_nand at 0 {
+		compatible = "spi-nand";
+		reg = <0>;
+		spi-max-frequency = <52000000>;
+		spi-tx-buswidth = <4>;
+		spi-rx-buswidth = <4>;
+	};
+};
+
+&spi_nand {
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition at 0 {
+			label = "bl2";
+			reg = <0x0 0x200000>;
+			read-only;
+		};
+
+		partition at 200000 {
+			label = "ubi";
+			reg = <0x200000 0x7e00000>;
+			compatible = "linux,ubi";
+
+			volumes {
+				ubi-volume-ubootenv {
+					volname = "ubootenv";
+					nvmem-layout {
+						compatible = "u-boot,env-redundant-bool-layout";
+					};
+				};
+
+				ubi-volume-ubootenv2 {
+					volname = "ubootenv2";
+					nvmem-layout {
+						compatible = "u-boot,env-redundant-bool-layout";
+					};
+				};
+
+				ubi_rootfs: ubi-volume-fit {
+					volname = "fit";
+				};
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&uart1 {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_2_lite_pins>;
+};
+
+&uart2 {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart2_3_pins>;
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&xphy {
+	status = "okay";
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso
new file mode 100644
index 0000000000..3f8ac2ae38
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-emmc.dtso
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2021 MediaTek Inc.
+ * Author: Frank Wunderlich <frank-w at public-files.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&mmc0>;
+		__overlay__ {
+			pinctrl-names = "default", "state_uhs";
+			pinctrl-0 = <&mmc0_pins_emmc_51>;
+			pinctrl-1 = <&mmc0_pins_emmc_51>;
+			bus-width = <8>;
+			max-frequency = <200000000>;
+			cap-mmc-highspeed;
+			mmc-hs200-1_8v;
+			mmc-hs400-1_8v;
+			hs400-ds-delay = <0x12814>;
+			vqmmc-supply = <&reg_1p8v>;
+			vmmc-supply = <&reg_3p3v>;
+			non-removable;
+			no-sd;
+			no-sdio;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso
new file mode 100644
index 0000000000..d21a61ad19
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-aqr.dtso
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&mdio_bus>;
+		__overlay__ {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			/* external Aquantia AQR113C */
+			phy0: ethernet-phy at 0 {
+				reg = <0>;
+				compatible = "ethernet-phy-ieee802.3-c45";
+				reset-gpios = <&pio 72 GPIO_ACTIVE_LOW>;
+				reset-assert-us = <100000>;
+				reset-deassert-us = <221000>;
+			};
+		};
+	};
+
+	fragment at 1 {
+		target = <&gmac1>;
+		__overlay__ {
+			phy-mode = "usxgmii";
+			phy-connection-type = "usxgmii";
+			phy = <&phy0>;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso
new file mode 100644
index 0000000000..86ab7566dc
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-i2p5g-phy.dtso
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&gmac1>;
+		__overlay__ {
+			phy-mode = "internal";
+			phy-connection-type = "internal";
+			phy = <&int_2p5g_phy>;
+			status = "okay";
+		};
+	};
+
+	fragment at 1 {
+		target = <&int_2p5g_phy>;
+		__overlay__ {
+			pinctrl-names = "i2p5gbe-led";
+			pinctrl-0 = <&i2p5gbe_led0_pins>;
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso
new file mode 100644
index 0000000000..34a23bbd7e
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-mxl.dtso
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&mdio_bus>;
+		__overlay__ {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			/* external Maxlinear GPY211C */
+			phy13: ethernet-phy at 13 {
+				reg = <13>;
+				compatible = "ethernet-phy-ieee802.3-c45";
+				phy-mode = "2500base-x";
+			};
+		};
+	};
+
+	fragment at 1 {
+		target = <&gmac1>;
+		__overlay__ {
+			phy-mode = "2500base-x";
+			phy-connection-type = "2500base-x";
+			phy = <&phy13>;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso
new file mode 100644
index 0000000000..ba40a119cb
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth1-sfp.dtso
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&i2c2>;
+		__overlay__ {
+			pinctrl-names = "default";
+			pinctrl-0 = <&i2c2_0_pins>;
+			status = "okay";
+		};
+	};
+
+	fragment at 1 {
+		target-path = "/";
+		__overlay__ {
+			sfp_esp1: sfp at 1 {
+				compatible = "sff,sfp";
+				i2c-bus = <&i2c2>;
+				mod-def0-gpios = <&pio 82 GPIO_ACTIVE_LOW>;
+				los-gpios = <&pio 81 GPIO_ACTIVE_HIGH>;
+				tx-disable-gpios = <&pio 36 GPIO_ACTIVE_HIGH>;
+				maximum-power-milliwatt = <3000>;
+			};
+		};
+	};
+
+	fragment at 2 {
+		target = <&gmac1>;
+		__overlay__ {
+			phy-mode = "10gbase-r";
+			managed = "in-band-status";
+			sfp = <&sfp_esp1>;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso
new file mode 100644
index 0000000000..140391fc45
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-aqr.dtso
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&mdio_bus>;
+		__overlay__ {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			/* external Aquantia AQR113C */
+			phy8: ethernet-phy at 8 {
+				reg = <8>;
+				compatible = "ethernet-phy-ieee802.3-c45";
+				reset-gpios = <&pio 71 GPIO_ACTIVE_LOW>;
+				reset-assert-us = <100000>;
+				reset-deassert-us = <221000>;
+			};
+		};
+	};
+
+	fragment at 1 {
+		target = <&gmac2>;
+		__overlay__ {
+			phy-mode = "usxgmii";
+			phy-connection-type = "usxgmii";
+			phy = <&phy8>;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso
new file mode 100644
index 0000000000..19e0b2799f
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-mxl.dtso
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&mdio_bus>;
+		__overlay__ {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			/* external Maxlinear GPY211C */
+			phy5: ethernet-phy at 5 {
+				reg = <5>;
+				compatible = "ethernet-phy-ieee802.3-c45";
+				phy-mode = "2500base-x";
+			};
+		};
+	};
+
+	fragment at 1 {
+		target = <&gmac2>;
+		__overlay__ {
+			phy-mode = "2500base-x";
+			phy-connection-type = "2500base-x";
+			phy = <&phy5>;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso
new file mode 100644
index 0000000000..b9aabd2726
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-eth2-sfp.dtso
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&i2c1>;
+		__overlay__ {
+			pinctrl-names = "default";
+			pinctrl-0 = <&i2c1_sfp_pins>;
+			status = "okay";
+		};
+	};
+
+	fragment at 1 {
+		target-path = "/";
+		__overlay__ {
+			sfp_esp0: sfp at 0 {
+				compatible = "sff,sfp";
+				i2c-bus = <&i2c1>;
+				mod-def0-gpios = <&pio 35 GPIO_ACTIVE_LOW>;
+				los-gpios = <&pio 33 GPIO_ACTIVE_HIGH>;
+				tx-disable-gpios = <&pio 29 GPIO_ACTIVE_HIGH>;
+				maximum-power-milliwatt = <3000>;
+			};
+		};
+	};
+
+	fragment at 2 {
+		target = <&gmac2>;
+		__overlay__ {
+			phy-mode = "10gbase-r";
+			managed = "in-band-status";
+			sfp = <&sfp_esp0>;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso
new file mode 100644
index 0000000000..04472cc12d
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-sd.dtso
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2023 MediaTek Inc.
+ * Author: Frank Wunderlich <frank-w at public-files.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 1 {
+		target-path = <&mmc0>;
+		__overlay__ {
+			pinctrl-names = "default", "state_uhs";
+			pinctrl-0 = <&mmc0_pins_sdcard>;
+			pinctrl-1 = <&mmc0_pins_sdcard>;
+			cd-gpios = <&pio 69 GPIO_ACTIVE_LOW>;
+			bus-width = <4>;
+			max-frequency = <52000000>;
+			cap-sd-highspeed;
+			vmmc-supply = <&reg_3p3v>;
+			vqmmc-supply = <&reg_3p3v>;
+			no-mmc;
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso
new file mode 100644
index 0000000000..86b0042f64
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-snfi-nand.dtso
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&snand>;
+		__overlay__ {
+			status = "okay";
+
+			flash at 0 {
+				compatible = "spi-nand";
+				reg = <0>;
+				spi-max-frequency = <52000000>;
+				spi-tx-bus-width = <4>;
+				spi-rx-bus-width = <4>;
+				mediatek,nmbm;
+				mediatek,bmt-max-ratio = <1>;
+				mediatek,bmt-max-reserved-blocks = <64>;
+
+				partitions {
+					compatible = "fixed-partitions";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					partition at 0 {
+						label = "BL2";
+						reg = <0x00000 0x0100000>;
+						read-only;
+					};
+
+					partition at 100000 {
+						label = "u-boot-env";
+						reg = <0x0100000 0x0080000>;
+					};
+
+					partition at 180000 {
+						label = "Factory";
+						reg = <0x180000 0x0400000>;
+					};
+
+					partition at 580000 {
+						label = "FIP";
+						reg = <0x580000 0x0200000>;
+					};
+
+					partition at 780000 {
+						label = "ubi";
+						reg = <0x780000 0x7080000>;
+					};
+				};
+			};
+		};
+	};
+
+	fragment at 1 {
+		target = <&bch>;
+		__overlay__ {
+			status = "okay";
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso
new file mode 100644
index 0000000000..a9eca00d44
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nand.dtso
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&spi0>;
+		__overlay__ {
+			pinctrl-names = "default";
+			pinctrl-0 = <&spi0_flash_pins>;
+			status = "okay";
+
+			flash at 0 {
+				compatible = "spi-nand";
+				reg = <0>;
+				spi-max-frequency = <52000000>;
+				spi-tx-bus-width = <4>;
+				spi-rx-bus-width = <4>;
+				mediatek,nmbm;
+				mediatek,bmt-max-ratio = <1>;
+				mediatek,bmt-max-reserved-blocks = <64>;
+
+				partitions {
+					compatible = "fixed-partitions";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					partition at 0 {
+						label = "BL2";
+						reg = <0x00000 0x0100000>;
+						read-only;
+					};
+
+					partition at 100000 {
+						label = "u-boot-env";
+						reg = <0x0100000 0x0080000>;
+					};
+
+					partition at 180000 {
+						label = "Factory";
+						reg = <0x180000 0x0400000>;
+					};
+
+					partition at 580000 {
+						label = "FIP";
+						reg = <0x580000 0x0200000>;
+					};
+
+					partition at 780000 {
+						label = "ubi";
+						reg = <0x780000 0x7080000>;
+					};
+				};
+			};
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso
new file mode 100644
index 0000000000..33bd57b3fb
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb-spim-nor.dtso
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "mediatek,mt7988a-rfb", "mediatek,mt7988a";
+
+	fragment at 0 {
+		target = <&spi2>;
+		__overlay__ {
+			pinctrl-names = "default";
+			pinctrl-0 = <&spi2_flash_pins>;
+			status = "okay";
+
+			flash at 0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "jedec,spi-nor";
+				spi-cal-enable;
+				spi-cal-mode = "read-data";
+				spi-cal-datalen = <7>;
+				spi-cal-data = /bits/ 8 <
+					0x53 0x46 0x5F 0x42 0x4F 0x4F 0x54>; /* SF_BOOT */
+				spi-cal-addrlen = <1>;
+				spi-cal-addr = /bits/ 32 <0x0>;
+				reg = <0>;
+				spi-max-frequency = <52000000>;
+				spi-tx-bus-width = <4>;
+				spi-rx-bus-width = <4>;
+
+				partition at 00000 {
+					label = "BL2";
+					reg = <0x00000 0x0040000>;
+				};
+				partition at 40000 {
+					label = "u-boot-env";
+					reg = <0x40000 0x0010000>;
+				};
+				partition at 50000 {
+					label = "Factory";
+					reg = <0x50000 0x0200000>;
+				};
+				partition at 250000 {
+					label = "FIP";
+					reg = <0x250000 0x0080000>;
+				};
+				partition at 2D0000 {
+					label = "firmware";
+					reg = <0x2D0000 0x1D30000>;
+				};
+			};
+		};
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts
new file mode 100644
index 0000000000..11dbf98301
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-rfb.dts
@@ -0,0 +1,200 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2022 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+/dts-v1/;
+#include "mt7988a.dtsi"
+#include <dt-bindings/pinctrl/mt65xx.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/richtek,rt5190a-regulator.h>
+
+/ {
+	model = "MediaTek MT7988A Reference Board";
+	compatible = "mediatek,mt7988a-rfb",
+		     "mediatek,mt7988";
+
+	chosen {
+		bootargs = "console=ttyS0,115200n1 loglevel=8  \
+			    earlycon=uart8250,mmio32,0x11000000 \
+			    pci=pcie_bus_perf";
+	};
+
+	memory {
+		reg = <0 0x40000000 0 0x40000000>;
+	};
+};
+
+&eth {
+	pinctrl-0 = <&mdio0_pins>;
+	pinctrl-names = "default";
+};
+
+&gmac0 {
+	status = "okay";
+};
+
+&cpu0 {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&cpu1 {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&cpu2 {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&cpu3 {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&cci {
+	proc-supply = <&rt5190_buck3>;
+};
+
+&eth {
+	status = "okay";
+};
+
+&switch {
+	status = "okay";
+};
+
+&gsw_phy0 {
+	pinctrl-names = "gbe-led";
+	pinctrl-0 = <&gbe0_led0_pins>;
+};
+
+&gsw_phy0_led0 {
+	status = "okay";
+	color = <LED_COLOR_ID_GREEN>;
+};
+
+&gsw_phy1 {
+	pinctrl-names = "gbe-led";
+	pinctrl-0 = <&gbe1_led0_pins>;
+};
+
+&gsw_phy1_led0 {
+	status = "okay";
+	color = <LED_COLOR_ID_GREEN>;
+};
+
+&gsw_phy2 {
+	pinctrl-names = "gbe-led";
+	pinctrl-0 = <&gbe2_led0_pins>;
+};
+
+&gsw_phy2_led0 {
+	status = "okay";
+	color = <LED_COLOR_ID_GREEN>;
+};
+
+&gsw_phy3 {
+	pinctrl-names = "gbe-led";
+	pinctrl-0 = <&gbe3_led0_pins>;
+};
+
+&gsw_phy3_led0 {
+	status = "okay";
+	color = <LED_COLOR_ID_GREEN>;
+};
+
+&i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_pins>;
+	status = "okay";
+
+	rt5190a_64: rt5190a at 64 {
+		compatible = "richtek,rt5190a";
+		reg = <0x64>;
+		/*interrupts-extended = <&gpio26 0 IRQ_TYPE_LEVEL_LOW>;*/
+		vin2-supply = <&rt5190_buck1>;
+		vin3-supply = <&rt5190_buck1>;
+		vin4-supply = <&rt5190_buck1>;
+
+		regulators {
+			rt5190_buck1: buck1 {
+				regulator-name = "rt5190a-buck1";
+				regulator-min-microvolt = <5090000>;
+				regulator-max-microvolt = <5090000>;
+				regulator-allowed-modes =
+				<RT5190A_OPMODE_AUTO RT5190A_OPMODE_FPWM>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+			buck2 {
+				regulator-name = "vcore";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1400000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+			rt5190_buck3: buck3 {
+				regulator-name = "vproc";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1400000>;
+				regulator-boot-on;
+			};
+			buck4 {
+				regulator-name = "rt5190a-buck4";
+				regulator-min-microvolt = <850000>;
+				regulator-max-microvolt = <850000>;
+				regulator-allowed-modes =
+				<RT5190A_OPMODE_AUTO RT5190A_OPMODE_FPWM>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+			ldo {
+				regulator-name = "rt5190a-ldo";
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+		};
+	};
+};
+
+&pcie0 {
+	status = "okay";
+};
+
+&pcie1 {
+	status = "okay";
+};
+
+&pcie2 {
+	status = "disabled";
+};
+
+&pcie3 {
+	status = "okay";
+};
+
+&ssusb0 {
+	status = "okay";
+};
+
+&ssusb1 {
+	status = "okay";
+};
+
+&tphy {
+	status = "okay";
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&xphy {
+	status = "okay";
+};
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
new file mode 100644
index 0000000000..904339335f
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
@@ -0,0 +1,1569 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2023 MediaTek Inc.
+ * Author: Sam.Shih <sam.shih at mediatek.com>
+ */
+
+#include <dt-bindings/clock/mediatek,mt7988-clk.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/pinctrl/mt65xx.h>
+#include <dt-bindings/reset/mediatek,mt7988-resets.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/* TOPRGU resets */
+#define MT7988_TOPRGU_SGMII0_GRST		1
+#define MT7988_TOPRGU_SGMII1_GRST		2
+#define MT7988_TOPRGU_XFI0_GRST			12
+#define MT7988_TOPRGU_XFI1_GRST			13
+#define MT7988_TOPRGU_XFI_PEXTP0_GRST		14
+#define MT7988_TOPRGU_XFI_PEXTP1_GRST		15
+#define MT7988_TOPRGU_XFI_PLL_GRST		16
+
+/ {
+	compatible = "mediatek,mt7988";
+	interrupt-parent = <&gic>;
+	#address-cells = <2>;
+	#size-cells = <2>;
+
+	cci: cci {
+		compatible = "mediatek,mt7988-cci",
+			     "mediatek,mt8183-cci";
+		clocks = <&mcusys CLK_MCU_BUS_DIV_SEL>,
+			 <&topckgen CLK_TOP_XTAL>;
+		clock-names = "cci", "intermediate";
+		operating-points-v2 = <&cci_opp>;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu0: cpu at 0 {
+			compatible = "arm,cortex-a73";
+			reg = <0x0>;
+			device_type = "cpu";
+			enable-method = "psci";
+			clocks = <&mcusys CLK_MCU_ARM_DIV_SEL>,
+				 <&topckgen CLK_TOP_XTAL>;
+			clock-names = "cpu", "intermediate";
+			operating-points-v2 = <&cluster0_opp>;
+			mediatek,cci = <&cci>;
+		};
+
+		cpu1: cpu at 1 {
+			compatible = "arm,cortex-a73";
+			reg = <0x1>;
+			device_type = "cpu";
+			enable-method = "psci";
+			clocks = <&mcusys CLK_MCU_ARM_DIV_SEL>,
+				 <&topckgen CLK_TOP_XTAL>;
+			clock-names = "cpu", "intermediate";
+			operating-points-v2 = <&cluster0_opp>;
+			mediatek,cci = <&cci>;
+		};
+
+		cpu2: cpu at 2 {
+			compatible = "arm,cortex-a73";
+			reg = <0x2>;
+			device_type = "cpu";
+			enable-method = "psci";
+			clocks = <&mcusys CLK_MCU_ARM_DIV_SEL>,
+				 <&topckgen CLK_TOP_XTAL>;
+			clock-names = "cpu", "intermediate";
+			operating-points-v2 = <&cluster0_opp>;
+			mediatek,cci = <&cci>;
+		};
+
+		cpu3: cpu at 3 {
+			compatible = "arm,cortex-a73";
+			reg = <0x3>;
+			device_type = "cpu";
+			enable-method = "psci";
+			clocks = <&mcusys CLK_MCU_ARM_DIV_SEL>,
+				 <&topckgen CLK_TOP_XTAL>;
+			clock-names = "cpu", "intermediate";
+			operating-points-v2 = <&cluster0_opp>;
+			mediatek,cci = <&cci>;
+		};
+
+		cluster0_opp: opp_table0 {
+			compatible = "operating-points-v2";
+			opp-shared;
+
+			opp00 {
+				opp-hz = /bits/ 64 <800000000>;
+				opp-microvolt = <850000>;
+			};
+
+			opp01 {
+				opp-hz = /bits/ 64 <1100000000>;
+				opp-microvolt = <850000>;
+			};
+
+			opp02 {
+				opp-hz = /bits/ 64 <1500000000>;
+				opp-microvolt = <850000>;
+			};
+
+			opp03 {
+				opp-hz = /bits/ 64 <1800000000>;
+				opp-microvolt = <900000>;
+			};
+		};
+	};
+
+	cci_opp: opp_table_cci {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp00 {
+			opp-hz = /bits/ 64 <480000000>;
+			opp-microvolt = <850000>;
+		};
+
+		opp01 {
+			opp-hz = /bits/ 64 <660000000>;
+			opp-microvolt = <850000>;
+		};
+
+		opp02 {
+			opp-hz = /bits/ 64 <900000000>;
+			opp-microvolt = <850000>;
+		};
+
+		opp03 {
+			opp-hz = /bits/ 64 <1080000000>;
+			opp-microvolt = <900000>;
+		};
+	};
+
+	clk40m: oscillator at 0 {
+		compatible = "fixed-clock";
+		clock-frequency = <40000000>;
+		#clock-cells = <0>;
+		clock-output-names = "clkxtal";
+	};
+
+	fan: pwm-fan {
+		compatible = "pwm-fan";
+		/* cooling level (0, 1, 2) : (0% duty, 50% duty, 100% duty) */
+		cooling-levels = <0 128 255>;
+		#cooling-cells = <2>;
+		#thermal-sensor-cells = <1>;
+		status = "disabled";
+	};
+
+	pmu {
+		compatible = "arm,cortex-a73-pmu";
+		interrupt-parent = <&gic>;
+		interrupt = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+	};
+
+	psci {
+		compatible = "arm,psci-0.2";
+		method = "smc";
+	};
+
+	reg_1p8v: regulator-1p8v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-1.8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reg_3p3v: regulator-3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	reserved-memory {
+		ranges;
+		#address-cells = <2>;
+		#size-cells = <2>;
+
+		/* 320 KiB reserved for ARM Trusted Firmware (BL31 and BL32) */
+		secmon_reserved: secmon at 43000000 {
+			reg = <0 0x43000000 0 0x50000>;
+			no-map;
+		};
+	};
+
+	soc {
+		compatible = "simple-bus";
+		ranges;
+		#address-cells = <2>;
+		#size-cells = <2>;
+
+		gic: interrupt-controller at c000000 {
+			compatible = "arm,gic-v3";
+			reg = <0 0x0c000000 0 0x40000>,  /* GICD */
+			      <0 0x0c080000 0 0x200000>, /* GICR */
+			      <0 0x0c400000 0 0x2000>,   /* GICC */
+			      <0 0x0c410000 0 0x1000>,   /* GICH */
+			      <0 0x0c420000 0 0x2000>;   /* GICV */
+			interrupt-parent = <&gic>;
+			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <3>;
+		};
+
+		phyfw: phy-firmware at f000000 {
+			compatible = "mediatek,2p5gphy-fw";
+			reg = <0 0x0f100000 0 0x20000>,
+			      <0 0x0f0f0018 0 0x20>;
+		};
+
+		infracfg: infracfg at 10001000 {
+			compatible = "mediatek,mt7988-infracfg", "syscon";
+			reg = <0 0x10001000 0 0x1000>;
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+		};
+
+		topckgen: topckgen at 1001b000 {
+			compatible = "mediatek,mt7988-topckgen", "syscon";
+			reg = <0 0x1001b000 0 0x1000>;
+			#clock-cells = <1>;
+		};
+
+		watchdog: watchdog at 1001c000 {
+			compatible = "mediatek,mt7988-wdt",
+				     "mediatek,mt6589-wdt",
+				     "syscon";
+			reg = <0 0x1001c000 0 0x1000>;
+			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+			#reset-cells = <1>;
+		};
+
+		apmixedsys: apmixedsys at 1001e000 {
+			compatible = "mediatek,mt7988-apmixedsys";
+			reg = <0 0x1001e000 0 0x1000>;
+			#clock-cells = <1>;
+		};
+
+		pio: pinctrl at 1001f000 {
+			compatible = "mediatek,mt7988-pinctrl", "syscon";
+			reg = <0 0x1001f000 0 0x1000>,
+			      <0 0x11c10000 0 0x1000>,
+			      <0 0x11d00000 0 0x1000>,
+			      <0 0x11d20000 0 0x1000>,
+			      <0 0x11e00000 0 0x1000>,
+			      <0 0x11f00000 0 0x1000>,
+			      <0 0x1000b000 0 0x1000>;
+			reg-names = "gpio_base", "iocfg_tr_base",
+				    "iocfg_br_base", "iocfg_rb_base",
+				    "iocfg_lb_base", "iocfg_tl_base", "eint";
+			gpio-controller;
+			#gpio-cells = <2>;
+			gpio-ranges = <&pio 0 0 84>;
+			interrupt-controller;
+			interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-parent = <&gic>;
+			#interrupt-cells = <2>;
+
+			mdio0_pins: mdio0-pins {
+				mux {
+					function = "eth";
+					groups = "mdc_mdio0";
+				};
+
+				conf {
+					groups = "mdc_mdio0";
+					drive-strength = <MTK_DRIVE_8mA>;
+				};
+			};
+
+			i2c0_pins: i2c0-pins-g0 {
+				mux {
+					function = "i2c";
+					groups = "i2c0_1";
+				};
+			};
+
+			i2c1_pins: i2c1-pins-g0 {
+				mux {
+					function = "i2c";
+					groups = "i2c1_0";
+				};
+			};
+
+			i2c1_sfp_pins: i2c1-sfp-pins-g0 {
+				mux {
+					function = "i2c";
+					groups = "i2c1_sfp";
+				};
+			};
+
+			i2c2_pins: i2c2-pins {
+				mux {
+					function = "i2c";
+					groups = "i2c2";
+				};
+			};
+
+			i2c2_0_pins: i2c2-pins-g0 {
+				mux {
+					function = "i2c";
+					groups = "i2c2_0";
+				};
+			};
+
+			i2c2_1_pins: i2c2-pins-g1 {
+				mux {
+					function = "i2c";
+					groups = "i2c2_1";
+				};
+			};
+
+			gbe0_led0_pins: gbe0-led0-pins {
+				mux {
+					function = "led";
+					groups = "gbe0_led0";
+				};
+			};
+
+			gbe1_led0_pins: gbe1-led0-pins {
+				mux {
+					function = "led";
+					groups = "gbe1_led0";
+				};
+			};
+
+			gbe2_led0_pins: gbe2-led0-pins {
+				mux {
+					function = "led";
+					groups = "gbe2_led0";
+				};
+			};
+
+			gbe3_led0_pins: gbe3-led0-pins {
+				mux {
+					function = "led";
+					groups = "gbe3_led0";
+				};
+			};
+
+			gbe0_led1_pins: gbe0-led1-pins {
+				mux {
+					function = "led";
+					groups = "gbe0_led1";
+				};
+			};
+
+			gbe1_led1_pins: gbe1-led1-pins {
+				mux {
+					function = "led";
+					groups = "gbe1_led1";
+				};
+			};
+
+			gbe2_led1_pins: gbe2-led1-pins {
+				mux {
+					function = "led";
+					groups = "gbe2_led1";
+				};
+			};
+
+			gbe3_led1_pins: gbe3-led1-pins {
+				mux {
+					function = "led";
+					groups = "gbe3_led1";
+				};
+			};
+
+			i2p5gbe_led0_pins: 2p5gbe-led0-pins {
+				mux {
+					function = "led";
+					groups = "2p5gbe_led0";
+				};
+			};
+
+			i2p5gbe_led1_pins: 2p5gbe-led1-pins {
+				mux {
+					function = "led";
+					groups = "2p5gbe_led1";
+				};
+			};
+
+			mmc0_pins_emmc_45: mmc0-pins-emmc-45 {
+				mux {
+					function = "flash";
+					groups = "emmc_45";
+				};
+			};
+
+			mmc0_pins_emmc_51: mmc0-pins-emmc-51 {
+				mux {
+					function = "flash";
+					groups = "emmc_51";
+				};
+			};
+
+			mmc0_pins_sdcard: mmc0-pins-sdcard {
+				mux {
+					function = "flash";
+					groups = "sdcard";
+				};
+			};
+
+			uart0_pins: uart0-pins {
+				mux {
+					function = "uart";
+					groups =  "uart0";
+				};
+			};
+
+			uart1_0_pins: uart1-0-pins {
+				mux {
+					function = "uart";
+					groups =  "uart1_0";
+				};
+			};
+
+			uart1_1_pins: uart1-1-pins {
+				mux {
+					function = "uart";
+					groups =  "uart1_1";
+				};
+			};
+
+			uart1_2_pins: uart1-2-pins {
+				mux {
+					function = "uart";
+					groups =  "uart1_2";
+				};
+			};
+
+			uart1_2_lite_pins: uart1-2-lite-pins {
+				mux {
+					function = "uart";
+					groups =  "uart1_2_lite";
+				};
+			};
+
+			uart2_pins: uart2-pins {
+				mux {
+					function = "uart";
+					groups =  "uart2";
+				};
+			};
+
+			uart2_0_pins: uart2-0-pins {
+				mux {
+					function = "uart";
+					groups =  "uart2_0";
+				};
+			};
+
+			uart2_1_pins: uart2-1-pins {
+				mux {
+					function = "uart";
+					groups =  "uart2_1";
+				};
+			};
+
+			uart2_2_pins: uart2-2-pins {
+				mux {
+					function = "uart";
+					groups =  "uart2_2";
+				};
+			};
+
+			uart2_3_pins: uart2-3-pins {
+				mux {
+					function = "uart";
+					groups =  "uart2_3";
+				};
+			};
+
+			snfi_pins: snfi-pins {
+				mux {
+					function = "flash";
+					groups = "snfi";
+				};
+			};
+
+			spi0_pins: spi0-pins {
+				mux {
+					function = "spi";
+					groups = "spi0";
+				};
+			};
+
+			spi0_flash_pins: spi0-flash-pins {
+				mux {
+					function = "spi";
+					groups = "spi0", "spi0_wp_hold";
+				};
+			};
+
+			spi1_pins: spi1-pins {
+				mux {
+					function = "spi";
+					groups = "spi1";
+				};
+			};
+
+			spi2_pins: spi2-pins {
+				mux {
+					function = "spi";
+					groups = "spi2";
+				};
+			};
+
+			spi2_flash_pins: spi2-flash-pins {
+				mux {
+					function = "spi";
+					groups = "spi2", "spi2_wp_hold";
+				};
+			};
+
+			pcie0_pins: pcie0-pins {
+				mux {
+					function = "pcie";
+					groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0",
+						 "pcie_wake_n0_0";
+				};
+			};
+
+			pcie1_pins: pcie1-pins {
+				mux {
+					function = "pcie";
+					groups = "pcie_2l_1_pereset", "pcie_clk_req_n1",
+						 "pcie_wake_n1_0";
+				};
+			};
+
+			pcie2_pins: pcie2-pins {
+				mux {
+					function = "pcie";
+					groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0",
+						 "pcie_wake_n2_0";
+				};
+			};
+
+			pcie3_pins: pcie3-pins {
+				mux {
+					function = "pcie";
+					groups = "pcie_1l_1_pereset", "pcie_clk_req_n3",
+						 "pcie_wake_n3_0";
+				};
+			};
+		};
+
+		pwm: pwm at 10048000 {
+			compatible = "mediatek,mt7988-pwm";
+			reg = <0 0x10048000 0 0x1000>;
+			#pwm-cells = <2>;
+			clocks = <&infracfg CLK_INFRA_66M_PWM_BCK>,
+				 <&infracfg CLK_INFRA_66M_PWM_HCK>,
+				 <&infracfg CLK_INFRA_66M_PWM_CK1>,
+				 <&infracfg CLK_INFRA_66M_PWM_CK2>,
+				 <&infracfg CLK_INFRA_66M_PWM_CK3>,
+				 <&infracfg CLK_INFRA_66M_PWM_CK4>,
+				 <&infracfg CLK_INFRA_66M_PWM_CK5>,
+				 <&infracfg CLK_INFRA_66M_PWM_CK6>,
+				 <&infracfg CLK_INFRA_66M_PWM_CK7>,
+				 <&infracfg CLK_INFRA_66M_PWM_CK8>;
+			clock-names = "top", "main", "pwm1", "pwm2", "pwm3",
+				      "pwm4","pwm5","pwm6","pwm7","pwm8";
+			status = "disabled";
+		};
+
+		sgmiisys0: syscon at 10060000 {
+			compatible = "mediatek,mt7988-sgmiisys",
+				     "mediatek,mt7988-sgmiisys0",
+				     "syscon",
+				     "simple-mfd";
+			reg = <0 0x10060000 0 0x1000>;
+			resets = <&watchdog MT7988_TOPRGU_SGMII0_GRST>;
+			#clock-cells = <1>;
+
+			sgmiipcs0: pcs {
+				compatible = "mediatek,mt7988-sgmii";
+				clocks = <&topckgen CLK_TOP_SGM_0_SEL>,
+					 <&sgmiisys0 CLK_SGM0_TX_EN>,
+					 <&sgmiisys0 CLK_SGM0_RX_EN>;
+				clock-names = "sgmii_sel", "sgmii_tx", "sgmii_rx";
+			};
+		};
+
+		sgmiisys1: syscon at 10070000 {
+			compatible = "mediatek,mt7988-sgmiisys",
+				     "mediatek,mt7988-sgmiisys1",
+				     "syscon",
+				     "simple-mfd";
+			reg = <0 0x10070000 0 0x1000>;
+			resets = <&watchdog MT7988_TOPRGU_SGMII1_GRST>;
+			#clock-cells = <1>;
+
+			sgmiipcs1: pcs {
+				compatible = "mediatek,mt7988-sgmii";
+				clocks = <&topckgen CLK_TOP_SGM_1_SEL>,
+					 <&sgmiisys1 CLK_SGM1_TX_EN>,
+					 <&sgmiisys1 CLK_SGM1_RX_EN>;
+				clock-names = "sgmii_sel", "sgmii_tx", "sgmii_rx";
+			};
+		};
+
+		usxgmiisys0: pcs at 10080000 {
+			compatible = "mediatek,mt7988-usxgmiisys";
+			reg = <0 0x10080000 0 0x1000>;
+			resets = <&watchdog MT7988_TOPRGU_XFI0_GRST>;
+			clocks = <&topckgen CLK_TOP_USXGMII_SBUS_0_SEL>;
+		};
+
+		usxgmiisys1: pcs at 10081000 {
+			compatible = "mediatek,mt7988-usxgmiisys";
+			reg = <0 0x10081000 0 0x1000>;
+			resets = <&watchdog MT7988_TOPRGU_XFI1_GRST>;
+			clocks = <&topckgen CLK_TOP_USXGMII_SBUS_1_SEL>;
+		};
+
+		mcusys: mcusys at 100e0000 {
+			compatible = "mediatek,mt7988-mcusys", "syscon";
+			reg = <0 0x100e0000 0 0x1000>;
+			#clock-cells = <1>;
+		};
+
+		uart0: serial at 11000000 {
+			compatible = "mediatek,mt7986-uart",
+				     "mediatek,mt6577-uart";
+			reg = <0 0x11000000 0 0x100>;
+			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+			/*
+			 * 8250-mtk driver don't control "baud" clock since commit
+			 * e32a83c70cf9 (kernel v5.7), but both "baud" and "bus" clocks
+			 * still need to be passed to the driver to prevent probe fail
+			 */
+			clocks = <&topckgen CLK_TOP_UART_SEL>,
+				 <&infracfg CLK_INFRA_52M_UART0_CK>;
+			clock-names = "baud", "bus";
+			assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
+					  <&infracfg CLK_INFRA_MUX_UART0_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_XTAL>,
+						 <&topckgen CLK_TOP_UART_SEL>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&uart0_pins>;
+			status = "disabled";
+		};
+
+		uart1: serial at 11000100 {
+			compatible = "mediatek,mt7986-uart",
+				     "mediatek,mt6577-uart";
+			reg = <0 0x11000100 0 0x100>;
+			interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
+			/*
+			 * 8250-mtk driver don't control "baud" clock since commit
+			 * e32a83c70cf9 (kernel v5.7), but both "baud" and "bus" clocks
+			 * still need to be passed to the driver to prevent probe fail
+			 */
+			clocks = <&topckgen CLK_TOP_UART_SEL>,
+				 <&infracfg CLK_INFRA_52M_UART1_CK>;
+			clock-names = "baud", "bus";
+			assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
+					  <&infracfg CLK_INFRA_MUX_UART1_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_XTAL>,
+						 <&topckgen CLK_TOP_UART_SEL>;
+			status = "disabled";
+		};
+
+		uart2: serial at 11000200 {
+			compatible = "mediatek,mt7986-uart",
+				     "mediatek,mt6577-uart";
+			reg = <0 0x11000200 0 0x100>;
+			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+			/*
+			 * 8250-mtk driver don't control "baud" clock since commit
+			 * e32a83c70cf9 (kernel v5.7), but both "baud" and "bus" clocks
+			 * still need to be passed to the driver to prevent probe fail
+			 */
+			clocks = <&topckgen CLK_TOP_UART_SEL>,
+				 <&infracfg CLK_INFRA_52M_UART2_CK>;
+			clock-names = "baud", "bus";
+			assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
+					  <&infracfg CLK_INFRA_MUX_UART2_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_XTAL>,
+						 <&topckgen CLK_TOP_UART_SEL>;
+			status = "disabled";
+		};
+
+		snand: spi at 11001000 {
+			compatible = "mediatek,mt7986-snand";
+			reg = <0 0x11001000 0 0x1000>;
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_SPINFI>,
+				 <&infracfg CLK_INFRA_NFI>;
+			clock-names = "pad_clk", "nfi_clk";
+			assigned-clocks = <&topckgen CLK_TOP_SPINFI_SEL>,
+					  <&topckgen CLK_TOP_NFI1X_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_MPLL_D8>,
+						 <&topckgen CLK_TOP_MPLL_D8>;
+			nand-ecc-engine = <&bch>;
+			mediatek,quad-spi;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&snfi_pins>;
+			status = "disabled";
+		};
+
+		bch: ecc at 11002000 {
+			compatible = "mediatek,mt7686-ecc";
+			reg = <0 0x11002000 0 0x1000>;
+			interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&topckgen CLK_TOP_NFI1X_SEL>;
+			clock-names = "nfiecc_clk";
+			status = "disabled";
+		};
+
+		i2c0: i2c at 11003000 {
+			compatible = "mediatek,mt7988-i2c",
+				     "mediatek,mt7981-i2c";
+			reg = <0 0x11003000 0 0x1000>,
+			      <0 0x10217080 0 0x80>;
+			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+			clock-div = <1>;
+			clocks = <&infracfg CLK_INFRA_I2C_BCK>,
+				 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
+			clock-names = "main", "dma";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c1: i2c at 11004000 {
+			compatible = "mediatek,mt7988-i2c",
+				     "mediatek,mt7981-i2c";
+			reg = <0 0x11004000 0 0x1000>,
+			      <0 0x10217100 0 0x80>;
+			interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
+			clock-div = <1>;
+			clocks = <&infracfg CLK_INFRA_I2C_BCK>,
+				 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
+			clock-names = "main", "dma";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c2: i2c at 11005000 {
+			compatible = "mediatek,mt7988-i2c",
+				"mediatek,mt7981-i2c";
+			reg = <0 0x11005000 0 0x1000>,
+			      <0 0x10217180 0 0x80>;
+			interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
+			clock-div = <1>;
+			clocks = <&infracfg CLK_INFRA_I2C_BCK>,
+				 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
+			clock-names = "main", "dma";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi0: spi at 11007000 {
+			compatible = "mediatek,ipm-spi-quad", "mediatek,spi-ipm";
+			reg = <0 0x11007000 0 0x100>;
+			interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&topckgen CLK_TOP_MPLL_D2>,
+				 <&topckgen CLK_TOP_SPI_SEL>,
+				 <&infracfg CLK_INFRA_104M_SPI0>,
+				 <&infracfg CLK_INFRA_66M_SPI0_HCK>;
+			clock-names = "parent-clk", "sel-clk", "spi-clk",
+				      "spi-hclk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi1: spi at 11008000 {
+			compatible = "mediatek,ipm-spi-single", "mediatek,spi-ipm";
+			reg = <0 0x11008000 0 0x100>;
+			interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&topckgen CLK_TOP_MPLL_D2>,
+				 <&topckgen CLK_TOP_SPI_SEL>,
+				 <&infracfg CLK_INFRA_104M_SPI1>,
+				 <&infracfg CLK_INFRA_66M_SPI1_HCK>;
+			clock-names = "parent-clk", "sel-clk", "spi-clk",
+				      "spi-hclk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&spi1_pins>;
+			status = "disabled";
+		};
+
+		spi2: spi at 11009000 {
+			compatible = "mediatek,ipm-spi-quad", "mediatek,spi-ipm";
+			reg = <0 0x11009000 0 0x100>;
+			interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&topckgen CLK_TOP_MPLL_D2>,
+				 <&topckgen CLK_TOP_SPI_SEL>,
+				 <&infracfg CLK_INFRA_104M_SPI2_BCK>,
+				 <&infracfg CLK_INFRA_66M_SPI2_HCK>;
+			clock-names = "parent-clk", "sel-clk", "spi-clk",
+				      "spi-hclk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		lvts: lvts at 1100a000 {
+			compatible = "mediatek,mt7988-lvts-ap";
+			reg = <0 0x1100a000 0 0x1000>;
+			clocks = <&infracfg CLK_INFRA_26M_THERM_SYSTEM>;
+			clock-names = "lvts_clk";
+			interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+			resets = <&infracfg MT7988_INFRA_RST1_THERM_CTRL_SWRST>;
+			nvmem-cells = <&lvts_calibration>;
+			nvmem-cell-names = "lvts-calib-data-1";
+			#thermal-sensor-cells = <1>;
+		};
+
+		ssusb0: usb at 11190000 {
+			compatible = "mediatek,mt7988-xhci",
+				     "mediatek,mtk-xhci";
+			reg = <0 0x11190000 0 0x2e00>,
+			      <0 0x11193e00 0 0x0100>;
+			reg-names = "mac", "ippc";
+			interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
+			phys = <&xphyu2port0 PHY_TYPE_USB2>,
+			       <&xphyu3port0 PHY_TYPE_USB3>;
+			clocks = <&infracfg CLK_INFRA_USB_SYS>,
+				 <&infracfg CLK_INFRA_USB_XHCI>,
+				 <&infracfg CLK_INFRA_USB_REF>,
+				 <&infracfg CLK_INFRA_66M_USB_HCK>,
+				 <&infracfg CLK_INFRA_133M_USB_HCK>;
+			clock-names = "sys_ck",
+				      "xhci_ck",
+				      "ref_ck",
+				      "mcu_ck",
+				      "dma_ck";
+			#address-cells = <2>;
+			#size-cells = <2>;
+			mediatek,p0_speed_fixup;
+			status = "disabled";
+		};
+
+		ssusb1: usb at 11200000 {
+			compatible = "mediatek,mt7988-xhci",
+				     "mediatek,mtk-xhci";
+			reg = <0 0x11200000 0 0x2e00>,
+			      <0 0x11203e00 0 0x0100>;
+			reg-names = "mac", "ippc";
+			interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
+			phys = <&tphyu2port0 PHY_TYPE_USB2>,
+			       <&tphyu3port0 PHY_TYPE_USB3>;
+			clocks = <&infracfg CLK_INFRA_USB_SYS_CK_P1>,
+				 <&infracfg CLK_INFRA_USB_XHCI_CK_P1>,
+				 <&infracfg CLK_INFRA_USB_CK_P1>,
+				 <&infracfg CLK_INFRA_66M_USB_HCK_CK_P1>,
+				 <&infracfg CLK_INFRA_133M_USB_HCK_CK_P1>;
+			clock-names = "sys_ck",
+				      "xhci_ck",
+				      "ref_ck",
+				      "mcu_ck",
+				      "dma_ck";
+			#address-cells = <2>;
+			#size-cells = <2>;
+			status = "disabled";
+		};
+
+		afe: audio-controller at 11210000 {
+			compatible = "mediatek,mt79xx-audio";
+			reg = <0 0x11210000 0 0x9000>;
+			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_66M_AUD_SLV_BCK>,
+				 <&infracfg CLK_INFRA_AUD_26M>,
+				 <&infracfg CLK_INFRA_AUD_L>,
+				 <&infracfg CLK_INFRA_AUD_AUD>,
+				 <&infracfg CLK_INFRA_AUD_EG2>,
+				 <&topckgen CLK_TOP_AUD_SEL>,
+				 <&topckgen CLK_TOP_AUD_I2S_M>;
+			clock-names = "aud_bus_ck",
+				      "aud_26m_ck",
+				      "aud_l_ck",
+				      "aud_aud_ck",
+				      "aud_eg2_ck",
+				      "aud_sel",
+				      "aud_i2s_m";
+			assigned-clocks = <&topckgen CLK_TOP_AUD_SEL>,
+					  <&topckgen CLK_TOP_A1SYS_SEL>,
+					  <&topckgen CLK_TOP_AUD_L_SEL>,
+					  <&topckgen CLK_TOP_A_TUNER_SEL>;
+			assigned-clock-parents = <&apmixedsys CLK_APMIXED_APLL2>,
+						 <&topckgen CLK_TOP_APLL2_D4>,
+						 <&apmixedsys CLK_APMIXED_APLL2>,
+						 <&topckgen CLK_TOP_APLL2_D4>;
+			status = "disabled";
+		};
+
+		mmc0: mmc at 11230000 {
+			compatible = "mediatek,mt7986-mmc",
+				     "mediatek,mt7981-mmc";
+			reg = <0 0x11230000 0 0x1000>,
+			      <0 0x11D60000 0 0x1000>;
+			interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&infracfg CLK_INFRA_MSDC400>,
+				 <&infracfg CLK_INFRA_MSDC2_HCK>,
+				 <&infracfg CLK_INFRA_66M_MSDC_0_HCK>,
+				 <&infracfg CLK_INFRA_133M_MSDC_0_HCK>;
+			assigned-clocks = <&topckgen CLK_TOP_EMMC_250M_SEL>,
+					  <&topckgen CLK_TOP_EMMC_400M_SEL>;
+			assigned-clock-parents = <&topckgen CLK_TOP_NET1PLL_D5_D2>,
+						 <&apmixedsys CLK_APMIXED_MSDCPLL>;
+			clock-names = "source",
+				      "hclk",
+				      "axi_cg",
+				      "ahb_cg";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		pcie2: pcie at 11280000 {
+			compatible = "mediatek,mt7988-pcie",
+				     "mediatek,mt7986-pcie",
+				     "mediatek,mt8192-pcie";
+			reg = <0 0x11280000 0 0x2000>;
+			reg-names = "pcie-mac";
+			ranges = <0x81000000 0x00 0x20000000 0x00
+				  0x20000000 0x00 0x00200000>,
+				 <0x82000000 0x00 0x20200000 0x00
+				  0x20200000 0x00 0x07e00000>;
+			device_type = "pci";
+			linux,pci-domain = <3>;
+			interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+			bus-range = <0x00 0xff>;
+			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P2>,
+				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P2>,
+				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P2>,
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P2>;
+			clock-names = "pl_250m", "tl_26m", "peri_26m",
+				      "top_133m";
+			pinctrl-names = "default";
+			pinctrl-0 = <&pcie2_pins>;
+			phys = <&xphyu3port0 PHY_TYPE_PCIE>;
+			phy-names = "pcie-phy";
+			#interrupt-cells = <1>;
+			interrupt-map-mask = <0 0 0 0x7>;
+			interrupt-map = <0 0 0 1 &pcie_intc2 0>,
+					<0 0 0 2 &pcie_intc2 1>,
+					<0 0 0 3 &pcie_intc2 2>,
+					<0 0 0 4 &pcie_intc2 3>;
+			#address-cells = <3>;
+			#size-cells = <2>;
+			status = "disabled";
+
+			pcie_intc2: interrupt-controller {
+				#address-cells = <0>;
+				#interrupt-cells = <1>;
+				interrupt-controller;
+			};
+		};
+
+		pcie3: pcie at 11290000 {
+			compatible = "mediatek,mt7988-pcie",
+				     "mediatek,mt7986-pcie",
+				     "mediatek,mt8192-pcie";
+			reg = <0 0x11290000 0 0x2000>;
+			reg-names = "pcie-mac";
+			ranges = <0x81000000 0x00 0x28000000 0x00
+				  0x28000000 0x00 0x00200000>,
+				 <0x82000000 0x00 0x28200000 0x00
+				  0x28200000 0x00 0x07e00000>;
+			device_type = "pci";
+			linux,pci-domain = <2>;
+			interrupts = <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
+			bus-range = <0x00 0xff>;
+			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P3>,
+				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P3>,
+				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P3>,
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P3>;
+			clock-names = "pl_250m", "tl_26m", "peri_26m",
+				      "top_133m";
+			pinctrl-names = "default";
+			pinctrl-0 = <&pcie3_pins>;
+			#interrupt-cells = <1>;
+			interrupt-map-mask = <0 0 0 0x7>;
+			interrupt-map = <0 0 0 1 &pcie_intc3 0>,
+					<0 0 0 2 &pcie_intc3 1>,
+					<0 0 0 3 &pcie_intc3 2>,
+					<0 0 0 4 &pcie_intc3 3>;
+			#address-cells = <3>;
+			#size-cells = <2>;
+			status = "disabled";
+
+			pcie_intc3: interrupt-controller {
+				#address-cells = <0>;
+				#interrupt-cells = <1>;
+				interrupt-controller;
+			};
+		};
+
+		pcie0: pcie at 11300000 {
+			compatible = "mediatek,mt7988-pcie",
+				     "mediatek,mt7986-pcie",
+				     "mediatek,mt8192-pcie";
+			reg = <0 0x11300000 0 0x2000>;
+			reg-names = "pcie-mac";
+			ranges = <0x81000000 0x00 0x30000000 0x00
+				  0x30000000 0x00 0x00200000>,
+				 <0x82000000 0x00 0x30200000 0x00
+				  0x30200000 0x00 0x07e00000>;
+			device_type = "pci";
+			linux,pci-domain = <0>;
+			interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
+			bus-range = <0x00 0xff>;
+			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P0>,
+				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P0>,
+				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P0>,
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P0>;
+			clock-names = "pl_250m", "tl_26m", "peri_26m",
+				      "top_133m";
+			pinctrl-names = "default";
+			pinctrl-0 = <&pcie0_pins>;
+			#interrupt-cells = <1>;
+			interrupt-map-mask = <0 0 0 0x7>;
+			interrupt-map = <0 0 0 1 &pcie_intc0 0>,
+					<0 0 0 2 &pcie_intc0 1>,
+					<0 0 0 3 &pcie_intc0 2>,
+					<0 0 0 4 &pcie_intc0 3>;
+			#address-cells = <3>;
+			#size-cells = <2>;
+			status = "disabled";
+
+			pcie_intc0: interrupt-controller {
+				#address-cells = <0>;
+				#interrupt-cells = <1>;
+				interrupt-controller;
+			};
+		};
+
+		pcie1: pcie at 11310000 {
+			compatible = "mediatek,mt7988-pcie",
+				     "mediatek,mt7986-pcie",
+				     "mediatek,mt8192-pcie";
+			reg = <0 0x11310000 0 0x2000>;
+			reg-names = "pcie-mac";
+			ranges = <0x81000000 0x00 0x38000000 0x00
+				  0x38000000 0x00 0x00200000>,
+				 <0x82000000 0x00 0x38200000 0x00
+				  0x38200000 0x00 0x07e00000>;
+			device_type = "pci";
+			linux,pci-domain = <1>;
+			interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
+			bus-range = <0x00 0xff>;
+			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P1>,
+				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P1>,
+				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P1>,
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P1>;
+			clock-names = "pl_250m", "tl_26m", "peri_26m",
+				      "top_133m";
+			pinctrl-names = "default";
+			pinctrl-0 = <&pcie1_pins>;
+			#interrupt-cells = <1>;
+			interrupt-map-mask = <0 0 0 0x7>;
+			interrupt-map = <0 0 0 1 &pcie_intc1 0>,
+					<0 0 0 2 &pcie_intc1 1>,
+					<0 0 0 3 &pcie_intc1 2>,
+					<0 0 0 4 &pcie_intc1 3>;
+			#address-cells = <3>;
+			#size-cells = <2>;
+			status = "disabled";
+
+			pcie_intc1: interrupt-controller {
+				#address-cells = <0>;
+				#interrupt-cells = <1>;
+				interrupt-controller;
+			};
+		};
+
+		tphy: tphy at 11c50000 {
+			compatible = "mediatek,mt7988",
+				     "mediatek,generic-tphy-v2";
+			ranges;
+			#address-cells = <2>;
+			#size-cells = <2>;
+			status = "disabled";
+
+			tphyu2port0: usb-phy at 11c50000 {
+				reg = <0 0x11c50000 0 0x700>;
+				clocks = <&infracfg CLK_INFRA_USB_UTMI_CK_P1>;
+				clock-names = "ref";
+				#phy-cells = <1>;
+			};
+
+			tphyu3port0: usb-phy at 11c50700 {
+				reg = <0 0x11c50700 0 0x900>;
+				clocks = <&infracfg CLK_INFRA_USB_PIPE_CK_P1>;
+				clock-names = "ref";
+				#phy-cells = <1>;
+				mediatek,usb3-pll-ssc-delta;
+				mediatek,usb3-pll-ssc-delta1;
+			};
+		};
+
+		topmisc: topmisc at 11d10000 {
+			compatible = "mediatek,mt7988-topmisc", "syscon",
+				     "mediatek,mt7988-power-controller";
+			reg = <0 0x11d10000 0 0x10000>;
+			#clock-cells = <1>;
+			#power-domain-cells = <1>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+		xphy: xphy at 11e10000 {
+			compatible = "mediatek,mt7988",
+				     "mediatek,xsphy";
+			ranges;
+			#address-cells = <2>;
+			#size-cells = <2>;
+			status = "disabled";
+
+			xphyu2port0: usb-phy at 11e10000 {
+				reg = <0 0x11e10000 0 0x400>;
+				clocks = <&infracfg CLK_INFRA_USB_UTMI>;
+				clock-names = "ref";
+				#phy-cells = <1>;
+			};
+
+			xphyu3port0: usb-phy at 11e13000 {
+				reg = <0 0x11e13400 0 0x500>;
+				clocks = <&infracfg CLK_INFRA_USB_PIPE>;
+				clock-names = "ref";
+				#phy-cells = <1>;
+				mediatek,syscon-type = <&topmisc 0x218 0>;
+			};
+		};
+
+		xfi_tphy0: phy at 11f20000 {
+			compatible = "mediatek,mt7988-xfi-tphy";
+			reg = <0 0x11f20000 0 0x10000>;
+			resets = <&watchdog MT7988_TOPRGU_XFI_PEXTP0_GRST>;
+			clocks = <&xfi_pll CLK_XFIPLL_PLL_EN>, <&topckgen CLK_TOP_XFI_PHY_0_XTAL_SEL>;
+			clock-names = "xfipll", "topxtal";
+			mediatek,usxgmii-performance-errata;
+			#phy-cells = <0>;
+		};
+
+		xfi_tphy1: phy at 11f30000 {
+			compatible = "mediatek,mt7988-xfi-tphy";
+			reg = <0 0x11f30000 0 0x10000>;
+			resets = <&watchdog MT7988_TOPRGU_XFI_PEXTP1_GRST>;
+			clocks = <&xfi_pll CLK_XFIPLL_PLL_EN>, <&topckgen CLK_TOP_XFI_PHY_1_XTAL_SEL>;
+			clock-names = "xfipll", "topxtal";
+			#phy-cells = <0>;
+		};
+
+		xfi_pll: clock-controller at 11f40000 {
+			compatible = "mediatek,mt7988-xfi-pll";
+			reg = <0 0x11f40000 0 0x1000>;
+			resets = <&watchdog MT7988_TOPRGU_XFI_PLL_GRST>;
+			#clock-cells = <1>;
+		};
+
+		efuse: efuse at 11f50000 {
+			compatible = "mediatek,efuse";
+			reg = <0 0x11f50000 0 0x1000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			lvts_calibration: calib at 918 {
+				reg = <0x918 0x28>;
+			};
+
+			phy_calibration_p0: calib at 940 {
+				reg = <0x940 0x10>;
+			};
+
+			phy_calibration_p1: calib at 954 {
+				reg = <0x954 0x10>;
+			};
+
+			phy_calibration_p2: calib at 968 {
+				reg = <0x968 0x10>;
+			};
+
+			phy_calibration_p3: calib at 97c {
+				reg = <0x97c 0x10>;
+			};
+
+			cpufreq_calibration: calib at 278 {
+				reg = <0x278 0x1>;
+			};
+		};
+
+		ethsys: syscon at 15000000 {
+			compatible = "mediatek,mt7988-ethsys", "syscon";
+			reg = <0 0x15000000 0 0x1000>;
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+		};
+
+		switch: switch at 15020000 {
+			compatible = "mediatek,mt7988-switch";
+			reg = <0 0x15020000 0 0x8000>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			interrupt-parent = <&gic>;
+			interrupts = <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>;
+			resets = <&ethwarp MT7988_ETHWARP_RST_SWITCH>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				gsw_port0: port at 0 {
+					reg = <0>;
+					label = "lan0";
+					phy-mode = "internal";
+					phy-handle = <&gsw_phy0>;
+				};
+
+				gsw_port1: port at 1 {
+					reg = <1>;
+					label = "lan1";
+					phy-mode = "internal";
+					phy-handle = <&gsw_phy1>;
+				};
+
+				gsw_port2: port at 2 {
+					reg = <2>;
+					label = "lan2";
+					phy-mode = "internal";
+					phy-handle = <&gsw_phy2>;
+				};
+
+				gsw_port3: port at 3 {
+					reg = <3>;
+					label = "lan3";
+					phy-mode = "internal";
+					phy-handle = <&gsw_phy3>;
+				};
+
+				port at 6 {
+					reg = <6>;
+					ethernet = <&gmac0>;
+					phy-mode = "internal";
+
+					fixed-link {
+						speed = <10000>;
+						full-duplex;
+						pause;
+					};
+				};
+			};
+
+			mdio {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				mediatek,pio = <&pio>;
+
+				gsw_phy0: ethernet-phy at 0 {
+					compatible = "ethernet-phy-ieee802.3-c22";
+					reg = <0>;
+					phy-mode = "internal";
+					nvmem-cells = <&phy_calibration_p0>;
+					nvmem-cell-names = "phy-cal-data";
+
+					leds {
+						#address-cells = <1>;
+						#size-cells = <0>;
+
+						gsw_phy0_led0: gsw-phy0-led0 at 0 {
+							reg = <0>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+
+						gsw_phy0_led1: gsw-phy0-led1 at 1 {
+							reg = <1>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+					};
+				};
+
+				gsw_phy1: ethernet-phy at 1 {
+					compatible = "ethernet-phy-ieee802.3-c22";
+					reg = <1>;
+					phy-mode = "internal";
+					nvmem-cells = <&phy_calibration_p1>;
+					nvmem-cell-names = "phy-cal-data";
+
+					leds {
+						#address-cells = <1>;
+						#size-cells = <0>;
+
+						gsw_phy1_led0: gsw-phy1-led0 at 0 {
+							reg = <0>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+
+						gsw_phy1_led1: gsw-phy1-led1 at 1 {
+							reg = <1>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+					};
+				};
+
+				gsw_phy2: ethernet-phy at 2 {
+					compatible = "ethernet-phy-ieee802.3-c22";
+					reg = <2>;
+					phy-mode = "internal";
+					nvmem-cells = <&phy_calibration_p2>;
+					nvmem-cell-names = "phy-cal-data";
+
+					leds {
+						#address-cells = <1>;
+						#size-cells = <0>;
+
+						gsw_phy2_led0: gsw-phy2-led0 at 0 {
+							reg = <0>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+
+						gsw_phy2_led1: gsw-phy2-led1 at 1 {
+							reg = <1>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+					};
+				};
+
+				gsw_phy3: ethernet-phy at 3 {
+					compatible = "ethernet-phy-ieee802.3-c22";
+					reg = <3>;
+					phy-mode = "internal";
+					nvmem-cells = <&phy_calibration_p3>;
+					nvmem-cell-names = "phy-cal-data";
+
+					leds {
+						#address-cells = <1>;
+						#size-cells = <0>;
+
+						gsw_phy3_led0: gsw-phy3-led0 at 0 {
+							reg = <0>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+
+						gsw_phy3_led1: gsw-phy3-led1 at 1 {
+							reg = <1>;
+							function = LED_FUNCTION_LAN;
+							status = "disabled";
+						};
+					};
+				};
+			};
+		};
+
+		ethwarp: clock-controller at 15031000 {
+			compatible = "mediatek,mt7988-ethwarp";
+			reg = <0 0x15031000 0 0x1000>;
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+		};
+
+		eth: ethernet at 15100000 {
+			compatible = "mediatek,mt7988-eth";
+			reg = <0 0x15100000 0 0x80000>,
+			      <0 0x15400000 0 0x380000>;
+			interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ethsys CLK_ETHDMA_XGP1_EN>,
+				 <&ethsys CLK_ETHDMA_XGP2_EN>,
+				 <&ethsys CLK_ETHDMA_XGP3_EN>,
+				 <&ethsys CLK_ETHDMA_FE_EN>,
+				 <&ethsys CLK_ETHDMA_GP2_EN>,
+				 <&ethsys CLK_ETHDMA_GP1_EN>,
+				 <&ethsys CLK_ETHDMA_GP3_EN>,
+				 <&ethsys CLK_ETHDMA_ESW_EN>,
+				 <&ethsys CLK_ETHDMA_CRYPT0_EN>,
+				 <&ethwarp CLK_ETHWARP_WOCPU2_EN>,
+				 <&ethwarp CLK_ETHWARP_WOCPU1_EN>,
+				 <&ethwarp CLK_ETHWARP_WOCPU0_EN>,
+				 <&topckgen CLK_TOP_ETH_GMII_SEL>,
+				 <&topckgen CLK_TOP_ETH_REFCK_50M_SEL>,
+				 <&topckgen CLK_TOP_ETH_SYS_200M_SEL>,
+				 <&topckgen CLK_TOP_ETH_SYS_SEL>,
+				 <&topckgen CLK_TOP_ETH_XGMII_SEL>,
+				 <&topckgen CLK_TOP_ETH_MII_SEL>,
+				 <&topckgen CLK_TOP_NETSYS_SEL>,
+				 <&topckgen CLK_TOP_NETSYS_500M_SEL>,
+				 <&topckgen CLK_TOP_NETSYS_PAO_2X_SEL>,
+				 <&topckgen CLK_TOP_NETSYS_SYNC_250M_SEL>,
+				 <&topckgen CLK_TOP_NETSYS_PPEFB_250M_SEL>,
+				 <&topckgen CLK_TOP_NETSYS_WARP_SEL>;
+			clock-names = "xgp1", "xgp2", "xgp3", "fe", "gp2", "gp1",
+				      "gp3", "esw", "crypto",
+				      "ethwarp_wocpu2", "ethwarp_wocpu1",
+				      "ethwarp_wocpu0", "top_eth_gmii_sel",
+				      "top_eth_refck_50m_sel", "top_eth_sys_200m_sel",
+				      "top_eth_sys_sel", "top_eth_xgmii_sel",
+				      "top_eth_mii_sel", "top_netsys_sel",
+				      "top_netsys_500m_sel", "top_netsys_pao_2x_sel",
+				      "top_netsys_sync_250m_sel",
+				      "top_netsys_ppefb_250m_sel",
+				      "top_netsys_warp_sel";
+			assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
+					  <&topckgen CLK_TOP_NETSYS_GSW_SEL>,
+					  <&topckgen CLK_TOP_USXGMII_SBUS_0_SEL>,
+					  <&topckgen CLK_TOP_USXGMII_SBUS_1_SEL>,
+					  <&topckgen CLK_TOP_SGM_0_SEL>,
+					  <&topckgen CLK_TOP_SGM_1_SEL>;
+			assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
+						 <&topckgen CLK_TOP_NET1PLL_D4>,
+						 <&topckgen CLK_TOP_NET1PLL_D8_D4>,
+						 <&topckgen CLK_TOP_NET1PLL_D8_D4>,
+						 <&apmixedsys CLK_APMIXED_SGMPLL>,
+						 <&apmixedsys CLK_APMIXED_SGMPLL>;
+			mediatek,ethsys = <&ethsys>;
+			mediatek,infracfg = <&topmisc>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			gmac0: mac at 0 {
+				compatible = "mediatek,eth-mac";
+				reg = <0>;
+				phy-mode = "internal";
+				status = "disabled";
+
+				fixed-link {
+					speed = <10000>;
+					full-duplex;
+					pause;
+				};
+			};
+
+			gmac1: mac at 1 {
+				compatible = "mediatek,eth-mac";
+				reg = <1>;
+				status = "disabled";
+				pcs-handle = <&sgmiipcs1>, <&usxgmiisys1>;
+				phys = <&xfi_tphy1>;
+			};
+
+			gmac2: mac at 2 {
+				compatible = "mediatek,eth-mac";
+				reg = <2>;
+				status = "disabled";
+				pcs-handle = <&sgmiipcs0>, <&usxgmiisys0>;
+				phys = <&xfi_tphy0>;
+			};
+
+			mdio_bus: mdio-bus {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				/* internal 2.5G PHY */
+				int_2p5g_phy: ethernet-phy at 15 {
+					compatible = "ethernet-phy-ieee802.3-c45";
+					reg = <15>;
+					phy-mode = "internal";
+				};
+			};
+		};
+
+		crypto: crypto at 15600000 {
+			compatible = "inside-secure,safexcel-eip197b";
+			reg = <0 0x15600000 0 0x180000>;
+			interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "ring0", "ring1", "ring2", "ring3";
+			status = "okay";
+		};
+	};
+
+	thermal-zones {
+		cpu_thermal: cpu-thermal {
+			polling-delay-passive = <1000>;
+			polling-delay = <1000>;
+			thermal-sensors = <&lvts 0>;
+
+			trips {
+				cpu_trip_crit: crit {
+					temperature = <125000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+
+				cpu_trip_hot: hot {
+					temperature = <120000>;
+					hysteresis = <2000>;
+					type = "hot";
+				};
+
+				cpu_trip_active_high: active-high {
+					temperature = <115000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+
+				cpu_trip_active_med: active-med {
+					temperature = <85000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+
+				cpu_trip_active_low: active-low {
+					temperature = <40000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+			};
+
+			cooling-maps {
+				cpu-active-high {
+				/* active: set fan to cooling level 2 */
+					cooling-device = <&fan 3 3>;
+					trip = <&cpu_trip_active_high>;
+				};
+
+				cpu-active-low {
+				/* active: set fan to cooling level 1 */
+					cooling-device = <&fan 2 2>;
+					trip = <&cpu_trip_active_med>;
+				};
+
+				cpu-passive {
+				/* passive: set fan to cooling level 0 */
+					cooling-device = <&fan 1 1>;
+					trip = <&cpu_trip_active_low>;
+				};
+			};
+		};
+	};
+
+	timer {
+		compatible = "arm,armv8-timer";
+		interrupt-parent = <&gic>;
+		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
+	};
+};
diff --git a/target/linux/mediatek/files-6.6/drivers/net/phy/mediatek-2p5ge.c b/target/linux/mediatek/files-6.6/drivers/net/phy/mediatek-2p5ge.c
new file mode 100644
index 0000000000..e2e06d1eca
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/drivers/net/phy/mediatek-2p5ge.c
@@ -0,0 +1,316 @@
+// SPDX-License-Identifier: GPL-2.0+
+#include <linux/bitfield.h>
+#include <linux/firmware.h>
+#include <linux/module.h>
+#include <linux/nvmem-consumer.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/pinctrl/consumer.h>
+#include <linux/phy.h>
+#include <linux/pm_domain.h>
+#include <linux/pm_runtime.h>
+
+#define MT7988_2P5GE_PMB "mediatek/mt7988/i2p5ge-phy-pmb.bin"
+
+#define MD32_EN					BIT(0)
+#define PMEM_PRIORITY				BIT(8)
+#define DMEM_PRIORITY				BIT(16)
+
+#define BASE100T_STATUS_EXTEND			0x10
+#define BASE1000T_STATUS_EXTEND			0x11
+#define EXTEND_CTRL_AND_STATUS			0x16
+
+#define PHY_AUX_CTRL_STATUS			0x1d
+#define   PHY_AUX_DPX_MASK			GENMASK(5, 5)
+#define   PHY_AUX_SPEED_MASK			GENMASK(4, 2)
+
+/* Registers on MDIO_MMD_VEND1 */
+#define MTK_PHY_LINK_STATUS_MISC		0xa2
+#define   MTK_PHY_FDX_ENABLE			BIT(5)
+
+#define MTK_PHY_LPI_PCS_DSP_CTRL		0x121
+#define   MTK_PHY_LPI_SIG_EN_LO_THRESH100_MASK	GENMASK(12, 8)
+
+/* Registers on MDIO_MMD_VEND2 */
+#define MTK_PHY_LED0_ON_CTRL			0x24
+#define   MTK_PHY_LED0_ON_LINK1000		BIT(0)
+#define   MTK_PHY_LED0_ON_LINK100		BIT(1)
+#define   MTK_PHY_LED0_ON_LINK10		BIT(2)
+#define   MTK_PHY_LED0_ON_LINK2500		BIT(7)
+#define   MTK_PHY_LED0_POLARITY			BIT(14)
+
+#define MTK_PHY_LED1_ON_CTRL			0x26
+#define   MTK_PHY_LED1_ON_FDX			BIT(4)
+#define   MTK_PHY_LED1_ON_HDX			BIT(5)
+#define   MTK_PHY_LED1_POLARITY			BIT(14)
+
+#define MTK_EXT_PAGE_ACCESS			0x1f
+#define MTK_PHY_PAGE_STANDARD			0x0000
+#define MTK_PHY_PAGE_EXTENDED_52B5		0x52b5
+
+struct mtk_i2p5ge_phy_priv {
+	bool fw_loaded;
+};
+
+enum {
+	PHY_AUX_SPD_10 = 0,
+	PHY_AUX_SPD_100,
+	PHY_AUX_SPD_1000,
+	PHY_AUX_SPD_2500,
+};
+
+static int mtk_2p5ge_phy_read_page(struct phy_device *phydev)
+{
+	return __phy_read(phydev, MTK_EXT_PAGE_ACCESS);
+}
+
+static int mtk_2p5ge_phy_write_page(struct phy_device *phydev, int page)
+{
+	return __phy_write(phydev, MTK_EXT_PAGE_ACCESS, page);
+}
+
+static int mt7988_2p5ge_phy_probe(struct phy_device *phydev)
+{
+	struct mtk_i2p5ge_phy_priv *phy_priv;
+
+	phy_priv = devm_kzalloc(&phydev->mdio.dev,
+				sizeof(struct mtk_i2p5ge_phy_priv), GFP_KERNEL);
+	if (!phy_priv)
+		return -ENOMEM;
+
+	phydev->priv = phy_priv;
+
+	return 0;
+}
+
+static int mt7988_2p5ge_phy_config_init(struct phy_device *phydev)
+{
+	int ret, i;
+	const struct firmware *fw;
+	struct device *dev = &phydev->mdio.dev;
+	struct device_node *np;
+	void __iomem *pmb_addr;
+	void __iomem *md32_en_cfg_base;
+	struct mtk_i2p5ge_phy_priv *phy_priv = phydev->priv;
+	u16 reg;
+	struct pinctrl *pinctrl;
+
+	if (!phy_priv->fw_loaded) {
+		np = of_find_compatible_node(NULL, NULL, "mediatek,2p5gphy-fw");
+		if (!np)
+			return -ENOENT;
+		pmb_addr = of_iomap(np, 0);
+		if (!pmb_addr)
+			return -ENOMEM;
+		md32_en_cfg_base = of_iomap(np, 1);
+		if (!md32_en_cfg_base)
+			return -ENOMEM;
+
+		ret = request_firmware(&fw, MT7988_2P5GE_PMB, dev);
+		if (ret) {
+			dev_err(dev, "failed to load firmware: %s, ret: %d\n",
+				MT7988_2P5GE_PMB, ret);
+			return ret;
+		}
+
+		reg = readw(md32_en_cfg_base);
+		if (reg & MD32_EN) {
+			phy_set_bits(phydev, 0, BIT(15));
+			usleep_range(10000, 11000);
+		}
+		phy_set_bits(phydev, 0, BIT(11));
+
+		/* Write magic number to safely stall MCU */
+		phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x800e, 0x1100);
+		phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x800f, 0x00df);
+
+		for (i = 0; i < fw->size - 1; i += 4)
+			writel(*((uint32_t *)(fw->data + i)), pmb_addr + i);
+		release_firmware(fw);
+
+		writew(reg & ~MD32_EN, md32_en_cfg_base);
+		writew(reg | MD32_EN, md32_en_cfg_base);
+		phy_set_bits(phydev, 0, BIT(15));
+		dev_info(dev, "Firmware loading/trigger ok.\n");
+
+		phy_priv->fw_loaded = true;
+	}
+
+	/* Setup LED */
+	phy_set_bits_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED0_ON_CTRL,
+			 MTK_PHY_LED0_ON_LINK10 |
+			 MTK_PHY_LED0_ON_LINK100 |
+			 MTK_PHY_LED0_ON_LINK1000 |
+			 MTK_PHY_LED0_ON_LINK2500);
+	phy_set_bits_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED1_ON_CTRL,
+			 MTK_PHY_LED1_ON_FDX | MTK_PHY_LED1_ON_HDX);
+
+	pinctrl = devm_pinctrl_get_select(&phydev->mdio.dev, "i2p5gbe-led");
+	if (IS_ERR(pinctrl)) {
+		dev_err(&phydev->mdio.dev, "Fail to set LED pins!\n");
+		return PTR_ERR(pinctrl);
+	}
+
+	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_LPI_PCS_DSP_CTRL,
+		       MTK_PHY_LPI_SIG_EN_LO_THRESH100_MASK, 0);
+
+	/* Enable 16-bit next page exchange bit if 1000-BT isn't advertizing */
+	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
+	__phy_write(phydev, 0x11, 0xfbfa);
+	__phy_write(phydev, 0x12, 0xc3);
+	__phy_write(phydev, 0x10, 0x87f8);
+	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
+
+	return 0;
+}
+
+static int mt7988_2p5ge_phy_config_aneg(struct phy_device *phydev)
+{
+	bool changed = false;
+	u32 adv;
+	int ret;
+
+	if (phydev->autoneg == AUTONEG_DISABLE) {
+		/* Configure half duplex with genphy_setup_forced,
+		 * because genphy_c45_pma_setup_forced does not support.
+		 */
+		return phydev->duplex != DUPLEX_FULL
+			? genphy_setup_forced(phydev)
+			: genphy_c45_pma_setup_forced(phydev);
+	}
+
+	ret = genphy_c45_an_config_aneg(phydev);
+	if (ret < 0)
+		return ret;
+	if (ret > 0)
+		changed = true;
+
+	adv = linkmode_adv_to_mii_ctrl1000_t(phydev->advertising);
+	ret = phy_modify_changed(phydev, MII_CTRL1000,
+				 ADVERTISE_1000FULL | ADVERTISE_1000HALF,
+				 adv);
+	if (ret < 0)
+		return ret;
+	if (ret > 0)
+		changed = true;
+
+	return genphy_c45_check_and_restart_aneg(phydev, changed);
+}
+
+static int mt7988_2p5ge_phy_get_features(struct phy_device *phydev)
+{
+	int ret;
+
+	ret = genphy_read_abilities(phydev);
+	if (ret)
+		return ret;
+
+	/* We don't support HDX at MAC layer on mt7988.
+	 * So mask phy's HDX capabilities, too.
+	 */
+	linkmode_set_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT,
+			 phydev->supported);
+	linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
+			 phydev->supported);
+	linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+			 phydev->supported);
+	linkmode_set_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT,
+			 phydev->supported);
+	linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, phydev->supported);
+
+	return 0;
+}
+
+static int mt7988_2p5ge_phy_read_status(struct phy_device *phydev)
+{
+	int ret;
+
+	ret = genphy_update_link(phydev);
+	if (ret)
+		return ret;
+
+	phydev->speed = SPEED_UNKNOWN;
+	phydev->duplex = DUPLEX_UNKNOWN;
+	phydev->pause = 0;
+	phydev->asym_pause = 0;
+
+	if (phydev->autoneg == AUTONEG_ENABLE && phydev->autoneg_complete) {
+		ret = genphy_c45_read_lpa(phydev);
+		if (ret < 0)
+			return ret;
+
+		/* Read the link partner's 1G advertisement */
+		ret = phy_read(phydev, MII_STAT1000);
+		if (ret < 0)
+			return ret;
+		mii_stat1000_mod_linkmode_lpa_t(phydev->lp_advertising, ret);
+	} else if (phydev->autoneg == AUTONEG_DISABLE) {
+		linkmode_zero(phydev->lp_advertising);
+	}
+
+	ret = phy_read(phydev, PHY_AUX_CTRL_STATUS);
+	if (ret < 0)
+		return ret;
+
+	switch (FIELD_GET(PHY_AUX_SPEED_MASK, ret)) {
+	case PHY_AUX_SPD_10:
+		phydev->speed = SPEED_10;
+		break;
+	case PHY_AUX_SPD_100:
+		phydev->speed = SPEED_100;
+		break;
+	case PHY_AUX_SPD_1000:
+		phydev->speed = SPEED_1000;
+		break;
+	case PHY_AUX_SPD_2500:
+		phydev->speed = SPEED_2500;
+		break;
+	}
+
+	ret = phy_read_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_LINK_STATUS_MISC);
+	if (ret < 0)
+		return ret;
+
+	phydev->duplex = (ret & MTK_PHY_FDX_ENABLE) ? DUPLEX_FULL : DUPLEX_HALF;
+	/* FIXME: The current firmware always enables rate adaptation mode. */
+	phydev->rate_matching = RATE_MATCH_PAUSE;
+
+	return 0;
+}
+
+static int mt7988_2p5ge_phy_get_rate_matching(struct phy_device *phydev,
+					      phy_interface_t iface)
+{
+	return RATE_MATCH_PAUSE;
+}
+
+static struct phy_driver mtk_gephy_driver[] = {
+	{
+		PHY_ID_MATCH_MODEL(0x00339c11),
+		.name		= "MediaTek MT798x 2.5GbE PHY",
+		.probe		= mt7988_2p5ge_phy_probe,
+		.config_init	= mt7988_2p5ge_phy_config_init,
+		.config_aneg    = mt7988_2p5ge_phy_config_aneg,
+		.get_features	= mt7988_2p5ge_phy_get_features,
+		.read_status	= mt7988_2p5ge_phy_read_status,
+		.get_rate_matching	= mt7988_2p5ge_phy_get_rate_matching,
+		.suspend	= genphy_suspend,
+		.resume		= genphy_resume,
+		.read_page	= mtk_2p5ge_phy_read_page,
+		.write_page	= mtk_2p5ge_phy_write_page,
+	},
+};
+
+module_phy_driver(mtk_gephy_driver);
+
+static struct mdio_device_id __maybe_unused mtk_2p5ge_phy_tbl[] = {
+	{ PHY_ID_MATCH_VENDOR(0x00339c00) },
+	{ }
+};
+
+MODULE_DESCRIPTION("MediaTek 2.5Gb Ethernet PHY driver");
+MODULE_AUTHOR("SkyLake Huang <SkyLake.Huang at mediatek.com>");
+MODULE_LICENSE("GPL");
+
+MODULE_DEVICE_TABLE(mdio, mtk_2p5ge_phy_tbl);
+MODULE_FIRMWARE(MT7988_2P5GE_PMB);
diff --git a/target/linux/mediatek/files-6.6/drivers/pinctrl/mediatek/pinctrl-mt7988.c b/target/linux/mediatek/files-6.6/drivers/pinctrl/mediatek/pinctrl-mt7988.c
new file mode 100644
index 0000000000..9f92911245
--- /dev/null
+++ b/target/linux/mediatek/files-6.6/drivers/pinctrl/mediatek/pinctrl-mt7988.c
@@ -0,0 +1,1517 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * The MT7988 driver based on Linux generic pinctrl binding.
+ *
+ * Copyright (C) 2020 MediaTek Inc.
+ * Author: Sam Shih <sam.shih at mediatek.com>
+ */
+
+#include "pinctrl-moore.h"
+
+enum MT7988_PINCTRL_REG_PAGE {
+	GPIO_BASE,
+	IOCFG_TR_BASE,
+	IOCFG_BR_BASE,
+	IOCFG_RB_BASE,
+	IOCFG_LB_BASE,
+	IOCFG_TL_BASE,
+};
+
+#define MT7988_PIN(_number, _name) MTK_PIN(_number, _name, 0, _number, DRV_GRP4)
+
+#define PIN_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit,     \
+		       _x_bits)                                                \
+	PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit,     \
+		       _x_bits, 32, 0)
+
+#define PINS_FIELD_BASE(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit,    \
+			_x_bits)                                               \
+	PIN_FIELD_CALC(_s_pin, _e_pin, _i_base, _s_addr, _x_addrs, _s_bit,     \
+		       _x_bits, 32, 1)
+
+static const struct mtk_pin_field_calc mt7988_pin_mode_range[] = {
+	PIN_FIELD(0, 83, 0x300, 0x10, 0, 4),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_dir_range[] = {
+	PIN_FIELD(0, 83, 0x0, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_di_range[] = {
+	PIN_FIELD(0, 83, 0x200, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_do_range[] = {
+	PIN_FIELD(0, 83, 0x100, 0x10, 0, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_ies_range[] = {
+	PIN_FIELD_BASE(0, 0, 5, 0x30, 0x10, 13, 1),
+	PIN_FIELD_BASE(1, 1, 5, 0x30, 0x10, 14, 1),
+	PIN_FIELD_BASE(2, 2, 5, 0x30, 0x10, 11, 1),
+	PIN_FIELD_BASE(3, 3, 5, 0x30, 0x10, 12, 1),
+	PIN_FIELD_BASE(4, 4, 5, 0x30, 0x10, 0, 1),
+	PIN_FIELD_BASE(5, 5, 5, 0x30, 0x10, 9, 1),
+	PIN_FIELD_BASE(6, 6, 5, 0x30, 0x10, 10, 1),
+
+	PIN_FIELD_BASE(7, 7, 4, 0x30, 0x10, 8, 1),
+	PIN_FIELD_BASE(8, 8, 4, 0x30, 0x10, 6, 1),
+	PIN_FIELD_BASE(9, 9, 4, 0x30, 0x10, 5, 1),
+	PIN_FIELD_BASE(10, 10, 4, 0x30, 0x10, 3, 1),
+
+	PIN_FIELD_BASE(11, 11, 1, 0x40, 0x10, 0, 1),
+	PIN_FIELD_BASE(12, 12, 1, 0x40, 0x10, 21, 1),
+	PIN_FIELD_BASE(13, 13, 1, 0x40, 0x10, 1, 1),
+	PIN_FIELD_BASE(14, 14, 1, 0x40, 0x10, 2, 1),
+
+	PIN_FIELD_BASE(15, 15, 5, 0x30, 0x10, 7, 1),
+	PIN_FIELD_BASE(16, 16, 5, 0x30, 0x10, 8, 1),
+	PIN_FIELD_BASE(17, 17, 5, 0x30, 0x10, 3, 1),
+	PIN_FIELD_BASE(18, 18, 5, 0x30, 0x10, 4, 1),
+
+	PIN_FIELD_BASE(19, 19, 4, 0x30, 0x10, 7, 1),
+	PIN_FIELD_BASE(20, 20, 4, 0x30, 0x10, 4, 1),
+
+	PIN_FIELD_BASE(21, 21, 3, 0x50, 0x10, 17, 1),
+	PIN_FIELD_BASE(22, 22, 3, 0x50, 0x10, 23, 1),
+	PIN_FIELD_BASE(23, 23, 3, 0x50, 0x10, 20, 1),
+	PIN_FIELD_BASE(24, 24, 3, 0x50, 0x10, 19, 1),
+	PIN_FIELD_BASE(25, 25, 3, 0x50, 0x10, 21, 1),
+	PIN_FIELD_BASE(26, 26, 3, 0x50, 0x10, 22, 1),
+	PIN_FIELD_BASE(27, 27, 3, 0x50, 0x10, 18, 1),
+	PIN_FIELD_BASE(28, 28, 3, 0x50, 0x10, 25, 1),
+	PIN_FIELD_BASE(29, 29, 3, 0x50, 0x10, 26, 1),
+	PIN_FIELD_BASE(30, 30, 3, 0x50, 0x10, 27, 1),
+	PIN_FIELD_BASE(31, 31, 3, 0x50, 0x10, 24, 1),
+	PIN_FIELD_BASE(32, 32, 3, 0x50, 0x10, 28, 1),
+	PIN_FIELD_BASE(33, 33, 3, 0x60, 0x10, 0, 1),
+	PIN_FIELD_BASE(34, 34, 3, 0x50, 0x10, 31, 1),
+	PIN_FIELD_BASE(35, 35, 3, 0x50, 0x10, 29, 1),
+	PIN_FIELD_BASE(36, 36, 3, 0x50, 0x10, 30, 1),
+	PIN_FIELD_BASE(37, 37, 3, 0x60, 0x10, 1, 1),
+	PIN_FIELD_BASE(38, 38, 3, 0x50, 0x10, 11, 1),
+	PIN_FIELD_BASE(39, 39, 3, 0x50, 0x10, 10, 1),
+	PIN_FIELD_BASE(40, 40, 3, 0x50, 0x10, 0, 1),
+	PIN_FIELD_BASE(41, 41, 3, 0x50, 0x10, 1, 1),
+	PIN_FIELD_BASE(42, 42, 3, 0x50, 0x10, 9, 1),
+	PIN_FIELD_BASE(43, 43, 3, 0x50, 0x10, 8, 1),
+	PIN_FIELD_BASE(44, 44, 3, 0x50, 0x10, 7, 1),
+	PIN_FIELD_BASE(45, 45, 3, 0x50, 0x10, 6, 1),
+	PIN_FIELD_BASE(46, 46, 3, 0x50, 0x10, 5, 1),
+	PIN_FIELD_BASE(47, 47, 3, 0x50, 0x10, 4, 1),
+	PIN_FIELD_BASE(48, 48, 3, 0x50, 0x10, 3, 1),
+	PIN_FIELD_BASE(49, 49, 3, 0x50, 0x10, 2, 1),
+	PIN_FIELD_BASE(50, 50, 3, 0x50, 0x10, 15, 1),
+	PIN_FIELD_BASE(51, 51, 3, 0x50, 0x10, 12, 1),
+	PIN_FIELD_BASE(52, 52, 3, 0x50, 0x10, 13, 1),
+	PIN_FIELD_BASE(53, 53, 3, 0x50, 0x10, 14, 1),
+	PIN_FIELD_BASE(54, 54, 3, 0x50, 0x10, 16, 1),
+
+	PIN_FIELD_BASE(55, 55, 1, 0x40, 0x10, 14, 1),
+	PIN_FIELD_BASE(56, 56, 1, 0x40, 0x10, 15, 1),
+	PIN_FIELD_BASE(57, 57, 1, 0x40, 0x10, 13, 1),
+	PIN_FIELD_BASE(58, 58, 1, 0x40, 0x10, 4, 1),
+	PIN_FIELD_BASE(59, 59, 1, 0x40, 0x10, 5, 1),
+	PIN_FIELD_BASE(60, 60, 1, 0x40, 0x10, 6, 1),
+	PIN_FIELD_BASE(61, 61, 1, 0x40, 0x10, 3, 1),
+	PIN_FIELD_BASE(62, 62, 1, 0x40, 0x10, 7, 1),
+	PIN_FIELD_BASE(63, 63, 1, 0x40, 0x10, 20, 1),
+	PIN_FIELD_BASE(64, 64, 1, 0x40, 0x10, 8, 1),
+	PIN_FIELD_BASE(65, 65, 1, 0x40, 0x10, 9, 1),
+	PIN_FIELD_BASE(66, 66, 1, 0x40, 0x10, 10, 1),
+	PIN_FIELD_BASE(67, 67, 1, 0x40, 0x10, 11, 1),
+	PIN_FIELD_BASE(68, 68, 1, 0x40, 0x10, 12, 1),
+
+	PIN_FIELD_BASE(69, 69, 5, 0x30, 0x10, 1, 1),
+	PIN_FIELD_BASE(70, 70, 5, 0x30, 0x10, 2, 1),
+	PIN_FIELD_BASE(71, 71, 5, 0x30, 0x10, 5, 1),
+	PIN_FIELD_BASE(72, 72, 5, 0x30, 0x10, 6, 1),
+
+	PIN_FIELD_BASE(73, 73, 4, 0x30, 0x10, 10, 1),
+	PIN_FIELD_BASE(74, 74, 4, 0x30, 0x10, 1, 1),
+	PIN_FIELD_BASE(75, 75, 4, 0x30, 0x10, 11, 1),
+	PIN_FIELD_BASE(76, 76, 4, 0x30, 0x10, 9, 1),
+	PIN_FIELD_BASE(77, 77, 4, 0x30, 0x10, 2, 1),
+	PIN_FIELD_BASE(78, 78, 4, 0x30, 0x10, 0, 1),
+	PIN_FIELD_BASE(79, 79, 4, 0x30, 0x10, 12, 1),
+
+	PIN_FIELD_BASE(80, 80, 1, 0x40, 0x10, 18, 1),
+	PIN_FIELD_BASE(81, 81, 1, 0x40, 0x10, 19, 1),
+	PIN_FIELD_BASE(82, 82, 1, 0x40, 0x10, 16, 1),
+	PIN_FIELD_BASE(83, 83, 1, 0x40, 0x10, 17, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_smt_range[] = {
+	PIN_FIELD_BASE(0, 0, 5, 0xc0, 0x10, 13, 1),
+	PIN_FIELD_BASE(1, 1, 5, 0xc0, 0x10, 14, 1),
+	PIN_FIELD_BASE(2, 2, 5, 0xc0, 0x10, 11, 1),
+	PIN_FIELD_BASE(3, 3, 5, 0xc0, 0x10, 12, 1),
+	PIN_FIELD_BASE(4, 4, 5, 0xc0, 0x10, 0, 1),
+	PIN_FIELD_BASE(5, 5, 5, 0xc0, 0x10, 9, 1),
+	PIN_FIELD_BASE(6, 6, 5, 0xc0, 0x10, 10, 1),
+
+	PIN_FIELD_BASE(7, 7, 4, 0xb0, 0x10, 8, 1),
+	PIN_FIELD_BASE(8, 8, 4, 0xb0, 0x10, 6, 1),
+	PIN_FIELD_BASE(9, 9, 4, 0xb0, 0x10, 5, 1),
+	PIN_FIELD_BASE(10, 10, 4, 0xb0, 0x10, 3, 1),
+
+	PIN_FIELD_BASE(11, 11, 1, 0xe0, 0x10, 0, 1),
+	PIN_FIELD_BASE(12, 12, 1, 0xe0, 0x10, 21, 1),
+	PIN_FIELD_BASE(13, 13, 1, 0xe0, 0x10, 1, 1),
+	PIN_FIELD_BASE(14, 14, 1, 0xe0, 0x10, 2, 1),
+
+	PIN_FIELD_BASE(15, 15, 5, 0xc0, 0x10, 7, 1),
+	PIN_FIELD_BASE(16, 16, 5, 0xc0, 0x10, 8, 1),
+	PIN_FIELD_BASE(17, 17, 5, 0xc0, 0x10, 3, 1),
+	PIN_FIELD_BASE(18, 18, 5, 0xc0, 0x10, 4, 1),
+
+	PIN_FIELD_BASE(19, 19, 4, 0xb0, 0x10, 7, 1),
+	PIN_FIELD_BASE(20, 20, 4, 0xb0, 0x10, 4, 1),
+
+	PIN_FIELD_BASE(21, 21, 3, 0x140, 0x10, 17, 1),
+	PIN_FIELD_BASE(22, 22, 3, 0x140, 0x10, 23, 1),
+	PIN_FIELD_BASE(23, 23, 3, 0x140, 0x10, 20, 1),
+	PIN_FIELD_BASE(24, 24, 3, 0x140, 0x10, 19, 1),
+	PIN_FIELD_BASE(25, 25, 3, 0x140, 0x10, 21, 1),
+	PIN_FIELD_BASE(26, 26, 3, 0x140, 0x10, 22, 1),
+	PIN_FIELD_BASE(27, 27, 3, 0x140, 0x10, 18, 1),
+	PIN_FIELD_BASE(28, 28, 3, 0x140, 0x10, 25, 1),
+	PIN_FIELD_BASE(29, 29, 3, 0x140, 0x10, 26, 1),
+	PIN_FIELD_BASE(30, 30, 3, 0x140, 0x10, 27, 1),
+	PIN_FIELD_BASE(31, 31, 3, 0x140, 0x10, 24, 1),
+	PIN_FIELD_BASE(32, 32, 3, 0x140, 0x10, 28, 1),
+	PIN_FIELD_BASE(33, 33, 3, 0x150, 0x10, 0, 1),
+	PIN_FIELD_BASE(34, 34, 3, 0x140, 0x10, 31, 1),
+	PIN_FIELD_BASE(35, 35, 3, 0x140, 0x10, 29, 1),
+	PIN_FIELD_BASE(36, 36, 3, 0x140, 0x10, 30, 1),
+	PIN_FIELD_BASE(37, 37, 3, 0x150, 0x10, 1, 1),
+	PIN_FIELD_BASE(38, 38, 3, 0x140, 0x10, 11, 1),
+	PIN_FIELD_BASE(39, 39, 3, 0x140, 0x10, 10, 1),
+	PIN_FIELD_BASE(40, 40, 3, 0x140, 0x10, 0, 1),
+	PIN_FIELD_BASE(41, 41, 3, 0x140, 0x10, 1, 1),
+	PIN_FIELD_BASE(42, 42, 3, 0x140, 0x10, 9, 1),
+	PIN_FIELD_BASE(43, 43, 3, 0x140, 0x10, 8, 1),
+	PIN_FIELD_BASE(44, 44, 3, 0x140, 0x10, 7, 1),
+	PIN_FIELD_BASE(45, 45, 3, 0x140, 0x10, 6, 1),
+	PIN_FIELD_BASE(46, 46, 3, 0x140, 0x10, 5, 1),
+	PIN_FIELD_BASE(47, 47, 3, 0x140, 0x10, 4, 1),
+	PIN_FIELD_BASE(48, 48, 3, 0x140, 0x10, 3, 1),
+	PIN_FIELD_BASE(49, 49, 3, 0x140, 0x10, 2, 1),
+	PIN_FIELD_BASE(50, 50, 3, 0x140, 0x10, 15, 1),
+	PIN_FIELD_BASE(51, 51, 3, 0x140, 0x10, 12, 1),
+	PIN_FIELD_BASE(52, 52, 3, 0x140, 0x10, 13, 1),
+	PIN_FIELD_BASE(53, 53, 3, 0x140, 0x10, 14, 1),
+	PIN_FIELD_BASE(54, 54, 3, 0x140, 0x10, 16, 1),
+
+	PIN_FIELD_BASE(55, 55, 1, 0xe0, 0x10, 14, 1),
+	PIN_FIELD_BASE(56, 56, 1, 0xe0, 0x10, 15, 1),
+	PIN_FIELD_BASE(57, 57, 1, 0xe0, 0x10, 13, 1),
+	PIN_FIELD_BASE(58, 58, 1, 0xe0, 0x10, 4, 1),
+	PIN_FIELD_BASE(59, 59, 1, 0xe0, 0x10, 5, 1),
+	PIN_FIELD_BASE(60, 60, 1, 0xe0, 0x10, 6, 1),
+	PIN_FIELD_BASE(61, 61, 1, 0xe0, 0x10, 3, 1),
+	PIN_FIELD_BASE(62, 62, 1, 0xe0, 0x10, 7, 1),
+	PIN_FIELD_BASE(63, 63, 1, 0xe0, 0x10, 20, 1),
+	PIN_FIELD_BASE(64, 64, 1, 0xe0, 0x10, 8, 1),
+	PIN_FIELD_BASE(65, 65, 1, 0xe0, 0x10, 9, 1),
+	PIN_FIELD_BASE(66, 66, 1, 0xe0, 0x10, 10, 1),
+	PIN_FIELD_BASE(67, 67, 1, 0xe0, 0x10, 11, 1),
+	PIN_FIELD_BASE(68, 68, 1, 0xe0, 0x10, 12, 1),
+
+	PIN_FIELD_BASE(69, 69, 5, 0xc0, 0x10, 1, 1),
+	PIN_FIELD_BASE(70, 70, 5, 0xc0, 0x10, 2, 1),
+	PIN_FIELD_BASE(71, 71, 5, 0xc0, 0x10, 5, 1),
+	PIN_FIELD_BASE(72, 72, 5, 0xc0, 0x10, 6, 1),
+
+	PIN_FIELD_BASE(73, 73, 4, 0xb0, 0x10, 10, 1),
+	PIN_FIELD_BASE(74, 74, 4, 0xb0, 0x10, 1, 1),
+	PIN_FIELD_BASE(75, 75, 4, 0xb0, 0x10, 11, 1),
+	PIN_FIELD_BASE(76, 76, 4, 0xb0, 0x10, 9, 1),
+	PIN_FIELD_BASE(77, 77, 4, 0xb0, 0x10, 2, 1),
+	PIN_FIELD_BASE(78, 78, 4, 0xb0, 0x10, 0, 1),
+	PIN_FIELD_BASE(79, 79, 4, 0xb0, 0x10, 12, 1),
+
+	PIN_FIELD_BASE(80, 80, 1, 0xe0, 0x10, 18, 1),
+	PIN_FIELD_BASE(81, 81, 1, 0xe0, 0x10, 19, 1),
+	PIN_FIELD_BASE(82, 82, 1, 0xe0, 0x10, 16, 1),
+	PIN_FIELD_BASE(83, 83, 1, 0xe0, 0x10, 17, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_pu_range[] = {
+	PIN_FIELD_BASE(7, 7, 4, 0x60, 0x10, 5, 1),
+	PIN_FIELD_BASE(8, 8, 4, 0x60, 0x10, 4, 1),
+	PIN_FIELD_BASE(9, 9, 4, 0x60, 0x10, 3, 1),
+	PIN_FIELD_BASE(10, 10, 4, 0x60, 0x10, 2, 1),
+
+	PIN_FIELD_BASE(13, 13, 1, 0x70, 0x10, 0, 1),
+	PIN_FIELD_BASE(14, 14, 1, 0x70, 0x10, 1, 1),
+	PIN_FIELD_BASE(63, 63, 1, 0x70, 0x10, 2, 1),
+
+	PIN_FIELD_BASE(75, 75, 4, 0x60, 0x10, 7, 1),
+	PIN_FIELD_BASE(76, 76, 4, 0x60, 0x10, 6, 1),
+	PIN_FIELD_BASE(77, 77, 4, 0x60, 0x10, 1, 1),
+	PIN_FIELD_BASE(78, 78, 4, 0x60, 0x10, 0, 1),
+	PIN_FIELD_BASE(79, 79, 4, 0x60, 0x10, 8, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_pd_range[] = {
+	PIN_FIELD_BASE(7, 7, 4, 0x40, 0x10, 5, 1),
+	PIN_FIELD_BASE(8, 8, 4, 0x40, 0x10, 4, 1),
+	PIN_FIELD_BASE(9, 9, 4, 0x40, 0x10, 3, 1),
+	PIN_FIELD_BASE(10, 10, 4, 0x40, 0x10, 2, 1),
+
+	PIN_FIELD_BASE(13, 13, 1, 0x50, 0x10, 0, 1),
+	PIN_FIELD_BASE(14, 14, 1, 0x50, 0x10, 1, 1),
+
+	PIN_FIELD_BASE(15, 15, 5, 0x40, 0x10, 4, 1),
+	PIN_FIELD_BASE(16, 16, 5, 0x40, 0x10, 5, 1),
+	PIN_FIELD_BASE(17, 17, 5, 0x40, 0x10, 0, 1),
+	PIN_FIELD_BASE(18, 18, 5, 0x40, 0x10, 1, 1),
+
+	PIN_FIELD_BASE(63, 63, 1, 0x50, 0x10, 2, 1),
+	PIN_FIELD_BASE(71, 71, 5, 0x40, 0x10, 2, 1),
+	PIN_FIELD_BASE(72, 72, 5, 0x40, 0x10, 3, 1),
+
+	PIN_FIELD_BASE(75, 75, 4, 0x40, 0x10, 7, 1),
+	PIN_FIELD_BASE(76, 76, 4, 0x40, 0x10, 6, 1),
+	PIN_FIELD_BASE(77, 77, 4, 0x40, 0x10, 1, 1),
+	PIN_FIELD_BASE(78, 78, 4, 0x40, 0x10, 0, 1),
+	PIN_FIELD_BASE(79, 79, 4, 0x40, 0x10, 8, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_drv_range[] = {
+	PIN_FIELD_BASE(0, 0, 5, 0x00, 0x10, 21, 3),
+	PIN_FIELD_BASE(1, 1, 5, 0x00, 0x10, 24, 3),
+	PIN_FIELD_BASE(2, 2, 5, 0x00, 0x10, 15, 3),
+	PIN_FIELD_BASE(3, 3, 5, 0x00, 0x10, 18, 3),
+	PIN_FIELD_BASE(4, 4, 5, 0x00, 0x10, 0, 3),
+	PIN_FIELD_BASE(5, 5, 5, 0x00, 0x10, 9, 3),
+	PIN_FIELD_BASE(6, 6, 5, 0x00, 0x10, 12, 3),
+
+	PIN_FIELD_BASE(7, 7, 4, 0x00, 0x10, 24, 3),
+	PIN_FIELD_BASE(8, 8, 4, 0x00, 0x10, 28, 3),
+	PIN_FIELD_BASE(9, 9, 4, 0x00, 0x10, 15, 3),
+	PIN_FIELD_BASE(10, 10, 4, 0x00, 0x10, 9, 3),
+
+	PIN_FIELD_BASE(11, 11, 1, 0x00, 0x10, 0, 3),
+	PIN_FIELD_BASE(12, 12, 1, 0x20, 0x10, 3, 3),
+	PIN_FIELD_BASE(13, 13, 1, 0x00, 0x10, 3, 3),
+	PIN_FIELD_BASE(14, 14, 1, 0x00, 0x10, 6, 3),
+
+	PIN_FIELD_BASE(19, 19, 4, 0x00, 0x10, 21, 3),
+	PIN_FIELD_BASE(20, 20, 4, 0x00, 0x10, 12, 3),
+
+	PIN_FIELD_BASE(21, 21, 3, 0x10, 0x10, 21, 3),
+	PIN_FIELD_BASE(22, 22, 3, 0x20, 0x10, 9, 3),
+	PIN_FIELD_BASE(23, 23, 3, 0x20, 0x10, 0, 3),
+	PIN_FIELD_BASE(24, 24, 3, 0x10, 0x10, 27, 3),
+	PIN_FIELD_BASE(25, 25, 3, 0x20, 0x10, 3, 3),
+	PIN_FIELD_BASE(26, 26, 3, 0x20, 0x10, 6, 3),
+	PIN_FIELD_BASE(27, 27, 3, 0x10, 0x10, 24, 3),
+	PIN_FIELD_BASE(28, 28, 3, 0x20, 0x10, 15, 3),
+	PIN_FIELD_BASE(29, 29, 3, 0x20, 0x10, 18, 3),
+	PIN_FIELD_BASE(30, 30, 3, 0x20, 0x10, 21, 3),
+	PIN_FIELD_BASE(31, 31, 3, 0x20, 0x10, 12, 3),
+	PIN_FIELD_BASE(32, 32, 3, 0x20, 0x10, 24, 3),
+	PIN_FIELD_BASE(33, 33, 3, 0x30, 0x10, 6, 3),
+	PIN_FIELD_BASE(34, 34, 3, 0x30, 0x10, 3, 3),
+	PIN_FIELD_BASE(35, 35, 3, 0x20, 0x10, 27, 3),
+	PIN_FIELD_BASE(36, 36, 3, 0x30, 0x10, 0, 3),
+	PIN_FIELD_BASE(37, 37, 3, 0x30, 0x10, 9, 3),
+	PIN_FIELD_BASE(38, 38, 3, 0x10, 0x10, 3, 3),
+	PIN_FIELD_BASE(39, 39, 3, 0x10, 0x10, 0, 3),
+	PIN_FIELD_BASE(40, 40, 3, 0x00, 0x10, 0, 3),
+	PIN_FIELD_BASE(41, 41, 3, 0x00, 0x10, 3, 3),
+	PIN_FIELD_BASE(42, 42, 3, 0x00, 0x10, 27, 3),
+	PIN_FIELD_BASE(43, 43, 3, 0x00, 0x10, 24, 3),
+	PIN_FIELD_BASE(44, 44, 3, 0x00, 0x10, 21, 3),
+	PIN_FIELD_BASE(45, 45, 3, 0x00, 0x10, 18, 3),
+	PIN_FIELD_BASE(46, 46, 3, 0x00, 0x10, 15, 3),
+	PIN_FIELD_BASE(47, 47, 3, 0x00, 0x10, 12, 3),
+	PIN_FIELD_BASE(48, 48, 3, 0x00, 0x10, 9, 3),
+	PIN_FIELD_BASE(49, 49, 3, 0x00, 0x10, 6, 3),
+	PIN_FIELD_BASE(50, 50, 3, 0x10, 0x10, 15, 3),
+	PIN_FIELD_BASE(51, 51, 3, 0x10, 0x10, 6, 3),
+	PIN_FIELD_BASE(52, 52, 3, 0x10, 0x10, 9, 3),
+	PIN_FIELD_BASE(53, 53, 3, 0x10, 0x10, 12, 3),
+	PIN_FIELD_BASE(54, 54, 3, 0x10, 0x10, 18, 3),
+
+	PIN_FIELD_BASE(55, 55, 1, 0x10, 0x10, 12, 3),
+	PIN_FIELD_BASE(56, 56, 1, 0x10, 0x10, 15, 3),
+	PIN_FIELD_BASE(57, 57, 1, 0x10, 0x10, 9, 3),
+	PIN_FIELD_BASE(58, 58, 1, 0x00, 0x10, 12, 3),
+	PIN_FIELD_BASE(59, 59, 1, 0x00, 0x10, 15, 3),
+	PIN_FIELD_BASE(60, 60, 1, 0x00, 0x10, 18, 3),
+	PIN_FIELD_BASE(61, 61, 1, 0x00, 0x10, 9, 3),
+	PIN_FIELD_BASE(62, 62, 1, 0x00, 0x10, 21, 3),
+	PIN_FIELD_BASE(63, 63, 1, 0x20, 0x10, 0, 3),
+	PIN_FIELD_BASE(64, 64, 1, 0x00, 0x10, 24, 3),
+	PIN_FIELD_BASE(65, 65, 1, 0x00, 0x10, 27, 3),
+	PIN_FIELD_BASE(66, 66, 1, 0x10, 0x10, 0, 3),
+	PIN_FIELD_BASE(67, 67, 1, 0x10, 0x10, 3, 3),
+	PIN_FIELD_BASE(68, 68, 1, 0x10, 0x10, 6, 3),
+
+	PIN_FIELD_BASE(69, 69, 5, 0x00, 0x10, 3, 3),
+	PIN_FIELD_BASE(70, 70, 5, 0x00, 0x10, 6, 3),
+
+	PIN_FIELD_BASE(73, 73, 4, 0x10, 0x10, 0, 3),
+	PIN_FIELD_BASE(74, 74, 4, 0x00, 0x10, 3, 3),
+	PIN_FIELD_BASE(75, 75, 4, 0x10, 0x10, 3, 3),
+	PIN_FIELD_BASE(76, 76, 4, 0x00, 0x10, 27, 3),
+	PIN_FIELD_BASE(77, 77, 4, 0x00, 0x10, 6, 3),
+	PIN_FIELD_BASE(78, 78, 4, 0x00, 0x10, 0, 3),
+	PIN_FIELD_BASE(79, 79, 4, 0x10, 0x10, 6, 3),
+
+	PIN_FIELD_BASE(80, 80, 1, 0x10, 0x10, 24, 3),
+	PIN_FIELD_BASE(81, 81, 1, 0x10, 0x10, 27, 3),
+	PIN_FIELD_BASE(82, 82, 1, 0x10, 0x10, 18, 3),
+	PIN_FIELD_BASE(83, 83, 1, 0x10, 0x10, 21, 3),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_pupd_range[] = {
+	PIN_FIELD_BASE(0, 0, 5, 0x50, 0x10, 7, 1),
+	PIN_FIELD_BASE(1, 1, 5, 0x50, 0x10, 8, 1),
+	PIN_FIELD_BASE(2, 2, 5, 0x50, 0x10, 5, 1),
+	PIN_FIELD_BASE(3, 3, 5, 0x50, 0x10, 6, 1),
+	PIN_FIELD_BASE(4, 4, 5, 0x50, 0x10, 0, 1),
+	PIN_FIELD_BASE(5, 5, 5, 0x50, 0x10, 3, 1),
+	PIN_FIELD_BASE(6, 6, 5, 0x50, 0x10, 4, 1),
+
+	PIN_FIELD_BASE(11, 11, 1, 0x60, 0x10, 0, 1),
+	PIN_FIELD_BASE(12, 12, 1, 0x60, 0x10, 18, 1),
+
+	PIN_FIELD_BASE(19, 19, 4, 0x50, 0x10, 2, 1),
+	PIN_FIELD_BASE(20, 20, 4, 0x50, 0x10, 1, 1),
+
+	PIN_FIELD_BASE(21, 21, 3, 0x70, 0x10, 17, 1),
+	PIN_FIELD_BASE(22, 22, 3, 0x70, 0x10, 23, 1),
+	PIN_FIELD_BASE(23, 23, 3, 0x70, 0x10, 20, 1),
+	PIN_FIELD_BASE(24, 24, 3, 0x70, 0x10, 19, 1),
+	PIN_FIELD_BASE(25, 25, 3, 0x70, 0x10, 21, 1),
+	PIN_FIELD_BASE(26, 26, 3, 0x70, 0x10, 22, 1),
+	PIN_FIELD_BASE(27, 27, 3, 0x70, 0x10, 18, 1),
+	PIN_FIELD_BASE(28, 28, 3, 0x70, 0x10, 25, 1),
+	PIN_FIELD_BASE(29, 29, 3, 0x70, 0x10, 26, 1),
+	PIN_FIELD_BASE(30, 30, 3, 0x70, 0x10, 27, 1),
+	PIN_FIELD_BASE(31, 31, 3, 0x70, 0x10, 24, 1),
+	PIN_FIELD_BASE(32, 32, 3, 0x70, 0x10, 28, 1),
+	PIN_FIELD_BASE(33, 33, 3, 0x80, 0x10, 0, 1),
+	PIN_FIELD_BASE(34, 34, 3, 0x70, 0x10, 31, 1),
+	PIN_FIELD_BASE(35, 35, 3, 0x70, 0x10, 29, 1),
+	PIN_FIELD_BASE(36, 36, 3, 0x70, 0x10, 30, 1),
+	PIN_FIELD_BASE(37, 37, 3, 0x80, 0x10, 1, 1),
+	PIN_FIELD_BASE(38, 38, 3, 0x70, 0x10, 11, 1),
+	PIN_FIELD_BASE(39, 39, 3, 0x70, 0x10, 10, 1),
+	PIN_FIELD_BASE(40, 40, 3, 0x70, 0x10, 0, 1),
+	PIN_FIELD_BASE(41, 41, 3, 0x70, 0x10, 1, 1),
+	PIN_FIELD_BASE(42, 42, 3, 0x70, 0x10, 9, 1),
+	PIN_FIELD_BASE(43, 43, 3, 0x70, 0x10, 8, 1),
+	PIN_FIELD_BASE(44, 44, 3, 0x70, 0x10, 7, 1),
+	PIN_FIELD_BASE(45, 45, 3, 0x70, 0x10, 6, 1),
+	PIN_FIELD_BASE(46, 46, 3, 0x70, 0x10, 5, 1),
+	PIN_FIELD_BASE(47, 47, 3, 0x70, 0x10, 4, 1),
+	PIN_FIELD_BASE(48, 48, 3, 0x70, 0x10, 3, 1),
+	PIN_FIELD_BASE(49, 49, 3, 0x70, 0x10, 2, 1),
+	PIN_FIELD_BASE(50, 50, 3, 0x70, 0x10, 15, 1),
+	PIN_FIELD_BASE(51, 51, 3, 0x70, 0x10, 12, 1),
+	PIN_FIELD_BASE(52, 52, 3, 0x70, 0x10, 13, 1),
+	PIN_FIELD_BASE(53, 53, 3, 0x70, 0x10, 14, 1),
+	PIN_FIELD_BASE(54, 54, 3, 0x70, 0x10, 16, 1),
+
+	PIN_FIELD_BASE(55, 55, 1, 0x60, 0x10, 12, 1),
+	PIN_FIELD_BASE(56, 56, 1, 0x60, 0x10, 13, 1),
+	PIN_FIELD_BASE(57, 57, 1, 0x60, 0x10, 11, 1),
+	PIN_FIELD_BASE(58, 58, 1, 0x60, 0x10, 2, 1),
+	PIN_FIELD_BASE(59, 59, 1, 0x60, 0x10, 3, 1),
+	PIN_FIELD_BASE(60, 60, 1, 0x60, 0x10, 4, 1),
+	PIN_FIELD_BASE(61, 61, 1, 0x60, 0x10, 1, 1),
+	PIN_FIELD_BASE(62, 62, 1, 0x60, 0x10, 5, 1),
+	PIN_FIELD_BASE(64, 64, 1, 0x60, 0x10, 6, 1),
+	PIN_FIELD_BASE(65, 65, 1, 0x60, 0x10, 7, 1),
+	PIN_FIELD_BASE(66, 66, 1, 0x60, 0x10, 8, 1),
+	PIN_FIELD_BASE(67, 67, 1, 0x60, 0x10, 9, 1),
+	PIN_FIELD_BASE(68, 68, 1, 0x60, 0x10, 10, 1),
+
+	PIN_FIELD_BASE(69, 69, 5, 0x50, 0x10, 1, 1),
+	PIN_FIELD_BASE(70, 70, 5, 0x50, 0x10, 2, 1),
+
+	PIN_FIELD_BASE(73, 73, 4, 0x50, 0x10, 3, 1),
+	PIN_FIELD_BASE(74, 74, 4, 0x50, 0x10, 0, 1),
+
+	PIN_FIELD_BASE(80, 80, 1, 0x60, 0x10, 16, 1),
+	PIN_FIELD_BASE(81, 81, 1, 0x60, 0x10, 17, 1),
+	PIN_FIELD_BASE(82, 82, 1, 0x60, 0x10, 14, 1),
+	PIN_FIELD_BASE(83, 83, 1, 0x60, 0x10, 15, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_r0_range[] = {
+	PIN_FIELD_BASE(0, 0, 5, 0x60, 0x10, 7, 1),
+	PIN_FIELD_BASE(1, 1, 5, 0x60, 0x10, 8, 1),
+	PIN_FIELD_BASE(2, 2, 5, 0x60, 0x10, 5, 1),
+	PIN_FIELD_BASE(3, 3, 5, 0x60, 0x10, 6, 1),
+	PIN_FIELD_BASE(4, 4, 5, 0x60, 0x10, 0, 1),
+	PIN_FIELD_BASE(5, 5, 5, 0x60, 0x10, 3, 1),
+	PIN_FIELD_BASE(6, 6, 5, 0x60, 0x10, 4, 1),
+
+	PIN_FIELD_BASE(11, 11, 1, 0x80, 0x10, 0, 1),
+	PIN_FIELD_BASE(12, 12, 1, 0x80, 0x10, 18, 1),
+
+	PIN_FIELD_BASE(19, 19, 4, 0x70, 0x10, 2, 1),
+	PIN_FIELD_BASE(20, 20, 4, 0x70, 0x10, 1, 1),
+
+	PIN_FIELD_BASE(21, 21, 3, 0x90, 0x10, 17, 1),
+	PIN_FIELD_BASE(22, 22, 3, 0x90, 0x10, 23, 1),
+	PIN_FIELD_BASE(23, 23, 3, 0x90, 0x10, 20, 1),
+	PIN_FIELD_BASE(24, 24, 3, 0x90, 0x10, 19, 1),
+	PIN_FIELD_BASE(25, 25, 3, 0x90, 0x10, 21, 1),
+	PIN_FIELD_BASE(26, 26, 3, 0x90, 0x10, 22, 1),
+	PIN_FIELD_BASE(27, 27, 3, 0x90, 0x10, 18, 1),
+	PIN_FIELD_BASE(28, 28, 3, 0x90, 0x10, 25, 1),
+	PIN_FIELD_BASE(29, 29, 3, 0x90, 0x10, 26, 1),
+	PIN_FIELD_BASE(30, 30, 3, 0x90, 0x10, 27, 1),
+	PIN_FIELD_BASE(31, 31, 3, 0x90, 0x10, 24, 1),
+	PIN_FIELD_BASE(32, 32, 3, 0x90, 0x10, 28, 1),
+	PIN_FIELD_BASE(33, 33, 3, 0xa0, 0x10, 0, 1),
+	PIN_FIELD_BASE(34, 34, 3, 0x90, 0x10, 31, 1),
+	PIN_FIELD_BASE(35, 35, 3, 0x90, 0x10, 29, 1),
+	PIN_FIELD_BASE(36, 36, 3, 0x90, 0x10, 30, 1),
+	PIN_FIELD_BASE(37, 37, 3, 0xa0, 0x10, 1, 1),
+	PIN_FIELD_BASE(38, 38, 3, 0x90, 0x10, 11, 1),
+	PIN_FIELD_BASE(39, 39, 3, 0x90, 0x10, 10, 1),
+	PIN_FIELD_BASE(40, 40, 3, 0x90, 0x10, 0, 1),
+	PIN_FIELD_BASE(41, 41, 3, 0x90, 0x10, 1, 1),
+	PIN_FIELD_BASE(42, 42, 3, 0x90, 0x10, 9, 1),
+	PIN_FIELD_BASE(43, 43, 3, 0x90, 0x10, 8, 1),
+	PIN_FIELD_BASE(44, 44, 3, 0x90, 0x10, 7, 1),
+	PIN_FIELD_BASE(45, 45, 3, 0x90, 0x10, 6, 1),
+	PIN_FIELD_BASE(46, 46, 3, 0x90, 0x10, 5, 1),
+	PIN_FIELD_BASE(47, 47, 3, 0x90, 0x10, 4, 1),
+	PIN_FIELD_BASE(48, 48, 3, 0x90, 0x10, 3, 1),
+	PIN_FIELD_BASE(49, 49, 3, 0x90, 0x10, 2, 1),
+	PIN_FIELD_BASE(50, 50, 3, 0x90, 0x10, 15, 1),
+	PIN_FIELD_BASE(51, 51, 3, 0x90, 0x10, 12, 1),
+	PIN_FIELD_BASE(52, 52, 3, 0x90, 0x10, 13, 1),
+	PIN_FIELD_BASE(53, 53, 3, 0x90, 0x10, 14, 1),
+	PIN_FIELD_BASE(54, 54, 3, 0x90, 0x10, 16, 1),
+
+	PIN_FIELD_BASE(55, 55, 1, 0x80, 0x10, 12, 1),
+	PIN_FIELD_BASE(56, 56, 1, 0x80, 0x10, 13, 1),
+	PIN_FIELD_BASE(57, 57, 1, 0x80, 0x10, 11, 1),
+	PIN_FIELD_BASE(58, 58, 1, 0x80, 0x10, 2, 1),
+	PIN_FIELD_BASE(59, 59, 1, 0x80, 0x10, 3, 1),
+	PIN_FIELD_BASE(60, 60, 1, 0x80, 0x10, 4, 1),
+	PIN_FIELD_BASE(61, 61, 1, 0x80, 0x10, 1, 1),
+	PIN_FIELD_BASE(62, 62, 1, 0x80, 0x10, 5, 1),
+	PIN_FIELD_BASE(64, 64, 1, 0x80, 0x10, 6, 1),
+	PIN_FIELD_BASE(65, 65, 1, 0x80, 0x10, 7, 1),
+	PIN_FIELD_BASE(66, 66, 1, 0x80, 0x10, 8, 1),
+	PIN_FIELD_BASE(67, 67, 1, 0x80, 0x10, 9, 1),
+	PIN_FIELD_BASE(68, 68, 1, 0x80, 0x10, 10, 1),
+
+	PIN_FIELD_BASE(69, 69, 5, 0x60, 0x10, 1, 1),
+	PIN_FIELD_BASE(70, 70, 5, 0x60, 0x10, 2, 1),
+
+	PIN_FIELD_BASE(73, 73, 4, 0x70, 0x10, 3, 1),
+	PIN_FIELD_BASE(74, 74, 4, 0x70, 0x10, 0, 1),
+
+	PIN_FIELD_BASE(80, 80, 1, 0x80, 0x10, 16, 1),
+	PIN_FIELD_BASE(81, 81, 1, 0x80, 0x10, 17, 1),
+	PIN_FIELD_BASE(82, 82, 1, 0x80, 0x10, 14, 1),
+	PIN_FIELD_BASE(83, 83, 1, 0x80, 0x10, 15, 1),
+};
+
+static const struct mtk_pin_field_calc mt7988_pin_r1_range[] = {
+	PIN_FIELD_BASE(0, 0, 5, 0x70, 0x10, 7, 1),
+	PIN_FIELD_BASE(1, 1, 5, 0x70, 0x10, 8, 1),
+	PIN_FIELD_BASE(2, 2, 5, 0x70, 0x10, 5, 1),
+	PIN_FIELD_BASE(3, 3, 5, 0x70, 0x10, 6, 1),
+	PIN_FIELD_BASE(4, 4, 5, 0x70, 0x10, 0, 1),
+	PIN_FIELD_BASE(5, 5, 5, 0x70, 0x10, 3, 1),
+	PIN_FIELD_BASE(6, 6, 5, 0x70, 0x10, 4, 1),
+
+	PIN_FIELD_BASE(11, 11, 1, 0x90, 0x10, 0, 1),
+	PIN_FIELD_BASE(12, 12, 1, 0x90, 0x10, 18, 1),
+
+	PIN_FIELD_BASE(19, 19, 4, 0x80, 0x10, 2, 1),
+	PIN_FIELD_BASE(20, 20, 4, 0x80, 0x10, 1, 1),
+
+	PIN_FIELD_BASE(21, 21, 3, 0xb0, 0x10, 17, 1),
+	PIN_FIELD_BASE(22, 22, 3, 0xb0, 0x10, 23, 1),
+	PIN_FIELD_BASE(23, 23, 3, 0xb0, 0x10, 20, 1),
+	PIN_FIELD_BASE(24, 24, 3, 0xb0, 0x10, 19, 1),
+	PIN_FIELD_BASE(25, 25, 3, 0xb0, 0x10, 21, 1),
+	PIN_FIELD_BASE(26, 26, 3, 0xb0, 0x10, 22, 1),
+	PIN_FIELD_BASE(27, 27, 3, 0xb0, 0x10, 18, 1),
+	PIN_FIELD_BASE(28, 28, 3, 0xb0, 0x10, 25, 1),
+	PIN_FIELD_BASE(29, 29, 3, 0xb0, 0x10, 26, 1),
+	PIN_FIELD_BASE(30, 30, 3, 0xb0, 0x10, 27, 1),
+	PIN_FIELD_BASE(31, 31, 3, 0xb0, 0x10, 24, 1),
+	PIN_FIELD_BASE(32, 32, 3, 0xb0, 0x10, 28, 1),
+	PIN_FIELD_BASE(33, 33, 3, 0xc0, 0x10, 0, 1),
+	PIN_FIELD_BASE(34, 34, 3, 0xb0, 0x10, 31, 1),
+	PIN_FIELD_BASE(35, 35, 3, 0xb0, 0x10, 29, 1),
+	PIN_FIELD_BASE(36, 36, 3, 0xb0, 0x10, 30, 1),
+	PIN_FIELD_BASE(37, 37, 3, 0xc0, 0x10, 1, 1),
+	PIN_FIELD_BASE(38, 38, 3, 0xb0, 0x10, 11, 1),
+	PIN_FIELD_BASE(39, 39, 3, 0xb0, 0x10, 10, 1),
+	PIN_FIELD_BASE(40, 40, 3, 0xb0, 0x10, 0, 1),
+	PIN_FIELD_BASE(41, 41, 3, 0xb0, 0x10, 1, 1),
+	PIN_FIELD_BASE(42, 42, 3, 0xb0, 0x10, 9, 1),
+	PIN_FIELD_BASE(43, 43, 3, 0xb0, 0x10, 8, 1),
+	PIN_FIELD_BASE(44, 44, 3, 0xb0, 0x10, 7, 1),
+	PIN_FIELD_BASE(45, 45, 3, 0xb0, 0x10, 6, 1),
+	PIN_FIELD_BASE(46, 46, 3, 0xb0, 0x10, 5, 1),
+	PIN_FIELD_BASE(47, 47, 3, 0xb0, 0x10, 4, 1),
+	PIN_FIELD_BASE(48, 48, 3, 0xb0, 0x10, 3, 1),
+	PIN_FIELD_BASE(49, 49, 3, 0xb0, 0x10, 2, 1),
+	PIN_FIELD_BASE(50, 50, 3, 0xb0, 0x10, 15, 1),
+	PIN_FIELD_BASE(51, 51, 3, 0xb0, 0x10, 12, 1),
+	PIN_FIELD_BASE(52, 52, 3, 0xb0, 0x10, 13, 1),
+	PIN_FIELD_BASE(53, 53, 3, 0xb0, 0x10, 14, 1),
+	PIN_FIELD_BASE(54, 54, 3, 0xb0, 0x10, 16, 1),
+
+	PIN_FIELD_BASE(55, 55, 1, 0x90, 0x10, 12, 1),
+	PIN_FIELD_BASE(56, 56, 1, 0x90, 0x10, 13, 1),
+	PIN_FIELD_BASE(57, 57, 1, 0x90, 0x10, 11, 1),
+	PIN_FIELD_BASE(58, 58, 1, 0x90, 0x10, 2, 1),
+	PIN_FIELD_BASE(59, 59, 1, 0x90, 0x10, 3, 1),
+	PIN_FIELD_BASE(60, 60, 1, 0x90, 0x10, 4, 1),
+	PIN_FIELD_BASE(61, 61, 1, 0x90, 0x10, 1, 1),
+	PIN_FIELD_BASE(62, 62, 1, 0x90, 0x10, 5, 1),
+	PIN_FIELD_BASE(64, 64, 1, 0x90, 0x10, 6, 1),
+	PIN_FIELD_BASE(65, 65, 1, 0x90, 0x10, 7, 1),
+	PIN_FIELD_BASE(66, 66, 1, 0x90, 0x10, 8, 1),
+	PIN_FIELD_BASE(67, 67, 1, 0x90, 0x10, 9, 1),
+	PIN_FIELD_BASE(68, 68, 1, 0x90, 0x10, 10, 1),
+
+	PIN_FIELD_BASE(69, 69, 5, 0x70, 0x10, 1, 1),
+	PIN_FIELD_BASE(70, 70, 5, 0x70, 0x10, 2, 1),
+
+	PIN_FIELD_BASE(73, 73, 4, 0x80, 0x10, 3, 1),
+	PIN_FIELD_BASE(74, 74, 4, 0x80, 0x10, 0, 1),
+
+	PIN_FIELD_BASE(80, 80, 1, 0x90, 0x10, 16, 1),
+	PIN_FIELD_BASE(81, 81, 1, 0x90, 0x10, 17, 1),
+	PIN_FIELD_BASE(82, 82, 1, 0x90, 0x10, 14, 1),
+	PIN_FIELD_BASE(83, 83, 1, 0x90, 0x10, 15, 1),
+};
+
+static const unsigned int mt7988_pull_type[] = {
+	MTK_PULL_PUPD_R1R0_TYPE,/*0*/ MTK_PULL_PUPD_R1R0_TYPE,/*1*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*2*/ MTK_PULL_PUPD_R1R0_TYPE,/*3*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*4*/ MTK_PULL_PUPD_R1R0_TYPE,/*5*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*6*/ MTK_PULL_PU_PD_TYPE,    /*7*/
+	MTK_PULL_PU_PD_TYPE,    /*8*/ MTK_PULL_PU_PD_TYPE,    /*9*/
+	MTK_PULL_PU_PD_TYPE,    /*10*/ MTK_PULL_PUPD_R1R0_TYPE,/*11*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*12*/ MTK_PULL_PU_PD_TYPE,    /*13*/
+	MTK_PULL_PU_PD_TYPE,    /*14*/ MTK_PULL_PD_TYPE,       /*15*/
+	MTK_PULL_PD_TYPE,       /*16*/ MTK_PULL_PD_TYPE,       /*17*/
+	MTK_PULL_PD_TYPE,       /*18*/ MTK_PULL_PUPD_R1R0_TYPE,/*19*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*20*/ MTK_PULL_PUPD_R1R0_TYPE,/*21*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*22*/ MTK_PULL_PUPD_R1R0_TYPE,/*23*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*24*/ MTK_PULL_PUPD_R1R0_TYPE,/*25*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*26*/ MTK_PULL_PUPD_R1R0_TYPE,/*27*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*28*/ MTK_PULL_PUPD_R1R0_TYPE,/*29*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*30*/ MTK_PULL_PUPD_R1R0_TYPE,/*31*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*32*/ MTK_PULL_PUPD_R1R0_TYPE,/*33*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*34*/ MTK_PULL_PUPD_R1R0_TYPE,/*35*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*36*/ MTK_PULL_PUPD_R1R0_TYPE,/*37*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*38*/ MTK_PULL_PUPD_R1R0_TYPE,/*39*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*40*/ MTK_PULL_PUPD_R1R0_TYPE,/*41*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*42*/ MTK_PULL_PUPD_R1R0_TYPE,/*43*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*44*/ MTK_PULL_PUPD_R1R0_TYPE,/*45*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*46*/ MTK_PULL_PUPD_R1R0_TYPE,/*47*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*48*/ MTK_PULL_PUPD_R1R0_TYPE,/*49*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*50*/ MTK_PULL_PUPD_R1R0_TYPE,/*51*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*52*/ MTK_PULL_PUPD_R1R0_TYPE,/*53*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*54*/ MTK_PULL_PUPD_R1R0_TYPE,/*55*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*56*/ MTK_PULL_PUPD_R1R0_TYPE,/*57*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*58*/ MTK_PULL_PUPD_R1R0_TYPE,/*59*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*60*/ MTK_PULL_PUPD_R1R0_TYPE,/*61*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*62*/ MTK_PULL_PU_PD_TYPE,    /*63*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*64*/ MTK_PULL_PUPD_R1R0_TYPE,/*65*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*66*/ MTK_PULL_PUPD_R1R0_TYPE,/*67*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*68*/ MTK_PULL_PUPD_R1R0_TYPE,/*69*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*70*/ MTK_PULL_PD_TYPE,       /*71*/
+	MTK_PULL_PD_TYPE,       /*72*/ MTK_PULL_PUPD_R1R0_TYPE,/*73*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*74*/ MTK_PULL_PU_PD_TYPE,    /*75*/
+	MTK_PULL_PU_PD_TYPE,    /*76*/ MTK_PULL_PU_PD_TYPE,    /*77*/
+	MTK_PULL_PU_PD_TYPE,    /*78*/ MTK_PULL_PU_PD_TYPE,    /*79*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*80*/ MTK_PULL_PUPD_R1R0_TYPE,/*81*/
+	MTK_PULL_PUPD_R1R0_TYPE,/*82*/ MTK_PULL_PUPD_R1R0_TYPE,/*83*/
+};
+
+static const struct mtk_pin_reg_calc mt7988_reg_cals[] = {
+	[PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt7988_pin_mode_range),
+	[PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt7988_pin_dir_range),
+	[PINCTRL_PIN_REG_DI] = MTK_RANGE(mt7988_pin_di_range),
+	[PINCTRL_PIN_REG_DO] = MTK_RANGE(mt7988_pin_do_range),
+	[PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt7988_pin_smt_range),
+	[PINCTRL_PIN_REG_IES] = MTK_RANGE(mt7988_pin_ies_range),
+	[PINCTRL_PIN_REG_PU] = MTK_RANGE(mt7988_pin_pu_range),
+	[PINCTRL_PIN_REG_PD] = MTK_RANGE(mt7988_pin_pd_range),
+	[PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt7988_pin_drv_range),
+	[PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt7988_pin_pupd_range),
+	[PINCTRL_PIN_REG_R0] = MTK_RANGE(mt7988_pin_r0_range),
+	[PINCTRL_PIN_REG_R1] = MTK_RANGE(mt7988_pin_r1_range),
+};
+
+static const struct mtk_pin_desc mt7988_pins[] = {
+	MT7988_PIN(0, "UART2_RXD"),
+	MT7988_PIN(1, "UART2_TXD"),
+	MT7988_PIN(2, "UART2_CTS"),
+	MT7988_PIN(3, "UART2_RTS"),
+	MT7988_PIN(4, "GPIO_A"),
+	MT7988_PIN(5, "SMI_0_MDC"),
+	MT7988_PIN(6, "SMI_0_MDIO"),
+	MT7988_PIN(7, "PCIE30_2L_0_WAKE_N"),
+	MT7988_PIN(8, "PCIE30_2L_0_CLKREQ_N"),
+	MT7988_PIN(9, "PCIE30_1L_1_WAKE_N"),
+	MT7988_PIN(10, "PCIE30_1L_1_CLKREQ_N"),
+	MT7988_PIN(11, "GPIO_P"),
+	MT7988_PIN(12, "WATCHDOG"),
+	MT7988_PIN(13, "GPIO_RESET"),
+	MT7988_PIN(14, "GPIO_WPS"),
+	MT7988_PIN(15, "PMIC_I2C_SCL"),
+	MT7988_PIN(16, "PMIC_I2C_SDA"),
+	MT7988_PIN(17, "I2C_1_SCL"),
+	MT7988_PIN(18, "I2C_1_SDA"),
+	MT7988_PIN(19, "PCIE30_2L_0_PRESET_N"),
+	MT7988_PIN(20, "PCIE30_1L_1_PRESET_N"),
+	MT7988_PIN(21, "PWMD1"),
+	MT7988_PIN(22, "SPI0_WP"),
+	MT7988_PIN(23, "SPI0_HOLD"),
+	MT7988_PIN(24, "SPI0_CSB"),
+	MT7988_PIN(25, "SPI0_MISO"),
+	MT7988_PIN(26, "SPI0_MOSI"),
+	MT7988_PIN(27, "SPI0_CLK"),
+	MT7988_PIN(28, "SPI1_CSB"),
+	MT7988_PIN(29, "SPI1_MISO"),
+	MT7988_PIN(30, "SPI1_MOSI"),
+	MT7988_PIN(31, "SPI1_CLK"),
+	MT7988_PIN(32, "SPI2_CLK"),
+	MT7988_PIN(33, "SPI2_MOSI"),
+	MT7988_PIN(34, "SPI2_MISO"),
+	MT7988_PIN(35, "SPI2_CSB"),
+	MT7988_PIN(36, "SPI2_HOLD"),
+	MT7988_PIN(37, "SPI2_WP"),
+	MT7988_PIN(38, "EMMC_RSTB"),
+	MT7988_PIN(39, "EMMC_DSL"),
+	MT7988_PIN(40, "EMMC_CK"),
+	MT7988_PIN(41, "EMMC_CMD"),
+	MT7988_PIN(42, "EMMC_DATA_7"),
+	MT7988_PIN(43, "EMMC_DATA_6"),
+	MT7988_PIN(44, "EMMC_DATA_5"),
+	MT7988_PIN(45, "EMMC_DATA_4"),
+	MT7988_PIN(46, "EMMC_DATA_3"),
+	MT7988_PIN(47, "EMMC_DATA_2"),
+	MT7988_PIN(48, "EMMC_DATA_1"),
+	MT7988_PIN(49, "EMMC_DATA_0"),
+	MT7988_PIN(50, "PCM_FS_I2S_LRCK"),
+	MT7988_PIN(51, "PCM_CLK_I2S_BCLK"),
+	MT7988_PIN(52, "PCM_DRX_I2S_DIN"),
+	MT7988_PIN(53, "PCM_DTX_I2S_DOUT"),
+	MT7988_PIN(54, "PCM_MCK_I2S_MCLK"),
+	MT7988_PIN(55, "UART0_RXD"),
+	MT7988_PIN(56, "UART0_TXD"),
+	MT7988_PIN(57, "PWMD0"),
+	MT7988_PIN(58, "JTAG_JTDI"),
+	MT7988_PIN(59, "JTAG_JTDO"),
+	MT7988_PIN(60, "JTAG_JTMS"),
+	MT7988_PIN(61, "JTAG_JTCLK"),
+	MT7988_PIN(62, "JTAG_JTRST_N"),
+	MT7988_PIN(63, "USB_DRV_VBUS_P1"),
+	MT7988_PIN(64, "LED_A"),
+	MT7988_PIN(65, "LED_B"),
+	MT7988_PIN(66, "LED_C"),
+	MT7988_PIN(67, "LED_D"),
+	MT7988_PIN(68, "LED_E"),
+	MT7988_PIN(69, "GPIO_B"),
+	MT7988_PIN(70, "GPIO_C"),
+	MT7988_PIN(71, "I2C_2_SCL"),
+	MT7988_PIN(72, "I2C_2_SDA"),
+	MT7988_PIN(73, "PCIE30_2L_1_PRESET_N"),
+	MT7988_PIN(74, "PCIE30_1L_0_PRESET_N"),
+	MT7988_PIN(75, "PCIE30_2L_1_WAKE_N"),
+	MT7988_PIN(76, "PCIE30_2L_1_CLKREQ_N"),
+	MT7988_PIN(77, "PCIE30_1L_0_WAKE_N"),
+	MT7988_PIN(78, "PCIE30_1L_0_CLKREQ_N"),
+	MT7988_PIN(79, "USB_DRV_VBUS_P0"),
+	MT7988_PIN(80, "UART1_RXD"),
+	MT7988_PIN(81, "UART1_TXD"),
+	MT7988_PIN(82, "UART1_CTS"),
+	MT7988_PIN(83, "UART1_RTS"),
+};
+
+/* jtag */
+static int mt7988_tops_jtag0_0_pins[] = { 0, 1, 2, 3, 4 };
+static int mt7988_tops_jtag0_0_funcs[] = { 2, 2, 2, 2, 2 };
+
+static int mt7988_wo0_jtag_pins[] = { 50, 51, 52, 53, 54 };
+static int mt7988_wo0_jtag_funcs[] = { 3, 3, 3, 3, 3 };
+
+static int mt7988_wo1_jtag_pins[] = { 50, 51, 52, 53, 54 };
+static int mt7988_wo1_jtag_funcs[] = { 4, 4, 4, 4, 4 };
+
+static int mt7988_wo2_jtag_pins[] = { 50, 51, 52, 53, 54 };
+static int mt7988_wo2_jtag_funcs[] = { 5, 5, 5, 5, 5 };
+
+static int mt7988_jtag_pins[] = { 58, 59, 60, 61, 62 };
+static int mt7988_jtag_funcs[] = { 1, 1, 1, 1, 1 };
+
+static int mt7988_tops_jtag0_1_pins[] = { 58, 59, 60, 61, 62 };
+static int mt7988_tops_jtag0_1_funcs[] = { 4, 4, 4, 4, 4 };
+
+/* int_usxgmii */
+static int mt7988_int_usxgmii_pins[] = { 2, 3 };
+static int mt7988_int_usxgmii_funcs[] = { 3, 3 };
+
+/* pwm */
+static int mt7988_pwm0_pins[] = { 57 };
+static int mt7988_pwm0_funcs[] = { 1 };
+
+static int mt7988_pwm1_pins[] = { 21 };
+static int mt7988_pwm1_funcs[] = { 1 };
+
+static int mt7988_pwm2_pins[] = { 80 };
+static int mt7988_pwm2_funcs[] = { 2 };
+
+static int mt7988_pwm3_pins[] = { 81 };
+static int mt7988_pwm3_funcs[] = { 2 };
+
+static int mt7988_pwm4_pins[] = { 82 };
+static int mt7988_pwm4_funcs[] = { 2 };
+
+static int mt7988_pwm5_pins[] = { 83 };
+static int mt7988_pwm5_funcs[] = { 2 };
+
+static int mt7988_pwm6_pins[] = { 69 };
+static int mt7988_pwm6_funcs[] = { 3 };
+
+static int mt7988_pwm7_pins[] = { 70 };
+static int mt7988_pwm7_funcs[] = { 3 };
+
+/* dfd */
+static int mt7988_dfd_pins[] = { 0, 1, 2, 3, 4 };
+static int mt7988_dfd_funcs[] = { 4, 4, 4, 4, 4 };
+
+/* i2c */
+static int mt7988_xfi_phy0_i2c0_pins[] = { 0, 1 };
+static int mt7988_xfi_phy0_i2c0_funcs[] = { 5, 5 };
+
+static int mt7988_xfi_phy1_i2c0_pins[] = { 0, 1 };
+static int mt7988_xfi_phy1_i2c0_funcs[] = { 6, 6 };
+
+static int mt7988_xfi_phy_pll_i2c0_pins[] = { 3, 4 };
+static int mt7988_xfi_phy_pll_i2c0_funcs[] = { 5, 5 };
+
+static int mt7988_xfi_phy_pll_i2c1_pins[] = { 3, 4 };
+static int mt7988_xfi_phy_pll_i2c1_funcs[] = { 6, 6 };
+
+static int mt7988_i2c0_0_pins[] = { 5, 6 };
+static int mt7988_i2c0_0_funcs[] = { 2, 2 };
+
+static int mt7988_i2c1_sfp_pins[] = { 5, 6 };
+static int mt7988_i2c1_sfp_funcs[] = { 4, 4 };
+
+static int mt7988_xfi_pextp_phy0_i2c_pins[] = { 5, 6 };
+static int mt7988_xfi_pextp_phy0_i2c_funcs[] = { 5, 5 };
+
+static int mt7988_xfi_pextp_phy1_i2c_pins[] = { 5, 6 };
+static int mt7988_xfi_pextp_phy1_i2c_funcs[] = { 6, 6 };
+
+static int mt7988_i2c0_1_pins[] = { 15, 16 };
+static int mt7988_i2c0_1_funcs[] = { 1, 1 };
+
+static int mt7988_u30_phy_i2c0_pins[] = { 15, 16 };
+static int mt7988_u30_phy_i2c0_funcs[] = { 2, 2 };
+
+static int mt7988_u32_phy_i2c0_pins[] = { 15, 16 };
+static int mt7988_u32_phy_i2c0_funcs[] = { 3, 3 };
+
+static int mt7988_xfi_phy0_i2c1_pins[] = { 15, 16 };
+static int mt7988_xfi_phy0_i2c1_funcs[] = { 5, 5 };
+
+static int mt7988_xfi_phy1_i2c1_pins[] = { 15, 16 };
+static int mt7988_xfi_phy1_i2c1_funcs[] = { 6, 6 };
+
+static int mt7988_xfi_phy_pll_i2c2_pins[] = { 15, 16 };
+static int mt7988_xfi_phy_pll_i2c2_funcs[] = { 7, 7 };
+
+static int mt7988_i2c1_0_pins[] = { 17, 18 };
+static int mt7988_i2c1_0_funcs[] = { 1, 1 };
+
+static int mt7988_u30_phy_i2c1_pins[] = { 17, 18 };
+static int mt7988_u30_phy_i2c1_funcs[] = { 2, 2 };
+
+static int mt7988_u32_phy_i2c1_pins[] = { 17, 18 };
+static int mt7988_u32_phy_i2c1_funcs[] = { 3, 3 };
+
+static int mt7988_xfi_phy_pll_i2c3_pins[] = { 17, 18 };
+static int mt7988_xfi_phy_pll_i2c3_funcs[] = { 4, 4 };
+
+static int mt7988_sgmii0_i2c_pins[] = { 17, 18 };
+static int mt7988_sgmii0_i2c_funcs[] = { 5, 5 };
+
+static int mt7988_sgmii1_i2c_pins[] = { 17, 18 };
+static int mt7988_sgmii1_i2c_funcs[] = { 6, 6 };
+
+static int mt7988_i2c1_2_pins[] = { 69, 70 };
+static int mt7988_i2c1_2_funcs[] = { 2, 2 };
+
+static int mt7988_i2c2_0_pins[] = { 69, 70 };
+static int mt7988_i2c2_0_funcs[] = { 4, 4 };
+
+static int mt7988_i2c2_1_pins[] = { 71, 72 };
+static int mt7988_i2c2_1_funcs[] = { 1, 1 };
+
+/* eth */
+static int mt7988_mdc_mdio0_pins[] = { 5, 6 };
+static int mt7988_mdc_mdio0_funcs[] = { 1, 1 };
+
+static int mt7988_2p5g_ext_mdio_pins[] = { 28, 29 };
+static int mt7988_2p5g_ext_mdio_funcs[] = { 6, 6 };
+
+static int mt7988_gbe_ext_mdio_pins[] = { 30, 31 };
+static int mt7988_gbe_ext_mdio_funcs[] = { 6, 6 };
+
+static int mt7988_mdc_mdio1_pins[] = { 69, 70 };
+static int mt7988_mdc_mdio1_funcs[] = { 1, 1 };
+
+/* pcie */
+static int mt7988_pcie_wake_n0_0_pins[] = { 7 };
+static int mt7988_pcie_wake_n0_0_funcs[] = { 1 };
+
+static int mt7988_pcie_clk_req_n0_0_pins[] = { 8 };
+static int mt7988_pcie_clk_req_n0_0_funcs[] = { 1 };
+
+static int mt7988_pcie_wake_n3_0_pins[] = { 9 };
+static int mt7988_pcie_wake_n3_0_funcs[] = { 1 };
+
+static int mt7988_pcie_clk_req_n3_pins[] = { 10 };
+static int mt7988_pcie_clk_req_n3_funcs[] = { 1 };
+
+static int mt7988_pcie_clk_req_n0_1_pins[] = { 10 };
+static int mt7988_pcie_clk_req_n0_1_funcs[] = { 2 };
+
+static int mt7988_pcie_p0_phy_i2c_pins[] = { 7, 8 };
+static int mt7988_pcie_p0_phy_i2c_funcs[] = { 3, 3 };
+
+static int mt7988_pcie_p1_phy_i2c_pins[] = { 7, 8 };
+static int mt7988_pcie_p1_phy_i2c_funcs[] = { 4, 4 };
+
+static int mt7988_pcie_p3_phy_i2c_pins[] = { 9, 10 };
+static int mt7988_pcie_p3_phy_i2c_funcs[] = { 4, 4 };
+
+static int mt7988_pcie_p2_phy_i2c_pins[] = { 7, 8 };
+static int mt7988_pcie_p2_phy_i2c_funcs[] = { 5, 5 };
+
+static int mt7988_ckm_phy_i2c_pins[] = { 9, 10 };
+static int mt7988_ckm_phy_i2c_funcs[] = { 5, 5 };
+
+static int mt7988_pcie_wake_n0_1_pins[] = { 13 };
+static int mt7988_pcie_wake_n0_1_funcs[] = { 2 };
+
+static int mt7988_pcie_wake_n3_1_pins[] = { 14 };
+static int mt7988_pcie_wake_n3_1_funcs[] = { 2 };
+
+static int mt7988_pcie_2l_0_pereset_pins[] = { 19 };
+static int mt7988_pcie_2l_0_pereset_funcs[] = { 1 };
+
+static int mt7988_pcie_1l_1_pereset_pins[] = { 20 };
+static int mt7988_pcie_1l_1_pereset_funcs[] = { 1 };
+
+static int mt7988_pcie_clk_req_n2_1_pins[] = { 63 };
+static int mt7988_pcie_clk_req_n2_1_funcs[] = { 2 };
+
+static int mt7988_pcie_2l_1_pereset_pins[] = { 73 };
+static int mt7988_pcie_2l_1_pereset_funcs[] = { 1 };
+
+static int mt7988_pcie_1l_0_pereset_pins[] = { 74 };
+static int mt7988_pcie_1l_0_pereset_funcs[] = { 1 };
+
+static int mt7988_pcie_wake_n1_0_pins[] = { 75 };
+static int mt7988_pcie_wake_n1_0_funcs[] = { 1 };
+
+static int mt7988_pcie_clk_req_n1_pins[] = { 76 };
+static int mt7988_pcie_clk_req_n1_funcs[] = { 1 };
+
+static int mt7988_pcie_wake_n2_0_pins[] = { 77 };
+static int mt7988_pcie_wake_n2_0_funcs[] = { 1 };
+
+static int mt7988_pcie_clk_req_n2_0_pins[] = { 78 };
+static int mt7988_pcie_clk_req_n2_0_funcs[] = { 1 };
+
+static int mt7988_pcie_wake_n2_1_pins[] = { 79 };
+static int mt7988_pcie_wake_n2_1_funcs[] = { 2 };
+
+/* pmic */
+static int mt7988_pmic_pins[] = { 11 };
+static int mt7988_pmic_funcs[] = { 1 };
+
+/* watchdog */
+static int mt7988_watchdog_pins[] = { 12 };
+static int mt7988_watchdog_funcs[] = { 1 };
+
+/* spi */
+static int mt7988_spi0_wp_hold_pins[] = { 22, 23 };
+static int mt7988_spi0_wp_hold_funcs[] = { 1, 1 };
+
+static int mt7988_spi0_pins[] = { 24, 25, 26, 27 };
+static int mt7988_spi0_funcs[] = { 1, 1, 1, 1 };
+
+static int mt7988_spi1_pins[] = { 28, 29, 30, 31 };
+static int mt7988_spi1_funcs[] = { 1, 1, 1, 1 };
+
+static int mt7988_spi2_pins[] = { 32, 33, 34, 35 };
+static int mt7988_spi2_funcs[] = { 1, 1, 1, 1 };
+
+static int mt7988_spi2_wp_hold_pins[] = { 36, 37 };
+static int mt7988_spi2_wp_hold_funcs[] = { 1, 1 };
+
+/* flash */
+static int mt7988_snfi_pins[] = { 22, 23, 24, 25, 26, 27 };
+static int mt7988_snfi_funcs[] = { 2, 2, 2, 2, 2, 2 };
+
+static int mt7988_emmc_45_pins[] = {
+	21, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37
+};
+static int mt7988_emmc_45_funcs[] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
+
+static int mt7988_sdcard_pins[] = { 32, 33, 34, 35, 36, 37 };
+static int mt7988_sdcard_funcs[] = { 5, 5, 5, 5, 5, 5 };
+
+static int mt7988_emmc_51_pins[] = { 38, 39, 40, 41, 42, 43,
+				     44, 45, 46, 47, 48, 49 };
+static int mt7988_emmc_51_funcs[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+
+/* uart */
+static int mt7988_uart2_pins[] = { 0, 1, 2, 3 };
+static int mt7988_uart2_funcs[] = { 1, 1, 1, 1 };
+
+static int mt7988_tops_uart0_0_pins[] = { 22, 23 };
+static int mt7988_tops_uart0_0_funcs[] = { 3, 3 };
+
+static int mt7988_uart2_0_pins[] = { 28, 29, 30, 31 };
+static int mt7988_uart2_0_funcs[] = { 2, 2, 2, 2 };
+
+static int mt7988_uart1_0_pins[] = { 32, 33, 34, 35 };
+static int mt7988_uart1_0_funcs[] = { 2, 2, 2, 2 };
+
+static int mt7988_uart2_1_pins[] = { 32, 33, 34, 35 };
+static int mt7988_uart2_1_funcs[] = { 3, 3, 3, 3 };
+
+static int mt7988_net_wo0_uart_txd_0_pins[] = { 28 };
+static int mt7988_net_wo0_uart_txd_0_funcs[] = { 3 };
+
+static int mt7988_net_wo1_uart_txd_0_pins[] = { 29 };
+static int mt7988_net_wo1_uart_txd_0_funcs[] = { 3 };
+
+static int mt7988_net_wo2_uart_txd_0_pins[] = { 30 };
+static int mt7988_net_wo2_uart_txd_0_funcs[] = { 3 };
+
+static int mt7988_tops_uart1_0_pins[] = { 28, 29 };
+static int mt7988_tops_uart1_0_funcs[] = { 4, 4 };
+
+static int mt7988_tops_uart0_1_pins[] = { 30, 31 };
+static int mt7988_tops_uart0_1_funcs[] = { 4, 4 };
+
+static int mt7988_tops_uart1_1_pins[] = { 36, 37 };
+static int mt7988_tops_uart1_1_funcs[] = { 3, 3 };
+
+static int mt7988_uart0_pins[] = { 55, 56 };
+static int mt7988_uart0_funcs[] = { 1, 1 };
+
+static int mt7988_tops_uart0_2_pins[] = { 55, 56 };
+static int mt7988_tops_uart0_2_funcs[] = { 2, 2 };
+
+static int mt7988_uart2_2_pins[] = { 50, 51, 52, 53 };
+static int mt7988_uart2_2_funcs[] = { 2, 2, 2, 2 };
+
+static int mt7988_uart1_1_pins[] = { 58, 59, 60, 61 };
+static int mt7988_uart1_1_funcs[] = { 2, 2, 2, 2 };
+
+static int mt7988_uart2_3_pins[] = { 58, 59, 60, 61 };
+static int mt7988_uart2_3_funcs[] = { 3, 3, 3, 3 };
+
+static int mt7988_uart1_2_pins[] = { 80, 81, 82, 83 };
+static int mt7988_uart1_2_funcs[] = { 1, 1, 1, 1 };
+
+static int mt7988_uart1_2_lite_pins[] = { 80, 81 };
+static int mt7988_uart1_2_lite_funcs[] = { 1, 1 };
+
+static int mt7988_tops_uart1_2_pins[] = { 80, 81 };
+static int mt7988_tops_uart1_2_funcs[] = { 4, 4, };
+
+static int mt7988_net_wo0_uart_txd_1_pins[] = { 80 };
+static int mt7988_net_wo0_uart_txd_1_funcs[] = { 3 };
+
+static int mt7988_net_wo1_uart_txd_1_pins[] = { 81 };
+static int mt7988_net_wo1_uart_txd_1_funcs[] = { 3 };
+
+static int mt7988_net_wo2_uart_txd_1_pins[] = { 82 };
+static int mt7988_net_wo2_uart_txd_1_funcs[] = { 3 };
+
+/* udi */
+static int mt7988_udi_pins[] = { 32, 33, 34, 35, 36 };
+static int mt7988_udi_funcs[] = { 4, 4, 4, 4, 4 };
+
+/* i2s */
+static int mt7988_i2s_pins[] = { 50, 51, 52, 53, 54 };
+static int mt7988_i2s_funcs[] = { 1, 1, 1, 1, 1 };
+
+/* pcm */
+static int mt7988_pcm_pins[] = { 50, 51, 52, 53 };
+static int mt7988_pcm_funcs[] = { 1, 1, 1, 1 };
+
+/* led */
+static int mt7988_gbe0_led1_pins[] = { 58 };
+static int mt7988_gbe0_led1_funcs[] = { 6 };
+static int mt7988_gbe1_led1_pins[] = { 59 };
+static int mt7988_gbe1_led1_funcs[] = { 6 };
+static int mt7988_gbe2_led1_pins[] = { 60 };
+static int mt7988_gbe2_led1_funcs[] = { 6 };
+static int mt7988_gbe3_led1_pins[] = { 61 };
+static int mt7988_gbe3_led1_funcs[] = { 6 };
+
+static int mt7988_2p5gbe_led1_pins[] = { 62 };
+static int mt7988_2p5gbe_led1_funcs[] = { 6 };
+
+static int mt7988_gbe0_led0_pins[] = { 64 };
+static int mt7988_gbe0_led0_funcs[] = { 1 };
+static int mt7988_gbe1_led0_pins[] = { 65 };
+static int mt7988_gbe1_led0_funcs[] = { 1 };
+static int mt7988_gbe2_led0_pins[] = { 66 };
+static int mt7988_gbe2_led0_funcs[] = { 1 };
+static int mt7988_gbe3_led0_pins[] = { 67 };
+static int mt7988_gbe3_led0_funcs[] = { 1 };
+
+static int mt7988_2p5gbe_led0_pins[] = { 68 };
+static int mt7988_2p5gbe_led0_funcs[] = { 1 };
+
+/* usb */
+static int mt7988_drv_vbus_p1_pins[] = { 63 };
+static int mt7988_drv_vbus_p1_funcs[] = { 1 };
+
+static int mt7988_drv_vbus_pins[] = { 79 };
+static int mt7988_drv_vbus_funcs[] = { 1 };
+
+static const struct group_desc mt7988_groups[] = {
+	/*  @GPIO(0,1,2,3): uart2 */
+	PINCTRL_PIN_GROUP("uart2", mt7988_uart2),
+	/*  @GPIO(0,1,2,3,4): tops_jtag0_0 */
+	PINCTRL_PIN_GROUP("tops_jtag0_0", mt7988_tops_jtag0_0),
+	/*  @GPIO(2,3): int_usxgmii */
+	PINCTRL_PIN_GROUP("int_usxgmii", mt7988_int_usxgmii),
+	/*  @GPIO(0,1,2,3,4): dfd */
+	PINCTRL_PIN_GROUP("dfd", mt7988_dfd),
+	/*  @GPIO(0,1): xfi_phy0_i2c0 */
+	PINCTRL_PIN_GROUP("xfi_phy0_i2c0", mt7988_xfi_phy0_i2c0),
+	/*  @GPIO(0,1): xfi_phy1_i2c0 */
+	PINCTRL_PIN_GROUP("xfi_phy1_i2c0", mt7988_xfi_phy1_i2c0),
+	/*  @GPIO(3,4): xfi_phy_pll_i2c0 */
+	PINCTRL_PIN_GROUP("xfi_phy_pll_i2c0", mt7988_xfi_phy_pll_i2c0),
+	/*  @GPIO(3,4): xfi_phy_pll_i2c1 */
+	PINCTRL_PIN_GROUP("xfi_phy_pll_i2c1", mt7988_xfi_phy_pll_i2c1),
+	/*  @GPIO(5,6) i2c0_0 */
+	PINCTRL_PIN_GROUP("i2c0_0", mt7988_i2c0_0),
+	/*  @GPIO(5,6) i2c1_sfp */
+	PINCTRL_PIN_GROUP("i2c1_sfp", mt7988_i2c1_sfp),
+	/*  @GPIO(5,6) xfi_pextp_phy0_i2c */
+	PINCTRL_PIN_GROUP("xfi_pextp_phy0_i2c", mt7988_xfi_pextp_phy0_i2c),
+	/*  @GPIO(5,6) xfi_pextp_phy1_i2c */
+	PINCTRL_PIN_GROUP("xfi_pextp_phy1_i2c", mt7988_xfi_pextp_phy1_i2c),
+	/*  @GPIO(5,6) mdc_mdio0 */
+	PINCTRL_PIN_GROUP("mdc_mdio0", mt7988_mdc_mdio0),
+	/*  @GPIO(7): pcie_wake_n0_0 */
+	PINCTRL_PIN_GROUP("pcie_wake_n0_0", mt7988_pcie_wake_n0_0),
+	/*  @GPIO(8): pcie_clk_req_n0_0 */
+	PINCTRL_PIN_GROUP("pcie_clk_req_n0_0", mt7988_pcie_clk_req_n0_0),
+	/*  @GPIO(9): pcie_wake_n3_0 */
+	PINCTRL_PIN_GROUP("pcie_wake_n3_0", mt7988_pcie_wake_n3_0),
+	/*  @GPIO(10): pcie_clk_req_n3 */
+	PINCTRL_PIN_GROUP("pcie_clk_req_n3", mt7988_pcie_clk_req_n3),
+	/*  @GPIO(10): pcie_clk_req_n0_1 */
+	PINCTRL_PIN_GROUP("pcie_clk_req_n0_1", mt7988_pcie_clk_req_n0_1),
+	/*  @GPIO(7,8) pcie_p0_phy_i2c */
+	PINCTRL_PIN_GROUP("pcie_p0_phy_i2c", mt7988_pcie_p0_phy_i2c),
+	/*  @GPIO(7,8) pcie_p1_phy_i2c */
+	PINCTRL_PIN_GROUP("pcie_p1_phy_i2c", mt7988_pcie_p1_phy_i2c),
+	/*  @GPIO(7,8) pcie_p2_phy_i2c */
+	PINCTRL_PIN_GROUP("pcie_p2_phy_i2c", mt7988_pcie_p2_phy_i2c),
+	/*  @GPIO(9,10) pcie_p3_phy_i2c */
+	PINCTRL_PIN_GROUP("pcie_p3_phy_i2c", mt7988_pcie_p3_phy_i2c),
+	/*  @GPIO(9,10) ckm_phy_i2c */
+	PINCTRL_PIN_GROUP("ckm_phy_i2c", mt7988_ckm_phy_i2c),
+	/*  @GPIO(11): pmic */
+	PINCTRL_PIN_GROUP("pcie_pmic", mt7988_pmic),
+	/*  @GPIO(12): watchdog */
+	PINCTRL_PIN_GROUP("watchdog", mt7988_watchdog),
+	/*  @GPIO(13): pcie_wake_n0_1 */
+	PINCTRL_PIN_GROUP("pcie_wake_n0_1", mt7988_pcie_wake_n0_1),
+	/*  @GPIO(14): pcie_wake_n3_1 */
+	PINCTRL_PIN_GROUP("pcie_wake_n3_1", mt7988_pcie_wake_n3_1),
+	/*  @GPIO(15,16) i2c0_1 */
+	PINCTRL_PIN_GROUP("i2c0_1", mt7988_i2c0_1),
+	/*  @GPIO(15,16) u30_phy_i2c0 */
+	PINCTRL_PIN_GROUP("u30_phy_i2c0", mt7988_u30_phy_i2c0),
+	/*  @GPIO(15,16) u32_phy_i2c0 */
+	PINCTRL_PIN_GROUP("u32_phy_i2c0", mt7988_u32_phy_i2c0),
+	/*  @GPIO(15,16) xfi_phy0_i2c1 */
+	PINCTRL_PIN_GROUP("xfi_phy0_i2c1", mt7988_xfi_phy0_i2c1),
+	/*  @GPIO(15,16) xfi_phy1_i2c1 */
+	PINCTRL_PIN_GROUP("xfi_phy1_i2c1", mt7988_xfi_phy1_i2c1),
+	/*  @GPIO(15,16) xfi_phy_pll_i2c2 */
+	PINCTRL_PIN_GROUP("xfi_phy_pll_i2c2", mt7988_xfi_phy_pll_i2c2),
+	/*  @GPIO(17,18) i2c1_0 */
+	PINCTRL_PIN_GROUP("i2c1_0", mt7988_i2c1_0),
+	/*  @GPIO(17,18) u30_phy_i2c1 */
+	PINCTRL_PIN_GROUP("u30_phy_i2c1", mt7988_u30_phy_i2c1),
+	/*  @GPIO(17,18) u32_phy_i2c1 */
+	PINCTRL_PIN_GROUP("u32_phy_i2c1", mt7988_u32_phy_i2c1),
+	/*  @GPIO(17,18) xfi_phy_pll_i2c3 */
+	PINCTRL_PIN_GROUP("xfi_phy_pll_i2c3", mt7988_xfi_phy_pll_i2c3),
+	/*  @GPIO(17,18) sgmii0_i2c */
+	PINCTRL_PIN_GROUP("sgmii0_i2c", mt7988_sgmii0_i2c),
+	/*  @GPIO(17,18) sgmii1_i2c */
+	PINCTRL_PIN_GROUP("sgmii1_i2c", mt7988_sgmii1_i2c),
+	/*  @GPIO(19): pcie_2l_0_pereset */
+	PINCTRL_PIN_GROUP("pcie_2l_0_pereset", mt7988_pcie_2l_0_pereset),
+	/*  @GPIO(20): pcie_1l_1_pereset */
+	PINCTRL_PIN_GROUP("pcie_1l_1_pereset", mt7988_pcie_1l_1_pereset),
+	/*  @GPIO(21): pwm1 */
+	PINCTRL_PIN_GROUP("pwm1", mt7988_pwm1),
+	/*  @GPIO(22,23) spi0_wp_hold */
+	PINCTRL_PIN_GROUP("spi0_wp_hold", mt7988_spi0_wp_hold),
+	/*  @GPIO(24,25,26,27) spi0 */
+	PINCTRL_PIN_GROUP("spi0", mt7988_spi0),
+	/*  @GPIO(28,29,30,31) spi1 */
+	PINCTRL_PIN_GROUP("spi1", mt7988_spi1),
+	/*  @GPIO(32,33,34,35) spi2 */
+	PINCTRL_PIN_GROUP("spi2", mt7988_spi2),
+	/*  @GPIO(36,37) spi2_wp_hold */
+	PINCTRL_PIN_GROUP("spi2_wp_hold", mt7988_spi2_wp_hold),
+	/*  @GPIO(22,23,24,25,26,27) snfi */
+	PINCTRL_PIN_GROUP("snfi", mt7988_snfi),
+	/*  @GPIO(22,23) tops_uart0_0 */
+	PINCTRL_PIN_GROUP("tops_uart0_0", mt7988_tops_uart0_0),
+	/*  @GPIO(28,29,30,31) uart2_0 */
+	PINCTRL_PIN_GROUP("uart2_0", mt7988_uart2_0),
+	/*  @GPIO(32,33,34,35) uart1_0 */
+	PINCTRL_PIN_GROUP("uart1_0", mt7988_uart1_0),
+	/*  @GPIO(32,33,34,35) uart2_1 */
+	PINCTRL_PIN_GROUP("uart2_1", mt7988_uart2_1),
+	/*  @GPIO(28) net_wo0_uart_txd_0 */
+	PINCTRL_PIN_GROUP("net_wo0_uart_txd_0", mt7988_net_wo0_uart_txd_0),
+	/*  @GPIO(29) net_wo1_uart_txd_0 */
+	PINCTRL_PIN_GROUP("net_wo1_uart_txd_0", mt7988_net_wo1_uart_txd_0),
+	/*  @GPIO(30) net_wo2_uart_txd_0 */
+	PINCTRL_PIN_GROUP("net_wo2_uart_txd_0", mt7988_net_wo2_uart_txd_0),
+	/*  @GPIO(28,29) tops_uart1_0 */
+	PINCTRL_PIN_GROUP("tops_uart0_0", mt7988_tops_uart1_0),
+	/*  @GPIO(30,31) tops_uart0_1 */
+	PINCTRL_PIN_GROUP("tops_uart0_1", mt7988_tops_uart0_1),
+	/*  @GPIO(36,37) tops_uart1_1 */
+	PINCTRL_PIN_GROUP("tops_uart1_1", mt7988_tops_uart1_1),
+	/*  @GPIO(32,33,34,35,36) udi */
+	PINCTRL_PIN_GROUP("udi", mt7988_udi),
+	/*  @GPIO(21,28,29,30,31,32,33,34,35,36,37) emmc_45 */
+	PINCTRL_PIN_GROUP("emmc_45", mt7988_emmc_45),
+	/*  @GPIO(32,33,34,35,36,37) sdcard */
+	PINCTRL_PIN_GROUP("sdcard", mt7988_sdcard),
+	/*  @GPIO(38,39,40,41,42,43,44,45,46,47,48,49) emmc_51 */
+	PINCTRL_PIN_GROUP("emmc_51", mt7988_emmc_51),
+	/*  @GPIO(28,29) 2p5g_ext_mdio */
+	PINCTRL_PIN_GROUP("2p5g_ext_mdio", mt7988_2p5g_ext_mdio),
+	/*  @GPIO(30,31) gbe_ext_mdio */
+	PINCTRL_PIN_GROUP("gbe_ext_mdio", mt7988_gbe_ext_mdio),
+	/*  @GPIO(50,51,52,53,54) i2s */
+	PINCTRL_PIN_GROUP("i2s", mt7988_i2s),
+	/*  @GPIO(50,51,52,53) pcm */
+	PINCTRL_PIN_GROUP("pcm", mt7988_pcm),
+	/*  @GPIO(55,56) uart0 */
+	PINCTRL_PIN_GROUP("uart0", mt7988_uart0),
+	/*  @GPIO(55,56) tops_uart0_2 */
+	PINCTRL_PIN_GROUP("tops_uart0_2", mt7988_tops_uart0_2),
+	/*  @GPIO(50,51,52,53) uart2_2 */
+	PINCTRL_PIN_GROUP("uart2_2", mt7988_uart2_2),
+	/*  @GPIO(50,51,52,53,54) wo0_jtag */
+	PINCTRL_PIN_GROUP("wo0_jtag", mt7988_wo0_jtag),
+	/*  @GPIO(50,51,52,53,54) wo1-wo1_jtag */
+	PINCTRL_PIN_GROUP("wo1_jtag", mt7988_wo1_jtag),
+	/*  @GPIO(50,51,52,53,54) wo2_jtag */
+	PINCTRL_PIN_GROUP("wo2_jtag", mt7988_wo2_jtag),
+	/*  @GPIO(57) pwm0 */
+	PINCTRL_PIN_GROUP("pwm0", mt7988_pwm0),
+	/*  @GPIO(58,59,60,61,62) jtag */
+	PINCTRL_PIN_GROUP("jtag", mt7988_jtag),
+	/*  @GPIO(58,59,60,61,62) tops_jtag0_1 */
+	PINCTRL_PIN_GROUP("tops_jtag0_1", mt7988_tops_jtag0_1),
+	/*  @GPIO(58,59,60,61) uart2_3 */
+	PINCTRL_PIN_GROUP("uart2_3", mt7988_uart2_3),
+	/*  @GPIO(58,59,60,61) uart1_1 */
+	PINCTRL_PIN_GROUP("uart1_1", mt7988_uart1_1),
+	/*  @GPIO(58,59,60,61) gbe_led1 */
+	PINCTRL_PIN_GROUP("gbe0_led1", mt7988_gbe0_led1),
+	PINCTRL_PIN_GROUP("gbe1_led1", mt7988_gbe1_led1),
+	PINCTRL_PIN_GROUP("gbe2_led1", mt7988_gbe2_led1),
+	PINCTRL_PIN_GROUP("gbe3_led1", mt7988_gbe3_led1),
+	/*  @GPIO(62) 2p5gbe_led1 */
+	PINCTRL_PIN_GROUP("2p5gbe_led1", mt7988_2p5gbe_led1),
+	/*  @GPIO(64,65,66,67) gbe_led0 */
+	PINCTRL_PIN_GROUP("gbe0_led0", mt7988_gbe0_led0),
+	PINCTRL_PIN_GROUP("gbe1_led0", mt7988_gbe1_led0),
+	PINCTRL_PIN_GROUP("gbe2_led0", mt7988_gbe2_led0),
+	PINCTRL_PIN_GROUP("gbe3_led0", mt7988_gbe3_led0),
+	/*  @GPIO(68) 2p5gbe_led0 */
+	PINCTRL_PIN_GROUP("2p5gbe_led0", mt7988_2p5gbe_led0),
+	/*  @GPIO(63) drv_vbus_p1 */
+	PINCTRL_PIN_GROUP("drv_vbus_p1", mt7988_drv_vbus_p1),
+	/*  @GPIO(63) pcie_clk_req_n2_1 */
+	PINCTRL_PIN_GROUP("pcie_clk_req_n2_1", mt7988_pcie_clk_req_n2_1),
+	/*  @GPIO(69, 70) mdc_mdio1 */
+	PINCTRL_PIN_GROUP("mdc_mdio1", mt7988_mdc_mdio1),
+	/*  @GPIO(69, 70) i2c1_2 */
+	PINCTRL_PIN_GROUP("i2c1_2", mt7988_i2c1_2),
+	/*  @GPIO(69) pwm6 */
+	PINCTRL_PIN_GROUP("pwm6", mt7988_pwm6),
+	/*  @GPIO(70) pwm7 */
+	PINCTRL_PIN_GROUP("pwm7", mt7988_pwm7),
+	/*  @GPIO(69,70) i2c2_0 */
+	PINCTRL_PIN_GROUP("i2c2_0", mt7988_i2c2_0),
+	/*  @GPIO(71,72) i2c2_1 */
+	PINCTRL_PIN_GROUP("i2c2_1", mt7988_i2c2_1),
+	/*  @GPIO(73) pcie_2l_1_pereset */
+	PINCTRL_PIN_GROUP("pcie_2l_1_pereset", mt7988_pcie_2l_1_pereset),
+	/*  @GPIO(74) pcie_1l_0_pereset */
+	PINCTRL_PIN_GROUP("pcie_1l_0_pereset", mt7988_pcie_1l_0_pereset),
+	/*  @GPIO(75) pcie_wake_n1_0 */
+	PINCTRL_PIN_GROUP("pcie_wake_n1_0", mt7988_pcie_wake_n1_0),
+	/*  @GPIO(76) pcie_clk_req_n1 */
+	PINCTRL_PIN_GROUP("pcie_clk_req_n1", mt7988_pcie_clk_req_n1),
+	/*  @GPIO(77) pcie_wake_n2_0 */
+	PINCTRL_PIN_GROUP("pcie_wake_n2_0", mt7988_pcie_wake_n2_0),
+	/*  @GPIO(78) pcie_clk_req_n2_0 */
+	PINCTRL_PIN_GROUP("pcie_clk_req_n2_0", mt7988_pcie_clk_req_n2_0),
+	/*  @GPIO(79) drv_vbus */
+	PINCTRL_PIN_GROUP("drv_vbus", mt7988_drv_vbus),
+	/*  @GPIO(79) pcie_wake_n2_1 */
+	PINCTRL_PIN_GROUP("pcie_wake_n2_1", mt7988_pcie_wake_n2_1),
+	/*  @GPIO(80,81,82,83) uart1_2 */
+	PINCTRL_PIN_GROUP("uart1_2", mt7988_uart1_2),
+	/*  @GPIO(80,81) uart1_2_lite */
+	PINCTRL_PIN_GROUP("uart1_2_lite", mt7988_uart1_2_lite),
+	/*  @GPIO(80) pwm2 */
+	PINCTRL_PIN_GROUP("pwm2", mt7988_pwm2),
+	/*  @GPIO(81) pwm3 */
+	PINCTRL_PIN_GROUP("pwm3", mt7988_pwm3),
+	/*  @GPIO(82) pwm4 */
+	PINCTRL_PIN_GROUP("pwm4", mt7988_pwm4),
+	/*  @GPIO(83) pwm5 */
+	PINCTRL_PIN_GROUP("pwm5", mt7988_pwm5),
+	/*  @GPIO(80) net_wo0_uart_txd_0 */
+	PINCTRL_PIN_GROUP("net_wo0_uart_txd_0", mt7988_net_wo0_uart_txd_0),
+	/*  @GPIO(81) net_wo1_uart_txd_0 */
+	PINCTRL_PIN_GROUP("net_wo1_uart_txd_0", mt7988_net_wo1_uart_txd_0),
+	/*  @GPIO(82) net_wo2_uart_txd_0 */
+	PINCTRL_PIN_GROUP("net_wo2_uart_txd_0", mt7988_net_wo2_uart_txd_0),
+	/*  @GPIO(80,81) tops_uart1_2 */
+	PINCTRL_PIN_GROUP("tops_uart1_2", mt7988_tops_uart1_2),
+	/*  @GPIO(80) net_wo0_uart_txd_1 */
+	PINCTRL_PIN_GROUP("net_wo0_uart_txd_1", mt7988_net_wo0_uart_txd_1),
+	/*  @GPIO(81) net_wo1_uart_txd_1 */
+	PINCTRL_PIN_GROUP("net_wo1_uart_txd_1", mt7988_net_wo1_uart_txd_1),
+	/*  @GPIO(82) net_wo2_uart_txd_1 */
+	PINCTRL_PIN_GROUP("net_wo2_uart_txd_1", mt7988_net_wo2_uart_txd_1),
+};
+
+/* Joint those groups owning the same capability in user point of view which
+ * allows that people tend to use through the device tree.
+ */
+static const char * const mt7988_jtag_groups[] = {
+	"tops_jtag0_0", "wo0_jtag", "wo1_jtag",
+	"wo2_jtag",	"jtag",	    "tops_jtag0_1",
+};
+static const char * const mt7988_int_usxgmii_groups[] = {
+	"int_usxgmii",
+};
+static const char * const mt7988_pwm_groups[] = {
+	"pwm0", "pwm1", "pwm2", "pwm3", "pwm4",	"pwm5",	"pwm6", "pwm7"
+};
+static const char * const mt7988_dfd_groups[] = {
+	"dfd",
+};
+static const char * const mt7988_i2c_groups[] = {
+	"xfi_phy0_i2c0",
+	"xfi_phy1_i2c0",
+	"xfi_phy_pll_i2c0",
+	"xfi_phy_pll_i2c1",
+	"i2c0_0",
+	"i2c1_sfp",
+	"xfi_pextp_phy0_i2c",
+	"xfi_pextp_phy1_i2c",
+	"i2c0_1",
+	"u30_phy_i2c0",
+	"u32_phy_i2c0",
+	"xfi_phy0_i2c1",
+	"xfi_phy1_i2c1",
+	"xfi_phy_pll_i2c2",
+	"i2c1_0",
+	"u30_phy_i2c1",
+	"u32_phy_i2c1",
+	"xfi_phy_pll_i2c3",
+	"sgmii0_i2c",
+	"sgmii1_i2c",
+	"i2c1_2",
+	"i2c2_0",
+	"i2c2_1",
+};
+static const char * const mt7988_ethernet_groups[] = {
+	"mdc_mdio0",
+	"2p5g_ext_mdio",
+	"gbe_ext_mdio",
+	"mdc_mdio1",
+};
+static const char * const mt7988_pcie_groups[] = {
+	"pcie_wake_n0_0",    "pcie_clk_req_n0_0", "pcie_wake_n3_0",
+	"pcie_clk_req_n3",   "pcie_p0_phy_i2c",	  "pcie_p1_phy_i2c",
+	"pcie_p3_phy_i2c",   "pcie_p2_phy_i2c",	  "ckm_phy_i2c",
+	"pcie_wake_n0_1",    "pcie_wake_n3_1",	  "pcie_2l_0_pereset",
+	"pcie_1l_1_pereset", "pcie_clk_req_n2_1", "pcie_2l_1_pereset",
+	"pcie_1l_0_pereset", "pcie_wake_n1_0",	  "pcie_clk_req_n1",
+	"pcie_wake_n2_0",    "pcie_clk_req_n2_0", "pcie_wake_n2_1",
+	"pcie_clk_req_n0_1"
+};
+static const char * const mt7988_pmic_groups[] = {
+	"pmic",
+};
+static const char * const mt7988_wdt_groups[] = {
+	"watchdog",
+};
+static const char * const mt7988_spi_groups[] = {
+	"spi0", "spi0_wp_hold", "spi1", "spi2", "spi2_wp_hold",
+};
+static const char * const mt7988_flash_groups[] = { "emmc_45", "sdcard", "snfi",
+						    "emmc_51" };
+static const char * const mt7988_uart_groups[] = {
+	"uart2",
+	"tops_uart0_0",
+	"uart2_0",
+	"uart1_0",
+	"uart2_1",
+	"net_wo0_uart_txd_0",
+	"net_wo1_uart_txd_0",
+	"net_wo2_uart_txd_0",
+	"tops_uart1_0",
+	"ops_uart0_1",
+	"ops_uart1_1",
+	"uart0",
+	"tops_uart0_2",
+	"uart1_1",
+	"uart2_3",
+	"uart1_2",
+	"uart1_2_lite",
+	"tops_uart1_2",
+	"net_wo0_uart_txd_1",
+	"net_wo1_uart_txd_1",
+	"net_wo2_uart_txd_1",
+};
+static const char * const mt7988_udi_groups[] = {
+	"udi",
+};
+static const char * const mt7988_audio_groups[] = {
+	"i2s", "pcm",
+};
+static const char * const mt7988_led_groups[] = {
+	"gbe0_led1", "gbe1_led1", "gbe2_led1", "gbe3_led1", "2p5gbe_led1",
+	"gbe0_led0", "gbe1_led0", "gbe2_led0", "gbe3_led0", "2p5gbe_led0",
+	"wf5g_led0",   "wf5g_led1",
+};
+static const char * const mt7988_usb_groups[] = {
+	"drv_vbus",
+	"drv_vbus_p1",
+};
+
+static const struct function_desc mt7988_functions[] = {
+	{ "audio", mt7988_audio_groups, ARRAY_SIZE(mt7988_audio_groups) },
+	{ "jtag", mt7988_jtag_groups, ARRAY_SIZE(mt7988_jtag_groups) },
+	{ "int_usxgmii", mt7988_int_usxgmii_groups,
+	  ARRAY_SIZE(mt7988_int_usxgmii_groups) },
+	{ "pwm", mt7988_pwm_groups, ARRAY_SIZE(mt7988_pwm_groups) },
+	{ "dfd", mt7988_dfd_groups, ARRAY_SIZE(mt7988_dfd_groups) },
+	{ "i2c", mt7988_i2c_groups, ARRAY_SIZE(mt7988_i2c_groups) },
+	{ "eth", mt7988_ethernet_groups, ARRAY_SIZE(mt7988_ethernet_groups) },
+	{ "pcie", mt7988_pcie_groups, ARRAY_SIZE(mt7988_pcie_groups) },
+	{ "pmic", mt7988_pmic_groups, ARRAY_SIZE(mt7988_pmic_groups) },
+	{ "watchdog", mt7988_wdt_groups, ARRAY_SIZE(mt7988_wdt_groups) },
+	{ "spi", mt7988_spi_groups, ARRAY_SIZE(mt7988_spi_groups) },
+	{ "flash", mt7988_flash_groups, ARRAY_SIZE(mt7988_flash_groups) },
+	{ "uart", mt7988_uart_groups, ARRAY_SIZE(mt7988_uart_groups) },
+	{ "udi", mt7988_udi_groups, ARRAY_SIZE(mt7988_udi_groups) },
+	{ "usb", mt7988_usb_groups, ARRAY_SIZE(mt7988_usb_groups) },
+	{ "led", mt7988_led_groups, ARRAY_SIZE(mt7988_led_groups) },
+};
+
+static const struct mtk_eint_hw mt7988_eint_hw = {
+	.port_mask = 7,
+	.ports = 7,
+	.ap_num = ARRAY_SIZE(mt7988_pins),
+	.db_cnt = 16,
+};
+
+static const char * const mt7988_pinctrl_register_base_names[] = {
+	"gpio_base",	 "iocfg_tr_base", "iocfg_br_base",
+	"iocfg_rb_base", "iocfg_lb_base", "iocfg_tl_base",
+};
+
+static struct mtk_pin_soc mt7988_data = {
+	.reg_cal = mt7988_reg_cals,
+	.pins = mt7988_pins,
+	.npins = ARRAY_SIZE(mt7988_pins),
+	.grps = mt7988_groups,
+	.ngrps = ARRAY_SIZE(mt7988_groups),
+	.funcs = mt7988_functions,
+	.nfuncs = ARRAY_SIZE(mt7988_functions),
+	.eint_hw = &mt7988_eint_hw,
+	.gpio_m = 0,
+	.ies_present = false,
+	.base_names = mt7988_pinctrl_register_base_names,
+	.nbase_names = ARRAY_SIZE(mt7988_pinctrl_register_base_names),
+	.bias_disable_set = mtk_pinconf_bias_disable_set,
+	.bias_disable_get = mtk_pinconf_bias_disable_get,
+	.bias_set = mtk_pinconf_bias_set,
+	.bias_get = mtk_pinconf_bias_get,
+	.pull_type = mt7988_pull_type,
+	.bias_set_combo = mtk_pinconf_bias_set_combo,
+	.bias_get_combo = mtk_pinconf_bias_get_combo,
+	.drive_set = mtk_pinconf_drive_set_rev1,
+	.drive_get = mtk_pinconf_drive_get_rev1,
+	.adv_pull_get = mtk_pinconf_adv_pull_get,
+	.adv_pull_set = mtk_pinconf_adv_pull_set,
+};
+
+static const struct of_device_id mt7988_pinctrl_of_match[] = {
+	{
+		.compatible = "mediatek,mt7988-pinctrl",
+	},
+	{}
+};
+
+static int mt7988_pinctrl_probe(struct platform_device *pdev)
+{
+	return mtk_moore_pinctrl_probe(pdev, &mt7988_data);
+}
+
+static struct platform_driver mt7988_pinctrl_driver = {
+	.driver = {
+		.name = "mt7988-pinctrl",
+		.of_match_table = mt7988_pinctrl_of_match,
+	},
+	.probe = mt7988_pinctrl_probe,
+};
+
+static int __init mt7988_pinctrl_init(void)
+{
+	return platform_driver_register(&mt7988_pinctrl_driver);
+}
+arch_initcall(mt7988_pinctrl_init);



From lede-commits at lists.infradead.org  Mon Mar 11 14:24:02 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 17:24:02 -0400
Subject: [openwrt/openwrt]  mediatek: 6.6: refresh patches
In-Reply-To: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
References: <171019223742.3068391.16334799913672841948@git-01.infra.openwrt.org>
Message-ID: <mailman.15392.1710192252.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5b4bbd1097d0ec2d13bd7d73f9d51027e19f0970

commit 5b4bbd1097d0ec2d13bd7d73f9d51027e19f0970
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 1 02:22:25 2024 +0000

    mediatek: 6.6: refresh patches
    
    Refresh patches and fix changed path for 32-bit mediatek boards
    'arch/arm/dts' -> 'arch/arm/dts/mediatek'
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../041-block-fit-partition-parser.patch           | 10 +--
 .../patches-6.6/100-dts-update-mt7622-rfb1.patch   |  4 +-
 .../patches-6.6/101-dts-update-mt7629-rfb.patch    |  4 +-
 .../patches-6.6/105-dts-mt7622-enable-pstore.patch |  2 +-
 .../patches-6.6/110-dts-fix-bpi2-console.patch     |  4 +-
 .../patches-6.6/112-dts-fix-bpi64-lan-names.patch  |  2 +-
 .../patches-6.6/114-dts-bpi64-disable-rtc.patch    | 12 +---
 .../130-dts-mt7629-add-snand-support.patch         | 14 ++--
 .../131-dts-mt7622-add-snand-support.patch         |  2 +-
 .../140-dts-fix-wmac-support-for-mt7622-rfb1.patch |  4 +-
 ...50-dts-mt7623-eip97-inside-secure-support.patch |  6 +-
 .../160-dts-mt7623-bpi-r2-earlycon.patch           |  4 +-
 .../161-dts-mt7623-bpi-r2-mmc-device-order.patch   |  4 +-
 .../162-dts-mt7623-bpi-r2-led-aliases.patch        |  4 +-
 .../163-dts-mt7623-bpi-r2-ethernet-alias.patch     |  4 +-
 ...164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch | 10 +--
 ...arm64-dts-mediatek-mt7622-fix-GICv2-range.patch |  2 +-
 .../193-dts-mt7623-thermal_zone_fix.patch          |  6 +-
 .../200-phy-phy-mtk-tphy-Add-hifsys-support.patch  | 12 ++--
 ...k-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch |  2 +-
 ...nctrl-mediatek-add-support-for-MT7988-SoC.patch | 20 +++---
 ...k-add-pcw_chg_bit-control-for-PLLs-of-MT7.patch |  6 +-
 ...8-clk-mediatek-add-drivers-for-MT7988-SoC.patch | 10 +--
 ...-watchdog-mediatek-mt7988-add-wdt-support.patch | 22 +++---
 .../patches-6.6/330-snand-mtk-bmt-support.patch    |  6 +-
 .../patches-6.6/331-mt7622-rfb1-enable-bmt.patch   |  2 +-
 ...nand-Add-support-for-the-Fidelix-FM35X1GA.patch | 13 ++--
 ...1-cpufreq-mediatek-Add-support-for-MT7988.patch |  4 +-
 ...00-crypto-add-eip97-inside-secure-support.patch |  2 +-
 .../401-crypto-fix-eip97-cache-incoherent.patch    |  2 +-
 .../patches-6.6/410-bt-mtk-serial-fix.patch        |  2 +-
 ...-mt65xx-Move-chip_config-to-driver-s-priv.patch |  4 +-
 ...s-spi-Add-support-for-dynamic-calibration.patch | 22 +++---
 ...-drivers-spi-mem-Add-spi-calibration-hook.patch |  2 +-
 ...-spinand-Add-calibration-support-for-spin.patch |  4 +-
 ...-spi-nor-Add-calibration-support-for-spi-.patch | 10 +--
 .../500-gsw-rtl8367s-mt7622-support.patch          |  6 +-
 ...l-gpy-don-t-use-SGMII-AN-if-using-phylink.patch | 10 +--
 ...-net-phy-add-driver-for-MediaTek-2.5G-PHY.patch |  6 +-
 ...k-Fix-control-buffer-enablement-on-MT7896.patch |  2 +-
 .../855-i2c-mt65xx-allow-optional-pmic-clock.patch |  2 +-
 ...4-dts-mt7986-add-sound-overlay-for-bpi-r3.patch |  2 +-
 ...-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch |  2 +-
 .../patches-6.6/901-arm-add-cmdline-override.patch |  6 +-
 .../910-dts-mt7622-bpi-r64-wifi-eeprom.patch       |  2 +-
 .../911-dts-mt7622-bpi-r64-add-rootdisk.patch      |  8 ++-
 .../930-spi-mt65xx-enable-sel-clk.patch            |  2 +-
 ...s-mt7986-move-cpuboot-in-a-dedicated-node.patch |  6 +-
 ...net-mtk_wed-move-dlm-a-dedicated-dts-node.patch |  4 +-
 ...4-dts-mt7986-move-ilm-in-a-dedicated-node.patch |  6 +-
 ...4-dts-mt7986-move-dlm-in-a-dedicated-node.patch |  6 +-
 .../patches-6.6/950-smartrg-i2c-led-driver.patch   |  6 +-
 ...t-mediatek-split-tx-and-rx-fields-in-mtk_.patch | 82 +++++++++++-----------
 ...t-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch | 16 ++---
 ...t-ethernet-mtk_eth_soc-fix-WED-wifi-reset.patch |  6 +-
 55 files changed, 209 insertions(+), 214 deletions(-)

diff --git a/target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch b/target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch
index bb87c20a91..feb50c157b 100644
--- a/target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch
+++ b/target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch
@@ -19,7 +19,7 @@ Subject: [PATCH] kernel: add block fit partition parser
 
 --- a/block/blk.h
 +++ b/block/blk.h
-@@ -414,6 +414,8 @@ void blk_free_ext_minor(unsigned int min
+@@ -423,6 +423,8 @@ void blk_free_ext_minor(unsigned int min
  #define ADDPART_FLAG_NONE	0
  #define ADDPART_FLAG_RAID	1
  #define ADDPART_FLAG_WHOLEDISK	2
@@ -82,7 +82,7 @@ Subject: [PATCH] kernel: add block fit partition parser
  
  #include "check.h"
  
-@@ -48,6 +51,9 @@ static int (*check_part[])(struct parsed
+@@ -48,6 +51,9 @@ static int (*const check_part[])(struct
  #ifdef CONFIG_EFI_PARTITION
  	efi_partition,		/* this must come before msdos */
  #endif
@@ -92,7 +92,7 @@ Subject: [PATCH] kernel: add block fit partition parser
  #ifdef CONFIG_SGI_PARTITION
  	sgi_partition,
  #endif
-@@ -439,6 +445,11 @@ static struct block_device *add_partitio
+@@ -433,6 +439,11 @@ static struct block_device *add_partitio
  			goto out_del;
  	}
  
@@ -104,7 +104,7 @@ Subject: [PATCH] kernel: add block fit partition parser
  	/* everything is up and running, commence */
  	err = xa_insert(&disk->part_tbl, partno, bdev, GFP_KERNEL);
  	if (err)
-@@ -631,6 +642,11 @@ static bool blk_add_partition(struct gen
+@@ -625,6 +636,11 @@ static bool blk_add_partition(struct gen
  	    (state->parts[p].flags & ADDPART_FLAG_RAID))
  		md_autodetect_dev(part->bd_dev);
  
@@ -193,7 +193,7 @@ Subject: [PATCH] kernel: add block fit partition parser
  	set_capacity(gd, ((u64)new->size * tr->blksize) >> 9);
 --- a/drivers/mtd/ubi/block.c
 +++ b/drivers/mtd/ubi/block.c
-@@ -432,7 +432,9 @@ int ubiblock_create(struct ubi_volume_in
+@@ -411,7 +411,9 @@ int ubiblock_create(struct ubi_volume_in
  		ret = -ENODEV;
  		goto out_cleanup_disk;
  	}
diff --git a/target/linux/mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch b/target/linux/mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch
index d5bd9a316b..ed07eb367d 100644
--- a/target/linux/mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch
+++ b/target/linux/mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch
@@ -68,7 +68,7 @@
  				};
  
  				port at 4 {
-@@ -240,7 +239,22 @@
+@@ -239,7 +238,22 @@
  	status = "okay";
  };
  
@@ -91,7 +91,7 @@
  	/* eMMC is shared pin with parallel NAND */
  	emmc_pins_default: emmc-pins-default {
  		mux {
-@@ -517,11 +531,11 @@
+@@ -516,11 +530,11 @@
  };
  
  &sata {
diff --git a/target/linux/mediatek/patches-6.6/101-dts-update-mt7629-rfb.patch b/target/linux/mediatek/patches-6.6/101-dts-update-mt7629-rfb.patch
index b1770371b0..166d97ab01 100644
--- a/target/linux/mediatek/patches-6.6/101-dts-update-mt7629-rfb.patch
+++ b/target/linux/mediatek/patches-6.6/101-dts-update-mt7629-rfb.patch
@@ -1,5 +1,5 @@
---- a/arch/arm/boot/dts/mt7629-rfb.dts
-+++ b/arch/arm/boot/dts/mt7629-rfb.dts
+--- a/arch/arm/boot/dts/mediatek/mt7629-rfb.dts
++++ b/arch/arm/boot/dts/mediatek/mt7629-rfb.dts
 @@ -18,6 +18,7 @@
  
  	chosen {
diff --git a/target/linux/mediatek/patches-6.6/105-dts-mt7622-enable-pstore.patch b/target/linux/mediatek/patches-6.6/105-dts-mt7622-enable-pstore.patch
index 93da722e72..3e36a503ed 100644
--- a/target/linux/mediatek/patches-6.6/105-dts-mt7622-enable-pstore.patch
+++ b/target/linux/mediatek/patches-6.6/105-dts-mt7622-enable-pstore.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
 +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
-@@ -134,6 +134,13 @@
+@@ -135,6 +135,13 @@
  		#size-cells = <2>;
  		ranges;
  
diff --git a/target/linux/mediatek/patches-6.6/110-dts-fix-bpi2-console.patch b/target/linux/mediatek/patches-6.6/110-dts-fix-bpi2-console.patch
index 8dc53d2985..d96d3b9581 100644
--- a/target/linux/mediatek/patches-6.6/110-dts-fix-bpi2-console.patch
+++ b/target/linux/mediatek/patches-6.6/110-dts-fix-bpi2-console.patch
@@ -1,5 +1,5 @@
---- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
-+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
+--- a/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
++++ b/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
 @@ -19,6 +19,7 @@
  
  	chosen {
diff --git a/target/linux/mediatek/patches-6.6/112-dts-fix-bpi64-lan-names.patch b/target/linux/mediatek/patches-6.6/112-dts-fix-bpi64-lan-names.patch
index b012a48d75..816683e626 100644
--- a/target/linux/mediatek/patches-6.6/112-dts-fix-bpi64-lan-names.patch
+++ b/target/linux/mediatek/patches-6.6/112-dts-fix-bpi64-lan-names.patch
@@ -8,7 +8,7 @@
  	};
  
  	chosen {
-@@ -160,22 +161,22 @@
+@@ -164,22 +165,22 @@
  
  				port at 1 {
  					reg = <1>;
diff --git a/target/linux/mediatek/patches-6.6/114-dts-bpi64-disable-rtc.patch b/target/linux/mediatek/patches-6.6/114-dts-bpi64-disable-rtc.patch
index 0d324084b1..5a2c603486 100644
--- a/target/linux/mediatek/patches-6.6/114-dts-bpi64-disable-rtc.patch
+++ b/target/linux/mediatek/patches-6.6/114-dts-bpi64-disable-rtc.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
-@@ -556,12 +556,16 @@
+@@ -587,6 +587,10 @@
  	status = "okay";
  };
  
@@ -9,13 +9,5 @@
 +};
 +
  &sata {
--	status = "disable";
-+	status = "disabled";
+ 	status = "disabled";
  };
- 
- &sata_phy {
--	status = "disable";
-+	status = "disabled";
- };
- 
- &spi0 {
diff --git a/target/linux/mediatek/patches-6.6/130-dts-mt7629-add-snand-support.patch b/target/linux/mediatek/patches-6.6/130-dts-mt7629-add-snand-support.patch
index 82654e683c..c7cd525a5c 100644
--- a/target/linux/mediatek/patches-6.6/130-dts-mt7629-add-snand-support.patch
+++ b/target/linux/mediatek/patches-6.6/130-dts-mt7629-add-snand-support.patch
@@ -5,13 +5,13 @@ Subject: [PATCH] spi: spi-mem: Mediatek: Add SPI Nand support for MT7629
 
 Signed-off-by: Xiangsheng Hou <xiangsheng.hou at mediatek.com>
 ---
- arch/arm/boot/dts/mt7629-rfb.dts | 45 ++++++++++++++++++++++++++++++++
- arch/arm/boot/dts/mt7629.dtsi    | 22 ++++++++++++++++
+ arch/arm/boot/dts/mediatek/mt7629-rfb.dts | 45 ++++++++++++++++++++++++++++++++
+ arch/arm/boot/dts/mediatek/mt7629.dtsi    | 22 ++++++++++++++++
  3 files changed, 79 insertions(+)
 
---- a/arch/arm/boot/dts/mt7629.dtsi
-+++ b/arch/arm/boot/dts/mt7629.dtsi
-@@ -272,6 +272,27 @@
+--- a/arch/arm/boot/dts/mediatek/mt7629.dtsi
++++ b/arch/arm/boot/dts/mediatek/mt7629.dtsi
+@@ -271,6 +271,27 @@
  			status = "disabled";
  		};
  
@@ -39,8 +39,8 @@ Signed-off-by: Xiangsheng Hou <xiangsheng.hou at mediatek.com>
  		spi: spi at 1100a000 {
  			compatible = "mediatek,mt7629-spi",
  				     "mediatek,mt7622-spi";
---- a/arch/arm/boot/dts/mt7629-rfb.dts
-+++ b/arch/arm/boot/dts/mt7629-rfb.dts
+--- a/arch/arm/boot/dts/mediatek/mt7629-rfb.dts
++++ b/arch/arm/boot/dts/mediatek/mt7629-rfb.dts
 @@ -255,6 +255,50 @@
  	};
  };
diff --git a/target/linux/mediatek/patches-6.6/131-dts-mt7622-add-snand-support.patch b/target/linux/mediatek/patches-6.6/131-dts-mt7622-add-snand-support.patch
index d6e0ab1d41..a804087367 100644
--- a/target/linux/mediatek/patches-6.6/131-dts-mt7622-add-snand-support.patch
+++ b/target/linux/mediatek/patches-6.6/131-dts-mt7622-add-snand-support.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
-@@ -534,6 +534,65 @@
+@@ -533,6 +533,65 @@
  	status = "disabled";
  };
  
diff --git a/target/linux/mediatek/patches-6.6/140-dts-fix-wmac-support-for-mt7622-rfb1.patch b/target/linux/mediatek/patches-6.6/140-dts-fix-wmac-support-for-mt7622-rfb1.patch
index 117d5abde6..6d1e2f1ed2 100644
--- a/target/linux/mediatek/patches-6.6/140-dts-fix-wmac-support-for-mt7622-rfb1.patch
+++ b/target/linux/mediatek/patches-6.6/140-dts-fix-wmac-support-for-mt7622-rfb1.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
-@@ -575,7 +575,7 @@
+@@ -574,7 +574,7 @@
  				reg = <0x140000 0x0080000>;
  			};
  
@@ -9,7 +9,7 @@
  				label = "Factory";
  				reg = <0x1c0000 0x0100000>;
  			};
-@@ -636,5 +636,6 @@
+@@ -635,5 +635,6 @@
  &wmac {
  	pinctrl-names = "default";
  	pinctrl-0 = <&wmac_pins>;
diff --git a/target/linux/mediatek/patches-6.6/150-dts-mt7623-eip97-inside-secure-support.patch b/target/linux/mediatek/patches-6.6/150-dts-mt7623-eip97-inside-secure-support.patch
index 0860a22c37..d54e3ed1fd 100644
--- a/target/linux/mediatek/patches-6.6/150-dts-mt7623-eip97-inside-secure-support.patch
+++ b/target/linux/mediatek/patches-6.6/150-dts-mt7623-eip97-inside-secure-support.patch
@@ -1,6 +1,6 @@
---- a/arch/arm/boot/dts/mt7623.dtsi
-+++ b/arch/arm/boot/dts/mt7623.dtsi
-@@ -984,17 +984,15 @@
+--- a/arch/arm/boot/dts/mediatek/mt7623.dtsi
++++ b/arch/arm/boot/dts/mediatek/mt7623.dtsi
+@@ -995,17 +995,15 @@
  	};
  
  	crypto: crypto at 1b240000 {
diff --git a/target/linux/mediatek/patches-6.6/160-dts-mt7623-bpi-r2-earlycon.patch b/target/linux/mediatek/patches-6.6/160-dts-mt7623-bpi-r2-earlycon.patch
index 091cffc3c0..5e02fb56ac 100644
--- a/target/linux/mediatek/patches-6.6/160-dts-mt7623-bpi-r2-earlycon.patch
+++ b/target/linux/mediatek/patches-6.6/160-dts-mt7623-bpi-r2-earlycon.patch
@@ -1,5 +1,5 @@
---- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
-+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
+--- a/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
++++ b/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
 @@ -19,7 +19,7 @@
  
  	chosen {
diff --git a/target/linux/mediatek/patches-6.6/161-dts-mt7623-bpi-r2-mmc-device-order.patch b/target/linux/mediatek/patches-6.6/161-dts-mt7623-bpi-r2-mmc-device-order.patch
index d1bafc1526..4b48219966 100644
--- a/target/linux/mediatek/patches-6.6/161-dts-mt7623-bpi-r2-mmc-device-order.patch
+++ b/target/linux/mediatek/patches-6.6/161-dts-mt7623-bpi-r2-mmc-device-order.patch
@@ -1,5 +1,5 @@
---- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
-+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
+--- a/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
++++ b/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
 @@ -15,6 +15,8 @@
  
  	aliases {
diff --git a/target/linux/mediatek/patches-6.6/162-dts-mt7623-bpi-r2-led-aliases.patch b/target/linux/mediatek/patches-6.6/162-dts-mt7623-bpi-r2-led-aliases.patch
index f6745add5b..2d02a760f0 100644
--- a/target/linux/mediatek/patches-6.6/162-dts-mt7623-bpi-r2-led-aliases.patch
+++ b/target/linux/mediatek/patches-6.6/162-dts-mt7623-bpi-r2-led-aliases.patch
@@ -1,5 +1,5 @@
---- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
-+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
+--- a/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
++++ b/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
 @@ -17,6 +17,10 @@
  		serial2 = &uart2;
  		mmc0 = &mmc0;
diff --git a/target/linux/mediatek/patches-6.6/163-dts-mt7623-bpi-r2-ethernet-alias.patch b/target/linux/mediatek/patches-6.6/163-dts-mt7623-bpi-r2-ethernet-alias.patch
index b1dd75a414..b7e4a8c5cc 100644
--- a/target/linux/mediatek/patches-6.6/163-dts-mt7623-bpi-r2-ethernet-alias.patch
+++ b/target/linux/mediatek/patches-6.6/163-dts-mt7623-bpi-r2-ethernet-alias.patch
@@ -1,5 +1,5 @@
---- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
-+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
+--- a/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
++++ b/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
 @@ -15,6 +15,7 @@
  
  	aliases {
diff --git a/target/linux/mediatek/patches-6.6/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch b/target/linux/mediatek/patches-6.6/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch
index 2675aa2589..f1a182b044 100644
--- a/target/linux/mediatek/patches-6.6/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch
+++ b/target/linux/mediatek/patches-6.6/164-dts-mt7623-bpi-r2-rootdisk-for-fitblk.patch
@@ -1,5 +1,5 @@
---- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
-+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
+--- a/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
++++ b/arch/arm/boot/dts/mediatek/mt7623n-bananapi-bpi-r2.dts
 @@ -26,7 +26,9 @@
  
  	chosen {
@@ -11,7 +11,7 @@
  	};
  
  	connector {
-@@ -315,6 +317,20 @@
+@@ -338,6 +340,20 @@
  	vmmc-supply = <&reg_3p3v>;
  	vqmmc-supply = <&reg_1p8v>;
  	non-removable;
@@ -32,7 +32,7 @@
  };
  
  &mmc1 {
-@@ -328,6 +344,20 @@
+@@ -351,6 +367,20 @@
  	cd-gpios = <&pio 261 GPIO_ACTIVE_LOW>;
  	vmmc-supply = <&reg_3p3v>;
  	vqmmc-supply = <&reg_3p3v>;
@@ -52,4 +52,4 @@
 +	};
  };
  
- &mt6323_leds {
+ &mt6323keys {
diff --git a/target/linux/mediatek/patches-6.6/190-arm64-dts-mediatek-mt7622-fix-GICv2-range.patch b/target/linux/mediatek/patches-6.6/190-arm64-dts-mediatek-mt7622-fix-GICv2-range.patch
index 1e04d23a0e..bd0c785fde 100644
--- a/target/linux/mediatek/patches-6.6/190-arm64-dts-mediatek-mt7622-fix-GICv2-range.patch
+++ b/target/linux/mediatek/patches-6.6/190-arm64-dts-mediatek-mt7622-fix-GICv2-range.patch
@@ -95,7 +95,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
 +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
-@@ -346,7 +346,7 @@
+@@ -347,7 +347,7 @@
  		#interrupt-cells = <3>;
  		interrupt-parent = <&gic>;
  		reg = <0 0x10310000 0 0x1000>,
diff --git a/target/linux/mediatek/patches-6.6/193-dts-mt7623-thermal_zone_fix.patch b/target/linux/mediatek/patches-6.6/193-dts-mt7623-thermal_zone_fix.patch
index 1cfb53d620..da9ba5f305 100644
--- a/target/linux/mediatek/patches-6.6/193-dts-mt7623-thermal_zone_fix.patch
+++ b/target/linux/mediatek/patches-6.6/193-dts-mt7623-thermal_zone_fix.patch
@@ -25,11 +25,11 @@ zone, and gives some operational headroom.
 
 Signed-off-by: Bruno Umuarama <anonimou_eu at hotmail.com>
 ---
- arch/arm/boot/dts/mt7623.dtsi | 4 ++--
+ arch/arm/boot/dts/mediatek/mt7623.dtsi | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
---- a/arch/arm/boot/dts/mt7623.dtsi
-+++ b/arch/arm/boot/dts/mt7623.dtsi
+--- a/arch/arm/boot/dts/mediatek/mt7623.dtsi
++++ b/arch/arm/boot/dts/mediatek/mt7623.dtsi
 @@ -160,13 +160,13 @@
  
  				trips {
diff --git a/target/linux/mediatek/patches-6.6/200-phy-phy-mtk-tphy-Add-hifsys-support.patch b/target/linux/mediatek/patches-6.6/200-phy-phy-mtk-tphy-Add-hifsys-support.patch
index 6347533aa8..e07aa5662b 100644
--- a/target/linux/mediatek/patches-6.6/200-phy-phy-mtk-tphy-Add-hifsys-support.patch
+++ b/target/linux/mediatek/patches-6.6/200-phy-phy-mtk-tphy-Add-hifsys-support.patch
@@ -9,7 +9,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
 
 --- a/drivers/phy/mediatek/phy-mtk-tphy.c
 +++ b/drivers/phy/mediatek/phy-mtk-tphy.c
-@@ -17,6 +17,8 @@
+@@ -18,6 +18,8 @@
  #include <linux/phy/phy.h>
  #include <linux/platform_device.h>
  #include <linux/regmap.h>
@@ -18,9 +18,9 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
  
  #include "phy-mtk-io.h"
  
-@@ -264,6 +266,9 @@
+@@ -267,6 +269,9 @@
  
- #define TPHY_CLKS_CNT	2
+ #define USER_BUF_LEN(count) min_t(size_t, 8, (count))
  
 +#define HIF_SYSCFG1			0x14
 +#define HIF_SYSCFG1_PHY2_MASK		(0x3 << 20)
@@ -28,7 +28,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
  enum mtk_phy_version {
  	MTK_PHY_V1 = 1,
  	MTK_PHY_V2,
-@@ -331,6 +336,7 @@ struct mtk_tphy {
+@@ -334,6 +339,7 @@ struct mtk_tphy {
  	void __iomem *sif_base;	/* only shared sif */
  	const struct mtk_phy_pdata *pdata;
  	struct mtk_phy_instance **phys;
@@ -36,7 +36,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
  	int nphys;
  	int src_ref_clk; /* MHZ, reference clock for slew rate calibrate */
  	int src_coef; /* coefficient for slew rate calibrate */
-@@ -596,6 +602,10 @@ static void pcie_phy_instance_init(struc
+@@ -951,6 +957,10 @@ static void pcie_phy_instance_init(struc
  	if (tphy->pdata->version != MTK_PHY_V1)
  		return;
  
@@ -47,7 +47,7 @@ Subject: [PATCH] phy: phy-mtk-tphy: Add hifsys-support
  	mtk_phy_update_bits(phya + U3P_U3_PHYA_DA_REG0,
  			    P3A_RG_XTAL_EXT_PE1H | P3A_RG_XTAL_EXT_PE2H,
  			    FIELD_PREP(P3A_RG_XTAL_EXT_PE1H, 0x2) |
-@@ -1241,6 +1251,16 @@ static int mtk_tphy_probe(struct platfor
+@@ -1597,6 +1607,16 @@ static int mtk_tphy_probe(struct platfor
  					 &tphy->src_coef);
  	}
  
diff --git a/target/linux/mediatek/patches-6.6/232-clk-mediatek-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch b/target/linux/mediatek/patches-6.6/232-clk-mediatek-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch
index 8820d57f01..dd06c4e096 100644
--- a/target/linux/mediatek/patches-6.6/232-clk-mediatek-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch
+++ b/target/linux/mediatek/patches-6.6/232-clk-mediatek-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch
@@ -16,7 +16,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/clk/mediatek/clk-mt7981-topckgen.c
 +++ b/drivers/clk/mediatek/clk-mt7981-topckgen.c
-@@ -359,8 +359,9 @@ static const struct mtk_mux top_muxes[]
+@@ -357,8 +357,9 @@ static const struct mtk_mux top_muxes[]
  	MUX_GATE_CLR_SET_UPD(CLK_TOP_SGM_325M_SEL, "sgm_325m_sel",
  			     sgm_325m_parents, 0x050, 0x054, 0x058, 8, 1, 15,
  			     0x1C0, 21),
diff --git a/target/linux/mediatek/patches-6.6/240-pinctrl-mediatek-add-support-for-MT7988-SoC.patch b/target/linux/mediatek/patches-6.6/240-pinctrl-mediatek-add-support-for-MT7988-SoC.patch
index a365f0860b..c63510b5e2 100644
--- a/target/linux/mediatek/patches-6.6/240-pinctrl-mediatek-add-support-for-MT7988-SoC.patch
+++ b/target/linux/mediatek/patches-6.6/240-pinctrl-mediatek-add-support-for-MT7988-SoC.patch
@@ -1,6 +1,6 @@
 --- a/drivers/pinctrl/mediatek/Kconfig
 +++ b/drivers/pinctrl/mediatek/Kconfig
-@@ -141,6 +141,13 @@ config PINCTRL_MT7986
+@@ -187,6 +187,13 @@ config PINCTRL_MT7986
  	default ARM64 && ARCH_MEDIATEK
  	select PINCTRL_MTK_MOORE
  
@@ -12,15 +12,15 @@
 +	select PINCTRL_MTK_MOORE
 +
  config PINCTRL_MT8167
- 	bool "Mediatek MT8167 pin control"
+ 	bool "MediaTek MT8167 pin control"
  	depends on OF
 --- a/drivers/pinctrl/mediatek/Makefile
 +++ b/drivers/pinctrl/mediatek/Makefile
-@@ -20,6 +20,7 @@ obj-$(CONFIG_PINCTRL_MT7623)	+= pinctrl-
- obj-$(CONFIG_PINCTRL_MT7629)	+= pinctrl-mt7629.o
- obj-$(CONFIG_PINCTRL_MT7981)	+= pinctrl-mt7981.o
- obj-$(CONFIG_PINCTRL_MT7986)	+= pinctrl-mt7986.o
-+obj-$(CONFIG_PINCTRL_MT7988)	+= pinctrl-mt7988.o
- obj-$(CONFIG_PINCTRL_MT8167)	+= pinctrl-mt8167.o
- obj-$(CONFIG_PINCTRL_MT8173)	+= pinctrl-mt8173.o
- obj-$(CONFIG_PINCTRL_MT8183)	+= pinctrl-mt8183.o
+@@ -27,6 +27,7 @@ obj-$(CONFIG_PINCTRL_MT7623)		+= pinctrl
+ obj-$(CONFIG_PINCTRL_MT7629)		+= pinctrl-mt7629.o
+ obj-$(CONFIG_PINCTRL_MT7981)		+= pinctrl-mt7981.o
+ obj-$(CONFIG_PINCTRL_MT7986)		+= pinctrl-mt7986.o
++obj-$(CONFIG_PINCTRL_MT7988)		+= pinctrl-mt7988.o
+ obj-$(CONFIG_PINCTRL_MT8167)		+= pinctrl-mt8167.o
+ obj-$(CONFIG_PINCTRL_MT8173)		+= pinctrl-mt8173.o
+ obj-$(CONFIG_PINCTRL_MT8183)		+= pinctrl-mt8183.o
diff --git a/target/linux/mediatek/patches-6.6/248-v6.8-clk-mediatek-add-pcw_chg_bit-control-for-PLLs-of-MT7.patch b/target/linux/mediatek/patches-6.6/248-v6.8-clk-mediatek-add-pcw_chg_bit-control-for-PLLs-of-MT7.patch
index ca37fc793a..40e87bddfb 100644
--- a/target/linux/mediatek/patches-6.6/248-v6.8-clk-mediatek-add-pcw_chg_bit-control-for-PLLs-of-MT7.patch
+++ b/target/linux/mediatek/patches-6.6/248-v6.8-clk-mediatek-add-pcw_chg_bit-control-for-PLLs-of-MT7.patch
@@ -28,7 +28,7 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
  
  #define AUDPLL_TUNER_EN		BIT(31)
  
-@@ -141,7 +141,8 @@ static void mtk_pll_set_rate_regs(struct
+@@ -114,7 +114,8 @@ static void mtk_pll_set_rate_regs(struct
  			pll->data->pcw_shift);
  	val |= pcw << pll->data->pcw_shift;
  	writel(val, pll->pcw_addr);
@@ -40,11 +40,11 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
  		writel(val + 1, pll->tuner_addr);
 --- a/drivers/clk/mediatek/clk-pll.h
 +++ b/drivers/clk/mediatek/clk-pll.h
-@@ -46,6 +46,7 @@ struct mtk_pll_data {
+@@ -48,6 +48,7 @@ struct mtk_pll_data {
  	const char *parent_name;
  	u32 en_reg;
  	u8 pll_en_bit; /* Assume 0, indicates BIT(0) by default */
 +	u8 pcw_chg_bit;
  };
  
- int mtk_clk_register_plls(struct device_node *node,
+ /*
diff --git a/target/linux/mediatek/patches-6.6/249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch b/target/linux/mediatek/patches-6.6/249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch
index 61664b934c..dab08a5a39 100644
--- a/target/linux/mediatek/patches-6.6/249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch
+++ b/target/linux/mediatek/patches-6.6/249-v6.8-clk-mediatek-add-drivers-for-MT7988-SoC.patch
@@ -33,7 +33,7 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 
 --- a/drivers/clk/mediatek/Kconfig
 +++ b/drivers/clk/mediatek/Kconfig
-@@ -415,6 +415,15 @@ config COMMON_CLK_MT7986_ETHSYS
+@@ -423,6 +423,15 @@ config COMMON_CLK_MT7986_ETHSYS
  	  This driver adds support for clocks for Ethernet and SGMII
  	  required on MediaTek MT7986 SoC.
  
@@ -47,11 +47,11 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 +	  required for various periperals found on this SoC.
 +
  config COMMON_CLK_MT8135
- 	bool "Clock driver for MediaTek MT8135"
+ 	tristate "Clock driver for MediaTek MT8135"
  	depends on (ARCH_MEDIATEK && ARM) || COMPILE_TEST
 --- a/drivers/clk/mediatek/Makefile
 +++ b/drivers/clk/mediatek/Makefile
-@@ -60,6 +60,11 @@ obj-$(CONFIG_COMMON_CLK_MT7986) += clk-m
+@@ -62,6 +62,11 @@ obj-$(CONFIG_COMMON_CLK_MT7986) += clk-m
  obj-$(CONFIG_COMMON_CLK_MT7986) += clk-mt7986-topckgen.o
  obj-$(CONFIG_COMMON_CLK_MT7986) += clk-mt7986-infracfg.o
  obj-$(CONFIG_COMMON_CLK_MT7986_ETHSYS) += clk-mt7986-eth.o
@@ -60,8 +60,8 @@ Signed-off-by: Stephen Boyd <sboyd at kernel.org>
 +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-infracfg.o
 +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-eth.o
 +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-xfipll.o
- obj-$(CONFIG_COMMON_CLK_MT8135) += clk-mt8135.o
- obj-$(CONFIG_COMMON_CLK_MT8167) += clk-mt8167.o
+ obj-$(CONFIG_COMMON_CLK_MT8135) += clk-mt8135-apmixedsys.o clk-mt8135.o
+ obj-$(CONFIG_COMMON_CLK_MT8167) += clk-mt8167-apmixedsys.o clk-mt8167.o
  obj-$(CONFIG_COMMON_CLK_MT8167_AUDSYS) += clk-mt8167-aud.o
 --- /dev/null
 +++ b/drivers/clk/mediatek/clk-mt7988-apmixed.c
diff --git a/target/linux/mediatek/patches-6.6/251-v6.8-watchdog-mediatek-mt7988-add-wdt-support.patch b/target/linux/mediatek/patches-6.6/251-v6.8-watchdog-mediatek-mt7988-add-wdt-support.patch
index cb49ce1d25..b89b385eeb 100644
--- a/target/linux/mediatek/patches-6.6/251-v6.8-watchdog-mediatek-mt7988-add-wdt-support.patch
+++ b/target/linux/mediatek/patches-6.6/251-v6.8-watchdog-mediatek-mt7988-add-wdt-support.patch
@@ -18,7 +18,7 @@ Signed-off-by: Wim Van Sebroeck <wim at linux-watchdog.org>
 
 --- a/drivers/watchdog/mtk_wdt.c
 +++ b/drivers/watchdog/mtk_wdt.c
-@@ -56,9 +56,13 @@
+@@ -58,9 +58,13 @@
  #define WDT_SWSYSRST		0x18U
  #define WDT_SWSYS_RST_KEY	0x88000000
  
@@ -32,10 +32,10 @@ Signed-off-by: Wim Van Sebroeck <wim at linux-watchdog.org>
  static bool nowayout = WATCHDOG_NOWAYOUT;
  static unsigned int timeout;
  
-@@ -68,10 +72,12 @@ struct mtk_wdt_dev {
- 	spinlock_t lock; /* protects WDT_SWSYSRST reg */
+@@ -71,10 +75,12 @@ struct mtk_wdt_dev {
  	struct reset_controller_dev rcdev;
  	bool disable_wdt_extrst;
+ 	bool reset_by_toprgu;
 +	bool has_swsysrst_en;
  };
  
@@ -45,7 +45,7 @@ Signed-off-by: Wim Van Sebroeck <wim at linux-watchdog.org>
  };
  
  static const struct mtk_wdt_data mt2712_data = {
-@@ -82,6 +88,11 @@ static const struct mtk_wdt_data mt7986_
+@@ -89,6 +95,11 @@ static const struct mtk_wdt_data mt7986_
  	.toprgu_sw_rst_num = MT7986_TOPRGU_SW_RST_NUM,
  };
  
@@ -57,7 +57,7 @@ Signed-off-by: Wim Van Sebroeck <wim at linux-watchdog.org>
  static const struct mtk_wdt_data mt8183_data = {
  	.toprgu_sw_rst_num = MT8183_TOPRGU_SW_RST_NUM,
  };
-@@ -98,6 +109,28 @@ static const struct mtk_wdt_data mt8195_
+@@ -109,6 +120,28 @@ static const struct mtk_wdt_data mt8195_
  	.toprgu_sw_rst_num = MT8195_TOPRGU_SW_RST_NUM,
  };
  
@@ -86,7 +86,7 @@ Signed-off-by: Wim Van Sebroeck <wim at linux-watchdog.org>
  static int toprgu_reset_update(struct reset_controller_dev *rcdev,
  			       unsigned long id, bool assert)
  {
-@@ -108,6 +141,9 @@ static int toprgu_reset_update(struct re
+@@ -119,6 +152,9 @@ static int toprgu_reset_update(struct re
  
  	spin_lock_irqsave(&data->lock, flags);
  
@@ -96,7 +96,7 @@ Signed-off-by: Wim Van Sebroeck <wim at linux-watchdog.org>
  	tmp = readl(data->wdt_base + WDT_SWSYSRST);
  	if (assert)
  		tmp |= BIT(id);
-@@ -116,6 +152,9 @@ static int toprgu_reset_update(struct re
+@@ -127,6 +163,9 @@ static int toprgu_reset_update(struct re
  	tmp |= WDT_SWSYS_RST_KEY;
  	writel(tmp, data->wdt_base + WDT_SWSYSRST);
  
@@ -106,7 +106,7 @@ Signed-off-by: Wim Van Sebroeck <wim at linux-watchdog.org>
  	spin_unlock_irqrestore(&data->lock, flags);
  
  	return 0;
-@@ -393,6 +432,8 @@ static int mtk_wdt_probe(struct platform
+@@ -406,6 +445,8 @@ static int mtk_wdt_probe(struct platform
  						       wdt_data->toprgu_sw_rst_num);
  		if (err)
  			return err;
@@ -115,11 +115,11 @@ Signed-off-by: Wim Van Sebroeck <wim at linux-watchdog.org>
  	}
  
  	mtk_wdt->disable_wdt_extrst =
-@@ -427,6 +468,7 @@ static const struct of_device_id mtk_wdt
- 	{ .compatible = "mediatek,mt2712-wdt", .data = &mt2712_data },
+@@ -444,6 +485,7 @@ static const struct of_device_id mtk_wdt
  	{ .compatible = "mediatek,mt6589-wdt" },
+ 	{ .compatible = "mediatek,mt6795-wdt", .data = &mt6795_data },
  	{ .compatible = "mediatek,mt7986-wdt", .data = &mt7986_data },
 +	{ .compatible = "mediatek,mt7988-wdt", .data = &mt7988_data },
  	{ .compatible = "mediatek,mt8183-wdt", .data = &mt8183_data },
  	{ .compatible = "mediatek,mt8186-wdt", .data = &mt8186_data },
- 	{ .compatible = "mediatek,mt8192-wdt", .data = &mt8192_data },
+ 	{ .compatible = "mediatek,mt8188-wdt", .data = &mt8188_data },
diff --git a/target/linux/mediatek/patches-6.6/330-snand-mtk-bmt-support.patch b/target/linux/mediatek/patches-6.6/330-snand-mtk-bmt-support.patch
index 55a308e46c..8a4ec2bcbd 100644
--- a/target/linux/mediatek/patches-6.6/330-snand-mtk-bmt-support.patch
+++ b/target/linux/mediatek/patches-6.6/330-snand-mtk-bmt-support.patch
@@ -8,7 +8,7 @@
  
  static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
  {
-@@ -1344,6 +1345,7 @@ static int spinand_probe(struct spi_mem
+@@ -1345,6 +1346,7 @@ static int spinand_probe(struct spi_mem
  	if (ret)
  		return ret;
  
@@ -16,7 +16,7 @@
  	ret = mtd_device_register(mtd, NULL, 0);
  	if (ret)
  		goto err_spinand_cleanup;
-@@ -1351,6 +1353,7 @@ static int spinand_probe(struct spi_mem
+@@ -1352,6 +1354,7 @@ static int spinand_probe(struct spi_mem
  	return 0;
  
  err_spinand_cleanup:
@@ -24,7 +24,7 @@
  	spinand_cleanup(spinand);
  
  	return ret;
-@@ -1369,6 +1372,7 @@ static int spinand_remove(struct spi_mem
+@@ -1370,6 +1373,7 @@ static int spinand_remove(struct spi_mem
  	if (ret)
  		return ret;
  
diff --git a/target/linux/mediatek/patches-6.6/331-mt7622-rfb1-enable-bmt.patch b/target/linux/mediatek/patches-6.6/331-mt7622-rfb1-enable-bmt.patch
index 3e956701cd..6d6463aade 100644
--- a/target/linux/mediatek/patches-6.6/331-mt7622-rfb1-enable-bmt.patch
+++ b/target/linux/mediatek/patches-6.6/331-mt7622-rfb1-enable-bmt.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
-@@ -548,6 +548,7 @@
+@@ -547,6 +547,7 @@
  		spi-tx-bus-width = <4>;
  		spi-rx-bus-width = <4>;
  		nand-ecc-engine = <&snfi>;
diff --git a/target/linux/mediatek/patches-6.6/340-mtd-spinand-Add-support-for-the-Fidelix-FM35X1GA.patch b/target/linux/mediatek/patches-6.6/340-mtd-spinand-Add-support-for-the-Fidelix-FM35X1GA.patch
index ec66363dc9..7188c254ba 100644
--- a/target/linux/mediatek/patches-6.6/340-mtd-spinand-Add-support-for-the-Fidelix-FM35X1GA.patch
+++ b/target/linux/mediatek/patches-6.6/340-mtd-spinand-Add-support-for-the-Fidelix-FM35X1GA.patch
@@ -16,15 +16,16 @@ Signed-off-by: Davide Fioravanti <pantanastyle at gmail.com>
 
 --- a/drivers/mtd/nand/spi/Makefile
 +++ b/drivers/mtd/nand/spi/Makefile
-@@ -1,3 +1,3 @@
+@@ -1,4 +1,4 @@
  # SPDX-License-Identifier: GPL-2.0
--spinand-objs := core.o ato.o esmt.o etron.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
-+spinand-objs := core.o ato.o esmt.o etron.o fidelix.o gigadevice.o macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
+-spinand-objs := core.o alliancememory.o ato.o esmt.o etron.o gigadevice.o
++spinand-objs := core.o alliancememory.o ato.o esmt.o etron.o fidelix.o gigadevice.o
+ spinand-objs += macronix.o micron.o paragon.o toshiba.o winbond.o xtx.o
  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
 --- a/drivers/mtd/nand/spi/core.c
 +++ b/drivers/mtd/nand/spi/core.c
-@@ -940,6 +940,7 @@ static const struct nand_ops spinand_ops
- static const struct spinand_manufacturer *spinand_manufacturers[] = {
+@@ -941,6 +941,7 @@ static const struct spinand_manufacturer
+ 	&alliancememory_spinand_manufacturer,
  	&ato_spinand_manufacturer,
  	&esmt_c8_spinand_manufacturer,
 +	&fidelix_spinand_manufacturer,
@@ -112,7 +113,7 @@ Signed-off-by: Davide Fioravanti <pantanastyle at gmail.com>
 +};
 --- a/include/linux/mtd/spinand.h
 +++ b/include/linux/mtd/spinand.h
-@@ -263,6 +263,7 @@ struct spinand_manufacturer {
+@@ -264,6 +264,7 @@ extern const struct spinand_manufacturer
  extern const struct spinand_manufacturer ato_spinand_manufacturer;
  extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer;
  extern const struct spinand_manufacturer etron_spinand_manufacturer;
diff --git a/target/linux/mediatek/patches-6.6/350-21-cpufreq-mediatek-Add-support-for-MT7988.patch b/target/linux/mediatek/patches-6.6/350-21-cpufreq-mediatek-Add-support-for-MT7988.patch
index 49cd62d0ae..f7b62f1d94 100644
--- a/target/linux/mediatek/patches-6.6/350-21-cpufreq-mediatek-Add-support-for-MT7988.patch
+++ b/target/linux/mediatek/patches-6.6/350-21-cpufreq-mediatek-Add-support-for-MT7988.patch
@@ -15,7 +15,7 @@ Signed-off-by: Sam Shih <sam.shih at mediatek.com>
 
 --- a/drivers/cpufreq/mediatek-cpufreq.c
 +++ b/drivers/cpufreq/mediatek-cpufreq.c
-@@ -709,6 +709,15 @@ static const struct mtk_cpufreq_platform
+@@ -707,6 +707,15 @@ static const struct mtk_cpufreq_platform
  	.ccifreq_supported = false,
  };
  
@@ -31,7 +31,7 @@ Signed-off-by: Sam Shih <sam.shih at mediatek.com>
  static const struct mtk_cpufreq_platform_data mt8183_platform_data = {
  	.min_volt_shift = 100000,
  	.max_volt_shift = 200000,
-@@ -742,6 +751,7 @@ static const struct of_device_id mtk_cpu
+@@ -740,6 +749,7 @@ static const struct of_device_id mtk_cpu
  	{ .compatible = "mediatek,mt2712", .data = &mt2701_platform_data },
  	{ .compatible = "mediatek,mt7622", .data = &mt7622_platform_data },
  	{ .compatible = "mediatek,mt7623", .data = &mt7623_platform_data },
diff --git a/target/linux/mediatek/patches-6.6/400-crypto-add-eip97-inside-secure-support.patch b/target/linux/mediatek/patches-6.6/400-crypto-add-eip97-inside-secure-support.patch
index 25ca9485e4..5808a93495 100644
--- a/target/linux/mediatek/patches-6.6/400-crypto-add-eip97-inside-secure-support.patch
+++ b/target/linux/mediatek/patches-6.6/400-crypto-add-eip97-inside-secure-support.patch
@@ -1,6 +1,6 @@
 --- a/drivers/crypto/inside-secure/safexcel.c
 +++ b/drivers/crypto/inside-secure/safexcel.c
-@@ -600,6 +600,14 @@ static int safexcel_hw_init(struct safex
+@@ -608,6 +608,14 @@ static int safexcel_hw_init(struct safex
  		val |= EIP197_MST_CTRL_TX_MAX_CMD(5);
  		writel(val, EIP197_HIA_AIC(priv) + EIP197_HIA_MST_CTRL);
  	}
diff --git a/target/linux/mediatek/patches-6.6/401-crypto-fix-eip97-cache-incoherent.patch b/target/linux/mediatek/patches-6.6/401-crypto-fix-eip97-cache-incoherent.patch
index 186c66f687..bd22b3699b 100644
--- a/target/linux/mediatek/patches-6.6/401-crypto-fix-eip97-cache-incoherent.patch
+++ b/target/linux/mediatek/patches-6.6/401-crypto-fix-eip97-cache-incoherent.patch
@@ -1,6 +1,6 @@
 --- a/drivers/crypto/inside-secure/safexcel.h
 +++ b/drivers/crypto/inside-secure/safexcel.h
-@@ -737,6 +737,9 @@ enum safexcel_eip_version {
+@@ -743,6 +743,9 @@ struct safexcel_priv_data {
  /* Priority we use for advertising our algorithms */
  #define SAFEXCEL_CRA_PRIORITY		300
  
diff --git a/target/linux/mediatek/patches-6.6/410-bt-mtk-serial-fix.patch b/target/linux/mediatek/patches-6.6/410-bt-mtk-serial-fix.patch
index 5b94c9216d..f377487975 100644
--- a/target/linux/mediatek/patches-6.6/410-bt-mtk-serial-fix.patch
+++ b/target/linux/mediatek/patches-6.6/410-bt-mtk-serial-fix.patch
@@ -19,7 +19,7 @@
  	},
  	[PORT_NPCM] = {
  		.name		= "Nuvoton 16550",
-@@ -2773,6 +2773,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2780,6 +2780,11 @@ serial8250_do_set_termios(struct uart_po
  	unsigned long flags;
  	unsigned int baud, quot, frac = 0;
  
diff --git a/target/linux/mediatek/patches-6.6/431-drivers-spi-mt65xx-Move-chip_config-to-driver-s-priv.patch b/target/linux/mediatek/patches-6.6/431-drivers-spi-mt65xx-Move-chip_config-to-driver-s-priv.patch
index 8c2c80d6bf..a0bd46c5b7 100644
--- a/target/linux/mediatek/patches-6.6/431-drivers-spi-mt65xx-Move-chip_config-to-driver-s-priv.patch
+++ b/target/linux/mediatek/patches-6.6/431-drivers-spi-mt65xx-Move-chip_config-to-driver-s-priv.patch
@@ -94,9 +94,9 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
 -	if (!spi->controller_data)
 -		spi->controller_data = (void *)&mtk_default_chip_info;
 -
- 	if (mdata->dev_comp->need_pad_sel && spi->cs_gpiod)
+ 	if (mdata->dev_comp->need_pad_sel && spi_get_csgpiod(spi, 0))
  		/* CS de-asserted, gpiolib will handle inversion */
- 		gpiod_direction_output(spi->cs_gpiod, 0);
+ 		gpiod_direction_output(spi_get_csgpiod(spi, 0), 0);
 @@ -1138,6 +1126,10 @@ static int mtk_spi_probe(struct platform
  	mdata = spi_master_get_devdata(master);
  	mdata->dev_comp = device_get_match_data(dev);
diff --git a/target/linux/mediatek/patches-6.6/432-drivers-spi-Add-support-for-dynamic-calibration.patch b/target/linux/mediatek/patches-6.6/432-drivers-spi-Add-support-for-dynamic-calibration.patch
index b2c9df4386..b5505c803a 100644
--- a/target/linux/mediatek/patches-6.6/432-drivers-spi-Add-support-for-dynamic-calibration.patch
+++ b/target/linux/mediatek/patches-6.6/432-drivers-spi-Add-support-for-dynamic-calibration.patch
@@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
 
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -1385,6 +1385,70 @@ static int spi_transfer_wait(struct spi_
+@@ -1366,6 +1366,70 @@ static int spi_transfer_wait(struct spi_
  	return 0;
  }
  
@@ -82,7 +82,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
  static void _spi_transfer_delay_ns(u32 ns)
  {
  	if (!ns)
-@@ -2223,6 +2287,75 @@ void spi_flush_queue(struct spi_controll
+@@ -2211,6 +2275,75 @@ void spi_flush_queue(struct spi_controll
  /*-------------------------------------------------------------------------*/
  
  #if defined(CONFIG_OF)
@@ -155,10 +155,10 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
 +	return 0;
 +}
 +
- static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi,
- 			   struct device_node *nc)
+ static void of_spi_parse_dt_cs_delay(struct device_node *nc,
+ 				     struct spi_delay *delay, const char *prop)
  {
-@@ -2341,6 +2474,10 @@ of_register_spi_device(struct spi_contro
+@@ -2350,6 +2483,10 @@ of_register_spi_device(struct spi_contro
  	if (rc)
  		goto err_out;
  
@@ -168,10 +168,10 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
 +
  	/* Store a pointer to the node in the device structure */
  	of_node_get(nc);
- 	spi->dev.of_node = nc;
+ 
 --- a/include/linux/spi/spi.h
 +++ b/include/linux/spi/spi.h
-@@ -318,6 +318,40 @@ struct spi_driver {
+@@ -330,6 +330,40 @@ struct spi_driver {
  	struct device_driver	driver;
  };
  
@@ -212,7 +212,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
  static inline struct spi_driver *to_spi_driver(struct device_driver *drv)
  {
  	return drv ? container_of(drv, struct spi_driver, driver) : NULL;
-@@ -703,6 +737,11 @@ struct spi_controller {
+@@ -727,6 +761,11 @@ struct spi_controller {
  	void			*dummy_rx;
  	void			*dummy_tx;
  
@@ -224,13 +224,13 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
  	int (*fw_translate_cs)(struct spi_controller *ctlr, unsigned cs);
  
  	/*
-@@ -1510,6 +1549,9 @@ spi_register_board_info(struct spi_board
+@@ -1600,6 +1639,9 @@ spi_register_board_info(struct spi_board
  	{ return 0; }
  #endif
  
 +extern int spi_do_calibration(struct spi_controller *ctlr,
 +	struct spi_device *spi, int (*cal_read)(void *, u32 *, int, u8 *, int), void *drv_priv);
 +
- /* If you're hotplugging an adapter with devices (parport, usb, etc)
+ /*
+  * If you're hotplugging an adapter with devices (parport, USB, etc)
   * use spi_new_device() to describe each device.  You can also call
-  * spi_unregister_device() to start making that device vanish, but
diff --git a/target/linux/mediatek/patches-6.6/433-drivers-spi-mem-Add-spi-calibration-hook.patch b/target/linux/mediatek/patches-6.6/433-drivers-spi-mem-Add-spi-calibration-hook.patch
index e87d63db69..d9fe480b17 100644
--- a/target/linux/mediatek/patches-6.6/433-drivers-spi-mem-Add-spi-calibration-hook.patch
+++ b/target/linux/mediatek/patches-6.6/433-drivers-spi-mem-Add-spi-calibration-hook.patch
@@ -28,7 +28,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
   *			upper layer if necessary
 --- a/include/linux/spi/spi-mem.h
 +++ b/include/linux/spi/spi-mem.h
-@@ -366,6 +366,10 @@ bool spi_mem_supports_op(struct spi_mem
+@@ -370,6 +370,10 @@ bool spi_mem_supports_op(struct spi_mem
  int spi_mem_exec_op(struct spi_mem *mem,
  		    const struct spi_mem_op *op);
  
diff --git a/target/linux/mediatek/patches-6.6/435-drivers-mtd-spinand-Add-calibration-support-for-spin.patch b/target/linux/mediatek/patches-6.6/435-drivers-mtd-spinand-Add-calibration-support-for-spin.patch
index 3991d8925a..bd8e738a37 100644
--- a/target/linux/mediatek/patches-6.6/435-drivers-mtd-spinand-Add-calibration-support-for-spin.patch
+++ b/target/linux/mediatek/patches-6.6/435-drivers-mtd-spinand-Add-calibration-support-for-spin.patch
@@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
 
 --- a/drivers/mtd/nand/spi/core.c
 +++ b/drivers/mtd/nand/spi/core.c
-@@ -978,6 +978,56 @@ static int spinand_manufacturer_match(st
+@@ -979,6 +979,56 @@ static int spinand_manufacturer_match(st
  	return -ENOTSUPP;
  }
  
@@ -68,7 +68,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
  static int spinand_id_detect(struct spinand_device *spinand)
  {
  	u8 *id = spinand->id.data;
-@@ -1228,6 +1278,10 @@ static int spinand_init(struct spinand_d
+@@ -1229,6 +1279,10 @@ static int spinand_init(struct spinand_d
  	if (!spinand->scratchbuf)
  		return -ENOMEM;
  
diff --git a/target/linux/mediatek/patches-6.6/436-drivers-mtd-spi-nor-Add-calibration-support-for-spi-.patch b/target/linux/mediatek/patches-6.6/436-drivers-mtd-spi-nor-Add-calibration-support-for-spi-.patch
index 1f747d1f4f..744042ae1a 100644
--- a/target/linux/mediatek/patches-6.6/436-drivers-mtd-spi-nor-Add-calibration-support-for-spi-.patch
+++ b/target/linux/mediatek/patches-6.6/436-drivers-mtd-spi-nor-Add-calibration-support-for-spi-.patch
@@ -12,7 +12,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
 
 --- a/drivers/mtd/nand/spi/core.c
 +++ b/drivers/mtd/nand/spi/core.c
-@@ -1019,7 +1019,10 @@ int spinand_cal_read(void *priv, u32 *ad
+@@ -1020,7 +1020,10 @@ int spinand_cal_read(void *priv, u32 *ad
  	if (ret)
  		return ret;
  
@@ -26,7 +26,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
  
 --- a/drivers/mtd/spi-nor/core.c
 +++ b/drivers/mtd/spi-nor/core.c
-@@ -2900,6 +2900,18 @@ static const struct flash_info *spi_nor_
+@@ -3378,6 +3378,18 @@ static const struct flash_info *spi_nor_
  	return NULL;
  }
  
@@ -45,9 +45,9 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
  static const struct flash_info *spi_nor_get_flash_info(struct spi_nor *nor,
  						       const char *name)
  {
-@@ -3003,6 +3015,9 @@ int spi_nor_scan(struct spi_nor *nor, co
- 	if (!nor->bouncebuf)
- 		return -ENOMEM;
+@@ -3506,6 +3518,9 @@ int spi_nor_scan(struct spi_nor *nor, co
+ 	if (ret)
+ 		return ret;
  
 +	if(nor->spimem)
 +		spi_mem_do_calibration(nor->spimem, spi_nor_cal_read, nor);
diff --git a/target/linux/mediatek/patches-6.6/500-gsw-rtl8367s-mt7622-support.patch b/target/linux/mediatek/patches-6.6/500-gsw-rtl8367s-mt7622-support.patch
index 487990ab77..73f735828f 100644
--- a/target/linux/mediatek/patches-6.6/500-gsw-rtl8367s-mt7622-support.patch
+++ b/target/linux/mediatek/patches-6.6/500-gsw-rtl8367s-mt7622-support.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -384,6 +384,12 @@ config ROCKCHIP_PHY
+@@ -419,6 +419,12 @@ config ROCKCHIP_PHY
  	help
  	  Currently supports the integrated Ethernet PHY.
  
@@ -12,10 +12,10 @@
 +
  config SMSC_PHY
  	tristate "SMSC PHYs"
- 	help
+ 	select CRC16
 --- a/drivers/net/phy/Makefile
 +++ b/drivers/net/phy/Makefile
-@@ -95,6 +95,7 @@ obj-$(CONFIG_QSEMI_PHY)		+= qsemi.o
+@@ -102,6 +102,7 @@ obj-$(CONFIG_QSEMI_PHY)		+= qsemi.o
  obj-$(CONFIG_REALTEK_PHY)	+= realtek.o
  obj-$(CONFIG_RENESAS_PHY)	+= uPD60620.o
  obj-$(CONFIG_ROCKCHIP_PHY)	+= rockchip.o
diff --git a/target/linux/mediatek/patches-6.6/732-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch b/target/linux/mediatek/patches-6.6/732-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch
index 76d8b0ef00..80179cc7dc 100644
--- a/target/linux/mediatek/patches-6.6/732-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch
+++ b/target/linux/mediatek/patches-6.6/732-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch
@@ -14,7 +14,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/mxl-gpy.c
 +++ b/drivers/net/phy/mxl-gpy.c
-@@ -371,8 +371,11 @@ static bool gpy_2500basex_chk(struct phy
+@@ -386,8 +386,11 @@ static bool gpy_2500basex_chk(struct phy
  
  	phydev->speed = SPEED_2500;
  	phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
@@ -28,7 +28,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return true;
  }
  
-@@ -396,6 +399,14 @@ static int gpy_config_aneg(struct phy_de
+@@ -438,6 +441,14 @@ static int gpy_config_aneg(struct phy_de
  	u32 adv;
  	int ret;
  
@@ -43,7 +43,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	if (phydev->autoneg == AUTONEG_DISABLE) {
  		/* Configure half duplex with genphy_setup_forced,
  		 * because genphy_c45_pma_setup_forced does not support.
-@@ -486,6 +497,8 @@ static void gpy_update_interface(struct
+@@ -560,6 +571,8 @@ static int gpy_update_interface(struct p
  	switch (phydev->speed) {
  	case SPEED_2500:
  		phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
@@ -51,8 +51,8 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +			break;
  		ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
  				     VSPEC1_SGMII_CTRL_ANEN, 0);
- 		if (ret < 0)
-@@ -497,7 +510,7 @@ static void gpy_update_interface(struct
+ 		if (ret < 0) {
+@@ -573,7 +586,7 @@ static int gpy_update_interface(struct p
  	case SPEED_100:
  	case SPEED_10:
  		phydev->interface = PHY_INTERFACE_MODE_SGMII;
diff --git a/target/linux/mediatek/patches-6.6/733-net-phy-add-driver-for-MediaTek-2.5G-PHY.patch b/target/linux/mediatek/patches-6.6/733-net-phy-add-driver-for-MediaTek-2.5G-PHY.patch
index b4c07a4b1f..74b16be152 100644
--- a/target/linux/mediatek/patches-6.6/733-net-phy-add-driver-for-MediaTek-2.5G-PHY.patch
+++ b/target/linux/mediatek/patches-6.6/733-net-phy-add-driver-for-MediaTek-2.5G-PHY.patch
@@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/Kconfig
 +++ b/drivers/net/phy/Kconfig
-@@ -326,6 +326,13 @@ config MEDIATEK_GE_SOC_PHY
+@@ -330,6 +330,13 @@ config MEDIATEK_GE_SOC_PHY
  	  present in the SoCs efuse and will dynamically calibrate VCM
  	  (common-mode voltage) during startup.
  
@@ -29,8 +29,8 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	depends on PTP_1588_CLOCK_OPTIONAL
 --- a/drivers/net/phy/Makefile
 +++ b/drivers/net/phy/Makefile
-@@ -79,6 +79,7 @@ obj-$(CONFIG_MARVELL_10G_PHY)	+= marvell
- obj-$(CONFIG_MARVELL_PHY)	+= marvell.o
+@@ -82,6 +82,7 @@ obj-$(CONFIG_MARVELL_PHY)	+= marvell.o
+ obj-$(CONFIG_MARVELL_88Q2XXX_PHY)	+= marvell-88q2xxx.o
  obj-$(CONFIG_MARVELL_88X2222_PHY)	+= marvell-88x2222.o
  obj-$(CONFIG_MAXLINEAR_GPHY)	+= mxl-gpy.o
 +obj-$(CONFIG_MEDIATEK_2P5G_PHY)	+= mediatek-2p5ge.o
diff --git a/target/linux/mediatek/patches-6.6/831-thermal-drivers-mediatek-Fix-control-buffer-enablement-on-MT7896.patch b/target/linux/mediatek/patches-6.6/831-thermal-drivers-mediatek-Fix-control-buffer-enablement-on-MT7896.patch
index fc173646e0..bf9fa57113 100644
--- a/target/linux/mediatek/patches-6.6/831-thermal-drivers-mediatek-Fix-control-buffer-enablement-on-MT7896.patch
+++ b/target/linux/mediatek/patches-6.6/831-thermal-drivers-mediatek-Fix-control-buffer-enablement-on-MT7896.patch
@@ -47,7 +47,7 @@ Reviewed-by: Markus Schneider-Pargmann <msp at baylibre.com>
 
 --- a/drivers/thermal/mediatek/auxadc_thermal.c
 +++ b/drivers/thermal/mediatek/auxadc_thermal.c
-@@ -691,6 +691,9 @@ static const struct mtk_thermal_data mt7
+@@ -690,6 +690,9 @@ static const struct mtk_thermal_data mt7
  	.adcpnp = mt7986_adcpnp,
  	.sensor_mux_values = mt7986_mux_values,
  	.version = MTK_THERMAL_V3,
diff --git a/target/linux/mediatek/patches-6.6/855-i2c-mt65xx-allow-optional-pmic-clock.patch b/target/linux/mediatek/patches-6.6/855-i2c-mt65xx-allow-optional-pmic-clock.patch
index 69cc155d8d..544bd4cce0 100644
--- a/target/linux/mediatek/patches-6.6/855-i2c-mt65xx-allow-optional-pmic-clock.patch
+++ b/target/linux/mediatek/patches-6.6/855-i2c-mt65xx-allow-optional-pmic-clock.patch
@@ -19,7 +19,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/i2c/busses/i2c-mt65xx.c
 +++ b/drivers/i2c/busses/i2c-mt65xx.c
-@@ -1444,15 +1444,19 @@ static int mtk_i2c_probe(struct platform
+@@ -1442,15 +1442,19 @@ static int mtk_i2c_probe(struct platform
  	if (IS_ERR(i2c->clocks[I2C_MT65XX_CLK_ARB].clk))
  		return PTR_ERR(i2c->clocks[I2C_MT65XX_CLK_ARB].clk);
  
diff --git a/target/linux/mediatek/patches-6.6/864-arm64-dts-mt7986-add-sound-overlay-for-bpi-r3.patch b/target/linux/mediatek/patches-6.6/864-arm64-dts-mt7986-add-sound-overlay-for-bpi-r3.patch
index bddcd4bb0c..784ae5b613 100644
--- a/target/linux/mediatek/patches-6.6/864-arm64-dts-mt7986-add-sound-overlay-for-bpi-r3.patch
+++ b/target/linux/mediatek/patches-6.6/864-arm64-dts-mt7986-add-sound-overlay-for-bpi-r3.patch
@@ -65,7 +65,7 @@
 +};
 --- a/arch/arm64/boot/dts/mediatek/Makefile
 +++ b/arch/arm64/boot/dts/mediatek/Makefile
-@@ -12,6 +12,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-b
+@@ -13,6 +13,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-b
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-nand.dtbo
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-nor.dtbo
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-sd.dtbo
diff --git a/target/linux/mediatek/patches-6.6/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch b/target/linux/mediatek/patches-6.6/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch
index 6dede02003..be63dbf761 100644
--- a/target/linux/mediatek/patches-6.6/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch
+++ b/target/linux/mediatek/patches-6.6/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
-@@ -312,7 +312,7 @@
+@@ -311,7 +311,7 @@
  	/* Attention: GPIO 90 is used to switch between PCIe at 1,0 and
  	 * SATA functions. i.e. output-high: PCIe, output-low: SATA
  	 */
diff --git a/target/linux/mediatek/patches-6.6/901-arm-add-cmdline-override.patch b/target/linux/mediatek/patches-6.6/901-arm-add-cmdline-override.patch
index bfca4b6389..8397915b26 100644
--- a/target/linux/mediatek/patches-6.6/901-arm-add-cmdline-override.patch
+++ b/target/linux/mediatek/patches-6.6/901-arm-add-cmdline-override.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm/Kconfig
 +++ b/arch/arm/Kconfig
-@@ -1589,6 +1589,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
+@@ -1568,6 +1568,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
  
  endchoice
  
@@ -17,7 +17,7 @@
  	default ""
 --- a/drivers/of/fdt.c
 +++ b/drivers/of/fdt.c
-@@ -1187,6 +1187,17 @@ int __init early_init_dt_scan_chosen(cha
+@@ -1189,6 +1189,17 @@ int __init early_init_dt_scan_chosen(cha
  	if (p != NULL && l > 0)
  		strlcat(cmdline, p, min_t(int, strlen(cmdline) + (int)l, COMMAND_LINE_SIZE));
  
@@ -37,7 +37,7 @@
  	 * CONFIG_CMDLINE is meant to be a default in case nothing else
 --- a/arch/arm64/Kconfig
 +++ b/arch/arm64/Kconfig
-@@ -2240,6 +2240,14 @@ config CMDLINE_FORCE
+@@ -2269,6 +2269,14 @@ config CMDLINE_FORCE
  
  endchoice
  
diff --git a/target/linux/mediatek/patches-6.6/910-dts-mt7622-bpi-r64-wifi-eeprom.patch b/target/linux/mediatek/patches-6.6/910-dts-mt7622-bpi-r64-wifi-eeprom.patch
index 09ce417c35..50a7e261f0 100644
--- a/target/linux/mediatek/patches-6.6/910-dts-mt7622-bpi-r64-wifi-eeprom.patch
+++ b/target/linux/mediatek/patches-6.6/910-dts-mt7622-bpi-r64-wifi-eeprom.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
-@@ -639,5 +639,28 @@
+@@ -638,5 +638,28 @@
  };
  
  &wmac {
diff --git a/target/linux/mediatek/patches-6.6/911-dts-mt7622-bpi-r64-add-rootdisk.patch b/target/linux/mediatek/patches-6.6/911-dts-mt7622-bpi-r64-add-rootdisk.patch
index 5d3153ded4..6b958ca1d4 100644
--- a/target/linux/mediatek/patches-6.6/911-dts-mt7622-bpi-r64-add-rootdisk.patch
+++ b/target/linux/mediatek/patches-6.6/911-dts-mt7622-bpi-r64-add-rootdisk.patch
@@ -37,7 +37,7 @@
  };
  
  &mmc1 {
-@@ -249,6 +272,26 @@
+@@ -248,6 +271,26 @@
  	vqmmc-supply = <&reg_3p3v>;
  	assigned-clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>;
  	assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
@@ -64,16 +64,18 @@
  };
  
  &nandc {
-@@ -283,14 +326,29 @@
+@@ -281,15 +324,30 @@
+ 				read-only;
  			};
  
- 			partition at 80000 {
+-			partition at 80000 {
 -				label = "fip";
 -				reg = <0x80000 0x200000>;
 -				read-only;
 -			};
 -
 -			ubi: partition at 280000 {
++			ubi: partition at 80000 {
  				label = "ubi";
 -				reg = <0x280000 0x7d80000>;
 +				reg = <0x80000 0x7f80000>;
diff --git a/target/linux/mediatek/patches-6.6/930-spi-mt65xx-enable-sel-clk.patch b/target/linux/mediatek/patches-6.6/930-spi-mt65xx-enable-sel-clk.patch
index 6e6810b42a..5a387e4d6c 100644
--- a/target/linux/mediatek/patches-6.6/930-spi-mt65xx-enable-sel-clk.patch
+++ b/target/linux/mediatek/patches-6.6/930-spi-mt65xx-enable-sel-clk.patch
@@ -1,6 +1,6 @@
 --- a/drivers/spi/spi-mt65xx.c
 +++ b/drivers/spi/spi-mt65xx.c
-@@ -1225,8 +1225,15 @@ static int mtk_spi_probe(struct platform
+@@ -1226,8 +1226,15 @@ static int mtk_spi_probe(struct platform
  	if (ret < 0)
  		return dev_err_probe(dev, ret, "failed to enable hclk\n");
  
diff --git a/target/linux/mediatek/patches-6.6/941-arm64-dts-mt7986-move-cpuboot-in-a-dedicated-node.patch b/target/linux/mediatek/patches-6.6/941-arm64-dts-mt7986-move-cpuboot-in-a-dedicated-node.patch
index 3ba485346c..6d75d6ed2a 100644
--- a/target/linux/mediatek/patches-6.6/941-arm64-dts-mt7986-move-cpuboot-in-a-dedicated-node.patch
+++ b/target/linux/mediatek/patches-6.6/941-arm64-dts-mt7986-move-cpuboot-in-a-dedicated-node.patch
@@ -24,7 +24,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	};
  
  	timer {
-@@ -540,10 +534,11 @@
+@@ -544,10 +538,11 @@
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
  			memory-region = <&wo_emi0>, <&wo_ilm0>, <&wo_dlm0>,
@@ -38,7 +38,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		};
  
  		wed1: wed at 15011000 {
-@@ -553,10 +548,11 @@
+@@ -557,10 +552,11 @@
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
  			memory-region = <&wo_emi1>, <&wo_ilm1>, <&wo_dlm1>,
@@ -52,7 +52,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		};
  
  		wo_ccif0: syscon at 151a5000 {
-@@ -573,6 +569,11 @@
+@@ -577,6 +573,11 @@
  			interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
  		};
  
diff --git a/target/linux/mediatek/patches-6.6/944-net-ethernet-mtk_wed-move-dlm-a-dedicated-dts-node.patch b/target/linux/mediatek/patches-6.6/944-net-ethernet-mtk_wed-move-dlm-a-dedicated-dts-node.patch
index c92fcd43ce..0701743ffb 100644
--- a/target/linux/mediatek/patches-6.6/944-net-ethernet-mtk_wed-move-dlm-a-dedicated-dts-node.patch
+++ b/target/linux/mediatek/patches-6.6/944-net-ethernet-mtk_wed-move-dlm-a-dedicated-dts-node.patch
@@ -22,7 +22,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -1320,6 +1320,24 @@ mtk_wed_rro_alloc(struct mtk_wed_device
+@@ -1321,6 +1321,24 @@ mtk_wed_rro_alloc(struct mtk_wed_device
  	struct device_node *np;
  	int index;
  
@@ -47,7 +47,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	index = of_property_match_string(dev->hw->node, "memory-region-names",
  					 "wo-dlm");
  	if (index < 0)
-@@ -1336,6 +1354,7 @@ mtk_wed_rro_alloc(struct mtk_wed_device
+@@ -1337,6 +1355,7 @@ mtk_wed_rro_alloc(struct mtk_wed_device
  		return -ENODEV;
  
  	dev->rro.miod_phys = rmem->base;
diff --git a/target/linux/mediatek/patches-6.6/945-arm64-dts-mt7986-move-ilm-in-a-dedicated-node.patch b/target/linux/mediatek/patches-6.6/945-arm64-dts-mt7986-move-ilm-in-a-dedicated-node.patch
index 0ba9bd7cf0..65c143e2f5 100644
--- a/target/linux/mediatek/patches-6.6/945-arm64-dts-mt7986-move-ilm-in-a-dedicated-node.patch
+++ b/target/linux/mediatek/patches-6.6/945-arm64-dts-mt7986-move-ilm-in-a-dedicated-node.patch
@@ -34,7 +34,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		wo_data: wo-data at 4fd80000 {
  			reg = <0 0x4fd80000 0 0x240000>;
  			no-map;
-@@ -533,11 +523,10 @@
+@@ -537,11 +527,10 @@
  			reg = <0 0x15010000 0 0x1000>;
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
@@ -49,7 +49,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mediatek,wo-cpuboot = <&wo_cpuboot>;
  		};
  
-@@ -547,11 +536,10 @@
+@@ -551,11 +540,10 @@
  			reg = <0 0x15011000 0 0x1000>;
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
@@ -64,7 +64,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mediatek,wo-cpuboot = <&wo_cpuboot>;
  		};
  
-@@ -569,6 +557,16 @@
+@@ -573,6 +561,16 @@
  			interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
  		};
  
diff --git a/target/linux/mediatek/patches-6.6/946-arm64-dts-mt7986-move-dlm-in-a-dedicated-node.patch b/target/linux/mediatek/patches-6.6/946-arm64-dts-mt7986-move-dlm-in-a-dedicated-node.patch
index 90b2bb91a2..c8a6bdea6a 100644
--- a/target/linux/mediatek/patches-6.6/946-arm64-dts-mt7986-move-dlm-in-a-dedicated-node.patch
+++ b/target/linux/mediatek/patches-6.6/946-arm64-dts-mt7986-move-dlm-in-a-dedicated-node.patch
@@ -34,7 +34,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	};
  
  	timer {
-@@ -523,10 +513,11 @@
+@@ -527,10 +517,11 @@
  			reg = <0 0x15010000 0 0x1000>;
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
@@ -48,7 +48,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mediatek,wo-cpuboot = <&wo_cpuboot>;
  		};
  
-@@ -536,10 +527,11 @@
+@@ -540,10 +531,11 @@
  			reg = <0 0x15011000 0 0x1000>;
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
@@ -62,7 +62,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mediatek,wo-cpuboot = <&wo_cpuboot>;
  		};
  
-@@ -567,6 +559,16 @@
+@@ -571,6 +563,16 @@
  			reg = <0 0x151f0000 0 0x8000>;
  		};
  
diff --git a/target/linux/mediatek/patches-6.6/950-smartrg-i2c-led-driver.patch b/target/linux/mediatek/patches-6.6/950-smartrg-i2c-led-driver.patch
index 8b86c50429..cb3b394dc6 100644
--- a/target/linux/mediatek/patches-6.6/950-smartrg-i2c-led-driver.patch
+++ b/target/linux/mediatek/patches-6.6/950-smartrg-i2c-led-driver.patch
@@ -5,7 +5,7 @@
 
 --- a/drivers/leds/Kconfig
 +++ b/drivers/leds/Kconfig
-@@ -874,6 +874,16 @@ source "drivers/leds/flash/Kconfig"
+@@ -901,6 +901,16 @@ source "drivers/leds/flash/Kconfig"
  comment "RGB LED drivers"
  source "drivers/leds/rgb/Kconfig"
  
@@ -24,9 +24,9 @@
  
 --- a/drivers/leds/Makefile
 +++ b/drivers/leds/Makefile
-@@ -76,6 +76,7 @@ obj-$(CONFIG_LEDS_PWM)			+= leds-pwm.o
+@@ -78,6 +78,7 @@ obj-$(CONFIG_LEDS_POWERNV)		+= leds-powe
+ obj-$(CONFIG_LEDS_PWM)			+= leds-pwm.o
  obj-$(CONFIG_LEDS_REGULATOR)		+= leds-regulator.o
- obj-$(CONFIG_LEDS_S3C24XX)		+= leds-s3c24xx.o
  obj-$(CONFIG_LEDS_SC27XX_BLTC)		+= leds-sc27xx-bltc.o
 +obj-$(CONFIG_LEDS_SMARTRG_LED)		+= leds-smartrg-system.o
  obj-$(CONFIG_LEDS_SUNFIRE)		+= leds-sunfire.o
diff --git a/target/linux/mediatek/patches-6.6/961-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch b/target/linux/mediatek/patches-6.6/961-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch
index 71cb3006ab..d4517af447 100644
--- a/target/linux/mediatek/patches-6.6/961-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch
+++ b/target/linux/mediatek/patches-6.6/961-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch
@@ -15,7 +15,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1264,7 +1264,7 @@ static int mtk_init_fq_dma(struct mtk_et
+@@ -1281,7 +1281,7 @@ static int mtk_init_fq_dma(struct mtk_et
  		eth->scratch_ring = eth->sram_base;
  	else
  		eth->scratch_ring = dma_alloc_coherent(eth->dma_dev,
@@ -24,7 +24,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  						       &eth->phy_scratch_ring,
  						       GFP_KERNEL);
  	if (unlikely(!eth->scratch_ring))
-@@ -1280,16 +1280,16 @@ static int mtk_init_fq_dma(struct mtk_et
+@@ -1297,16 +1297,16 @@ static int mtk_init_fq_dma(struct mtk_et
  	if (unlikely(dma_mapping_error(eth->dma_dev, dma_addr)))
  		return -ENOMEM;
  
@@ -44,7 +44,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  
  		txd->txd3 = TX_DMA_PLEN0(MTK_QDMA_PAGE_SIZE);
  		txd->txd4 = 0;
-@@ -1538,7 +1538,7 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -1555,7 +1555,7 @@ static int mtk_tx_map(struct sk_buff *sk
  	if (itxd == ring->last_free)
  		return -ENOMEM;
  
@@ -53,7 +53,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	memset(itx_buf, 0, sizeof(*itx_buf));
  
  	txd_info.addr = dma_map_single(eth->dma_dev, skb->data, txd_info.size,
-@@ -1579,7 +1579,7 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -1596,7 +1596,7 @@ static int mtk_tx_map(struct sk_buff *sk
  
  			memset(&txd_info, 0, sizeof(struct mtk_tx_dma_desc_info));
  			txd_info.size = min_t(unsigned int, frag_size,
@@ -62,7 +62,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			txd_info.qid = queue;
  			txd_info.last = i == skb_shinfo(skb)->nr_frags - 1 &&
  					!(frag_size - txd_info.size);
-@@ -1592,7 +1592,7 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -1609,7 +1609,7 @@ static int mtk_tx_map(struct sk_buff *sk
  			mtk_tx_set_dma_desc(dev, txd, &txd_info);
  
  			tx_buf = mtk_desc_to_tx_buf(ring, txd,
@@ -71,7 +71,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			if (new_desc)
  				memset(tx_buf, 0, sizeof(*tx_buf));
  			tx_buf->data = (void *)MTK_DMA_DUMMY_DESC;
-@@ -1635,7 +1635,7 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -1652,7 +1652,7 @@ static int mtk_tx_map(struct sk_buff *sk
  	} else {
  		int next_idx;
  
@@ -80,7 +80,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  					 ring->dma_size);
  		mtk_w32(eth, next_idx, MT7628_TX_CTX_IDX0);
  	}
-@@ -1644,7 +1644,7 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -1661,7 +1661,7 @@ static int mtk_tx_map(struct sk_buff *sk
  
  err_dma:
  	do {
@@ -89,7 +89,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  
  		/* unmap dma */
  		mtk_tx_unmap(eth, tx_buf, NULL, false);
-@@ -1669,7 +1669,7 @@ static int mtk_cal_txd_req(struct mtk_et
+@@ -1686,7 +1686,7 @@ static int mtk_cal_txd_req(struct mtk_et
  		for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
  			frag = &skb_shinfo(skb)->frags[i];
  			nfrags += DIV_ROUND_UP(skb_frag_size(frag),
@@ -98,7 +98,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		}
  	} else {
  		nfrags += skb_shinfo(skb)->nr_frags;
-@@ -1810,7 +1810,7 @@ static struct mtk_rx_ring *mtk_get_rx_ri
+@@ -1827,7 +1827,7 @@ static struct mtk_rx_ring *mtk_get_rx_ri
  
  		ring = &eth->rx_ring[i];
  		idx = NEXT_DESP_IDX(ring->calc_idx, ring->dma_size);
@@ -107,7 +107,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		if (rxd->rxd2 & RX_DMA_DONE) {
  			ring->calc_idx_update = true;
  			return ring;
-@@ -1978,7 +1978,7 @@ static int mtk_xdp_submit_frame(struct m
+@@ -1995,7 +1995,7 @@ static int mtk_xdp_submit_frame(struct m
  	}
  	htxd = txd;
  
@@ -116,7 +116,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	memset(tx_buf, 0, sizeof(*tx_buf));
  	htx_buf = tx_buf;
  
-@@ -1997,7 +1997,7 @@ static int mtk_xdp_submit_frame(struct m
+@@ -2014,7 +2014,7 @@ static int mtk_xdp_submit_frame(struct m
  				goto unmap;
  
  			tx_buf = mtk_desc_to_tx_buf(ring, txd,
@@ -125,7 +125,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			memset(tx_buf, 0, sizeof(*tx_buf));
  			n_desc++;
  		}
-@@ -2035,7 +2035,7 @@ static int mtk_xdp_submit_frame(struct m
+@@ -2052,7 +2052,7 @@ static int mtk_xdp_submit_frame(struct m
  	} else {
  		int idx;
  
@@ -134,7 +134,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		mtk_w32(eth, NEXT_DESP_IDX(idx, ring->dma_size),
  			MT7628_TX_CTX_IDX0);
  	}
-@@ -2046,7 +2046,7 @@ static int mtk_xdp_submit_frame(struct m
+@@ -2063,7 +2063,7 @@ static int mtk_xdp_submit_frame(struct m
  
  unmap:
  	while (htxd != txd) {
@@ -143,7 +143,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		mtk_tx_unmap(eth, tx_buf, NULL, false);
  
  		htxd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU;
-@@ -2177,7 +2177,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -2194,7 +2194,7 @@ static int mtk_poll_rx(struct napi_struc
  			goto rx_done;
  
  		idx = NEXT_DESP_IDX(ring->calc_idx, ring->dma_size);
@@ -152,7 +152,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		data = ring->data[idx];
  
  		if (!mtk_rx_get_desc(eth, &trxd, rxd))
-@@ -2312,7 +2312,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -2329,7 +2329,7 @@ static int mtk_poll_rx(struct napi_struc
  			rxdcsum = &trxd.rxd4;
  		}
  
@@ -161,7 +161,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			skb->ip_summed = CHECKSUM_UNNECESSARY;
  		else
  			skb_checksum_none_assert(skb);
-@@ -2436,7 +2436,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
+@@ -2453,7 +2453,7 @@ static int mtk_poll_tx_qdma(struct mtk_e
  			break;
  
  		tx_buf = mtk_desc_to_tx_buf(ring, desc,
@@ -170,7 +170,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		if (!tx_buf->data)
  			break;
  
-@@ -2487,7 +2487,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
+@@ -2504,7 +2504,7 @@ static int mtk_poll_tx_pdma(struct mtk_e
  		}
  		mtk_tx_unmap(eth, tx_buf, &bq, true);
  
@@ -179,7 +179,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		ring->last_free = desc;
  		atomic_inc(&ring->free_count);
  
-@@ -2577,7 +2577,7 @@ static int mtk_napi_rx(struct napi_struc
+@@ -2594,7 +2594,7 @@ static int mtk_napi_rx(struct napi_struc
  	do {
  		int rx_done;
  
@@ -188,7 +188,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			reg_map->pdma.irq_status);
  		rx_done = mtk_poll_rx(napi, budget - rx_done_total, eth);
  		rx_done_total += rx_done;
-@@ -2593,10 +2593,10 @@ static int mtk_napi_rx(struct napi_struc
+@@ -2610,10 +2610,10 @@ static int mtk_napi_rx(struct napi_struc
  			return budget;
  
  	} while (mtk_r32(eth, reg_map->pdma.irq_status) &
@@ -201,7 +201,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  
  	return rx_done_total;
  }
-@@ -2605,7 +2605,7 @@ static int mtk_tx_alloc(struct mtk_eth *
+@@ -2622,7 +2622,7 @@ static int mtk_tx_alloc(struct mtk_eth *
  {
  	const struct mtk_soc_data *soc = eth->soc;
  	struct mtk_tx_ring *ring = &eth->tx_ring;
@@ -210,7 +210,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	struct mtk_tx_dma_v2 *txd;
  	int ring_size;
  	u32 ofs, val;
-@@ -2728,14 +2728,14 @@ static void mtk_tx_clean(struct mtk_eth
+@@ -2745,14 +2745,14 @@ static void mtk_tx_clean(struct mtk_eth
  	}
  	if (!MTK_HAS_CAPS(soc->caps, MTK_SRAM) && ring->dma) {
  		dma_free_coherent(eth->dma_dev,
@@ -227,7 +227,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  				  ring->dma_pdma, ring->phys_pdma);
  		ring->dma_pdma = NULL;
  	}
-@@ -2790,15 +2790,15 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2807,15 +2807,15 @@ static int mtk_rx_alloc(struct mtk_eth *
  	if (!MTK_HAS_CAPS(eth->soc->caps, MTK_SRAM) ||
  	    rx_flag != MTK_RX_FLAGS_NORMAL) {
  		ring->dma = dma_alloc_coherent(eth->dma_dev,
@@ -247,7 +247,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	}
  
  	if (!ring->dma)
-@@ -2809,7 +2809,7 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2826,7 +2826,7 @@ static int mtk_rx_alloc(struct mtk_eth *
  		dma_addr_t dma_addr;
  		void *data;
  
@@ -256,7 +256,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		if (ring->page_pool) {
  			data = mtk_page_pool_get_buff(ring->page_pool,
  						      &dma_addr, GFP_KERNEL);
-@@ -2900,7 +2900,7 @@ static void mtk_rx_clean(struct mtk_eth
+@@ -2917,7 +2917,7 @@ static void mtk_rx_clean(struct mtk_eth
  			if (!ring->data[i])
  				continue;
  
@@ -265,7 +265,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			if (!rxd->rxd1)
  				continue;
  
-@@ -2917,7 +2917,7 @@ static void mtk_rx_clean(struct mtk_eth
+@@ -2934,7 +2934,7 @@ static void mtk_rx_clean(struct mtk_eth
  
  	if (!in_sram && ring->dma) {
  		dma_free_coherent(eth->dma_dev,
@@ -274,7 +274,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  				  ring->dma, ring->phys);
  		ring->dma = NULL;
  	}
-@@ -3280,7 +3280,7 @@ static void mtk_dma_free(struct mtk_eth
+@@ -3297,7 +3297,7 @@ static void mtk_dma_free(struct mtk_eth
  			netdev_reset_queue(eth->netdev[i]);
  	if (!MTK_HAS_CAPS(soc->caps, MTK_SRAM) && eth->scratch_ring) {
  		dma_free_coherent(eth->dma_dev,
@@ -283,7 +283,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  				  eth->scratch_ring, eth->phy_scratch_ring);
  		eth->scratch_ring = NULL;
  		eth->phy_scratch_ring = 0;
-@@ -3330,7 +3330,7 @@ static irqreturn_t mtk_handle_irq_rx(int
+@@ -3347,7 +3347,7 @@ static irqreturn_t mtk_handle_irq_rx(int
  
  	eth->rx_events++;
  	if (likely(napi_schedule_prep(&eth->rx_napi))) {
@@ -292,7 +292,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		__napi_schedule(&eth->rx_napi);
  	}
  
-@@ -3356,9 +3356,9 @@ static irqreturn_t mtk_handle_irq(int ir
+@@ -3373,9 +3373,9 @@ static irqreturn_t mtk_handle_irq(int ir
  	const struct mtk_reg_map *reg_map = eth->soc->reg_map;
  
  	if (mtk_r32(eth, reg_map->pdma.irq_mask) &
@@ -304,7 +304,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mtk_handle_irq_rx(irq, _eth);
  	}
  	if (mtk_r32(eth, reg_map->tx_irq_mask) & MTK_TX_DONE_INT) {
-@@ -3376,10 +3376,10 @@ static void mtk_poll_controller(struct n
+@@ -3393,10 +3393,10 @@ static void mtk_poll_controller(struct n
  	struct mtk_eth *eth = mac->hw;
  
  	mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
@@ -317,7 +317,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  }
  #endif
  
-@@ -3545,7 +3545,7 @@ static int mtk_open(struct net_device *d
+@@ -3563,7 +3563,7 @@ static int mtk_open(struct net_device *d
  		napi_enable(&eth->tx_napi);
  		napi_enable(&eth->rx_napi);
  		mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
@@ -326,7 +326,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		refcount_set(&eth->dma_refcnt, 1);
  	}
  	else
-@@ -3628,7 +3628,7 @@ static int mtk_stop(struct net_device *d
+@@ -3647,7 +3647,7 @@ static int mtk_stop(struct net_device *d
  	mtk_gdm_config(eth, MTK_GDMA_DROP_ALL);
  
  	mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
@@ -335,7 +335,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	napi_disable(&eth->tx_napi);
  	napi_disable(&eth->rx_napi);
  
-@@ -4107,9 +4107,9 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -4126,9 +4126,9 @@ static int mtk_hw_init(struct mtk_eth *e
  
  	/* FE int grouping */
  	mtk_w32(eth, MTK_TX_DONE_INT, reg_map->pdma.int_grp);
@@ -347,7 +347,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
  
  	if (mtk_is_netsys_v3_or_greater(eth)) {
-@@ -5270,11 +5270,15 @@ static const struct mtk_soc_data mt2701_
+@@ -5305,11 +5305,15 @@ static const struct mtk_soc_data mt2701_
  	.required_clks = MT7623_CLKS_BITMAP,
  	.required_pctl = true,
  	.version = 1,
@@ -368,7 +368,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5290,11 +5294,15 @@ static const struct mtk_soc_data mt7621_
+@@ -5325,11 +5329,15 @@ static const struct mtk_soc_data mt7621_
  	.offload_version = 1,
  	.hash_offset = 2,
  	.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
@@ -389,7 +389,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5312,11 +5320,15 @@ static const struct mtk_soc_data mt7622_
+@@ -5347,11 +5355,15 @@ static const struct mtk_soc_data mt7622_
  	.hash_offset = 2,
  	.has_accounting = true,
  	.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
@@ -410,7 +410,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5333,11 +5345,15 @@ static const struct mtk_soc_data mt7623_
+@@ -5368,11 +5380,15 @@ static const struct mtk_soc_data mt7623_
  	.hash_offset = 2,
  	.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
  	.disable_pll_modes = true,
@@ -431,7 +431,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5352,11 +5368,15 @@ static const struct mtk_soc_data mt7629_
+@@ -5387,11 +5403,15 @@ static const struct mtk_soc_data mt7629_
  	.required_pctl = false,
  	.has_accounting = true,
  	.version = 1,
@@ -452,7 +452,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN,
  		.dma_len_offset = 16,
  	},
-@@ -5374,11 +5394,15 @@ static const struct mtk_soc_data mt7981_
+@@ -5409,11 +5429,15 @@ static const struct mtk_soc_data mt7981_
  	.hash_offset = 4,
  	.has_accounting = true,
  	.foe_entry_size = MTK_FOE_ENTRY_V2_SIZE,
@@ -473,7 +473,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
  		.dma_len_offset = 8,
  	},
-@@ -5396,11 +5420,15 @@ static const struct mtk_soc_data mt7986_
+@@ -5431,11 +5455,15 @@ static const struct mtk_soc_data mt7986_
  	.hash_offset = 4,
  	.has_accounting = true,
  	.foe_entry_size = MTK_FOE_ENTRY_V2_SIZE,
@@ -494,7 +494,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
  		.dma_len_offset = 8,
  	},
-@@ -5418,11 +5446,15 @@ static const struct mtk_soc_data mt7988_
+@@ -5453,11 +5481,15 @@ static const struct mtk_soc_data mt7988_
  	.hash_offset = 4,
  	.has_accounting = true,
  	.foe_entry_size = MTK_FOE_ENTRY_V3_SIZE,
@@ -515,7 +515,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		.dma_max_len = MTK_TX_DMA_BUF_LEN_V2,
  		.dma_len_offset = 8,
  	},
-@@ -5435,11 +5467,15 @@ static const struct mtk_soc_data rt5350_
+@@ -5470,11 +5502,15 @@ static const struct mtk_soc_data rt5350_
  	.required_clks = MT7628_CLKS_BITMAP,
  	.required_pctl = false,
  	.version = 1,
diff --git a/target/linux/mediatek/patches-6.6/962-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch b/target/linux/mediatek/patches-6.6/962-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch
index 8b7d5c0a1c..6b84f70110 100644
--- a/target/linux/mediatek/patches-6.6/962-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch
+++ b/target/linux/mediatek/patches-6.6/962-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch
@@ -17,7 +17,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -110,16 +110,16 @@ static const struct mtk_reg_map mt7986_r
+@@ -113,16 +113,16 @@ static const struct mtk_reg_map mt7986_r
  	.tx_irq_mask		= 0x461c,
  	.tx_irq_status		= 0x4618,
  	.pdma = {
@@ -44,7 +44,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	},
  	.qdma = {
  		.qtx_cfg	= 0x4400,
-@@ -1232,7 +1232,7 @@ static bool mtk_rx_get_desc(struct mtk_e
+@@ -1249,7 +1249,7 @@ static bool mtk_rx_get_desc(struct mtk_e
  	rxd->rxd1 = READ_ONCE(dma_rxd->rxd1);
  	rxd->rxd3 = READ_ONCE(dma_rxd->rxd3);
  	rxd->rxd4 = READ_ONCE(dma_rxd->rxd4);
@@ -53,7 +53,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		rxd->rxd5 = READ_ONCE(dma_rxd->rxd5);
  		rxd->rxd6 = READ_ONCE(dma_rxd->rxd6);
  	}
-@@ -2184,7 +2184,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -2201,7 +2201,7 @@ static int mtk_poll_rx(struct napi_struc
  			break;
  
  		/* find out which mac the packet come from. values start at 1 */
@@ -62,7 +62,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  			u32 val = RX_DMA_GET_SPORT_V2(trxd.rxd5);
  
  			switch (val) {
-@@ -2296,7 +2296,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -2313,7 +2313,7 @@ static int mtk_poll_rx(struct napi_struc
  		skb->dev = netdev;
  		bytes += skb->len;
  
@@ -71,7 +71,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  			reason = FIELD_GET(MTK_RXD5_PPE_CPU_REASON, trxd.rxd5);
  			hash = trxd.rxd5 & MTK_RXD5_FOE_ENTRY;
  			if (hash != MTK_RXD5_FOE_ENTRY)
-@@ -2846,7 +2846,7 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2863,7 +2863,7 @@ static int mtk_rx_alloc(struct mtk_eth *
  
  		rxd->rxd3 = 0;
  		rxd->rxd4 = 0;
@@ -80,7 +80,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  			rxd->rxd5 = 0;
  			rxd->rxd6 = 0;
  			rxd->rxd7 = 0;
-@@ -4053,7 +4053,7 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -4072,7 +4072,7 @@ static int mtk_hw_init(struct mtk_eth *e
  	else
  		mtk_hw_reset(eth);
  
@@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		/* Set FE to PDMAv2 if necessary */
  		val = mtk_r32(eth, MTK_FE_GLO_MISC);
  		mtk_w32(eth,  val | BIT(4), MTK_FE_GLO_MISC);
-@@ -5400,11 +5400,11 @@ static const struct mtk_soc_data mt7981_
+@@ -5435,11 +5435,11 @@ static const struct mtk_soc_data mt7981_
  		.dma_len_offset = 8,
  	},
  	.rx = {
@@ -105,7 +105,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	},
  };
  
-@@ -5426,11 +5426,11 @@ static const struct mtk_soc_data mt7986_
+@@ -5461,11 +5461,11 @@ static const struct mtk_soc_data mt7986_
  		.dma_len_offset = 8,
  	},
  	.rx = {
diff --git a/target/linux/mediatek/patches-6.6/963-net-ethernet-mtk_eth_soc-fix-WED-wifi-reset.patch b/target/linux/mediatek/patches-6.6/963-net-ethernet-mtk_eth_soc-fix-WED-wifi-reset.patch
index 11b52d07ab..9974073d25 100644
--- a/target/linux/mediatek/patches-6.6/963-net-ethernet-mtk_eth_soc-fix-WED-wifi-reset.patch
+++ b/target/linux/mediatek/patches-6.6/963-net-ethernet-mtk_eth_soc-fix-WED-wifi-reset.patch
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/ethernet/mediatek/mtk_wed.c
 +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
-@@ -1071,13 +1071,13 @@ mtk_wed_dma_disable(struct mtk_wed_devic
+@@ -1072,13 +1072,13 @@ mtk_wed_dma_disable(struct mtk_wed_devic
  static void
  mtk_wed_stop(struct mtk_wed_device *dev)
  {
@@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	if (!mtk_wed_get_rx_capa(dev))
  		return;
-@@ -1090,7 +1090,6 @@ static void
+@@ -1091,7 +1091,6 @@ static void
  mtk_wed_deinit(struct mtk_wed_device *dev)
  {
  	mtk_wed_stop(dev);
@@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	wed_clr(dev, MTK_WED_CTRL,
  		MTK_WED_CTRL_WDMA_INT_AGENT_EN |
-@@ -2621,9 +2620,6 @@ mtk_wed_irq_get(struct mtk_wed_device *d
+@@ -2622,9 +2621,6 @@ mtk_wed_irq_get(struct mtk_wed_device *d
  static void
  mtk_wed_irq_set_mask(struct mtk_wed_device *dev, u32 mask)
  {



From lede-commits at lists.infradead.org  Mon Mar 11 16:50:23 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 11 Mar 2024 19:50:23 -0400
Subject: [openwrt/openwrt]  kernel: modules: don't override NLS dependencies
In-Reply-To: <171020102343.3375870.15929557284088883087@git-01.infra.openwrt.org>
References: <171020102343.3375870.15929557284088883087@git-01.infra.openwrt.org>
Message-ID: <mailman.15414.1710201031.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f7a68458b42d30ae4bb03f0be66cfd4cfae9602d

commit f7a68458b42d30ae4bb03f0be66cfd4cfae9602d
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Mon Mar 11 23:23:23 2024 +0000

    kernel: modules: don't override NLS dependencies
    
    Recent changes for Linux 6.6 broke things when building with older
    kernels:
    Package kmod-fs-jfs is missing dependencies for the following libraries:
    nls_base.ko
    
    Fix this by adding NLS dependencies after the added dependency applying
    on Linux 6.6.
    
    Fixes: f9198480da ("kernel: modules: fs: adapt for kernel 6.6")
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/kernel/linux/modules/fs.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/fs.mk b/package/kernel/linux/modules/fs.mk
index 8f1ed41484..0d98c5a681 100644
--- a/package/kernel/linux/modules/fs.mk
+++ b/package/kernel/linux/modules/fs.mk
@@ -344,8 +344,8 @@ define KernelPackage/fs-jfs
   KCONFIG:=CONFIG_JFS_FS
   FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko
   AUTOLOAD:=$(call AutoLoad,30,jfs,1)
-  $(call AddDepends/nls)
   DEPENDS:=+LINUX_6_6:kmod-nls-ucs2-utils
+  $(call AddDepends/nls)
 endef
 
 define KernelPackage/fs-jfs/description



From lede-commits at lists.infradead.org  Tue Mar 12 02:13:23 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 05:13:23 -0400
Subject: [openwrt/openwrt]  kernel: config: add symbol introduced with 6.2
In-Reply-To: <171023480369.405789.12202201118747019556@git-01.infra.openwrt.org>
References: <171023480369.405789.12202201118747019556@git-01.infra.openwrt.org>
Message-ID: <mailman.15526.1710234810.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7ea82bc17d1583f4d9d46397846b0eb63e6651eb

commit 7ea82bc17d1583f4d9d46397846b0eb63e6651eb
Author: CharlesMengCA <58993776+CharlesMengCA at users.noreply.github.com>
AuthorDate: Tue Mar 12 00:06:14 2024 -0400

    kernel: config: add symbol introduced with 6.2
    
    CONFIG_DEBUG_INFO_COMPRESSED_ZSTD, required by  GCC 13.0+
    
    Compress the debug information using zstd. This may provide better compression than zlib, for about the same time costs, but requires newer toolchain support. Requires GCC 13.0+ or Clang 16.0+, binutils 2.40+, and zstd.
    
    
    Signed-off-by: CharlesMengCA <58993776+CharlesMengCA at users.noreply.github.com>
---
 target/linux/generic/config-6.6 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 319f56fe01..db828745df 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -1412,6 +1412,7 @@ CONFIG_DEBUG_FS_ALLOW_ALL=y
 # CONFIG_DEBUG_INFO_BTF is not set
 CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
 # CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
+# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set
 # CONFIG_DEBUG_INFO_DWARF4 is not set
 # CONFIG_DEBUG_INFO_DWARF5 is not set
 CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y



From lede-commits at lists.infradead.org  Tue Mar 12 02:27:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 05:27:42 -0400
Subject: [openwrt/openwrt]  starfive: refresh patches
In-Reply-To: <171023566203.438775.4156047975024497168@git-01.infra.openwrt.org>
References: <171023566203.438775.4156047975024497168@git-01.infra.openwrt.org>
Message-ID: <mailman.15537.1710235666.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a158f9f4058b3e401bd54e1efeee291ee6e9a256

commit a158f9f4058b3e401bd54e1efeee291ee6e9a256
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 12 10:11:00 2024 +0100

    starfive: refresh patches
    
    CI reported that patches need to be refreshed, so lets refresh.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../0016-MAINTAINERS-generalise-StarFive-clk-reset-entries.patch      | 4 ++--
 .../0026-dt-bindings-pinctrl-Add-StarFive-JH7110-sys-pinctrl.patch    | 2 +-
 .../0028-pinctrl-starfive-Add-StarFive-JH7110-sys-controller-.patch   | 2 +-
 .../0032-clk-starfive-Add-StarFive-JH7110-PLL-clock-driver.patch      | 2 +-
 .../0036-soc-starfive-Add-StarFive-JH71XX-pmu-driver.patch            | 2 +-
 .../0037-dt-bindings-soc-starfive-Add-StarFive-syscon-module.patch    | 4 ++--
 .../patches-6.1/0043-dt-bindings-net-Add-support-StarFive-dwmac.patch | 2 +-
 .../0044-net-stmmac-Add-glue-layer-for-StarFive-JH7110-SoC.patch      | 2 +-
 .../0102-hwrng-starfive-Add-TRNG-driver-for-StarFive-SoC.patch        | 2 +-
 .../0105-drivers-watchdog-Add-StarFive-Watchdog-driver.patch          | 2 +-
 .../patches-6.1/0108-mmc-starfive-Add-sdio-emmc-driver-support.patch  | 2 +-
 .../0110-hwmon-sfctemp-Add-StarFive-JH71x0-temperature-sensor.patch   | 2 +-
 .../0116-RISC-V-Add-arch-functions-to-support-hibernation-sus.patch   | 2 +-
 target/linux/starfive/patches-6.1/1013-net-stmmac-use-GFP_DMA32.patch | 2 +-
 .../1022-reset-starfive-Add-JH7100-audio-reset-driver.patch           | 2 +-
 15 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/target/linux/starfive/patches-6.1/0016-MAINTAINERS-generalise-StarFive-clk-reset-entries.patch b/target/linux/starfive/patches-6.1/0016-MAINTAINERS-generalise-StarFive-clk-reset-entries.patch
index 68b96fa388..d3f9a9cf22 100644
--- a/target/linux/starfive/patches-6.1/0016-MAINTAINERS-generalise-StarFive-clk-reset-entries.patch
+++ b/target/linux/starfive/patches-6.1/0016-MAINTAINERS-generalise-StarFive-clk-reset-entries.patch
@@ -13,7 +13,7 @@ Signed-off-by: shanlong.li <shanlong.li at starfivetech.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19650,12 +19650,13 @@ M:	Emil Renner Berthing <kernel at esmil.dk
+@@ -19657,12 +19657,13 @@ M:	Emil Renner Berthing <kernel at esmil.dk
  S:	Maintained
  F:	arch/riscv/boot/dts/starfive/
  
@@ -31,7 +31,7 @@ Signed-off-by: shanlong.li <shanlong.li at starfivetech.com>
  
  STARFIVE JH7100 PINCTRL DRIVER
  M:	Emil Renner Berthing <kernel at esmil.dk>
-@@ -19665,12 +19666,13 @@ F:	Documentation/devicetree/bindings/pin
+@@ -19672,12 +19673,13 @@ F:	Documentation/devicetree/bindings/pin
  F:	drivers/pinctrl/starfive/
  F:	include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h
  
diff --git a/target/linux/starfive/patches-6.1/0026-dt-bindings-pinctrl-Add-StarFive-JH7110-sys-pinctrl.patch b/target/linux/starfive/patches-6.1/0026-dt-bindings-pinctrl-Add-StarFive-JH7110-sys-pinctrl.patch
index eab4e6ee9f..9b3f41ec1e 100644
--- a/target/linux/starfive/patches-6.1/0026-dt-bindings-pinctrl-Add-StarFive-JH7110-sys-pinctrl.patch
+++ b/target/linux/starfive/patches-6.1/0026-dt-bindings-pinctrl-Add-StarFive-JH7110-sys-pinctrl.patch
@@ -165,7 +165,7 @@ Signed-off-by: Hal Feng <hal.feng at starfivetech.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19658,13 +19658,15 @@ F:	Documentation/devicetree/bindings/clo
+@@ -19665,13 +19665,15 @@ F:	Documentation/devicetree/bindings/clo
  F:	drivers/clk/starfive/clk-starfive-jh71*
  F:	include/dt-bindings/clock/starfive?jh71*.h
  
diff --git a/target/linux/starfive/patches-6.1/0028-pinctrl-starfive-Add-StarFive-JH7110-sys-controller-.patch b/target/linux/starfive/patches-6.1/0028-pinctrl-starfive-Add-StarFive-JH7110-sys-controller-.patch
index a9310aadc3..d5735b5980 100644
--- a/target/linux/starfive/patches-6.1/0028-pinctrl-starfive-Add-StarFive-JH7110-sys-controller-.patch
+++ b/target/linux/starfive/patches-6.1/0028-pinctrl-starfive-Add-StarFive-JH7110-sys-controller-.patch
@@ -24,7 +24,7 @@ Signed-off-by: Hal Feng <hal.feng at starfivetech.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19664,7 +19664,7 @@ M:	Jianlong Huang <jianlong.huang at starfi
+@@ -19671,7 +19671,7 @@ M:	Jianlong Huang <jianlong.huang at starfi
  L:	linux-gpio at vger.kernel.org
  S:	Maintained
  F:	Documentation/devicetree/bindings/pinctrl/starfive,jh71*.yaml
diff --git a/target/linux/starfive/patches-6.1/0032-clk-starfive-Add-StarFive-JH7110-PLL-clock-driver.patch b/target/linux/starfive/patches-6.1/0032-clk-starfive-Add-StarFive-JH7110-PLL-clock-driver.patch
index 711e0775cc..69dc662f10 100644
--- a/target/linux/starfive/patches-6.1/0032-clk-starfive-Add-StarFive-JH7110-PLL-clock-driver.patch
+++ b/target/linux/starfive/patches-6.1/0032-clk-starfive-Add-StarFive-JH7110-PLL-clock-driver.patch
@@ -19,7 +19,7 @@ Signed-off-by: Xingyu Wu <xingyu.wu at starfivetech.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19650,6 +19650,12 @@ M:	Emil Renner Berthing <kernel at esmil.dk
+@@ -19657,6 +19657,12 @@ M:	Emil Renner Berthing <kernel at esmil.dk
  S:	Maintained
  F:	arch/riscv/boot/dts/starfive/
  
diff --git a/target/linux/starfive/patches-6.1/0036-soc-starfive-Add-StarFive-JH71XX-pmu-driver.patch b/target/linux/starfive/patches-6.1/0036-soc-starfive-Add-StarFive-JH71XX-pmu-driver.patch
index a5a33876fa..81c7548aa0 100644
--- a/target/linux/starfive/patches-6.1/0036-soc-starfive-Add-StarFive-JH71XX-pmu-driver.patch
+++ b/target/linux/starfive/patches-6.1/0036-soc-starfive-Add-StarFive-JH71XX-pmu-driver.patch
@@ -28,7 +28,7 @@ Reviewed-by: Heiko Stuebner <heiko at sntech.de>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19682,6 +19682,20 @@ F:	Documentation/devicetree/bindings/res
+@@ -19689,6 +19689,20 @@ F:	Documentation/devicetree/bindings/res
  F:	drivers/reset/starfive/reset-starfive-jh71*
  F:	include/dt-bindings/reset/starfive?jh71*.h
  
diff --git a/target/linux/starfive/patches-6.1/0037-dt-bindings-soc-starfive-Add-StarFive-syscon-module.patch b/target/linux/starfive/patches-6.1/0037-dt-bindings-soc-starfive-Add-StarFive-syscon-module.patch
index c4bf9bc56f..75b1d947b0 100644
--- a/target/linux/starfive/patches-6.1/0037-dt-bindings-soc-starfive-Add-StarFive-syscon-module.patch
+++ b/target/linux/starfive/patches-6.1/0037-dt-bindings-soc-starfive-Add-StarFive-syscon-module.patch
@@ -76,7 +76,7 @@ Signed-off-by: William Qiu <william.qiu at starfivetech.com>
 +...
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19656,6 +19656,11 @@ S:	Supported
+@@ -19663,6 +19663,11 @@ S:	Supported
  F:	Documentation/devicetree/bindings/clock/starfive,jh7110-pll.yaml
  F:	drivers/clk/starfive/clk-starfive-jh7110-pll.*
  
@@ -88,7 +88,7 @@ Signed-off-by: William Qiu <william.qiu at starfivetech.com>
  STARFIVE JH71X0 CLOCK DRIVERS
  M:	Emil Renner Berthing <kernel at esmil.dk>
  M:	Hal Feng <hal.feng at starfivetech.com>
-@@ -19686,6 +19691,7 @@ STARFIVE SOC DRIVER
+@@ -19693,6 +19698,7 @@ STARFIVE SOC DRIVER
  M:	Conor Dooley <conor at kernel.org>
  S:	Maintained
  T:	git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
diff --git a/target/linux/starfive/patches-6.1/0043-dt-bindings-net-Add-support-StarFive-dwmac.patch b/target/linux/starfive/patches-6.1/0043-dt-bindings-net-Add-support-StarFive-dwmac.patch
index 4487c6995f..a66452c382 100644
--- a/target/linux/starfive/patches-6.1/0043-dt-bindings-net-Add-support-StarFive-dwmac.patch
+++ b/target/linux/starfive/patches-6.1/0043-dt-bindings-net-Add-support-StarFive-dwmac.patch
@@ -175,7 +175,7 @@ Signed-off-by: Samin Guo <samin.guo at starfivetech.com>
 +    };
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19650,6 +19650,12 @@ M:	Emil Renner Berthing <kernel at esmil.dk
+@@ -19657,6 +19657,12 @@ M:	Emil Renner Berthing <kernel at esmil.dk
  S:	Maintained
  F:	arch/riscv/boot/dts/starfive/
  
diff --git a/target/linux/starfive/patches-6.1/0044-net-stmmac-Add-glue-layer-for-StarFive-JH7110-SoC.patch b/target/linux/starfive/patches-6.1/0044-net-stmmac-Add-glue-layer-for-StarFive-JH7110-SoC.patch
index 37ad5a192a..59609809c1 100644
--- a/target/linux/starfive/patches-6.1/0044-net-stmmac-Add-glue-layer-for-StarFive-JH7110-SoC.patch
+++ b/target/linux/starfive/patches-6.1/0044-net-stmmac-Add-glue-layer-for-StarFive-JH7110-SoC.patch
@@ -20,7 +20,7 @@ Signed-off-by: Samin Guo <samin.guo at starfivetech.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19655,6 +19655,7 @@ M:	Emil Renner Berthing <kernel at esmil.dk
+@@ -19662,6 +19662,7 @@ M:	Emil Renner Berthing <kernel at esmil.dk
  M:	Samin Guo <samin.guo at starfivetech.com>
  S:	Maintained
  F:	Documentation/devicetree/bindings/net/starfive,jh7110-dwmac.yaml
diff --git a/target/linux/starfive/patches-6.1/0102-hwrng-starfive-Add-TRNG-driver-for-StarFive-SoC.patch b/target/linux/starfive/patches-6.1/0102-hwrng-starfive-Add-TRNG-driver-for-StarFive-SoC.patch
index e9f8387e7f..1ab18838e6 100644
--- a/target/linux/starfive/patches-6.1/0102-hwrng-starfive-Add-TRNG-driver-for-StarFive-SoC.patch
+++ b/target/linux/starfive/patches-6.1/0102-hwrng-starfive-Add-TRNG-driver-for-StarFive-SoC.patch
@@ -19,7 +19,7 @@ Signed-off-by: Jia Jie Ho <jiajie.ho at starfivetech.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19709,6 +19709,12 @@ F:	Documentation/devicetree/bindings/pow
+@@ -19716,6 +19716,12 @@ F:	Documentation/devicetree/bindings/pow
  F:	drivers/soc/starfive/jh71xx_pmu.c
  F:	include/dt-bindings/power/starfive,jh7110-pmu.h
  
diff --git a/target/linux/starfive/patches-6.1/0105-drivers-watchdog-Add-StarFive-Watchdog-driver.patch b/target/linux/starfive/patches-6.1/0105-drivers-watchdog-Add-StarFive-Watchdog-driver.patch
index ec330250e2..d7113de0ec 100644
--- a/target/linux/starfive/patches-6.1/0105-drivers-watchdog-Add-StarFive-Watchdog-driver.patch
+++ b/target/linux/starfive/patches-6.1/0105-drivers-watchdog-Add-StarFive-Watchdog-driver.patch
@@ -18,7 +18,7 @@ Reviewed-by: Guenter Roeck <linux at roeck-us.net>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19715,6 +19715,13 @@ S:	Supported
+@@ -19722,6 +19722,13 @@ S:	Supported
  F:	Documentation/devicetree/bindings/rng/starfive*
  F:	drivers/char/hw_random/starfive-trng.c
  
diff --git a/target/linux/starfive/patches-6.1/0108-mmc-starfive-Add-sdio-emmc-driver-support.patch b/target/linux/starfive/patches-6.1/0108-mmc-starfive-Add-sdio-emmc-driver-support.patch
index 3aecc0a204..fecad30928 100644
--- a/target/linux/starfive/patches-6.1/0108-mmc-starfive-Add-sdio-emmc-driver-support.patch
+++ b/target/linux/starfive/patches-6.1/0108-mmc-starfive-Add-sdio-emmc-driver-support.patch
@@ -17,7 +17,7 @@ Signed-off-by: William Qiu <william.qiu at starfivetech.com>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19657,6 +19657,12 @@ S:	Maintained
+@@ -19664,6 +19664,12 @@ S:	Maintained
  F:	Documentation/devicetree/bindings/net/starfive,jh7110-dwmac.yaml
  F:	drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
  
diff --git a/target/linux/starfive/patches-6.1/0110-hwmon-sfctemp-Add-StarFive-JH71x0-temperature-sensor.patch b/target/linux/starfive/patches-6.1/0110-hwmon-sfctemp-Add-StarFive-JH71x0-temperature-sensor.patch
index b52cbd2ba5..aa062021ac 100644
--- a/target/linux/starfive/patches-6.1/0110-hwmon-sfctemp-Add-StarFive-JH71x0-temperature-sensor.patch
+++ b/target/linux/starfive/patches-6.1/0110-hwmon-sfctemp-Add-StarFive-JH71x0-temperature-sensor.patch
@@ -71,7 +71,7 @@ Signed-off-by: Hal Feng <hal.feng at starfivetech.com>
 +================ ==== =============================================
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -18679,6 +18679,14 @@ L:	netdev at vger.kernel.org
+@@ -18686,6 +18686,14 @@ L:	netdev at vger.kernel.org
  S:	Supported
  F:	drivers/net/ethernet/sfc/
  
diff --git a/target/linux/starfive/patches-6.1/0116-RISC-V-Add-arch-functions-to-support-hibernation-sus.patch b/target/linux/starfive/patches-6.1/0116-RISC-V-Add-arch-functions-to-support-hibernation-sus.patch
index eae0559d9c..a47c49d968 100644
--- a/target/linux/starfive/patches-6.1/0116-RISC-V-Add-arch-functions-to-support-hibernation-sus.patch
+++ b/target/linux/starfive/patches-6.1/0116-RISC-V-Add-arch-functions-to-support-hibernation-sus.patch
@@ -132,7 +132,7 @@ Reviewed-by: Andrew Jones <ajones at ventanamicro.com>
  #endif
 --- a/arch/riscv/kernel/Makefile
 +++ b/arch/riscv/kernel/Makefile
-@@ -65,6 +65,7 @@ obj-$(CONFIG_MODULES)		+= module.o
+@@ -67,6 +67,7 @@ obj-$(CONFIG_MODULES)		+= module.o
  obj-$(CONFIG_MODULE_SECTIONS)	+= module-sections.o
  
  obj-$(CONFIG_CPU_PM)		+= suspend_entry.o suspend.o
diff --git a/target/linux/starfive/patches-6.1/1013-net-stmmac-use-GFP_DMA32.patch b/target/linux/starfive/patches-6.1/1013-net-stmmac-use-GFP_DMA32.patch
index a341c96bcf..5bbb4cc4c5 100644
--- a/target/linux/starfive/patches-6.1/1013-net-stmmac-use-GFP_DMA32.patch
+++ b/target/linux/starfive/patches-6.1/1013-net-stmmac-use-GFP_DMA32.patch
@@ -19,7 +19,7 @@ Signed-off-by: Matteo Croce <mcroce at microsoft.com>
  
  	if (priv->dma_cap.host_dma_width <= 32)
  		gfp |= GFP_DMA32;
-@@ -4613,7 +4613,7 @@ static inline void stmmac_rx_refill(stru
+@@ -4615,7 +4615,7 @@ static inline void stmmac_rx_refill(stru
  	struct stmmac_rx_queue *rx_q = &priv->dma_conf.rx_queue[queue];
  	int dirty = stmmac_rx_dirty(priv, queue);
  	unsigned int entry = rx_q->dirty_rx;
diff --git a/target/linux/starfive/patches-6.1/1022-reset-starfive-Add-JH7100-audio-reset-driver.patch b/target/linux/starfive/patches-6.1/1022-reset-starfive-Add-JH7100-audio-reset-driver.patch
index dc25d354d6..bf3eff0157 100644
--- a/target/linux/starfive/patches-6.1/1022-reset-starfive-Add-JH7100-audio-reset-driver.patch
+++ b/target/linux/starfive/patches-6.1/1022-reset-starfive-Add-JH7100-audio-reset-driver.patch
@@ -20,7 +20,7 @@ Signed-off-by: Emil Renner Berthing <kernel at esmil.dk>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -19704,7 +19704,7 @@ STARFIVE JH71X0 RESET CONTROLLER DRIVERS
+@@ -19711,7 +19711,7 @@ STARFIVE JH71X0 RESET CONTROLLER DRIVERS
  M:	Emil Renner Berthing <kernel at esmil.dk>
  M:	Hal Feng <hal.feng at starfivetech.com>
  S:	Maintained



From lede-commits at lists.infradead.org  Tue Mar 12 05:02:16 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 08:02:16 -0400
Subject: [openwrt/openwrt]  Revert "kernel: config: add symbol introduced with
 6.2"
In-Reply-To: <171024493689.789565.6035416285760051982@git-01.infra.openwrt.org>
References: <171024493689.789565.6035416285760051982@git-01.infra.openwrt.org>
Message-ID: <mailman.15591.1710244960.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/645b44d8ff06115602bdccdf2ef14b0fe0e410d4

commit 645b44d8ff06115602bdccdf2ef14b0fe0e410d4
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 12 13:00:03 2024 +0100

    Revert "kernel: config: add symbol introduced with 6.2"
    
    This reverts commit 7ea82bc17d1583f4d9d46397846b0eb63e6651eb.
    
    This commit does not meet formal requirments, and has been merged due to
    my error.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/generic/config-6.6 | 1 -
 1 file changed, 1 deletion(-)

diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index db828745df..319f56fe01 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -1412,7 +1412,6 @@ CONFIG_DEBUG_FS_ALLOW_ALL=y
 # CONFIG_DEBUG_INFO_BTF is not set
 CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
 # CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
-# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set
 # CONFIG_DEBUG_INFO_DWARF4 is not set
 # CONFIG_DEBUG_INFO_DWARF5 is not set
 CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y



From lede-commits at lists.infradead.org  Tue Mar 12 08:58:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 11:58:07 -0400
Subject: [openwrt/openwrt]  kernel: config: add missing symbol for kenrel 6.6
In-Reply-To: <171025908725.1356179.12809727115317179093@git-01.infra.openwrt.org>
References: <171025908725.1356179.12809727115317179093@git-01.infra.openwrt.org>
Message-ID: <mailman.15694.1710259097.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/4468cae502b5155f2bd4e1d8aac307acbb56800e

commit 4468cae502b5155f2bd4e1d8aac307acbb56800e
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Tue Mar 12 22:44:37 2024 +0800

    kernel: config: add missing symbol for kenrel 6.6
    
    CONFIG_HID_SUPPORT:
    Set default value for kmod-hid
    
    CONFIG_USB_CDNS3_IMX:
    CONFIG_USB_CDNS3_PCI_WRAP:
    CONFIG_USB_CDNSP_PCI:
    Introduced by db0d7cf6a1 (usb: add cdns3 support)
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 target/linux/generic/config-6.6 | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 319f56fe01..4f3d7f2e23 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -2539,6 +2539,7 @@ CONFIG_HARDEN_EL2_VECTORS=y
 # CONFIG_HID_STEAM is not set
 # CONFIG_HID_STEELSERIES is not set
 # CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_SUPPORT is not set
 # CONFIG_HID_THINGM is not set
 # CONFIG_HID_THRUSTMASTER is not set
 # CONFIG_HID_TIVO is not set
@@ -7289,7 +7290,10 @@ CONFIG_USB_BELKIN=y
 # CONFIG_USB_CATC is not set
 # CONFIG_USB_CDC_COMPOSITE is not set
 # CONFIG_USB_CDNS3 is not set
+# CONFIG_USB_CDNS3_IMX is not set
+# CONFIG_USB_CDNS3_PCI_WRAP is not set
 # CONFIG_USB_CDNS_SUPPORT is not set
+# CONFIG_USB_CDNSP_PCI is not set
 # CONFIG_USB_CHAOSKEY is not set
 # CONFIG_USB_CHIPIDEA is not set
 # CONFIG_USB_CHIPIDEA_GENERIC is not set



From lede-commits at lists.infradead.org  Tue Mar 12 11:19:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 14:19:03 -0400
Subject: [openwrt/openwrt]  ramips: add support for YunCore G720
In-Reply-To: <171026754377.1757907.16437095166557562807@git-01.infra.openwrt.org>
References: <171026754377.1757907.16437095166557562807@git-01.infra.openwrt.org>
Message-ID: <mailman.15762.1710267561.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/65df33fc76f722701f161dd88828f61c9e31f1d1

commit 65df33fc76f722701f161dd88828f61c9e31f1d1
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 8 20:20:23 2024 +0000

    ramips: add support for YunCore G720
    
    The YunCore G720 is a dual band 802.11ax router with 5 GbE ports.
    
    Specs:
    - SoC: MediaTek MT7621
    - Ethernet: 5x GbE ports (built-in MT7530)
    - Wireless 2.4GHz / 5GHz: MediaTek MT7915E
    - RAM: 256MiB
    - ROM: 16MiB (W25Q128)
    - 1 Button (reset)
    - 8 LEDs (1x system, 2x wifi, 5x switch ports)
    
    Flash instructions:
    The vendor firmware is based on OpenWrt, the sysupgrade image can be
    flashed using the '-F' (force) option on the CLI.
    Make sure not to keep settings when doing so.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 target/linux/ramips/dts/mt7621_yuncore_g720.dts    | 188 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |  10 ++
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |   3 +-
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac        |   3 +-
 4 files changed, 202 insertions(+), 2 deletions(-)

diff --git a/target/linux/ramips/dts/mt7621_yuncore_g720.dts b/target/linux/ramips/dts/mt7621_yuncore_g720.dts
new file mode 100644
index 0000000000..4b88064b49
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_yuncore_g720.dts
@@ -0,0 +1,188 @@
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+#include "mt7621.dtsi"
+
+/ {
+	compatible = "yuncore,g720", "mediatek,mt7621-soc";
+	model = "YunCore G720";
+
+	aliases {
+		label-mac-device = &wifi0;
+		led-boot = &led_sys_red;
+		led-failsafe = &led_sys_red;
+		led-running = &led_sys_red;
+		led-upgrade = &led_sys_red;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_sys_red: led-sys {
+			color = <LED_COLOR_ID_RED>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+
+	watchdog {
+		compatible = "linux,wdt-gpio";
+		gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+		hw_algo = "toggle";
+		hw_margin_ms = <200>;
+		always-running;
+	};
+};
+
+&gpio {
+	s1 {
+		gpio-hog;
+		line-name = "s1";
+		gpios = <4 GPIO_ACTIVE_LOW>;
+		output-high;
+	};
+
+	s2 {
+		gpio-hog;
+		line-name = "s2";
+		gpios = <3 GPIO_ACTIVE_LOW>;
+		output-high;
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "w25q128", "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <10000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "factory";
+				reg = <0x50000 0x40000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0xe00>;
+					};
+
+					macaddr_factory_e000: macaddr at e000 {
+						reg = <0xe000 0x6>;
+					};
+
+					macaddr_factory_e006: macaddr at e006 {
+						reg = <0xe006 0x6>;
+					};
+				};
+			};
+
+			partition at 50000 {
+				compatible = "denx,uimage";
+				label = "firmware";
+				reg = <0x90000 0xf70000>;
+			};
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_e000>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	status = "okay";
+	label = "wan";
+	phy-handle = <&ethphy4>;
+
+	nvmem-cells = <&macaddr_factory_e006>;
+	nvmem-cell-names = "mac-address";
+};
+
+&mdio {
+	ethphy4: ethernet-phy at 4 {
+		reg = <4>;
+	};
+};
+
+&switch0 {
+	ports {
+		port at 0 {
+			status = "okay";
+			label = "lan1";
+		};
+
+		port at 1 {
+			status = "okay";
+			label = "lan2";
+		};
+
+		port at 2 {
+			status = "okay";
+			label = "lan3";
+		};
+
+		port at 3 {
+			status = "okay";
+			label = "lan4";
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie1 {
+	wifi0: wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		nvmem-cells = <&eeprom_factory_0>;
+		nvmem-cell-names = "eeprom";
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "jtag", "wdt";
+		function = "gpio";
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index a46ea39d59..3b9ee022f6 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -2918,6 +2918,16 @@ define Device/yuncore_fap690
 endef
 TARGET_DEVICES += yuncore_fap690
 
+define Device/yuncore_g720
+  $(Device/dsa-migration)
+  DEVICE_VENDOR := YunCore
+  DEVICE_MODEL := G720
+  DEVICE_PACKAGES := kmod-mt7915-firmware
+  IMAGE_SIZE := 15808k
+  SUPPORTED_DEVICES += mt7621-rfb-ax-nor
+endef
+TARGET_DEVICES += yuncore_g720
+
 define Device/zbtlink_zbt-we1326
   $(Device/dsa-migration)
   $(Device/uimage-lzma-loader)
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
index 1061de6f44..81afa45e80 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -30,7 +30,8 @@ asus,rt-ax53u)
 	ucidef_set_led_wlan "wlan2g" "WiFi 2.4GHz" "mt76-phy0" "phy0tpt"
 	ucidef_set_led_wlan "wlan5g" "WiFi 5GHz" "mt76-phy1" "phy1tpt"
 	;;
-asus,rt-ax54)
+asus,rt-ax54|\
+yuncore,g720)
 	ucidef_set_led_wlan "wlan2g" "WiFi 2.4GHz" "mt76-phy0" "phy0tpt"
 	ucidef_set_led_wlan "wlan5g" "WiFi 5GHz" "mt76-phy1" "phy1tpt"
 	;;
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 8a977e68ae..3be4e24e09 100644
--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -184,7 +184,8 @@ case "$board" in
 		hw_mac_addr="$(mtd_get_mac_binary rom_file 0xf100)"
 		[ "$PHYNBR" = "1" ] &&  macaddr_add "$hw_mac_addr" 2 > "/sys${DEVPATH}/macaddress"
 		;;
-	yuncore,ax820)
+	yuncore,ax820|\
+	yuncore,g720)
 		[ "$PHYNBR" = "1" ] && \
 			macaddr_setbit_la "$(mtd_get_mac_binary Factory 0xe000)" > /sys${DEVPATH}/macaddress
 		;;



From lede-commits at lists.infradead.org  Tue Mar 12 11:50:00 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 14:50:00 -0400
Subject: [openwrt/openwrt]  kernel: config: 6.6: disable ZSTD debug info
 compression by default
In-Reply-To: <171026940018.1842432.5337423889462894103@git-01.infra.openwrt.org>
References: <171026940018.1842432.5337423889462894103@git-01.infra.openwrt.org>
Message-ID: <mailman.15767.1710269406.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/532de62e4cd4def2ec261fa7d5fba968cfd8c97f

commit 532de62e4cd4def2ec261fa7d5fba968cfd8c97f
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 12 00:06:14 2024 -0400

    kernel: config: 6.6: disable ZSTD debug info compression by default
    
    When kernel 6.6 is being compiled with GCC13 it will prompt for:
    Compressed Debug information
    > 1. Don't compress debug information (DEBUG_INFO_COMPRESSED_NONE)
      2. Compress debugging information with zlib (DEBUG_INFO_COMPRESSED_ZLIB)
      3. Compress debugging information with zstd (DEBUG_INFO_COMPRESSED_ZSTD) (NEW)
    
    This is because kernel now also has support for compressing debug info
    with ZSTD, so add the missing symbol and disable it by default.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/generic/config-6.6 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 4f3d7f2e23..3cb50bc274 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -1412,6 +1412,7 @@ CONFIG_DEBUG_FS_ALLOW_ALL=y
 # CONFIG_DEBUG_INFO_BTF is not set
 CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
 # CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
+# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set
 # CONFIG_DEBUG_INFO_DWARF4 is not set
 # CONFIG_DEBUG_INFO_DWARF5 is not set
 CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y



From lede-commits at lists.infradead.org  Tue Mar 12 12:39:10 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 15:39:10 -0400
Subject: [openwrt/openwrt]  lldpd: implement lldp_policy parameter
In-Reply-To: <171027235062.1976629.6636517801624636823@git-01.infra.openwrt.org>
References: <171027235062.1976629.6636517801624636823@git-01.infra.openwrt.org>
Message-ID: <mailman.15771.1710272355.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/497fafb8aea48e764ce0e456f20ab346691e585f

commit 497fafb8aea48e764ce0e456f20ab346691e585f
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Thu Feb 8 20:35:31 2024 +0100

    lldpd: implement lldp_policy parameter
    
    For certain lldp_class scenarios (2 & 3) a policy must be set also.
    Class 4 is default, although it's good to handle the policy eventuality.
    
    Here, set a default lldp_policy for all lldp_class scenarios. Any
    lldp_policy can now be set.
    
    Depends on PR #14584 (which introduced an `if` block)
    
    Tested on 22.03.5, 22.03.6
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/Makefile           |  2 +-
 package/network/services/lldpd/files/lldpd.config |  2 ++
 package/network/services/lldpd/files/lldpd.init   | 12 ++++++++++++
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/Makefile b/package/network/services/lldpd/Makefile
index 1f8d1e546b..ffe2a8d015 100644
--- a/package/network/services/lldpd/Makefile
+++ b/package/network/services/lldpd/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lldpd
 PKG_VERSION:=1.0.17
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/lldpd/lldpd/releases/download/$(PKG_VERSION)/
diff --git a/package/network/services/lldpd/files/lldpd.config b/package/network/services/lldpd/files/lldpd.config
index fa9fe2b4f8..6df3f73bf7 100644
--- a/package/network/services/lldpd/files/lldpd.config
+++ b/package/network/services/lldpd/files/lldpd.config
@@ -7,6 +7,8 @@ config lldpd config
 	option agentxsocket /var/run/agentx.sock
 
 	option lldp_class 4
+	# lldp_policy only needed for lldp_class 2-3
+	# option lldp_policy 'application streaming-video unknown'
 	option lldp_location "address country EU"
 
 	# if empty, the distribution description is sent
diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 498c9e615e..0ba438c379 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -118,6 +118,12 @@ write_lldpd_conf()
 		local lldp_location
 		config_get lldp_location 'config' 'lldp_location'
 
+		local lldp_class
+		config_get lldp_class 'config' 'lldp_class'
+
+		local lldp_policy
+		config_get lldp_policy 'config' 'lldp_policy'
+
 	fi
 
 	local lldp_agenttype
@@ -154,6 +160,12 @@ write_lldpd_conf()
 
 		[ -n "$lldp_location" ] && echo "configure med location" "$lldp_location" >> "$LLDPD_CONF"
 
+		# Manual states that if Class (-M) is 2 or 3, at least one network policy must be defined
+		case "$lldp_class" in
+			2 | 3 ) [ -n "$lldp_policy" ] && echo "configure med policy $lldp_policy" >> "$LLDPD_CONF"
+			;;
+		esac
+
 	fi
 
 	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type" "\"$lldp_agenttype\"" >> "$LLDPD_CONF"



From lede-commits at lists.infradead.org  Tue Mar 12 12:40:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 15:40:28 -0400
Subject: [openwrt/openwrt]  lldpd: shellcheck fixes
In-Reply-To: <171027242861.1980249.97335820272054471@git-01.infra.openwrt.org>
References: <171027242861.1980249.97335820272054471@git-01.infra.openwrt.org>
Message-ID: <mailman.15772.1710272437.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5364fe0f01ca11b47c55d78f756d3176748dd0c2

commit 5364fe0f01ca11b47c55d78f756d3176748dd0c2
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Mon Mar 11 23:33:47 2024 +0100

    lldpd: shellcheck fixes
    
    No functionality/behaviour changes; code is synonymous
    
    Tested on: 22.03.6
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/files/lldpd.init | 93 +++++++++++++------------
 1 file changed, 47 insertions(+), 46 deletions(-)

diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
index 0ba438c379..67ee011ae2 100644
--- a/package/network/services/lldpd/files/lldpd.init
+++ b/package/network/services/lldpd/files/lldpd.init
@@ -1,5 +1,6 @@
 #!/bin/sh /etc/rc.common
 # Copyright (C) 2008-2015 OpenWrt.org
+# shellcheck disable=1091,2034,3037,3043,3045
 
 START=90
 STOP=01
@@ -39,38 +40,38 @@ get_config_restart_hash() {
 	config_load 'lldpd'
 
 	config_get      v 'config' 'lldp_class'; append _string "$v" ","
-	if [ "$CONFIG_LLDPD_WITH_SNMP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_SNMP" = "y" ]; then
 		config_get      v 'config' 'agentxsocket'; append _string "$v" ","
 	fi
 	config_get      v 'config' 'cid_interface'; append _string "$v" ","
 	config_get      v 'config' 'filter'; append _string "$v" ","
 	config_get_bool v 'config' 'readonly_mode'; append _string "$v" ","
 	config_get_bool v 'config' 'lldp_no_version'; append _string "$v" ","
-	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
 		config_get_bool v 'config' 'lldpmed_no_inventory'; append _string "$v" ","
 	fi
 	config_get_bool v 'config' 'enable_lldp' 1; append _string "$v" ","
 	config_get_bool v 'config' 'force_lldp'; append _string "$v" ","
-	if [ "$CONFIG_LLDPD_WITH_CDP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_CDP" = "y" ]; then
 		config_get_bool v 'config' 'enable_cdp'; append _string "$v" ","
 		config_get      v 'config' 'cdp_version'; append _string "$v" ","
 		config_get_bool v 'config' 'force_cdp'; append _string "$v" ","
 		config_get_bool v 'config' 'force_cdpv2'; append _string "$v" ","
 	fi
-	if [ "$CONFIG_LLDPD_WITH_EDP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_EDP" = "y" ]; then
 		config_get_bool v 'config' 'enable_edp'; append _string "$v" ","
 		config_get_bool v 'config' 'force_edp'; append _string "$v" ","
 	fi
-	if [ "$CONFIG_LLDPD_WITH_FDP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_FDP" = "y" ]; then
 		config_get_bool v 'config' 'enable_fdp'; append _string "$v" ","
 		config_get_bool v 'config' 'force_fdp'; append _string "$v" ","
 	fi
-	if [ "$CONFIG_LLDPD_WITH_SONMP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_SONMP" = "y" ]; then
 		config_get_bool v 'config' 'enable_sonmp'; append _string "$v" ","
 		config_get_bool v 'config' 'force_sonmp'; append _string "$v" ","
 	fi
 
-	_hash=`echo -n "${_string}" | md5sum | awk '{ print \$1 }'`
+	_hash=$(echo -n "${_string}" | md5sum | awk '{ print $1 }')
 	export -n "$var=$_hash"
 }
 
@@ -108,7 +109,7 @@ write_lldpd_conf()
 	local lldp_syscapabilities
 	config_get lldp_syscapabilities 'config' 'lldp_syscapabilities'
 
-	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
 		local lldpmed_fast_start
 		config_get_bool lldpmed_fast_start 'config' 'lldpmed_fast_start' 0
 
@@ -148,14 +149,14 @@ write_lldpd_conf()
 	[ -n "$lldp_hostname" ] && echo "configure system hostname" "\"$lldp_hostname\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_mgmt_ip" ] && echo "configure system ip management pattern" "\"$lldp_mgmt_ip\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_syscapabilities" ] && echo "configure system capabilities enabled $lldp_syscapabilities" >> "$LLDPD_CONF"
-	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ] && [ $lldpmed_fast_start -gt 0 ]; then
-		if [ $lldpmed_fast_start_tx_interval -gt 0 ]; then
+	if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ] && [ "$lldpmed_fast_start" -gt 0 ]; then
+		if [ "$lldpmed_fast_start_tx_interval" -gt 0 ]; then
 			echo "configure med fast-start tx-interval $lldpmed_fast_start_tx_interval" >> "$LLDPD_CONF"
 		else
 			echo "configure med fast-start enable" >> "$LLDPD_CONF"
 		fi
 	fi
-	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
 		# other 'configure med xxx' statements go here
 
 		[ -n "$lldp_location" ] && echo "configure med location" "$lldp_location" >> "$LLDPD_CONF"
@@ -171,11 +172,11 @@ write_lldpd_conf()
 	[ -n "$lldp_agenttype" ] && echo "configure lldp agent-type" "\"$lldp_agenttype\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_portidsubtype" ] && echo "configure lldp portidsubtype" "\"$lldp_portidsubtype\"" >> "$LLDPD_CONF"
 	[ -n "$lldp_platform" ] && echo "configure system platform" "\"$lldp_platform\"" >> "$LLDPD_CONF"
-	[ -n $lldp_tx_interval ] && echo "configure lldp tx-interval $lldp_tx_interval" >> "$LLDPD_CONF"
-	[ $lldp_tx_hold -gt 0 ] && echo "configure lldp tx-hold $lldp_tx_hold" >> "$LLDPD_CONF"
+	[ -n "$lldp_tx_interval" ] && echo "configure lldp tx-interval $lldp_tx_interval" >> "$LLDPD_CONF"
+	[ "$lldp_tx_hold" -gt 0 ] && echo "configure lldp tx-hold $lldp_tx_hold" >> "$LLDPD_CONF"
 
 	# Since lldpd's sysconfdir is /tmp, we'll symlink /etc/lldpd.d to /tmp/$LLDPD_CONFS_DIR
-	[ -e $LLDPD_CONFS_DIR ] || ln -s /etc/lldpd.d $LLDPD_CONFS_DIR
+	[ -e "$LLDPD_CONFS_DIR" ] || ln -s /etc/lldpd.d "$LLDPD_CONFS_DIR"
 }
 
 start_service() {
@@ -202,31 +203,31 @@ start_service() {
 	config_load 'lldpd'
 	config_get_bool enable_lldp 'config' 'enable_lldp' 1
 	config_get_bool force_lldp 'config' 'force_lldp' 0
-	if [ "$CONFIG_LLDPD_WITH_CDP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_CDP" = "y" ]; then
 		config_get_bool enable_cdp 'config' 'enable_cdp' 0
 		config_get cdp_version 'config' 'cdp_version' 'cdpv1v2'
 		config_get_bool force_cdp 'config' 'force_cdp' 0
 		config_get_bool force_cdpv2 'config' 'force_cdpv2' 0
 	fi
-	if [ "$CONFIG_LLDPD_WITH_FDP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_FDP" = "y" ]; then
 		config_get_bool enable_fdp 'config' 'enable_fdp' 0
 		config_get_bool force_fdp 'config' 'force_fdp' 0
 	fi
-	if [ "$CONFIG_LLDPD_WITH_SONMP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_SONMP" = "y" ]; then
 		config_get_bool enable_sonmp 'config' 'enable_sonmp' 0
 		config_get_bool force_sonmp 'config' 'force_sonmp' 0
 	fi
-	if [ "$CONFIG_LLDPD_WITH_EDP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_EDP" = "y" ]; then
 		config_get_bool enable_edp 'config' 'enable_edp' 0
 		config_get_bool force_edp 'config' 'force_edp' 0
 	fi
 	config_get lldp_class 'config' 'lldp_class'
 	config_get_bool lldp_no_version 'config' 'lldp_no_version' 0
-	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
 		config_get_bool lldpmed_no_inventory 'config' 'lldpmed_no_inventory' 0
 	fi
 	config_get_bool readonly_mode 'config' 'readonly_mode' 0
-	if [ "$CONFIG_LLDPD_WITH_SNMP" == "y" ]; then
+	if [ "$CONFIG_LLDPD_WITH_SNMP" = "y" ]; then
 		config_get agentxsocket 'config' 'agentxsocket'
 	fi
 	config_get filter 'config' 'filter' 15
@@ -241,8 +242,8 @@ start_service() {
 	procd_set_param command ${LLDPDBIN}
 	procd_append_param command -d
 
-	if [ $enable_lldp -gt 0 ]; then
-		if [ $force_lldp -gt 0 ]; then
+	if [ "$enable_lldp" -gt 0 ]; then
+		if [ "$force_lldp" -gt 0 ]; then
 			procd_append_param command '-l'
 		fi
 	else
@@ -250,20 +251,20 @@ start_service() {
 		procd_append_param command '-ll'
 	fi
 
-	if [ "$CONFIG_LLDPD_WITH_CDP" == "y" ] && [ $enable_cdp -gt 0 ]; then
-		if [ $cdp_version == "cdpv2" ]; then
-			if [ $force_cdp -gt 0 ]; then
+	if [ "$CONFIG_LLDPD_WITH_CDP" = "y" ] && [ "$enable_cdp" -gt 0 ]; then
+		if [ "$cdp_version" = "cdpv2" ]; then
+			if [ "$force_cdp" -gt 0 ]; then
 				# CDPv1 disabled, CDPv2 forced
 				procd_append_param command '-ccccc'
 			else
 				# CDPv1 disabled, CDPv2 enabled
 				procd_append_param command '-cccc'
 			fi
-		elif [ $cdp_version == "cdpv1v2" ]; then
-			if [ $force_cdp -gt 0 ] && [ $force_cdpv2 -gt 0 ]; then
+		elif [ "$cdp_version" = "cdpv1v2" ]; then
+			if [ "$force_cdp" -gt 0 ] && [ "$force_cdpv2" -gt 0 ]; then
 				# CDPv1 enabled, CDPv2 forced
 				procd_append_param command '-ccc'
-			elif [ $force_cdp -gt 0 ]; then
+			elif [ "$force_cdp" -gt 0 ]; then
 				# CDPv1 forced, CDPv2 enabled
 				procd_append_param command '-cc'
 			else
@@ -273,8 +274,8 @@ start_service() {
 		fi
 	fi
 
-	if [ "$CONFIG_LLDPD_WITH_FDP" == "y" ] && [ $enable_fdp -gt 0 ]; then
-		if [ $force_fdp -gt 0 ]; then
+	if [ "$CONFIG_LLDPD_WITH_FDP" = "y" ] && [ "$enable_fdp" -gt 0 ]; then
+		if [ "$force_fdp" -gt 0 ]; then
 			# FDP enabled and forced
 			procd_append_param command '-ff'
 		else
@@ -283,8 +284,8 @@ start_service() {
 		fi
 	fi
 
-	if [ "$CONFIG_LLDPD_WITH_SONMP" == "y" ] && [ $enable_sonmp -gt 0 ]; then
-		if [ $force_sonmp -gt 0 ]; then
+	if [ "$CONFIG_LLDPD_WITH_SONMP" = "y" ] && [ "$enable_sonmp" -gt 0 ]; then
+		if [ "$force_sonmp" -gt 0 ]; then
 			# SONMP enabled and forced
 			procd_append_param command '-ss'
 		else
@@ -293,8 +294,8 @@ start_service() {
 		fi
 	fi
 
-	if [ "$CONFIG_LLDPD_WITH_EDP" == "y" ] && [ $enable_edp -gt 0 ]; then
-		if [ $force_edp -gt 0 ]; then
+	if [ "$CONFIG_LLDPD_WITH_EDP" = "y" ] && [ "$enable_edp" -gt 0 ]; then
+		if [ "$force_edp" -gt 0 ]; then
 			# EDP enabled and forced
 			procd_append_param command '-ee'
 		else
@@ -303,11 +304,11 @@ start_service() {
 		fi
 	fi
 
-	[ $readonly_mode -gt 0 ] && procd_append_param command '-r'
-	[ $lldp_no_version -gt 0 ] && procd_append_param command '-k'
-	[ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ] && [ $lldpmed_no_inventory -gt 0 ] && procd_append_param command '-i'
+	[ "$readonly_mode" -gt 0 ] && procd_append_param command '-r'
+	[ "$lldp_no_version" -gt 0 ] && procd_append_param command '-k'
+	[ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ] && [ "$lldpmed_no_inventory" -gt 0 ] && procd_append_param command '-i'
 	[ -n "$lldp_class" ] && procd_append_param command -M "$lldp_class"
-	[ "$CONFIG_LLDPD_WITH_SNMP" == "y" ] && [ -n "$agentxsocket" ] && procd_append_param command -x -X "$agentxsocket"
+	[ "$CONFIG_LLDPD_WITH_SNMP" = "y" ] && [ -n "$agentxsocket" ] && procd_append_param command -x -X "$agentxsocket"
 	[ -n "$filter" ] && procd_append_param command -H "$filter"
 
     # ChassisID interfaces
@@ -321,7 +322,7 @@ start_service() {
 
 	local restart_hash
 	get_config_restart_hash restart_hash
-	echo -n "$restart_hash" > $LLDPD_RESTART_HASH
+	echo -n "$restart_hash" > "$LLDPD_RESTART_HASH"
 
 	# set auto respawn behavior
 	procd_set_param respawn
@@ -339,7 +340,7 @@ reload_service() {
 	local config_hash=""
 
 	get_config_restart_hash config_hash
-	if [ -f ${LLDPD_RESTART_HASH} ]; then running_hash=`cat $LLDPD_RESTART_HASH`; fi
+	[ -f ${LLDPD_RESTART_HASH} ] && running_hash=$(cat "$LLDPD_RESTART_HASH")
 
 	if [ "x$running_hash" != "x$config_hash" ]; then
 		# Restart LLDPd
@@ -348,7 +349,7 @@ reload_service() {
 		return 0
 	fi
 
-	$LLDPCLI -u $LLDPSOCKET &> /dev/null <<-EOF
+	$LLDPCLI -u "$LLDPSOCKET" 2>&1 /dev/null <<-EOF
 		pause
 		unconfigure lldp custom-tlv
 		unconfigure system interface pattern
@@ -357,8 +358,8 @@ reload_service() {
 		unconfigure system ip management pattern
 		unconfigure system platform
 	EOF
-	if [ "$CONFIG_LLDPD_WITH_LLDPMED" == "y" ]; then
-		$LLDPCLI -u $LLDPSOCKET &> /dev/null <<-EOF
+	if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
+		$LLDPCLI -u "$LLDPSOCKET" 2>&1 /dev/null <<-EOF
 			unconfigure med fast-start
 		EOF
 
@@ -366,9 +367,9 @@ reload_service() {
 	# Rewrite lldpd.conf
 	# If something changed it should be included by the lldpcli call
 	write_lldpd_conf
-	$LLDPCLI -u $LLDPSOCKET -c $LLDPD_CONF -c $LLDPD_CONFS_DIR &> /dev/null
+	$LLDPCLI -u "$LLDPSOCKET" -c "$LLDPD_CONF" -c "$LLDPD_CONFS_DIR" 2>&1 /dev/null
 	# Broadcast update over the wire
-	$LLDPCLI -u $LLDPSOCKET &> /dev/null <<-EOF
+	$LLDPCLI -u "$LLDPSOCKET" 2>&1 /dev/null <<-EOF
 		resume
 		update
 	EOF
@@ -376,6 +377,6 @@ reload_service() {
 }
 
 stop_service() {
-	rm -rf ${LLDPD_RUN} $LLDPSOCKET 2>/dev/null
+	rm -rf ${LLDPD_RUN} "$LLDPSOCKET" 2> /dev/null
 }
 



From lede-commits at lists.infradead.org  Tue Mar 12 12:41:05 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 15:41:05 -0400
Subject: [openwrt/openwrt]  lldpd: update URL
In-Reply-To: <171027246538.1981048.17089881773759647714@git-01.infra.openwrt.org>
References: <171027246538.1981048.17089881773759647714@git-01.infra.openwrt.org>
Message-ID: <mailman.15773.1710272469.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f753d3152f81bd037e9b7abb1b8c5bf9fe54596b

commit f753d3152f81bd037e9b7abb1b8c5bf9fe54596b
Author: Paul Donald <newtwen at gmail.com>
AuthorDate: Tue Mar 12 00:31:15 2024 +0100

    lldpd: update URL
    
    update Makefile URL
    
    Signed-off-by: Paul Donald <newtwen at gmail.com>
---
 package/network/services/lldpd/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/lldpd/Makefile b/package/network/services/lldpd/Makefile
index ffe2a8d015..18cdda33ce 100644
--- a/package/network/services/lldpd/Makefile
+++ b/package/network/services/lldpd/Makefile
@@ -31,7 +31,7 @@ define Package/lldpd
   CATEGORY:=Network
   SUBMENU:=Routing and Redirection
   TITLE:=Link Layer Discovery Protocol daemon
-  URL:=https://vincentbernat.github.io/lldpd/
+  URL:=https://lldpd.github.io/
   DEPENDS:=+libcap +libevent2 +USE_GLIBC:libbsd +LLDPD_WITH_JSON:libjson-c +LLDPD_WITH_SNMP:libnetsnmp
   USERID:=lldp=121:lldp=129
   MENU:=1



From lede-commits at lists.infradead.org  Tue Mar 12 13:43:55 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 16:43:55 -0400
Subject: [openwrt/openwrt]  ramips: add support for YunCore G720
In-Reply-To: <171027623436.2119577.9966665707853796867@git-01.infra.openwrt.org>
References: <171027623436.2119577.9966665707853796867@git-01.infra.openwrt.org>
Message-ID: <mailman.15780.1710276241.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/63a7d5e93709955364777c4b4c44df95c721be91

commit 63a7d5e93709955364777c4b4c44df95c721be91
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 8 20:20:23 2024 +0000

    ramips: add support for YunCore G720
    
    The YunCore G720 is a dual band 802.11ax router with 5 GbE ports.
    
    Specs:
    - SoC: MediaTek MT7621
    - Ethernet: 5x GbE ports (built-in MT7530)
    - Wireless 2.4GHz / 5GHz: MediaTek MT7915E
    - RAM: 256MiB
    - ROM: 16MiB (W25Q128)
    - 1 Button (reset)
    - 8 LEDs (1x system, 2x wifi, 5x switch ports)
    
    Flash instructions:
    The vendor firmware is based on OpenWrt, the sysupgrade image can be
    flashed using the '-F' (force) option on the CLI.
    Make sure not to keep settings when doing so.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    (cherry picked from commit 65df33fc76f722701f161dd88828f61c9e31f1d1)
---
 target/linux/ramips/dts/mt7621_yuncore_g720.dts    | 188 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |  10 ++
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |   3 +-
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac        |   3 +-
 4 files changed, 202 insertions(+), 2 deletions(-)

diff --git a/target/linux/ramips/dts/mt7621_yuncore_g720.dts b/target/linux/ramips/dts/mt7621_yuncore_g720.dts
new file mode 100644
index 0000000000..4b88064b49
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_yuncore_g720.dts
@@ -0,0 +1,188 @@
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+#include "mt7621.dtsi"
+
+/ {
+	compatible = "yuncore,g720", "mediatek,mt7621-soc";
+	model = "YunCore G720";
+
+	aliases {
+		label-mac-device = &wifi0;
+		led-boot = &led_sys_red;
+		led-failsafe = &led_sys_red;
+		led-running = &led_sys_red;
+		led-upgrade = &led_sys_red;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_sys_red: led-sys {
+			color = <LED_COLOR_ID_RED>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+
+	watchdog {
+		compatible = "linux,wdt-gpio";
+		gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+		hw_algo = "toggle";
+		hw_margin_ms = <200>;
+		always-running;
+	};
+};
+
+&gpio {
+	s1 {
+		gpio-hog;
+		line-name = "s1";
+		gpios = <4 GPIO_ACTIVE_LOW>;
+		output-high;
+	};
+
+	s2 {
+		gpio-hog;
+		line-name = "s2";
+		gpios = <3 GPIO_ACTIVE_LOW>;
+		output-high;
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "w25q128", "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <10000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "factory";
+				reg = <0x50000 0x40000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0xe00>;
+					};
+
+					macaddr_factory_e000: macaddr at e000 {
+						reg = <0xe000 0x6>;
+					};
+
+					macaddr_factory_e006: macaddr at e006 {
+						reg = <0xe006 0x6>;
+					};
+				};
+			};
+
+			partition at 50000 {
+				compatible = "denx,uimage";
+				label = "firmware";
+				reg = <0x90000 0xf70000>;
+			};
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_e000>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	status = "okay";
+	label = "wan";
+	phy-handle = <&ethphy4>;
+
+	nvmem-cells = <&macaddr_factory_e006>;
+	nvmem-cell-names = "mac-address";
+};
+
+&mdio {
+	ethphy4: ethernet-phy at 4 {
+		reg = <4>;
+	};
+};
+
+&switch0 {
+	ports {
+		port at 0 {
+			status = "okay";
+			label = "lan1";
+		};
+
+		port at 1 {
+			status = "okay";
+			label = "lan2";
+		};
+
+		port at 2 {
+			status = "okay";
+			label = "lan3";
+		};
+
+		port at 3 {
+			status = "okay";
+			label = "lan4";
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie1 {
+	wifi0: wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		nvmem-cells = <&eeprom_factory_0>;
+		nvmem-cell-names = "eeprom";
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "jtag", "wdt";
+		function = "gpio";
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 6b869f9594..2800eea681 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -2806,6 +2806,16 @@ define Device/yuncore_fap690
 endef
 TARGET_DEVICES += yuncore_fap690
 
+define Device/yuncore_g720
+  $(Device/dsa-migration)
+  DEVICE_VENDOR := YunCore
+  DEVICE_MODEL := G720
+  DEVICE_PACKAGES := kmod-mt7915-firmware
+  IMAGE_SIZE := 15808k
+  SUPPORTED_DEVICES += mt7621-rfb-ax-nor
+endef
+TARGET_DEVICES += yuncore_g720
+
 define Device/zbtlink_zbt-we1326
   $(Device/dsa-migration)
   $(Device/uimage-lzma-loader)
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
index db9c3f66e8..a721833040 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -30,7 +30,8 @@ asus,rt-ax53u)
 	ucidef_set_led_wlan "wlan2g" "WiFi 2.4GHz" "mt76-phy0" "phy0tpt"
 	ucidef_set_led_wlan "wlan5g" "WiFi 5GHz" "mt76-phy1" "phy1tpt"
 	;;
-asus,rt-ax54)
+asus,rt-ax54|\
+yuncore,g720)
 	ucidef_set_led_wlan "wlan2g" "WiFi 2.4GHz" "mt76-phy0" "phy0tpt"
 	ucidef_set_led_wlan "wlan5g" "WiFi 5GHz" "mt76-phy1" "phy1tpt"
 	;;
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 6ab19b9e3c..353bd31233 100644
--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -178,7 +178,8 @@ case "$board" in
 		hw_mac_addr="$(mtd_get_mac_binary rom_file 0xf100)"
 		[ "$PHYNBR" = "1" ] &&  macaddr_add "$hw_mac_addr" 2 > "/sys${DEVPATH}/macaddress"
 		;;
-	yuncore,ax820)
+	yuncore,ax820|\
+	yuncore,g720)
 		[ "$PHYNBR" = "1" ] && \
 			macaddr_setbit_la "$(mtd_get_mac_binary Factory 0xe000)" > /sys${DEVPATH}/macaddress
 		;;



From lede-commits at lists.infradead.org  Tue Mar 12 13:43:54 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 16:43:54 -0400
Subject: [openwrt/openwrt]  ramips: add support for TP-Link EX220 v1
In-Reply-To: <171027623436.2119577.9966665707853796867@git-01.infra.openwrt.org>
References: <171027623436.2119577.9966665707853796867@git-01.infra.openwrt.org>
Message-ID: <mailman.15783.1710276241.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/1562847cde4ba179c60ddf2696aadca901fd578b

commit 1562847cde4ba179c60ddf2696aadca901fd578b
Author: Darlan Pedro de Campos <darlanpedro at gmail.com>
AuthorDate: Thu Nov 23 19:31:05 2023 -0500

    ramips: add support for TP-Link EX220 v1
    
    This device is very similar, if not identical, to the TP-Link AX23 v1
    but is targeted at service providers and features a completely different
    flash layout.
    
    Hardware
    --------
    
    CPU:    MediaTek MT7621 DAT
    RAM:    128MB DDR3 (integrated)
    FLASH:  16MB SPI-NOR
    WiFi:   MediaTek MT7905 + MT7975 (2.4 / 5 DBDC) 802.11ax
    SERIAL: 115200 8N1
            LEDs - (3V3 - GND - RX - TX) - ETH ports
    
    Installation
    ------------
    
    Flashing is only possible via a serial connection using the sysupgrade
    image; the factory image must be signed. You can flash the sysupgrade
    image directly through the U-Boot console, or preferably, by booting the
    initramfs image and flashing with the sysupgrade command. Follow these
    steps for sysupgrade flashing:
    
    1. Establish a UART serial connection.
    2. Set up a TFTP server at 192.168.0.2 and copy the initramfs image
       there.
    3. Power on the device and press any key to interrupt normal boot.
    4. Load the initramfs image using tftpboot.
    5. Boot with bootm.
    6. If you haven't done so already, back up all stock mtd partitions.
    7. Copy the sysupgrade image to the router.
    8. Flash OpenWrt through either LuCI or the sysupgrade command. Remember
       not to attempt saving settings.
    
    Revert to stock firmware
    ------------------------
    
    Flash stock firmware via OEM web-recovery mode. If you don't have access
    to the stock firmware image, you will need to restore the firmware
    partition backed up earlier.
    
    Web-Recovery
    ------------
    
    The router supports an HTTP recovery mode:
    
    1. Turn off the router.
    2. Press the reset button and power on the device.
    3. When all LEDs start flashing, release reset and quickly press it
       again.
    
    The interface is reachable at 192.168.0.1 and supports installation of
    the OEM factory image. Note that flashing OpenWrt this way is not
    possible, as mentioned above.
    
    Signed-off-by: Darlan Pedro de Campos <darlanpedro at gmail.com>
    (cherry picked from commit 2a0c9cc8cdaa76414993deaff3371dba294638db)
---
 target/linux/ramips/dts/mt7621_tplink_ex220-v1.dts | 245 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |  14 ++
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |   3 +-
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac        |   4 +
 4 files changed, 265 insertions(+), 1 deletion(-)

diff --git a/target/linux/ramips/dts/mt7621_tplink_ex220-v1.dts b/target/linux/ramips/dts/mt7621_tplink_ex220-v1.dts
new file mode 100644
index 0000000000..c809cb0c0b
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_tplink_ex220-v1.dts
@@ -0,0 +1,245 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	compatible = "tplink,ex220-v1", "mediatek,mt7621-soc";
+	model = "TP-Link EX220 v1";
+
+	aliases {
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+		label-mac-device = &gmac0;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		button-wps {
+			label = "rfkill";
+			gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RFKILL>;
+		};
+
+		button-reset {
+			label = "reset";
+			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led-wps {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WPS;
+			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+		};
+
+		led-lan {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_LAN;
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+		};
+
+		led-wan-orange {
+			color = <LED_COLOR_ID_AMBER>;
+			function = LED_FUNCTION_WAN;
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+		};
+
+		led-wan-green {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WAN;
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+
+		led-wifi5g {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <5>;
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+
+		led-wifi2g {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <2>;
+			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		led_power: led-power {
+			label = "green:power"; // to be removed once #13837 is merged
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_POWER;
+			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <25000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "boot";
+				reg = <0x00 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "boot-env";
+				reg = <0x30000 0x10000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "factory";
+				reg = <0x40000 0x10000>;
+				read-only;
+			};
+
+			partition at 50000 {
+				label = "config";
+				reg = <0x50000 0x10000>;
+				read-only;
+			};
+
+			partition at 60000 {
+				label = "isp_config";
+				reg = <0x60000 0x10000>;
+				read-only;
+			};
+
+			partition at 70000 {
+				label = "rom_file";
+				reg = <0x70000 0x10000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_rom_file_f100: macaddr at f100 {
+						compatible = "mac-base";
+						reg = <0xf100 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
+			};
+
+			partition at 80000 {
+				label = "cloud";
+				reg = <0x80000 0x10000>;
+				read-only;
+			};
+
+			radio: partition at 90000 {
+				label = "radio";
+				reg = <0x90000 0x20000>;
+				read-only;
+			};
+
+			partition at b0000 {
+				label = "config_bak";
+				reg = <0xb0000 0x10000>;
+				read-only;
+			};
+
+			partition at c0000 {
+				compatible = "denx,fit";
+				label = "firmware";
+				reg = <0xc0000 0xf30000>;
+			};
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie1 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+		mediatek,mtd-eeprom = <&radio 0x0>;
+		nvmem-cells = <&macaddr_rom_file_f100 0>;
+		nvmem-cell-names = "mac-address";
+		mediatek,disable-radar-background;
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_rom_file_f100 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	status = "okay";
+	label = "wan";
+	phy-handle = <&ethphy4>;
+
+	nvmem-cells = <&macaddr_rom_file_f100 1>;
+	nvmem-cell-names = "mac-address";
+};
+
+&mdio {
+	ethphy4: ethernet-phy at 4 {
+		reg = <4>;
+	};
+};
+
+&switch0 {
+	ports {
+		port at 0 {
+			status = "okay";
+			label = "lan1";
+		};
+
+		port at 1 {
+			status = "okay";
+			label = "lan2";
+		};
+
+		port at 2 {
+			status = "okay";
+			label = "lan3";
+		};
+
+		port at 3 {
+			status = "okay";
+			label = "lan4";
+		};
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "i2c", "uart3", "jtag", "wdt";
+		function = "gpio";
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 945fe3668f..6b869f9594 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -2306,6 +2306,20 @@ define Device/tplink_er605-v2
 endef
 TARGET_DEVICES += tplink_er605-v2
 
+define Device/tplink_ex220-v1
+  $(Device/dsa-migration)
+  DEVICE_VENDOR := TP-Link
+  DEVICE_MODEL := EX220
+  DEVICE_VARIANT := v1
+  DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools
+  TPLINK_BOARD_ID := EX220-V1
+  KERNEL_LOADADDR := 0x82000000
+  KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
+	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  IMAGE_SIZE := 15744k
+endef
+TARGET_DEVICES += tplink_ex220-v1
+
 define Device/tplink_mr600-v2-eu
   $(Device/dsa-migration)
   $(Device/tplink-v2)
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
index 784a4ba0d9..db9c3f66e8 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -188,7 +188,8 @@ snr,snr-cpe-me1)
 tplink,archer-a6-v3|\
 tplink,archer-ax23-v1|\
 tplink,archer-c6-v3|\
-tplink,archer-c6u-v1)
+tplink,archer-c6u-v1|\
+tplink,ex220-v1)
 	ucidef_set_led_netdev "lan" "LAN" "green:lan" "br-lan"
 	ucidef_set_led_netdev "wan" "WAN" "green:wan" "wan"
 	;;
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 46d6b15af0..6ab19b9e3c 100644
--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -174,6 +174,10 @@ case "$board" in
 		hw_mac_addr="$(mtd_get_mac_binary product-info 0x8)"
 		macaddr_add "$hw_mac_addr" "$PHYNBR" > "/sys${DEVPATH}/macaddress"
 		;;
+	tplink,ex220-v1)
+		hw_mac_addr="$(mtd_get_mac_binary rom_file 0xf100)"
+		[ "$PHYNBR" = "1" ] &&  macaddr_add "$hw_mac_addr" 2 > "/sys${DEVPATH}/macaddress"
+		;;
 	yuncore,ax820)
 		[ "$PHYNBR" = "1" ] && \
 			macaddr_setbit_la "$(mtd_get_mac_binary Factory 0xe000)" > /sys${DEVPATH}/macaddress



From lede-commits at lists.infradead.org  Tue Mar 12 15:43:15 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 18:43:15 -0400
Subject: [openwrt/openwrt]  uboot-envtools: add support for Zyxel EX5601-T0
 ubootmod
In-Reply-To: <171028339474.2345374.3841357209640599487@git-01.infra.openwrt.org>
References: <171028339474.2345374.3841357209640599487@git-01.infra.openwrt.org>
Message-ID: <mailman.15795.1710283400.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/02272df01c9a94c8846579f8bb4176b744bc0800

commit 02272df01c9a94c8846579f8bb4176b744bc0800
Author: Nicol? Veronese <nicveronese at gmail.com>
AuthorDate: Thu Nov 2 19:53:08 2023 +0100

    uboot-envtools: add support for Zyxel EX5601-T0 ubootmod
    
    The ubootmod bootlaoder for EX5601-T0 uses two partitions
     in ubi to store enviroment variables. so proper config
     is needed.
    
    Signed-off-by: Nicol? Veronese <nicveronese at gmail.com>
    (cherry picked from commit 2a0805fd3d0a0f57b60778973f341cee90cb5e49)
---
 package/boot/uboot-envtools/files/mediatek_filogic | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic
index 65872b60f5..3551ab9c7d 100644
--- a/package/boot/uboot-envtools/files/mediatek_filogic
+++ b/package/boot/uboot-envtools/files/mediatek_filogic
@@ -102,6 +102,14 @@ zyxel,ex5601-t0)
 	local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
 	ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x40000" "2"
 	;;
+zyxel,ex5601-t0-ubootmod)
+        . /lib/upgrade/nand.sh
+        local envubi=$(nand_find_ubi ubi)
+        local envdev=/dev/$(nand_find_volume $envubi ubootenv)
+        local envdev2=/dev/$(nand_find_volume $envubi ubootenv2)
+        ubootenv_add_uci_config "$envdev" "0x0" "0x1f000" "0x20000" "1"
+        ubootenv_add_uci_config "$envdev2" "0x0" "0x1f000" "0x20000" "1"
+        ;;
 zyxel,ex5700-telenor)
 	ubootenv_add_uci_config "/dev/ubootenv" "0x0" "0x4000" "0x4000" "1"
 	;;



From lede-commits at lists.infradead.org  Tue Mar 12 15:43:14 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 18:43:14 -0400
Subject: [openwrt/openwrt]  uboot-mediatek: add initial Zyxel EX5601-T0
 support
In-Reply-To: <171028339474.2345374.3841357209640599487@git-01.infra.openwrt.org>
References: <171028339474.2345374.3841357209640599487@git-01.infra.openwrt.org>
Message-ID: <mailman.15796.1710283400.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/401d8c7051c395d93bdc8a931020b348d7d297fd

commit 401d8c7051c395d93bdc8a931020b348d7d297fd
Author: Valerio 'ftp21' Mancini <ftp21 at ftp21.eu>
AuthorDate: Sun Aug 27 00:01:58 2023 +0200

    uboot-mediatek: add initial Zyxel EX5601-T0 support
    
    Flash procedure is described in next commit.
    
    TLDR:
    Copy preloader and uboot to /tmp and write them in the mtd.
    This will also require new UBI partition and
     volumes to boot openwrt.
    
    mtd write /tmp/openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-preloader.bin bl2
    mtd write /tmp/openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-bl31-uboot.fip fip
    
    Changelist:
     - Added profile for 4k+256 SPI NAND_TYPE
     - Added basic Zyxel EX5601-T0 uboot profile
    
    Backported from hitech95 branch:
     - Button RESET pin fix
     - Button WPS pin fix
    
    Signed-off-by: Valerio 'ftp21' Mancini <ftp21 at ftp21.eu>
    Signed-off-by: Nicol? Veronese <nicveronese at gmail.com>
    (cherry picked from commit a9cf87027e75c9798bf3cb683a7c32985e4ea483)
---
 .../boot/arm-trusted-firmware-mediatek/Makefile    |  10 +
 package/boot/uboot-mediatek/Makefile               |  13 +
 .../patches/439-add-zyxel_ex5601-t0.patch          | 431 +++++++++++++++++++++
 3 files changed, 454 insertions(+)

diff --git a/package/boot/arm-trusted-firmware-mediatek/Makefile b/package/boot/arm-trusted-firmware-mediatek/Makefile
index 50ca21e60f..8bfcd3522d 100644
--- a/package/boot/arm-trusted-firmware-mediatek/Makefile
+++ b/package/boot/arm-trusted-firmware-mediatek/Makefile
@@ -191,6 +191,15 @@ define Trusted-Firmware-A/mt7986-spim-nand-ddr4
   NAND_TYPE:=spim:2k+64
 endef
 
+define Trusted-Firmware-A/mt7986-spim-nand-4k-ddr4
+  NAME:=MediaTek MT7986 (SPI-NAND via SPIM, DDR4)
+  BOOT_DEVICE:=spim-nand
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr4
+  NAND_TYPE:=spim:4k+256
+endef
+
 define Trusted-Firmware-A/mt7986-nor-ddr3
   NAME:=MediaTek MT7986 (SPI-NOR, DDR3)
   BOOT_DEVICE:=nor
@@ -377,6 +386,7 @@ TFA_TARGETS:= \
 	mt7986-sdmmc-ddr4 \
 	mt7986-snand-ddr4 \
 	mt7986-spim-nand-ddr4 \
+	mt7986-spim-nand-4k-ddr4 \
 	mt7988-emmc-ddr3 \
 	mt7988-nor-ddr3 \
 	mt7988-sdmmc-ddr3 \
diff --git a/package/boot/uboot-mediatek/Makefile b/package/boot/uboot-mediatek/Makefile
index a06d323bae..d0e59d1017 100644
--- a/package/boot/uboot-mediatek/Makefile
+++ b/package/boot/uboot-mediatek/Makefile
@@ -453,6 +453,18 @@ define U-Boot/mt7986_xiaomi_redmi-router-ax6000
   DEPENDS:=+trusted-firmware-a-mt7986-spim-nand-ddr4
 endef
 
+define U-Boot/mt7986_zyxel_ex5601-t0
+  NAME:=Zyxel EX5601-T0
+  BUILD_SUBTARGET:=filogic
+  BUILD_DEVICES:=zyxel_ex5601-t0-ubootmod
+  UBOOT_CONFIG:=mt7986_zyxel_ex5601-t0
+  UBOOT_IMAGE:=u-boot.fip
+  BL2_BOOTDEV:=spim-nand-4k
+  BL2_SOC:=mt7986
+  BL2_DDRTYPE:=ddr4
+  DEPENDS:=+trusted-firmware-a-mt7986-spim-nand-4k-ddr4
+endef
+
 define U-Boot/mt7988_rfb-spim-nand
   NAME:=MT7988 Reference Board
   BUILD_SUBTARGET:=filogic
@@ -552,6 +564,7 @@ UBOOT_TARGETS := \
 	mt7986_tplink_tl-xdr6086 \
 	mt7986_tplink_tl-xdr6088 \
 	mt7986_xiaomi_redmi-router-ax6000 \
+	mt7986_zyxel_ex5601-t0 \
 	mt7986_rfb \
 	mt7988_rfb-spim-nand \
 	mt7988_rfb-snand \
diff --git a/package/boot/uboot-mediatek/patches/439-add-zyxel_ex5601-t0.patch b/package/boot/uboot-mediatek/patches/439-add-zyxel_ex5601-t0.patch
new file mode 100644
index 0000000000..7f0564fd49
--- /dev/null
+++ b/package/boot/uboot-mediatek/patches/439-add-zyxel_ex5601-t0.patch
@@ -0,0 +1,431 @@
+--- /dev/null
++++ b/configs/mt7986_zyxel_ex5601-t0_defconfig
+@@ -0,0 +1,186 @@
++CONFIG_ARM=y
++CONFIG_POSITION_INDEPENDENT=y
++CONFIG_ARCH_MEDIATEK=y
++CONFIG_TARGET_MT7986=y
++CONFIG_TEXT_BASE=0x41e00000
++CONFIG_SYS_MALLOC_F_LEN=0x4000
++CONFIG_SYS_HAS_NONCACHED_MEMORY=y
++CONFIG_NR_DRAM_BANKS=1
++CONFIG_DEFAULT_DEVICE_TREE="mt7986a-zyxel_ex5601-t0"
++CONFIG_DEFAULT_ENV_FILE="zyxel_ex5601-t0_env"
++CONFIG_DEFAULT_FDT_FILE="mediatek/mt7986a-zyxel_ex5601-t0.dtb"
++CONFIG_OF_LIBFDT_OVERLAY=y
++CONFIG_DEBUG_UART_BASE=0x11002000
++CONFIG_DEBUG_UART_CLOCK=40000000
++CONFIG_DEBUG_UART=y
++CONFIG_SYS_LOAD_ADDR=0x46000000
++CONFIG_SMBIOS_PRODUCT_NAME=""
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_BOOTDELAY=30
++CONFIG_AUTOBOOT_MENU_SHOW=y
++CONFIG_CFB_CONSOLE_ANSI=y
++CONFIG_BOARD_LATE_INIT=y
++CONFIG_BUTTON=y
++CONFIG_BUTTON_GPIO=y
++CONFIG_GPIO_HOG=y
++CONFIG_CMD_ENV_FLAGS=y
++CONFIG_FIT=y
++CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
++CONFIG_LED=y
++CONFIG_LED_BLINK=y
++CONFIG_LED_GPIO=y
++CONFIG_LOGLEVEL=7
++CONFIG_LOG=y
++CONFIG_SYS_PROMPT="EX5601> "
++CONFIG_CMD_BOOTMENU=y
++CONFIG_CMD_BOOTP=y
++CONFIG_CMD_BUTTON=y
++CONFIG_CMD_CACHE=y
++CONFIG_CMD_CDP=y
++CONFIG_CMD_CPU=y
++CONFIG_CMD_DHCP=y
++CONFIG_CMD_DM=y
++CONFIG_CMD_DNS=y
++CONFIG_CMD_ECHO=y
++CONFIG_CMD_ENV_READMEM=y
++CONFIG_CMD_ERASEENV=y
++CONFIG_CMD_EXT4=y
++CONFIG_CMD_FAT=y
++CONFIG_CMD_FDT=y
++CONFIG_CMD_FS_GENERIC=y
++CONFIG_CMD_FS_UUID=y
++CONFIG_CMD_GPIO=y
++CONFIG_CMD_GPT=y
++CONFIG_CMD_HASH=y
++CONFIG_CMD_ITEST=y
++CONFIG_CMD_LED=y
++CONFIG_CMD_LICENSE=y
++CONFIG_CMD_LINK_LOCAL=y
++# CONFIG_CMD_MBR is not set
++CONFIG_CMD_MTD=y
++CONFIG_CMD_PCI=y
++CONFIG_CMD_PSTORE=y
++CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
++CONFIG_CMD_SF_TEST=y
++CONFIG_CMD_PING=y
++CONFIG_CMD_PXE=y
++CONFIG_CMD_PWM=y
++CONFIG_CMD_SMC=y
++CONFIG_CMD_TFTPBOOT=y
++CONFIG_CMD_TFTPSRV=y
++CONFIG_CMD_UBI=y
++CONFIG_CMD_UBI_RENAME=y
++CONFIG_CMD_UBIFS=y
++CONFIG_CMD_ASKENV=y
++CONFIG_CMD_PART=y
++CONFIG_CMD_RARP=y
++CONFIG_CMD_SETEXPR=y
++CONFIG_CMD_SLEEP=y
++CONFIG_CMD_SNTP=y
++CONFIG_CMD_SOURCE=y
++CONFIG_CMD_STRINGS=y
++CONFIG_CMD_USB=y
++# CONFIG_CMD_FLASH is not set
++CONFIG_CMD_UUID=y
++CONFIG_DISPLAY_CPUINFO=y
++CONFIG_DM_MTD=y
++CONFIG_DM_REGULATOR=y
++CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_REGULATOR_GPIO=y
++CONFIG_DM_USB=y
++CONFIG_DM_PWM=y
++CONFIG_PWM_MTK=y
++CONFIG_HUSH_PARSER=y
++CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
++CONFIG_SYS_RELOC_GD_ENV_ADDR=y
++CONFIG_VERSION_VARIABLE=y
++CONFIG_PARTITION_UUIDS=y
++CONFIG_NETCONSOLE=y
++CONFIG_REGMAP=y
++CONFIG_SYSCON=y
++CONFIG_CLK=y
++CONFIG_DM_GPIO=y
++CONFIG_DM_SCSI=y
++CONFIG_AHCI=y
++CONFIG_AHCI_PCI=y
++CONFIG_SCSI_AHCI=y
++CONFIG_SCSI=y
++CONFIG_CMD_SCSI=y
++CONFIG_PHY=y
++CONFIG_PHY_MTK_TPHY=y
++CONFIG_PHY_FIXED=y
++CONFIG_MTK_AHCI=y
++CONFIG_DM_ETH=y
++CONFIG_MEDIATEK_ETH=y
++CONFIG_PCI=y
++CONFIG_DM_PCI=y
++CONFIG_PCIE_MEDIATEK=y
++# CONFIG_MMC is not set
++# CONFIG_DM_MMC is not set
++CONFIG_MTD=y
++CONFIG_MTD_UBI_FASTMAP=y
++# CONFIG_DM_PCI is not set
++# CONFIG_PCIE_MEDIATEK is not set
++CONFIG_PINCTRL=y
++CONFIG_PINCONF=y
++CONFIG_PINCTRL_MT7622=y
++CONFIG_POWER_DOMAIN=y
++CONFIG_PRE_CONSOLE_BUFFER=y
++CONFIG_PRE_CON_BUF_ADDR=0x4007EF00
++CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_RAM=y
++CONFIG_DM_SERIAL=y
++CONFIG_MTK_SERIAL=y
++CONFIG_SPI=y
++# CONFIG_I2C is not set
++CONFIG_DM_SPI=y
++CONFIG_MTK_SPI_NAND=y
++CONFIG_MTK_SPI_NAND_MTD=y
++CONFIG_SYSRESET_WATCHDOG=y
++CONFIG_WDT_MTK=y
++CONFIG_LZO=y
++CONFIG_ZSTD=y
++CONFIG_HEXDUMP=y
++CONFIG_RANDOM_UUID=y
++CONFIG_REGEX=y
++CONFIG_USB=y
++CONFIG_USB_HOST=y
++CONFIG_USB_XHCI_HCD=y
++CONFIG_USB_XHCI_MTK=y
++CONFIG_USB_STORAGE=y
++CONFIG_OF_EMBED=y
++CONFIG_ENV_OVERWRITE=y
++CONFIG_ENV_IS_IN_UBI=y
++CONFIG_ENV_UBI_PART="ubi"
++CONFIG_ENV_SIZE=0x1f000
++CONFIG_ENV_SIZE_REDUND=0x1f000
++CONFIG_ENV_UBI_VOLUME="ubootenv"
++CONFIG_ENV_UBI_VOLUME_REDUND="ubootenv2"
++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
++CONFIG_NET_RANDOM_ETHADDR=y
++CONFIG_REGMAP=y
++CONFIG_SYSCON=y
++CONFIG_CLK=y
++CONFIG_PHY_FIXED=y
++CONFIG_DM_ETH=y
++CONFIG_MEDIATEK_ETH=y
++CONFIG_PINCTRL=y
++CONFIG_PINCONF=y
++CONFIG_PINCTRL_MT7986=y
++CONFIG_POWER_DOMAIN=y
++CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_DM_REGULATOR=y
++CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_SERIAL=y
++CONFIG_MTK_SERIAL=y
++CONFIG_HEXDUMP=y
++CONFIG_USE_DEFAULT_ENV_FILE=y
++CONFIG_MTD_SPI_NAND=y
++CONFIG_MTK_SPIM=y
++CONFIG_CMD_NAND=y
++CONFIG_CMD_NAND_TRIMFFS=y
++CONFIG_LMB_MAX_REGIONS=64
++CONFIG_USE_IPADDR=y
++CONFIG_IPADDR="192.168.1.1"
++CONFIG_USE_SERVERIP=y
++CONFIG_SERVERIP="192.168.1.254"
+--- /dev/null
++++ b/arch/arm/dts/mt7986a-zyxel_ex5601-t0.dts
+@@ -0,0 +1,181 @@
++// SPDX-License-Identifier: GPL-2.0
++/*
++ * Author: Valerio 'ftp21' Mancini <ftp21 at ftp21.eu>
++ * Author: Nicol? Veronese <nicveronese at gmail.com>
++ */
++
++/dts-v1/;
++#include <dt-bindings/input/linux-event-codes.h>
++#include "mt7986.dtsi"
++#include <dt-bindings/gpio/gpio.h>
++
++/ {
++	#address-cells = <1>;
++	#size-cells = <1>;
++	model = "Zyxel EX5601-T0 ubootmod";
++	compatible = "mediatek,mt7986", "mediatek,mt7986-sd-rfb";
++
++	chosen {
++		stdout-path = &uart0;
++		tick-timer = &timer0;
++	};
++
++	memory at 40000000 {
++		device_type = "memory";
++		reg = <0x40000000 0x20000000>;
++	};
++
++	keys {
++		compatible = "gpio-keys";
++		factory {
++			label = "reset";
++			gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
++			linux,code = <KEY_RESTART>;
++		};
++
++		wps {
++			label = "wps";
++			gpios = <&gpio 56 GPIO_ACTIVE_LOW>;
++			linux,code = <KEY_WPS_BUTTON>;
++		};
++	};
++
++	leds {
++		compatible = "gpio-leds";
++
++		led_status_green: pwr {
++			label = "green:status";
++			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
++			default-state = "off";
++		};
++
++		led_sfp_green: sfp {
++			label = "green:sfp";
++			gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
++			default-state = "off";
++		};
++	};
++};
++
++&uart0 {
++	mediatek,force-highspeed;
++	status = "okay";
++};
++
++&uart1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&uart1_pins>;
++	status = "disabled";
++};
++
++&eth {
++	status = "okay";
++	mediatek,gmac-id = <0>;
++	phy-mode = "2500base-x";
++	mediatek,switch = "mt7531";
++	reset-gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
++
++	fixed-link {
++		speed = <2500>;
++		full-duplex;
++	};
++};
++
++&pinctrl {
++	spic_pins: spi1-pins-func-1 {
++		mux {
++			function = "spi";
++			groups = "spi1_2";
++		};
++	};
++
++	uart1_pins: spi1-pins-func-3 {
++		mux {
++			function = "uart";
++			groups = "uart1_2";
++		};
++	};
++
++	spi_flash_pins: spi0-pins-func-1 {
++		mux {
++			function = "flash";
++			groups = "spi0", "spi0_wp_hold";
++		};
++
++		conf-pu {
++			pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
++			drive-strength = <MTK_DRIVE_8mA>;
++			bias-pull-up = <MTK_PUPD_SET_R1R0_00>;
++		};
++
++		conf-pd {
++			pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
++			drive-strength = <MTK_DRIVE_8mA>;
++			bias-pull-down = <MTK_PUPD_SET_R1R0_00>;
++		};
++	};
++};
++
++&spi0 {
++	#address-cells = <1>;
++	#size-cells = <0>;
++	pinctrl-names = "default";
++	pinctrl-0 = <&spi_flash_pins>;
++	status = "okay";
++	must_tx;
++	enhance_timing;
++	dma_ext;
++	ipm_design;
++	support_quad;
++	tick_dly = <1>;
++	sample_sel = <0>;
++
++	spi_nand at 0 {
++		compatible = "spi-nand";
++		reg = <0>;
++		spi-max-frequency = <20000000>;
++		spi-tx-buswidth = <4>;
++		spi-rx-buswidth = <4>;
++
++		partitions {
++			compatible = "fixed-partitions";
++			#address-cells = <1>;
++			#size-cells = <1>;
++
++			partition at 0 {
++				label = "bl2";
++				reg = <0x0 0x100000>;
++			};
++
++			partition at 100000 {
++				label = "u-boot-env";
++				reg = <0x0100000 0x0080000>;
++			};
++
++			partition at 180000 {
++				label = "Factory";
++				reg = <0x180000 0x0200000>;
++			};
++
++			partition at 380000 {
++				label = "fip";
++				reg = <0x380000 0x0200000>;
++			};
++
++			partition at 540000 {
++				label = "zloader";
++				reg = <0x540000 0x0040000>;
++				read-only;
++			};
++			partition at 580000 {
++				label = "ubi";
++				reg = <0x580000 0x1da80000>;
++			};
++		};
++	};
++};
++
++&watchdog {
++	status = "disabled";
++};
++
+--- /dev/null
++++ b/zyxel_ex5601-t0_env
+@@ -0,0 +1,55 @@
++ethaddr_factory=mtd read Factory 0x40080000 0x0 0x20000 && env readmem -b ethaddr 0x4008002A 0x6 ; setenv ethaddr_factory
++ipaddr=192.168.1.1
++serverip=192.168.1.254
++loadaddr=0x46000000
++console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
++bootargs=console=ttyS0,115200n8 console_msg_format=syslog
++bootcmd=if pstore check ; then run boot_recovery ; else run boot_ubi ; fi
++bootconf=config-1
++bootdelay=0
++bootfile=openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-initramfs-recovery.itb
++bootfile_bl2=openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-preloader.bin
++bootfile_fip=openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-bl31-uboot.fip
++bootfile_upg=openwrt-mediatek-filogic-zyxel_ex5601-t0-ubootmod-squashfs-sysupgrade.itb
++bootmenu_confirm_return=askenv - Press ENTER to return to menu ; bootmenu 60
++bootmenu_default=0
++bootmenu_delay=0
++bootmenu_title=      [0;34m( ( ( [1;39mOpenWrt[0;34m ) ) )
++bootmenu_0=Initialize environment.=run _firstboot
++bootmenu_0d=Run default boot command.=run boot_default
++bootmenu_1=Boot system via TFTP.=run boot_tftp ; run bootmenu_confirm_return
++bootmenu_2=Boot production system from NAND.=run boot_production ; run bootmenu_confirm_return
++bootmenu_3=Boot recovery system from NAND.=run boot_recovery ; run bootmenu_confirm_return
++bootmenu_4=Load production system via TFTP then write to NAND.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_production ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
++bootmenu_5=Load recovery system via TFTP then write to NAND.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_recovery ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
++bootmenu_6=[31mLoad BL31+U-Boot FIP via TFTP then write to NAND.[0m=run boot_tftp_write_fip ; run bootmenu_confirm_return
++bootmenu_7=[31mLoad BL2 preloader via TFTP then write to NAND.[0m=run boot_tftp_write_bl2 ; run bootmenu_confirm_return
++bootmenu_8=Reboot.=reset
++bootmenu_9=Reset all settings to factory defaults.=run reset_factory ; reset
++boot_first=if button reset ; then run boot_tftp_recovery ; setenv flag_recover 1 ; run boot_default ; fi ; bootmenu
++boot_default=if env exists flag_recover ; then else run bootcmd ; fi ; run boot_recovery ; setenv replacevol 1 ; run boot_tftp_forever
++boot_production=run ubi_read_production && bootm $loadaddr#$bootconf
++boot_recovery=run ubi_read_recovery && bootm $loadaddr#$bootconf
++boot_ubi=run boot_production ; run boot_recovery ; run boot_tftp_forever
++boot_tftp_forever=while true ; do run boot_tftp_recovery ; sleep 1 ; done
++boot_tftp_recovery=tftpboot $loadaddr $bootfile && env exists replacevol && iminfo $loadaddr && run ubi_write_recovery ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
++boot_tftp_production=tftpboot $loadaddr $bootfile_upg && env exists replacevol && iminfo $loadaddr && run ubi_write_production ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
++boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr#$bootconf
++boot_tftp_write_fip=tftpboot $loadaddr $bootfile_fip && run mtd_write_fip && run reset_factory
++boot_tftp_write_bl2=tftpboot $loadaddr $bootfile_bl2 && run mtd_write_bl2
++part_fit=fit
++reset_factory=ubi part ubi ; mw $loadaddr 0x0 0x800 ; ubi write $loadaddr ubootenv 0x800 ; ubi write $loadaddr ubootenv2 0x800
++mtd_write_fip=mtd erase fip && mtd write fip $loadaddr
++mtd_write_bl2=mtd erase bl2 && mtd write bl2 $loadaddr
++ubi_create_env=ubi check ubootenv || ubi create ubootenv 0x100000 dynamic 0 ; ubi check ubootenv2 || ubi create ubootenv2 0x100000 dynamic 1
++ubi_format=ubi detach ; mtd erase ubi && ubi part ubi ; reset
++ubi_prepare_rootfs=if ubi check rootfs_data ; then else if env exists rootfs_data_max ; then ubi create rootfs_data $rootfs_data_max dynamic || ubi create rootfs_data - dynamic ; else ubi create rootfs_data - dynamic ; fi ; fi
++ubi_read_production=ubi read $loadaddr $part_fit && iminfo $loadaddr && run ubi_prepare_rootfs
++ubi_read_recovery=ubi check recovery && ubi read $loadaddr recovery
++ubi_remove_rootfs=ubi check rootfs_data && ubi remove rootfs_data
++ubi_write_production=ubi check fit && ubi remove fit ; run ubi_remove_rootfs ; ubi create fit $filesize dynamic && ubi write $loadaddr fit $filesize
++ubi_write_recovery=ubi check recovery && ubi remove recovery ; run ubi_remove_rootfs ; ubi create recovery $filesize dynamic && ubi write $loadaddr recovery $filesize
++_init_env=setenv _init_env ; run ubi_create_env ; saveenv ; saveenv
++_firstboot=setenv _firstboot ; run ethaddr_factory ; run _switch_to_menu ; run _init_env ; run boot_first
++_switch_to_menu=setenv _switch_to_menu ; setenv bootdelay 3 ; setenv bootmenu_delay 3 ; setenv bootmenu_0 $bootmenu_0d ; setenv bootmenu_0d ; run _bootmenu_update_title
++_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title       [33m$ver[0m"



From lede-commits at lists.infradead.org  Tue Mar 12 16:00:45 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 12 Mar 2024 19:00:45 -0400
Subject: [openwrt/openwrt]  ramips: add support for Z-ROUTER ZR-2660
In-Reply-To: <171028444520.2378539.13998619779394679598@git-01.infra.openwrt.org>
References: <171028444520.2378539.13998619779394679598@git-01.infra.openwrt.org>
Message-ID: <mailman.15801.1710284449.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1d3d6ef8269aca7ee34fb6ddd1c11d3fe45e785b

commit 1d3d6ef8269aca7ee34fb6ddd1c11d3fe45e785b
Author: Mikhail Zhilkin <csharper2005 at gmail.com>
AuthorDate: Sat Mar 2 19:58:40 2024 +0000

    ramips: add support for Z-ROUTER ZR-2660
    
    This commit adds support for Z-ROUTER ZR-2660 (also known as Routerich
    AX1800) wireless WiFi 6 router.
    
    Specification
    -------------
    - SoC       : MediaTek MT7621AT, MIPS, 880 MHz
    - RAM       : 256 MiB
    - Flash     : NAND 128 MiB (AMD/Spansion S34ML01G2)
    - WLAN      :
      - 2.4 GHz : MediaTek MT7905D/MT7975 (14c3:7916), b/g/n/ax, MIMO 2x2
      - 5 GHz   : MediaTek MT7915E (14c3:7915), a/n/ac/ax, MIMO 2x2
    - Ethernet  : 10/100/1000 Mbps x4 (1x WAN, 3x LAN)
    - USB       : 1x 2.0
    - UART      : 3.3V, 115200n8, pins are silkscreened on the pcb
    - Buttons   : 1x Reset
    - LEDs      : 1x WiFi 2.4 GHz (green)
                  1x WiFi 5 GHz (green)
                  1x LAN (green)
                  1x WAN (green)
                  1x WAN no-internet (red)
    - Power     : 12 VDC, 1 A
    
    Installation
    ------------
    1. Run tftp server on your PC (IP: 192.168.2.2) and put OpenWrt initramfs
       image (initramfs.bin) to the tftp root dir
    2. Open the following link in the browser to enable telnet:
            http://192.168.2.1/cgi-bin/telnet_ssh
    3. Connect to the router (default IP: 192.168.2.1) using telnet shell
       (credentials - user:admin)
    4. Run the following commands in the telnet shell (this will install
       OpenWrt initramfs image on nand flash):
            cd /tmp
            tftp -g -r initramfs.bin 192.168.2.2
            mtd write initramfs.bin firmware
            mtd erase firmware_backup
            reboot
    5. Copy OpenWrt sysupgrade image (sysupgrade.bin) to the /tmp dir of the
       router
    6. Connect to the router (IP: 192.168.1.1) using ssh shell and run
       sysupgrade command:
            sysupgrade -n /tmp/sysupgrade.bin
    
    Return to stock
    ---------------
    1. Copy stock firmware (stock.bin) to the /tmp dir of the router using scp
    2. Run following command in the router shell:
            cd /tmp
            mtd write stock.bin firmware
            reboot
    
    Recovery
    --------
    Connect uart (pins are silkscreened on the pcb), interrupt boot process by
    pressing any key, use u-boot menu to flash stock firmware image or OpenWrt
    initramfs image.
    
    MAC addresses
    -------------
    +---------+-------------------+-----------+
    |         | MAC               | Algorithm |
    +---------+-------------------+-----------+
    | LAN     | 24:0f:5e:xx:xx:4c | label     |
    | WAN     | 24:0f:5e:xx:xx:4d | label+1   |
    | WLAN 2g | 24:0f:5e:xx:xx:4e | label+2   |
    | WLAN 5g | 24:0f:5e:xx:xx:4f | label+3   |
    +---------+-------------------+-----------+
    The WLAN 2.4 MAC was found in 'factory', 0x4
    The LAN MAC was found in 'factory', 0xfff4
    The WAN MAC was found in 'factory', 0xfffa
    
    Signed-off-by: Mikhail Zhilkin <csharper2005 at gmail.com>
---
 .../linux/ramips/dts/mt7621_z-router_zr-2660.dts   | 211 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |  15 ++
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |   5 +
 .../mt7621/base-files/etc/board.d/02_network       |   1 +
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac        |   3 +-
 .../mt7621/base-files/lib/upgrade/platform.sh      |   1 +
 6 files changed, 235 insertions(+), 1 deletion(-)

diff --git a/target/linux/ramips/dts/mt7621_z-router_zr-2660.dts b/target/linux/ramips/dts/mt7621_z-router_zr-2660.dts
new file mode 100644
index 0000000000..34b151be75
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_z-router_zr-2660.dts
@@ -0,0 +1,211 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	compatible = "z-router,zr-2660", "mediatek,mt7621-soc";
+	model = "Z-ROUTER ZR-2660";
+
+	aliases {
+		label-mac-device = &gmac0;
+
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		key-0 {
+			label = "reset";
+			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led-0 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WAN;
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+		};
+
+		led-1 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <50>;
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+
+		led-2 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_LAN;
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+
+		led-3 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <24>;
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		led-4 {
+			color = <LED_COLOR_ID_RED>;
+			function = LED_FUNCTION_WAN;
+			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+		};
+
+		led_power_green: led-5 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_POWER;
+			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_3fff4>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	status = "okay";
+	label = "wan";
+	phy-handle = <&ethphy4>;
+
+	nvmem-cells = <&macaddr_factory_3fffa>;
+	nvmem-cell-names = "mac-address";
+};
+
+&mdio {
+	ethphy4: ethernet-phy at 4 {
+		reg = <4>;
+	};
+};
+
+&nand {
+	status = "okay";
+
+	mediatek,nmbm;
+	mediatek,bmt-max-ratio = <1>;
+	mediatek,bmt-max-reserved-blocks = <64>;
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition at 0 {
+			label = "u-boot";
+			reg = <0x0 0x80000>;
+			read-only;
+		};
+
+		partition at 80000 {
+			label = "Config";
+			reg = <0x80000 0x80000>;
+			read-only;
+		};
+
+		partition at 100000 {
+			label = "factory";
+			reg = <0x100000 0x80000>;
+			read-only;
+
+			nvmem-layout {
+				compatible = "fixed-layout";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				eeprom_factory_0: eeprom at 0 {
+					reg = <0x0 0xe00>;
+				};
+
+				macaddr_factory_3fff4: macaddr at 3fff4 {
+					reg = <0x3fff4 0x6>;
+				};
+
+				macaddr_factory_3fffa: macaddr at 3fffa {
+					reg = <0x3fffa 0x6>;
+				};
+			};
+		};
+
+		partition at 180000 {
+			label = "firmware";
+			reg = <0x180000 0x7680000>;
+
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "kernel";
+				reg = <0x0 0x400000>;
+			};
+
+			partition at 400000 {
+				label = "ubi";
+				reg = <0x400000 0x7280000>;
+			};
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie1 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+
+		mediatek,disable-radar-background;
+
+		nvmem-cells = <&eeprom_factory_0>;
+		nvmem-cell-names = "eeprom";
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "i2c", "jtag", "wdt";
+		function = "gpio";
+	};
+};
+
+&switch0 {
+	ports {
+		port at 1 {
+			status = "okay";
+			label = "lan1";
+		};
+
+		port at 2 {
+			status = "okay";
+			label = "lan2";
+		};
+
+		port at 3 {
+			status = "okay";
+			label = "lan3";
+		};
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 3b9ee022f6..5fd95463c8 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -2928,6 +2928,21 @@ define Device/yuncore_g720
 endef
 TARGET_DEVICES += yuncore_g720
 
+define Device/z-router_zr-2660
+  $(Device/dsa-migration)
+  $(Device/nand)
+  DEVICE_VENDOR := Z-ROUTER
+  DEVICE_MODEL := ZR-2660
+  DEVICE_ALT0_VENDOR := Routerich
+  DEVICE_ALT0_MODEL := AX1800
+  IMAGE_SIZE := 90112k
+  KERNEL_LOADADDR := 0x82000000
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
+	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  DEVICE_PACKAGES += kmod-mt7915-firmware kmod-usb3 -uboot-envtools
+endef
+TARGET_DEVICES += z-router_zr-2660
+
 define Device/zbtlink_zbt-we1326
   $(Device/dsa-migration)
   $(Device/uimage-lzma-loader)
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
index 81afa45e80..3eba20bb79 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -251,6 +251,11 @@ yuncore,ax820)
 	ucidef_set_led_netdev "lan" "LAN" "green:lan" "lan"
 	ucidef_set_led_netdev "wan" "WAN" "green:wan" "wan"
 	;;
+z-router,zr-2660)
+	ucidef_set_led_netdev "lan" "lan" "green:lan" "br-lan" "link tx rx"
+	ucidef_set_led_netdev "wan" "wan" "green:wan" "wan" "link tx rx"
+	ucidef_set_led_netdev "wan-off" "wan-off" "red:wan" "wan" "link"
+	;;
 zyxel,lte3301-plus)
 	ucidef_set_led_netdev "internet" "internet" "white:internet" "wwan0"
 	;;
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
index d0481b78e9..d932313cf1 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
@@ -26,6 +26,7 @@ ramips_setup_interfaces()
 	xiaomi,mi-router-cr6608|\
 	xiaomi,mi-router-cr6609|\
 	xiaomi,redmi-router-ac2100|\
+	z-router,zr-2660|\
 	zyxel,wsm20)
 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan"
 		;;
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 3be4e24e09..962e1f7019 100644
--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -72,7 +72,8 @@ case "$board" in
 			macaddr_setbit_la "$base_mac" > /sys${DEVPATH}/macaddress
 		fi
 		;;
-	glinet,gl-mt1300)
+	glinet,gl-mt1300|\
+	z-router,zr-2660)
 		[ "$PHYNBR" = "1" ] && \
 			macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1 > /sys${DEVPATH}/macaddress
 		;;
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
index 6151714145..eba02e6599 100755
--- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
@@ -124,6 +124,7 @@ platform_do_upgrade() {
 	xiaomi,mi-router-cr6608|\
 	xiaomi,mi-router-cr6609|\
 	xiaomi,redmi-router-ac2100|\
+	z-router,zr-2660|\
 	zyxel,nwa50ax|\
 	zyxel,nwa55axe)
 		nand_do_upgrade "$1"



From lede-commits at lists.infradead.org  Wed Mar 13 02:16:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 05:16:42 -0400
Subject: [openwrt/openwrt]  libevent2: make cmake use relative imported path
In-Reply-To: <171032140240.3833005.9629473869683885043@git-01.infra.openwrt.org>
References: <171032140240.3833005.9629473869683885043@git-01.infra.openwrt.org>
Message-ID: <mailman.15903.1710321409.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/51752fa14bebb6d026b36dc18e4562f93caa96b5

commit 51752fa14bebb6d026b36dc18e4562f93caa96b5
Author: Liu Dongmiao <liudongmiao at gmail.com>
AuthorDate: Tue Mar 12 06:48:08 2024 +0000

    libevent2: make cmake use relative imported path
    
    libevent2's cmake use absolute path, then cmake cannot find it when cross compiling:
    
    ```
    -- Found libevent include directory: /builder/staging_dir/target-mips_24kc_musl/usr/include
    -- Found libevent component: /builder/staging_dir/target-mips_24kc_musl/usr/lib/libevent_core.so
    -- Found libevent component: /builder/staging_dir/target-mips_24kc_musl/usr/lib/libevent_extra.so
    -- Found libevent component: /builder/staging_dir/target-mips_24kc_musl/usr/lib/libevent_openssl.so
    -- Found libevent 2.1.12 in /builder/staging_dir/target-mips_24kc_musl/usr
    CMake Error at /builder/staging_dir/target-mips_24kc_musl/usr/lib/cmake/libevent/LibeventTargets-shared.cmake:102 (message):
      The imported target "libevent::core" references the file
    
         "/usr/lib/libevent_core-2.1.so.7.0.1"
    
      but this file does not exist.  Possible reasons include:
    
      * The file was deleted, renamed, or moved to another location.
    
      * An install or uninstall procedure did not complete successfully.
    
      * The installation package was faulty and contained
    
         "/builder/staging_dir/target-mips_24kc_musl/usr/lib/cmake/libevent/LibeventTargets-shared.cmake"
    
      but not all the files it references.
    
    Call Stack (most recent call first):
      /builder/staging_dir/target-mips_24kc_musl/usr/lib/cmake/libevent/LibeventConfig.cmake:168 (include)
      CMakeLists.txt:34 (find_package)
    ```
    
    This patch make cmake use relative imported path, so it can find libevent.
    
    Signed-off-by: Liu Dongmiao <liudongmiao at gmail.com>
---
 package/libs/libevent2/Makefile                    |  2 +-
 .../libevent2/patches/001-relative-cmake.patch     | 58 ++++++++++++++++++++++
 2 files changed, 59 insertions(+), 1 deletion(-)

diff --git a/package/libs/libevent2/Makefile b/package/libs/libevent2/Makefile
index 92602607ae..e0a080d60e 100644
--- a/package/libs/libevent2/Makefile
+++ b/package/libs/libevent2/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libevent2
 PKG_VERSION:=2.1.12
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=libevent-$(PKG_VERSION)-stable.tar.gz
 PKG_SOURCE_URL:=https://github.com/libevent/libevent/releases/download/release-$(PKG_VERSION)-stable
diff --git a/package/libs/libevent2/patches/001-relative-cmake.patch b/package/libs/libevent2/patches/001-relative-cmake.patch
new file mode 100644
index 0000000000..38dc187df6
--- /dev/null
+++ b/package/libs/libevent2/patches/001-relative-cmake.patch
@@ -0,0 +1,58 @@
+From 81c6b8823c1b58d7837e827bb1098aa5f9e5956b Mon Sep 17 00:00:00 2001
+From: "Jeremy W. Murphy" <jeremy.william.murphy at gmail.com>
+Date: Tue, 16 May 2023 05:07:36 +1000
+Subject: [PATCH] cmake: Only use relative paths for install DESTINATION option
+ (#1405)
+
+As described in #1404, the explicit use of CMAKE_INSTALL_PREFIX conflicts with using command-line --prefix.
+
+This simply removes all explicit use of CMAKE_INSTALL_PREFIX.
+
+Otherwise this path will be duplicated:
+
+    $ cmake -DCMAKE_BUILD_TYPE=debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=inst ..
+    $ DESTDIR=inst ninja install
+    ...
+    -- Installing: inst/src/le/libevent/.cmake-debug/inst/include/event2/util.h
+    -- Installing: inst/src/le/libevent/.cmake-debug/inst/include/event2/ws.h
+    ...
+
+Fixes: #1404
+Co-authored-by: Jeremy Murphy <jeremymu at blackmagicdesign.com>
+---
+ CMakeLists.txt              | 3 +--
+ cmake/AddEventLibrary.cmake | 4 ++--
+ 2 files changed, 3 insertions(+), 4 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1452,8 +1452,7 @@ endif()
+ # Installation preparation.
+ #
+ 
+-set(EVENT_INSTALL_CMAKE_DIR
+-    "${CMAKE_INSTALL_PREFIX}/lib/cmake/libevent")
++set(EVENT_INSTALL_CMAKE_DIR "lib/cmake/libevent")
+ 
+ export(PACKAGE libevent)
+ 
+--- a/cmake/AddEventLibrary.cmake
++++ b/cmake/AddEventLibrary.cmake
+@@ -31,7 +31,7 @@ macro(generate_pkgconfig LIB_NAME)
+     configure_file("lib${LIB_NAME}.pc.in" "lib${LIB_NAME}.pc" @ONLY)
+     install(
+         FILES "${CMAKE_CURRENT_BINARY_DIR}/lib${LIB_NAME}.pc"
+-        DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig"
++        DESTINATION "lib/pkgconfig"
+     )
+ endmacro()
+ 
+@@ -150,7 +150,7 @@ macro(add_event_library LIB_NAME)
+             set_target_properties(
+                 "${LIB_NAME}_shared" PROPERTIES
+                 OUTPUT_NAME "${LIB_NAME}-${EVENT_PACKAGE_RELEASE}.${CURRENT_MINUS_AGE}"
+-                INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib"
++                INSTALL_NAME_DIR "lib"
+                 LINK_FLAGS "-compatibility_version ${COMPATIBILITY_VERSION} -current_version ${COMPATIBILITY_VERSION}.${EVENT_ABI_LIBVERSION_REVISION}")
+         else()
+             math(EXPR CURRENT_MINUS_AGE "${EVENT_ABI_LIBVERSION_CURRENT}-${EVENT_ABI_LIBVERSION_AGE}")



From lede-commits at lists.infradead.org  Wed Mar 13 05:49:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 08:49:27 -0400
Subject: [openwrt/openwrt]  ath79: add missing kernel config symbols
In-Reply-To: <171033416543.134663.623537773097378901@git-01.infra.openwrt.org>
References: <171033416543.134663.623537773097378901@git-01.infra.openwrt.org>
Message-ID: <mailman.16012.1710334171.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/33c812b6398951406914f060b07a511b22ae823f

commit 33c812b6398951406914f060b07a511b22ae823f
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Wed Mar 13 14:27:08 2024 +0800

    ath79: add missing kernel config symbols
    
    Refresh kernel configs to add the missing symbols.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 target/linux/ath79/config-6.1 | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/target/linux/ath79/config-6.1 b/target/linux/ath79/config-6.1
index e3119f99a1..f2a6969aa1 100644
--- a/target/linux/ath79/config-6.1
+++ b/target/linux/ath79/config-6.1
@@ -54,6 +54,7 @@ CONFIG_FWNODE_MDIO=y
 CONFIG_FW_LOADER_PAGED_BUF=y
 CONFIG_FW_LOADER_SYSFS=y
 CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
 CONFIG_GENERIC_ATOMIC64=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CMOS_UPDATE=y
@@ -142,6 +143,7 @@ CONFIG_NEED_PER_CPU_KM=y
 CONFIG_NET_SELFTESTS=y
 CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
 CONFIG_NVMEM=y
+CONFIG_NVMEM_LAYOUTS=y
 CONFIG_OF=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_EARLY_FLATTREE=y
@@ -162,12 +164,14 @@ CONFIG_PCI_DRIVERS_LEGACY=y
 CONFIG_PERF_USE_VMALLOC=y
 CONFIG_PGTABLE_LEVELS=2
 CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
 # CONFIG_PHY_AR7100_USB is not set
 # CONFIG_PHY_AR7200_USB is not set
 # CONFIG_PHY_ATH79_USB is not set
 CONFIG_PINCTRL=y
 CONFIG_PREEMPT_NONE_BUILD=y
 CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_QCOM_NET_PHYLIB=y
 CONFIG_RANDSTRUCT_NONE=y
 CONFIG_RATIONAL=y
 CONFIG_REGMAP=y



From lede-commits at lists.infradead.org  Wed Mar 13 05:49:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 08:49:25 -0400
Subject: [openwrt/openwrt]  ath79: switch default kernel to 6.1
In-Reply-To: <171033416543.134663.623537773097378901@git-01.infra.openwrt.org>
References: <171033416543.134663.623537773097378901@git-01.infra.openwrt.org>
Message-ID: <mailman.16013.1710334171.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a4379507704a9ed48b009ce26e3c5ef1eefa1d4d

commit a4379507704a9ed48b009ce26e3c5ef1eefa1d4d
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Wed Mar 13 14:27:08 2024 +0800

    ath79: switch default kernel to 6.1
    
    The 6.1 kernel has been tested for over half a year.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 target/linux/ath79/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/ath79/Makefile b/target/linux/ath79/Makefile
index f7bb31c4ad..3ef4b32c72 100644
--- a/target/linux/ath79/Makefile
+++ b/target/linux/ath79/Makefile
@@ -8,8 +8,7 @@ SUBTARGETS:=generic mikrotik nand tiny
 
 FEATURES:=ramdisk squashfs usbgadget
 
-KERNEL_PATCHVER:=5.15
-KERNEL_TESTING_PATCHVER:=6.1
+KERNEL_PATCHVER:=6.1
 
 include $(INCLUDE_DIR)/target.mk
 



From lede-commits at lists.infradead.org  Wed Mar 13 05:49:26 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 08:49:26 -0400
Subject: [openwrt/openwrt]  ath79: remove obsolete 5.15 kernel support
In-Reply-To: <171033416543.134663.623537773097378901@git-01.infra.openwrt.org>
References: <171033416543.134663.623537773097378901@git-01.infra.openwrt.org>
Message-ID: <mailman.16014.1710334174.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0efa91d6ea93952e1b20d8aa32fffcb0d2f5bee9

commit 0efa91d6ea93952e1b20d8aa32fffcb0d2f5bee9
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Wed Mar 13 14:27:08 2024 +0800

    ath79: remove obsolete 5.15 kernel support
    
    The 5.15 kenel config file, patches and version switches will be
    removed in this patch. We will introduce kernel 6.6 support soon.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 target/linux/ath79/config-5.15                     | 200 -----
 .../net/ethernet/atheros/ag71xx/ag71xx_ethtool.c   |  28 +-
 .../net/ethernet/atheros/ag71xx/ag71xx_main.c      |   4 -
 ...7-spi-ar934x-fix-transfer-and-word-delays.patch |  27 -
 .../011-v5.17-spi-ar934x-fix-transfer-size.patch   |  62 --
 ...spi-ath79-Implement-the-spi_mem-interface.patch |  68 --
 ....18-ath79-add-support-for-booting-QCN550x.patch |  48 --
 .../100-reset-ath79-read-back-reset-register.patch |  33 -
 ...-ath79-intc-add-irq-cascade-driver-for-QC.patch | 168 ----
 ...irqchip-irq-ath79-cpu-drop-OF-init-helper.patch |  23 -
 ...bindings-PCI-qcom-ar7100-adds-binding-doc.patch |  57 --
 .../311-MIPS-pci-ar71xx-convert-to-OF.patch        | 206 -----
 ...bindings-PCI-qcom-ar7240-adds-binding-doc.patch |  61 --
 .../313-MIPS-pci-ar724x-convert-to-OF.patch        | 213 -----
 .../314-MIPS-ath79-remove-irq-code-from-pci.patch  | 149 ----
 ...IPS-pci-ar724x-add-QCA9550-reset-sequence.patch | 130 ---
 ...MIPS-ath79-swizzle-pci-address-for-ar71xx.patch | 109 ---
 .../ath79/patches-5.15/330-missing-registers.patch |  20 -
 ...-ath79-add-missing-QCA955x-GMAC-registers.patch |  90 ---
 .../patches-5.15/332-ath79-sgmii-config.patch      |  30 -
 .../340-register_gpio_driver_earlier.patch         |  26 -
 .../350-MIPS-ath79-ath9k-exports.patch             |  36 -
 .../351-MIPS-ath79-common-exports.patch            |  26 -
 ...0-MIPS-ath79-export-UART1-reference-clock.patch |  67 --
 .../370-MIPS-ath79-sanitize-symbols.patch          |  93 ---
 ...mtd-nor-support-mtd-name-from-device-tree.patch |  54 --
 .../patches-5.15/410-mtd-cybertan-trx-parser.patch |  45 --
 .../420-drivers-link-spi-before-mtd.patch          |  20 -
 .../patches-5.15/430-mtd-ar934x-nand-driver.patch  |  34 -
 .../patches-5.15/700-phy-add-ath79-usb-phys.patch  | 333 --------
 .../701-usb-add-more-OF-quirk-properties.patch     |  24 -
 .../710-net-use-downstream-ag71xx.patch            |  42 -
 .../720-mdio_bitbang_ignore_ta_value.patch         |  44 -
 ...tbang-prevent-rescheduling-during-command.patch |  61 --
 .../730-ar8216-make-reg-access-atomic.patch        |  59 --
 ...00-leds-add-reset-controller-based-driver.patch | 186 -----
 .../patches-5.15/900-unaligned_access_hacks.patch  | 900 ---------------------
 .../ath79/patches-5.15/910-mikrotik-rb4xx.patch    | 121 ---
 .../ath79/patches-5.15/911-mikrotik-rb91x.patch    |  97 ---
 39 files changed, 10 insertions(+), 3984 deletions(-)

diff --git a/target/linux/ath79/config-5.15 b/target/linux/ath79/config-5.15
deleted file mode 100644
index 5b1b0d5add..0000000000
--- a/target/linux/ath79/config-5.15
+++ /dev/null
@@ -1,200 +0,0 @@
-CONFIG_AG71XX=y
-# CONFIG_AG71XX_DEBUG is not set
-CONFIG_AG71XX_DEBUG_FS=y
-CONFIG_AR8216_PHY=y
-CONFIG_AR8216_PHY_LEDS=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_AT803X_PHY=y
-CONFIG_ATH79=y
-CONFIG_ATH79_WDT=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_DIEI=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_RIXI=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CPU_SUPPORTS_MSA=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CSRC_R4K=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_DTC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ETHERNET_PACKET_MANGLE=y
-CONFIG_FIXED_PHY=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_LIB_ASHLDI3=y
-CONFIG_GENERIC_LIB_ASHRDI3=y
-CONFIG_GENERIC_LIB_CMPDI2=y
-CONFIG_GENERIC_LIB_LSHRDI3=y
-CONFIG_GENERIC_LIB_UCMPDI2=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PHY=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_PINCTRL_GROUPS=y
-CONFIG_GENERIC_PINMUX_FUNCTIONS=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GPIOLIB_IRQCHIP=y
-CONFIG_GPIO_74X164=y
-CONFIG_GPIO_ATH79=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_GENERIC=y
-# CONFIG_GPIO_LATCH is not set
-# CONFIG_GPIO_RB91X_KEY is not set
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_RESET is not set
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_MDIO_BITBANG=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MDIO_GPIO=y
-CONFIG_MEMFD_CREATE=y
-# CONFIG_MFD_RB4XX_CPLD is not set
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGRATION=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set
-CONFIG_MIPS_CMDLINE_FROM_DTB=y
-CONFIG_MIPS_EBPF_JIT=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-CONFIG_MIPS_LD_CAN_LINK_VDSO=y
-# CONFIG_MIPS_NO_APPENDED_DTB is not set
-CONFIG_MIPS_RAW_APPENDED_DTB=y
-CONFIG_MIPS_SPRAM=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_I2 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-CONFIG_MTD_PARSER_CYBERTAN=y
-# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPLIT_ELF_FW=y
-CONFIG_MTD_SPLIT_LZMA_FW=y
-CONFIG_MTD_SPLIT_SEAMA_FW=y
-CONFIG_MTD_SPLIT_TPLINK_FW=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_MTD_SPLIT_WRGG_FW=y
-CONFIG_MTD_VIRT_CONCAT=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-CONFIG_NVMEM=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_PCI=y
-CONFIG_PCI_AR71XX=y
-CONFIG_PCI_AR724X=y
-CONFIG_PCI_DISABLE_COMMON_QUIRKS=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-# CONFIG_PHY_AR7100_USB is not set
-# CONFIG_PHY_AR7200_USB is not set
-# CONFIG_PHY_ATH79_USB is not set
-CONFIG_PINCTRL=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_REGULATOR=y
-CONFIG_RESET_ATH79=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_SERIAL_8250_NR_UARTS=1
-CONFIG_SERIAL_8250_RUNTIME_UARTS=1
-CONFIG_SERIAL_AR933X=y
-CONFIG_SERIAL_AR933X_CONSOLE=y
-CONFIG_SERIAL_AR933X_NR_UARTS=2
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SPI=y
-CONFIG_SPI_AR934X=y
-CONFIG_SPI_ATH79=y
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_GPIO=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-# CONFIG_SPI_RB4XX is not set
-CONFIG_SRCU=y
-CONFIG_SWCONFIG=y
-CONFIG_SWCONFIG_LEDS=y
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_SYS_SUPPORTS_ZBOOT_UART_PROM=y
-CONFIG_TARGET_ISA_REV=2
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TINY_SRCU=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USE_OF=y
diff --git a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
index b022a3e9fb..14c6560907 100644
--- a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
+++ b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
@@ -80,15 +80,11 @@ static void ag71xx_ethtool_set_msglevel(struct net_device *dev, u32 msg_level)
 	ag->msg_enable = msg_level;
 }
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
-static void ag71xx_ethtool_get_ringparam(struct net_device *dev,
-					 struct ethtool_ringparam *er,
-					 struct kernel_ethtool_ringparam *kernel_ring,
-					 struct netlink_ext_ack *extack)
-#else
-static void ag71xx_ethtool_get_ringparam(struct net_device *dev,
-					 struct ethtool_ringparam *er)
-#endif
+static void
+ag71xx_ethtool_get_ringparam(struct net_device *dev,
+			     struct ethtool_ringparam *er,
+			     struct kernel_ethtool_ringparam *kernel_ring,
+			     struct netlink_ext_ack *extack)
 {
 	struct ag71xx *ag = netdev_priv(dev);
 
@@ -106,15 +102,11 @@ static void ag71xx_ethtool_get_ringparam(struct net_device *dev,
 		er->tx_pending /= AG71XX_TX_RING_DS_PER_PKT;
 }
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
-static int ag71xx_ethtool_set_ringparam(struct net_device *dev,
-					struct ethtool_ringparam *er,
-					struct kernel_ethtool_ringparam *kernel_ring,
-					struct netlink_ext_ack *extack)
-#else
-static int ag71xx_ethtool_set_ringparam(struct net_device *dev,
-					struct ethtool_ringparam *er)
-#endif
+static int
+ag71xx_ethtool_set_ringparam(struct net_device *dev,
+			     struct ethtool_ringparam *er,
+			     struct kernel_ethtool_ringparam *kernel_ring,
+			     struct netlink_ext_ack *extack)
 {
 	struct ag71xx *ag = netdev_priv(dev);
 	unsigned tx_size;
diff --git a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
index 8a5cd3bcde..8132849a9a 100644
--- a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
+++ b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
@@ -1698,11 +1698,7 @@ static int ag71xx_probe(struct platform_device *pdev)
 			break;
 		}
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,19,0)
 	netif_napi_add_weight(dev, &ag->napi, ag71xx_poll, AG71XX_NAPI_WEIGHT);
-#else
-	netif_napi_add(dev, &ag->napi, ag71xx_poll, AG71XX_NAPI_WEIGHT);
-#endif
 
 	ag71xx_dump_regs(ag);
 
diff --git a/target/linux/ath79/patches-5.15/010-v5.17-spi-ar934x-fix-transfer-and-word-delays.patch b/target/linux/ath79/patches-5.15/010-v5.17-spi-ar934x-fix-transfer-and-word-delays.patch
deleted file mode 100644
index 7ce6df6d7b..0000000000
--- a/target/linux/ath79/patches-5.15/010-v5.17-spi-ar934x-fix-transfer-and-word-delays.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From c70282457c380db7deb57c81a6894debc8f88efa Mon Sep 17 00:00:00 2001
-From: Oskari Lemmela <oskari at lemmela.net>
-Date: Wed, 22 Dec 2021 07:59:58 +0200
-Subject: [PATCH] spi: ar934x: fix transfer and word delays
-
-Add missing delay between transferred messages and words.
-
-Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
-Link: https://lore.kernel.org/r/20211222055958.1383233-3-oskari at lemmela.net
-Signed-off-by: Mark Brown <broonie at kernel.org>
----
- drivers/spi/spi-ar934x.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/drivers/spi/spi-ar934x.c
-+++ b/drivers/spi/spi-ar934x.c
-@@ -137,8 +137,10 @@ static int ar934x_spi_transfer_one_messa
- 					reg >>= 8;
- 				}
- 			}
-+			spi_delay_exec(&t->word_delay, t);
- 		}
- 		m->actual_length += t->len;
-+		spi_transfer_delay_exec(t);
- 	}
- 
- msg_done:
diff --git a/target/linux/ath79/patches-5.15/011-v5.17-spi-ar934x-fix-transfer-size.patch b/target/linux/ath79/patches-5.15/011-v5.17-spi-ar934x-fix-transfer-size.patch
deleted file mode 100644
index 87f5da2c60..0000000000
--- a/target/linux/ath79/patches-5.15/011-v5.17-spi-ar934x-fix-transfer-size.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From ebe33e5a98dcf14a9630845f3f10c193584ac054 Mon Sep 17 00:00:00 2001
-From: Oskari Lemmela <oskari at lemmela.net>
-Date: Wed, 22 Dec 2021 07:59:57 +0200
-Subject: [PATCH] spi: ar934x: fix transfer size
-
-If bits_per_word is configured, transfer only word amount
-of data per iteration.
-
-Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
-Link: https://lore.kernel.org/r/20211222055958.1383233-2-oskari at lemmela.net
-Signed-off-by: Mark Brown <broonie at kernel.org>
----
- drivers/spi/spi-ar934x.c | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
-
---- a/drivers/spi/spi-ar934x.c
-+++ b/drivers/spi/spi-ar934x.c
-@@ -82,7 +82,7 @@ static int ar934x_spi_transfer_one_messa
- 	struct spi_device *spi = m->spi;
- 	unsigned long trx_done, trx_cur;
- 	int stat = 0;
--	u8 term = 0;
-+	u8 bpw, term = 0;
- 	int div, i;
- 	u32 reg;
- 	const u8 *tx_buf;
-@@ -90,6 +90,11 @@ static int ar934x_spi_transfer_one_messa
- 
- 	m->actual_length = 0;
- 	list_for_each_entry(t, &m->transfers, transfer_list) {
-+		if (t->bits_per_word >= 8 && t->bits_per_word < 32)
-+			bpw = t->bits_per_word >> 3;
-+		else
-+			bpw = 4;
-+
- 		if (t->speed_hz)
- 			div = ar934x_spi_clk_div(sp, t->speed_hz);
- 		else
-@@ -105,10 +110,10 @@ static int ar934x_spi_transfer_one_messa
- 		iowrite32(reg, sp->base + AR934X_SPI_REG_CTRL);
- 		iowrite32(0, sp->base + AR934X_SPI_DATAOUT);
- 
--		for (trx_done = 0; trx_done < t->len; trx_done += 4) {
-+		for (trx_done = 0; trx_done < t->len; trx_done += bpw) {
- 			trx_cur = t->len - trx_done;
--			if (trx_cur > 4)
--				trx_cur = 4;
-+			if (trx_cur > bpw)
-+				trx_cur = bpw;
- 			else if (list_is_last(&t->transfer_list, &m->transfers))
- 				term = 1;
- 
-@@ -193,7 +198,8 @@ static int ar934x_spi_probe(struct platf
- 	ctlr->mode_bits = SPI_LSB_FIRST;
- 	ctlr->setup = ar934x_spi_setup;
- 	ctlr->transfer_one_message = ar934x_spi_transfer_one_message;
--	ctlr->bits_per_word_mask = SPI_BPW_MASK(8);
-+	ctlr->bits_per_word_mask = SPI_BPW_MASK(32) | SPI_BPW_MASK(24) |
-+				   SPI_BPW_MASK(16) | SPI_BPW_MASK(8);
- 	ctlr->dev.of_node = pdev->dev.of_node;
- 	ctlr->num_chipselect = 3;
- 
diff --git a/target/linux/ath79/patches-5.15/020-v5.18-spi-ath79-Implement-the-spi_mem-interface.patch b/target/linux/ath79/patches-5.15/020-v5.18-spi-ath79-Implement-the-spi_mem-interface.patch
deleted file mode 100644
index 5746a889e8..0000000000
--- a/target/linux/ath79/patches-5.15/020-v5.18-spi-ath79-Implement-the-spi_mem-interface.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 8d8cdb4a6ccee5b62cc0dc64651c3946364514dc Mon Sep 17 00:00:00 2001
-From: Luiz Angelo Daros de Luca <luizluca at gmail.com>
-Date: Mon, 10 Feb 2020 16:11:27 -0300
-Subject: [PATCH] spi: ath79: Implement the spi_mem interface
-
-Signed-off-by: Luiz Angelo Daros de Luca <luizluca at gmail.com>
----
- drivers/spi/spi-ath79.c | 35 +++++++++++++++++++++++++++++++++++
- 1 file changed, 35 insertions(+)
-
---- a/drivers/spi/spi-ath79.c
-+++ b/drivers/spi/spi-ath79.c
-@@ -15,6 +15,7 @@
- #include <linux/platform_device.h>
- #include <linux/io.h>
- #include <linux/spi/spi.h>
-+#include <linux/spi/spi-mem.h>
- #include <linux/spi/spi_bitbang.h>
- #include <linux/bitops.h>
- #include <linux/clk.h>
-@@ -133,6 +134,39 @@ static u32 ath79_spi_txrx_mode0(struct s
- 	return ath79_spi_rr(sp, AR71XX_SPI_REG_RDS);
- }
- 
-+static int ath79_exec_mem_op(struct spi_mem *mem,
-+                              const struct spi_mem_op *op)
-+{
-+	struct ath79_spi *sp = ath79_spidev_to_sp(mem->spi);
-+
-+	/* Ensures that reading is performed on device connected
-+	   to hardware cs0 */
-+	if (mem->spi->chip_select || mem->spi->cs_gpiod)
-+		return -ENOTSUPP;
-+
-+	/* Only use for fast-read op. */
-+	if (op->cmd.opcode != 0x0b || op->data.dir != SPI_MEM_DATA_IN ||
-+	    op->addr.nbytes != 3 || op->dummy.nbytes != 1)
-+		return -ENOTSUPP;
-+
-+	/* disable GPIO mode */
-+	ath79_spi_wr(sp, AR71XX_SPI_REG_FS, 0);
-+
-+	memcpy_fromio(op->data.buf.in, sp->base + op->addr.val, op->data.nbytes);
-+
-+	/* enable GPIO mode */
-+	ath79_spi_wr(sp, AR71XX_SPI_REG_FS, AR71XX_SPI_FS_GPIO);
-+
-+	/* restore IOC register */
-+	ath79_spi_wr(sp, AR71XX_SPI_REG_IOC, sp->ioc_base);
-+
-+	return 0;
-+}
-+
-+static const struct spi_controller_mem_ops ath79_mem_ops = {
-+	.exec_op = ath79_exec_mem_op,
-+};
-+
- static int ath79_spi_probe(struct platform_device *pdev)
- {
- 	struct spi_master *master;
-@@ -165,6 +199,7 @@ static int ath79_spi_probe(struct platfo
- 		ret = PTR_ERR(sp->base);
- 		goto err_put_master;
- 	}
-+	master->mem_ops = &ath79_mem_ops;
- 
- 	sp->clk = devm_clk_get(&pdev->dev, "ahb");
- 	if (IS_ERR(sp->clk)) {
diff --git a/target/linux/ath79/patches-5.15/030-v5.18-ath79-add-support-for-booting-QCN550x.patch b/target/linux/ath79/patches-5.15/030-v5.18-ath79-add-support-for-booting-QCN550x.patch
deleted file mode 100644
index 41ea5d2ef0..0000000000
--- a/target/linux/ath79/patches-5.15/030-v5.18-ath79-add-support-for-booting-QCN550x.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From: Wenli Looi <wlooi at ucalgary.ca>
-Date: Sun, 20 Jun 2021 23:32:28 -0700
-Subject: [PATCH] ath79: add support for booting QCN550x
-
-Based on wikidevi, QCN550x is a "Dragonfly" like QCA9561 and QCA9563.
-Treating it as QCA956x seems to work.
-Tested on Netgear EX7300v2 which boots successfully with
-the same CPU clock as the stock firmware.
-
-Link: https://wikidevi.wi-cat.ru/Qualcomm#bgn
-Link: https://wikidevi.wi-cat.ru/Qualcomm_Atheros#.28a.29bgn_2
-Signed-off-by: Wenli Looi <wlooi at ucalgary.ca>
-
---- a/arch/mips/ath79/early_printk.c
-+++ b/arch/mips/ath79/early_printk.c
-@@ -121,6 +121,7 @@ static void prom_putchar_init(void)
- 	case REV_ID_MAJOR_QCA9558:
- 	case REV_ID_MAJOR_TP9343:
- 	case REV_ID_MAJOR_QCA956X:
-+	case REV_ID_MAJOR_QCN550X:
- 		_prom_putchar = prom_putchar_ar71xx;
- 		break;
- 
---- a/arch/mips/ath79/setup.c
-+++ b/arch/mips/ath79/setup.c
-@@ -168,6 +168,12 @@ static void __init ath79_detect_sys_type
- 		rev = id & QCA956X_REV_ID_REVISION_MASK;
- 		break;
- 
-+	case REV_ID_MAJOR_QCN550X:
-+		ath79_soc = ATH79_SOC_QCA956X;
-+		chip = "550X";
-+		rev = id & QCA956X_REV_ID_REVISION_MASK;
-+		break;
-+
- 	case REV_ID_MAJOR_TP9343:
- 		ath79_soc = ATH79_SOC_TP9343;
- 		chip = "9343";
---- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-@@ -862,6 +862,7 @@
- #define REV_ID_MAJOR_QCA9558		0x1130
- #define REV_ID_MAJOR_TP9343		0x0150
- #define REV_ID_MAJOR_QCA956X		0x1150
-+#define REV_ID_MAJOR_QCN550X		0x2170
- 
- #define AR71XX_REV_ID_MINOR_MASK	0x3
- #define AR71XX_REV_ID_MINOR_AR7130	0x0
diff --git a/target/linux/ath79/patches-5.15/100-reset-ath79-read-back-reset-register.patch b/target/linux/ath79/patches-5.15/100-reset-ath79-read-back-reset-register.patch
deleted file mode 100644
index 7aa501514d..0000000000
--- a/target/linux/ath79/patches-5.15/100-reset-ath79-read-back-reset-register.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 661edfc3dab943a67c8821353b63cc23057f7ce9 Mon Sep 17 00:00:00 2001
-From: David Bauer <mail at david-bauer.net>
-Date: Tue, 9 Jan 2024 20:48:46 +0100
-Subject: [PATCH] reset: ath79: read back reset register
-
-Read back the reset register in order to flush the cache. This fixes
-spurious reboot hangs on TP-Link TL-WDR3600 and TL-WDR4300 with Zentel
-DRAM chips.
-
-This issue was fixed in the past, but switching to the reset-driver
-specific implementation removed the old fix.
-
-Link: https://github.com/freifunk-gluon/gluon/issues/2904
-Link: https://github.com/openwrt/openwrt/issues/13043
-Link: https://dev.archive.openwrt.org/ticket/17839
-Link: f8a7bfe1cb2c ("MIPS: ath79: fix system restart")
-
-Signed-off-by: David Bauer <mail at david-bauer.net>
----
- drivers/reset/reset-ath79.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/drivers/reset/reset-ath79.c
-+++ b/drivers/reset/reset-ath79.c
-@@ -37,6 +37,8 @@ static int ath79_reset_update(struct res
- 	else
- 		val &= ~BIT(id);
- 	writel(val, ath79_reset->base);
-+	/* Flush cache */
-+	readl(ath79_reset->base);
- 	spin_unlock_irqrestore(&ath79_reset->lock, flags);
- 
- 	return 0;
diff --git a/target/linux/ath79/patches-5.15/300-irqchip-irq-ath79-intc-add-irq-cascade-driver-for-QC.patch b/target/linux/ath79/patches-5.15/300-irqchip-irq-ath79-intc-add-irq-cascade-driver-for-QC.patch
deleted file mode 100644
index ceda511c21..0000000000
--- a/target/linux/ath79/patches-5.15/300-irqchip-irq-ath79-intc-add-irq-cascade-driver-for-QC.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-From f3eacff2310a60348a755c50a8da6fc251fc8587 Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Tue, 6 Mar 2018 09:55:13 +0100
-Subject: [PATCH 07/33] irqchip/irq-ath79-intc: add irq cascade driver for
- QCA9556 SoCs
-
-Signed-off-by: John Crispin <john at phrozen.org>
----
- drivers/irqchip/Makefile         |   1 +
- drivers/irqchip/irq-ath79-intc.c | 142 +++++++++++++++++++++++++++++++++++++++
- 2 files changed, 143 insertions(+)
- create mode 100644 drivers/irqchip/irq-ath79-intc.c
-
---- a/drivers/irqchip/Makefile
-+++ b/drivers/irqchip/Makefile
-@@ -4,6 +4,7 @@ obj-$(CONFIG_IRQCHIP)			+= irqchip.o
- obj-$(CONFIG_AL_FIC)			+= irq-al-fic.o
- obj-$(CONFIG_ALPINE_MSI)		+= irq-alpine-msi.o
- obj-$(CONFIG_ATH79)			+= irq-ath79-cpu.o
-+obj-$(CONFIG_ATH79)			+= irq-ath79-intc.o
- obj-$(CONFIG_ATH79)			+= irq-ath79-misc.o
- obj-$(CONFIG_ARCH_BCM2835)		+= irq-bcm2835.o
- obj-$(CONFIG_ARCH_BCM2835)		+= irq-bcm2836.o
---- /dev/null
-+++ b/drivers/irqchip/irq-ath79-intc.c
-@@ -0,0 +1,142 @@
-+/*
-+ *  Atheros AR71xx/AR724x/AR913x specific interrupt handling
-+ *
-+ *  Copyright (C) 2018 John Crispin <john at phrozen.org>
-+ *
-+ *  This program is free software; you can redistribute it and/or modify it
-+ *  under the terms of the GNU General Public License version 2 as published
-+ *  by the Free Software Foundation.
-+ */
-+
-+#include <linux/interrupt.h>
-+#include <linux/irqchip.h>
-+#include <linux/of.h>
-+#include <linux/of_irq.h>
-+#include <linux/irqdomain.h>
-+
-+#include <asm/irq_cpu.h>
-+#include <asm/mach-ath79/ath79.h>
-+#include <asm/mach-ath79/ar71xx_regs.h>
-+
-+#define ATH79_MAX_INTC_CASCADE	3
-+
-+struct ath79_intc {
-+	struct irq_chip chip;
-+	u32 irq;
-+	u32 pending_mask;
-+	u32 int_status;
-+	u32 irq_mask[ATH79_MAX_INTC_CASCADE];
-+	u32 irq_wb_chan[ATH79_MAX_INTC_CASCADE];
-+};
-+
-+static void ath79_intc_irq_handler(struct irq_desc *desc)
-+{
-+	struct irq_domain *domain = irq_desc_get_handler_data(desc);
-+	struct ath79_intc *intc = domain->host_data;
-+	u32 pending;
-+
-+	pending = ath79_reset_rr(intc->int_status);
-+	pending &= intc->pending_mask;
-+
-+	if (pending) {
-+		int i;
-+
-+		for (i = 0; i < domain->hwirq_max; i++)
-+			if (pending & intc->irq_mask[i]) {
-+				if (intc->irq_wb_chan[i] != 0xffffffff)
-+					ath79_ddr_wb_flush(intc->irq_wb_chan[i]);
-+				generic_handle_irq(irq_find_mapping(domain, i));
-+			}
-+	} else {
-+		spurious_interrupt();
-+	}
-+}
-+
-+static void ath79_intc_irq_enable(struct irq_data *d)
-+{
-+	struct ath79_intc *intc = d->domain->host_data;
-+	enable_irq(intc->irq);
-+}
-+
-+static void ath79_intc_irq_disable(struct irq_data *d)
-+{
-+	struct ath79_intc *intc = d->domain->host_data;
-+	disable_irq(intc->irq);
-+}
-+
-+static int ath79_intc_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hw)
-+{
-+	struct ath79_intc *intc = d->host_data;
-+
-+	irq_set_chip_and_handler(irq, &intc->chip, handle_level_irq);
-+
-+	return 0;
-+}
-+
-+static const struct irq_domain_ops ath79_irq_domain_ops = {
-+	.xlate = irq_domain_xlate_onecell,
-+	.map = ath79_intc_map,
-+};
-+
-+static int __init ath79_intc_of_init(
-+	struct device_node *node, struct device_node *parent)
-+{
-+	struct irq_domain *domain;
-+	struct ath79_intc *intc;
-+	int cnt, cntwb, i, err;
-+
-+	cnt = of_property_count_u32_elems(node, "qca,pending-bits");
-+	if (cnt > ATH79_MAX_INTC_CASCADE)
-+		panic("Too many INTC pending bits\n");
-+
-+	intc = kzalloc(sizeof(*intc), GFP_KERNEL);
-+	if (!intc)
-+		panic("Failed to allocate INTC memory\n");
-+	intc->chip = dummy_irq_chip;
-+	intc->chip.name = "INTC";
-+	intc->chip.irq_disable = ath79_intc_irq_disable;
-+	intc->chip.irq_enable = ath79_intc_irq_enable;
-+
-+	if (of_property_read_u32(node, "qca,int-status-addr", &intc->int_status) < 0) {
-+		panic("Missing address of interrupt status register\n");
-+	}
-+
-+	of_property_read_u32_array(node, "qca,pending-bits", intc->irq_mask, cnt);
-+	for (i = 0; i < cnt; i++) {
-+		intc->pending_mask |= intc->irq_mask[i];
-+		intc->irq_wb_chan[i] = 0xffffffff;
-+	}
-+
-+	cntwb = of_count_phandle_with_args(
-+		node, "qca,ddr-wb-channels", "#qca,ddr-wb-channel-cells");
-+
-+	for (i = 0; i < cntwb; i++) {
-+		struct of_phandle_args args;
-+		u32 irq = i;
-+
-+		of_property_read_u32_index(
-+			node, "qca,ddr-wb-channel-interrupts", i, &irq);
-+		if (irq >= ATH79_MAX_INTC_CASCADE)
-+			continue;
-+
-+		err = of_parse_phandle_with_args(
-+			node, "qca,ddr-wb-channels",
-+			"#qca,ddr-wb-channel-cells",
-+			i, &args);
-+		if (err)
-+			return err;
-+
-+		intc->irq_wb_chan[irq] = args.args[0];
-+	}
-+
-+	intc->irq = irq_of_parse_and_map(node, 0);
-+	if (!intc->irq)
-+		panic("Failed to get INTC IRQ");
-+
-+	domain = irq_domain_add_linear(node, cnt, &ath79_irq_domain_ops, intc);
-+	irq_set_chained_handler_and_data(intc->irq, ath79_intc_irq_handler, domain);
-+
-+	return 0;
-+}
-+IRQCHIP_DECLARE(ath79_intc, "qca,ar9340-intc",
-+		ath79_intc_of_init);
diff --git a/target/linux/ath79/patches-5.15/301-irqchip-irq-ath79-cpu-drop-OF-init-helper.patch b/target/linux/ath79/patches-5.15/301-irqchip-irq-ath79-cpu-drop-OF-init-helper.patch
deleted file mode 100644
index 13117d9a8e..0000000000
--- a/target/linux/ath79/patches-5.15/301-irqchip-irq-ath79-cpu-drop-OF-init-helper.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From e029f998594f151008ecbfa024e2957edd2a5189 Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Tue, 6 Mar 2018 09:58:19 +0100
-Subject: [PATCH 08/33] irqchip/irq-ath79-cpu: drop !OF init helper
-
-Signed-off-by: John Crispin <john at phrozen.org>
----
- drivers/irqchip/irq-ath79-cpu.c | 7 -------
- 1 file changed, 7 deletions(-)
-
---- a/drivers/irqchip/irq-ath79-cpu.c
-+++ b/drivers/irqchip/irq-ath79-cpu.c
-@@ -85,10 +85,3 @@ static int __init ar79_cpu_intc_of_init(
- }
- IRQCHIP_DECLARE(ar79_cpu_intc, "qca,ar7100-cpu-intc",
- 		ar79_cpu_intc_of_init);
--
--void __init ath79_cpu_irq_init(unsigned irq_wb_chan2, unsigned irq_wb_chan3)
--{
--	irq_wb_chan[2] = irq_wb_chan2;
--	irq_wb_chan[3] = irq_wb_chan3;
--	mips_cpu_irq_init();
--}
diff --git a/target/linux/ath79/patches-5.15/310-dt-bindings-PCI-qcom-ar7100-adds-binding-doc.patch b/target/linux/ath79/patches-5.15/310-dt-bindings-PCI-qcom-ar7100-adds-binding-doc.patch
deleted file mode 100644
index cf0a75c791..0000000000
--- a/target/linux/ath79/patches-5.15/310-dt-bindings-PCI-qcom-ar7100-adds-binding-doc.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 4a4f869ec58ed8910b9b2e68d0eee50957e9bb20 Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Mon, 25 Jun 2018 15:52:10 +0200
-Subject: [PATCH 17/33] dt-bindings: PCI: qcom,ar7100: adds binding doc
-
-With the driver being converted from platform_data to pure OF, we need to
-also add some docs.
-
-Cc: Rob Herring <robh+dt at kernel.org>
-Cc: devicetree at vger.kernel.org
-Signed-off-by: John Crispin <john at phrozen.org>
----
- .../devicetree/bindings/pci/qcom,ar7100-pci.txt    | 38 ++++++++++++++++++++++
- 1 file changed, 38 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/pci/qcom,ar7100-pci.txt
-
---- /dev/null
-+++ b/Documentation/devicetree/bindings/pci/qcom,ar7100-pci.txt
-@@ -0,0 +1,38 @@
-+* Qualcomm Atheros AR7100 PCI express root complex
-+
-+Required properties:
-+- compatible: should contain "qcom,ar7100-pci" to identify the core.
-+- reg: Should contain the register ranges as listed in the reg-names property.
-+- reg-names: Definition: Must include the following entries
-+	- "cfg_base"	IO Memory
-+- #address-cells: set to <3>
-+- #size-cells: set to <2>
-+- ranges: ranges for the PCI memory and I/O regions
-+- interrupt-map-mask and interrupt-map: standard PCI
-+	properties to define the mapping of the PCIe interface to interrupt
-+	numbers.
-+- #interrupt-cells: set to <1>
-+- interrupt-controller: define to enable the builtin IRQ cascade.
-+
-+Optional properties:
-+- interrupt-parent: phandle to the MIPS IRQ controller
-+
-+* Example for ar7100
-+	pcie at 180c0000 {
-+		compatible = "qca,ar7100-pci";
-+		#address-cells = <3>;
-+		#size-cells = <2>;
-+		bus-range = <0x0 0x0>;
-+		reg = <0x17010000 0x100>;
-+		reg-names = "cfg_base";
-+		ranges = <0x2000000 0 0x10000000 0x10000000 0 0x07000000
-+			  0x1000000 0 0x00000000 0x00000000 0 0x00000001>;
-+		interrupt-parent = <&cpuintc>;
-+		interrupts = <2>;
-+
-+		interrupt-controller;
-+		#interrupt-cells = <1>;
-+
-+		interrupt-map-mask = <0 0 0 1>;
-+		interrupt-map = <0 0 0 0 &pcie0 0>;
-+	};
diff --git a/target/linux/ath79/patches-5.15/311-MIPS-pci-ar71xx-convert-to-OF.patch b/target/linux/ath79/patches-5.15/311-MIPS-pci-ar71xx-convert-to-OF.patch
deleted file mode 100644
index 9a315aed0b..0000000000
--- a/target/linux/ath79/patches-5.15/311-MIPS-pci-ar71xx-convert-to-OF.patch
+++ /dev/null
@@ -1,206 +0,0 @@
-From 1855ab6b1d27f5b38a648baf57ff6a534afec26d Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Sat, 23 Jun 2018 15:07:23 +0200
-Subject: [PATCH 18/33] MIPS: pci-ar71xx: convert to OF
-
-With the ath79 target getting converted to pure OF, we can drop all the
-platform data code and add the missing OF bits to the driver. We also add
-a irq domain for the PCI/e controllers cascade, thus making it usable from
-dts files.
-
-Signed-off-by: John Crispin <john at phrozen.org>
----
- arch/mips/pci/pci-ar71xx.c | 82 +++++++++++++++++++++++-----------------------
- 1 file changed, 41 insertions(+), 41 deletions(-)
-
---- a/arch/mips/pci/pci-ar71xx.c
-+++ b/arch/mips/pci/pci-ar71xx.c
-@@ -15,8 +15,11 @@
- #include <linux/pci.h>
- #include <linux/pci_regs.h>
- #include <linux/interrupt.h>
-+#include <linux/irqchip/chained_irq.h>
- #include <linux/init.h>
- #include <linux/platform_device.h>
-+#include <linux/of_irq.h>
-+#include <linux/of_pci.h>
- 
- #include <asm/mach-ath79/ar71xx_regs.h>
- #include <asm/mach-ath79/ath79.h>
-@@ -46,12 +49,13 @@
- #define AR71XX_PCI_IRQ_COUNT		5
- 
- struct ar71xx_pci_controller {
-+	struct device_node *np;
- 	void __iomem *cfg_base;
- 	int irq;
--	int irq_base;
- 	struct pci_controller pci_ctrl;
- 	struct resource io_res;
- 	struct resource mem_res;
-+	struct irq_domain *domain;
- };
- 
- /* Byte lane enable bits */
-@@ -225,29 +229,30 @@ static struct pci_ops ar71xx_pci_ops = {
- 
- static void ar71xx_pci_irq_handler(struct irq_desc *desc)
- {
--	struct ar71xx_pci_controller *apc;
- 	void __iomem *base = ath79_reset_base;
-+	struct irq_chip *chip = irq_desc_get_chip(desc);
-+	struct ar71xx_pci_controller *apc = irq_desc_get_handler_data(desc);
- 	u32 pending;
- 
--	apc = irq_desc_get_handler_data(desc);
--
-+	chained_irq_enter(chip, desc);
- 	pending = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_STATUS) &
- 		  __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
- 
- 	if (pending & AR71XX_PCI_INT_DEV0)
--		generic_handle_irq(apc->irq_base + 0);
-+		generic_handle_irq(irq_linear_revmap(apc->domain, 1));
- 
- 	else if (pending & AR71XX_PCI_INT_DEV1)
--		generic_handle_irq(apc->irq_base + 1);
-+		generic_handle_irq(irq_linear_revmap(apc->domain, 2));
- 
- 	else if (pending & AR71XX_PCI_INT_DEV2)
--		generic_handle_irq(apc->irq_base + 2);
-+		generic_handle_irq(irq_linear_revmap(apc->domain, 3));
- 
- 	else if (pending & AR71XX_PCI_INT_CORE)
--		generic_handle_irq(apc->irq_base + 4);
-+		generic_handle_irq(irq_linear_revmap(apc->domain, 4));
- 
- 	else
- 		spurious_interrupt();
-+	chained_irq_exit(chip, desc);
- }
- 
- static void ar71xx_pci_irq_unmask(struct irq_data *d)
-@@ -258,7 +263,7 @@ static void ar71xx_pci_irq_unmask(struct
- 	u32 t;
- 
- 	apc = irq_data_get_irq_chip_data(d);
--	irq = d->irq - apc->irq_base;
-+	irq = irq_linear_revmap(apc->domain, d->irq);
- 
- 	t = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
- 	__raw_writel(t | (1 << irq), base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-@@ -275,7 +280,7 @@ static void ar71xx_pci_irq_mask(struct i
- 	u32 t;
- 
- 	apc = irq_data_get_irq_chip_data(d);
--	irq = d->irq - apc->irq_base;
-+	irq = irq_linear_revmap(apc->domain, d->irq);
- 
- 	t = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
- 	__raw_writel(t & ~(1 << irq), base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-@@ -291,24 +296,31 @@ static struct irq_chip ar71xx_pci_irq_ch
- 	.irq_mask_ack	= ar71xx_pci_irq_mask,
- };
- 
-+static int ar71xx_pci_irq_map(struct irq_domain *d,
-+			      unsigned int irq, irq_hw_number_t hw)
-+{
-+	struct ar71xx_pci_controller *apc = d->host_data;
-+
-+	irq_set_chip_and_handler(irq, &ar71xx_pci_irq_chip, handle_level_irq);
-+	irq_set_chip_data(irq, apc);
-+
-+	return 0;
-+}
-+
-+static const struct irq_domain_ops ar71xx_pci_domain_ops = {
-+	.xlate = irq_domain_xlate_onecell,
-+	.map = ar71xx_pci_irq_map,
-+};
-+
- static void ar71xx_pci_irq_init(struct ar71xx_pci_controller *apc)
- {
- 	void __iomem *base = ath79_reset_base;
--	int i;
- 
- 	__raw_writel(0, base + AR71XX_RESET_REG_PCI_INT_ENABLE);
- 	__raw_writel(0, base + AR71XX_RESET_REG_PCI_INT_STATUS);
- 
--	BUILD_BUG_ON(ATH79_PCI_IRQ_COUNT < AR71XX_PCI_IRQ_COUNT);
--
--	apc->irq_base = ATH79_PCI_IRQ_BASE;
--	for (i = apc->irq_base;
--	     i < apc->irq_base + AR71XX_PCI_IRQ_COUNT; i++) {
--		irq_set_chip_and_handler(i, &ar71xx_pci_irq_chip,
--					 handle_level_irq);
--		irq_set_chip_data(i, apc);
--	}
--
-+	apc->domain = irq_domain_add_linear(apc->np, AR71XX_PCI_IRQ_COUNT,
-+					    &ar71xx_pci_domain_ops, apc);
- 	irq_set_chained_handler_and_data(apc->irq, ar71xx_pci_irq_handler,
- 					 apc);
- }
-@@ -325,10 +337,14 @@ static void ar71xx_pci_reset(void)
- 	mdelay(100);
- }
- 
-+static const struct of_device_id ar71xx_pci_ids[] = {
-+	{ .compatible = "qca,ar7100-pci" },
-+	{},
-+};
-+
- static int ar71xx_pci_probe(struct platform_device *pdev)
- {
- 	struct ar71xx_pci_controller *apc;
--	struct resource *res;
- 	u32 t;
- 
- 	apc = devm_kzalloc(&pdev->dev, sizeof(struct ar71xx_pci_controller),
-@@ -345,26 +361,6 @@ static int ar71xx_pci_probe(struct platf
- 	if (apc->irq < 0)
- 		return -EINVAL;
- 
--	res = platform_get_resource_byname(pdev, IORESOURCE_IO, "io_base");
--	if (!res)
--		return -EINVAL;
--
--	apc->io_res.parent = res;
--	apc->io_res.name = "PCI IO space";
--	apc->io_res.start = res->start;
--	apc->io_res.end = res->end;
--	apc->io_res.flags = IORESOURCE_IO;
--
--	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mem_base");
--	if (!res)
--		return -EINVAL;
--
--	apc->mem_res.parent = res;
--	apc->mem_res.name = "PCI memory space";
--	apc->mem_res.start = res->start;
--	apc->mem_res.end = res->end;
--	apc->mem_res.flags = IORESOURCE_MEM;
--
- 	ar71xx_pci_reset();
- 
- 	/* setup COMMAND register */
-@@ -377,9 +373,11 @@ static int ar71xx_pci_probe(struct platf
- 
- 	ar71xx_pci_irq_init(apc);
- 
-+	apc->np = pdev->dev.of_node;
- 	apc->pci_ctrl.pci_ops = &ar71xx_pci_ops;
- 	apc->pci_ctrl.mem_resource = &apc->mem_res;
- 	apc->pci_ctrl.io_resource = &apc->io_res;
-+	pci_load_of_ranges(&apc->pci_ctrl, pdev->dev.of_node);
- 
- 	register_pci_controller(&apc->pci_ctrl);
- 
-@@ -390,6 +388,7 @@ static struct platform_driver ar71xx_pci
- 	.probe = ar71xx_pci_probe,
- 	.driver = {
- 		.name = "ar71xx-pci",
-+		.of_match_table = of_match_ptr(ar71xx_pci_ids),
- 	},
- };
- 
diff --git a/target/linux/ath79/patches-5.15/312-dt-bindings-PCI-qcom-ar7240-adds-binding-doc.patch b/target/linux/ath79/patches-5.15/312-dt-bindings-PCI-qcom-ar7240-adds-binding-doc.patch
deleted file mode 100644
index a32c9bdcde..0000000000
--- a/target/linux/ath79/patches-5.15/312-dt-bindings-PCI-qcom-ar7240-adds-binding-doc.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From ea27764bc3ef2a05decf3ae05edffc289cd0d93c Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Mon, 25 Jun 2018 15:52:02 +0200
-Subject: [PATCH 19/33] dt-bindings: PCI: qcom,ar7240: adds binding doc
-
-With the driver being converted from platform_data to pure OF, we need to
-also add some docs.
-
-Cc: Rob Herring <robh+dt at kernel.org>
-Cc: devicetree at vger.kernel.org
-Signed-off-by: John Crispin <john at phrozen.org>
----
- .../devicetree/bindings/pci/qcom,ar7240-pci.txt    | 42 ++++++++++++++++++++++
- 1 file changed, 42 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/pci/qcom,ar7240-pci.txt
-
---- /dev/null
-+++ b/Documentation/devicetree/bindings/pci/qcom,ar7240-pci.txt
-@@ -0,0 +1,42 @@
-+* Qualcomm Atheros AR724X PCI express root complex
-+
-+Required properties:
-+- compatible: should contain "qcom,ar7240-pci" to identify the core.
-+- reg: Should contain the register ranges as listed in the reg-names property.
-+- reg-names: Definition: Must include the following entries
-+	- "crp_base"	Configuration registers
-+	- "ctrl_base"	Control registers
-+	- "cfg_base"	IO Memory
-+- #address-cells: set to <3>
-+- #size-cells: set to <2>
-+- ranges: ranges for the PCI memory and I/O regions
-+- interrupt-map-mask and interrupt-map: standard PCI
-+	properties to define the mapping of the PCIe interface to interrupt
-+	numbers.
-+- #interrupt-cells: set to <1>
-+- interrupt-parent: phandle to the MIPS IRQ controller
-+
-+Optional properties:
-+- interrupt-controller: define to enable the builtin IRQ cascade.
-+
-+* Example for qca9557
-+	pcie at 180c0000 {
-+		compatible = "qcom,ar7240-pci";
-+		#address-cells = <3>;
-+		#size-cells = <2>;
-+		bus-range = <0x0 0x0>;
-+		reg = <0x180c0000 0x1000>,
-+		      <0x180f0000 0x100>,
-+		      <0x14000000 0x1000>;
-+		reg-names = "crp_base", "ctrl_base", "cfg_base";
-+		ranges = <0x2000000 0 0x10000000 0x10000000 0 0x04000000
-+			  0x1000000 0 0x00000000 0x00000000 0 0x00000001>;
-+		interrupt-parent = <&intc2>;
-+		interrupts = <1>;
-+
-+		interrupt-controller;
-+		#interrupt-cells = <1>;
-+
-+		interrupt-map-mask = <0 0 0 1>;
-+		interrupt-map = <0 0 0 0 &pcie0 0>;
-+	};
diff --git a/target/linux/ath79/patches-5.15/313-MIPS-pci-ar724x-convert-to-OF.patch b/target/linux/ath79/patches-5.15/313-MIPS-pci-ar724x-convert-to-OF.patch
deleted file mode 100644
index 7927c1cbf5..0000000000
--- a/target/linux/ath79/patches-5.15/313-MIPS-pci-ar724x-convert-to-OF.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-From a522ee0199d5d3ea114ca2e211f6ac398d3e8e0b Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Sat, 23 Jun 2018 15:07:37 +0200
-Subject: [PATCH 20/33] MIPS: pci-ar724x: convert to OF
-
-With the ath79 target getting converted to pure OF, we can drop all the
-platform data code and add the missing OF bits to the driver. We also add
-a irq domain for the PCI/e controllers cascade, thus making it usable from
-dts files.
-
-Signed-off-by: John Crispin <john at phrozen.org>
----
- arch/mips/pci/pci-ar724x.c | 88 ++++++++++++++++++++++------------------------
- 1 file changed, 42 insertions(+), 46 deletions(-)
-
---- a/arch/mips/pci/pci-ar724x.c
-+++ b/arch/mips/pci/pci-ar724x.c
-@@ -11,8 +11,11 @@
- #include <linux/init.h>
- #include <linux/delay.h>
- #include <linux/platform_device.h>
-+#include <linux/irqchip/chained_irq.h>
- #include <asm/mach-ath79/ath79.h>
- #include <asm/mach-ath79/ar71xx_regs.h>
-+#include <linux/of_irq.h>
-+#include <linux/of_pci.h>
- 
- #define AR724X_PCI_REG_APP		0x00
- #define AR724X_PCI_REG_RESET		0x18
-@@ -42,17 +45,20 @@ struct ar724x_pci_controller {
- 	void __iomem *crp_base;
- 
- 	int irq;
--	int irq_base;
- 
- 	bool link_up;
- 	bool bar0_is_cached;
- 	u32  bar0_value;
- 
-+	struct device_node *np;
- 	struct pci_controller pci_controller;
-+	struct irq_domain *domain;
- 	struct resource io_res;
- 	struct resource mem_res;
- };
- 
-+static struct irq_chip ar724x_pci_irq_chip;
-+
- static inline bool ar724x_pci_check_link(struct ar724x_pci_controller *apc)
- {
- 	u32 reset;
-@@ -228,35 +234,31 @@ static struct pci_ops ar724x_pci_ops = {
- 
- static void ar724x_pci_irq_handler(struct irq_desc *desc)
- {
--	struct ar724x_pci_controller *apc;
--	void __iomem *base;
-+	struct irq_chip *chip = irq_desc_get_chip(desc);
-+	struct ar724x_pci_controller *apc = irq_desc_get_handler_data(desc);
- 	u32 pending;
- 
--	apc = irq_desc_get_handler_data(desc);
--	base = apc->ctrl_base;
--
--	pending = __raw_readl(base + AR724X_PCI_REG_INT_STATUS) &
--		  __raw_readl(base + AR724X_PCI_REG_INT_MASK);
-+	chained_irq_enter(chip, desc);
-+	pending = __raw_readl(apc->ctrl_base + AR724X_PCI_REG_INT_STATUS) &
-+		  __raw_readl(apc->ctrl_base + AR724X_PCI_REG_INT_MASK);
- 
- 	if (pending & AR724X_PCI_INT_DEV0)
--		generic_handle_irq(apc->irq_base + 0);
--
-+		generic_handle_irq(irq_linear_revmap(apc->domain, 1));
- 	else
- 		spurious_interrupt();
-+	chained_irq_exit(chip, desc);
- }
- 
- static void ar724x_pci_irq_unmask(struct irq_data *d)
- {
- 	struct ar724x_pci_controller *apc;
- 	void __iomem *base;
--	int offset;
- 	u32 t;
- 
- 	apc = irq_data_get_irq_chip_data(d);
- 	base = apc->ctrl_base;
--	offset = apc->irq_base - d->irq;
- 
--	switch (offset) {
-+	switch (irq_linear_revmap(apc->domain, d->irq)) {
- 	case 0:
- 		t = __raw_readl(base + AR724X_PCI_REG_INT_MASK);
- 		__raw_writel(t | AR724X_PCI_INT_DEV0,
-@@ -270,14 +272,12 @@ static void ar724x_pci_irq_mask(struct i
- {
- 	struct ar724x_pci_controller *apc;
- 	void __iomem *base;
--	int offset;
- 	u32 t;
- 
- 	apc = irq_data_get_irq_chip_data(d);
- 	base = apc->ctrl_base;
--	offset = apc->irq_base - d->irq;
- 
--	switch (offset) {
-+	switch (irq_linear_revmap(apc->domain, d->irq)) {
- 	case 0:
- 		t = __raw_readl(base + AR724X_PCI_REG_INT_MASK);
- 		__raw_writel(t & ~AR724X_PCI_INT_DEV0,
-@@ -302,26 +302,34 @@ static struct irq_chip ar724x_pci_irq_ch
- 	.irq_mask_ack	= ar724x_pci_irq_mask,
- };
- 
-+static int ar724x_pci_irq_map(struct irq_domain *d,
-+			      unsigned int irq, irq_hw_number_t hw)
-+{
-+	struct ar724x_pci_controller *apc = d->host_data;
-+
-+	irq_set_chip_and_handler(irq, &ar724x_pci_irq_chip, handle_level_irq);
-+	irq_set_chip_data(irq, apc);
-+
-+	return 0;
-+}
-+
-+static const struct irq_domain_ops ar724x_pci_domain_ops = {
-+	.xlate = irq_domain_xlate_onecell,
-+	.map = ar724x_pci_irq_map,
-+};
-+
- static void ar724x_pci_irq_init(struct ar724x_pci_controller *apc,
- 				int id)
- {
- 	void __iomem *base;
--	int i;
- 
- 	base = apc->ctrl_base;
- 
- 	__raw_writel(0, base + AR724X_PCI_REG_INT_MASK);
- 	__raw_writel(0, base + AR724X_PCI_REG_INT_STATUS);
- 
--	apc->irq_base = ATH79_PCI_IRQ_BASE + (id * AR724X_PCI_IRQ_COUNT);
--
--	for (i = apc->irq_base;
--	     i < apc->irq_base + AR724X_PCI_IRQ_COUNT; i++) {
--		irq_set_chip_and_handler(i, &ar724x_pci_irq_chip,
--					 handle_level_irq);
--		irq_set_chip_data(i, apc);
--	}
--
-+	apc->domain = irq_domain_add_linear(apc->np, 2,
-+					    &ar724x_pci_domain_ops, apc);
- 	irq_set_chained_handler_and_data(apc->irq, ar724x_pci_irq_handler,
- 					 apc);
- }
-@@ -360,7 +368,6 @@ static void ar724x_pci_hw_init(struct ar
- static int ar724x_pci_probe(struct platform_device *pdev)
- {
- 	struct ar724x_pci_controller *apc;
--	struct resource *res;
- 	int id;
- 
- 	id = pdev->id;
-@@ -388,29 +395,11 @@ static int ar724x_pci_probe(struct platf
- 	if (apc->irq < 0)
- 		return -EINVAL;
- 
--	res = platform_get_resource_byname(pdev, IORESOURCE_IO, "io_base");
--	if (!res)
--		return -EINVAL;
--
--	apc->io_res.parent = res;
--	apc->io_res.name = "PCI IO space";
--	apc->io_res.start = res->start;
--	apc->io_res.end = res->end;
--	apc->io_res.flags = IORESOURCE_IO;
--
--	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mem_base");
--	if (!res)
--		return -EINVAL;
--
--	apc->mem_res.parent = res;
--	apc->mem_res.name = "PCI memory space";
--	apc->mem_res.start = res->start;
--	apc->mem_res.end = res->end;
--	apc->mem_res.flags = IORESOURCE_MEM;
--
-+	apc->np = pdev->dev.of_node;
- 	apc->pci_controller.pci_ops = &ar724x_pci_ops;
- 	apc->pci_controller.io_resource = &apc->io_res;
- 	apc->pci_controller.mem_resource = &apc->mem_res;
-+	pci_load_of_ranges(&apc->pci_controller, pdev->dev.of_node);
- 
- 	/*
- 	 * Do the full PCIE Root Complex Initialization Sequence if the PCIe
-@@ -432,10 +421,16 @@ static int ar724x_pci_probe(struct platf
- 	return 0;
- }
- 
-+static const struct of_device_id ar724x_pci_ids[] = {
-+	{ .compatible = "qcom,ar7240-pci" },
-+	{},
-+};
-+
- static struct platform_driver ar724x_pci_driver = {
- 	.probe = ar724x_pci_probe,
- 	.driver = {
- 		.name = "ar724x-pci",
-+		.of_match_table = of_match_ptr(ar724x_pci_ids),
- 	},
- };
- 
diff --git a/target/linux/ath79/patches-5.15/314-MIPS-ath79-remove-irq-code-from-pci.patch b/target/linux/ath79/patches-5.15/314-MIPS-ath79-remove-irq-code-from-pci.patch
deleted file mode 100644
index 01549eec68..0000000000
--- a/target/linux/ath79/patches-5.15/314-MIPS-ath79-remove-irq-code-from-pci.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From: John Crispin <john at phrozen.org>
-Subject: ath79: fix remove irq code from pci driver patch
-
-This patch got mangled in the void while rebasing it.
-
-Submitted-by: John Crispin <john at phrozen.org>
----
- arch/mips/pci/pci-ar71xx.c                    | 107 ------------------
- 1 file changed, 141 deletions(-)
-
---- a/arch/mips/pci/pci-ar71xx.c
-+++ b/arch/mips/pci/pci-ar71xx.c
-@@ -51,11 +51,9 @@
- struct ar71xx_pci_controller {
- 	struct device_node *np;
- 	void __iomem *cfg_base;
--	int irq;
- 	struct pci_controller pci_ctrl;
- 	struct resource io_res;
- 	struct resource mem_res;
--	struct irq_domain *domain;
- };
- 
- /* Byte lane enable bits */
-@@ -227,104 +225,6 @@ static struct pci_ops ar71xx_pci_ops = {
- 	.write	= ar71xx_pci_write_config,
- };
- 
--static void ar71xx_pci_irq_handler(struct irq_desc *desc)
--{
--	void __iomem *base = ath79_reset_base;
--	struct irq_chip *chip = irq_desc_get_chip(desc);
--	struct ar71xx_pci_controller *apc = irq_desc_get_handler_data(desc);
--	u32 pending;
--
--	chained_irq_enter(chip, desc);
--	pending = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_STATUS) &
--		  __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
--
--	if (pending & AR71XX_PCI_INT_DEV0)
--		generic_handle_irq(irq_linear_revmap(apc->domain, 1));
--
--	else if (pending & AR71XX_PCI_INT_DEV1)
--		generic_handle_irq(irq_linear_revmap(apc->domain, 2));
--
--	else if (pending & AR71XX_PCI_INT_DEV2)
--		generic_handle_irq(irq_linear_revmap(apc->domain, 3));
--
--	else if (pending & AR71XX_PCI_INT_CORE)
--		generic_handle_irq(irq_linear_revmap(apc->domain, 4));
--
--	else
--		spurious_interrupt();
--	chained_irq_exit(chip, desc);
--}
--
--static void ar71xx_pci_irq_unmask(struct irq_data *d)
--{
--	struct ar71xx_pci_controller *apc;
--	unsigned int irq;
--	void __iomem *base = ath79_reset_base;
--	u32 t;
--
--	apc = irq_data_get_irq_chip_data(d);
--	irq = irq_linear_revmap(apc->domain, d->irq);
--
--	t = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
--	__raw_writel(t | (1 << irq), base + AR71XX_RESET_REG_PCI_INT_ENABLE);
--
--	/* flush write */
--	__raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
--}
--
--static void ar71xx_pci_irq_mask(struct irq_data *d)
--{
--	struct ar71xx_pci_controller *apc;
--	unsigned int irq;
--	void __iomem *base = ath79_reset_base;
--	u32 t;
--
--	apc = irq_data_get_irq_chip_data(d);
--	irq = irq_linear_revmap(apc->domain, d->irq);
--
--	t = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
--	__raw_writel(t & ~(1 << irq), base + AR71XX_RESET_REG_PCI_INT_ENABLE);
--
--	/* flush write */
--	__raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
--}
--
--static struct irq_chip ar71xx_pci_irq_chip = {
--	.name		= "AR71XX PCI",
--	.irq_mask	= ar71xx_pci_irq_mask,
--	.irq_unmask	= ar71xx_pci_irq_unmask,
--	.irq_mask_ack	= ar71xx_pci_irq_mask,
--};
--
--static int ar71xx_pci_irq_map(struct irq_domain *d,
--			      unsigned int irq, irq_hw_number_t hw)
--{
--	struct ar71xx_pci_controller *apc = d->host_data;
--
--	irq_set_chip_and_handler(irq, &ar71xx_pci_irq_chip, handle_level_irq);
--	irq_set_chip_data(irq, apc);
--
--	return 0;
--}
--
--static const struct irq_domain_ops ar71xx_pci_domain_ops = {
--	.xlate = irq_domain_xlate_onecell,
--	.map = ar71xx_pci_irq_map,
--};
--
--static void ar71xx_pci_irq_init(struct ar71xx_pci_controller *apc)
--{
--	void __iomem *base = ath79_reset_base;
--
--	__raw_writel(0, base + AR71XX_RESET_REG_PCI_INT_ENABLE);
--	__raw_writel(0, base + AR71XX_RESET_REG_PCI_INT_STATUS);
--
--	apc->domain = irq_domain_add_linear(apc->np, AR71XX_PCI_IRQ_COUNT,
--					    &ar71xx_pci_domain_ops, apc);
--	irq_set_chained_handler_and_data(apc->irq, ar71xx_pci_irq_handler,
--					 apc);
--}
--
- static void ar71xx_pci_reset(void)
- {
- 	ath79_device_reset_set(AR71XX_RESET_PCI_BUS | AR71XX_RESET_PCI_CORE);
-@@ -357,10 +257,6 @@ static int ar71xx_pci_probe(struct platf
- 	if (IS_ERR(apc->cfg_base))
- 		return PTR_ERR(apc->cfg_base);
- 
--	apc->irq = platform_get_irq(pdev, 0);
--	if (apc->irq < 0)
--		return -EINVAL;
--
- 	ar71xx_pci_reset();
- 
- 	/* setup COMMAND register */
-@@ -371,8 +267,6 @@ static int ar71xx_pci_probe(struct platf
- 	/* clear bus errors */
- 	ar71xx_pci_check_error(apc, 1);
- 
--	ar71xx_pci_irq_init(apc);
--
- 	apc->np = pdev->dev.of_node;
- 	apc->pci_ctrl.pci_ops = &ar71xx_pci_ops;
- 	apc->pci_ctrl.mem_resource = &apc->mem_res;
diff --git a/target/linux/ath79/patches-5.15/315-MIPS-pci-ar724x-add-QCA9550-reset-sequence.patch b/target/linux/ath79/patches-5.15/315-MIPS-pci-ar724x-add-QCA9550-reset-sequence.patch
deleted file mode 100644
index 375dec8ba2..0000000000
--- a/target/linux/ath79/patches-5.15/315-MIPS-pci-ar724x-add-QCA9550-reset-sequence.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From: David Bauer <mail at david-bauer.net>
-Date: Sat, 11 Apr 2020 14:03:12 +0200
-Subject: MIPS: pci-ar724x: add QCA9550 reset sequence
-
-The QCA9550 family of SoCs have a slightly different reset
-sequence compared to older chips.
-
-Normally the bootloader performs this sequence, however
-some bootloader implementation expect the operating system
-to clear the reset.
-
-Also get the resets from OF to support handling of the second
-PCIe root-complex on the QCA9558.
-
-Signed-off-by: David Bauer <mail at david-bauer.net>
-
---- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-@@ -390,6 +390,7 @@
- #define QCA955X_PLL_CPU_CONFIG_REG		0x00
- #define QCA955X_PLL_DDR_CONFIG_REG		0x04
- #define QCA955X_PLL_CLK_CTRL_REG		0x08
-+#define QCA955X_PLL_PCIE_CONFIG_REG		0x0c
- #define QCA955X_PLL_ETH_XMII_CONTROL_REG	0x28
- #define QCA955X_PLL_ETH_SGMII_CONTROL_REG	0x48
- #define QCA955X_PLL_ETH_SGMII_SERDES_REG	0x4c
-@@ -475,6 +476,9 @@
- #define QCA956X_PLL_CLK_CTRL_CPU_DDRCLK_FROM_CPUPLL	BIT(21)
- #define QCA956X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL		BIT(24)
- 
-+#define QCA955X_PLL_PCIE_CONFIG_PLL_PWD			BIT(30)
-+#define QCA955X_PLL_PCIE_CONFIG_PLL_BYPASS		BIT(16)
-+
- #define QCA956X_PLL_SWITCH_CLOCK_SPARE_I2C_CLK_SELB		BIT(5)
- #define QCA956X_PLL_SWITCH_CLOCK_SPARE_MDIO_CLK_SEL0_1		BIT(6)
- #define QCA956X_PLL_SWITCH_CLOCK_SPARE_UART1_CLK_SEL		BIT(7)
---- a/arch/mips/pci/pci-ar724x.c
-+++ b/arch/mips/pci/pci-ar724x.c
-@@ -8,6 +8,7 @@
- 
- #include <linux/irq.h>
- #include <linux/pci.h>
-+#include <linux/reset.h>
- #include <linux/init.h>
- #include <linux/delay.h>
- #include <linux/platform_device.h>
-@@ -55,6 +56,9 @@ struct ar724x_pci_controller {
- 	struct irq_domain *domain;
- 	struct resource io_res;
- 	struct resource mem_res;
-+
-+	struct reset_control *hc_reset;
-+	struct reset_control *phy_reset;
- };
- 
- static struct irq_chip ar724x_pci_irq_chip;
-@@ -340,18 +344,30 @@ static void ar724x_pci_hw_init(struct ar
- 	int wait = 0;
- 
- 	/* deassert PCIe host controller and PCIe PHY reset */
--	ath79_device_reset_clear(AR724X_RESET_PCIE);
--	ath79_device_reset_clear(AR724X_RESET_PCIE_PHY);
-+	reset_control_deassert(apc->hc_reset);
-+	reset_control_deassert(apc->phy_reset);
- 
--	/* remove the reset of the PCIE PLL */
--	ppl = ath79_pll_rr(AR724X_PLL_REG_PCIE_CONFIG);
--	ppl &= ~AR724X_PLL_REG_PCIE_CONFIG_PPL_RESET;
--	ath79_pll_wr(AR724X_PLL_REG_PCIE_CONFIG, ppl);
--
--	/* deassert bypass for the PCIE PLL */
--	ppl = ath79_pll_rr(AR724X_PLL_REG_PCIE_CONFIG);
--	ppl &= ~AR724X_PLL_REG_PCIE_CONFIG_PPL_BYPASS;
--	ath79_pll_wr(AR724X_PLL_REG_PCIE_CONFIG, ppl);
-+	if (of_device_is_compatible(apc->np, "qcom,qca9550-pci")) {
-+		/* remove the reset of the PCIE PLL */
-+		ppl = ath79_pll_rr(QCA955X_PLL_PCIE_CONFIG_REG);
-+		ppl &= ~QCA955X_PLL_PCIE_CONFIG_PLL_PWD;
-+		ath79_pll_wr(QCA955X_PLL_PCIE_CONFIG_REG, ppl);
-+
-+		/* deassert bypass for the PCIE PLL */
-+		ppl = ath79_pll_rr(QCA955X_PLL_PCIE_CONFIG_REG);
-+		ppl &= ~QCA955X_PLL_PCIE_CONFIG_PLL_BYPASS;
-+		ath79_pll_wr(QCA955X_PLL_PCIE_CONFIG_REG, ppl);
-+	} else {
-+		/* remove the reset of the PCIE PLL */
-+		ppl = ath79_pll_rr(AR724X_PLL_REG_PCIE_CONFIG);
-+		ppl &= ~AR724X_PLL_REG_PCIE_CONFIG_PPL_RESET;
-+		ath79_pll_wr(AR724X_PLL_REG_PCIE_CONFIG, ppl);
-+
-+		/* deassert bypass for the PCIE PLL */
-+		ppl = ath79_pll_rr(AR724X_PLL_REG_PCIE_CONFIG);
-+		ppl &= ~AR724X_PLL_REG_PCIE_CONFIG_PPL_BYPASS;
-+		ath79_pll_wr(AR724X_PLL_REG_PCIE_CONFIG, ppl);
-+	}
- 
- 	/* set PCIE Application Control to ready */
- 	app = __raw_readl(apc->ctrl_base + AR724X_PCI_REG_APP);
-@@ -395,6 +411,14 @@ static int ar724x_pci_probe(struct platf
- 	if (apc->irq < 0)
- 		return -EINVAL;
- 
-+	apc->hc_reset = devm_reset_control_get_exclusive(&pdev->dev, "hc");
-+	if (IS_ERR(apc->hc_reset))
-+		return PTR_ERR(apc->hc_reset);
-+
-+	apc->phy_reset = devm_reset_control_get_exclusive(&pdev->dev, "phy");
-+	if (IS_ERR(apc->phy_reset))
-+		return PTR_ERR(apc->phy_reset);
-+
- 	apc->np = pdev->dev.of_node;
- 	apc->pci_controller.pci_ops = &ar724x_pci_ops;
- 	apc->pci_controller.io_resource = &apc->io_res;
-@@ -405,7 +429,7 @@ static int ar724x_pci_probe(struct platf
- 	 * Do the full PCIE Root Complex Initialization Sequence if the PCIe
- 	 * host controller is in reset.
- 	 */
--	if (ath79_reset_rr(AR724X_RESET_REG_RESET_MODULE) & AR724X_RESET_PCIE)
-+	if (reset_control_status(apc->hc_reset))
- 		ar724x_pci_hw_init(apc);
- 
- 	apc->link_up = ar724x_pci_check_link(apc);
-@@ -423,6 +447,7 @@ static int ar724x_pci_probe(struct platf
- 
- static const struct of_device_id ar724x_pci_ids[] = {
- 	{ .compatible = "qcom,ar7240-pci" },
-+	{ .compatible = "qcom,qca9550-pci" },
- 	{},
- };
- 
diff --git a/target/linux/ath79/patches-5.15/316-MIPS-ath79-swizzle-pci-address-for-ar71xx.patch b/target/linux/ath79/patches-5.15/316-MIPS-ath79-swizzle-pci-address-for-ar71xx.patch
deleted file mode 100644
index 1e2715b84c..0000000000
--- a/target/linux/ath79/patches-5.15/316-MIPS-ath79-swizzle-pci-address-for-ar71xx.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From: Gabor Juhos <juhosg at openwrt.org>
-Subject: [PATCH] ar71xx: swizzle address for PCI byte/word access on AR71xx
-
-Closes #11683.
-
-SVN-Revision: 32639
----
- .../mips/include/asm/mach-ath79/mangle-port.h | 111 ++++++++++++++++++
- 1 file changed, 111 insertions(+)
- create mode 100644 arch/mips/include/asm/mach-ath79/mangle-port.h
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-ath79/mangle-port.h
-@@ -0,0 +1,37 @@
-+/*
-+ *  Copyright (C) 2012 Gabor Juhos <juhosg at openwrt.org>
-+ *
-+ *  This file was derived from: inlude/asm-mips/mach-generic/mangle-port.h
-+ *      Copyright (C) 2003, 2004 Ralf Baechle
-+ *
-+ *  This program is free software; you can redistribute it and/or modify it
-+ *  under the terms of the GNU General Public License version 2 as published
-+ *  by the Free Software Foundation.
-+ */
-+
-+#ifndef __ASM_MACH_ATH79_MANGLE_PORT_H
-+#define __ASM_MACH_ATH79_MANGLE_PORT_H
-+
-+#ifdef CONFIG_PCI_AR71XX
-+extern unsigned long (ath79_pci_swizzle_b)(unsigned long port);
-+extern unsigned long (ath79_pci_swizzle_w)(unsigned long port);
-+#else
-+#define ath79_pci_swizzle_b(port) (port)
-+#define ath79_pci_swizzle_w(port) (port)
-+#endif
-+
-+#define __swizzle_addr_b(port)	ath79_pci_swizzle_b(port)
-+#define __swizzle_addr_w(port)	ath79_pci_swizzle_w(port)
-+#define __swizzle_addr_l(port)	(port)
-+#define __swizzle_addr_q(port)	(port)
-+
-+# define ioswabb(a, x)           (x)
-+# define __mem_ioswabb(a, x)     (x)
-+# define ioswabw(a, x)           (x)
-+# define __mem_ioswabw(a, x)     cpu_to_le16(x)
-+# define ioswabl(a, x)           (x)
-+# define __mem_ioswabl(a, x)     cpu_to_le32(x)
-+# define ioswabq(a, x)           (x)
-+# define __mem_ioswabq(a, x)     cpu_to_le64(x)
-+
-+#endif /* __ASM_MACH_ATH79_MANGLE_PORT_H */
---- a/arch/mips/pci/pci-ar71xx.c
-+++ b/arch/mips/pci/pci-ar71xx.c
-@@ -68,6 +68,45 @@ static const u32 ar71xx_pci_read_mask[8]
- 	0, 0xff, 0xffff, 0, 0xffffffff, 0, 0, 0
- };
- 
-+static unsigned long (*__ath79_pci_swizzle_b)(unsigned long port);
-+static unsigned long (*__ath79_pci_swizzle_w)(unsigned long port);
-+
-+static inline bool ar71xx_is_pci_addr(unsigned long port)
-+{
-+	unsigned long phys = CPHYSADDR(port);
-+
-+	return (phys >= AR71XX_PCI_MEM_BASE &&
-+		phys < AR71XX_PCI_MEM_BASE + AR71XX_PCI_MEM_SIZE);
-+}
-+
-+static unsigned long ar71xx_pci_swizzle_b(unsigned long port)
-+{
-+	return ar71xx_is_pci_addr(port) ? port ^ 3 : port;
-+}
-+
-+static unsigned long ar71xx_pci_swizzle_w(unsigned long port)
-+{
-+	return ar71xx_is_pci_addr(port) ? port ^ 2 : port;
-+}
-+
-+unsigned long ath79_pci_swizzle_b(unsigned long port)
-+{
-+	if (__ath79_pci_swizzle_b)
-+		return __ath79_pci_swizzle_b(port);
-+
-+	return port;
-+}
-+EXPORT_SYMBOL(ath79_pci_swizzle_b);
-+
-+unsigned long ath79_pci_swizzle_w(unsigned long port)
-+{
-+	if (__ath79_pci_swizzle_w)
-+		return __ath79_pci_swizzle_w(port);
-+
-+	return port;
-+}
-+EXPORT_SYMBOL(ath79_pci_swizzle_w);
-+
- static inline u32 ar71xx_pci_get_ble(int where, int size, int local)
- {
- 	u32 t;
-@@ -275,6 +314,9 @@ static int ar71xx_pci_probe(struct platf
- 
- 	register_pci_controller(&apc->pci_ctrl);
- 
-+	__ath79_pci_swizzle_b = ar71xx_pci_swizzle_b;
-+	__ath79_pci_swizzle_w = ar71xx_pci_swizzle_w;
-+
- 	return 0;
- }
- 
diff --git a/target/linux/ath79/patches-5.15/330-missing-registers.patch b/target/linux/ath79/patches-5.15/330-missing-registers.patch
deleted file mode 100644
index 74789437ec..0000000000
--- a/target/linux/ath79/patches-5.15/330-missing-registers.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-From: Christian Lamparter <chunkeey at gmail.com>
-Subject: [PATCH] ath79: gmac: add parsers for rxd(v)- and tx(d|en)-delay for
-
-    ath79: gmac: add parsers for rxd(v)- and tx(d|en)-delay for AR9344
-
-    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
-
---- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-@@ -1231,6 +1231,10 @@
- #define AR934X_ETH_CFG_RDV_DELAY        BIT(16)
- #define AR934X_ETH_CFG_RDV_DELAY_MASK   0x3
- #define AR934X_ETH_CFG_RDV_DELAY_SHIFT  16
-+#define AR934X_ETH_CFG_TXD_DELAY_MASK   0x3
-+#define AR934X_ETH_CFG_TXD_DELAY_SHIFT  18
-+#define AR934X_ETH_CFG_TXE_DELAY_MASK   0x3
-+#define AR934X_ETH_CFG_TXE_DELAY_SHIFT  20
- 
- /*
-  * QCA953X GMAC Interface
diff --git a/target/linux/ath79/patches-5.15/331-MIPS-ath79-add-missing-QCA955x-GMAC-registers.patch b/target/linux/ath79/patches-5.15/331-MIPS-ath79-add-missing-QCA955x-GMAC-registers.patch
deleted file mode 100644
index c2f228dfe1..0000000000
--- a/target/linux/ath79/patches-5.15/331-MIPS-ath79-add-missing-QCA955x-GMAC-registers.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 60efe35257b063ce584968f9f80b437030ce6ba6 Mon Sep 17 00:00:00 2001
-From: David Bauer <mail at david-bauer.net>
-Date: Mon, 18 Mar 2019 00:54:06 +0100
-Subject: [PATCH] MIPS: ath79: add missing QCA955x GMAC registers
-
-This adds missing GMAC register definitions for the Qualcomm Atheros
-QCA955X series MIPS SoCs.
-
-They originate from the platforms U-Boot code and the AVM FRITZ!WLAN
-Repeater 450E's GPL tarball.
-
-Signed-off-by: David Bauer <mail at david-bauer.net>
----
- .../mips/include/asm/mach-ath79/ar71xx_regs.h | 54 +++++++++++++++++++
- 1 file changed, 54 insertions(+)
-
---- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-@@ -1251,7 +1251,12 @@
-  */
- 
- #define QCA955X_GMAC_REG_ETH_CFG	0x00
-+#define QCA955X_GMAC_REG_SGMII_RESET	0x14
- #define QCA955X_GMAC_REG_SGMII_SERDES	0x18
-+#define QCA955X_GMAC_REG_MR_AN_CONTROL	0x1c
-+#define QCA955X_GMAC_REG_MR_AN_STATUS	0x20
-+#define QCA955X_GMAC_REG_SGMII_CONFIG	0x34
-+#define QCA955X_GMAC_REG_SGMII_DEBUG	0x58
- 
- #define QCA955X_ETH_CFG_RGMII_EN	BIT(0)
- #define QCA955X_ETH_CFG_MII_GE0		BIT(1)
-@@ -1273,9 +1278,58 @@
- #define QCA955X_ETH_CFG_TXE_DELAY_MASK	0x3
- #define QCA955X_ETH_CFG_TXE_DELAY_SHIFT	20
- 
-+#define QCA955X_SGMII_RESET_RX_CLK_N_RESET	0
-+#define QCA955X_SGMII_RESET_RX_CLK_N		BIT(0)
-+#define QCA955X_SGMII_RESET_TX_CLK_N		BIT(1)
-+#define QCA955X_SGMII_RESET_RX_125M_N		BIT(2)
-+#define QCA955X_SGMII_RESET_TX_125M_N		BIT(3)
-+#define QCA955X_SGMII_RESET_HW_RX_125M_N	BIT(4)
-+
- #define QCA955X_SGMII_SERDES_LOCK_DETECT_STATUS	BIT(15)
- #define QCA955X_SGMII_SERDES_RES_CALIBRATION_SHIFT 23
- #define QCA955X_SGMII_SERDES_RES_CALIBRATION_MASK 0xf
-+
-+#define QCA955X_MR_AN_CONTROL_SPEED_SEL1	BIT(6)
-+#define QCA955X_MR_AN_CONTROL_DUPLEX_MODE	BIT(8)
-+#define QCA955X_MR_AN_CONTROL_RESTART_AN	BIT(9)
-+#define QCA955X_MR_AN_CONTROL_POWER_DOWN	BIT(11)
-+#define QCA955X_MR_AN_CONTROL_AN_ENABLE		BIT(12)
-+#define QCA955X_MR_AN_CONTROL_SPEED_SEL0	BIT(13)
-+#define QCA955X_MR_AN_CONTROL_LOOPBACK		BIT(14)
-+#define QCA955X_MR_AN_CONTROL_PHY_RESET		BIT(15)
-+
-+#define QCA955X_MR_AN_STATUS_EXT_CAP		BIT(0)
-+#define QCA955X_MR_AN_STATUS_LINK_UP		BIT(2)
-+#define QCA955X_MR_AN_STATUS_AN_ABILITY		BIT(3)
-+#define QCA955X_MR_AN_STATUS_REMOTE_FAULT	BIT(4)
-+#define QCA955X_MR_AN_STATUS_AN_COMPLETE	BIT(5)
-+#define QCA955X_MR_AN_STATUS_NO_PREAMBLE	BIT(6)
-+#define QCA955X_MR_AN_STATUS_BASE_PAGE		BIT(7)
-+
-+#define QCA955X_SGMII_CONFIG_MODE_CTRL_SHIFT		0
-+#define QCA955X_SGMII_CONFIG_MODE_CTRL_MASK		0x7
-+#define QCA955X_SGMII_CONFIG_ENABLE_SGMII_TX_PAUSE	BIT(3)
-+#define QCA955X_SGMII_CONFIG_MR_REG4_CHANGED		BIT(4)
-+#define QCA955X_SGMII_CONFIG_FORCE_SPEED		BIT(5)
-+#define QCA955X_SGMII_CONFIG_SPEED_SHIFT		6
-+#define QCA955X_SGMII_CONFIG_SPEED_MASK			0xc0
-+#define QCA955X_SGMII_CONFIG_REMOTE_PHY_LOOPBACK	BIT(8)
-+#define QCA955X_SGMII_CONFIG_NEXT_PAGE_LOADED		BIT(9)
-+#define QCA955X_SGMII_CONFIG_MDIO_ENABLE		BIT(10)
-+#define QCA955X_SGMII_CONFIG_MDIO_PULSE			BIT(11)
-+#define QCA955X_SGMII_CONFIG_MDIO_COMPLETE		BIT(12)
-+#define QCA955X_SGMII_CONFIG_PRBS_ENABLE		BIT(13)
-+#define QCA955X_SGMII_CONFIG_BERT_ENABLE		BIT(14)
-+
-+#define QCA955X_SGMII_DEBUG_TX_STATE_MASK	0xff
-+#define QCA955X_SGMII_DEBUG_TX_STATE_SHIFT	0
-+#define QCA955X_SGMII_DEBUG_RX_STATE_MASK	0xff00
-+#define QCA955X_SGMII_DEBUG_RX_STATE_SHIFT	8
-+#define QCA955X_SGMII_DEBUG_RX_SYNC_STATE_MASK	0xff0000
-+#define QCA955X_SGMII_DEBUG_RX_SYNC_STATE_SHIFT	16
-+#define QCA955X_SGMII_DEBUG_ARB_STATE_MASK	0xf000000
-+#define QCA955X_SGMII_DEBUG_ARB_STATE_SHIFT	24
-+
- /*
-  * QCA956X GMAC Interface
-  */
diff --git a/target/linux/ath79/patches-5.15/332-ath79-sgmii-config.patch b/target/linux/ath79/patches-5.15/332-ath79-sgmii-config.patch
deleted file mode 100644
index a6a50e4a8a..0000000000
--- a/target/linux/ath79/patches-5.15/332-ath79-sgmii-config.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From: David Bauer <mail at david-bauer.net>
-Subject: [PATCH] ath79: force SGMII SerDes mode to MAC operation
-
-The mode on the SGMII SerDes on the QCA9563 is 1000 Base-X by default.
-This only allows for 1000 Mbit/s links, however when used with an SGMII
-PHY in 100 Mbit/s link mode, the link remains dead.
-
-This strictly has nothing to do with the SerDes calibration, however it
-is done at the same point in the QCA reference U-Boot which is the
-blueprint for everything happening here. As the current state is more or
-less a hack, this should be fine.
-
-This fixes the issues outlined above on a TP-Link EAP-225 Outdoor.
-
-Reported-by: Tom Herbers <freifunk at tomherbers.de>
-Tested-by: Tom Herbers <freifunk at tomherbers.de>
-Submitted-by: David Bauer <mail at david-bauer.net>
----
- arch/mips/include/asm/mach-ath79/ar71xx_regs.h           | 1 +
- 1 files changed, 1 insertion(+)
-
---- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-@@ -1380,5 +1380,6 @@
- 
- #define QCA956X_SGMII_CONFIG_MODE_CTRL_SHIFT	0
- #define QCA956X_SGMII_CONFIG_MODE_CTRL_MASK	0x7
-+#define QCA956X_SGMII_CONFIG_MODE_CTRL_SGMII_MAC	0x2
- 
- #endif /* __ASM_MACH_AR71XX_REGS_H */
diff --git a/target/linux/ath79/patches-5.15/340-register_gpio_driver_earlier.patch b/target/linux/ath79/patches-5.15/340-register_gpio_driver_earlier.patch
deleted file mode 100644
index a8680ceac4..0000000000
--- a/target/linux/ath79/patches-5.15/340-register_gpio_driver_earlier.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From: John Crispin <john at phrozen.org>
-Subject: ath79: Register GPIO driver earlier
-
-HACK: register the GPIO driver earlier to ensure that gpio_request calls
-from mach files succeed.
-
-Submitted-by: John Crispin <john at phrozen.org>
----
- drivers/gpio/gpio-ath79.c                     | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
---- a/drivers/gpio/gpio-ath79.c
-+++ b/drivers/gpio/gpio-ath79.c
-@@ -297,7 +297,11 @@ static struct platform_driver ath79_gpio
- 	.probe = ath79_gpio_probe,
- };
- 
--module_platform_driver(ath79_gpio_driver);
-+static int __init ath79_gpio_init(void)
-+{
-+	return platform_driver_register(&ath79_gpio_driver);
-+}
-+postcore_initcall(ath79_gpio_init);
- 
- MODULE_DESCRIPTION("Atheros AR71XX/AR724X/AR913X GPIO API support");
- MODULE_LICENSE("GPL v2");
diff --git a/target/linux/ath79/patches-5.15/350-MIPS-ath79-ath9k-exports.patch b/target/linux/ath79/patches-5.15/350-MIPS-ath79-ath9k-exports.patch
deleted file mode 100644
index e460fe58f3..0000000000
--- a/target/linux/ath79/patches-5.15/350-MIPS-ath79-ath9k-exports.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: John Crispin <john at phrozen.org>
-Subject: [PATCH] ath79: make ahb wifi work
-
-Submitted-by: John Crispin <john at phrozen.org>
----
- arch/mips/ath79/common.c                      | 3 +++
- mips/include/asm/mach-ath79/ath79.h           | 1+
- 1 file changed, 4 insertions(+)
-
---- a/arch/mips/ath79/common.c
-+++ b/arch/mips/ath79/common.c
-@@ -31,11 +31,13 @@ EXPORT_SYMBOL_GPL(ath79_ddr_freq);
- 
- enum ath79_soc_type ath79_soc;
- unsigned int ath79_soc_rev;
-+EXPORT_SYMBOL_GPL(ath79_soc_rev);
- 
- void __iomem *ath79_pll_base;
- void __iomem *ath79_reset_base;
- EXPORT_SYMBOL_GPL(ath79_reset_base);
--static void __iomem *ath79_ddr_base;
-+void __iomem *ath79_ddr_base;
-+EXPORT_SYMBOL_GPL(ath79_ddr_base);
- static void __iomem *ath79_ddr_wb_flush_base;
- static void __iomem *ath79_ddr_pci_win_base;
- 
---- a/arch/mips/include/asm/mach-ath79/ath79.h
-+++ b/arch/mips/include/asm/mach-ath79/ath79.h
-@@ -149,6 +149,7 @@ void ath79_ddr_wb_flush(unsigned int reg
- void ath79_ddr_set_pci_windows(void);
- 
- extern void __iomem *ath79_pll_base;
-+extern void __iomem *ath79_ddr_base;
- extern void __iomem *ath79_reset_base;
- 
- static inline void ath79_pll_wr(unsigned reg, u32 val)
diff --git a/target/linux/ath79/patches-5.15/351-MIPS-ath79-common-exports.patch b/target/linux/ath79/patches-5.15/351-MIPS-ath79-common-exports.patch
deleted file mode 100644
index befcf2d50f..0000000000
--- a/target/linux/ath79/patches-5.15/351-MIPS-ath79-common-exports.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From: Luiz Angelo Daros de Luca <luizluca at gmail.com>
-Subject: [PATCH] ath79: export ath79_pll_base
-
-This symbol is declared as extern but nobody exported it.
-Any module including arch/mips/include/asm/mach-ath79/ath79.h
-will not build. Without this export, ag71xx.ko will not build
-as a module and the build will fail like this:
-
-ERROR: modpost: "ath79_pll_base" [drivers/net/ethernet/atheros/ag71xx/ag71xx.ko] undefined!
-
-The ath79_pll_base symbol is accessed in the ath79_pll_wr() inline function.
-
----
- arch/mips/ath79/common.c                      | 1 +
- 1 file changed, 1 insertions(+)
-
---- a/arch/mips/ath79/common.c
-+++ b/arch/mips/ath79/common.c
-@@ -34,6 +34,7 @@ unsigned int ath79_soc_rev;
- EXPORT_SYMBOL_GPL(ath79_soc_rev);
- 
- void __iomem *ath79_pll_base;
-+EXPORT_SYMBOL_GPL(ath79_pll_base);
- void __iomem *ath79_reset_base;
- EXPORT_SYMBOL_GPL(ath79_reset_base);
- void __iomem *ath79_ddr_base;
diff --git a/target/linux/ath79/patches-5.15/360-MIPS-ath79-export-UART1-reference-clock.patch b/target/linux/ath79/patches-5.15/360-MIPS-ath79-export-UART1-reference-clock.patch
deleted file mode 100644
index b24ff21692..0000000000
--- a/target/linux/ath79/patches-5.15/360-MIPS-ath79-export-UART1-reference-clock.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From: Daniel Golle <daniel at makrotopia.org>
-Subject: [PATCH] ath79: add support for Atheros AR934x HS UART
-
-AR934x chips also got the 'old' qca,ar9330-uart in addition to the
-'new' ns16550a compatible one. Add support for UART1 clock selector as
-well as device-tree bindings in ar934x.dtsi to make use of that uart.
-
-Reported-by: Piotr Dymacz <pepe2k at gmail.com>
-Submitted-by: Daniel Golle <daniel at makrotopia.org>
----
- arch/mips/ath79/clock.c                       | 7 +++++++
- .../mips/include/asm/mach-ath79/ar71xx_regs.h | 1 +
- include/dt-bindings/clock/ath79-clk.h         | 3 ++-
- 3 files changed, 10 insertions(+), 1 deletion(-)
-
---- a/arch/mips/ath79/clock.c
-+++ b/arch/mips/ath79/clock.c
-@@ -40,6 +40,7 @@ static const char * const clk_names[ATH7
- 	[ATH79_CLK_AHB] = "ahb",
- 	[ATH79_CLK_REF] = "ref",
- 	[ATH79_CLK_MDIO] = "mdio",
-+	[ATH79_CLK_UART1] = "uart1",
- };
- 
- static const char * __init ath79_clk_name(int type)
-@@ -344,6 +345,9 @@ static void __init ar934x_clocks_init(vo
- 	if (clk_ctrl & AR934X_PLL_SWITCH_CLOCK_CONTROL_MDIO_CLK_SEL)
- 		ath79_set_clk(ATH79_CLK_MDIO, 100 * 1000 * 1000);
- 
-+	if (clk_ctrl & AR934X_PLL_SWITCH_CLOCK_CONTROL_UART1_CLK_SEL)
-+		ath79_set_clk(ATH79_CLK_UART1, 100 * 1000 * 1000);
-+
- 	iounmap(dpll_base);
- }
- 
-@@ -649,6 +653,9 @@ static void __init ath79_clocks_init_dt(
- 	if (!clks[ATH79_CLK_MDIO])
- 		clks[ATH79_CLK_MDIO] = clks[ATH79_CLK_REF];
- 
-+	if (!clks[ATH79_CLK_UART1])
-+		clks[ATH79_CLK_UART1] = clks[ATH79_CLK_REF];
-+
- 	if (of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data)) {
- 		pr_err("%pOF: could not register clk provider\n", np);
- 		goto err_iounmap;
---- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
-@@ -348,6 +348,7 @@
- #define AR934X_PLL_CPU_DDR_CLK_CTRL_AHBCLK_FROM_DDRPLL	BIT(24)
- 
- #define AR934X_PLL_SWITCH_CLOCK_CONTROL_MDIO_CLK_SEL	BIT(6)
-+#define AR934X_PLL_SWITCH_CLOCK_CONTROL_UART1_CLK_SEL	BIT(7)
- 
- #define QCA953X_PLL_CPU_CONFIG_REG		0x00
- #define QCA953X_PLL_DDR_CONFIG_REG		0x04
---- a/include/dt-bindings/clock/ath79-clk.h
-+++ b/include/dt-bindings/clock/ath79-clk.h
-@@ -11,7 +11,8 @@
- #define ATH79_CLK_AHB		2
- #define ATH79_CLK_REF		3
- #define ATH79_CLK_MDIO		4
-+#define ATH79_CLK_UART1		5
- 
--#define ATH79_CLK_END		5
-+#define ATH79_CLK_END		6
- 
- #endif /* __DT_BINDINGS_ATH79_CLK_H */
diff --git a/target/linux/ath79/patches-5.15/370-MIPS-ath79-sanitize-symbols.patch b/target/linux/ath79/patches-5.15/370-MIPS-ath79-sanitize-symbols.patch
deleted file mode 100644
index 5eb23ba6c6..0000000000
--- a/target/linux/ath79/patches-5.15/370-MIPS-ath79-sanitize-symbols.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 3fc8585cf76022dba7496627074d42af88c30718 Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Sat, 23 Jun 2018 15:16:55 +0200
-Subject: [PATCH 32/33] MIPS: ath79: sanitize symbols
-
-We no longer need to select which SoCs are supported as the whole arch
-code is always built. So lets drop all the SoC symbols
-
-Signed-off-by: John Crispin <john at phrozen.org>
----
- arch/mips/Kconfig       |  2 ++
- arch/mips/ath79/Kconfig | 44 +++++---------------------------------------
- arch/mips/pci/Makefile  |  2 +-
- 3 files changed, 8 insertions(+), 40 deletions(-)
-
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -258,6 +258,8 @@ config ATH79
- 	select SYS_SUPPORTS_BIG_ENDIAN
- 	select SYS_SUPPORTS_MIPS16
- 	select SYS_SUPPORTS_ZBOOT_UART_PROM
-+	select HAVE_PCI
-+	select USB_ARCH_HAS_EHCI
- 	select USE_OF
- 	select USB_EHCI_ROOT_HUB_TT if USB_EHCI_HCD_PLATFORM
- 	help
---- a/arch/mips/ath79/Kconfig
-+++ b/arch/mips/ath79/Kconfig
-@@ -1,48 +1,14 @@
- # SPDX-License-Identifier: GPL-2.0
- if ATH79
- 
--config SOC_AR71XX
--	select HAVE_PCI
--	def_bool n
--
--config SOC_AR724X
--	select HAVE_PCI
--	select PCI_AR724X if PCI
--	def_bool n
--
--config SOC_AR913X
--	def_bool n
--
--config SOC_AR933X
--	def_bool n
--
--config SOC_AR934X
--	select HAVE_PCI
--	select PCI_AR724X if PCI
--	def_bool n
--
--config SOC_QCA955X
--	select HAVE_PCI
--	select PCI_AR724X if PCI
-+config PCI_AR71XX
-+	bool "PCI support for AR7100 type SoCs"
-+	depends on PCI
- 	def_bool n
- 
- config PCI_AR724X
--	def_bool n
--
--config ATH79_DEV_GPIO_BUTTONS
--	def_bool n
--
--config ATH79_DEV_LEDS_GPIO
--	def_bool n
--
--config ATH79_DEV_SPI
--	def_bool n
--
--config ATH79_DEV_USB
--	def_bool n
--
--config ATH79_DEV_WMAC
--	depends on (SOC_AR913X || SOC_AR933X || SOC_AR934X || SOC_QCA955X)
-+	bool "PCI support for AR724x type SoCs"
-+	depends on PCI
- 	def_bool n
- 
- endif
---- a/arch/mips/pci/Makefile
-+++ b/arch/mips/pci/Makefile
-@@ -21,7 +21,7 @@ obj-$(CONFIG_BCM63XX)		+= pci-bcm63xx.o
- 					ops-bcm63xx.o
- obj-$(CONFIG_MIPS_ALCHEMY)	+= pci-alchemy.o
- obj-$(CONFIG_PCI_AR2315)	+= pci-ar2315.o
--obj-$(CONFIG_SOC_AR71XX)	+= pci-ar71xx.o
-+obj-$(CONFIG_PCI_AR71XX)	+= pci-ar71xx.o
- obj-$(CONFIG_PCI_AR724X)	+= pci-ar724x.o
- obj-$(CONFIG_PCI_XTALK_BRIDGE)	+= pci-xtalk-bridge.o
- #
diff --git a/target/linux/ath79/patches-5.15/400-mtd-nor-support-mtd-name-from-device-tree.patch b/target/linux/ath79/patches-5.15/400-mtd-nor-support-mtd-name-from-device-tree.patch
deleted file mode 100644
index 36f5331bd0..0000000000
--- a/target/linux/ath79/patches-5.15/400-mtd-nor-support-mtd-name-from-device-tree.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From f32bc2aa01edcba2f2ed5db151cf183eac9ef919 Mon Sep 17 00:00:00 2001
-From: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma at imgtec.com>
-Date: Sat, 25 Feb 2017 16:42:50 +0000
-Subject: mtd: nor: support mtd name from device tree
-
-Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma at imgtec.com>
----
- drivers/mtd/spi-nor/spi-nor.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
---- a/drivers/mtd/spi-nor/core.c
-+++ b/drivers/mtd/spi-nor/core.c
-@@ -3108,6 +3108,7 @@ int spi_nor_scan(struct spi_nor *nor, co
- 	struct device *dev = nor->dev;
- 	struct mtd_info *mtd = &nor->mtd;
- 	struct device_node *np = spi_nor_get_flash_node(nor);
-+	const char __maybe_unused *of_mtd_name = NULL;
- 	int ret;
- 	int i;
- 
-@@ -3162,7 +3163,12 @@ int spi_nor_scan(struct spi_nor *nor, co
- 	if (ret)
- 		return ret;
- 
--	if (!mtd->name)
-+#ifdef CONFIG_MTD_OF_PARTS
-+	of_property_read_string(np, "linux,mtd-name", &of_mtd_name);
-+#endif
-+	if (of_mtd_name)
-+		mtd->name = of_mtd_name;
-+	else if (!mtd->name)
- 		mtd->name = dev_name(dev);
- 	mtd->priv = nor;
- 	mtd->type = MTD_NORFLASH;
---- a/drivers/mtd/mtdcore.c
-+++ b/drivers/mtd/mtdcore.c
-@@ -870,6 +870,17 @@ out_error:
-  */
- static void mtd_set_dev_defaults(struct mtd_info *mtd)
- {
-+#ifdef CONFIG_MTD_OF_PARTS
-+	const char __maybe_unused *of_mtd_name = NULL;
-+	struct device_node *np;
-+
-+	np = mtd_get_of_node(mtd);
-+	if (np && !mtd->name) {
-+		of_property_read_string(np, "linux,mtd-name", &of_mtd_name);
-+		if (of_mtd_name)
-+			mtd->name = of_mtd_name;
-+	} else
-+#endif
- 	if (mtd->dev.parent) {
- 		if (!mtd->owner && mtd->dev.parent->driver)
- 			mtd->owner = mtd->dev.parent->driver->owner;
diff --git a/target/linux/ath79/patches-5.15/410-mtd-cybertan-trx-parser.patch b/target/linux/ath79/patches-5.15/410-mtd-cybertan-trx-parser.patch
deleted file mode 100644
index 4e8e536e29..0000000000
--- a/target/linux/ath79/patches-5.15/410-mtd-cybertan-trx-parser.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Christian Lamparter <chunkeey at gmail.com>
-Subject: [PATCH] ath79: port cybertan_part from ar71xx
-
-This patch ports the cybertan_part code from ar71xx and converts the
-driver to a DT-supported mtd parser. As a result, it will no longer
-add the u-boot, nvram and art partitions, which were never part of
-the special Cybertan header.
-
-Instead these partitions have to be specified in the DT, which has the
-upside of making it possible to add properties (i.e.: read-only), labels
-and references to these important partitions.
-
-Submitted-by: Christian Lamparter <chunkeey at gmail.com>
----
- drivers/mtd/parsers/Makefile                  | 1 +
- drivers/mtd/parsers/Kconfig                   | 8 ++++++++
- 2 files changed, 9 insertions(+)
-
---- a/drivers/mtd/parsers/Makefile
-+++ b/drivers/mtd/parsers/Makefile
-@@ -8,6 +8,7 @@ obj-$(CONFIG_MTD_OF_PARTS)		+= ofpart.o
- ofpart-y				+= ofpart_core.o
- ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908)	+= ofpart_bcm4908.o
- ofpart-$(CONFIG_MTD_OF_PARTS_LINKSYS_NS)+= ofpart_linksys_ns.o
-+obj-$(CONFIG_MTD_PARSER_CYBERTAN)	+= parser_cybertan.o
- obj-$(CONFIG_MTD_PARSER_IMAGETAG)	+= parser_imagetag.o
- obj-$(CONFIG_MTD_AFS_PARTS)		+= afs.o
- obj-$(CONFIG_MTD_PARSER_TPLINK_SAFELOADER)	+= tplink_safeloader.o
---- a/drivers/mtd/parsers/Kconfig
-+++ b/drivers/mtd/parsers/Kconfig
-@@ -102,6 +102,14 @@ config MTD_OF_PARTS_LINKSYS_NS
- 	  two "firmware" partitions. Currently used firmware has to be detected
- 	  using CFE environment variable.
- 
-+config MTD_PARSER_CYBERTAN
-+	tristate "Parser for Cybertan format partitions"
-+	depends on MTD && (ATH79 || COMPILE_TEST)
-+	help
-+	  Cybertan has a proprietory header than encompasses a Broadcom trx
-+	  header. This driver will parse the header and take care of the
-+	  special offsets that result in the extra headers.
-+
- config MTD_PARSER_IMAGETAG
- 	tristate "Parser for BCM963XX Image Tag format partitions"
- 	depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
diff --git a/target/linux/ath79/patches-5.15/420-drivers-link-spi-before-mtd.patch b/target/linux/ath79/patches-5.15/420-drivers-link-spi-before-mtd.patch
deleted file mode 100644
index 0cd96909eb..0000000000
--- a/target/linux/ath79/patches-5.15/420-drivers-link-spi-before-mtd.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-From: Gabor Juhos <juhosg at openwrt.org>
-Subject: [PATCH] ar71xx: Link SPI before MTD
-
-SVN-Revision: 22863
----
- drivers/Makefile                              |   2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/Makefile
-+++ b/drivers/Makefile
-@@ -80,8 +80,8 @@ obj-y				+= scsi/
- obj-y				+= nvme/
- obj-$(CONFIG_ATA)		+= ata/
- obj-$(CONFIG_TARGET_CORE)	+= target/
--obj-$(CONFIG_MTD)		+= mtd/
- obj-$(CONFIG_SPI)		+= spi/
-+obj-$(CONFIG_MTD)		+= mtd/
- obj-$(CONFIG_SPMI)		+= spmi/
- obj-$(CONFIG_HSI)		+= hsi/
- obj-$(CONFIG_SLIMBUS)		+= slimbus/
diff --git a/target/linux/ath79/patches-5.15/430-mtd-ar934x-nand-driver.patch b/target/linux/ath79/patches-5.15/430-mtd-ar934x-nand-driver.patch
deleted file mode 100644
index 63bc98e14c..0000000000
--- a/target/linux/ath79/patches-5.15/430-mtd-ar934x-nand-driver.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Gabor Juhos <juhosg at openwrt.org>
-Subject: ar71xx: ar934x_nfc: experimental NAND Flash Controller driver for AR934x
-
-SVN-Revision: 33385
----
- drivers/mtd/nand/raw/Kconfig                  | 8 ++++++++
- drivers/mtd/nand/raw/Makefile                 | 1 +
- 2 files changed, 9 insertions(+)
-
---- a/drivers/mtd/nand/raw/Kconfig
-+++ b/drivers/mtd/nand/raw/Kconfig
-@@ -555,4 +555,12 @@ config MTD_NAND_DISKONCHIP_BBTWRITE
- 	  load time (assuming you build diskonchip as a module) with the module
- 	  parameter "inftl_bbt_write=1".
- 
-+config MTD_NAND_AR934X
-+	tristate "Support for NAND controller on Qualcomm Atheros AR934x/QCA955x SoCs"
-+	depends on ATH79 || COMPILE_TEST
-+	depends on HAS_IOMEM
-+	help
-+	  Enables support for NAND controller on Qualcomm Atheros SoCs.
-+	  This controller is found on AR934x and QCA955x SoCs.
-+
- endif # MTD_RAW_NAND
---- a/drivers/mtd/nand/raw/Makefile
-+++ b/drivers/mtd/nand/raw/Makefile
-@@ -58,6 +58,7 @@ obj-$(CONFIG_MTD_NAND_ARASAN)		+= arasan
- obj-$(CONFIG_MTD_NAND_INTEL_LGM)	+= intel-nand-controller.o
- obj-$(CONFIG_MTD_NAND_ROCKCHIP)		+= rockchip-nand-controller.o
- obj-$(CONFIG_MTD_NAND_PL35X)		+= pl35x-nand-controller.o
-+obj-$(CONFIG_MTD_NAND_AR934X)		+= ar934x_nand.o
- 
- nand-objs := nand_base.o nand_legacy.o nand_bbt.o nand_timings.o nand_ids.o
- nand-objs += nand_onfi.o
diff --git a/target/linux/ath79/patches-5.15/700-phy-add-ath79-usb-phys.patch b/target/linux/ath79/patches-5.15/700-phy-add-ath79-usb-phys.patch
deleted file mode 100644
index 21b655a109..0000000000
--- a/target/linux/ath79/patches-5.15/700-phy-add-ath79-usb-phys.patch
+++ /dev/null
@@ -1,333 +0,0 @@
-From 08c9d6ceef01893678a5d2e8a15517c745417f21 Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Tue, 6 Mar 2018 10:04:05 +0100
-Subject: [PATCH 04/27] phy: add ath79 usb phys
-
-Signed-off-by: John Crispin <john at phrozen.org>
----
- drivers/phy/Kconfig          |  16 ++++++
- drivers/phy/Makefile         |   2 +
- drivers/phy/phy-ar7100-usb.c | 124 +++++++++++++++++++++++++++++++++++++++++++
- drivers/phy/phy-ar7200-usb.c | 108 +++++++++++++++++++++++++++++++++++++
- 4 files changed, 250 insertions(+)
- create mode 100644 drivers/phy/phy-ar7100-usb.c
- create mode 100644 drivers/phy/phy-ar7200-usb.c
-
---- a/drivers/phy/Kconfig
-+++ b/drivers/phy/Kconfig
-@@ -24,6 +24,22 @@ config GENERIC_PHY_MIPI_DPHY
- 	  Provides a number of helpers a core functions for MIPI D-PHY
- 	  drivers to us.
- 
-+config PHY_AR7100_USB
-+	tristate "Atheros AR7100 USB PHY driver"
-+	depends on ATH79 || COMPILE_TEST
-+	default y if USB_EHCI_HCD_PLATFORM
-+	select GENERIC_PHY
-+	help
-+	  Enable this to support the USB PHY on Atheros AR7100 SoCs.
-+
-+config PHY_AR7200_USB
-+	tristate "Atheros AR7200 USB PHY driver"
-+	depends on ATH79 || COMPILE_TEST
-+	default y if USB_EHCI_HCD_PLATFORM
-+	select GENERIC_PHY
-+	help
-+	  Enable this to support the USB PHY on Atheros AR7200 SoCs.
-+
- config PHY_LPC18XX_USB_OTG
- 	tristate "NXP LPC18xx/43xx SoC USB OTG PHY driver"
- 	depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
---- a/drivers/phy/Makefile
-+++ b/drivers/phy/Makefile
-@@ -4,6 +4,8 @@
- #
- 
- obj-$(CONFIG_GENERIC_PHY)		+= phy-core.o
-+obj-$(CONFIG_PHY_AR7100_USB)		+= phy-ar7100-usb.o
-+obj-$(CONFIG_PHY_AR7200_USB)		+= phy-ar7200-usb.o
- obj-$(CONFIG_GENERIC_PHY_MIPI_DPHY)	+= phy-core-mipi-dphy.o
- obj-$(CONFIG_PHY_CAN_TRANSCEIVER)	+= phy-can-transceiver.o
- obj-$(CONFIG_PHY_LPC18XX_USB_OTG)	+= phy-lpc18xx-usb-otg.o
---- /dev/null
-+++ b/drivers/phy/phy-ar7100-usb.c
-@@ -0,0 +1,140 @@
-+/*
-+ * Copyright (C) 2018 John Crispin <john at phrozen.org>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/phy/phy.h>
-+#include <linux/delay.h>
-+#include <linux/reset.h>
-+#include <linux/of_gpio.h>
-+
-+#include <asm/mach-ath79/ath79.h>
-+#include <asm/mach-ath79/ar71xx_regs.h>
-+
-+struct ar7100_usb_phy {
-+	struct reset_control	*rst_phy;
-+	struct reset_control	*rst_host;
-+	struct reset_control	*rst_ohci_dll;
-+	void __iomem		*io_base;
-+	struct phy		*phy;
-+	int			gpio;
-+};
-+
-+static int ar7100_usb_phy_power_off(struct phy *phy)
-+{
-+	struct ar7100_usb_phy *priv = phy_get_drvdata(phy);
-+	int err = 0;
-+
-+	err |= reset_control_assert(priv->rst_host);
-+	err |= reset_control_assert(priv->rst_phy);
-+	err |= reset_control_assert(priv->rst_ohci_dll);
-+
-+	return err;
-+}
-+
-+static int ar7100_usb_phy_power_on(struct phy *phy)
-+{
-+	struct ar7100_usb_phy *priv = phy_get_drvdata(phy);
-+	int err = 0;
-+
-+	err |= ar7100_usb_phy_power_off(phy);
-+	mdelay(100);
-+	err |= reset_control_deassert(priv->rst_ohci_dll);
-+	err |= reset_control_deassert(priv->rst_phy);
-+	err |= reset_control_deassert(priv->rst_host);
-+	mdelay(500);
-+	iowrite32(0xf0000, priv->io_base + AR71XX_USB_CTRL_REG_CONFIG);
-+	iowrite32(0x20c00, priv->io_base + AR71XX_USB_CTRL_REG_FLADJ);
-+
-+	return err;
-+}
-+
-+static const struct phy_ops ar7100_usb_phy_ops = {
-+	.power_on	= ar7100_usb_phy_power_on,
-+	.power_off	= ar7100_usb_phy_power_off,
-+	.owner		= THIS_MODULE,
-+};
-+
-+static int ar7100_usb_phy_probe(struct platform_device *pdev)
-+{
-+	struct phy_provider *phy_provider;
-+	struct resource *res;
-+	struct ar7100_usb_phy *priv;
-+
-+	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
-+	if (!priv)
-+		return -ENOMEM;
-+
-+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+	priv->io_base = devm_ioremap_resource(&pdev->dev, res);
-+	if (IS_ERR(priv->io_base))
-+		return PTR_ERR(priv->io_base);
-+
-+	priv->rst_phy = devm_reset_control_get(&pdev->dev, "usb-phy");
-+	if (IS_ERR(priv->rst_phy)) {
-+		dev_err(&pdev->dev, "phy reset is missing\n");
-+		return PTR_ERR(priv->rst_phy);
-+	}
-+
-+	priv->rst_host = devm_reset_control_get(&pdev->dev, "usb-host");
-+	if (IS_ERR(priv->rst_host)) {
-+		dev_err(&pdev->dev, "host reset is missing\n");
-+		return PTR_ERR(priv->rst_host);
-+	}
-+
-+	priv->rst_ohci_dll = devm_reset_control_get(&pdev->dev, "usb-ohci-dll");
-+	if (IS_ERR(priv->rst_ohci_dll)) {
-+		dev_err(&pdev->dev, "ohci-dll reset is missing\n");
-+		return PTR_ERR(priv->rst_host);
-+	}
-+
-+	priv->phy = devm_phy_create(&pdev->dev, NULL, &ar7100_usb_phy_ops);
-+	if (IS_ERR(priv->phy)) {
-+		dev_err(&pdev->dev, "failed to create PHY\n");
-+		return PTR_ERR(priv->phy);
-+	}
-+
-+	priv->gpio = of_get_gpio(pdev->dev.of_node, 0);
-+	if (priv->gpio >= 0) {
-+		int ret = devm_gpio_request(&pdev->dev, priv->gpio, dev_name(&pdev->dev));
-+
-+		if (ret) {
-+			dev_err(&pdev->dev, "failed to request gpio\n");
-+			return ret;
-+		}
-+		gpio_export_with_name(priv->gpio, 0, dev_name(&pdev->dev));
-+		gpio_set_value(priv->gpio, 1);
-+	}
-+
-+	phy_set_drvdata(priv->phy, priv);
-+
-+	phy_provider = devm_of_phy_provider_register(&pdev->dev, of_phy_simple_xlate);
-+
-+
-+	return PTR_ERR_OR_ZERO(phy_provider);
-+}
-+
-+static const struct of_device_id ar7100_usb_phy_of_match[] = {
-+	{ .compatible = "qca,ar7100-usb-phy" },
-+	{}
-+};
-+MODULE_DEVICE_TABLE(of, ar7100_usb_phy_of_match);
-+
-+static struct platform_driver ar7100_usb_phy_driver = {
-+	.probe	= ar7100_usb_phy_probe,
-+	.driver = {
-+		.of_match_table	= ar7100_usb_phy_of_match,
-+		.name		= "ar7100-usb-phy",
-+	}
-+};
-+module_platform_driver(ar7100_usb_phy_driver);
-+
-+MODULE_DESCRIPTION("ATH79 USB PHY driver");
-+MODULE_AUTHOR("Alban Bedel <albeu at free.fr>");
-+MODULE_LICENSE("GPL");
---- /dev/null
-+++ b/drivers/phy/phy-ar7200-usb.c
-@@ -0,0 +1,136 @@
-+/*
-+ * Copyright (C) 2015 Alban Bedel <albeu at free.fr>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/phy/phy.h>
-+#include <linux/reset.h>
-+#include <linux/of_gpio.h>
-+
-+struct ar7200_usb_phy {
-+	struct reset_control	*rst_phy;
-+	struct reset_control	*rst_phy_analog;
-+	struct reset_control	*suspend_override;
-+	struct phy		*phy;
-+	int			gpio;
-+};
-+
-+static int ar7200_usb_phy_power_on(struct phy *phy)
-+{
-+	struct ar7200_usb_phy *priv = phy_get_drvdata(phy);
-+	int err = 0;
-+
-+	if (priv->suspend_override)
-+		err = reset_control_assert(priv->suspend_override);
-+	if (priv->rst_phy)
-+		err |= reset_control_deassert(priv->rst_phy);
-+	if (priv->rst_phy_analog)
-+		err |= reset_control_deassert(priv->rst_phy_analog);
-+
-+	return err;
-+}
-+
-+static int ar7200_usb_phy_power_off(struct phy *phy)
-+{
-+	struct ar7200_usb_phy *priv = phy_get_drvdata(phy);
-+	int err = 0;
-+
-+	if (priv->suspend_override)
-+		err = reset_control_deassert(priv->suspend_override);
-+	if (priv->rst_phy)
-+		err |= reset_control_assert(priv->rst_phy);
-+	if (priv->rst_phy_analog)
-+		err |= reset_control_assert(priv->rst_phy_analog);
-+
-+	return err;
-+}
-+
-+static const struct phy_ops ar7200_usb_phy_ops = {
-+	.power_on	= ar7200_usb_phy_power_on,
-+	.power_off	= ar7200_usb_phy_power_off,
-+	.owner		= THIS_MODULE,
-+};
-+
-+static int ar7200_usb_phy_probe(struct platform_device *pdev)
-+{
-+	struct phy_provider *phy_provider;
-+	struct ar7200_usb_phy *priv;
-+
-+	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
-+	if (!priv)
-+		return -ENOMEM;
-+
-+	priv->rst_phy = devm_reset_control_get(&pdev->dev, "usb-phy");
-+	if (IS_ERR(priv->rst_phy)) {
-+		if (PTR_ERR(priv->rst_phy) != -EPROBE_DEFER)
-+			dev_err(&pdev->dev, "phy reset is missing\n");
-+		return PTR_ERR(priv->rst_phy);
-+	}
-+
-+	priv->rst_phy_analog = devm_reset_control_get_optional(
-+		&pdev->dev, "usb-phy-analog");
-+	if (IS_ERR(priv->rst_phy_analog)) {
-+		if (PTR_ERR(priv->rst_phy_analog) == -ENOENT)
-+			priv->rst_phy_analog = NULL;
-+		else
-+			return PTR_ERR(priv->rst_phy_analog);
-+	}
-+
-+	priv->suspend_override = devm_reset_control_get_optional(
-+		&pdev->dev, "usb-suspend-override");
-+	if (IS_ERR(priv->suspend_override)) {
-+		if (PTR_ERR(priv->suspend_override) == -ENOENT)
-+			priv->suspend_override = NULL;
-+		else
-+			return PTR_ERR(priv->suspend_override);
-+	}
-+
-+	priv->phy = devm_phy_create(&pdev->dev, NULL, &ar7200_usb_phy_ops);
-+	if (IS_ERR(priv->phy)) {
-+		dev_err(&pdev->dev, "failed to create PHY\n");
-+		return PTR_ERR(priv->phy);
-+	}
-+
-+	priv->gpio = of_get_gpio(pdev->dev.of_node, 0);
-+	if (priv->gpio >= 0) {
-+		int ret = devm_gpio_request(&pdev->dev, priv->gpio, dev_name(&pdev->dev));
-+
-+		if (ret) {
-+			dev_err(&pdev->dev, "failed to request gpio\n");
-+			return ret;
-+		}
-+		gpio_export_with_name(priv->gpio, 0, dev_name(&pdev->dev));
-+		gpio_set_value(priv->gpio, 1);
-+	}
-+
-+	phy_set_drvdata(priv->phy, priv);
-+
-+	phy_provider = devm_of_phy_provider_register(&pdev->dev, of_phy_simple_xlate);
-+
-+	return PTR_ERR_OR_ZERO(phy_provider);
-+}
-+
-+static const struct of_device_id ar7200_usb_phy_of_match[] = {
-+	{ .compatible = "qca,ar7200-usb-phy" },
-+	{}
-+};
-+MODULE_DEVICE_TABLE(of, ar7200_usb_phy_of_match);
-+
-+static struct platform_driver ar7200_usb_phy_driver = {
-+	.probe	= ar7200_usb_phy_probe,
-+	.driver = {
-+		.of_match_table	= ar7200_usb_phy_of_match,
-+		.name		= "ar7200-usb-phy",
-+	}
-+};
-+module_platform_driver(ar7200_usb_phy_driver);
-+
-+MODULE_DESCRIPTION("ATH79 USB PHY driver");
-+MODULE_AUTHOR("Alban Bedel <albeu at free.fr>");
-+MODULE_LICENSE("GPL");
diff --git a/target/linux/ath79/patches-5.15/701-usb-add-more-OF-quirk-properties.patch b/target/linux/ath79/patches-5.15/701-usb-add-more-OF-quirk-properties.patch
deleted file mode 100644
index d6d8cb6952..0000000000
--- a/target/linux/ath79/patches-5.15/701-usb-add-more-OF-quirk-properties.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 2201818e5bd33f389beceb3943fdfcf5a698fc5b Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Tue, 6 Mar 2018 10:01:43 +0100
-Subject: [PATCH 05/27] usb: add more OF/quirk properties
-
-Signed-off-by: John Crispin <john at phrozen.org>
----
- drivers/usb/host/ehci-platform.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
---- a/drivers/usb/host/ehci-platform.c
-+++ b/drivers/usb/host/ehci-platform.c
-@@ -277,6 +277,11 @@ static int ehci_platform_probe(struct pl
- 	ehci = hcd_to_ehci(hcd);
- 
- 	if (pdata == &ehci_platform_defaults && dev->dev.of_node) {
-+		of_property_read_u32(dev->dev.of_node, "caps-offset", &pdata->caps_offset);
-+
-+		if (of_property_read_bool(dev->dev.of_node, "has-synopsys-hc-bug"))
-+			pdata->has_synopsys_hc_bug = 1;
-+
- 		if (of_property_read_bool(dev->dev.of_node, "big-endian-regs"))
- 			ehci->big_endian_mmio = 1;
- 
diff --git a/target/linux/ath79/patches-5.15/710-net-use-downstream-ag71xx.patch b/target/linux/ath79/patches-5.15/710-net-use-downstream-ag71xx.patch
deleted file mode 100644
index 54e64fb11c..0000000000
--- a/target/linux/ath79/patches-5.15/710-net-use-downstream-ag71xx.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From: John Crispin <john at phrozen.org>
-Subject: [PATCH] ath79: add new OF only target for QCA MIPS silicon
-
-This target aims to replace ar71xx mid-term. The big part that is still
-missing is making the MMIO/AHB wifi work using OF. NAND and mikrotik
-subtargets will follow.
-
-Submitted-by: John Crispin <john at phrozen.org>
----
- drivers/net/ethernet/atheros/Kconfig          | 8 +-------
- drivers/net/ethernet/atheros/Makefile         | 2 +-
- 2 files changed, 2 insertions(+), 8 deletions(-)
-
---- a/drivers/net/ethernet/atheros/Kconfig
-+++ b/drivers/net/ethernet/atheros/Kconfig
-@@ -17,14 +17,7 @@ config NET_VENDOR_ATHEROS
- 
- if NET_VENDOR_ATHEROS
- 
--config AG71XX
--	tristate "Atheros AR7XXX/AR9XXX built-in ethernet mac support"
--	depends on ATH79
--	select PHYLINK
--	imply NET_SELFTESTS
--	help
--	  If you wish to compile a kernel for AR7XXX/91XXX and enable
--	  ethernet support, then you should always answer Y to this.
-+source "drivers/net/ethernet/atheros/ag71xx/Kconfig"
- 
- config ATL2
- 	tristate "Atheros L2 Fast Ethernet support"
---- a/drivers/net/ethernet/atheros/Makefile
-+++ b/drivers/net/ethernet/atheros/Makefile
-@@ -3,7 +3,7 @@
- # Makefile for the Atheros network device drivers.
- #
- 
--obj-$(CONFIG_AG71XX) += ag71xx.o
-+obj-$(CONFIG_AG71XX) += ag71xx/
- obj-$(CONFIG_ATL1) += atlx/
- obj-$(CONFIG_ATL2) += atlx/
- obj-$(CONFIG_ATL1E) += atl1e/
diff --git a/target/linux/ath79/patches-5.15/720-mdio_bitbang_ignore_ta_value.patch b/target/linux/ath79/patches-5.15/720-mdio_bitbang_ignore_ta_value.patch
deleted file mode 100644
index 5363bb37b0..0000000000
--- a/target/linux/ath79/patches-5.15/720-mdio_bitbang_ignore_ta_value.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From: Jonas Gorski <jogo at openwrt.org>
-Subject: ar71xx: add a workaround for ar8316 not always driving the TA bit to low
-
-AR8316 behind a GPIO bitbanged MDIO bus fails to drive the turnaround bit
-to low despite returning a valid value. Ignore it and just use the
-returned value anyway.
-
-SVN-Revision: 28422
----
- drivers/net/mdio/mdio-bitbang.c               | 16 ++-----------------
- 1 file changed, 2 insertions(+), 14 deletions(-)
-
---- a/drivers/net/mdio/mdio-bitbang.c
-+++ b/drivers/net/mdio/mdio-bitbang.c
-@@ -152,7 +152,7 @@ static int mdiobb_cmd_addr(struct mdiobb
- int mdiobb_read(struct mii_bus *bus, int phy, int reg)
- {
- 	struct mdiobb_ctrl *ctrl = bus->priv;
--	int ret, i;
-+	int ret;
- 
- 	if (reg & MII_ADDR_C45) {
- 		reg = mdiobb_cmd_addr(ctrl, phy, reg);
-@@ -162,19 +162,7 @@ int mdiobb_read(struct mii_bus *bus, int
- 
- 	ctrl->ops->set_mdio_dir(ctrl, 0);
- 
--	/* check the turnaround bit: the PHY should be driving it to zero, if this
--	 * PHY is listed in phy_ignore_ta_mask as having broken TA, skip that
--	 */
--	if (mdiobb_get_bit(ctrl) != 0 &&
--	    !(bus->phy_ignore_ta_mask & (1 << phy))) {
--		/* PHY didn't drive TA low -- flush any bits it
--		 * may be trying to send.
--		 */
--		for (i = 0; i < 32; i++)
--			mdiobb_get_bit(ctrl);
--
--		return 0xffff;
--	}
-+	mdiobb_get_bit(ctrl);
- 
- 	ret = mdiobb_get_num(ctrl, 16);
- 	mdiobb_get_bit(ctrl);
diff --git a/target/linux/ath79/patches-5.15/721-phy-mdio-bitbang-prevent-rescheduling-during-command.patch b/target/linux/ath79/patches-5.15/721-phy-mdio-bitbang-prevent-rescheduling-during-command.patch
deleted file mode 100644
index e37d9a1f63..0000000000
--- a/target/linux/ath79/patches-5.15/721-phy-mdio-bitbang-prevent-rescheduling-during-command.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 66e584435ac0de6e0abeb6d7166fe4fe25d6bb73 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jogo at openwrt.org>
-Date: Tue, 16 Jun 2015 13:15:08 +0200
-Subject: [PATCH] phy/mdio-bitbang: prevent rescheduling during command
-
-It seems some phys have some maximum timings for accessing the MDIO line,
-resulting in bit errors under cpu stress. Prevent this from happening by
-disabling interrupts when sending commands.
-
-Signed-off-by: Jonas Gorski <jogo at openwrt.org>
----
- drivers/net/mdio/mdio-bitbang.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
---- a/drivers/net/mdio/mdio-bitbang.c
-+++ b/drivers/net/mdio/mdio-bitbang.c
-@@ -14,6 +14,7 @@
-  * Vitaly Bordug <vbordug at ru.mvista.com>
-  */
- 
-+#include <linux/irqflags.h>
- #include <linux/delay.h>
- #include <linux/mdio-bitbang.h>
- #include <linux/module.h>
-@@ -153,7 +154,9 @@ int mdiobb_read(struct mii_bus *bus, int
- {
- 	struct mdiobb_ctrl *ctrl = bus->priv;
- 	int ret;
-+	unsigned long flags;
- 
-+	local_irq_save(flags);
- 	if (reg & MII_ADDR_C45) {
- 		reg = mdiobb_cmd_addr(ctrl, phy, reg);
- 		mdiobb_cmd(ctrl, MDIO_C45_READ, phy, reg);
-@@ -166,6 +169,7 @@ int mdiobb_read(struct mii_bus *bus, int
- 
- 	ret = mdiobb_get_num(ctrl, 16);
- 	mdiobb_get_bit(ctrl);
-+	local_irq_restore(flags);
- 	return ret;
- }
- EXPORT_SYMBOL(mdiobb_read);
-@@ -173,7 +177,9 @@ EXPORT_SYMBOL(mdiobb_read);
- int mdiobb_write(struct mii_bus *bus, int phy, int reg, u16 val)
- {
- 	struct mdiobb_ctrl *ctrl = bus->priv;
-+	unsigned long flags;
- 
-+	local_irq_save(flags);
- 	if (reg & MII_ADDR_C45) {
- 		reg = mdiobb_cmd_addr(ctrl, phy, reg);
- 		mdiobb_cmd(ctrl, MDIO_C45_WRITE, phy, reg);
-@@ -188,6 +194,8 @@ int mdiobb_write(struct mii_bus *bus, in
- 
- 	ctrl->ops->set_mdio_dir(ctrl, 0);
- 	mdiobb_get_bit(ctrl);
-+	local_irq_restore(flags);
-+
- 	return 0;
- }
- EXPORT_SYMBOL(mdiobb_write);
diff --git a/target/linux/ath79/patches-5.15/730-ar8216-make-reg-access-atomic.patch b/target/linux/ath79/patches-5.15/730-ar8216-make-reg-access-atomic.patch
deleted file mode 100644
index 02f763534e..0000000000
--- a/target/linux/ath79/patches-5.15/730-ar8216-make-reg-access-atomic.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From b3797d1a92afe97c173b00fdb7824cedba24eef0 Mon Sep 17 00:00:00 2001
-From: Chuanhong Guo <gch981213 at gmail.com>
-Date: Sun, 20 Sep 2020 01:00:45 +0800
-Subject: [PATCH] ath79: ar8216: make switch register access atomic
-
-due to some unknown reason these register accesses sometimes fail
-on the integrated switch without this patch.
-
-THIS ONLY WORKS ON ATH79 AND MAY BREAK THE DRIVER ON OTHER PLATFORMS!
-The mdio bus on ath79 works in polling mode and doesn't rely on
-any interrupt. This patch breaks the driver on any mdio master
-with interrupts used.
-
----
---- a/drivers/net/phy/ar8216.c
-+++ b/drivers/net/phy/ar8216.c
-@@ -252,6 +252,7 @@ ar8xxx_mii_write32(struct ar8xxx_priv *p
- u32
- ar8xxx_read(struct ar8xxx_priv *priv, int reg)
- {
-+	unsigned long flags;
- 	struct mii_bus *bus = priv->mii_bus;
- 	u16 r1, r2, page;
- 	u32 val;
-@@ -259,11 +260,13 @@ ar8xxx_read(struct ar8xxx_priv *priv, in
- 	split_addr((u32) reg, &r1, &r2, &page);
- 
- 	mutex_lock(&bus->mdio_lock);
-+	local_irq_save(flags);
- 
- 	bus->write(bus, 0x18, 0, page);
- 	wait_for_page_switch();
- 	val = ar8xxx_mii_read32(priv, 0x10 | r2, r1);
- 
-+	local_irq_restore(flags);
- 	mutex_unlock(&bus->mdio_lock);
- 
- 	return val;
-@@ -272,17 +275,20 @@ ar8xxx_read(struct ar8xxx_priv *priv, in
- void
- ar8xxx_write(struct ar8xxx_priv *priv, int reg, u32 val)
- {
-+	unsigned long flags;
- 	struct mii_bus *bus = priv->mii_bus;
- 	u16 r1, r2, page;
- 
- 	split_addr((u32) reg, &r1, &r2, &page);
- 
- 	mutex_lock(&bus->mdio_lock);
-+	local_irq_save(flags);
- 
- 	bus->write(bus, 0x18, 0, page);
- 	wait_for_page_switch();
- 	ar8xxx_mii_write32(priv, 0x10 | r2, r1, val);
- 
-+	local_irq_restore(flags);
- 	mutex_unlock(&bus->mdio_lock);
- }
- 
diff --git a/target/linux/ath79/patches-5.15/800-leds-add-reset-controller-based-driver.patch b/target/linux/ath79/patches-5.15/800-leds-add-reset-controller-based-driver.patch
deleted file mode 100644
index bbf8d7ef8c..0000000000
--- a/target/linux/ath79/patches-5.15/800-leds-add-reset-controller-based-driver.patch
+++ /dev/null
@@ -1,186 +0,0 @@
-From ecbd9c87f073f097d9fe56390353e64e963e866a Mon Sep 17 00:00:00 2001
-From: John Crispin <john at phrozen.org>
-Date: Tue, 6 Mar 2018 10:03:03 +0100
-Subject: [PATCH 03/27] leds: add reset-controller based driver
-
-Signed-off-by: John Crispin <john at phrozen.org>
----
- drivers/leds/Kconfig      |  11 ++++
- drivers/leds/Makefile     |   1 +
- drivers/leds/leds-reset.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 149 insertions(+)
- create mode 100644 drivers/leds/leds-reset.c
-
---- a/drivers/leds/Kconfig
-+++ b/drivers/leds/Kconfig
-@@ -878,6 +878,17 @@ source "drivers/leds/blink/Kconfig"
- comment "Flash and Torch LED drivers"
- source "drivers/leds/flash/Kconfig"
- 
-+config LEDS_RESET
-+	tristate "LED support for reset-controller API"
-+	depends on LEDS_CLASS
-+	depends on RESET_CONTROLLER
-+	help
-+	  This option enables support for LEDs connected to pins driven by reset
-+	  controllers. Yes, DNI actual built HW like that.
-+
-+	  To compile this driver as a module, choose M here: the module
-+	  will be called leds-reset.
-+
- comment "LED Triggers"
- source "drivers/leds/trigger/Kconfig"
- 
---- /dev/null
-+++ b/drivers/leds/leds-reset.c
-@@ -0,0 +1,140 @@
-+/*
-+ * Copyright (C) 2018 John Crispin <john at phrozen.org>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+#include <linux/err.h>
-+#include <linux/reset.h>
-+#include <linux/kernel.h>
-+#include <linux/leds.h>
-+#include <linux/module.h>
-+#include <linux/of.h>
-+#include <linux/platform_device.h>
-+#include <linux/reset.h>
-+
-+struct reset_led_data {
-+	struct led_classdev cdev;
-+	struct reset_control *rst;
-+};
-+
-+static inline struct reset_led_data *
-+			cdev_to_reset_led_data(struct led_classdev *led_cdev)
-+{
-+	return container_of(led_cdev, struct reset_led_data, cdev);
-+}
-+
-+static void reset_led_set(struct led_classdev *led_cdev,
-+	enum led_brightness value)
-+{
-+	struct reset_led_data *led_dat = cdev_to_reset_led_data(led_cdev);
-+
-+	if (value == LED_OFF)
-+		reset_control_assert(led_dat->rst);
-+	else
-+		reset_control_deassert(led_dat->rst);
-+}
-+
-+struct reset_leds_priv {
-+	int num_leds;
-+	struct reset_led_data leds[];
-+};
-+
-+static inline int sizeof_reset_leds_priv(int num_leds)
-+{
-+	return sizeof(struct reset_leds_priv) +
-+		(sizeof(struct reset_led_data) * num_leds);
-+}
-+
-+static struct reset_leds_priv *reset_leds_create(struct platform_device *pdev)
-+{
-+	struct device *dev = &pdev->dev;
-+	struct fwnode_handle *child;
-+	struct reset_leds_priv *priv;
-+	int count, ret;
-+
-+	count = device_get_child_node_count(dev);
-+	if (!count)
-+		return ERR_PTR(-ENODEV);
-+
-+	priv = devm_kzalloc(dev, sizeof_reset_leds_priv(count), GFP_KERNEL);
-+	if (!priv)
-+		return ERR_PTR(-ENOMEM);
-+
-+	device_for_each_child_node(dev, child) {
-+		struct reset_led_data *led = &priv->leds[priv->num_leds];
-+		struct device_node *np = to_of_node(child);
-+
-+		ret = fwnode_property_read_string(child, "label", &led->cdev.name);
-+		if (!led->cdev.name) {
-+			fwnode_handle_put(child);
-+			return ERR_PTR(-EINVAL);
-+		}
-+		led->rst = __of_reset_control_get(np, NULL, 0, 0, 0, true);
-+		if (IS_ERR(led->rst))
-+			return ERR_PTR(-EINVAL);
-+
-+		fwnode_property_read_string(child, "linux,default-trigger",
-+						&led->cdev.default_trigger);
-+
-+		led->cdev.brightness_set = reset_led_set;
-+		ret = devm_led_classdev_register(&pdev->dev, &led->cdev);
-+		if (ret < 0)
-+			return ERR_PTR(ret);
-+		led->cdev.dev->of_node = np;
-+		priv->num_leds++;
-+	}
-+
-+	return priv;
-+}
-+
-+static const struct of_device_id of_reset_leds_match[] = {
-+	{ .compatible = "reset-leds", },
-+	{},
-+};
-+
-+MODULE_DEVICE_TABLE(of, of_reset_leds_match);
-+
-+static int reset_led_probe(struct platform_device *pdev)
-+{
-+	struct reset_leds_priv *priv;
-+
-+	priv = reset_leds_create(pdev);
-+	if (IS_ERR(priv))
-+		return PTR_ERR(priv);
-+
-+	platform_set_drvdata(pdev, priv);
-+
-+	return 0;
-+}
-+
-+static void reset_led_shutdown(struct platform_device *pdev)
-+{
-+	struct reset_leds_priv *priv = platform_get_drvdata(pdev);
-+	int i;
-+
-+	for (i = 0; i < priv->num_leds; i++) {
-+		struct reset_led_data *led = &priv->leds[i];
-+
-+		if (!(led->cdev.flags & LED_RETAIN_AT_SHUTDOWN))
-+			reset_led_set(&led->cdev, LED_OFF);
-+	}
-+}
-+
-+static struct platform_driver reset_led_driver = {
-+	.probe		= reset_led_probe,
-+	.shutdown	= reset_led_shutdown,
-+	.driver		= {
-+		.name	= "leds-reset",
-+		.of_match_table = of_reset_leds_match,
-+	},
-+};
-+
-+module_platform_driver(reset_led_driver);
-+
-+MODULE_AUTHOR("John Crispin <john at phrozen.org>");
-+MODULE_DESCRIPTION("reset controller LED driver");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:leds-reset");
---- a/drivers/leds/Makefile
-+++ b/drivers/leds/Makefile
-@@ -87,6 +87,7 @@ obj-$(CONFIG_LEDS_TURRIS_OMNIA)		+= leds
- obj-$(CONFIG_LEDS_WM831X_STATUS)	+= leds-wm831x-status.o
- obj-$(CONFIG_LEDS_WM8350)		+= leds-wm8350.o
- obj-$(CONFIG_LEDS_WRAP)			+= leds-wrap.o
-+obj-$(CONFIG_LEDS_RESET)		+= leds-reset.o
- 
- # LED SPI Drivers
- obj-$(CONFIG_LEDS_CR0014114)		+= leds-cr0014114.o
diff --git a/target/linux/ath79/patches-5.15/900-unaligned_access_hacks.patch b/target/linux/ath79/patches-5.15/900-unaligned_access_hacks.patch
deleted file mode 100644
index 3c15a016ff..0000000000
--- a/target/linux/ath79/patches-5.15/900-unaligned_access_hacks.patch
+++ /dev/null
@@ -1,900 +0,0 @@
-From: Felix Fietkau <nbd at openwrt.org>
-Subject: [PATCH] ar71xx: fix unaligned access in a few more places
-
-SVN-Revision: 35130
----
- arch/mips/include/asm/checksum.h              | 83 +++---------------
- include/uapi/linux/ip.h                       |  2 +-
- include/uapi/linux/ipv6.h                     |  2 +-
- include/uapi/linux/tcp.h                      |  4 ++--
- include/uapi/linux/udp.h                      |  2 +-
- net/netfilter/nf_conntrack_core.c             |  4 ++--
- include/uapi/linux/icmp.h                     |  2 +-
- include/uapi/linux/in6.h                      |  2 +-
- net/ipv6/tcp_ipv6.c                           |  9 +++--
- net/ipv6/datagram.c                           |  6 ++--
- net/ipv6/exthdrs.c                            |  2 +-
- include/linux/types.h                         |  5 +++
- net/ipv4/af_inet.c                            |  4 ++--
- net/ipv4/tcp_output.c                         | 69 +++++++++--------
- include/uapi/linux/igmp.h                     |  8 +++---
- net/core/flow_dissector.c                     |  2 +-
- include/uapi/linux/icmpv6.h                   |  2 +-
- include/net/ndisc.h                           | 10 ++++----
- net/sched/cls_u32.c                           |  6 +++---
- net/ipv6/ip6_offload.c                        |  2 +-
- include/net/addrconf.h                        |  2 +-
- include/net/inet_ecn.h                        |  4 ++--
- include/net/ipv6.h                            | 23 +++++----
- include/net/secure_seq.h                      |  1 +
- include/uapi/linux/in.h                       |  2 +-
- net/ipv6/ip6_fib.h                            |  2 +-
- net/netfilter/nf_conntrack_proto_tcp.c        |  2 +-
- net/xfrm/xfrm_input.c                         |  4 ++--
- net/ipv4/tcp_input.c                          | 12 ++++---
- include/uapi/linux/if_pppox.h                 |  1 +
- net/ipv6/netfilter/nf_log_ipv6.c              |  4 ++--
- include/net/neighbour.h                       |  6 +++--
- include/uapi/linux/netfilter_arp/arp_tables.h |  2 +-
- net/core/utils.c                              | 10 +++++--
- include/linux/etherdevice.h                   | 11 ++++---
- net/ipv4/tcp_offload.c                        |  6 +++---
- net/ipv6/netfilter/ip6table_mangle.c          |  4 ++--
- 37 file changed, 171 insertions(+), 141 deletions(-)
-
---- a/arch/mips/include/asm/checksum.h
-+++ b/arch/mips/include/asm/checksum.h
-@@ -100,26 +100,30 @@ static inline __sum16 ip_fast_csum(const
- 	const unsigned int *stop = word + ihl;
- 	unsigned int csum;
- 	int carry;
-+	unsigned int w;
- 
--	csum = word[0];
--	csum += word[1];
--	carry = (csum < word[1]);
-+	csum = net_hdr_word(word++);
-+
-+	w = net_hdr_word(word++);
-+	csum += w;
-+	carry = (csum < w);
- 	csum += carry;
- 
--	csum += word[2];
--	carry = (csum < word[2]);
-+	w = net_hdr_word(word++);
-+	csum += w;
-+	carry = (csum < w);
- 	csum += carry;
- 
--	csum += word[3];
--	carry = (csum < word[3]);
-+	w = net_hdr_word(word++);
-+	csum += w;
-+	carry = (csum < w);
- 	csum += carry;
- 
--	word += 4;
- 	do {
--		csum += *word;
--		carry = (csum < *word);
-+		w = net_hdr_word(word++);
-+		csum += w;
-+		carry = (csum < w);
- 		csum += carry;
--		word++;
- 	} while (word != stop);
- 
- 	return csum_fold(csum);
-@@ -182,74 +186,6 @@ static inline __sum16 ip_compute_csum(co
- 	return csum_fold(csum_partial(buff, len, 0));
- }
- 
--#define _HAVE_ARCH_IPV6_CSUM
--static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
--					  const struct in6_addr *daddr,
--					  __u32 len, __u8 proto,
--					  __wsum sum)
--{
--	__wsum tmp;
--
--	__asm__(
--	"	.set	push		# csum_ipv6_magic\n"
--	"	.set	noreorder	\n"
--	"	.set	noat		\n"
--	"	addu	%0, %5		# proto (long in network byte order)\n"
--	"	sltu	$1, %0, %5	\n"
--	"	addu	%0, $1		\n"
--
--	"	addu	%0, %6		# csum\n"
--	"	sltu	$1, %0, %6	\n"
--	"	lw	%1, 0(%2)	# four words source address\n"
--	"	addu	%0, $1		\n"
--	"	addu	%0, %1		\n"
--	"	sltu	$1, %0, %1	\n"
--
--	"	lw	%1, 4(%2)	\n"
--	"	addu	%0, $1		\n"
--	"	addu	%0, %1		\n"
--	"	sltu	$1, %0, %1	\n"
--
--	"	lw	%1, 8(%2)	\n"
--	"	addu	%0, $1		\n"
--	"	addu	%0, %1		\n"
--	"	sltu	$1, %0, %1	\n"
--
--	"	lw	%1, 12(%2)	\n"
--	"	addu	%0, $1		\n"
--	"	addu	%0, %1		\n"
--	"	sltu	$1, %0, %1	\n"
--
--	"	lw	%1, 0(%3)	\n"
--	"	addu	%0, $1		\n"
--	"	addu	%0, %1		\n"
--	"	sltu	$1, %0, %1	\n"
--
--	"	lw	%1, 4(%3)	\n"
--	"	addu	%0, $1		\n"
--	"	addu	%0, %1		\n"
--	"	sltu	$1, %0, %1	\n"
--
--	"	lw	%1, 8(%3)	\n"
--	"	addu	%0, $1		\n"
--	"	addu	%0, %1		\n"
--	"	sltu	$1, %0, %1	\n"
--
--	"	lw	%1, 12(%3)	\n"
--	"	addu	%0, $1		\n"
--	"	addu	%0, %1		\n"
--	"	sltu	$1, %0, %1	\n"
--
--	"	addu	%0, $1		# Add final carry\n"
--	"	.set	pop"
--	: "=&r" (sum), "=&r" (tmp)
--	: "r" (saddr), "r" (daddr),
--	  "0" (htonl(len)), "r" (htonl(proto)), "r" (sum)
--	: "memory");
--
--	return csum_fold(sum);
--}
--
- #include <asm-generic/checksum.h>
- #endif /* CONFIG_GENERIC_CSUM */
- 
---- a/include/uapi/linux/ip.h
-+++ b/include/uapi/linux/ip.h
-@@ -106,7 +106,7 @@ struct iphdr {
- 		__be32	daddr;
- 	);
- 	/*The options start here. */
--};
-+} __attribute__((packed, aligned(2)));
- 
- 
- struct ip_auth_hdr {
---- a/include/uapi/linux/ipv6.h
-+++ b/include/uapi/linux/ipv6.h
-@@ -135,7 +135,7 @@ struct ipv6hdr {
- 		struct	in6_addr	saddr;
- 		struct	in6_addr	daddr;
- 	);
--};
-+} __attribute__((packed, aligned(2)));
- 
- 
- /* index values for the variables in ipv6_devconf */
---- a/include/uapi/linux/tcp.h
-+++ b/include/uapi/linux/tcp.h
-@@ -55,7 +55,7 @@ struct tcphdr {
- 	__be16	window;
- 	__sum16	check;
- 	__be16	urg_ptr;
--};
-+} __attribute__((packed, aligned(2)));
- 
- /*
-  *	The union cast uses a gcc extension to avoid aliasing problems
-@@ -65,7 +65,7 @@ struct tcphdr {
- union tcp_word_hdr {
- 	struct tcphdr hdr;
- 	__be32        words[5];
--};
-+} __attribute__((packed, aligned(2)));
- 
- #define tcp_flag_word(tp) (((union tcp_word_hdr *)(tp))->words[3])
- 
---- a/include/uapi/linux/udp.h
-+++ b/include/uapi/linux/udp.h
-@@ -25,7 +25,7 @@ struct udphdr {
- 	__be16	dest;
- 	__be16	len;
- 	__sum16	check;
--};
-+} __attribute__((packed, aligned(2)));
- 
- /* UDP socket options */
- #define UDP_CORK	1	/* Never send partially complete segments */
---- a/net/netfilter/nf_conntrack_core.c
-+++ b/net/netfilter/nf_conntrack_core.c
-@@ -308,8 +308,8 @@ nf_ct_get_tuple(const struct sk_buff *sk
- 
- 	switch (l3num) {
- 	case NFPROTO_IPV4:
--		tuple->src.u3.ip = ap[0];
--		tuple->dst.u3.ip = ap[1];
-+		tuple->src.u3.ip = net_hdr_word(ap++);
-+		tuple->dst.u3.ip = net_hdr_word(ap);
- 		break;
- 	case NFPROTO_IPV6:
- 		memcpy(tuple->src.u3.ip6, ap, sizeof(tuple->src.u3.ip6));
---- a/include/uapi/linux/icmp.h
-+++ b/include/uapi/linux/icmp.h
-@@ -102,7 +102,7 @@ struct icmphdr {
- 	} frag;
- 	__u8	reserved[4];
-   } un;
--};
-+} __attribute__((packed, aligned(2)));
- 
- 
- /*
---- a/include/uapi/linux/in6.h
-+++ b/include/uapi/linux/in6.h
-@@ -43,7 +43,7 @@ struct in6_addr {
- #define s6_addr16		in6_u.u6_addr16
- #define s6_addr32		in6_u.u6_addr32
- #endif
--};
-+} __attribute__((packed, aligned(2)));
- #endif /* __UAPI_DEF_IN6_ADDR */
- 
- #if __UAPI_DEF_SOCKADDR_IN6
---- a/net/ipv6/tcp_ipv6.c
-+++ b/net/ipv6/tcp_ipv6.c
-@@ -35,6 +35,7 @@
- #include <linux/ipsec.h>
- #include <linux/times.h>
- #include <linux/slab.h>
-+#include <asm/unaligned.h>
- #include <linux/uaccess.h>
- #include <linux/ipv6.h>
- #include <linux/icmpv6.h>
-@@ -944,10 +945,10 @@ static void tcp_v6_send_response(const s
- 	topt = (__be32 *)(t1 + 1);
- 
- 	if (tsecr) {
--		*topt++ = htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |
--				(TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP);
--		*topt++ = htonl(tsval);
--		*topt++ = htonl(tsecr);
-+		put_unaligned_be32((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |
-+				(TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP, topt++);
-+		put_unaligned_be32(tsval, topt++);
-+		put_unaligned_be32(tsecr, topt++);
- 	}
- 
- 	if (mrst)
---- a/include/linux/ipv6.h
-+++ b/include/linux/ipv6.h
-@@ -6,6 +6,7 @@
- 
- #define ipv6_optlen(p)  (((p)->hdrlen+1) << 3)
- #define ipv6_authlen(p) (((p)->hdrlen+2) << 2)
-+
- /*
-  * This structure contains configuration options per IPv6 link.
-  */
---- a/net/ipv6/datagram.c
-+++ b/net/ipv6/datagram.c
-@@ -492,7 +492,7 @@ int ipv6_recv_error(struct sock *sk, str
- 				ipv6_iface_scope_id(&sin->sin6_addr,
- 						    IP6CB(skb)->iif);
- 		} else {
--			ipv6_addr_set_v4mapped(*(__be32 *)(nh + serr->addr_offset),
-+			ipv6_addr_set_v4mapped(net_hdr_word(nh + serr->addr_offset),
- 					       &sin->sin6_addr);
- 			sin->sin6_scope_id = 0;
- 		}
-@@ -846,12 +846,12 @@ int ip6_datagram_send_ctl(struct net *ne
- 			}
- 
- 			if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
--				if ((fl6->flowlabel^*(__be32 *)CMSG_DATA(cmsg))&~IPV6_FLOWINFO_MASK) {
-+				if ((fl6->flowlabel^net_hdr_word(CMSG_DATA(cmsg)))&~IPV6_FLOWINFO_MASK) {
- 					err = -EINVAL;
- 					goto exit_f;
- 				}
- 			}
--			fl6->flowlabel = IPV6_FLOWINFO_MASK & *(__be32 *)CMSG_DATA(cmsg);
-+			fl6->flowlabel = IPV6_FLOWINFO_MASK & net_hdr_word(CMSG_DATA(cmsg));
- 			break;
- 
- 		case IPV6_2292HOPOPTS:
---- a/net/ipv6/exthdrs.c
-+++ b/net/ipv6/exthdrs.c
-@@ -1002,7 +1002,7 @@ static bool ipv6_hop_jumbo(struct sk_buf
- 		goto drop;
- 	}
- 
--	pkt_len = ntohl(*(__be32 *)(nh + optoff + 2));
-+	pkt_len = ntohl(net_hdr_word(nh + optoff + 2));
- 	if (pkt_len <= IPV6_MAXPLEN) {
- 		__IP6_INC_STATS(net, idev, IPSTATS_MIB_INHDRERRORS);
- 		icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, optoff+2);
---- a/include/linux/types.h
-+++ b/include/linux/types.h
-@@ -231,5 +231,11 @@ typedef void (*swap_func_t)(void *a, voi
- typedef int (*cmp_r_func_t)(const void *a, const void *b, const void *priv);
- typedef int (*cmp_func_t)(const void *a, const void *b);
- 
-+struct net_hdr_word {
-+       u32 words[1];
-+} __attribute__((packed, aligned(2)));
-+
-+#define net_hdr_word(_p) (((struct net_hdr_word *) (_p))->words[0])
-+
- #endif /*  __ASSEMBLY__ */
- #endif /* _LINUX_TYPES_H */
---- a/net/ipv4/af_inet.c
-+++ b/net/ipv4/af_inet.c
-@@ -1480,8 +1480,8 @@ struct sk_buff *inet_gro_receive(struct
- 	if (unlikely(ip_fast_csum((u8 *)iph, 5)))
- 		goto out_unlock;
- 
--	id = ntohl(*(__be32 *)&iph->id);
--	flush = (u16)((ntohl(*(__be32 *)iph) ^ skb_gro_len(skb)) | (id & ~IP_DF));
-+	id = ntohl(net_hdr_word(&iph->id));
-+	flush = (u16)((ntohl(net_hdr_word(iph)) ^ skb_gro_len(skb)) | (id & ~IP_DF));
- 	id >>= 16;
- 
- 	list_for_each_entry(p, head, list) {
---- a/net/ipv4/tcp_output.c
-+++ b/net/ipv4/tcp_output.c
-@@ -609,48 +609,53 @@ static void tcp_options_write(__be32 *pt
- 	u16 options = opts->options;	/* mungable copy */
- 
- 	if (unlikely(OPTION_MD5 & options)) {
--		*ptr++ = htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |
--			       (TCPOPT_MD5SIG << 8) | TCPOLEN_MD5SIG);
-+		net_hdr_word(ptr++) =
-+			htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |
-+			      (TCPOPT_MD5SIG << 8) | TCPOLEN_MD5SIG);
- 		/* overload cookie hash location */
- 		opts->hash_location = (__u8 *)ptr;
- 		ptr += 4;
- 	}
- 
- 	if (unlikely(opts->mss)) {
--		*ptr++ = htonl((TCPOPT_MSS << 24) |
--			       (TCPOLEN_MSS << 16) |
--			       opts->mss);
-+		net_hdr_word(ptr++) =
-+			htonl((TCPOPT_MSS << 24) | (TCPOLEN_MSS << 16) |
-+			      opts->mss);
- 	}
- 
- 	if (likely(OPTION_TS & options)) {
- 		if (unlikely(OPTION_SACK_ADVERTISE & options)) {
--			*ptr++ = htonl((TCPOPT_SACK_PERM << 24) |
--				       (TCPOLEN_SACK_PERM << 16) |
--				       (TCPOPT_TIMESTAMP << 8) |
--				       TCPOLEN_TIMESTAMP);
-+			net_hdr_word(ptr++) =
-+				htonl((TCPOPT_SACK_PERM << 24) |
-+				      (TCPOLEN_SACK_PERM << 16) |
-+				      (TCPOPT_TIMESTAMP << 8) |
-+				      TCPOLEN_TIMESTAMP);
- 			options &= ~OPTION_SACK_ADVERTISE;
- 		} else {
--			*ptr++ = htonl((TCPOPT_NOP << 24) |
--				       (TCPOPT_NOP << 16) |
--				       (TCPOPT_TIMESTAMP << 8) |
--				       TCPOLEN_TIMESTAMP);
-+			net_hdr_word(ptr++) =
-+				htonl((TCPOPT_NOP << 24) |
-+				      (TCPOPT_NOP << 16) |
-+				      (TCPOPT_TIMESTAMP << 8) |
-+				      TCPOLEN_TIMESTAMP);
- 		}
--		*ptr++ = htonl(opts->tsval);
--		*ptr++ = htonl(opts->tsecr);
-+		net_hdr_word(ptr++) = htonl(opts->tsval);
-+		net_hdr_word(ptr++) = htonl(opts->tsecr);
- 	}
- 
- 	if (unlikely(OPTION_SACK_ADVERTISE & options)) {
--		*ptr++ = htonl((TCPOPT_NOP << 24) |
--			       (TCPOPT_NOP << 16) |
--			       (TCPOPT_SACK_PERM << 8) |
--			       TCPOLEN_SACK_PERM);
-+		net_hdr_word(ptr++) =
-+			htonl((TCPOPT_NOP << 24) |
-+			      (TCPOPT_NOP << 16) |
-+			      (TCPOPT_SACK_PERM << 8) |
-+			      TCPOLEN_SACK_PERM);
- 	}
- 
- 	if (unlikely(OPTION_WSCALE & options)) {
--		*ptr++ = htonl((TCPOPT_NOP << 24) |
--			       (TCPOPT_WINDOW << 16) |
--			       (TCPOLEN_WINDOW << 8) |
--			       opts->ws);
-+		net_hdr_word(ptr++) =
-+			htonl((TCPOPT_NOP << 24) |
-+			      (TCPOPT_WINDOW << 16) |
-+			      (TCPOLEN_WINDOW << 8) |
-+			      opts->ws);
- 	}
- 
- 	if (unlikely(opts->num_sack_blocks)) {
-@@ -658,16 +663,17 @@ static void tcp_options_write(__be32 *pt
- 			tp->duplicate_sack : tp->selective_acks;
- 		int this_sack;
- 
--		*ptr++ = htonl((TCPOPT_NOP  << 24) |
--			       (TCPOPT_NOP  << 16) |
--			       (TCPOPT_SACK <<  8) |
--			       (TCPOLEN_SACK_BASE + (opts->num_sack_blocks *
-+		net_hdr_word(ptr++) =
-+			htonl((TCPOPT_NOP << 24) |
-+			      (TCPOPT_NOP << 16) |
-+			      (TCPOPT_SACK << 8) |
-+			      (TCPOLEN_SACK_BASE + (opts->num_sack_blocks *
- 						     TCPOLEN_SACK_PERBLOCK)));
- 
- 		for (this_sack = 0; this_sack < opts->num_sack_blocks;
- 		     ++this_sack) {
--			*ptr++ = htonl(sp[this_sack].start_seq);
--			*ptr++ = htonl(sp[this_sack].end_seq);
-+			net_hdr_word(ptr++) = htonl(sp[this_sack].start_seq);
-+			net_hdr_word(ptr++) = htonl(sp[this_sack].end_seq);
- 		}
- 
- 		tp->rx_opt.dsack = 0;
-@@ -680,13 +686,14 @@ static void tcp_options_write(__be32 *pt
- 
- 		if (foc->exp) {
- 			len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len;
--			*ptr = htonl((TCPOPT_EXP << 24) | (len << 16) |
-+			net_hdr_word(ptr) =
-+				htonl((TCPOPT_EXP << 24) | (len << 16) |
- 				     TCPOPT_FASTOPEN_MAGIC);
- 			p += TCPOLEN_EXP_FASTOPEN_BASE;
- 		} else {
- 			len = TCPOLEN_FASTOPEN_BASE + foc->len;
--			*p++ = TCPOPT_FASTOPEN;
--			*p++ = len;
-+			net_hdr_word(p++) = TCPOPT_FASTOPEN;
-+			net_hdr_word(p++) = len;
- 		}
- 
- 		memcpy(p, foc->val, foc->len);
---- a/include/uapi/linux/igmp.h
-+++ b/include/uapi/linux/igmp.h
-@@ -33,7 +33,7 @@ struct igmphdr {
- 	__u8 code;		/* For newer IGMP */
- 	__sum16 csum;
- 	__be32 group;
--};
-+} __attribute__((packed, aligned(2)));
- 
- /* V3 group record types [grec_type] */
- #define IGMPV3_MODE_IS_INCLUDE		1
-@@ -49,7 +49,7 @@ struct igmpv3_grec {
- 	__be16	grec_nsrcs;
- 	__be32	grec_mca;
- 	__be32	grec_src[0];
--};
-+} __attribute__((packed, aligned(2)));
- 
- struct igmpv3_report {
- 	__u8 type;
-@@ -58,7 +58,7 @@ struct igmpv3_report {
- 	__be16 resv2;
- 	__be16 ngrec;
- 	struct igmpv3_grec grec[0];
--};
-+} __attribute__((packed, aligned(2)));
- 
- struct igmpv3_query {
- 	__u8 type;
-@@ -79,7 +79,7 @@ struct igmpv3_query {
- 	__u8 qqic;
- 	__be16 nsrcs;
- 	__be32 srcs[0];
--};
-+} __attribute__((packed, aligned(2)));
- 
- #define IGMP_HOST_MEMBERSHIP_QUERY	0x11	/* From RFC1112 */
- #define IGMP_HOST_MEMBERSHIP_REPORT	0x12	/* Ditto */
---- a/net/core/flow_dissector.c
-+++ b/net/core/flow_dissector.c
-@@ -129,7 +129,7 @@ __be32 __skb_flow_get_ports(const struct
- 		ports = __skb_header_pointer(skb, thoff + poff,
- 					     sizeof(_ports), data, hlen, &_ports);
- 		if (ports)
--			return *ports;
-+			return (__be32)net_hdr_word(ports);
- 	}
- 
- 	return 0;
---- a/include/uapi/linux/icmpv6.h
-+++ b/include/uapi/linux/icmpv6.h
-@@ -78,7 +78,7 @@ struct icmp6hdr {
- #define icmp6_addrconf_other	icmp6_dataun.u_nd_ra.other
- #define icmp6_rt_lifetime	icmp6_dataun.u_nd_ra.rt_lifetime
- #define icmp6_router_pref	icmp6_dataun.u_nd_ra.router_pref
--};
-+} __attribute__((packed, aligned(2)));
- 
- 
- #define ICMPV6_ROUTER_PREF_LOW		0x3
---- a/include/net/ndisc.h
-+++ b/include/net/ndisc.h
-@@ -93,7 +93,7 @@ struct ra_msg {
-         struct icmp6hdr		icmph;
- 	__be32			reachable_time;
- 	__be32			retrans_timer;
--};
-+} __attribute__((packed, aligned(2)));
- 
- struct rd_msg {
- 	struct icmp6hdr icmph;
-@@ -372,10 +372,10 @@ static inline u32 ndisc_hashfn(const voi
- {
- 	const u32 *p32 = pkey;
- 
--	return (((p32[0] ^ hash32_ptr(dev)) * hash_rnd[0]) +
--		(p32[1] * hash_rnd[1]) +
--		(p32[2] * hash_rnd[2]) +
--		(p32[3] * hash_rnd[3]));
-+	return (((net_hdr_word(&p32[0]) ^ hash32_ptr(dev)) * hash_rnd[0]) +
-+		(net_hdr_word(&p32[1]) * hash_rnd[1]) +
-+		(net_hdr_word(&p32[2]) * hash_rnd[2]) +
-+		(net_hdr_word(&p32[3]) * hash_rnd[3]));
- }
- 
- static inline struct neighbour *__ipv6_neigh_lookup_noref(struct net_device *dev, const void *pkey)
---- a/net/sched/cls_u32.c
-+++ b/net/sched/cls_u32.c
-@@ -155,7 +155,7 @@ next_knode:
- 			data = skb_header_pointer(skb, toff, 4, &hdata);
- 			if (!data)
- 				goto out;
--			if ((*data ^ key->val) & key->mask) {
-+			if ((net_hdr_word(data) ^ key->val) & key->mask) {
- 				n = rcu_dereference_bh(n->next);
- 				goto next_knode;
- 			}
-@@ -206,8 +206,8 @@ check_terminal:
- 						  &hdata);
- 			if (!data)
- 				goto out;
--			sel = ht->divisor & u32_hash_fold(*data, &n->sel,
--							  n->fshift);
-+			sel = ht->divisor & u32_hash_fold(net_hdr_word(data),
-+							  &n->sel, n->fshift);
- 		}
- 		if (!(n->sel.flags & (TC_U32_VAROFFSET | TC_U32_OFFSET | TC_U32_EAT)))
- 			goto next_ht;
---- a/net/ipv6/ip6_offload.c
-+++ b/net/ipv6/ip6_offload.c
-@@ -241,7 +241,7 @@ INDIRECT_CALLABLE_SCOPE struct sk_buff *
- 			continue;
- 
- 		iph2 = (struct ipv6hdr *)(p->data + off);
--		first_word = *(__be32 *)iph ^ *(__be32 *)iph2;
-+		first_word = net_hdr_word(iph) ^ net_hdr_word(iph2);
- 
- 		/* All fields must match except length and Traffic Class.
- 		 * XXX skbs on the gro_list have all been parsed and pulled
---- a/include/net/addrconf.h
-+++ b/include/net/addrconf.h
-@@ -52,7 +52,7 @@ struct prefix_info {
- 	__be32			reserved2;
- 
- 	struct in6_addr		prefix;
--};
-+} __attribute__((packed, aligned(2)));
- 
- /* rfc4861 4.6.2: IPv6 PIO is 32 bytes in size */
- static_assert(sizeof(struct prefix_info) == 32);
---- a/include/net/inet_ecn.h
-+++ b/include/net/inet_ecn.h
-@@ -138,9 +138,9 @@ static inline int IP6_ECN_set_ce(struct
- 	if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph)))
- 		return 0;
- 
--	from = *(__be32 *)iph;
-+	from = net_hdr_word(iph);
- 	to = from | htonl(INET_ECN_CE << 20);
--	*(__be32 *)iph = to;
-+	net_hdr_word(iph) = to;
- 	if (skb->ip_summed == CHECKSUM_COMPLETE)
- 		skb->csum = csum_add(csum_sub(skb->csum, (__force __wsum)from),
- 				     (__force __wsum)to);
---- a/include/net/ipv6.h
-+++ b/include/net/ipv6.h
-@@ -147,7 +147,7 @@ struct frag_hdr {
- 	__u8	reserved;
- 	__be16	frag_off;
- 	__be32	identification;
--};
-+} __attribute__((packed, aligned(2)));
- 
- #define	IP6_MF		0x0001
- #define	IP6_OFFSET	0xFFF8
-@@ -561,8 +561,8 @@ static inline void __ipv6_addr_set_half(
- 	}
- #endif
- #endif
--	addr[0] = wh;
--	addr[1] = wl;
-+	net_hdr_word(&addr[0]) = wh;
-+	net_hdr_word(&addr[1]) = wl;
- }
- 
- static inline void ipv6_addr_set(struct in6_addr *addr,
-@@ -621,6 +621,8 @@ static inline bool ipv6_prefix_equal(con
- 	const __be32 *a1 = addr1->s6_addr32;
- 	const __be32 *a2 = addr2->s6_addr32;
- 	unsigned int pdw, pbi;
-+	/* Used for last <32-bit fraction of prefix */
-+	u32 pbia1, pbia2;
- 
- 	/* check complete u32 in prefix */
- 	pdw = prefixlen >> 5;
-@@ -629,7 +631,9 @@ static inline bool ipv6_prefix_equal(con
- 
- 	/* check incomplete u32 in prefix */
- 	pbi = prefixlen & 0x1f;
--	if (pbi && ((a1[pdw] ^ a2[pdw]) & htonl((0xffffffff) << (32 - pbi))))
-+	pbia1 = net_hdr_word(&a1[pdw]);
-+	pbia2 = net_hdr_word(&a2[pdw]);
-+	if (pbi && ((pbia1 ^ pbia2) & htonl((0xffffffff) << (32 - pbi))))
- 		return false;
- 
- 	return true;
-@@ -746,13 +750,13 @@ static inline void ipv6_addr_set_v4mappe
-  */
- static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen)
- {
--	const __be32 *a1 = token1, *a2 = token2;
-+	const struct in6_addr *a1 = token1, *a2 = token2;
- 	int i;
- 
- 	addrlen >>= 2;
- 
- 	for (i = 0; i < addrlen; i++) {
--		__be32 xb = a1[i] ^ a2[i];
-+		__be32 xb = a1->s6_addr32[i] ^ a2->s6_addr32[i];
- 		if (xb)
- 			return i * 32 + 31 - __fls(ntohl(xb));
- 	}
-@@ -946,17 +950,18 @@ static inline u32 ip6_multipath_hash_fie
- static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
- 				__be32 flowlabel)
- {
--	*(__be32 *)hdr = htonl(0x60000000 | (tclass << 20)) | flowlabel;
-+	net_hdr_word((__be32 *)hdr) =
-+		htonl(0x60000000 | (tclass << 20)) | flowlabel;
- }
- 
- static inline __be32 ip6_flowinfo(const struct ipv6hdr *hdr)
- {
--	return *(__be32 *)hdr & IPV6_FLOWINFO_MASK;
-+	return net_hdr_word((__be32 *)hdr) & IPV6_FLOWINFO_MASK;
- }
- 
- static inline __be32 ip6_flowlabel(const struct ipv6hdr *hdr)
- {
--	return *(__be32 *)hdr & IPV6_FLOWLABEL_MASK;
-+	return net_hdr_word((__be32 *)hdr) & IPV6_FLOWLABEL_MASK;
- }
- 
- static inline u8 ip6_tclass(__be32 flowinfo)
---- a/include/net/secure_seq.h
-+++ b/include/net/secure_seq.h
-@@ -3,6 +3,7 @@
- #define _NET_SECURE_SEQ
- 
- #include <linux/types.h>
-+#include <linux/in6.h>
- 
- u64 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
- u64 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
---- a/include/uapi/linux/in.h
-+++ b/include/uapi/linux/in.h
-@@ -88,7 +88,7 @@ enum {
- /* Internet address. */
- struct in_addr {
- 	__be32	s_addr;
--};
-+} __attribute__((packed, aligned(2)));
- #endif
- 
- #define IP_TOS		1
---- a/net/ipv6/ip6_fib.c
-+++ b/net/ipv6/ip6_fib.c
-@@ -141,7 +141,7 @@ static __be32 addr_bit_set(const void *t
- 	 * See include/asm-generic/bitops/le.h.
- 	 */
- 	return (__force __be32)(1 << ((~fn_bit ^ BITOP_BE32_SWIZZLE) & 0x1f)) &
--	       addr[fn_bit >> 5];
-+	       net_hdr_word(&addr[fn_bit >> 5]);
- }
- 
- struct fib6_info *fib6_info_alloc(gfp_t gfp_flags, bool with_fib6_nh)
---- a/net/netfilter/nf_conntrack_proto_tcp.c
-+++ b/net/netfilter/nf_conntrack_proto_tcp.c
-@@ -400,7 +400,7 @@ static void tcp_sack(const struct sk_buf
- 
- 	/* Fast path for timestamp-only option */
- 	if (length == TCPOLEN_TSTAMP_ALIGNED
--	    && *(__be32 *)ptr == htonl((TCPOPT_NOP << 24)
-+	    && net_hdr_word(ptr) == htonl((TCPOPT_NOP << 24)
- 				       | (TCPOPT_NOP << 16)
- 				       | (TCPOPT_TIMESTAMP << 8)
- 				       | TCPOLEN_TIMESTAMP))
---- a/net/xfrm/xfrm_input.c
-+++ b/net/xfrm/xfrm_input.c
-@@ -167,8 +167,8 @@ int xfrm_parse_spi(struct sk_buff *skb,
- 	if (!pskb_may_pull(skb, hlen))
- 		return -EINVAL;
- 
--	*spi = *(__be32 *)(skb_transport_header(skb) + offset);
--	*seq = *(__be32 *)(skb_transport_header(skb) + offset_seq);
-+	*spi = net_hdr_word(skb_transport_header(skb) + offset);
-+	*seq = net_hdr_word(skb_transport_header(skb) + offset_seq);
- 	return 0;
- }
- EXPORT_SYMBOL(xfrm_parse_spi);
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -4175,14 +4175,16 @@ static bool tcp_parse_aligned_timestamp(
- {
- 	const __be32 *ptr = (const __be32 *)(th + 1);
- 
--	if (*ptr == htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16)
--			  | (TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP)) {
-+	if (net_hdr_word(ptr) ==
-+	    htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |
-+		  (TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP)) {
- 		tp->rx_opt.saw_tstamp = 1;
- 		++ptr;
--		tp->rx_opt.rcv_tsval = ntohl(*ptr);
-+		tp->rx_opt.rcv_tsval = get_unaligned_be32(ptr);
- 		++ptr;
--		if (*ptr)
--			tp->rx_opt.rcv_tsecr = ntohl(*ptr) - tp->tsoffset;
-+		if (net_hdr_word(ptr))
-+			tp->rx_opt.rcv_tsecr = get_unaligned_be32(ptr) -
-+					       tp->tsoffset;
- 		else
- 			tp->rx_opt.rcv_tsecr = 0;
- 		return true;
---- a/include/uapi/linux/if_pppox.h
-+++ b/include/uapi/linux/if_pppox.h
-@@ -51,6 +51,7 @@ struct pppoe_addr {
-  */
- struct pptp_addr {
- 	__u16		call_id;
-+	__u16		pad;
- 	struct in_addr	sin_addr;
- };
- 
---- a/include/net/neighbour.h
-+++ b/include/net/neighbour.h
-@@ -270,8 +270,10 @@ static inline bool neigh_key_eq128(const
- 	const u32 *n32 = (const u32 *)n->primary_key;
- 	const u32 *p32 = pkey;
- 
--	return ((n32[0] ^ p32[0]) | (n32[1] ^ p32[1]) |
--		(n32[2] ^ p32[2]) | (n32[3] ^ p32[3])) == 0;
-+	return ((n32[0] ^ net_hdr_word(&p32[0])) |
-+		(n32[1] ^ net_hdr_word(&p32[1])) |
-+		(n32[2] ^ net_hdr_word(&p32[2])) |
-+		(n32[3] ^ net_hdr_word(&p32[3]))) == 0;
- }
- 
- static inline struct neighbour *___neigh_lookup_noref(
---- a/include/uapi/linux/netfilter_arp/arp_tables.h
-+++ b/include/uapi/linux/netfilter_arp/arp_tables.h
-@@ -70,7 +70,7 @@ struct arpt_arp {
- 	__u8 flags;
- 	/* Inverse flags */
- 	__u16 invflags;
--};
-+} __attribute__((aligned(4)));
- 
- /* Values for "flag" field in struct arpt_ip (general arp structure).
-  * No flags defined yet.
---- a/net/core/utils.c
-+++ b/net/core/utils.c
-@@ -460,8 +460,14 @@ void inet_proto_csum_replace16(__sum16 *
- 			       bool pseudohdr)
- {
- 	__be32 diff[] = {
--		~from[0], ~from[1], ~from[2], ~from[3],
--		to[0], to[1], to[2], to[3],
-+		~net_hdr_word(&from[0]),
-+		~net_hdr_word(&from[1]),
-+		~net_hdr_word(&from[2]),
-+		~net_hdr_word(&from[3]),
-+		net_hdr_word(&to[0]),
-+		net_hdr_word(&to[1]),
-+		net_hdr_word(&to[2]),
-+		net_hdr_word(&to[3]),
- 	};
- 	if (skb->ip_summed != CHECKSUM_PARTIAL) {
- 		*sum = csum_fold(csum_partial(diff, sizeof(diff),
---- a/include/linux/etherdevice.h
-+++ b/include/linux/etherdevice.h
-@@ -525,7 +525,7 @@ static inline bool is_etherdev_addr(cons
-  * @b: Pointer to Ethernet header
-  *
-  * Compare two Ethernet headers, returns 0 if equal.
-- * This assumes that the network header (i.e., IP header) is 4-byte
-+ * This assumes that the network header (i.e., IP header) is 2-byte
-  * aligned OR the platform can handle unaligned access.  This is the
-  * case for all packets coming into netif_receive_skb or similar
-  * entry points.
-@@ -548,11 +548,12 @@ static inline unsigned long compare_ethe
- 	fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6);
- 	return fold;
- #else
--	u32 *a32 = (u32 *)((u8 *)a + 2);
--	u32 *b32 = (u32 *)((u8 *)b + 2);
-+	const u16 *a16 = a;
-+	const u16 *b16 = b;
- 
--	return (*(u16 *)a ^ *(u16 *)b) | (a32[0] ^ b32[0]) |
--	       (a32[1] ^ b32[1]) | (a32[2] ^ b32[2]);
-+	return (a16[0] ^ b16[0]) | (a16[1] ^ b16[1]) | (a16[2] ^ b16[2]) |
-+	       (a16[3] ^ b16[3]) | (a16[4] ^ b16[4]) | (a16[5] ^ b16[5]) |
-+	       (a16[6] ^ b16[6]);
- #endif
- }
- 
---- a/net/ipv4/tcp_offload.c
-+++ b/net/ipv4/tcp_offload.c
-@@ -223,7 +223,7 @@ struct sk_buff *tcp_gro_receive(struct l
- 
- 		th2 = tcp_hdr(p);
- 
--		if (*(u32 *)&th->source ^ *(u32 *)&th2->source) {
-+		if (net_hdr_word(&th->source) ^ net_hdr_word(&th2->source)) {
- 			NAPI_GRO_CB(p)->same_flow = 0;
- 			continue;
- 		}
-@@ -241,8 +241,8 @@ found:
- 		  ~(TCP_FLAG_CWR | TCP_FLAG_FIN | TCP_FLAG_PSH));
- 	flush |= (__force int)(th->ack_seq ^ th2->ack_seq);
- 	for (i = sizeof(*th); i < thlen; i += 4)
--		flush |= *(u32 *)((u8 *)th + i) ^
--			 *(u32 *)((u8 *)th2 + i);
-+		flush |= net_hdr_word((u8 *)th + i) ^
-+			 net_hdr_word((u8 *)th2 + i);
- 
- 	/* When we receive our second frame we can made a decision on if we
- 	 * continue this flow as an atomic flow with a fixed ID or if we use
---- a/net/ipv6/netfilter/ip6table_mangle.c
-+++ b/net/ipv6/netfilter/ip6table_mangle.c
-@@ -44,7 +44,7 @@ ip6t_mangle_out(struct sk_buff *skb, con
- 	hop_limit = ipv6_hdr(skb)->hop_limit;
- 
- 	/* flowlabel and prio (includes version, which shouldn't change either */
--	flowlabel = *((u_int32_t *)ipv6_hdr(skb));
-+	flowlabel = net_hdr_word(ipv6_hdr(skb));
- 
- 	ret = ip6t_do_table(skb, state, priv);
- 
-@@ -53,7 +53,7 @@ ip6t_mangle_out(struct sk_buff *skb, con
- 	     !ipv6_addr_equal(&ipv6_hdr(skb)->daddr, &daddr) ||
- 	     skb->mark != mark ||
- 	     ipv6_hdr(skb)->hop_limit != hop_limit ||
--	     flowlabel != *((u_int32_t *)ipv6_hdr(skb)))) {
-+	     flowlabel != net_hdr_word(ipv6_hdr(skb)))) {
- 		err = ip6_route_me_harder(state->net, state->sk, skb);
- 		if (err < 0)
- 			ret = NF_DROP_ERR(err);
diff --git a/target/linux/ath79/patches-5.15/910-mikrotik-rb4xx.patch b/target/linux/ath79/patches-5.15/910-mikrotik-rb4xx.patch
deleted file mode 100644
index 16c8f11af7..0000000000
--- a/target/linux/ath79/patches-5.15/910-mikrotik-rb4xx.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From: Christopher Hill <ch6574 at gmail.com>
-Subject: [PATCH] ath79: add Mikrotik rb4xx series drivers
-
-This adds 3 Mikrotik rb4xx series drivers as follows:
-
-rb4xx-cpld: This is in the mfd subsystem, and is the parent CPLD device
-that interfaces between the SoC SPI bus and its two children below.
-rb4xx-gpio: This is the GPIO expander.
-rb4xx-nand: This is the NAND driver.
-
-The history of this code comes in three phases.
-
-1. The first is a May 2015 attempt to push the equivalient ar71xx rb4xx
-drivers upstream. See https://lore.kernel.org/patchwork/patch/940880/.
-
-Module-author: Gabor Juhos <juhosg at openwrt.org>
-Module-author: Imre Kaloz <kaloz at openwrt.org>
-Module-author: Bert Vermeulen <bert at biot.com>
-
-2. Next several ar71xx patches were applied bringing the code current.
-
-commit 7bbf4117c6fe4b764d9d7c62fb2bcf6dd93bff2c
-Submitted-by: Hauke Mehrtens <hauke at hauke-m.de>
-
-commit af79fdbe4af32a287798b579141204bda056b8aa
-commit 889272d92db689fd9c910243635e44c9d8323095
-commit e21cb649a235180563363b8af5ba8296b9ac0baa
-commit 7c09fa4a7492ca436f2c94bd9a465b7c5bbeed6f
-Submitted-by: Felix Fietkau <nbd at nbd.name>
-
-3. Finally a heavy refactor to split the driver into the three new
-subsystems, and updated to work with the device tree configuration, plus
-updates and review feedback incorporated
-
-Reviewed-by: Thibaut VAR?NE <hacks at slashdirt.org>
-Submitted-by: Christopher Hill <ch6574 at gmail.com>
----
- drivers/mfd/Kconfig                           | 8 ++++++++
- drivers/mfd/Makefile                          | 1 +
- drivers/gpio/Kconfig                          | 6 ++++++
- drivers/gpio/Makefile                         | 1 +
- drivers/mtd/nand/raw/Kconfig                  | 7 +++++++
- drivers/mtd/nand/raw/Makefile                 | 1 +
- 6 files changed, 24 insertions(+)
-
---- a/drivers/mfd/Kconfig
-+++ b/drivers/mfd/Kconfig
-@@ -2177,6 +2177,14 @@ config RAVE_SP_CORE
- 	  Select this to get support for the Supervisory Processor
- 	  device found on several devices in RAVE line of hardware.
- 
-+config MFD_RB4XX_CPLD
-+	tristate "CPLD driver for Mikrotik RB4xx series boards"
-+	select MFD_CORE
-+	depends on ATH79 || COMPILE_TEST
-+	help
-+	  Enables support for the CPLD chip (NAND & GPIO) on Mikrotik
-+	  Routerboard RB4xx series.
-+
- config SGI_MFD_IOC3
- 	bool "SGI IOC3 core driver"
- 	depends on PCI && MIPS && 64BIT
---- a/drivers/mfd/Makefile
-+++ b/drivers/mfd/Makefile
-@@ -267,6 +267,7 @@ obj-$(CONFIG_MFD_KHADAS_MCU) 	+= khadas-
- obj-$(CONFIG_MFD_ACER_A500_EC)	+= acer-ec-a500.o
- obj-$(CONFIG_MFD_QCOM_PM8008)	+= qcom-pm8008.o
- 
-+obj-$(CONFIG_MFD_RB4XX_CPLD)	+= rb4xx-cpld.o
- obj-$(CONFIG_SGI_MFD_IOC3)	+= ioc3.o
- obj-$(CONFIG_MFD_SIMPLE_MFD_I2C)	+= simple-mfd-i2c.o
- obj-$(CONFIG_MFD_INTEL_M10_BMC)   += intel-m10-bmc.o
---- a/drivers/gpio/Kconfig
-+++ b/drivers/gpio/Kconfig
-@@ -1574,6 +1574,12 @@ config GPIO_SODAVILLE
- 	help
- 	  Say Y here to support Intel Sodaville GPIO.
- 
-+config GPIO_RB4XX
-+	tristate "GPIO expander for Mikrotik RB4xx series boards"
-+	depends on MFD_RB4XX_CPLD
-+	help
-+	  GPIO driver for Mikrotik Routerboard RB4xx series.
-+
- endmenu
- 
- menu "SPI GPIO expanders"
---- a/drivers/gpio/Makefile
-+++ b/drivers/gpio/Makefile
-@@ -122,6 +122,7 @@ obj-$(CONFIG_GPIO_PL061)		+= gpio-pl061.
- obj-$(CONFIG_GPIO_PMIC_EIC_SPRD)	+= gpio-pmic-eic-sprd.o
- obj-$(CONFIG_GPIO_PXA)			+= gpio-pxa.o
- obj-$(CONFIG_GPIO_RASPBERRYPI_EXP)	+= gpio-raspberrypi-exp.o
-+obj-$(CONFIG_GPIO_RB4XX)		+= gpio-rb4xx.o
- obj-$(CONFIG_GPIO_RC5T583)		+= gpio-rc5t583.o
- obj-$(CONFIG_GPIO_RCAR)			+= gpio-rcar.o
- obj-$(CONFIG_GPIO_RDA)			+= gpio-rda.o
---- a/drivers/mtd/nand/raw/Kconfig
-+++ b/drivers/mtd/nand/raw/Kconfig
-@@ -563,4 +563,11 @@ config MTD_NAND_AR934X
- 	  Enables support for NAND controller on Qualcomm Atheros SoCs.
- 	  This controller is found on AR934x and QCA955x SoCs.
- 
-+config MTD_NAND_RB4XX
-+	tristate "Support for NAND driver for Mikrotik RB4xx series boards"
-+	depends on MFD_RB4XX_CPLD
-+	help
-+	  Enables support for the NAND flash chip on Mikrotik Routerboard
-+	  RB4xx series.
-+
- endif # MTD_RAW_NAND
---- a/drivers/mtd/nand/raw/Makefile
-+++ b/drivers/mtd/nand/raw/Makefile
-@@ -59,6 +59,7 @@ obj-$(CONFIG_MTD_NAND_INTEL_LGM)	+= inte
- obj-$(CONFIG_MTD_NAND_ROCKCHIP)		+= rockchip-nand-controller.o
- obj-$(CONFIG_MTD_NAND_PL35X)		+= pl35x-nand-controller.o
- obj-$(CONFIG_MTD_NAND_AR934X)		+= ar934x_nand.o
-+obj-$(CONFIG_MTD_NAND_RB4XX)		+= nand_rb4xx.o
- 
- nand-objs := nand_base.o nand_legacy.o nand_bbt.o nand_timings.o nand_ids.o
- nand-objs += nand_onfi.o
diff --git a/target/linux/ath79/patches-5.15/911-mikrotik-rb91x.patch b/target/linux/ath79/patches-5.15/911-mikrotik-rb91x.patch
deleted file mode 100644
index 94967bf674..0000000000
--- a/target/linux/ath79/patches-5.15/911-mikrotik-rb91x.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From: Denis Kalashnikov <denis281089 at gmail.com>
-Subject: [PATCH] ath79: add support for reset key on MikroTik RB912UAG-2HPnD
-
-On MikroTik RB91x board series a reset key shares SoC gpio
-line #15 with NAND ALE and NAND IO7. So we need a custom
-gpio driver to manage this non-trivial connection schema.
-Also rb91x-nand needs to have an ability to disable a polling
-of the key while it works with NAND.
-
-While we've been integrating rb91x-key into a firmware, we've
-figured out that:
-* In the gpio-latch driver we need to add a "cansleep" suffix to
-several gpiolib calls,
-* When gpio-latch and rb91x-nand fail to get a gpio and an error
-is -EPROBE_DEFER, they shouldn't report about this, since this
-actually is not an error and occurs when the gpio-latch probe
-function is called before the rb91x-key probe.
-We fix these related things here too.
-
-Submitted-by: Denis Kalashnikov <denis281089 at gmail.com>
-Reviewed-by: Sergey Ryazanov <ryazanov.s.a at gmail.com>
-Tested-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
----
- drivers/gpio/Kconfig                          | 11 +++++++++++
- drivers/gpio/Makefile                         |  2 ++
- drivers/mtd/nand/raw/Kconfig                  |  6 ++++++
- drivers/mtd/nand/raw/Makefile                 |  1 +
- 7 files changed, 20 insertions(+)
-
---- a/drivers/gpio/Kconfig
-+++ b/drivers/gpio/Kconfig
-@@ -353,6 +353,13 @@ config GPIO_IXP4XX
- 	  IXP4xx series of chips.
- 
- 	  If unsure, say N.
-+
-+config GPIO_LATCH
-+	tristate "MikroTik RouterBOARD GPIO latch support"
-+	depends on ATH79
-+	help
-+	  GPIO driver for latch on some MikroTik RouterBOARDs.
-+
- config GPIO_LOGICVC
- 	tristate "Xylon LogiCVC GPIO support"
- 	depends on MFD_SYSCON && OF
-@@ -529,6 +536,10 @@ config GPIO_ROCKCHIP
- 	help
- 	  Say yes here to support GPIO on Rockchip SoCs.
- 
-+config GPIO_RB91X_KEY
-+	tristate "MikroTik RB91x board series reset key support"
-+	depends on ATH79
-+
- config GPIO_SAMA5D2_PIOBU
- 	tristate "SAMA5D2 PIOBU GPIO support"
- 	depends on MFD_SYSCON
---- a/drivers/gpio/Makefile
-+++ b/drivers/gpio/Makefile
-@@ -75,6 +75,7 @@ obj-$(CONFIG_GPIO_IT87)			+= gpio-it87.o
- obj-$(CONFIG_GPIO_IXP4XX)		+= gpio-ixp4xx.o
- obj-$(CONFIG_GPIO_JANZ_TTL)		+= gpio-janz-ttl.o
- obj-$(CONFIG_GPIO_KEMPLD)		+= gpio-kempld.o
-+obj-$(CONFIG_GPIO_LATCH)		+= gpio-latch.o
- obj-$(CONFIG_GPIO_LOGICVC)		+= gpio-logicvc.o
- obj-$(CONFIG_GPIO_LOONGSON1)		+= gpio-loongson1.o
- obj-$(CONFIG_GPIO_LOONGSON)		+= gpio-loongson.o
-@@ -123,6 +124,7 @@ obj-$(CONFIG_GPIO_PMIC_EIC_SPRD)	+= gpio
- obj-$(CONFIG_GPIO_PXA)			+= gpio-pxa.o
- obj-$(CONFIG_GPIO_RASPBERRYPI_EXP)	+= gpio-raspberrypi-exp.o
- obj-$(CONFIG_GPIO_RB4XX)		+= gpio-rb4xx.o
-+obj-$(CONFIG_GPIO_RB91X_KEY)		+= gpio-rb91x-key.o
- obj-$(CONFIG_GPIO_RC5T583)		+= gpio-rc5t583.o
- obj-$(CONFIG_GPIO_RCAR)			+= gpio-rcar.o
- obj-$(CONFIG_GPIO_RDA)			+= gpio-rda.o
---- a/drivers/mtd/nand/raw/Kconfig
-+++ b/drivers/mtd/nand/raw/Kconfig
-@@ -570,4 +570,10 @@ config MTD_NAND_RB4XX
- 	  Enables support for the NAND flash chip on Mikrotik Routerboard
- 	  RB4xx series.
- 
-+config MTD_NAND_RB91X
-+	tristate "MikroTik RB91x NAND driver support"
-+	depends on ATH79 && MTD_RAW_NAND
-+	help
-+	  Enables support for the NAND flash chip on MikroTik RB91x series.
-+
- endif # MTD_RAW_NAND
---- a/drivers/mtd/nand/raw/Makefile
-+++ b/drivers/mtd/nand/raw/Makefile
-@@ -60,6 +60,7 @@ obj-$(CONFIG_MTD_NAND_ROCKCHIP)		+= rock
- obj-$(CONFIG_MTD_NAND_PL35X)		+= pl35x-nand-controller.o
- obj-$(CONFIG_MTD_NAND_AR934X)		+= ar934x_nand.o
- obj-$(CONFIG_MTD_NAND_RB4XX)		+= nand_rb4xx.o
-+obj-$(CONFIG_MTD_NAND_RB91X)		+= rb91x_nand.o
- 
- nand-objs := nand_base.o nand_legacy.o nand_bbt.o nand_timings.o nand_ids.o
- nand-objs += nand_onfi.o



From lede-commits at lists.infradead.org  Wed Mar 13 06:02:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 09:02:27 -0400
Subject: [openwrt/openwrt]  dnsmasq: reset PKG_RELEASE
In-Reply-To: <171033494735.161577.12625983808621255734@git-01.infra.openwrt.org>
References: <171033494735.161577.12625983808621255734@git-01.infra.openwrt.org>
Message-ID: <mailman.16023.1710334957.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/694e6477848eade21851ec27d90c173b373099fc

commit 694e6477848eade21851ec27d90c173b373099fc
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Mar 13 12:47:31 2024 +0100

    dnsmasq: reset PKG_RELEASE
    
    dnsmasq was recently updated to 2.90, but PKG_RELEASE was not reset to 1.
    
    Fixes: 838a27f64f56 ("dnsmasq: version 2.90")
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/network/services/dnsmasq/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index d2de74d9da..9020278d53 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=dnsmasq
 PKG_UPSTREAM_VERSION:=2.90
 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
-PKG_RELEASE:=8
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
 PKG_SOURCE_URL:=https://thekelleys.org.uk/dnsmasq/



From lede-commits at lists.infradead.org  Wed Mar 13 12:37:08 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 15:37:08 -0400
Subject: [openwrt/openwrt]  generic: mtk_eth_soc: fix PPE hanging issue
In-Reply-To: <171035862746.1001963.13472391428384653507@git-01.infra.openwrt.org>
References: <171035862746.1001963.13472391428384653507@git-01.infra.openwrt.org>
Message-ID: <mailman.16202.1710358633.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/003b9ff61c081dd820764d4d0a83bb2514646576

commit 003b9ff61c081dd820764d4d0a83bb2514646576
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Mar 13 18:44:52 2024 +0000

    generic: mtk_eth_soc: fix PPE hanging issue
    
    A patch to resolve an issue was found in MediaTek's GPL-licensed SDK:
    In the mtk_ppe_stop() function, the PPE scan mode is not disabled before
    disabling the PPE. This can potentially lead to a hang during the process
    of disabling the PPE.
    
    Without this patch, the PPE may experience a hang during the reboot test.
    
    Reference: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b40da332dfe763932a82f9f62a4709457a15dd6c
    
    Suggested-by: Bc-bocun Chen <bc-bocun.chen at mediatek.com>
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...thernet-mtk_eth_soc-fix-PPE-hanging-issue.patch | 59 ++++++++++++++++++++++
 ...thernet-mtk_eth_soc-fix-PPE-hanging-issue.patch | 59 ++++++++++++++++++++++
 ...thernet-mtk_eth_soc-fix-PPE-hanging-issue.patch | 59 ++++++++++++++++++++++
 3 files changed, 177 insertions(+)

diff --git a/target/linux/generic/pending-5.15/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch b/target/linux/generic/pending-5.15/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
new file mode 100644
index 0000000000..59b06a925a
--- /dev/null
+++ b/target/linux/generic/pending-5.15/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
@@ -0,0 +1,59 @@
+From c8262ebbf7ca546dd5ead3c0383a89eb401627ff Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Wed, 13 Mar 2024 17:55:02 +0000
+Subject: [PATCH] net: ethernet: mtk_eth_soc: fix PPE hanging issue
+
+A patch to resolve an issue was found in MediaTek's GPL-licensed SDK:
+In the mtk_ppe_stop() function, the PPE scan mode is not disabled before
+disabling the PPE. This can potentially lead to a hang during the process
+of disabling the PPE.
+
+Without this patch, the PPE may experience a hang during the reboot test.
+
+Reference: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b40da332dfe763932a82f9f62a4709457a15dd6c
+
+Suggested-by: Bc-bocun Chen <bc-bocun.chen at mediatek.com>
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_ppe.c | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
++++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
+@@ -1008,7 +1008,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
+ 			 MTK_PPE_KEEPALIVE_DISABLE) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_HASH_MODE, 1) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_SCAN_MODE,
+-			 MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) |
++			 MTK_PPE_SCAN_MODE_CHECK_AGE) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
+ 			 MTK_PPE_ENTRIES_SHIFT);
+ 	if (mtk_is_netsys_v2_or_greater(ppe->eth))
+@@ -1104,17 +1104,21 @@ int mtk_ppe_stop(struct mtk_ppe *ppe)
+ 
+ 	mtk_ppe_cache_enable(ppe, false);
+ 
+-	/* disable offload engine */
+-	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
+-	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
+-
+ 	/* disable aging */
+ 	val = MTK_PPE_TB_CFG_AGE_NON_L4 |
+ 	      MTK_PPE_TB_CFG_AGE_UNBIND |
+ 	      MTK_PPE_TB_CFG_AGE_TCP |
+ 	      MTK_PPE_TB_CFG_AGE_UDP |
+-	      MTK_PPE_TB_CFG_AGE_TCP_FIN;
++	      MTK_PPE_TB_CFG_AGE_TCP_FIN |
++		  MTK_PPE_TB_CFG_SCAN_MODE;
+ 	ppe_clear(ppe, MTK_PPE_TB_CFG, val);
+ 
+-	return mtk_ppe_wait_busy(ppe);
++	if (mtk_ppe_wait_busy(ppe))
++		return -ETIMEDOUT;
++
++	/* disable offload engine */
++	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
++	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
++
++	return 0;
+ }
diff --git a/target/linux/generic/pending-6.1/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch b/target/linux/generic/pending-6.1/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
new file mode 100644
index 0000000000..3b190c1801
--- /dev/null
+++ b/target/linux/generic/pending-6.1/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
@@ -0,0 +1,59 @@
+From c8262ebbf7ca546dd5ead3c0383a89eb401627ff Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Wed, 13 Mar 2024 17:55:02 +0000
+Subject: [PATCH] net: ethernet: mtk_eth_soc: fix PPE hanging issue
+
+A patch to resolve an issue was found in MediaTek's GPL-licensed SDK:
+In the mtk_ppe_stop() function, the PPE scan mode is not disabled before
+disabling the PPE. This can potentially lead to a hang during the process
+of disabling the PPE.
+
+Without this patch, the PPE may experience a hang during the reboot test.
+
+Reference: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b40da332dfe763932a82f9f62a4709457a15dd6c
+
+Suggested-by: Bc-bocun Chen <bc-bocun.chen at mediatek.com>
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_ppe.c | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
++++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
+@@ -1002,7 +1002,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
+ 			 MTK_PPE_KEEPALIVE_DISABLE) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_HASH_MODE, 1) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_SCAN_MODE,
+-			 MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) |
++			 MTK_PPE_SCAN_MODE_CHECK_AGE) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
+ 			 MTK_PPE_ENTRIES_SHIFT);
+ 	if (mtk_is_netsys_v2_or_greater(ppe->eth))
+@@ -1098,17 +1098,21 @@ int mtk_ppe_stop(struct mtk_ppe *ppe)
+ 
+ 	mtk_ppe_cache_enable(ppe, false);
+ 
+-	/* disable offload engine */
+-	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
+-	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
+-
+ 	/* disable aging */
+ 	val = MTK_PPE_TB_CFG_AGE_NON_L4 |
+ 	      MTK_PPE_TB_CFG_AGE_UNBIND |
+ 	      MTK_PPE_TB_CFG_AGE_TCP |
+ 	      MTK_PPE_TB_CFG_AGE_UDP |
+-	      MTK_PPE_TB_CFG_AGE_TCP_FIN;
++	      MTK_PPE_TB_CFG_AGE_TCP_FIN |
++		  MTK_PPE_TB_CFG_SCAN_MODE;
+ 	ppe_clear(ppe, MTK_PPE_TB_CFG, val);
+ 
+-	return mtk_ppe_wait_busy(ppe);
++	if (mtk_ppe_wait_busy(ppe))
++		return -ETIMEDOUT;
++
++	/* disable offload engine */
++	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
++	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
++
++	return 0;
+ }
diff --git a/target/linux/generic/pending-6.6/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch b/target/linux/generic/pending-6.6/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
new file mode 100644
index 0000000000..3b190c1801
--- /dev/null
+++ b/target/linux/generic/pending-6.6/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
@@ -0,0 +1,59 @@
+From c8262ebbf7ca546dd5ead3c0383a89eb401627ff Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Wed, 13 Mar 2024 17:55:02 +0000
+Subject: [PATCH] net: ethernet: mtk_eth_soc: fix PPE hanging issue
+
+A patch to resolve an issue was found in MediaTek's GPL-licensed SDK:
+In the mtk_ppe_stop() function, the PPE scan mode is not disabled before
+disabling the PPE. This can potentially lead to a hang during the process
+of disabling the PPE.
+
+Without this patch, the PPE may experience a hang during the reboot test.
+
+Reference: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b40da332dfe763932a82f9f62a4709457a15dd6c
+
+Suggested-by: Bc-bocun Chen <bc-bocun.chen at mediatek.com>
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_ppe.c | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
++++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
+@@ -1002,7 +1002,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
+ 			 MTK_PPE_KEEPALIVE_DISABLE) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_HASH_MODE, 1) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_SCAN_MODE,
+-			 MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) |
++			 MTK_PPE_SCAN_MODE_CHECK_AGE) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
+ 			 MTK_PPE_ENTRIES_SHIFT);
+ 	if (mtk_is_netsys_v2_or_greater(ppe->eth))
+@@ -1098,17 +1098,21 @@ int mtk_ppe_stop(struct mtk_ppe *ppe)
+ 
+ 	mtk_ppe_cache_enable(ppe, false);
+ 
+-	/* disable offload engine */
+-	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
+-	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
+-
+ 	/* disable aging */
+ 	val = MTK_PPE_TB_CFG_AGE_NON_L4 |
+ 	      MTK_PPE_TB_CFG_AGE_UNBIND |
+ 	      MTK_PPE_TB_CFG_AGE_TCP |
+ 	      MTK_PPE_TB_CFG_AGE_UDP |
+-	      MTK_PPE_TB_CFG_AGE_TCP_FIN;
++	      MTK_PPE_TB_CFG_AGE_TCP_FIN |
++		  MTK_PPE_TB_CFG_SCAN_MODE;
+ 	ppe_clear(ppe, MTK_PPE_TB_CFG, val);
+ 
+-	return mtk_ppe_wait_busy(ppe);
++	if (mtk_ppe_wait_busy(ppe))
++		return -ETIMEDOUT;
++
++	/* disable offload engine */
++	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
++	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
++
++	return 0;
+ }



From lede-commits at lists.infradead.org  Wed Mar 13 12:37:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 15:37:07 -0400
Subject: [openwrt/openwrt]  generic: 5.15: mtk_eth_soc: backport fix for hang
 on link up
In-Reply-To: <171035862746.1001963.13472391428384653507@git-01.infra.openwrt.org>
References: <171035862746.1001963.13472391428384653507@git-01.infra.openwrt.org>
Message-ID: <mailman.16203.1710358634.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/33d6ba5045023ee05ca884dc162dbd9202d8698e

commit 33d6ba5045023ee05ca884dc162dbd9202d8698e
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Mar 13 18:43:28 2024 +0000

    generic: 5.15: mtk_eth_soc: backport fix for hang on link up
    
    Backport commit faa5f17fe2 ("kernel: mtk_eth_soc: release
    MAC_MCR_FORCE_LINK only when MAC is up") to Linux 5.15 as well.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...k-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch | 50 ++++++++++++++++++++++
 ...t-mtk_eth_soc-add-paths-and-SerDes-modes-.patch | 17 ++++----
 2 files changed, 59 insertions(+), 8 deletions(-)

diff --git a/target/linux/generic/pending-5.15/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch b/target/linux/generic/pending-5.15/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
new file mode 100644
index 0000000000..7e9ff5c25f
--- /dev/null
+++ b/target/linux/generic/pending-5.15/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
@@ -0,0 +1,50 @@
+From ef5976ae4e117fae9a61bb3c0f8319a917a425ea Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Mon, 11 Mar 2024 17:43:28 +0000
+Subject: [PATCH] net: mediatek: mtk_eth_soc: release MAC_MCR_FORCE_LINK only when MAC is up
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Clearing bit MAC_MCR_FORCE_LINK which forces the link down too early
+can result in MAC ending up in a broken/blocked state.
+
+Fix this by handling this bit in the .mac_link_up and .mac_link_down
+calls instead of in .mac_finish.
+
+Fixes: b8fc9f30821ec ("net: ethernet: mediatek: Add basic PHYLINK support")
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+@@ -619,8 +619,7 @@ static int mtk_mac_finish(struct phylink
+ 	mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ 	mcr_new = mcr_cur;
+ 	mcr_new |= MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
+-		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_FORCE_LINK |
+-		   MAC_MCR_RX_FIFO_CLR_DIS;
++		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_RX_FIFO_CLR_DIS;
+ 
+ 	/* Only update control register when needed! */
+ 	if (mcr_new != mcr_cur)
+@@ -636,7 +635,7 @@ static void mtk_mac_link_down(struct phy
+ 					   phylink_config);
+ 	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ 
+-	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
++	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
+ 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ }
+ 
+@@ -745,7 +744,7 @@ static void mtk_mac_link_up(struct phyli
+ 	if (rx_pause)
+ 		mcr |= MAC_MCR_FORCE_RX_FC;
+ 
+-	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN;
++	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK;
+ 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ }
+ 
diff --git a/target/linux/generic/pending-5.15/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch b/target/linux/generic/pending-5.15/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
index 29f565d312..61c23da821 100644
--- a/target/linux/generic/pending-5.15/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
+++ b/target/linux/generic/pending-5.15/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
@@ -387,24 +387,25 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return;
  
  err_phy:
-@@ -634,10 +698,13 @@ static void mtk_mac_link_down(struct phy
+@@ -633,10 +697,14 @@ static void mtk_mac_link_down(struct phy
  {
  	struct mtk_mac *mac = container_of(config, struct mtk_mac,
  					   phylink_config);
 -	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
  
--	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
+-	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
 -	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
 +	if (!mtk_interface_mode_is_xgmii(interface)) {
-+		mtk_m32(mac->hw, MAC_MCR_TX_EN | MAC_MCR_RX_EN, 0, MTK_MAC_MCR(mac->id));
-+		mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, MTK_XGMAC_STS(mac->id));
++		mtk_m32(mac->hw, MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK, 0, MTK_MAC_MCR(mac->id));
++		if (mtk_is_netsys_v3_or_greater(eth))
++			mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, MTK_XGMAC_STS(mac->id));
 +	} else if (mac->id != MTK_GMAC1_ID) {
 +		mtk_m32(mac->hw, XMAC_MCR_TRX_DISABLE, XMAC_MCR_TRX_DISABLE, MTK_XMAC_MCR(mac->id));
 +	}
  }
  
  static void mtk_set_queue_speed(struct mtk_eth *eth, unsigned int idx,
-@@ -709,13 +776,11 @@ static void mtk_set_queue_speed(struct m
+@@ -708,13 +776,11 @@ static void mtk_set_queue_speed(struct m
  	mtk_w32(eth, val, soc->reg_map->qdma.qtx_sch + ofs);
  }
  
@@ -422,7 +423,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	u32 mcr;
  
  	mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
-@@ -749,6 +814,55 @@ static void mtk_mac_link_up(struct phyli
+@@ -748,6 +814,55 @@ static void mtk_mac_link_up(struct phyli
  	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
  }
  
@@ -478,7 +479,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static const struct phylink_mac_ops mtk_phylink_ops = {
  	.validate = phylink_generic_validate,
  	.mac_select_pcs = mtk_mac_select_pcs,
-@@ -4563,8 +4677,21 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4562,8 +4677,21 @@ static int mtk_add_mac(struct mtk_eth *e
  		phy_interface_zero(mac->phylink_config.supported_interfaces);
  		__set_bit(PHY_INTERFACE_MODE_INTERNAL,
  			  mac->phylink_config.supported_interfaces);
@@ -500,7 +501,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	phylink = phylink_create(&mac->phylink_config,
  				 of_fwnode_handle(mac->of_node),
  				 phy_mode, &mtk_phylink_ops);
-@@ -4757,6 +4884,13 @@ static int mtk_probe(struct platform_dev
+@@ -4756,6 +4884,13 @@ static int mtk_probe(struct platform_dev
  
  		if (err)
  			return err;



From lede-commits at lists.infradead.org  Wed Mar 13 13:48:57 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 16:48:57 -0400
Subject: [openwrt/openwrt]  mediatek: mt7981: pinctrl: add additional emmc
 groups
In-Reply-To: <171036293642.1144579.777551762035572157@git-01.infra.openwrt.org>
References: <171036293642.1144579.777551762035572157@git-01.infra.openwrt.org>
Message-ID: <mailman.16215.1710362943.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e1831321de15ba4a8401cbf8c2c713939de968c1

commit e1831321de15ba4a8401cbf8c2c713939de968c1
Author: Jean Thomas <jean.thomas at wifirst.fr>
AuthorDate: Thu Dec 7 16:18:02 2023 +0100

    mediatek: mt7981: pinctrl: add additional emmc groups
    
    Add new emmc groups in the pinctrl driver for the
    MediaTek MT7981 SoC:
    * emmc reset, with pin 15.
    * emmc 4-bit bus-width, with pins 16 to 19, and 24 to 25.
    * emmc 8-bit bus-width, with pins 16 to 25.
    
    The existing emmc_45 group is kept for legacy reasons, even
    if this is the union of emmc_reset and emmc_8 groups.
    
    Signed-off-by: Jean Thomas <jean.thomas at wifirst.fr>
---
 ...mediatek-mt7981-add-additional-emmc-group.patch | 82 ++++++++++++++++++++++
 ...mediatek-mt7981-add-additional-emmc-group.patch | 82 ++++++++++++++++++++++
 2 files changed, 164 insertions(+)

diff --git a/target/linux/mediatek/patches-6.1/254-pinctrl-mediatek-mt7981-add-additional-emmc-group.patch b/target/linux/mediatek/patches-6.1/254-pinctrl-mediatek-mt7981-add-additional-emmc-group.patch
new file mode 100644
index 0000000000..df4d82c9d9
--- /dev/null
+++ b/target/linux/mediatek/patches-6.1/254-pinctrl-mediatek-mt7981-add-additional-emmc-group.patch
@@ -0,0 +1,82 @@
+From patchwork Wed Jan 17 14:55:47 2024
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Jean Thomas <jean.thomas at wifirst.fr>
+X-Patchwork-Id: 13521855
+Return-Path:
+ <linux-mediatek-bounces+linux-mediatek=archiver.kernel.org at lists.infradead.org>
+From: Jean Thomas <jean.thomas at wifirst.fr>
+To: sean.wang at kernel.org,
+	linus.walleij at linaro.org,
+	matthias.bgg at gmail.com,
+	angelogioacchino.delregno at collabora.com,
+	linux-mediatek at lists.infradead.org,
+	linux-gpio at vger.kernel.org,
+	linux-kernel at vger.kernel.org,
+	linux-arm-kernel at lists.infradead.org
+Cc: Jean Thomas <jean.thomas at wifirst.fr>,
+	Daniel Golle <daniel at makrotopia.org>
+Subject: [PATCH v2 2/2] pinctrl: mediatek: mt7981: add additional emmc groups
+Date: Wed, 17 Jan 2024 15:55:47 +0100
+Message-Id: <20240117145547.3354242-1-jean.thomas at wifirst.fr>
+List-Id: <linux-mediatek.lists.infradead.org>
+
+Add new emmc groups in the pinctrl driver for the
+MediaTek MT7981 SoC:
+* emmc reset, with pin 15.
+* emmc 4-bit bus-width, with pins 16 to 19, and 24 to 25.
+* emmc 8-bit bus-width, with pins 16 to 25.
+
+The existing emmc_45 group is kept for legacy reasons, even
+if this is the union of emmc_reset and emmc_8 groups.
+
+Signed-off-by: Jean Thomas <jean.thomas at wifirst.fr>
+Reviewed-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/pinctrl/mediatek/pinctrl-mt7981.c | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+--
+2.39.2
+
+--- a/drivers/pinctrl/mediatek/pinctrl-mt7981.c
++++ b/drivers/pinctrl/mediatek/pinctrl-mt7981.c
+@@ -700,6 +700,15 @@ static int mt7981_drv_vbus_pins[] = { 14
+ static int mt7981_drv_vbus_funcs[] = { 1, };
+ 
+ /* EMMC */
++static int mt7981_emmc_reset_pins[] = { 15, };
++static int mt7981_emmc_reset_funcs[] = { 2, };
++
++static int mt7981_emmc_4_pins[] = { 16, 17, 18, 19, 24, 25, };
++static int mt7981_emmc_4_funcs[] = { 2, 2, 2, 2, 2, 2, };
++
++static int mt7981_emmc_8_pins[] = { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, };
++static int mt7981_emmc_8_funcs[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, };
++
+ static int mt7981_emmc_45_pins[] = { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, };
+ static int mt7981_emmc_45_funcs[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, };
+ 
+@@ -854,6 +863,12 @@ static const struct group_desc mt7981_gr
+ 	PINCTRL_PIN_GROUP("udi", mt7981_udi),
+ 	/* @GPIO(14) DRV_VBUS(1) */
+ 	PINCTRL_PIN_GROUP("drv_vbus", mt7981_drv_vbus),
++	/* @GPIO(15): EMMC_RSTB(2) */
++	PINCTRL_PIN_GROUP("emmc_reset", mt7981_emmc_reset),
++	/* @GPIO(16,17,18,19,24,25): EMMC_DATx, EMMC_CLK, EMMC_CMD */
++	PINCTRL_PIN_GROUP("emmc_4", mt7981_emmc_4),
++	/* @GPIO(16,17,18,19,20,21,22,23,24,25): EMMC_DATx, EMMC_CLK, EMMC_CMD */
++	PINCTRL_PIN_GROUP("emmc_8", mt7981_emmc_8),
+ 	/* @GPIO(15,25): EMMC(2) */
+ 	PINCTRL_PIN_GROUP("emmc_45", mt7981_emmc_45),
+ 	/* @GPIO(16,21): SNFI(3) */
+@@ -957,7 +972,7 @@ static const char *mt7981_i2c_groups[] =
+ static const char *mt7981_pcm_groups[] = { "pcm", };
+ static const char *mt7981_udi_groups[] = { "udi", };
+ static const char *mt7981_usb_groups[] = { "drv_vbus", };
+-static const char *mt7981_flash_groups[] = { "emmc_45", "snfi", };
++static const char *mt7981_flash_groups[] = { "emmc_reset", "emmc_4", "emmc_8", "emmc_45", "snfi", };
+ static const char *mt7981_ethernet_groups[] = { "smi_mdc_mdio", "gbe_ext_mdc_mdio",
+ 	"wf0_mode1", "wf0_mode3", "mt7531_int", };
+ static const char *mt7981_ant_groups[] = { "ant_sel", };
diff --git a/target/linux/mediatek/patches-6.6/254-pinctrl-mediatek-mt7981-add-additional-emmc-group.patch b/target/linux/mediatek/patches-6.6/254-pinctrl-mediatek-mt7981-add-additional-emmc-group.patch
new file mode 100644
index 0000000000..df4d82c9d9
--- /dev/null
+++ b/target/linux/mediatek/patches-6.6/254-pinctrl-mediatek-mt7981-add-additional-emmc-group.patch
@@ -0,0 +1,82 @@
+From patchwork Wed Jan 17 14:55:47 2024
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Jean Thomas <jean.thomas at wifirst.fr>
+X-Patchwork-Id: 13521855
+Return-Path:
+ <linux-mediatek-bounces+linux-mediatek=archiver.kernel.org at lists.infradead.org>
+From: Jean Thomas <jean.thomas at wifirst.fr>
+To: sean.wang at kernel.org,
+	linus.walleij at linaro.org,
+	matthias.bgg at gmail.com,
+	angelogioacchino.delregno at collabora.com,
+	linux-mediatek at lists.infradead.org,
+	linux-gpio at vger.kernel.org,
+	linux-kernel at vger.kernel.org,
+	linux-arm-kernel at lists.infradead.org
+Cc: Jean Thomas <jean.thomas at wifirst.fr>,
+	Daniel Golle <daniel at makrotopia.org>
+Subject: [PATCH v2 2/2] pinctrl: mediatek: mt7981: add additional emmc groups
+Date: Wed, 17 Jan 2024 15:55:47 +0100
+Message-Id: <20240117145547.3354242-1-jean.thomas at wifirst.fr>
+List-Id: <linux-mediatek.lists.infradead.org>
+
+Add new emmc groups in the pinctrl driver for the
+MediaTek MT7981 SoC:
+* emmc reset, with pin 15.
+* emmc 4-bit bus-width, with pins 16 to 19, and 24 to 25.
+* emmc 8-bit bus-width, with pins 16 to 25.
+
+The existing emmc_45 group is kept for legacy reasons, even
+if this is the union of emmc_reset and emmc_8 groups.
+
+Signed-off-by: Jean Thomas <jean.thomas at wifirst.fr>
+Reviewed-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/pinctrl/mediatek/pinctrl-mt7981.c | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+--
+2.39.2
+
+--- a/drivers/pinctrl/mediatek/pinctrl-mt7981.c
++++ b/drivers/pinctrl/mediatek/pinctrl-mt7981.c
+@@ -700,6 +700,15 @@ static int mt7981_drv_vbus_pins[] = { 14
+ static int mt7981_drv_vbus_funcs[] = { 1, };
+ 
+ /* EMMC */
++static int mt7981_emmc_reset_pins[] = { 15, };
++static int mt7981_emmc_reset_funcs[] = { 2, };
++
++static int mt7981_emmc_4_pins[] = { 16, 17, 18, 19, 24, 25, };
++static int mt7981_emmc_4_funcs[] = { 2, 2, 2, 2, 2, 2, };
++
++static int mt7981_emmc_8_pins[] = { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, };
++static int mt7981_emmc_8_funcs[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, };
++
+ static int mt7981_emmc_45_pins[] = { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, };
+ static int mt7981_emmc_45_funcs[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, };
+ 
+@@ -854,6 +863,12 @@ static const struct group_desc mt7981_gr
+ 	PINCTRL_PIN_GROUP("udi", mt7981_udi),
+ 	/* @GPIO(14) DRV_VBUS(1) */
+ 	PINCTRL_PIN_GROUP("drv_vbus", mt7981_drv_vbus),
++	/* @GPIO(15): EMMC_RSTB(2) */
++	PINCTRL_PIN_GROUP("emmc_reset", mt7981_emmc_reset),
++	/* @GPIO(16,17,18,19,24,25): EMMC_DATx, EMMC_CLK, EMMC_CMD */
++	PINCTRL_PIN_GROUP("emmc_4", mt7981_emmc_4),
++	/* @GPIO(16,17,18,19,20,21,22,23,24,25): EMMC_DATx, EMMC_CLK, EMMC_CMD */
++	PINCTRL_PIN_GROUP("emmc_8", mt7981_emmc_8),
+ 	/* @GPIO(15,25): EMMC(2) */
+ 	PINCTRL_PIN_GROUP("emmc_45", mt7981_emmc_45),
+ 	/* @GPIO(16,21): SNFI(3) */
+@@ -957,7 +972,7 @@ static const char *mt7981_i2c_groups[] =
+ static const char *mt7981_pcm_groups[] = { "pcm", };
+ static const char *mt7981_udi_groups[] = { "udi", };
+ static const char *mt7981_usb_groups[] = { "drv_vbus", };
+-static const char *mt7981_flash_groups[] = { "emmc_45", "snfi", };
++static const char *mt7981_flash_groups[] = { "emmc_reset", "emmc_4", "emmc_8", "emmc_45", "snfi", };
+ static const char *mt7981_ethernet_groups[] = { "smi_mdc_mdio", "gbe_ext_mdc_mdio",
+ 	"wf0_mode1", "wf0_mode3", "mt7531_int", };
+ static const char *mt7981_ant_groups[] = { "ant_sel", };



From lede-commits at lists.infradead.org  Wed Mar 13 13:48:56 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 16:48:56 -0400
Subject: [openwrt/openwrt]  mediatek: mt7981: pinctrl: add additional uart
 group
In-Reply-To: <171036293642.1144579.777551762035572157@git-01.infra.openwrt.org>
References: <171036293642.1144579.777551762035572157@git-01.infra.openwrt.org>
Message-ID: <mailman.16218.1710362943.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/80e6e5202622a894e1739e15b761ceb8db7d9568

commit 80e6e5202622a894e1739e15b761ceb8db7d9568
Author: Jean Thomas <jean.thomas at wifirst.fr>
AuthorDate: Thu Dec 7 16:16:30 2023 +0100

    mediatek: mt7981: pinctrl: add additional uart group
    
    Add uart1_3 (pins 26, 27) group to the pinctrl driver for the
    MediaTek MT7981 SoC.
    
    Signed-off-by: Jean Thomas <jean.thomas at wifirst.fr>
---
 ...mediatek-mt7981-add-additional-uart-group.patch | 63 ++++++++++++++++++++++
 ...mediatek-mt7981-add-additional-uart-group.patch | 63 ++++++++++++++++++++++
 2 files changed, 126 insertions(+)

diff --git a/target/linux/mediatek/patches-6.1/253-pinctrl-mediatek-mt7981-add-additional-uart-group.patch b/target/linux/mediatek/patches-6.1/253-pinctrl-mediatek-mt7981-add-additional-uart-group.patch
new file mode 100644
index 0000000000..1e53777d65
--- /dev/null
+++ b/target/linux/mediatek/patches-6.1/253-pinctrl-mediatek-mt7981-add-additional-uart-group.patch
@@ -0,0 +1,63 @@
+From patchwork Wed Jan 17 12:42:33 2024
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Jean Thomas <jean.thomas at wifirst.fr>
+X-Patchwork-Id: 13521682
+Return-Path:
+ <linux-mediatek-bounces+linux-mediatek=archiver.kernel.org at lists.infradead.org>
+From: Jean Thomas <jean.thomas at wifirst.fr>
+To: sean.wang at kernel.org,
+	linus.walleij at linaro.org,
+	matthias.bgg at gmail.com,
+	angelogioacchino.delregno at collabora.com,
+	linux-mediatek at lists.infradead.org,
+	linux-gpio at vger.kernel.org,
+	linux-kernel at vger.kernel.org,
+	linux-arm-kernel at lists.infradead.org
+Cc: Jean Thomas <jean.thomas at wifirst.fr>
+Subject: [PATCH 1/2] pinctrl: mediatek: mt7981: add additional uart group
+Date: Wed, 17 Jan 2024 13:42:33 +0100
+Message-Id: <20240117124234.3137050-1-jean.thomas at wifirst.fr>
+MIME-Version: 1.0
+List-Id: <linux-mediatek.lists.infradead.org>
+
+Add uart1_3 (pins 26, 27) group to the pinctrl driver for the
+MediaTek MT7981 SoC.
+
+Signed-off-by: Jean Thomas <jean.thomas at wifirst.fr>
+Reviewed-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/pinctrl/mediatek/pinctrl-mt7981.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/pinctrl/mediatek/pinctrl-mt7981.c
++++ b/drivers/pinctrl/mediatek/pinctrl-mt7981.c
+@@ -737,6 +737,9 @@ static int mt7981_uart1_1_funcs[] = { 2,
+ static int mt7981_uart1_2_pins[] = { 9, 10, };
+ static int mt7981_uart1_2_funcs[] = { 2, 2, };
+ 
++static int mt7981_uart1_3_pins[] = { 26, 27, };
++static int mt7981_uart1_3_funcs[] = { 2, 2, };
++
+ /* UART2 */
+ static int mt7981_uart2_1_pins[] = { 22, 23, 24, 25, };
+ static int mt7981_uart2_1_funcs[] = { 3, 3, 3, 3, };
+@@ -871,6 +874,8 @@ static const struct group_desc mt7981_gr
+ 	PINCTRL_PIN_GROUP("uart1_1", mt7981_uart1_1),
+ 	/* @GPIO(9,10): UART1(2) */
+ 	PINCTRL_PIN_GROUP("uart1_2", mt7981_uart1_2),
++	/* @GPIO(26,27): UART1(2) */
++	PINCTRL_PIN_GROUP("uart1_3", mt7981_uart1_3),
+ 	/* @GPIO(22,25): UART1(3) */
+ 	PINCTRL_PIN_GROUP("uart2_1", mt7981_uart2_1),
+ 	/* @GPIO(22,24) PTA_EXT(4) */
+@@ -933,7 +938,7 @@ static const struct group_desc mt7981_gr
+ static const char *mt7981_wa_aice_groups[] = { "wa_aice1", "wa_aice2", "wm_aice1_1",
+ 	"wa_aice3", "wm_aice1_2", };
+ static const char *mt7981_uart_groups[] = { "net_wo0_uart_txd_0", "net_wo0_uart_txd_1",
+-	"net_wo0_uart_txd_2", "uart0", "uart1_0", "uart1_1", "uart1_2", "uart2_0",
++	"net_wo0_uart_txd_2", "uart0", "uart1_0", "uart1_1", "uart1_2", "uart1_3", "uart2_0",
+ 	"uart2_0_tx_rx", "uart2_1", "wm_uart_0", "wm_aurt_1", "wm_aurt_2", };
+ static const char *mt7981_dfd_groups[] = { "dfd", "dfd_ntrst", };
+ static const char *mt7981_wdt_groups[] = { "watchdog", "watchdog1", };
diff --git a/target/linux/mediatek/patches-6.6/253-pinctrl-mediatek-mt7981-add-additional-uart-group.patch b/target/linux/mediatek/patches-6.6/253-pinctrl-mediatek-mt7981-add-additional-uart-group.patch
new file mode 100644
index 0000000000..1e53777d65
--- /dev/null
+++ b/target/linux/mediatek/patches-6.6/253-pinctrl-mediatek-mt7981-add-additional-uart-group.patch
@@ -0,0 +1,63 @@
+From patchwork Wed Jan 17 12:42:33 2024
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Jean Thomas <jean.thomas at wifirst.fr>
+X-Patchwork-Id: 13521682
+Return-Path:
+ <linux-mediatek-bounces+linux-mediatek=archiver.kernel.org at lists.infradead.org>
+From: Jean Thomas <jean.thomas at wifirst.fr>
+To: sean.wang at kernel.org,
+	linus.walleij at linaro.org,
+	matthias.bgg at gmail.com,
+	angelogioacchino.delregno at collabora.com,
+	linux-mediatek at lists.infradead.org,
+	linux-gpio at vger.kernel.org,
+	linux-kernel at vger.kernel.org,
+	linux-arm-kernel at lists.infradead.org
+Cc: Jean Thomas <jean.thomas at wifirst.fr>
+Subject: [PATCH 1/2] pinctrl: mediatek: mt7981: add additional uart group
+Date: Wed, 17 Jan 2024 13:42:33 +0100
+Message-Id: <20240117124234.3137050-1-jean.thomas at wifirst.fr>
+MIME-Version: 1.0
+List-Id: <linux-mediatek.lists.infradead.org>
+
+Add uart1_3 (pins 26, 27) group to the pinctrl driver for the
+MediaTek MT7981 SoC.
+
+Signed-off-by: Jean Thomas <jean.thomas at wifirst.fr>
+Reviewed-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/pinctrl/mediatek/pinctrl-mt7981.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/pinctrl/mediatek/pinctrl-mt7981.c
++++ b/drivers/pinctrl/mediatek/pinctrl-mt7981.c
+@@ -737,6 +737,9 @@ static int mt7981_uart1_1_funcs[] = { 2,
+ static int mt7981_uart1_2_pins[] = { 9, 10, };
+ static int mt7981_uart1_2_funcs[] = { 2, 2, };
+ 
++static int mt7981_uart1_3_pins[] = { 26, 27, };
++static int mt7981_uart1_3_funcs[] = { 2, 2, };
++
+ /* UART2 */
+ static int mt7981_uart2_1_pins[] = { 22, 23, 24, 25, };
+ static int mt7981_uart2_1_funcs[] = { 3, 3, 3, 3, };
+@@ -871,6 +874,8 @@ static const struct group_desc mt7981_gr
+ 	PINCTRL_PIN_GROUP("uart1_1", mt7981_uart1_1),
+ 	/* @GPIO(9,10): UART1(2) */
+ 	PINCTRL_PIN_GROUP("uart1_2", mt7981_uart1_2),
++	/* @GPIO(26,27): UART1(2) */
++	PINCTRL_PIN_GROUP("uart1_3", mt7981_uart1_3),
+ 	/* @GPIO(22,25): UART1(3) */
+ 	PINCTRL_PIN_GROUP("uart2_1", mt7981_uart2_1),
+ 	/* @GPIO(22,24) PTA_EXT(4) */
+@@ -933,7 +938,7 @@ static const struct group_desc mt7981_gr
+ static const char *mt7981_wa_aice_groups[] = { "wa_aice1", "wa_aice2", "wm_aice1_1",
+ 	"wa_aice3", "wm_aice1_2", };
+ static const char *mt7981_uart_groups[] = { "net_wo0_uart_txd_0", "net_wo0_uart_txd_1",
+-	"net_wo0_uart_txd_2", "uart0", "uart1_0", "uart1_1", "uart1_2", "uart2_0",
++	"net_wo0_uart_txd_2", "uart0", "uart1_0", "uart1_1", "uart1_2", "uart1_3", "uart2_0",
+ 	"uart2_0_tx_rx", "uart2_1", "wm_uart_0", "wm_aurt_1", "wm_aurt_2", };
+ static const char *mt7981_dfd_groups[] = { "dfd", "dfd_ntrst", };
+ static const char *mt7981_wdt_groups[] = { "watchdog", "watchdog1", };



From lede-commits at lists.infradead.org  Wed Mar 13 13:48:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 13 Mar 2024 16:48:58 -0400
Subject: [openwrt/openwrt]  mediatek: Add support for GL.iNet X3000 (Spitz AX)
 and XE3000 (Puli AX)
In-Reply-To: <171036293642.1144579.777551762035572157@git-01.infra.openwrt.org>
References: <171036293642.1144579.777551762035572157@git-01.infra.openwrt.org>
Message-ID: <mailman.16219.1710362945.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d1016446dacd16a87e807478227f4f96a0a37a45

commit d1016446dacd16a87e807478227f4f96a0a37a45
Author: Jean Thomas <jean.thomas at wifirst.fr>
AuthorDate: Thu Nov 9 11:28:45 2023 +0100

    mediatek: Add support for GL.iNet X3000 (Spitz AX) and XE3000 (Puli AX)
    
    The GL.iNet X3000 and XE3000 are Wi-Fi 6 5G cellular routers, based on
    MediaTek MT7981A SoC. The XE3000 is the same device as the X3000,
    except for an additional battery.
    
    Specifications:
     - SoC: Filogic 820 MT7981A (1.3GHz)
     - RAM: DDR4 512M
     - Flash: eMMC 8G, MicroSD card slot
     - WiFi: 2.4GHz and 5GHz with 6 antennas
     - Ethernet:
       - 1x LAN (10/100/1000M)
       - 1x WAN (10/100/1000/2500M)
     - 5G: Quectel RM520N-GL with two nano-SIM card slots
     - USB: 1x USB 2.0 port
     - UART:
       - 3.3V, TX, RX, GND / 115200 8N1
    
    MAC addresses as verified by OEM firmware:
    vendor   OpenWrt    address     source
    WAN      eth0       label       factory 0x0a (label)
    LAN      eth1       label + 1
    2g       phy0-ap0   label + 2   factory 0x04
    5g       phy1-ap0   label + 3
    
    Installation via U-Boot rescue:
    1. Press and hold reset button while booting the device
    2. Wait for the Internet led to blink 5 times
    3. Release reset button
    4. The rescue page is accessible via http://192.168.1.1
    5. Select the OpenWrt sysupgrade image and start upgrade
    6. Wait for the router to flash new firmware and reboot
    
    Revert to stock firmware:
    1. Download the stock firmware from GL.iNet website
    2. Use the method explained above to flash the stock firmware
    
    Switch the modem network port between PCIe and USB interfaces:
    1. Connect to the AT commands (/dev/ttyUSB2) port using
    e.g. minicom: minicom -D /dev/ttyUSB2
    2. Check the current modem mode with 'AT+QCFG="data_interface"':
      - 0,0 indicates that the network port uses the USB interface
      - 1,0 indicates that the network port uses the PCIe interface
    3. Switch the active interface with:
      - 'AT+QCFG="data_interface",0,0' to use the USB interface
      - 'AT+QCFG="data_interface",1,0' to use the PCIe interface
    4. Reboot
    
    Signed-off-by: Jean Thomas <jean.thomas at wifirst.fr>
---
 .../dts/mt7981a-glinet-gl-x3000-xe3000-common.dtsi | 273 +++++++++++++++++++++
 .../linux/mediatek/dts/mt7981a-glinet-gl-x3000.dts |   8 +
 .../mediatek/dts/mt7981a-glinet-gl-xe3000.dts      |  23 ++
 .../filogic/base-files/etc/board.d/01_leds         |  11 +
 .../filogic/base-files/etc/board.d/02_network      |   4 +-
 .../etc/hotplug.d/ieee80211/11_fix_wifi_mac        |   4 +-
 .../filogic/base-files/lib/upgrade/platform.sh     |   6 +-
 target/linux/mediatek/image/filogic.mk             |  25 ++
 8 files changed, 351 insertions(+), 3 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7981a-glinet-gl-x3000-xe3000-common.dtsi b/target/linux/mediatek/dts/mt7981a-glinet-gl-x3000-xe3000-common.dtsi
new file mode 100644
index 0000000000..4b311dbe21
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981a-glinet-gl-x3000-xe3000-common.dtsi
@@ -0,0 +1,273 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/dts-v1/;
+
+#include "mt7981.dtsi"
+
+/ {
+	chosen {
+		bootargs = "console=ttyS0,115200n8 root=PARTLABEL=rootfs rootwait";
+	};
+
+	aliases {
+		label-mac-device = &gmac0;
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+	};
+
+	reg_5v: regulator-5v {
+		compatible = "regulator-fixed";
+		regulator-name = "fixed-5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	fan_5v: regulator-fan-5v {
+		compatible = "regulator-fixed";
+		regulator-name = "fan";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&pio 28 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio-export {
+		compatible = "gpio-export";
+
+		hub_power {
+			gpio-export,name = "hub_power";
+			gpio-export,output = <1>;
+			gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
+		};
+
+		5G_power {
+			gpio-export,name = "5G_power";
+			gpio-export,output = <1>;
+			gpios = <&pio 11 GPIO_ACTIVE_HIGH>;
+		};
+
+		5G_control {
+			gpio-export,name = "5G_control";
+			gpio-export,output = <1>;
+			gpios = <&pio 9 GPIO_ACTIVE_HIGH>;
+		};
+
+		5G_reset {
+			gpio-export,name = "5G_reset";
+			gpio-export,output = <0>;
+			gpios = <&pio 10 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		wifi2g {
+			label = "green:wifi2g";
+			gpios = <&pio 30 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi5g {
+			label = "green:wifi5g";
+			gpios = <&pio 38 GPIO_ACTIVE_LOW>;
+		};
+
+		5g_led1 {
+			label = "green:5g:led1";
+			gpios = <&pio 6 GPIO_ACTIVE_LOW>;
+		};
+
+		5g_led2 {
+			label = "green:5g:led2";
+			gpios = <&pio 7 GPIO_ACTIVE_LOW>;
+		};
+
+		5g_led3 {
+			label = "green:5g:led3";
+			gpios = <&pio 8 GPIO_ACTIVE_LOW>;
+		};
+
+		5g_led4 {
+			label = "green:5g:led4";
+			gpios = <&pio 4 GPIO_ACTIVE_HIGH>;
+		};
+
+		led_power: power {
+			label = "green:power";
+			gpios = <&pio 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wan {
+			label = "green:wan";
+			gpios = <&pio 31 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&mmc0 {
+	pinctrl-names = "default", "state_uhs";
+	pinctrl-0 = <&mmc0_pins_default>;
+	pinctrl-1 = <&mmc0_pins_uhs>;
+	bus-width = <8>;
+	max-frequency = <52000000>;
+	cap-mmc-highspeed;
+	vmmc-supply = <&reg_3p3v>;
+	non-removable;
+	status = "okay";
+
+	card at 0 {
+		compatible = "mmc-card";
+		reg = <0>;
+
+		block {
+			compatible = "block-device";
+			partitions {
+				block-partition-env {
+					partname = "u-boot-env";
+
+					nvmem-layout {
+						compatible = "u-boot,env-layout";
+					};
+				};
+
+				block-partition-factory {
+					partname = "factory";
+
+					nvmem-layout {
+						compatible = "fixed-layout";
+						#address-cells = <1>;
+						#size-cells = <1>;
+
+						eeprom_factory_0: eeprom at 0 {
+							reg = <0x0 0x1000>;
+						};
+
+						macaddr_factory_a: macaddr at a {
+							compatible = "mac-base";
+							reg = <0xa 0x6>;
+							#nvmem-cell-cells = <1>;
+						};
+					};
+				};
+			};
+		};
+	};
+};
+
+&mdio_bus {
+	reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>;
+	reset-delay-us = <600>;
+	reset-post-delay-us = <20000>;
+
+	phy5: ethernet-phy at 5 {
+		reg = <5>;
+		compatible = "ethernet-phy-ieee802.3-c45";
+	};
+};
+
+&eth {
+	status = "okay";
+
+	gmac0: mac at 0 {
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+		phy-handle = <&phy5>;
+		nvmem-cells = <&macaddr_factory_a 0>;
+		nvmem-cell-names = "mac-address";
+	};
+
+	gmac1: mac at 1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&int_gbe_phy>;
+		nvmem-cells = <&macaddr_factory_a 1>;
+		nvmem-cell-names = "mac-address";
+	};
+};
+
+&pio {
+	mmc0_pins_default: mmc0-pins-default {
+		mux {
+			function = "flash";
+			groups = "emmc_8";
+		};
+	};
+	mmc0_pins_uhs: mmc0-pins-uhs {
+		mux {
+			function = "flash";
+			groups = "emmc_8";
+		};
+	};
+	pcie_pins: pcie-pins {
+		mux {
+			function = "pcie";
+			groups = "pcie_pereset", "pcie_clk", "pcie_wake";
+		};
+	};
+	pwm0_pin: pwm0-pin-g0 {
+		mux {
+			function = "pwm";
+			groups = "pwm0_1";
+		};
+	};
+};
+
+&xhci {
+	phys = <&u2port0 PHY_TYPE_USB2>;
+	vbus-supply = <&reg_5v>;
+	mediatek,u3p-dis-msk = <0x01>;
+	status = "okay";
+};
+
+&usb_phy {
+	status = "okay";
+};
+
+&pcie {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie_pins>;
+	status = "okay";
+};
+
+&pwm {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pwm0_pin>;
+};
+
+&wifi {
+	nvmem-cells = <&eeprom_factory_0>;
+	nvmem-cell-names = "eeprom";
+	status = "okay";
+};
+
+&fan {
+	pwms = <&pwm 0 40000 0>;
+	fan-supply = <&fan_5v>;
+	interrupt-parent = <&pio>;
+	interrupts = <29 IRQ_TYPE_EDGE_RISING>;
+	status = "okay";
+};
diff --git a/target/linux/mediatek/dts/mt7981a-glinet-gl-x3000.dts b/target/linux/mediatek/dts/mt7981a-glinet-gl-x3000.dts
new file mode 100644
index 0000000000..bee1ecd89a
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981a-glinet-gl-x3000.dts
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7981a-glinet-gl-x3000-xe3000-common.dtsi"
+
+/ {
+	model = "GL.iNet GL-X3000";
+	compatible = "glinet,gl-x3000", "mediatek,mt7981";
+};
diff --git a/target/linux/mediatek/dts/mt7981a-glinet-gl-xe3000.dts b/target/linux/mediatek/dts/mt7981a-glinet-gl-xe3000.dts
new file mode 100644
index 0000000000..e14b944bc9
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981a-glinet-gl-xe3000.dts
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7981a-glinet-gl-x3000-xe3000-common.dtsi"
+
+/ {
+	model = "GL.iNet GL-XE3000";
+	compatible = "glinet,gl-xe3000", "mediatek,mt7981";
+};
+
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_pins>;
+	status = "okay";
+};
+
+&pio {
+	uart1_pins: uart1-pins-g1 {
+		mux {
+			function = "uart";
+			groups = "uart1_3";
+		};
+	};
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
index b3dceb74c4..69afdfde56 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
@@ -32,6 +32,17 @@ cudy,re3000-v1)
 cudy,wr3000-v1)
 	ucidef_set_led_netdev "wan" "wan" "blue:wan" "wan"
 	;;
+glinet,gl-x3000|\
+glinet,gl-xe3000)
+	ucidef_set_led_default "power" "POWER" "green:power" "1"
+	ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0"
+	ucidef_set_led_netdev "5g_1" "5G_1" "green:5g:led1" "wwan0"
+	ucidef_set_led_netdev "5g_2" "5G_2" "green:5g:led2" "wwan0"
+	ucidef_set_led_netdev "5g_3" "5G_3" "green:5g:led3" "wwan0"
+	ucidef_set_led_netdev "5g_4" "5G_4" "green:5g:led4" "wwan0"
+	ucidef_set_led_netdev "wlan2g" "WLAN2G" "green:wifi2g" "phy0-ap0"
+	ucidef_set_led_netdev "wlan5g" "WLAN5G" "green:wifi5g" "phy1-ap0"
+	;;
 mercusys,mr90x-v1)
 	ucidef_set_led_netdev "lan-0" "lan-0" "green:lan-0" "lan0" "link tx rx"
 	ucidef_set_led_netdev "lan-1" "lan-1" "green:lan-1" "lan1" "link tx rx"
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index dbda950cc5..8e4fd8003c 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -50,7 +50,9 @@ mediatek_setup_interfaces()
 		ucidef_set_interfaces_lan_wan "lan1" eth1
 		;;
 	glinet,gl-mt2500|\
-	glinet,gl-mt3000)
+	glinet,gl-mt3000|\
+	glinet,gl-x3000|\
+	glinet,gl-xe3000)
 		ucidef_set_interfaces_lan_wan eth1 eth0
 		;;
 	glinet,gl-mt6000|\
diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index ebee1b931f..facd2079c4 100644
--- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -74,7 +74,9 @@ case "$board" in
 		[ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress
 		[ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_add $addr 1) > /sys${DEVPATH}/macaddress
 		;;
-	glinet,gl-mt6000)
+	glinet,gl-mt6000|\
+	glinet,gl-x3000|\
+	glinet,gl-xe3000)
 		addr=$(mmc_get_mac_binary factory 0x04)
 		[ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress
 		[ "$PHYNBR" = "1" ] && macaddr_add $addr 1 > /sys${DEVPATH}/macaddress
diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
index abb692fb41..4df4370f0f 100755
--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
@@ -120,7 +120,9 @@ platform_do_upgrade() {
 		default_do_upgrade "$1"
 		;;
 	glinet,gl-mt2500|\
-	glinet,gl-mt6000)
+	glinet,gl-mt6000|\
+	glinet,gl-x3000|\
+	glinet,gl-xe3000)
 		CI_KERNPART="kernel"
 		CI_ROOTPART="rootfs"
 		emmc_do_upgrade "$1"
@@ -216,6 +218,8 @@ platform_copy_config() {
 	acer,predator-w6|\
 	glinet,gl-mt2500|\
 	glinet,gl-mt6000|\
+	glinet,gl-x3000|\
+	glinet,gl-xe3000|\
 	jdcloud,re-cp-03|\
 	ubnt,unifi-6-plus)
 		emmc_copy_config
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index b1c043bef2..7d2fac56b6 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -535,6 +535,31 @@ define Device/glinet_gl-mt6000
 endef
 TARGET_DEVICES += glinet_gl-mt6000
 
+define Device/glinet_gl-x3000-xe3000-common
+  DEVICE_VENDOR := GL.iNet
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware mkf2fs \
+    kmod-fs-f2fs kmod-hwmon-pwmfan kmod-usb3 kmod-usb-serial-option \
+    kmod-usb-storage kmod-usb-net-qmi-wwan uqmi
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+endef
+
+define Device/glinet_gl-x3000
+  DEVICE_MODEL := GL-X3000
+  DEVICE_DTS := mt7981a-glinet-gl-x3000
+  SUPPORTED_DEVICES := glinet,gl-x3000
+  $(call Device/glinet_gl-x3000-xe3000-common)
+endef
+TARGET_DEVICES += glinet_gl-x3000
+
+define Device/glinet_gl-xe3000
+  DEVICE_MODEL := GL-XE3000
+  DEVICE_DTS := mt7981a-glinet-gl-xe3000
+  SUPPORTED_DEVICES := glinet,gl-xe3000
+  $(call Device/glinet_gl-x3000-xe3000-common)
+endef
+TARGET_DEVICES += glinet_gl-xe3000
+
 define Device/h3c_magic-nx30-pro
   DEVICE_VENDOR := H3C
   DEVICE_MODEL := Magic NX30 Pro



From lede-commits at lists.infradead.org  Wed Mar 13 23:53:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 02:53:25 -0400
Subject: [openwrt/openwrt]  ramips: 5.15: delete remaining files
In-Reply-To: <171039920596.2339069.16508236973395880615@git-01.infra.openwrt.org>
References: <171039920596.2339069.16508236973395880615@git-01.infra.openwrt.org>
Message-ID: <mailman.16295.1710399212.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7b89388674ed6a33c5145064888c2505b5dbb4e1

commit 7b89388674ed6a33c5145064888c2505b5dbb4e1
Author: Nick Hainke <vincent at systemli.org>
AuthorDate: Wed Mar 13 23:49:32 2024 +0100

    ramips: 5.15: delete remaining files
    
    Remove the remaining configuration entries that were omitted in the
    previous commit.
    
    Fixes: 1576474f55e9 ("ramips: switch to 6.1 kernel")
    Signed-off-by: Nick Hainke <vincent at systemli.org>
---
 target/linux/ramips/mt7620/config-5.15 | 201 ----------------------
 target/linux/ramips/mt7621/config-5.15 | 297 ---------------------------------
 target/linux/ramips/mt76x8/config-5.15 | 199 ----------------------
 target/linux/ramips/rt288x/config-5.15 | 187 ---------------------
 target/linux/ramips/rt305x/config-5.15 | 182 --------------------
 target/linux/ramips/rt3883/config-5.15 | 182 --------------------
 6 files changed, 1248 deletions(-)

diff --git a/target/linux/ramips/mt7620/config-5.15 b/target/linux/ramips/mt7620/config-5.15
deleted file mode 100644
index 641b93e582..0000000000
--- a/target/linux/ramips/mt7620/config-5.15
+++ /dev/null
@@ -1,201 +0,0 @@
-CONFIG_AR8216_PHY=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_CEVT_R4K=y
-CONFIG_CEVT_SYSTICK_QUIRK=y
-CONFIG_CLKEVT_RT3352=y
-CONFIG_CLKSRC_MMIO=y
-CONFIG_CLK_MTMIPS=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_DIEI=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_RIXI=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS32_R1 is not set
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_MIPSR2_IRQ_VI=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CPU_SUPPORTS_MSA=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CSRC_R4K=y
-CONFIG_DEBUG_PINCTRL=y
-CONFIG_DMA_NONCOHERENT=y
-# CONFIG_DTB_MT7620A_EVAL is not set
-# CONFIG_DTB_OMEGA2P is not set
-CONFIG_DTB_RT_NONE=y
-# CONFIG_DTB_VOCORE2 is not set
-CONFIG_DTC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ETHERNET_PACKET_MANGLE=y
-CONFIG_FIXED_PHY=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_LIB_ASHLDI3=y
-CONFIG_GENERIC_LIB_ASHRDI3=y
-CONFIG_GENERIC_LIB_CMPDI2=y
-CONFIG_GENERIC_LIB_LSHRDI3=y
-CONFIG_GENERIC_LIB_UCMPDI2=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PHY=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GPIO_CDEV=y
-# CONFIG_GPIO_MT7621 is not set
-CONFIG_GPIO_RALINK=y
-CONFIG_GPIO_WATCHDOG=y
-# CONFIG_GPIO_WATCHDOG_ARCH_INITCALL is not set
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_ICPLUS_PHY=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_INTC=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_MARVELL_PHY=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGRATION=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set
-CONFIG_MIPS_CMDLINE_FROM_DTB=y
-CONFIG_MIPS_EBPF_JIT=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-CONFIG_MIPS_LD_CAN_LINK_VDSO=y
-# CONFIG_MIPS_NO_APPENDED_DTB is not set
-CONFIG_MIPS_RAW_APPENDED_DTB=y
-CONFIG_MIPS_SPRAM=y
-CONFIG_MODULES_USE_ELF_REL=y
-# CONFIG_MT7621_WDT is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
-CONFIG_MTD_SPLIT_JIMAGE_FW=y
-CONFIG_MTD_SPLIT_SEAMA_FW=y
-CONFIG_MTD_SPLIT_TPLINK_FW=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_MTD_VIRT_CONCAT=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_RALINK_GSW_MT7620=y
-CONFIG_NET_RALINK_MDIO=y
-CONFIG_NET_RALINK_MDIO_MT7620=y
-CONFIG_NET_RALINK_MT7620=y
-# CONFIG_NET_RALINK_RT3050 is not set
-CONFIG_NET_RALINK_SOC=y
-CONFIG_NET_SELFTESTS=y
-# CONFIG_NET_VENDOR_MEDIATEK is not set
-CONFIG_NET_VENDOR_RALINK=y
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-CONFIG_NVMEM=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-# CONFIG_PHY_MT7621_PCI is not set
-CONFIG_PHY_RALINK_USB=y
-CONFIG_PINCTRL=y
-# CONFIG_PINCTRL_AW9523 is not set
-CONFIG_PINCTRL_MT7620=y
-CONFIG_PINCTRL_RALINK=y
-# CONFIG_PINCTRL_SINGLE is not set
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RALINK=y
-CONFIG_RALINK_WDT=y
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_SERIAL_8250_RT288X=y
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SOC_MT7620=y
-# CONFIG_SOC_MT7621 is not set
-# CONFIG_SOC_RT288X is not set
-# CONFIG_SOC_RT305X is not set
-# CONFIG_SOC_RT3883 is not set
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-# CONFIG_SPI_MT7621 is not set
-CONFIG_SPI_RT2880=y
-CONFIG_SRCU=y
-CONFIG_SWCONFIG=y
-CONFIG_SWCONFIG_LEDS=y
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_TARGET_ISA_REV=2
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TINY_SRCU=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USE_OF=y
-CONFIG_WATCHDOG_CORE=y
diff --git a/target/linux/ramips/mt7621/config-5.15 b/target/linux/ramips/mt7621/config-5.15
deleted file mode 100644
index 05e4c1ce87..0000000000
--- a/target/linux/ramips/mt7621/config-5.15
+++ /dev/null
@@ -1,297 +0,0 @@
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_AT803X_PHY=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_BOARD_SCACHE=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLKSRC_MIPS_GIC=y
-CONFIG_CLK_MT7621=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_DIEI=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_RIXI=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS32_R1 is not set
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_MIPSR2_IRQ_EI=y
-CONFIG_CPU_MIPSR2_IRQ_VI=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_RMAP=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CPU_SUPPORTS_MSA=y
-CONFIG_CRC16=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_HASH_INFO=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
-CONFIG_CRYPTO_LZO=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_ZSTD=y
-CONFIG_CSRC_R4K=y
-CONFIG_DEBUG_PINCTRL=y
-CONFIG_DIMLIB=y
-CONFIG_DMA_NONCOHERENT=y
-# CONFIG_DTB_GNUBEE1 is not set
-# CONFIG_DTB_GNUBEE2 is not set
-CONFIG_DTB_RT_NONE=y
-CONFIG_DTC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_FIXED_PHY=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_LIB_ASHLDI3=y
-CONFIG_GENERIC_LIB_ASHRDI3=y
-CONFIG_GENERIC_LIB_CMPDI2=y
-CONFIG_GENERIC_LIB_LSHRDI3=y
-CONFIG_GENERIC_LIB_UCMPDI2=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PHY=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GLOB=y
-CONFIG_GPIOLIB_IRQCHIP=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_GENERIC=y
-CONFIG_GPIO_MT7621=y
-# CONFIG_GPIO_RALINK is not set
-CONFIG_GPIO_WATCHDOG=y
-# CONFIG_GPIO_WATCHDOG_ARCH_INITCALL is not set
-CONFIG_GRO_CELLS=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_I2C=y
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_GPIO=y
-CONFIG_I2C_MT7621=y
-CONFIG_ICPLUS_PHY=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_DOMAIN_HIERARCHY=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LED_TRIGGER_PHY=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEDIATEK_GE_PHY=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGRATION=y
-CONFIG_MIKROTIK=y
-CONFIG_MIKROTIK_RB_SYSFS=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-CONFIG_MIPS_CM=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set
-CONFIG_MIPS_CMDLINE_FROM_DTB=y
-CONFIG_MIPS_CPC=y
-CONFIG_MIPS_CPS=y
-# CONFIG_MIPS_CPS_NS16550_BOOL is not set
-CONFIG_MIPS_CPU_SCACHE=y
-CONFIG_MIPS_EBPF_JIT=y
-CONFIG_MIPS_GIC=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-CONFIG_MIPS_LD_CAN_LINK_VDSO=y
-CONFIG_MIPS_MT=y
-CONFIG_MIPS_MT_FPAFF=y
-CONFIG_MIPS_MT_SMP=y
-# CONFIG_MIPS_NO_APPENDED_DTB is not set
-CONFIG_MIPS_NR_CPU_NR_MAP=4
-CONFIG_MIPS_PERF_SHARED_TC_COUNTERS=y
-CONFIG_MIPS_RAW_APPENDED_DTB=y
-CONFIG_MIPS_SPRAM=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_MT7621_WDT=y
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_NAND_CORE=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_ECC_SW_HAMMING=y
-CONFIG_MTD_NAND_MT7621=y
-CONFIG_MTD_NAND_MTK_BMT=y
-# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_MTD_ROUTERBOOT_PARTS=y
-CONFIG_MTD_SERCOMM_PARTS=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
-CONFIG_MTD_SPLIT_FIT_FW=y
-CONFIG_MTD_SPLIT_MINOR_FW=y
-CONFIG_MTD_SPLIT_SEAMA_FW=y
-CONFIG_MTD_SPLIT_TPLINK_FW=y
-CONFIG_MTD_SPLIT_TRX_FW=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_BEB_LIMIT=20
-CONFIG_MTD_UBI_BLOCK=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_VIRT_CONCAT=y
-# CONFIG_MTK_HSDMA is not set
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NET_DEVLINK=y
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_MT7530=y
-CONFIG_NET_DSA_MT7530_MDIO=y
-# CONFIG_NET_DSA_MT7530_MMIO is not set
-CONFIG_NET_DSA_TAG_MTK=y
-CONFIG_NET_FLOW_LIMIT=y
-CONFIG_NET_MEDIATEK_SOC=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NET_SWITCHDEV=y
-CONFIG_NET_VENDOR_MEDIATEK=y
-# CONFIG_NET_VENDOR_RALINK is not set
-CONFIG_NO_HZ_COMMON=y
-CONFIG_NO_HZ_IDLE=y
-CONFIG_NR_CPUS=4
-CONFIG_NVMEM=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_PADATA=y
-CONFIG_PAGE_POOL=y
-CONFIG_PAGE_POOL_STATS=y
-CONFIG_PCI=y
-CONFIG_PCIE_MT7621=y
-CONFIG_PCI_DISABLE_COMMON_QUIRKS=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DOMAINS_GENERIC=y
-CONFIG_PCI_DRIVERS_GENERIC=y
-CONFIG_PCS_MTK_LYNXI=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_PHYLINK=y
-CONFIG_PHY_MT7621_PCI=y
-# CONFIG_PHY_RALINK_USB is not set
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_AW9523=y
-CONFIG_PINCTRL_MT7621=y
-CONFIG_PINCTRL_RALINK=y
-# CONFIG_PINCTRL_SINGLE is not set
-CONFIG_PINCTRL_SX150X=y
-CONFIG_POWER_RESET=y
-CONFIG_POWER_RESET_GPIO=y
-CONFIG_POWER_SUPPLY=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_QUEUED_RWLOCKS=y
-CONFIG_QUEUED_SPINLOCKS=y
-CONFIG_RALINK=y
-# CONFIG_RALINK_WDT is not set
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RFS_ACCEL=y
-CONFIG_RPS=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_BQ32K=y
-CONFIG_RTC_DRV_PCF8563=y
-CONFIG_RTC_I2C_AND_SPI=y
-CONFIG_RTC_MC146818_LIB=y
-# CONFIG_SCHED_CORE is not set
-CONFIG_SCHED_SMT=y
-CONFIG_SERIAL_8250_NR_UARTS=3
-CONFIG_SERIAL_8250_RUNTIME_UARTS=3
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SGL_ALLOC=y
-CONFIG_SMP=y
-CONFIG_SMP_UP=y
-CONFIG_SOCK_RX_QUEUE_MAPPING=y
-CONFIG_SOC_BUS=y
-# CONFIG_SOC_MT7620 is not set
-CONFIG_SOC_MT7621=y
-# CONFIG_SOC_RT288X is not set
-# CONFIG_SOC_RT305X is not set
-# CONFIG_SOC_RT3883 is not set
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-CONFIG_SPI_MT7621=y
-# CONFIG_SPI_RT2880 is not set
-CONFIG_SRCU=y
-CONFIG_SWPHY=y
-CONFIG_SYNC_R4K=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_HIGHMEM=y
-CONFIG_SYS_SUPPORTS_HOTPLUG_CPU=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_MIPS_CPS=y
-CONFIG_SYS_SUPPORTS_MULTITHREADING=y
-CONFIG_SYS_SUPPORTS_SCHED_SMT=y
-CONFIG_SYS_SUPPORTS_SMP=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_TARGET_ISA_REV=2
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TREE_RCU=y
-CONFIG_TREE_SRCU=y
-CONFIG_UBIFS_FS=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USE_OF=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_WEAK_ORDERING=y
-CONFIG_XPS=y
-CONFIG_XXHASH=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZSTD_COMPRESS=y
-CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/ramips/mt76x8/config-5.15 b/target/linux/ramips/mt76x8/config-5.15
deleted file mode 100644
index fc9aebc46a..0000000000
--- a/target/linux/ramips/mt76x8/config-5.15
+++ /dev/null
@@ -1,199 +0,0 @@
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_CEVT_R4K=y
-CONFIG_CEVT_SYSTICK_QUIRK=y
-CONFIG_CLKEVT_RT3352=y
-CONFIG_CLKSRC_MMIO=y
-CONFIG_CLK_MTMIPS=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_DIEI=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_RIXI=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS32_R1 is not set
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_MIPSR2_IRQ_VI=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CPU_SUPPORTS_MSA=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CSRC_R4K=y
-CONFIG_DEBUG_PINCTRL=y
-CONFIG_DMA_NONCOHERENT=y
-# CONFIG_DTB_MT7620A_EVAL is not set
-# CONFIG_DTB_OMEGA2P is not set
-CONFIG_DTB_RT_NONE=y
-# CONFIG_DTB_VOCORE2 is not set
-CONFIG_DTC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_FIXED_PHY=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_LIB_ASHLDI3=y
-CONFIG_GENERIC_LIB_ASHRDI3=y
-CONFIG_GENERIC_LIB_CMPDI2=y
-CONFIG_GENERIC_LIB_LSHRDI3=y
-CONFIG_GENERIC_LIB_UCMPDI2=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PHY=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GPIOLIB_IRQCHIP=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_GENERIC=y
-CONFIG_GPIO_MT7621=y
-# CONFIG_GPIO_RALINK is not set
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_ICPLUS_PHY=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_INTC=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGRATION=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set
-CONFIG_MIPS_CMDLINE_FROM_DTB=y
-CONFIG_MIPS_EBPF_JIT=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-CONFIG_MIPS_LD_CAN_LINK_VDSO=y
-# CONFIG_MIPS_NO_APPENDED_DTB is not set
-CONFIG_MIPS_RAW_APPENDED_DTB=y
-CONFIG_MIPS_SPRAM=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_MT7621_WDT=y
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_PARSER_TPLINK_SAFELOADER is not set
-CONFIG_MTD_PARSER_TRX=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
-CONFIG_MTD_SPLIT_TPLINK_FW=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_MTD_VIRT_CONCAT=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_RALINK_ESW_RT3050=y
-# CONFIG_NET_RALINK_MT7620 is not set
-CONFIG_NET_RALINK_RT3050=y
-CONFIG_NET_RALINK_SOC=y
-CONFIG_NET_SELFTESTS=y
-# CONFIG_NET_VENDOR_MEDIATEK is not set
-CONFIG_NET_VENDOR_RALINK=y
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-CONFIG_NVMEM=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-# CONFIG_PHY_MT7621_PCI is not set
-CONFIG_PHY_RALINK_USB=y
-CONFIG_PINCTRL=y
-# CONFIG_PINCTRL_AW9523 is not set
-CONFIG_PINCTRL_MT7620=y
-CONFIG_PINCTRL_RALINK=y
-# CONFIG_PINCTRL_SINGLE is not set
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RALINK=y
-# CONFIG_RALINK_WDT is not set
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RTC_CLASS=y
-CONFIG_SERIAL_8250_NR_UARTS=3
-CONFIG_SERIAL_8250_RUNTIME_UARTS=3
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SOC_MT7620=y
-# CONFIG_SOC_MT7621 is not set
-# CONFIG_SOC_RT288X is not set
-# CONFIG_SOC_RT305X is not set
-# CONFIG_SOC_RT3883 is not set
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-CONFIG_SPI_MT7621=y
-# CONFIG_SPI_RT2880 is not set
-CONFIG_SRCU=y
-CONFIG_SWCONFIG=y
-CONFIG_SWCONFIG_LEDS=y
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_TARGET_ISA_REV=2
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TINY_SRCU=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USE_OF=y
-CONFIG_WATCHDOG_CORE=y
diff --git a/target/linux/ramips/rt288x/config-5.15 b/target/linux/ramips/rt288x/config-5.15
deleted file mode 100644
index 9f502c220f..0000000000
--- a/target/linux/ramips/rt288x/config-5.15
+++ /dev/null
@@ -1,187 +0,0 @@
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLK_MTMIPS=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_DIEI=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_RIXI=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS32_R1 is not set
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CPU_SUPPORTS_MSA=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CSRC_R4K=y
-CONFIG_DMA_NONCOHERENT=y
-# CONFIG_DTB_RT2880_EVAL is not set
-CONFIG_DTB_RT_NONE=y
-CONFIG_DTC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_FIXED_PHY=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_LIB_ASHLDI3=y
-CONFIG_GENERIC_LIB_ASHRDI3=y
-CONFIG_GENERIC_LIB_CMPDI2=y
-CONFIG_GENERIC_LIB_LSHRDI3=y
-CONFIG_GENERIC_LIB_UCMPDI2=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_RALINK=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IP17XX_PHY=y
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_INTC=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGRATION=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_AUTO_PFN_OFFSET=y
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set
-CONFIG_MIPS_CMDLINE_FROM_DTB=y
-CONFIG_MIPS_EBPF_JIT=y
-CONFIG_MIPS_L1_CACHE_SHIFT=4
-CONFIG_MIPS_L1_CACHE_SHIFT_4=y
-CONFIG_MIPS_LD_CAN_LINK_VDSO=y
-# CONFIG_MIPS_NO_APPENDED_DTB is not set
-CONFIG_MIPS_RAW_APPENDED_DTB=y
-CONFIG_MIPS_SPRAM=y
-CONFIG_MODULES_USE_ELF_REL=y
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
-CONFIG_MTD_SPLIT_LZMA_FW=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_MTD_SPLIT_WRGG_FW=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_RALINK_MDIO=y
-CONFIG_NET_RALINK_MDIO_RT2880=y
-CONFIG_NET_RALINK_RT2880=y
-CONFIG_NET_RALINK_SOC=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NET_VENDOR_RALINK=y
-CONFIG_NLS=m
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-CONFIG_NVMEM=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-# CONFIG_PHY_MT7621_PCI is not set
-# CONFIG_PHY_RALINK_USB is not set
-CONFIG_PINCTRL=y
-# CONFIG_PINCTRL_AW9523 is not set
-CONFIG_PINCTRL_RALINK=y
-CONFIG_PINCTRL_RT288X=y
-# CONFIG_PINCTRL_SINGLE is not set
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RALINK=y
-CONFIG_RALINK_WDT=y
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_SERIAL_8250_RT288X=y
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-# CONFIG_SOC_MT7620 is not set
-# CONFIG_SOC_MT7621 is not set
-CONFIG_SOC_RT288X=y
-# CONFIG_SOC_RT305X is not set
-# CONFIG_SOC_RT3883 is not set
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-# CONFIG_SPI_MT7621 is not set
-CONFIG_SPI_RT2880=y
-CONFIG_SRCU=y
-CONFIG_SWCONFIG=y
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_TARGET_ISA_REV=2
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TINY_SRCU=y
-CONFIG_USB=m
-CONFIG_USB_COMMON=m
-CONFIG_USB_EHCI_HCD=m
-CONFIG_USB_EHCI_HCD_PLATFORM=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_OHCI_HCD_PLATFORM=m
-CONFIG_USB_SUPPORT=y
-CONFIG_USE_OF=y
-CONFIG_WATCHDOG_CORE=y
diff --git a/target/linux/ramips/rt305x/config-5.15 b/target/linux/ramips/rt305x/config-5.15
deleted file mode 100644
index 5af80adca6..0000000000
--- a/target/linux/ramips/rt305x/config-5.15
+++ /dev/null
@@ -1,182 +0,0 @@
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_CEVT_R4K=y
-CONFIG_CEVT_SYSTICK_QUIRK=y
-CONFIG_CLKEVT_RT3352=y
-CONFIG_CLKSRC_MMIO=y
-CONFIG_CLK_MTMIPS=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_DIEI=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_RIXI=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS32_R1 is not set
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CPU_SUPPORTS_MSA=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CSRC_R4K=y
-CONFIG_DEBUG_PINCTRL=y
-CONFIG_DMA_NONCOHERENT=y
-# CONFIG_DTB_RT305X_EVAL is not set
-CONFIG_DTB_RT_NONE=y
-CONFIG_DTC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_FIXED_PHY=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_LIB_ASHLDI3=y
-CONFIG_GENERIC_LIB_ASHRDI3=y
-CONFIG_GENERIC_LIB_CMPDI2=y
-CONFIG_GENERIC_LIB_LSHRDI3=y
-CONFIG_GENERIC_LIB_UCMPDI2=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PHY=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_RALINK=y
-CONFIG_GPIO_WATCHDOG=y
-# CONFIG_GPIO_WATCHDOG_ARCH_INITCALL is not set
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_INTC=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGRATION=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set
-CONFIG_MIPS_CMDLINE_FROM_DTB=y
-CONFIG_MIPS_EBPF_JIT=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-CONFIG_MIPS_LD_CAN_LINK_VDSO=y
-# CONFIG_MIPS_NO_APPENDED_DTB is not set
-CONFIG_MIPS_RAW_APPENDED_DTB=y
-CONFIG_MIPS_SPRAM=y
-CONFIG_MODULES_USE_ELF_REL=y
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
-CONFIG_MTD_SPLIT_JIMAGE_FW=y
-CONFIG_MTD_SPLIT_SEAMA_FW=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_RALINK_ESW_RT3050=y
-CONFIG_NET_RALINK_RT3050=y
-CONFIG_NET_RALINK_SOC=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NET_VENDOR_RALINK=y
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-CONFIG_NVMEM=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-# CONFIG_PHY_MT7621_PCI is not set
-CONFIG_PHY_RALINK_USB=y
-CONFIG_PINCTRL=y
-# CONFIG_PINCTRL_AW9523 is not set
-CONFIG_PINCTRL_RALINK=y
-CONFIG_PINCTRL_RT305X=y
-# CONFIG_PINCTRL_SINGLE is not set
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RALINK=y
-# CONFIG_RALINK_ILL_ACC is not set
-CONFIG_RALINK_WDT=y
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_SERIAL_8250_RT288X=y
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-# CONFIG_SOC_MT7620 is not set
-# CONFIG_SOC_MT7621 is not set
-# CONFIG_SOC_RT288X is not set
-CONFIG_SOC_RT305X=y
-# CONFIG_SOC_RT3883 is not set
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-# CONFIG_SPI_MT7621 is not set
-CONFIG_SPI_RT2880=y
-CONFIG_SRCU=y
-CONFIG_SWCONFIG=y
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_TARGET_ISA_REV=2
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TINY_SRCU=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USE_OF=y
-CONFIG_WATCHDOG_CORE=y
diff --git a/target/linux/ramips/rt3883/config-5.15 b/target/linux/ramips/rt3883/config-5.15
deleted file mode 100644
index 2977a3b531..0000000000
--- a/target/linux/ramips/rt3883/config-5.15
+++ /dev/null
@@ -1,182 +0,0 @@
-CONFIG_AR8216_PHY=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLK_MTMIPS=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_DIEI=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_RIXI=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS32_R1 is not set
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CPU_SUPPORTS_MSA=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CSRC_R4K=y
-CONFIG_DEBUG_PINCTRL=y
-CONFIG_DMA_NONCOHERENT=y
-# CONFIG_DTB_RT3883_EVAL is not set
-CONFIG_DTB_RT_NONE=y
-CONFIG_DTC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ETHERNET_PACKET_MANGLE=y
-CONFIG_FIXED_PHY=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_LIB_ASHLDI3=y
-CONFIG_GENERIC_LIB_ASHRDI3=y
-CONFIG_GENERIC_LIB_CMPDI2=y
-CONFIG_GENERIC_LIB_LSHRDI3=y
-CONFIG_GENERIC_LIB_UCMPDI2=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PHY=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_RALINK=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_INTC=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGRATION=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set
-CONFIG_MIPS_CMDLINE_FROM_DTB=y
-CONFIG_MIPS_EBPF_JIT=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-CONFIG_MIPS_LD_CAN_LINK_VDSO=y
-# CONFIG_MIPS_NO_APPENDED_DTB is not set
-CONFIG_MIPS_RAW_APPENDED_DTB=y
-CONFIG_MIPS_SPRAM=y
-CONFIG_MODULES_USE_ELF_REL=y
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
-CONFIG_MTD_SPLIT_SEAMA_FW=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_RALINK_MDIO=y
-CONFIG_NET_RALINK_MDIO_RT2880=y
-CONFIG_NET_RALINK_RT3883=y
-CONFIG_NET_RALINK_SOC=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NET_VENDOR_RALINK=y
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-CONFIG_NVMEM=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-# CONFIG_PHY_MT7621_PCI is not set
-CONFIG_PHY_RALINK_USB=y
-CONFIG_PINCTRL=y
-# CONFIG_PINCTRL_AW9523 is not set
-CONFIG_PINCTRL_RALINK=y
-CONFIG_PINCTRL_RT3883=y
-# CONFIG_PINCTRL_SINGLE is not set
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RALINK=y
-CONFIG_RALINK_WDT=y
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RTL8366_SMI=y
-CONFIG_RTL8367B_PHY=y
-CONFIG_RTL8367_PHY=y
-CONFIG_SERIAL_8250_RT288X=y
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-# CONFIG_SOC_MT7620 is not set
-# CONFIG_SOC_MT7621 is not set
-# CONFIG_SOC_RT288X is not set
-# CONFIG_SOC_RT305X is not set
-CONFIG_SOC_RT3883=y
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-# CONFIG_SPI_MT7621 is not set
-CONFIG_SPI_RT2880=y
-CONFIG_SRCU=y
-CONFIG_SWCONFIG=y
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_TARGET_ISA_REV=2
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TINY_SRCU=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USE_OF=y
-CONFIG_WATCHDOG_CORE=y



From lede-commits at lists.infradead.org  Thu Mar 14 06:26:02 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 09:26:02 -0400
Subject: [openwrt/openwrt]  mxs: switch default kernel to 6.1
In-Reply-To: <171042276264.3378320.14472303501988600224@git-01.infra.openwrt.org>
References: <171042276264.3378320.14472303501988600224@git-01.infra.openwrt.org>
Message-ID: <mailman.16419.1710422779.1280.lede-commits@lists.infradead.org>

wigyori pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/af860c4dbf5ecbddfbb589df82639f0ba2417467

commit af860c4dbf5ecbddfbb589df82639f0ba2417467
Author: Zoltan HERPAI <wigyori at uid0.hu>
AuthorDate: Thu Mar 14 14:21:17 2024 +0100

    mxs: switch default kernel to 6.1
    
    The testing kernel has been available since Jul/2023, let's switch
    to it by default.
    
    Signed-off-by: Zoltan HERPAI <wigyori at uid0.hu>
---
 target/linux/mxs/Makefile    |   3 +-
 target/linux/mxs/config-5.15 | 246 -------------------------------------------
 2 files changed, 1 insertion(+), 248 deletions(-)

diff --git a/target/linux/mxs/Makefile b/target/linux/mxs/Makefile
index 34e826dfbb..9e88e5aea2 100644
--- a/target/linux/mxs/Makefile
+++ b/target/linux/mxs/Makefile
@@ -11,8 +11,7 @@ FEATURES:=ext4 rtc usb gpio
 CPU_TYPE:=arm926ej-s
 SUBTARGETS:=generic
 
-KERNEL_PATCHVER:=5.15
-KERNEL_TESTING_PATCHVER:=6.1
+KERNEL_PATCHVER:=6.1
 
 KERNELNAME:=zImage dtbs
 
diff --git a/target/linux/mxs/config-5.15 b/target/linux/mxs/config-5.15
deleted file mode 100644
index 67b2cfa373..0000000000
--- a/target/linux/mxs/config-5.15
+++ /dev/null
@@ -1,246 +0,0 @@
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-CONFIG_ARCH_MULTIPLATFORM=y
-CONFIG_ARCH_MULTI_CPU_AUTO=y
-# CONFIG_ARCH_MULTI_V4 is not set
-# CONFIG_ARCH_MULTI_V4T is not set
-CONFIG_ARCH_MULTI_V4_V5=y
-CONFIG_ARCH_MULTI_V5=y
-CONFIG_ARCH_MXS=y
-CONFIG_ARCH_NR_GPIO=0
-CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM=y
-CONFIG_ARM_AMBA=y
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_ARM_ATAG_DTB_COMPAT=y
-CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_ARM_CRYPTO=y
-CONFIG_ARM_HAS_SG_CHAIN=y
-CONFIG_ARM_L1_CACHE_SHIFT=5
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_UNWIND=y
-CONFIG_ATAGS=y
-CONFIG_AUTO_ZRELADDR=y
-CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
-CONFIG_BLK_PM=y
-CONFIG_CLKSRC_MMIO=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="console=ttyAMA0,115200 root=/dev/mmcblk0p2 rw rootwait"
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_COREDUMP=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5TJ=y
-CONFIG_CPU_ARM926T=y
-# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-CONFIG_CPU_PABRT_LEGACY=y
-CONFIG_CPU_PM=y
-CONFIG_CPU_THUMB_CAPABLE=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_USE_DOMAINS=y
-CONFIG_CRC16=y
-CONFIG_CROSS_MEMORY_ATTACH=y
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_DEV_MXS_DCP=y
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_DEBUG_ALIGN_RODATA=y
-CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
-CONFIG_DMADEVICES=y
-CONFIG_DMA_ENGINE=y
-CONFIG_DMA_OF=y
-CONFIG_DMA_OPS=y
-CONFIG_DMA_REMAP=y
-CONFIG_DTC=y
-CONFIG_EDAC_ATOMIC_SCRUB=y
-CONFIG_EDAC_SUPPORT=y
-CONFIG_EXT4_FS=y
-CONFIG_EXTCON=y
-CONFIG_FEC=y
-CONFIG_FIXED_PHY=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_FS_IOMAP=y
-CONFIG_FS_MBCACHE=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_EARLY_IOREMAP=y
-CONFIG_GENERIC_IDLE_POLL_SETUP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
-CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_STRNCPY_FROM_USER=y
-CONFIG_GENERIC_STRNLEN_USER=y
-# CONFIG_GIANFAR is not set
-CONFIG_GLOB=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_GENERIC=y
-CONFIG_GPIO_GENERIC_PLATFORM=y
-CONFIG_GPIO_MXS=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HZ_FIXED=0
-CONFIG_HZ_PERIODIC=y
-CONFIG_I2C=y
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_ALGOPCA=y
-CONFIG_I2C_ALGOPCF=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_COMPAT=y
-CONFIG_I2C_MUX=y
-CONFIG_I2C_MUX_PINCTRL=y
-CONFIG_I2C_MXS=y
-CONFIG_IIO=y
-CONFIG_IIO_BUFFER=y
-CONFIG_IIO_KFIFO_BUF=y
-CONFIG_IIO_SYSFS_TRIGGER=y
-CONFIG_IIO_TRIGGER=y
-# CONFIG_IIO_TRIGGERED_BUFFER is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_INPUT=y
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_MXS=y
-CONFIG_IRQ_WORK=y
-# CONFIG_ISDN is not set
-CONFIG_JBD2=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_CORE=y
-CONFIG_MFD_MXS_LRADC=y
-CONFIG_MIGRATION=y
-CONFIG_MMC=y
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_MXS=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_MXS_DMA=y
-# CONFIG_MXS_LRADC_ADC is not set
-CONFIG_MXS_TIMER=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_KUSER_HELPERS=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_PTP_CLASSIFY=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NLS=y
-CONFIG_NVMEM=y
-CONFIG_NVMEM_MXS_OCOTP=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_OLD_SIGACTION=y
-CONFIG_OLD_SIGSUSPEND3=y
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_IMX23=y
-CONFIG_PINCTRL_IMX28=y
-CONFIG_PINCTRL_MXS=y
-# CONFIG_PINCTRL_SINGLE is not set
-CONFIG_PM=y
-CONFIG_PM_CLK=y
-CONFIG_POWER_SUPPLY=y
-CONFIG_PPS=y
-CONFIG_PTP_1588_CLOCK=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RATIONAL=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_REGULATOR_GPIO=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_STMP=y
-CONFIG_RTC_I2C_AND_SPI=y
-CONFIG_RTC_MC146818_LIB=y
-# CONFIG_SERIAL_8250 is not set
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_MXS_AUART=y
-CONFIG_SERIAL_MXS_AUART_CONSOLE=y
-CONFIG_SMSC_PHY=y
-CONFIG_SOC_BUS=y
-CONFIG_SOC_IMX23=y
-CONFIG_SOC_IMX28=y
-CONFIG_SPARSE_IRQ=y
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MXS=y
-CONFIG_SPLIT_PTLOCK_CPUS=999999
-CONFIG_SRCU=y
-CONFIG_STMP3XXX_RTC_WATCHDOG=y
-CONFIG_STMP_DEVICE=y
-CONFIG_SWPHY=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TINY_SRCU=y
-CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-CONFIG_UNWINDER_ARM=y
-CONFIG_USB=y
-CONFIG_USB_CHIPIDEA=y
-CONFIG_USB_CHIPIDEA_HOST=y
-CONFIG_USB_CHIPIDEA_IMX=y
-CONFIG_USB_CHIPIDEA_UDC=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_HCD_PLATFORM is not set
-CONFIG_USB_GADGET=y
-CONFIG_USB_MXS_PHY=y
-CONFIG_USB_OTG=y
-CONFIG_USB_PHY=y
-CONFIG_USB_ROLE_SWITCH=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ULPI_BUS=y
-CONFIG_USE_OF=y
-# CONFIG_VFP is not set
-CONFIG_WATCHDOG_CORE=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_BCJ=y
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_ZBOOT_ROM_TEXT=0



From lede-commits at lists.infradead.org  Thu Mar 14 07:59:16 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 10:59:16 -0400
Subject: [openwrt/openwrt]  generic: 5.15: mtk_eth_soc: backport fix for hang
 on link up
In-Reply-To: <171042835649.3594070.15823395691752891349@git-01.infra.openwrt.org>
References: <171042835649.3594070.15823395691752891349@git-01.infra.openwrt.org>
Message-ID: <mailman.16455.1710428360.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/83e37f71fa60649ed3c30eaf114e5245db2d7c4d

commit 83e37f71fa60649ed3c30eaf114e5245db2d7c4d
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Mar 13 18:43:28 2024 +0000

    generic: 5.15: mtk_eth_soc: backport fix for hang on link up
    
    Backport commit faa5f17fe2 ("kernel: mtk_eth_soc: release
    MAC_MCR_FORCE_LINK only when MAC is up") to Linux 5.15 as well.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    (cherry picked from commit 33d6ba5045023ee05ca884dc162dbd9202d8698e)
---
 ...k-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch | 50 ++++++++++++++++++++++
 ...t-mtk_eth_soc-add-paths-and-SerDes-modes-.patch | 17 ++++----
 2 files changed, 59 insertions(+), 8 deletions(-)

diff --git a/target/linux/generic/pending-5.15/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch b/target/linux/generic/pending-5.15/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
new file mode 100644
index 0000000000..39aa2831f1
--- /dev/null
+++ b/target/linux/generic/pending-5.15/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
@@ -0,0 +1,50 @@
+From ef5976ae4e117fae9a61bb3c0f8319a917a425ea Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Mon, 11 Mar 2024 17:43:28 +0000
+Subject: [PATCH] net: mediatek: mtk_eth_soc: release MAC_MCR_FORCE_LINK only when MAC is up
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Clearing bit MAC_MCR_FORCE_LINK which forces the link down too early
+can result in MAC ending up in a broken/blocked state.
+
+Fix this by handling this bit in the .mac_link_up and .mac_link_down
+calls instead of in .mac_finish.
+
+Fixes: b8fc9f30821ec ("net: ethernet: mediatek: Add basic PHYLINK support")
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+@@ -618,8 +618,7 @@ static int mtk_mac_finish(struct phylink
+ 	mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ 	mcr_new = mcr_cur;
+ 	mcr_new |= MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
+-		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_FORCE_LINK |
+-		   MAC_MCR_RX_FIFO_CLR_DIS;
++		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_RX_FIFO_CLR_DIS;
+ 
+ 	/* Only update control register when needed! */
+ 	if (mcr_new != mcr_cur)
+@@ -635,7 +634,7 @@ static void mtk_mac_link_down(struct phy
+ 					   phylink_config);
+ 	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ 
+-	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
++	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
+ 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ }
+ 
+@@ -744,7 +743,7 @@ static void mtk_mac_link_up(struct phyli
+ 	if (rx_pause)
+ 		mcr |= MAC_MCR_FORCE_RX_FC;
+ 
+-	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN;
++	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK;
+ 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ }
+ 
diff --git a/target/linux/generic/pending-5.15/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch b/target/linux/generic/pending-5.15/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
index 88d1744770..bf17462921 100644
--- a/target/linux/generic/pending-5.15/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
+++ b/target/linux/generic/pending-5.15/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch
@@ -387,24 +387,25 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return;
  
  err_phy:
-@@ -633,10 +697,13 @@ static void mtk_mac_link_down(struct phy
+@@ -632,10 +696,14 @@ static void mtk_mac_link_down(struct phy
  {
  	struct mtk_mac *mac = container_of(config, struct mtk_mac,
  					   phylink_config);
 -	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
  
--	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
+-	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
 -	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
 +	if (!mtk_interface_mode_is_xgmii(interface)) {
-+		mtk_m32(mac->hw, MAC_MCR_TX_EN | MAC_MCR_RX_EN, 0, MTK_MAC_MCR(mac->id));
-+		mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, MTK_XGMAC_STS(mac->id));
++		mtk_m32(mac->hw, MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK, 0, MTK_MAC_MCR(mac->id));
++		if (mtk_is_netsys_v3_or_greater(mac->hw))
++			mtk_m32(mac->hw, MTK_XGMAC_FORCE_LINK(mac->id), 0, MTK_XGMAC_STS(mac->id));
 +	} else if (mac->id != MTK_GMAC1_ID) {
 +		mtk_m32(mac->hw, XMAC_MCR_TRX_DISABLE, XMAC_MCR_TRX_DISABLE, MTK_XMAC_MCR(mac->id));
 +	}
  }
  
  static void mtk_set_queue_speed(struct mtk_eth *eth, unsigned int idx,
-@@ -708,13 +775,11 @@ static void mtk_set_queue_speed(struct m
+@@ -707,13 +775,11 @@ static void mtk_set_queue_speed(struct m
  	mtk_w32(eth, val, soc->reg_map->qdma.qtx_sch + ofs);
  }
  
@@ -422,7 +423,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	u32 mcr;
  
  	mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
-@@ -748,6 +813,55 @@ static void mtk_mac_link_up(struct phyli
+@@ -747,6 +813,55 @@ static void mtk_mac_link_up(struct phyli
  	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
  }
  
@@ -478,7 +479,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static const struct phylink_mac_ops mtk_phylink_ops = {
  	.validate = phylink_generic_validate,
  	.mac_select_pcs = mtk_mac_select_pcs,
-@@ -4561,8 +4675,21 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4560,8 +4675,21 @@ static int mtk_add_mac(struct mtk_eth *e
  		phy_interface_zero(mac->phylink_config.supported_interfaces);
  		__set_bit(PHY_INTERFACE_MODE_INTERNAL,
  			  mac->phylink_config.supported_interfaces);
@@ -500,7 +501,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	phylink = phylink_create(&mac->phylink_config,
  				 of_fwnode_handle(mac->of_node),
  				 phy_mode, &mtk_phylink_ops);
-@@ -4755,6 +4882,13 @@ static int mtk_probe(struct platform_dev
+@@ -4754,6 +4882,13 @@ static int mtk_probe(struct platform_dev
  
  		if (err)
  			return err;



From lede-commits at lists.infradead.org  Thu Mar 14 07:59:17 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 10:59:17 -0400
Subject: [openwrt/openwrt]  generic: mtk_eth_soc: fix PPE hanging issue
In-Reply-To: <171042835649.3594070.15823395691752891349@git-01.infra.openwrt.org>
References: <171042835649.3594070.15823395691752891349@git-01.infra.openwrt.org>
Message-ID: <mailman.16456.1710428360.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/82e2d3478ae692365b9f178e30b417ffa53cdc4d

commit 82e2d3478ae692365b9f178e30b417ffa53cdc4d
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Mar 13 18:44:52 2024 +0000

    generic: mtk_eth_soc: fix PPE hanging issue
    
    A patch to resolve an issue was found in MediaTek's GPL-licensed SDK:
    In the mtk_ppe_stop() function, the PPE scan mode is not disabled before
    disabling the PPE. This can potentially lead to a hang during the process
    of disabling the PPE.
    
    Without this patch, the PPE may experience a hang during the reboot test.
    
    Reference: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b40da332dfe763932a82f9f62a4709457a15dd6c
    
    Suggested-by: Bc-bocun Chen <bc-bocun.chen at mediatek.com>
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    (cherry picked from commit 003b9ff61c081dd820764d4d0a83bb2514646576)
---
 ...thernet-mtk_eth_soc-fix-PPE-hanging-issue.patch | 59 ++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/target/linux/generic/pending-5.15/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch b/target/linux/generic/pending-5.15/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
new file mode 100644
index 0000000000..2bbdc0bcce
--- /dev/null
+++ b/target/linux/generic/pending-5.15/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
@@ -0,0 +1,59 @@
+From c8262ebbf7ca546dd5ead3c0383a89eb401627ff Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Wed, 13 Mar 2024 17:55:02 +0000
+Subject: [PATCH] net: ethernet: mtk_eth_soc: fix PPE hanging issue
+
+A patch to resolve an issue was found in MediaTek's GPL-licensed SDK:
+In the mtk_ppe_stop() function, the PPE scan mode is not disabled before
+disabling the PPE. This can potentially lead to a hang during the process
+of disabling the PPE.
+
+Without this patch, the PPE may experience a hang during the reboot test.
+
+Reference: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b40da332dfe763932a82f9f62a4709457a15dd6c
+
+Suggested-by: Bc-bocun Chen <bc-bocun.chen at mediatek.com>
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/net/ethernet/mediatek/mtk_ppe.c | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
++++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
+@@ -1006,7 +1006,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
+ 			 MTK_PPE_KEEPALIVE_DISABLE) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_HASH_MODE, 1) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_SCAN_MODE,
+-			 MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) |
++			 MTK_PPE_SCAN_MODE_CHECK_AGE) |
+ 	      FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
+ 			 MTK_PPE_ENTRIES_SHIFT);
+ 	if (mtk_is_netsys_v2_or_greater(ppe->eth))
+@@ -1102,17 +1102,21 @@ int mtk_ppe_stop(struct mtk_ppe *ppe)
+ 
+ 	mtk_ppe_cache_enable(ppe, false);
+ 
+-	/* disable offload engine */
+-	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
+-	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
+-
+ 	/* disable aging */
+ 	val = MTK_PPE_TB_CFG_AGE_NON_L4 |
+ 	      MTK_PPE_TB_CFG_AGE_UNBIND |
+ 	      MTK_PPE_TB_CFG_AGE_TCP |
+ 	      MTK_PPE_TB_CFG_AGE_UDP |
+-	      MTK_PPE_TB_CFG_AGE_TCP_FIN;
++	      MTK_PPE_TB_CFG_AGE_TCP_FIN |
++		  MTK_PPE_TB_CFG_SCAN_MODE;
+ 	ppe_clear(ppe, MTK_PPE_TB_CFG, val);
+ 
+-	return mtk_ppe_wait_busy(ppe);
++	if (mtk_ppe_wait_busy(ppe))
++		return -ETIMEDOUT;
++
++	/* disable offload engine */
++	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
++	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
++
++	return 0;
+ }



From lede-commits at lists.infradead.org  Thu Mar 14 12:23:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 15:23:21 -0400
Subject: [openwrt/openwrt]  firmware: intel-microcode: update to 20240312
In-Reply-To: <171044420152.58575.17378744952371607185@git-01.infra.openwrt.org>
References: <171044420152.58575.17378744952371607185@git-01.infra.openwrt.org>
Message-ID: <mailman.16506.1710444208.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7b911a9c492f3db50fe97311b8cee9850acf03ad

commit 7b911a9c492f3db50fe97311b8cee9850acf03ad
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Thu Mar 14 07:13:37 2024 +0100

    firmware: intel-microcode: update to 20240312
    
    Debian changelog:
    
    intel-microcode (3.20240312.1) unstable; urgency=medium
    
      * New upstream microcode datafile 20240312 (closes: #1066108)
        - Mitigations for INTEL-SA-INTEL-SA-00972 (CVE-2023-39368):
          Protection mechanism failure of bus lock regulator for some Intel
          Processors may allow an unauthenticated user to potentially enable
          denial of service via network access.
        - Mitigations for INTEL-SA-INTEL-SA-00982 (CVE-2023-38575):
          Non-transparent sharing of return predictor targets between contexts in
          some Intel Processors may allow an authorized user to potentially
          enable information disclosure via local access.  Affects SGX as well.
        - Mitigations for INTEL-SA-INTEL-SA-00898 (CVE-2023-28746), aka RFDS:
          Information exposure through microarchitectural state after transient
          execution from some register files for some Intel Atom Processors and
          E-cores of Intel Core Processors may allow an authenticated user to
          potentially enable information disclosure via local access.  Enhances
          VERW instruction to clear stale register buffers.  Affects SGX as well.
          Requires kernel update to be effective.
        - Mitigations for INTEL-SA-INTEL-SA-00960 (CVE-2023-22655), aka TECRA:
          Protection mechanism failure in some 3rd and 4th Generation Intel Xeon
          Processors when using Intel SGX or Intel TDX may allow a privileged
          user to potentially enable escalation of privilege via local access.
          NOTE: effective only when loaded by firmware.  Allows SMM firmware to
          attack SGX/TDX.
        - Mitigations for INTEL-SA-INTEL-SA-01045 (CVE-2023-43490):
          Incorrect calculation in microcode keying mechanism for some Intel
          Xeon D Processors with Intel SGX may allow a privileged user to
          potentially enable information disclosure via local access.
      * Fixes for other unspecified functional issues on many processors
      * Updated microcodes:
        sig 0x00050653, pf_mask 0x97, 2023-07-28, rev 0x1000191, size 36864
        sig 0x00050656, pf_mask 0xbf, 2023-07-28, rev 0x4003605, size 38912
        sig 0x00050657, pf_mask 0xbf, 2023-07-28, rev 0x5003605, size 37888
        sig 0x0005065b, pf_mask 0xbf, 2023-08-03, rev 0x7002802, size 30720
        sig 0x00050665, pf_mask 0x10, 2023-08-03, rev 0xe000015, size 23552
        sig 0x000506f1, pf_mask 0x01, 2023-10-05, rev 0x003e, size 11264
        sig 0x000606a6, pf_mask 0x87, 2023-09-14, rev 0xd0003d1, size 307200
        sig 0x000606c1, pf_mask 0x10, 2023-12-05, rev 0x1000290, size 299008
        sig 0x000706a1, pf_mask 0x01, 2023-08-25, rev 0x0040, size 76800
        sig 0x000706a8, pf_mask 0x01, 2023-08-25, rev 0x0024, size 76800
        sig 0x000706e5, pf_mask 0x80, 2023-09-14, rev 0x00c4, size 114688
        sig 0x000806c1, pf_mask 0x80, 2023-09-13, rev 0x00b6, size 111616
        sig 0x000806c2, pf_mask 0xc2, 2023-09-13, rev 0x0036, size 98304
        sig 0x000806d1, pf_mask 0xc2, 2023-09-13, rev 0x0050, size 104448
        sig 0x000806ec, pf_mask 0x94, 2023-07-16, rev 0x00fa, size 106496
        sig 0x000806f8, pf_mask 0x87, 2024-01-03, rev 0x2b000590, size 579584
        sig 0x000806f7, pf_mask 0x87, 2024-01-03, rev 0x2b000590
        sig 0x000806f6, pf_mask 0x87, 2024-01-03, rev 0x2b000590
        sig 0x000806f5, pf_mask 0x87, 2024-01-03, rev 0x2b000590
        sig 0x000806f4, pf_mask 0x87, 2024-01-03, rev 0x2b000590
        sig 0x00090661, pf_mask 0x01, 2023-09-26, rev 0x0019, size 20480
        sig 0x00090672, pf_mask 0x07, 2023-09-19, rev 0x0034, size 224256
        sig 0x00090675, pf_mask 0x07, 2023-09-19, rev 0x0034
        sig 0x000b06f2, pf_mask 0x07, 2023-09-19, rev 0x0034
        sig 0x000b06f5, pf_mask 0x07, 2023-09-19, rev 0x0034
        sig 0x000906a3, pf_mask 0x80, 2023-09-19, rev 0x0432, size 222208
        sig 0x000906a4, pf_mask 0x80, 2023-09-19, rev 0x0432
        sig 0x000906c0, pf_mask 0x01, 2023-09-26, rev 0x24000026, size 20480
        sig 0x000906e9, pf_mask 0x2a, 2023-09-28, rev 0x00f8, size 108544
        sig 0x000906ea, pf_mask 0x22, 2023-07-26, rev 0x00f6, size 105472
        sig 0x000906ec, pf_mask 0x22, 2023-07-26, rev 0x00f6, size 106496
        sig 0x000906ed, pf_mask 0x22, 2023-07-27, rev 0x00fc, size 106496
        sig 0x000a0652, pf_mask 0x20, 2023-07-16, rev 0x00fa, size 97280
        sig 0x000a0653, pf_mask 0x22, 2023-07-16, rev 0x00fa, size 97280
        sig 0x000a0655, pf_mask 0x22, 2023-07-16, rev 0x00fa, size 97280
        sig 0x000a0660, pf_mask 0x80, 2023-07-16, rev 0x00fa, size 97280
        sig 0x000a0661, pf_mask 0x80, 2023-07-16, rev 0x00fa, size 96256
        sig 0x000a0671, pf_mask 0x02, 2023-09-14, rev 0x005e, size 108544
        sig 0x000b0671, pf_mask 0x32, 2023-12-14, rev 0x0122, size 215040
        sig 0x000b06a2, pf_mask 0xe0, 2023-12-07, rev 0x4121, size 220160
        sig 0x000b06a3, pf_mask 0xe0, 2023-12-07, rev 0x4121
        sig 0x000b06e0, pf_mask 0x11, 2023-09-25, rev 0x0015, size 138240
      * New microcodes:
        sig 0x000a06a4, pf_mask 0xe6, 2024-01-03, rev 0x001c, size 136192
        sig 0x000b06a8, pf_mask 0xe0, 2023-12-07, rev 0x4121, size 220160
        sig 0x000c06f2, pf_mask 0x87, 2023-11-20, rev 0x21000200, size 549888
        sig 0x000c06f1, pf_mask 0x87, 2023-11-20, rev 0x21000200
      * source: update symlinks to reflect id of the latest release, 20240312
      * changelog, debian/changelog: fix typos
    
     -- Henrique de Moraes Holschuh <hmh at debian.org>  Tue, 12 Mar 2024 20:28:17 -0300
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 package/firmware/intel-microcode/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/firmware/intel-microcode/Makefile b/package/firmware/intel-microcode/Makefile
index d9b527a61f..91a697c673 100644
--- a/package/firmware/intel-microcode/Makefile
+++ b/package/firmware/intel-microcode/Makefile
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=intel-microcode
-PKG_VERSION:=20231114
+PKG_VERSION:=20240312
 PKG_RELEASE:=1
 
 PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).1.tar.xz
 PKG_SOURCE_URL:=@DEBIAN/pool/non-free-firmware/i/intel-microcode/
-PKG_HASH:=637ac30d3fc36eb51d3ed71909f09f7408797f4527c20e58d3b0ad4eafc20869
+PKG_HASH:=25f53bab1bf0c84aba927a77a97a9f1147c94199fa95b5187d874f839f022808
 PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).1
 PKG_CPE_ID:=cpe:/a:intel:microcode
 



From lede-commits at lists.infradead.org  Thu Mar 14 13:04:05 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 16:04:05 -0400
Subject: [openwrt/openwrt]  kernel: Activate CONFIG_NET_VENDOR_DAVICOM
In-Reply-To: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
References: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
Message-ID: <mailman.16509.1710446644.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e40471e92316873e9da31ea32b61e98cb01649c1

commit e40471e92316873e9da31ea32b61e98cb01649c1
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Wed Mar 13 21:00:57 2024 +0100

    kernel: Activate CONFIG_NET_VENDOR_DAVICOM
    
    CONFIG_NET_VENDOR_DAVICOM is needed to activate the CONFIG_DM9000 option
    which builds the kmod-dm9000. This fixes the following warning:
    logs/package/kernel/linux/compile.txt:WARNING: kmod-dm9000 is not available in the kernel config - generating empty package
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 target/linux/generic/config-6.1 | 2 +-
 target/linux/generic/config-6.6 | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/linux/generic/config-6.1 b/target/linux/generic/config-6.1
index fabe7029c5..fa82f9cb9a 100644
--- a/target/linux/generic/config-6.1
+++ b/target/linux/generic/config-6.1
@@ -4361,7 +4361,7 @@ CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_NET_VENDOR_CISCO=y
 CONFIG_NET_VENDOR_CORTINA=y
-# CONFIG_NET_VENDOR_DAVICOM is not set
+CONFIG_NET_VENDOR_DAVICOM=y
 CONFIG_NET_VENDOR_DEC=y
 CONFIG_NET_VENDOR_DLINK=y
 CONFIG_NET_VENDOR_EMULEX=y
diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index d544ab9c4c..7486d8c882 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -4456,7 +4456,7 @@ CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_NET_VENDOR_CISCO=y
 CONFIG_NET_VENDOR_CORTINA=y
-# CONFIG_NET_VENDOR_DAVICOM is not set
+CONFIG_NET_VENDOR_DAVICOM=y
 CONFIG_NET_VENDOR_DEC=y
 CONFIG_NET_VENDOR_DLINK=y
 CONFIG_NET_VENDOR_EMULEX=y



From lede-commits at lists.infradead.org  Thu Mar 14 13:04:02 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 16:04:02 -0400
Subject: [openwrt/openwrt]  kernel: kmod-can: Fix build of can drivers
In-Reply-To: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
References: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
Message-ID: <mailman.16510.1710446644.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fcf045354918acbbd9665f28f334defab1f545fa

commit fcf045354918acbbd9665f28f334defab1f545fa
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Wed Mar 13 20:02:01 2024 +0100

    kernel: kmod-can: Fix build of can drivers
    
    Many can kernel modules are now gated by the newly introduced
    CONFIG_CAN_NETLINK configuration option. Activate it to build the can
    drivers again.
    This was changed in this upstream Linux commit:
    https://git.kernel.org/linus/df6ad5dd838e0fa543ca28ca6154901fa65a9443
    
    This should fix these warnings with kernel 6.1 and 6.6:
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-c-can is not available in the kernel config - generating empty package
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-c-can-pci is not available in the kernel config - generating empty package
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-c-can-platform is not available in the kernel config - generating empty package
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-mcp251x is not available in the kernel config - generating empty package
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-slcan is not available in the kernel config - generating empty package
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-usb-8dev is not available in the kernel config - generating empty package
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-usb-ems is not available in the kernel config - generating empty package
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-usb-kvaser is not available in the kernel config - generating empty package
    logs/package/kernel/linux/compile.txt:WARNING: kmod-can-usb-peak is not available in the kernel config - generating empty package
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/linux/modules/can.mk | 1 +
 target/linux/generic/config-6.6     | 1 +
 2 files changed, 2 insertions(+)

diff --git a/package/kernel/linux/modules/can.mk b/package/kernel/linux/modules/can.mk
index 2175d0d565..eda9b0c487 100644
--- a/package/kernel/linux/modules/can.mk
+++ b/package/kernel/linux/modules/can.mk
@@ -13,6 +13,7 @@ define KernelPackage/can
   KCONFIG:=\
 	CONFIG_CAN=m \
 	CONFIG_CAN_DEV \
+	CONFIG_CAN_NETLINK=y \
 	CONFIG_CAN_CALC_BITTIMING=y \
 	CONFIG_CAN_LEDS=y \
 	CONFIG_CAN_AT91=n \
diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 3cb50bc274..d544ab9c4c 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -898,6 +898,7 @@ CONFIG_CACHE_L2X0_PMU=y
 # CONFIG_CAN_DEV is not set
 # CONFIG_CAN_ESD_USB is not set
 # CONFIG_CAN_ETAS_ES58X is not set
+# CONFIG_CAN_F81604 is not set
 # CONFIG_CAN_GS_USB is not set
 # CONFIG_CAN_GW is not set
 # CONFIG_CAN_HI311X is not set



From lede-commits at lists.infradead.org  Thu Mar 14 13:04:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 16:04:04 -0400
Subject: [openwrt/openwrt]  kernel: kmod-hwmon-coretemp: Depend on x86
In-Reply-To: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
References: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
Message-ID: <mailman.16511.1710446647.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d2898c273dee0ebf8b086c8c400bea1f7ad6b699

commit d2898c273dee0ebf8b086c8c400bea1f7ad6b699
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Wed Mar 13 21:02:11 2024 +0100

    kernel: kmod-hwmon-coretemp: Depend on x86
    
    This kernel module depends on x86, it works only on some Intel CPUs.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/linux/modules/hwmon.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/hwmon.mk b/package/kernel/linux/modules/hwmon.mk
index 0d105dcc9e..5be63ce779 100644
--- a/package/kernel/linux/modules/hwmon.mk
+++ b/package/kernel/linux/modules/hwmon.mk
@@ -82,7 +82,7 @@ define KernelPackage/hwmon-coretemp
   KCONFIG:=CONFIG_SENSORS_CORETEMP
   FILES:=$(LINUX_DIR)/drivers/hwmon/coretemp.ko
   AUTOLOAD:=$(call AutoProbe,coretemp)
-  $(call AddDepends/hwmon,)
+  $(call AddDepends/hwmon, at TARGET_x86)
 endef
 
 define KernelPackage/hwmon-coretemp/description



From lede-commits at lists.infradead.org  Thu Mar 14 13:03:59 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 16:03:59 -0400
Subject: [openwrt/openwrt]  kernel: kmod-crypto-gf128: Fix build with kernel
 6.6
In-Reply-To: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
References: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
Message-ID: <mailman.16512.1710446647.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/c00fbba57c321fa5a1d063527f7e851aa30458ab

commit c00fbba57c321fa5a1d063527f7e851aa30458ab
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Wed Mar 13 20:24:23 2024 +0100

    kernel: kmod-crypto-gf128: Fix build with kernel 6.6
    
    The gf128mul.ko module was moved in kernel 6.2:
    https://git.kernel.org/linus/61c581a46a9668747d355436bd4b2505594539bd
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/linux/modules/crypto.mk | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index ea2a104335..21b7aa51bd 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -290,8 +290,12 @@ $(eval $(call KernelPackage,crypto-xcbc))
 
 define KernelPackage/crypto-gf128
   TITLE:=GF(2^128) multiplication functions CryptoAPI module
-  KCONFIG:=CONFIG_CRYPTO_GF128MUL
-  FILES:=$(LINUX_DIR)/crypto/gf128mul.ko
+  KCONFIG:= \
+	CONFIG_CRYPTO_GF128MUL \
+	CONFIG_CRYPTO_LIB_GF128MUL
+  FILES:= \
+	$(LINUX_DIR)/crypto/gf128mul.ko at lt6.2 \
+	$(LINUX_DIR)/lib/crypto/gf128mul.ko at ge6.2
   AUTOLOAD:=$(call AutoLoad,09,gf128mul)
   $(call AddDepends/crypto)
 endef



From lede-commits at lists.infradead.org  Thu Mar 14 13:03:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 16:03:58 -0400
Subject: [openwrt/openwrt]  kernel: kmod-crypto-user: Add missing dependency
In-Reply-To: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
References: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
Message-ID: <mailman.16513.1710446647.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/091897fad2efa7d0fea0bddd38c06ff491761e55

commit 091897fad2efa7d0fea0bddd38c06ff491761e55
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Wed Mar 13 18:09:22 2024 +0100

    kernel: kmod-crypto-user: Add missing dependency
    
    The algif_rng.ko kernel module depends on the rng.ko kernel module with
    kernel 6.6 when compiling for MIPS malta.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/linux/modules/crypto.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 49882c58df..ea2a104335 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -1119,7 +1119,7 @@ $(eval $(call KernelPackage,crypto-test))
 
 define KernelPackage/crypto-user
   TITLE:=CryptoAPI userspace interface
-  DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager
+  DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager +LINUX_6_6:kmod-crypto-rng
   KCONFIG:= \
 	CONFIG_CRYPTO_USER \
 	CONFIG_CRYPTO_USER_API \



From lede-commits at lists.infradead.org  Thu Mar 14 13:04:00 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 16:04:00 -0400
Subject: [openwrt/openwrt]  kernel: kmod-can-slcan: Fix can-slcan.ko location
In-Reply-To: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
References: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
Message-ID: <mailman.16514.1710446647.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/712cda13514f593f0d6b82ac7056442291fce14a

commit 712cda13514f593f0d6b82ac7056442291fce14a
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Wed Mar 13 20:35:19 2024 +0100

    kernel: kmod-can-slcan: Fix can-slcan.ko location
    
    The slcan.ko file was moved in upstream Linux:
    https://git.kernel.org/linus/98b12064591d635db86da4957b547067dc6897cc
    This fixes the build with kernel >= 6.0. This module was never build
    with kernel 6.1 before.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/linux/modules/can.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/can.mk b/package/kernel/linux/modules/can.mk
index 4ff85d1c01..e6c5db7135 100644
--- a/package/kernel/linux/modules/can.mk
+++ b/package/kernel/linux/modules/can.mk
@@ -182,7 +182,9 @@ $(eval $(call KernelPackage,can-raw))
 define KernelPackage/can-slcan
   TITLE:=Serial / USB serial CAN Adaptors (slcan)
   KCONFIG:=CONFIG_CAN_SLCAN
-  FILES:=$(LINUX_DIR)/drivers/net/can/slcan.ko
+  FILES:= \
+	$(LINUX_DIR)/drivers/net/can/slcan.ko at lt6.0 \
+	$(LINUX_DIR)/drivers/net/can/slcan/slcan.ko at ge6.0
   AUTOLOAD:=$(call AutoProbe,slcan)
   $(call AddDepends/can)
 endef



From lede-commits at lists.infradead.org  Thu Mar 14 13:04:01 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 16:04:01 -0400
Subject: [openwrt/openwrt]  kernel: kmod-can-flexcan: Fix flexcan.ko location
In-Reply-To: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
References: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
Message-ID: <mailman.16517.1710446647.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d249635c5b6ef1565e15672c372e27980a892180

commit d249635c5b6ef1565e15672c372e27980a892180
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Thu Mar 14 20:22:59 2024 +0100

    kernel: kmod-can-flexcan: Fix flexcan.ko location
    
    The flexcan.ko file was moved in upstream Linux:
    https://git.kernel.org/linus/bfd00e021cf162049946a9e0047b0997d2b35fec
    This fixes the build with kernel >= 5.17. This module was never build
    with kernel 6.1 before.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/linux/modules/can.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/can.mk b/package/kernel/linux/modules/can.mk
index e6c5db7135..2175d0d565 100644
--- a/package/kernel/linux/modules/can.mk
+++ b/package/kernel/linux/modules/can.mk
@@ -119,7 +119,9 @@ $(eval $(call KernelPackage,can-c-can-platform))
 define KernelPackage/can-flexcan
   TITLE:=Support for Freescale FLEXCAN based chips
   KCONFIG:=CONFIG_CAN_FLEXCAN
-  FILES:=$(LINUX_DIR)/drivers/net/can/flexcan.ko
+  FILES:= \
+	$(LINUX_DIR)/drivers/net/can/flexcan.ko at lt5.17 \
+	$(LINUX_DIR)/drivers/net/can/flexcan/flexcan.ko at ge5.17
   AUTOLOAD:=$(call AutoProbe,flexcan)
   $(call AddDepends/can, at TARGET_imx)
 endef



From lede-commits at lists.infradead.org  Thu Mar 14 13:04:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 14 Mar 2024 16:04:03 -0400
Subject: [openwrt/openwrt]  kernel: kmod-video-cpia2: Depend on kernel 5.15
In-Reply-To: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
References: <171044663881.149651.10626427164092648666@git-01.infra.openwrt.org>
Message-ID: <mailman.16518.1710446647.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9c6cf8e77c4adfa4808e937e76b8de38058d4e5a

commit 9c6cf8e77c4adfa4808e937e76b8de38058d4e5a
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Wed Mar 13 21:08:55 2024 +0100

    kernel: kmod-video-cpia2: Depend on kernel 5.15
    
    This driver was moved to staging in kernel 6.1 and then removed in
    kernel 6.3, see these commits:
    https://git.kernel.org/linus/be8cebc46d9d38166a1b3fda22a018ae52b0928e
    https://git.kernel.org/linus/9ea8a9c72a9b4d24e6045ee25f5e465dc22f9f55
    
    Build it only on older kernel versions.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/linux/modules/video.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
index e3a350e781..45034ba3e8 100644
--- a/package/kernel/linux/modules/video.mk
+++ b/package/kernel/linux/modules/video.mk
@@ -527,7 +527,7 @@ $(eval $(call KernelPackage,video-videobuf2))
 
 define KernelPackage/video-cpia2
   TITLE:=CPIA2 video driver
-  DEPENDS:=@USB_SUPPORT +kmod-usb-core
+  DEPENDS:=@USB_SUPPORT +kmod-usb-core @LINUX_5_15
   KCONFIG:=CONFIG_VIDEO_CPIA2
   FILES:=$(LINUX_DIR)/drivers/media/$(V4L2_USB_DIR)/cpia2/cpia2.ko
   AUTOLOAD:=$(call AutoProbe,cpia2)



From lede-commits at lists.infradead.org  Fri Mar 15 02:15:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 05:15:25 -0400
Subject: [openwrt/openwrt]  qualcommax: ipq60xx: mango-dvk: fix QCA8081 reset
 timings
In-Reply-To: <171049412547.1922351.14459529833165130118@git-01.infra.openwrt.org>
References: <171049412547.1922351.14459529833165130118@git-01.infra.openwrt.org>
Message-ID: <mailman.16646.1710494134.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/904aa4386548960903b10d1e910d99c75e5c1a37

commit 904aa4386548960903b10d1e910d99c75e5c1a37
Author: Mantas Pucka <mantas at 8devices.com>
AuthorDate: Thu Mar 14 13:37:02 2024 +0200

    qualcommax: ipq60xx: mango-dvk: fix QCA8081 reset timings
    
    Add missing reset delay properties for QCA8081 PHY.
    Without delays PHY operation is unreliable.
    
    Signed-off-by: Mantas Pucka <mantas at 8devices.com>
---
 .../qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-mango-dvk.dts     | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-mango-dvk.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-mango-dvk.dts
index 27247524a3..a64a3cd6e6 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-mango-dvk.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-mango-dvk.dts
@@ -261,6 +261,8 @@
 		compatible = "ethernet-phy-id004d.d101";
 		reg = <24>;
 		reset-gpios = <&tlmm 77 GPIO_ACTIVE_LOW>;
+		reset-assert-us = <10000>;
+		reset-deassert-us = <50000>;
 	};
 };
 



From lede-commits at lists.infradead.org  Fri Mar 15 07:10:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 10:10:03 -0400
Subject: [openwrt/openwrt]  mediatek: mt7988: add missing clock for PCIe ports
In-Reply-To: <171051180303.2557462.2946198867917012185@git-01.infra.openwrt.org>
References: <171051180303.2557462.2946198867917012185@git-01.infra.openwrt.org>
Message-ID: <mailman.16730.1710511811.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2b25f66d0a61edf7b9411432b6c920ad00f0f28b

commit 2b25f66d0a61edf7b9411432b6c920ad00f0f28b
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 15 14:07:58 2024 +0000

    mediatek: mt7988: add missing clock for PCIe ports
    
    Add missing CLK_TOP_PEXTP_Px_SEL clock for each of the 4 PCIe interfaces
    of the MT7988 SoC. Without that clock PCIe doesn't work reliable.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../arch/arm64/boot/dts/mediatek/mt7988a.dtsi        | 20 ++++++++++++--------
 .../arch/arm64/boot/dts/mediatek/mt7988a.dtsi        | 20 ++++++++++++--------
 2 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
index 904339335f..52bfed89ee 100644
--- a/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
+++ b/target/linux/mediatek/files-6.1/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
@@ -948,9 +948,10 @@
 			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P2>,
 				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P2>,
 				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P2>,
-				 <&infracfg CLK_INFRA_133M_PCIE_CK_P2>;
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P2>,
+				 <&topckgen CLK_TOP_PEXTP_P2_SEL>;
 			clock-names = "pl_250m", "tl_26m", "peri_26m",
-				      "top_133m";
+				      "top_133m", "pextp_clk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie2_pins>;
 			phys = <&xphyu3port0 PHY_TYPE_PCIE>;
@@ -989,9 +990,10 @@
 			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P3>,
 				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P3>,
 				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P3>,
-				 <&infracfg CLK_INFRA_133M_PCIE_CK_P3>;
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P3>,
+				 <&topckgen CLK_TOP_PEXTP_P3_SEL>;
 			clock-names = "pl_250m", "tl_26m", "peri_26m",
-				      "top_133m";
+				      "top_133m", "pextp_clk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie3_pins>;
 			#interrupt-cells = <1>;
@@ -1028,9 +1030,10 @@
 			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P0>,
 				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P0>,
 				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P0>,
-				 <&infracfg CLK_INFRA_133M_PCIE_CK_P0>;
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P0>,
+				 <&topckgen CLK_TOP_PEXTP_P0_SEL>;
 			clock-names = "pl_250m", "tl_26m", "peri_26m",
-				      "top_133m";
+				      "top_133m", "pextp_clk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie0_pins>;
 			#interrupt-cells = <1>;
@@ -1067,9 +1070,10 @@
 			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P1>,
 				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P1>,
 				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P1>,
-				 <&infracfg CLK_INFRA_133M_PCIE_CK_P1>;
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P1>,
+				 <&topckgen CLK_TOP_PEXTP_P1_SEL>;
 			clock-names = "pl_250m", "tl_26m", "peri_26m",
-				      "top_133m";
+				      "top_133m", "pextp_clk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie1_pins>;
 			#interrupt-cells = <1>;
diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
index 904339335f..52bfed89ee 100644
--- a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
+++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
@@ -948,9 +948,10 @@
 			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P2>,
 				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P2>,
 				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P2>,
-				 <&infracfg CLK_INFRA_133M_PCIE_CK_P2>;
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P2>,
+				 <&topckgen CLK_TOP_PEXTP_P2_SEL>;
 			clock-names = "pl_250m", "tl_26m", "peri_26m",
-				      "top_133m";
+				      "top_133m", "pextp_clk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie2_pins>;
 			phys = <&xphyu3port0 PHY_TYPE_PCIE>;
@@ -989,9 +990,10 @@
 			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P3>,
 				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P3>,
 				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P3>,
-				 <&infracfg CLK_INFRA_133M_PCIE_CK_P3>;
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P3>,
+				 <&topckgen CLK_TOP_PEXTP_P3_SEL>;
 			clock-names = "pl_250m", "tl_26m", "peri_26m",
-				      "top_133m";
+				      "top_133m", "pextp_clk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie3_pins>;
 			#interrupt-cells = <1>;
@@ -1028,9 +1030,10 @@
 			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P0>,
 				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P0>,
 				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P0>,
-				 <&infracfg CLK_INFRA_133M_PCIE_CK_P0>;
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P0>,
+				 <&topckgen CLK_TOP_PEXTP_P0_SEL>;
 			clock-names = "pl_250m", "tl_26m", "peri_26m",
-				      "top_133m";
+				      "top_133m", "pextp_clk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie0_pins>;
 			#interrupt-cells = <1>;
@@ -1067,9 +1070,10 @@
 			clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P1>,
 				 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P1>,
 				 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P1>,
-				 <&infracfg CLK_INFRA_133M_PCIE_CK_P1>;
+				 <&infracfg CLK_INFRA_133M_PCIE_CK_P1>,
+				 <&topckgen CLK_TOP_PEXTP_P1_SEL>;
 			clock-names = "pl_250m", "tl_26m", "peri_26m",
-				      "top_133m";
+				      "top_133m", "pextp_clk";
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie1_pins>;
 			#interrupt-cells = <1>;



From lede-commits at lists.infradead.org  Fri Mar 15 07:22:57 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 10:22:57 -0400
Subject: [openwrt/openwrt]  ath11k-firmware: update IPQ8074 and QCN9074 to
 2.9.0.1-01977
In-Reply-To: <171051257755.2585889.10162183715539749981@git-01.infra.openwrt.org>
References: <171051257755.2585889.10162183715539749981@git-01.infra.openwrt.org>
Message-ID: <mailman.16731.1710512582.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/af7d5a40a96b3bdb648a255f9de7653410a7add5

commit af7d5a40a96b3bdb648a255f9de7653410a7add5
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Mar 14 09:20:56 2024 +0100

    ath11k-firmware: update IPQ8074 and QCN9074 to 2.9.0.1-01977
    
    After a long time QCA has pushed an updated release of 2.9.0.1 firmware
    for IPQ8074 and QCN9074, so lets update to 2.9.0.1-01977.
    
    Sadly, still nothing new for IPQ6018.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/firmware/ath11k-firmware/Makefile | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/package/firmware/ath11k-firmware/Makefile b/package/firmware/ath11k-firmware/Makefile
index 2af34354cf..82555009c7 100644
--- a/package/firmware/ath11k-firmware/Makefile
+++ b/package/firmware/ath11k-firmware/Makefile
@@ -8,10 +8,10 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ath11k-firmware
-PKG_SOURCE_DATE:=2023-08-22
-PKG_SOURCE_VERSION:=d8f82a98ff1aef330d65d8b5660b46d1a9809ee3
-PKG_MIRROR_HASH:=3dba19449758c3b17f117990d7ad4086554e012b579f1de16e9d9196a7fbaaa7
-PKG_RELEASE:=2
+PKG_SOURCE_DATE:=2024-03-14
+PKG_SOURCE_VERSION:=795809c7041582bd51bdfaa1f548b916ae8d4382
+PKG_MIRROR_HASH:=7d6d2946531c336a402f51e453d5b0e2b5c17201432d6cfa5482eb3626270212
+PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/quic/upstream-wifi-fw.git
@@ -87,14 +87,14 @@ endef
 define Package/ath11k-firmware-ipq8074/install
 	$(INSTALL_DIR) $(1)/lib/firmware/IPQ8074
 	$(INSTALL_DATA) \
-		$(PKG_BUILD_DIR)/ath11k-firmware/IPQ8074/hw2.0/2.9.0.1/WLAN.HK.2.9.0.1-01890-QCAHKSWPL_SILICONZ-1/* \
+		$(PKG_BUILD_DIR)/ath11k-firmware/IPQ8074/hw2.0/2.9.0.1/WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1/* \
 		$(1)/lib/firmware/IPQ8074/
 endef
 
 define Package/ath11k-firmware-qcn9074/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCN9074/hw1.0
 	$(INSTALL_DATA) \
-		$(PKG_BUILD_DIR)/ath11k-firmware/QCN9074/hw1.0/2.9.0.1/WLAN.HK.2.9.0.1-01890-QCAHKSWPL_SILICONZ-1/* \
+		$(PKG_BUILD_DIR)/ath11k-firmware/QCN9074/hw1.0/2.9.0.1/WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1/* \
 		$(1)/lib/firmware/ath11k/QCN9074/hw1.0/
 	$(INSTALL_BIN) \
 		$(DL_DIR)/$(QCN9074_BOARD_FILE) $(1)/lib/firmware/ath11k/QCN9074/hw1.0/board-2.bin



From lede-commits at lists.infradead.org  Fri Mar 15 07:25:09 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 10:25:09 -0400
Subject: [openwrt/openwrt]  kernel: modules: video: package DRM suballocation
 helper
In-Reply-To: <171051270753.2590863.3307643284835115491@git-01.infra.openwrt.org>
References: <171051270753.2590863.3307643284835115491@git-01.infra.openwrt.org>
Message-ID: <mailman.16736.1710512712.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/08f1c36d0081ca183dce2c17cd5d0692ad63e430

commit 08f1c36d0081ca183dce2c17cd5d0692ad63e430
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 15 12:50:14 2024 +0100

    kernel: modules: video: package DRM suballocation helper
    
    Linux 6.4 has split out the previously AMDGPU specific suballocation
    helper into a generic one and it has its own symbol now.
    
    So, lets package it as a separate helper as AMDGPU still requires it
    for 6.6.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/video.mk | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
index 73c94e391c..1e12ffbb40 100644
--- a/package/kernel/linux/modules/video.mk
+++ b/package/kernel/linux/modules/video.mk
@@ -353,6 +353,22 @@ endef
 
 $(eval $(call KernelPackage,drm-kms-helper))
 
+define KernelPackage/drm-suballoc-helper
+  SUBMENU:=$(VIDEO_MENU)
+  HIDDEN:=1
+  TITLE:=DRM suballocation helper
+  DEPENDS:=@DISPLAY_SUPPORT +kmod-drm @LINUX_6_6
+  KCONFIG:=CONFIG_DRM_SUBALLOC_HELPER
+  FILES:=$(LINUX_DIR)/drivers/gpu/drm/drm_suballoc_helper.ko
+  AUTOLOAD:=$(call AutoProbe,drm_suballoc_helper)
+endef
+
+define KernelPackage/drm-suballoc-helper/description
+  DRM suballocation helper.
+endef
+
+$(eval $(call KernelPackage,drm-suballoc-helper))
+
 define KernelPackage/drm-amdgpu
   SUBMENU:=$(VIDEO_MENU)
   TITLE:=AMDGPU DRM support



From lede-commits at lists.infradead.org  Fri Mar 15 07:25:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 10:25:07 -0400
Subject: [openwrt/openwrt]  kernel: modules: video: drm: remove DRM_EXEC and
 DRM_SUBALLOC_HELPER
In-Reply-To: <171051270753.2590863.3307643284835115491@git-01.infra.openwrt.org>
References: <171051270753.2590863.3307643284835115491@git-01.infra.openwrt.org>
Message-ID: <mailman.16737.1710512712.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5c7400e932068234ab17f075c6abcfd03dfee415

commit 5c7400e932068234ab17f075c6abcfd03dfee415
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 15 11:34:20 2024 +0100

    kernel: modules: video: drm: remove DRM_EXEC and DRM_SUBALLOC_HELPER
    
    As part of adding kernel 6.6 support, DRM_EXEC and DRM_SUBALLOC_HELPER were
    added to the kmod-drm, however these are only used by drm-amdgpu and
    drm-radeon which are only supported on x86.
    
    So, lets start fixing building of other targets by removing these from the
    main kmod-drm, in follow-up commits they will be packaged separately and
    selected when required.
    
    Fixes: 5b08b5600720 ("kernel: modules: video: adapt for kernel 6.6")
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/video.mk | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
index 45034ba3e8..1a4bf8ac77 100644
--- a/package/kernel/linux/modules/video.mk
+++ b/package/kernel/linux/modules/video.mk
@@ -246,15 +246,11 @@ define KernelPackage/drm
   HIDDEN:=1
   DEPENDS:=+kmod-dma-buf +kmod-i2c-core +PACKAGE_kmod-backlight:kmod-backlight \
 	+kmod-fb
-  KCONFIG:=CONFIG_DRM \
-	CONFIG_DRM_EXEC at ge6.6 \
-	CONFIG_DRM_SUBALLOC_HELPER at ge6.4
+  KCONFIG:=CONFIG_DRM
   FILES:= \
 	$(LINUX_DIR)/drivers/gpu/drm/drm.ko \
-	$(LINUX_DIR)/drivers/gpu/drm/drm_panel_orientation_quirks.ko \
-	$(LINUX_DIR)/drivers/gpu/drm/drm_exec.ko at ge6.6 \
-	$(LINUX_DIR)/drivers/gpu/drm/drm_suballoc_helper.ko at ge6.4
-  AUTOLOAD:=$(call AutoLoad,05,drm_exec at ge6.6 drm_suballoc_helper at ge6.4 drm)
+	$(LINUX_DIR)/drivers/gpu/drm/drm_panel_orientation_quirks.ko
+  AUTOLOAD:=$(call AutoLoad,05,drm)
 endef
 
 define KernelPackage/drm/description



From lede-commits at lists.infradead.org  Fri Mar 15 07:25:10 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 10:25:10 -0400
Subject: [openwrt/openwrt]  kernel: modules: video: select drm-exec and
 drm-suballoc-helper for AMDGPU
In-Reply-To: <171051270753.2590863.3307643284835115491@git-01.infra.openwrt.org>
References: <171051270753.2590863.3307643284835115491@git-01.infra.openwrt.org>
Message-ID: <mailman.16740.1710512714.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/8fb23465ca90073ae9313ee366af302930ec1d6c

commit 8fb23465ca90073ae9313ee366af302930ec1d6c
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 15 12:50:43 2024 +0100

    kernel: modules: video: select drm-exec and drm-suballoc-helper for AMDGPU
    
    drm-amdgpu and drm-radeon require drm-exec and/or drm-suballoc-helper in
    6.6, so since we have them packaged separately include them when required.
    
    Fixes: 5b08b5600720 ("kernel: modules: video: adapt for kernel 6.6")
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/video.mk | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
index 1e12ffbb40..16c4f51f5b 100644
--- a/package/kernel/linux/modules/video.mk
+++ b/package/kernel/linux/modules/video.mk
@@ -374,7 +374,8 @@ define KernelPackage/drm-amdgpu
   TITLE:=AMDGPU DRM support
   DEPENDS:=@TARGET_x86 @DISPLAY_SUPPORT +kmod-backlight +kmod-drm-ttm \
 	+kmod-drm-ttm-helper +kmod-drm-kms-helper +kmod-i2c-algo-bit +amdgpu-firmware \
-	+kmod-drm-display-helper +kmod-drm-buddy +kmod-acpi-video
+	+kmod-drm-display-helper +kmod-drm-buddy +kmod-acpi-video \
+	+LINUX_6_6:kmod-drm-exec +LINUX_6_6:kmod-drm-suballoc-helper
   KCONFIG:=CONFIG_DRM_AMDGPU \
 	CONFIG_DRM_AMDGPU_SI=y \
 	CONFIG_DRM_AMDGPU_CIK=y \
@@ -475,7 +476,7 @@ define KernelPackage/drm-radeon
   TITLE:=Radeon DRM support
   DEPENDS:=@TARGET_x86 @DISPLAY_SUPPORT +kmod-backlight +kmod-drm-kms-helper \
 	+kmod-drm-ttm +kmod-drm-ttm-helper +kmod-i2c-algo-bit +radeon-firmware \
-	+kmod-drm-display-helper +kmod-acpi-video
+	+kmod-drm-display-helper +kmod-acpi-video +LINUX_6_6:kmod-drm-suballoc-helper
   KCONFIG:=CONFIG_DRM_RADEON
   FILES:=$(LINUX_DIR)/drivers/gpu/drm/radeon/radeon.ko
   AUTOLOAD:=$(call AutoProbe,radeon)



From lede-commits at lists.infradead.org  Fri Mar 15 07:25:08 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 10:25:08 -0400
Subject: [openwrt/openwrt]  kernel: modules: video: package DRM EXEC
In-Reply-To: <171051270753.2590863.3307643284835115491@git-01.infra.openwrt.org>
References: <171051270753.2590863.3307643284835115491@git-01.infra.openwrt.org>
Message-ID: <mailman.16741.1710512714.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a6b3cc95f2e079a9924a225e343bdf9cb8b35d21

commit a6b3cc95f2e079a9924a225e343bdf9cb8b35d21
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 15 12:14:58 2024 +0100

    kernel: modules: video: package DRM EXEC
    
    Linux 6.6 has added DRM EXEC as a separate symbol, so package it separately
    as AMDGPU requires it.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/linux/modules/video.mk | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
index 1a4bf8ac77..73c94e391c 100644
--- a/package/kernel/linux/modules/video.mk
+++ b/package/kernel/linux/modules/video.mk
@@ -289,6 +289,22 @@ endef
 
 $(eval $(call KernelPackage,drm-display-helper))
 
+define KernelPackage/drm-exec
+  SUBMENU:=$(VIDEO_MENU)
+  HIDDEN:=1
+  TITLE:=Execution context for command submissions
+  DEPENDS:=@DISPLAY_SUPPORT +kmod-drm @LINUX_6_6
+  KCONFIG:=CONFIG_DRM_EXEC
+  FILES:=$(LINUX_DIR)/drivers/gpu/drm/drm_exec.ko
+  AUTOLOAD:=$(call AutoProbe,drm_exec)
+endef
+
+define KernelPackage/drm-exec/description
+  Execution context for command submissions.
+endef
+
+$(eval $(call KernelPackage,drm-exec))
+
 define KernelPackage/drm-ttm
   SUBMENU:=$(VIDEO_MENU)
   TITLE:=GPU memory management subsystem



From lede-commits at lists.infradead.org  Fri Mar 15 11:30:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 14:30:52 -0400
Subject: [openwrt/openwrt]  generic: 6.6: backport support for SDX75-based MHI
 5G modems
In-Reply-To: <171052745136.3206746.10051315832553607682@git-01.infra.openwrt.org>
References: <171052745136.3206746.10051315832553607682@git-01.infra.openwrt.org>
Message-ID: <mailman.16783.1710527460.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6da3c9ddbca69d854e367f381092f32bb353ced9

commit 6da3c9ddbca69d854e367f381092f32bb353ced9
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 15 18:04:53 2024 +0000

    generic: 6.6: backport support for SDX75-based MHI 5G modems
    
    Also backport most recent MHI modem additions to Linux 6.6.
    Adds support for generic SDX75-based modems.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...t-Add-a-separate-timeout-parameter-for-wa.patch | 175 +++++++++++++++++++++
 ...t-pci_generic-Add-SDX75-based-modem-suppo.patch |  62 ++++++++
 ...t-pci_generic-constify-modem_telit_fn980_.patch |  28 ++++
 .../790-bus-mhi-core-add-SBL-state-callback.patch  |   2 +-
 4 files changed, 266 insertions(+), 1 deletion(-)

diff --git a/target/linux/generic/backport-6.6/850-v6.8-bus-mhi-host-Add-a-separate-timeout-parameter-for-wa.patch b/target/linux/generic/backport-6.6/850-v6.8-bus-mhi-host-Add-a-separate-timeout-parameter-for-wa.patch
new file mode 100644
index 0000000000..23f20ed65e
--- /dev/null
+++ b/target/linux/generic/backport-6.6/850-v6.8-bus-mhi-host-Add-a-separate-timeout-parameter-for-wa.patch
@@ -0,0 +1,175 @@
+From 6ab3d50b106c9aea123a80551a6c9deace83b914 Mon Sep 17 00:00:00 2001
+From: Qiang Yu <quic_qianyu at quicinc.com>
+Date: Tue, 7 Nov 2023 16:14:49 +0800
+Subject: [PATCH] bus: mhi: host: Add a separate timeout parameter for waiting
+ ready
+
+Some devices(eg. SDX75) take longer than expected (default, 8 seconds) to
+set ready after reboot. Hence add optional ready timeout parameter and pass
+the appropriate timeout value to mhi_poll_reg_field() to wait enough for
+device ready as part of power up sequence.
+
+Signed-off-by: Qiang Yu <quic_qianyu at quicinc.com>
+Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+Link: https://lore.kernel.org/r/1699344890-87076-2-git-send-email-quic_qianyu at quicinc.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/init.c     |  1 +
+ drivers/bus/mhi/host/internal.h |  2 +-
+ drivers/bus/mhi/host/main.c     |  5 +++--
+ drivers/bus/mhi/host/pm.c       | 24 +++++++++++++++++-------
+ include/linux/mhi.h             |  4 ++++
+ 5 files changed, 26 insertions(+), 10 deletions(-)
+
+--- a/drivers/bus/mhi/host/init.c
++++ b/drivers/bus/mhi/host/init.c
+@@ -881,6 +881,7 @@ static int parse_config(struct mhi_contr
+ 	if (!mhi_cntrl->timeout_ms)
+ 		mhi_cntrl->timeout_ms = MHI_TIMEOUT_MS;
+ 
++	mhi_cntrl->ready_timeout_ms = config->ready_timeout_ms;
+ 	mhi_cntrl->bounce_buf = config->use_bounce_buf;
+ 	mhi_cntrl->buffer_len = config->buf_len;
+ 	if (!mhi_cntrl->buffer_len)
+--- a/drivers/bus/mhi/host/internal.h
++++ b/drivers/bus/mhi/host/internal.h
+@@ -321,7 +321,7 @@ int __must_check mhi_read_reg_field(stru
+ 				    u32 *out);
+ int __must_check mhi_poll_reg_field(struct mhi_controller *mhi_cntrl,
+ 				    void __iomem *base, u32 offset, u32 mask,
+-				    u32 val, u32 delayus);
++				    u32 val, u32 delayus, u32 timeout_ms);
+ void mhi_write_reg(struct mhi_controller *mhi_cntrl, void __iomem *base,
+ 		   u32 offset, u32 val);
+ int __must_check mhi_write_reg_field(struct mhi_controller *mhi_cntrl,
+--- a/drivers/bus/mhi/host/main.c
++++ b/drivers/bus/mhi/host/main.c
+@@ -40,10 +40,11 @@ int __must_check mhi_read_reg_field(stru
+ 
+ int __must_check mhi_poll_reg_field(struct mhi_controller *mhi_cntrl,
+ 				    void __iomem *base, u32 offset,
+-				    u32 mask, u32 val, u32 delayus)
++				    u32 mask, u32 val, u32 delayus,
++				    u32 timeout_ms)
+ {
+ 	int ret;
+-	u32 out, retry = (mhi_cntrl->timeout_ms * 1000) / delayus;
++	u32 out, retry = (timeout_ms * 1000) / delayus;
+ 
+ 	while (retry--) {
+ 		ret = mhi_read_reg_field(mhi_cntrl, base, offset, mask, &out);
+--- a/drivers/bus/mhi/host/pm.c
++++ b/drivers/bus/mhi/host/pm.c
+@@ -163,6 +163,7 @@ int mhi_ready_state_transition(struct mh
+ 	enum mhi_pm_state cur_state;
+ 	struct device *dev = &mhi_cntrl->mhi_dev->dev;
+ 	u32 interval_us = 25000; /* poll register field every 25 milliseconds */
++	u32 timeout_ms;
+ 	int ret, i;
+ 
+ 	/* Check if device entered error state */
+@@ -173,14 +174,18 @@ int mhi_ready_state_transition(struct mh
+ 
+ 	/* Wait for RESET to be cleared and READY bit to be set by the device */
+ 	ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
+-				 MHICTRL_RESET_MASK, 0, interval_us);
++				 MHICTRL_RESET_MASK, 0, interval_us,
++				 mhi_cntrl->timeout_ms);
+ 	if (ret) {
+ 		dev_err(dev, "Device failed to clear MHI Reset\n");
+ 		return ret;
+ 	}
+ 
++	timeout_ms = mhi_cntrl->ready_timeout_ms ?
++		mhi_cntrl->ready_timeout_ms : mhi_cntrl->timeout_ms;
+ 	ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHISTATUS,
+-				 MHISTATUS_READY_MASK, 1, interval_us);
++				 MHISTATUS_READY_MASK, 1, interval_us,
++				 timeout_ms);
+ 	if (ret) {
+ 		dev_err(dev, "Device failed to enter MHI Ready\n");
+ 		return ret;
+@@ -479,7 +484,7 @@ static void mhi_pm_disable_transition(st
+ 
+ 		/* Wait for the reset bit to be cleared by the device */
+ 		ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
+-				 MHICTRL_RESET_MASK, 0, 25000);
++				 MHICTRL_RESET_MASK, 0, 25000, mhi_cntrl->timeout_ms);
+ 		if (ret)
+ 			dev_err(dev, "Device failed to clear MHI Reset\n");
+ 
+@@ -492,8 +497,8 @@ static void mhi_pm_disable_transition(st
+ 		if (!MHI_IN_PBL(mhi_get_exec_env(mhi_cntrl))) {
+ 			/* wait for ready to be set */
+ 			ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs,
+-						 MHISTATUS,
+-						 MHISTATUS_READY_MASK, 1, 25000);
++						 MHISTATUS, MHISTATUS_READY_MASK,
++						 1, 25000, mhi_cntrl->timeout_ms);
+ 			if (ret)
+ 				dev_err(dev, "Device failed to enter READY state\n");
+ 		}
+@@ -1111,7 +1116,8 @@ int mhi_async_power_up(struct mhi_contro
+ 	if (state == MHI_STATE_SYS_ERR) {
+ 		mhi_set_mhi_state(mhi_cntrl, MHI_STATE_RESET);
+ 		ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
+-				 MHICTRL_RESET_MASK, 0, interval_us);
++				 MHICTRL_RESET_MASK, 0, interval_us,
++				 mhi_cntrl->timeout_ms);
+ 		if (ret) {
+ 			dev_info(dev, "Failed to reset MHI due to syserr state\n");
+ 			goto error_exit;
+@@ -1202,14 +1208,18 @@ EXPORT_SYMBOL_GPL(mhi_power_down);
+ int mhi_sync_power_up(struct mhi_controller *mhi_cntrl)
+ {
+ 	int ret = mhi_async_power_up(mhi_cntrl);
++	u32 timeout_ms;
+ 
+ 	if (ret)
+ 		return ret;
+ 
++	/* Some devices need more time to set ready during power up */
++	timeout_ms = mhi_cntrl->ready_timeout_ms ?
++		mhi_cntrl->ready_timeout_ms : mhi_cntrl->timeout_ms;
+ 	wait_event_timeout(mhi_cntrl->state_event,
+ 			   MHI_IN_MISSION_MODE(mhi_cntrl->ee) ||
+ 			   MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state),
+-			   msecs_to_jiffies(mhi_cntrl->timeout_ms));
++			   msecs_to_jiffies(timeout_ms));
+ 
+ 	ret = (MHI_IN_MISSION_MODE(mhi_cntrl->ee)) ? 0 : -ETIMEDOUT;
+ 	if (ret)
+--- a/include/linux/mhi.h
++++ b/include/linux/mhi.h
+@@ -266,6 +266,7 @@ struct mhi_event_config {
+  * struct mhi_controller_config - Root MHI controller configuration
+  * @max_channels: Maximum number of channels supported
+  * @timeout_ms: Timeout value for operations. 0 means use default
++ * @ready_timeout_ms: Timeout value for waiting device to be ready (optional)
+  * @buf_len: Size of automatically allocated buffers. 0 means use default
+  * @num_channels: Number of channels defined in @ch_cfg
+  * @ch_cfg: Array of defined channels
+@@ -277,6 +278,7 @@ struct mhi_event_config {
+ struct mhi_controller_config {
+ 	u32 max_channels;
+ 	u32 timeout_ms;
++	u32 ready_timeout_ms;
+ 	u32 buf_len;
+ 	u32 num_channels;
+ 	const struct mhi_channel_config *ch_cfg;
+@@ -330,6 +332,7 @@ struct mhi_controller_config {
+  * @pm_mutex: Mutex for suspend/resume operation
+  * @pm_lock: Lock for protecting MHI power management state
+  * @timeout_ms: Timeout in ms for state transitions
++ * @ready_timeout_ms: Timeout in ms for waiting device to be ready (optional)
+  * @pm_state: MHI power management state
+  * @db_access: DB access states
+  * @ee: MHI device execution environment
+@@ -419,6 +422,7 @@ struct mhi_controller {
+ 	struct mutex pm_mutex;
+ 	rwlock_t pm_lock;
+ 	u32 timeout_ms;
++	u32 ready_timeout_ms;
+ 	u32 pm_state;
+ 	u32 db_access;
+ 	enum mhi_ee_type ee;
diff --git a/target/linux/generic/backport-6.6/851-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch b/target/linux/generic/backport-6.6/851-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch
new file mode 100644
index 0000000000..d0f7df5007
--- /dev/null
+++ b/target/linux/generic/backport-6.6/851-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch
@@ -0,0 +1,62 @@
+From 4dc9c850a974ba7db2091ce73bcffe631aafe144 Mon Sep 17 00:00:00 2001
+From: Qiang Yu <quic_qianyu at quicinc.com>
+Date: Tue, 7 Nov 2023 16:14:50 +0800
+Subject: [PATCH 1/2] bus: mhi: host: pci_generic: Add SDX75 based modem
+ support
+
+Add generic info for SDX75 based modems. SDX75 takes longer to set ready
+during power up. Hence use separate configuration.
+
+Signed-off-by: Qiang Yu <quic_qianyu at quicinc.com>
+Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+Link: https://lore.kernel.org/r/1699344890-87076-3-git-send-email-quic_qianyu at quicinc.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -269,6 +269,16 @@ static struct mhi_event_config modem_qco
+ 	MHI_EVENT_CONFIG_HW_DATA(5, 2048, 101)
+ };
+ 
++static const struct mhi_controller_config modem_qcom_v2_mhiv_config = {
++	.max_channels = 128,
++	.timeout_ms = 8000,
++	.ready_timeout_ms = 50000,
++	.num_channels = ARRAY_SIZE(modem_qcom_v1_mhi_channels),
++	.ch_cfg = modem_qcom_v1_mhi_channels,
++	.num_events = ARRAY_SIZE(modem_qcom_v1_mhi_events),
++	.event_cfg = modem_qcom_v1_mhi_events,
++};
++
+ static const struct mhi_controller_config modem_qcom_v1_mhiv_config = {
+ 	.max_channels = 128,
+ 	.timeout_ms = 8000,
+@@ -278,6 +288,16 @@ static const struct mhi_controller_confi
+ 	.event_cfg = modem_qcom_v1_mhi_events,
+ };
+ 
++static const struct mhi_pci_dev_info mhi_qcom_sdx75_info = {
++	.name = "qcom-sdx75m",
++	.fw = "qcom/sdx75m/xbl.elf",
++	.edl = "qcom/sdx75m/edl.mbn",
++	.config = &modem_qcom_v2_mhiv_config,
++	.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
++	.dma_data_width = 32,
++	.sideband_wake = false,
++};
++
+ static const struct mhi_pci_dev_info mhi_qcom_sdx65_info = {
+ 	.name = "qcom-sdx65m",
+ 	.fw = "qcom/sdx65m/xbl.elf",
+@@ -600,6 +620,8 @@ static const struct pci_device_id mhi_pc
+ 		.driver_data = (kernel_ulong_t) &mhi_telit_fn990_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
+ 		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
++	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0309),
++		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx75_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1001), /* EM120R-GL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */
diff --git a/target/linux/generic/backport-6.6/852-stable-bus-mhi-host-pci_generic-constify-modem_telit_fn980_.patch b/target/linux/generic/backport-6.6/852-stable-bus-mhi-host-pci_generic-constify-modem_telit_fn980_.patch
new file mode 100644
index 0000000000..e6df7895ce
--- /dev/null
+++ b/target/linux/generic/backport-6.6/852-stable-bus-mhi-host-pci_generic-constify-modem_telit_fn980_.patch
@@ -0,0 +1,28 @@
+From 2f5e59d70566902d7b4e13c6af3f042f5d28b78b Mon Sep 17 00:00:00 2001
+From: Jeff Johnson <quic_jjohnson at quicinc.com>
+Date: Thu, 22 Feb 2024 18:00:23 -0800
+Subject: [PATCH 2/2] bus: mhi: host: pci_generic: constify
+ modem_telit_fn980_hw_v1_config
+
+MHI expects the controller configs to be const, and all of the other ones
+in this file already are, so constify modem_telit_fn980_hw_v1_config.
+
+Signed-off-by: Jeff Johnson <quic_jjohnson at quicinc.com>
+Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+Link: https://lore.kernel.org/r/20240222-mhi-const-bus-mhi-host-pci_generic-v1-1-d4c9b0b0a7a5 at quicinc.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -538,7 +538,7 @@ static struct mhi_event_config mhi_telit
+ 	MHI_EVENT_CONFIG_HW_DATA(2, 2048, 101)
+ };
+ 
+-static struct mhi_controller_config modem_telit_fn980_hw_v1_config = {
++static const struct mhi_controller_config modem_telit_fn980_hw_v1_config = {
+ 	.max_channels = 128,
+ 	.timeout_ms = 20000,
+ 	.num_channels = ARRAY_SIZE(mhi_telit_fn980_hw_v1_channels),
diff --git a/target/linux/generic/pending-6.6/790-bus-mhi-core-add-SBL-state-callback.patch b/target/linux/generic/pending-6.6/790-bus-mhi-core-add-SBL-state-callback.patch
index f239355594..fe0f260ae3 100644
--- a/target/linux/generic/pending-6.6/790-bus-mhi-core-add-SBL-state-callback.patch
+++ b/target/linux/generic/pending-6.6/790-bus-mhi-core-add-SBL-state-callback.patch
@@ -20,7 +20,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/drivers/bus/mhi/host/main.c
 +++ b/drivers/bus/mhi/host/main.c
-@@ -905,6 +905,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
+@@ -906,6 +906,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
  			switch (event) {
  			case MHI_EE_SBL:
  				st = DEV_ST_TRANSITION_SBL;



From lede-commits at lists.infradead.org  Fri Mar 15 11:30:51 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 14:30:51 -0400
Subject: [openwrt/openwrt]  generic: 6.1: backport support for various MHI 5G
 modems
In-Reply-To: <171052745136.3206746.10051315832553607682@git-01.infra.openwrt.org>
References: <171052745136.3206746.10051315832553607682@git-01.infra.openwrt.org>
Message-ID: <mailman.16784.1710527461.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e4a4c91d8baf8a1baeb71458bb76857d16c78aa1

commit e4a4c91d8baf8a1baeb71458bb76857d16c78aa1
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Fri Mar 15 17:18:19 2024 +0000

    generic: 6.1: backport support for various MHI 5G modems
    
      * Dell DW5932e
      * Foxconn T99W175 (HP variant)
      * Foxconn T99W510
      * Generic SDX75-based
      * Quectel EM160R-GL (newer variants)
      * Quectel RM520
      * Quectel RM520N-GL (Lenovo variant)
      * SC8280XP Compute Reference Design
      * Telit FE990
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 ...t-pci_generic-add-support-for-sc8280xp-cr.patch |  32 ++++
 ...ost-pci_generic-Add-HP-variant-of-T99W175.patch |  34 ++++
 ...t-pci_generic-Add-definition-for-some-VID.patch |  66 ++++++++
 ...t-pci_generic-Drop-redundant-pci_enable_p.patch |  68 ++++++++
 ...4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch |  49 ++++++
 ...t-pci_generic-Add-support-for-IP_SW0-chan.patch |  67 ++++++++
 ...t-pci_generic-Add-support-for-Quectel-EM1.patch |  34 ++++
 ...t-pci_generic-Add-support-for-Quectel-RM5.patch |  49 ++++++
 ...t-pci_generic-Add-support-for-Dell-DW5932.patch |  34 ++++
 ...t-pci_generic-Add-support-for-Quectel-RM5.patch |  36 +++++
 ...t-pci_generic-add-support-for-Telit-FE990.patch |  33 ++++
 ...t-Add-a-separate-timeout-parameter-for-wa.patch | 175 +++++++++++++++++++++
 ...t-pci_generic-Add-SDX75-based-modem-suppo.patch |  62 ++++++++
 ...t-pci_generic-constify-modem_telit_fn980_.patch |  28 ++++
 .../790-bus-mhi-core-add-SBL-state-callback.patch  |   2 +-
 15 files changed, 768 insertions(+), 1 deletion(-)

diff --git a/target/linux/generic/backport-6.1/850-v6.2-bus-mhi-host-pci_generic-add-support-for-sc8280xp-cr.patch b/target/linux/generic/backport-6.1/850-v6.2-bus-mhi-host-pci_generic-add-support-for-sc8280xp-cr.patch
new file mode 100644
index 0000000000..1bf5196790
--- /dev/null
+++ b/target/linux/generic/backport-6.1/850-v6.2-bus-mhi-host-pci_generic-add-support-for-sc8280xp-cr.patch
@@ -0,0 +1,32 @@
+From a38a6e5d2dc41feeaa839cd61196f86c0ee223b8 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro at kernel.org>
+Date: Fri, 4 Nov 2022 10:39:13 +0100
+Subject: [PATCH 01/13] bus: mhi: host: pci_generic: add support for
+ sc8280xp-crd SDX55 variant
+
+The SC8280XP Compute Reference Design (CRD) has an on-PCB SDX55 modem
+which uses MBIM.
+
+The exact channel configuration is not known but the Foxconn SDX55
+configuration allows the modem to be used so reuse that one for now.
+
+Signed-off-by: Johan Hovold <johan+linaro at kernel.org>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+Link: https://lore.kernel.org/r/20221104093913.23347-1-johan+linaro at kernel.org
+[mani: modified the subject to format "bus: mhi: host"]
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -542,6 +542,8 @@ static const struct mhi_pci_dev_info mhi
+ static const struct pci_device_id mhi_pci_id_table[] = {
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0304),
+ 		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx24_info },
++	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0306, PCI_VENDOR_ID_QCOM, 0x010c),
++		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
+ 	/* EM919x (sdx55), use the same vid:pid as qcom-sdx55m */
+ 	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0306, 0x18d7, 0x0200),
+ 		.driver_data = (kernel_ulong_t) &mhi_sierra_em919x_info },
diff --git a/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch b/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch
new file mode 100644
index 0000000000..0dabc48bfa
--- /dev/null
+++ b/target/linux/generic/backport-6.1/851-v6.2-bus-mhi-host-pci_generic-Add-HP-variant-of-T99W175.patch
@@ -0,0 +1,34 @@
+From 6a150325917a6df9467beeaa6518ab91ada81d97 Mon Sep 17 00:00:00 2001
+From: Song Fuchang <song.fc at gmail.com>
+Date: Mon, 7 Nov 2022 19:18:35 +0530
+Subject: [PATCH 02/13] bus: mhi: host: pci_generic: Add HP variant of T99W175
+
+The Foxconn T99W175 modem has an HP variant, which has
+the following output from lspci:
+
+01:00.0 Wireless controller [0d40]: Device 03f0:0a6c
+
+It also has some HP-specific serial numbers on the
+metal case. It works well with this driver, so add
+support for this to the pci_generic driver.
+
+Signed-off-by: Song Fuchang <song.fc at gmail.com>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+[mani: manually applied the patch]
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -596,6 +596,9 @@ static const struct pci_device_id mhi_pc
+ 	/* MV32-WB (Cinterion) */
+ 	{ PCI_DEVICE(0x1269, 0x00bb),
+ 		.driver_data = (kernel_ulong_t) &mhi_mv32_info },
++	/* T99W175 (sdx55), HP variant */
++	{ PCI_DEVICE(0x03f0, 0x0a6c),
++		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
+ 	{  }
+ };
+ MODULE_DEVICE_TABLE(pci, mhi_pci_id_table);
diff --git a/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch b/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch
new file mode 100644
index 0000000000..fbf6c8a501
--- /dev/null
+++ b/target/linux/generic/backport-6.1/852-v6.2-bus-mhi-host-pci_generic-Add-definition-for-some-VID.patch
@@ -0,0 +1,66 @@
+From e8bc362f158f45185778e2bec081146aeeb283b5 Mon Sep 17 00:00:00 2001
+From: Slark Xiao <slark_xiao at 163.com>
+Date: Mon, 7 Nov 2022 19:27:00 +0800
+Subject: [PATCH 03/13] bus: mhi: host: pci_generic: Add definition for some
+ VIDs
+
+To make code neat and for convenience purpose, add definition for some
+VIDs. Adding it locally until these VIDs are used in multiple places.
+
+Signed-off-by: Slark Xiao <slark_xiao at 163.com>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+Link: https://lore.kernel.org/r/20221107112700.773-1-slark_xiao at 163.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -24,6 +24,10 @@
+ 
+ #define HEALTH_CHECK_PERIOD (HZ * 2)
+ 
++/* PCI VID definitions */
++#define PCI_VENDOR_ID_THALES	0x1269
++#define PCI_VENDOR_ID_QUECTEL	0x1eac
++
+ /**
+  * struct mhi_pci_dev_info - MHI PCI device specific information
+  * @config: MHI controller configuration
+@@ -557,11 +561,11 @@ static const struct pci_device_id mhi_pc
+ 		.driver_data = (kernel_ulong_t) &mhi_telit_fn990_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
+ 		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
+-	{ PCI_DEVICE(0x1eac, 0x1001), /* EM120R-GL (sdx24) */
++	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1001), /* EM120R-GL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+-	{ PCI_DEVICE(0x1eac, 0x1002), /* EM160R-GL (sdx24) */
++	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+-	{ PCI_DEVICE(0x1eac, 0x2001), /* EM120R-GL for FCCL (sdx24) */
++	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x2001), /* EM120R-GL for FCCL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	/* T99W175 (sdx55), Both for eSIM and Non-eSIM */
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0ab),
+@@ -585,16 +589,16 @@ static const struct pci_device_id mhi_pc
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0d9),
+ 		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info },
+ 	/* MV31-W (Cinterion) */
+-	{ PCI_DEVICE(0x1269, 0x00b3),
++	{ PCI_DEVICE(PCI_VENDOR_ID_THALES, 0x00b3),
+ 		.driver_data = (kernel_ulong_t) &mhi_mv31_info },
+ 	/* MV31-W (Cinterion), based on new baseline */
+-	{ PCI_DEVICE(0x1269, 0x00b4),
++	{ PCI_DEVICE(PCI_VENDOR_ID_THALES, 0x00b4),
+ 		.driver_data = (kernel_ulong_t) &mhi_mv31_info },
+ 	/* MV32-WA (Cinterion) */
+-	{ PCI_DEVICE(0x1269, 0x00ba),
++	{ PCI_DEVICE(PCI_VENDOR_ID_THALES, 0x00ba),
+ 		.driver_data = (kernel_ulong_t) &mhi_mv32_info },
+ 	/* MV32-WB (Cinterion) */
+-	{ PCI_DEVICE(0x1269, 0x00bb),
++	{ PCI_DEVICE(PCI_VENDOR_ID_THALES, 0x00bb),
+ 		.driver_data = (kernel_ulong_t) &mhi_mv32_info },
+ 	/* T99W175 (sdx55), HP variant */
+ 	{ PCI_DEVICE(0x03f0, 0x0a6c),
diff --git a/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch b/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch
new file mode 100644
index 0000000000..2f5a0ac11d
--- /dev/null
+++ b/target/linux/generic/backport-6.1/853-v6.2-bus-mhi-host-pci_generic-Drop-redundant-pci_enable_p.patch
@@ -0,0 +1,68 @@
+From 6c00e1e4e9817e85b8ba83024cfa88382f898841 Mon Sep 17 00:00:00 2001
+From: Bjorn Helgaas <bhelgaas at google.com>
+Date: Tue, 7 Mar 2023 14:16:25 -0600
+Subject: [PATCH 04/13] bus: mhi: host: pci_generic: Drop redundant
+ pci_enable_pcie_error_reporting()
+
+pci_enable_pcie_error_reporting() enables the device to send ERR_*
+Messages.  Since commit <f26e58bf6f54> ("PCI/AER: Enable error reporting
+when AER is native"), the PCI core does this for all devices during
+enumeration, so the driver doesn't need to do it itself.
+
+Remove the redundant pci_enable_pcie_error_reporting() call from the
+driver.  Also remove the corresponding pci_disable_pcie_error_reporting()
+from the driver .remove() path.
+
+Note that this only controls ERR_* Messages from the device.  An ERR_*
+Message may cause the Root Port to generate an interrupt, depending on the
+AER Root Error Command register managed by the AER service driver.
+
+Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+Reviewed-by: Jeffrey Hugo <quic_jhugo at quicinc.com>
+Link: https://lore.kernel.org/r/20230307201625.879567-1-helgaas at kernel.org
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -8,7 +8,6 @@
+  * Copyright (C) 2020 Linaro Ltd <loic.poulain at linaro.org>
+  */
+ 
+-#include <linux/aer.h>
+ #include <linux/delay.h>
+ #include <linux/device.h>
+ #include <linux/mhi.h>
+@@ -901,11 +900,9 @@ static int mhi_pci_probe(struct pci_dev
+ 	mhi_pdev->pci_state = pci_store_saved_state(pdev);
+ 	pci_load_saved_state(pdev, NULL);
+ 
+-	pci_enable_pcie_error_reporting(pdev);
+-
+ 	err = mhi_register_controller(mhi_cntrl, mhi_cntrl_config);
+ 	if (err)
+-		goto err_disable_reporting;
++		return err;
+ 
+ 	/* MHI bus does not power up the controller by default */
+ 	err = mhi_prepare_for_power_up(mhi_cntrl);
+@@ -939,8 +936,6 @@ err_unprepare:
+ 	mhi_unprepare_after_power_down(mhi_cntrl);
+ err_unregister:
+ 	mhi_unregister_controller(mhi_cntrl);
+-err_disable_reporting:
+-	pci_disable_pcie_error_reporting(pdev);
+ 
+ 	return err;
+ }
+@@ -963,7 +958,6 @@ static void mhi_pci_remove(struct pci_de
+ 		pm_runtime_get_noresume(&pdev->dev);
+ 
+ 	mhi_unregister_controller(mhi_cntrl);
+-	pci_disable_pcie_error_reporting(pdev);
+ }
+ 
+ static void mhi_pci_shutdown(struct pci_dev *pdev)
diff --git a/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch b/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch
new file mode 100644
index 0000000000..f757ca28e5
--- /dev/null
+++ b/target/linux/generic/backport-6.1/854-v6.4-bus-mhi-pci_generic-Add-Foxconn-T99W510.patch
@@ -0,0 +1,49 @@
+From 537350abfcc6b639884d1ef7bff35d31a624549b Mon Sep 17 00:00:00 2001
+From: Slark Xiao <slark_xiao at 163.com>
+Date: Wed, 29 Mar 2023 15:22:39 +0800
+Subject: [PATCH 05/13] bus: mhi: pci_generic: Add Foxconn T99W510
+
+The Foxconn T99W510 device is designed based on Qualcomm
+SDX24. Add 3 variants for different potential customer.
+
+Signed-off-by: Slark Xiao <slark_xiao at 163.com>
+Link: https://lore.kernel.org/r/20230329072239.93632-1-slark_xiao at 163.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -363,6 +363,15 @@ static const struct mhi_controller_confi
+ 	.event_cfg = mhi_foxconn_sdx55_events,
+ };
+ 
++static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
++	.name = "foxconn-sdx24",
++	.config = &modem_foxconn_sdx55_config,
++	.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
++	.dma_data_width = 32,
++	.mru_default = 32768,
++	.sideband_wake = false,
++};
++
+ static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = {
+ 	.name = "foxconn-sdx55",
+ 	.fw = "qcom/sdx55m/sbl1.mbn",
+@@ -587,6 +596,15 @@ static const struct pci_device_id mhi_pc
+ 	/* T99W373 (sdx62) */
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0d9),
+ 		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info },
++	/* T99W510 (sdx24), variant 1 */
++	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f0),
++		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx24_info },
++	/* T99W510 (sdx24), variant 2 */
++	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f1),
++		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx24_info },
++	/* T99W510 (sdx24), variant 3 */
++	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f2),
++		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx24_info },
+ 	/* MV31-W (Cinterion) */
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_THALES, 0x00b3),
+ 		.driver_data = (kernel_ulong_t) &mhi_mv31_info },
diff --git a/target/linux/generic/backport-6.1/855-v6.6-bus-mhi-host-pci_generic-Add-support-for-IP_SW0-chan.patch b/target/linux/generic/backport-6.1/855-v6.6-bus-mhi-host-pci_generic-Add-support-for-IP_SW0-chan.patch
new file mode 100644
index 0000000000..8c319ebeb7
--- /dev/null
+++ b/target/linux/generic/backport-6.1/855-v6.6-bus-mhi-host-pci_generic-Add-support-for-IP_SW0-chan.patch
@@ -0,0 +1,67 @@
+From 440b01a2a9a62352cfa355354d3a4de6c5d96adf Mon Sep 17 00:00:00 2001
+From: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+Date: Fri, 19 May 2023 19:28:03 +0530
+Subject: [PATCH 06/13] bus: mhi: host: pci_generic: Add support for IP_SW0
+ channels
+
+IP_SW0 channels are used to transfer data over the networking interface
+between MHI endpoint and the host. Define the channels in the MHI v1
+channel config along with dedicated event rings.
+
+Reviewed-by: Loic Poulain <loic.poulain at linaro.org>
+Link: https://lore.kernel.org/r/20230519135803.13850-1-manivannan.sadhasivam at linaro.org
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 26 ++++++++++++++++++++++----
+ 1 file changed, 22 insertions(+), 4 deletions(-)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -212,6 +212,19 @@ struct mhi_pci_dev_info {
+ 		.offload_channel = false,	\
+ 	}
+ 
++#define MHI_EVENT_CONFIG_SW_DATA(ev_ring, el_count) \
++	{					\
++		.num_elements = el_count,	\
++		.irq_moderation_ms = 0,		\
++		.irq = (ev_ring) + 1,		\
++		.priority = 1,			\
++		.mode = MHI_DB_BRST_DISABLE,	\
++		.data_type = MHI_ER_DATA,	\
++		.hardware_event = false,	\
++		.client_managed = false,	\
++		.offload_channel = false,	\
++	}
++
+ #define MHI_EVENT_CONFIG_HW_DATA(ev_ring, el_count, ch_num) \
+ 	{					\
+ 		.num_elements = el_count,	\
+@@ -237,8 +250,10 @@ static const struct mhi_channel_config m
+ 	MHI_CHANNEL_CONFIG_DL_AUTOQUEUE(21, "IPCR", 8, 0),
+ 	MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
+ 	MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
+-	MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 2),
+-	MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 3),
++	MHI_CHANNEL_CONFIG_UL(46, "IP_SW0", 64, 2),
++	MHI_CHANNEL_CONFIG_DL(47, "IP_SW0", 64, 3),
++	MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 4),
++	MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 5),
+ };
+ 
+ static struct mhi_event_config modem_qcom_v1_mhi_events[] = {
+@@ -246,9 +261,12 @@ static struct mhi_event_config modem_qco
+ 	MHI_EVENT_CONFIG_CTRL(0, 64),
+ 	/* DIAG dedicated event ring */
+ 	MHI_EVENT_CONFIG_DATA(1, 128),
++	/* Software channels dedicated event ring */
++	MHI_EVENT_CONFIG_SW_DATA(2, 64),
++	MHI_EVENT_CONFIG_SW_DATA(3, 64),
+ 	/* Hardware channels request dedicated hardware event rings */
+-	MHI_EVENT_CONFIG_HW_DATA(2, 1024, 100),
+-	MHI_EVENT_CONFIG_HW_DATA(3, 2048, 101)
++	MHI_EVENT_CONFIG_HW_DATA(4, 1024, 100),
++	MHI_EVENT_CONFIG_HW_DATA(5, 2048, 101)
+ };
+ 
+ static const struct mhi_controller_config modem_qcom_v1_mhiv_config = {
diff --git a/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch b/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch
new file mode 100644
index 0000000000..5c15eec712
--- /dev/null
+++ b/target/linux/generic/backport-6.1/856-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-EM1.patch
@@ -0,0 +1,34 @@
+From 2dc36ddb6ca4eeda21204dc9e57750494c74c06d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Duke=20Xin=20=28=E8=BE=9B=E5=AE=89=E6=96=87=29?=
+ <duke_xinanwen at 163.com>
+Date: Thu, 8 Jun 2023 02:29:27 -0700
+Subject: [PATCH 07/13] bus: mhi: host: pci_generic: Add support for Quectel
+ EM160R-GL modem
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This modem is identical to the previous EM160R-GL modem with same product
+name. But this one is designed for a specific laptop usecase, hence Quectel
+got a new PID.
+
+Signed-off-by: Duke Xin(???) <duke_xinanwen at 163.com>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+Link: https://lore.kernel.org/r/20230608092927.2893-1-duke_xinanwen at 163.com
+[mani: modified the commit message and subject]
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -591,6 +591,8 @@ static const struct pci_device_id mhi_pc
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
++	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x100d), /* EM160R-GL (sdx24) */
++		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x2001), /* EM120R-GL for FCCL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	/* T99W175 (sdx55), Both for eSIM and Non-eSIM */
diff --git a/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch b/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
new file mode 100644
index 0000000000..5922207e29
--- /dev/null
+++ b/target/linux/generic/backport-6.1/857-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
@@ -0,0 +1,49 @@
+From 7e2f6cb11c24799b6851142c4a5ce69bdc630364 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Duke=20Xin=20=28=E8=BE=9B=E5=AE=89=E6=96=87=29?=
+ <duke_xinanwen at 163.com>
+Date: Thu, 29 Jun 2023 23:23:18 -0700
+Subject: [PATCH 08/13] bus: mhi: host: pci_generic: Add support for Quectel
+ RM520N-GL modem
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add MHI interface definition for RM520 product based on Qualcomm SDX6X chip
+
+Signed-off-by: Duke Xin(???) <duke_xinanwen at 163.com>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+Link: https://lore.kernel.org/r/20230630062318.12114-1-duke_xinanwen at 163.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -352,6 +352,16 @@ static const struct mhi_pci_dev_info mhi
+ 	.sideband_wake = true,
+ };
+ 
++static const struct mhi_pci_dev_info mhi_quectel_rm5xx_info = {
++	.name = "quectel-rm5xx",
++	.edl = "qcom/prog_firehose_sdx6x.elf",
++	.config = &modem_quectel_em1xx_config,
++	.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
++	.dma_data_width = 32,
++	.mru_default = 32768,
++	.sideband_wake = true,
++};
++
+ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
+ 	MHI_CHANNEL_CONFIG_UL(0, "LOOPBACK", 32, 0),
+ 	MHI_CHANNEL_CONFIG_DL(1, "LOOPBACK", 32, 0),
+@@ -591,6 +601,9 @@ static const struct pci_device_id mhi_pc
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
++	/* RM520N-GL (sdx6x), eSIM */
++	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1004),
++		.driver_data = (kernel_ulong_t) &mhi_quectel_rm5xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x100d), /* EM160R-GL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x2001), /* EM120R-GL for FCCL (sdx24) */
diff --git a/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch b/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch
new file mode 100644
index 0000000000..bb7b3c3ffc
--- /dev/null
+++ b/target/linux/generic/backport-6.1/858-v6.6-bus-mhi-host-pci_generic-Add-support-for-Dell-DW5932.patch
@@ -0,0 +1,34 @@
+From 5e20ac8e7d3221e079e87066c4e8f4b64bd58ccb Mon Sep 17 00:00:00 2001
+From: Slark Xiao <slark_xiao at 163.com>
+Date: Wed, 12 Jul 2023 16:37:41 +0800
+Subject: [PATCH 09/13] bus: mhi: host: pci_generic: Add support for Dell
+ DW5932e
+
+The DW5932e has 2 variants: eSIM(DW5932e-eSIM) and non-eSIM(DW5932e).
+Both of them are designed based on Qualcomm SDX62 and it will
+align with the Foxconn sdx65 settings.
+
+Signed-off-by: Slark Xiao <slark_xiao at 163.com>
+Reviewed-by: Loic Poulain <loic.poulain at linaro.org>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+Link: https://lore.kernel.org/r/20230712083741.7615-1-slark_xiao at 163.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -638,6 +638,12 @@ static const struct pci_device_id mhi_pc
+ 	/* T99W510 (sdx24), variant 3 */
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f2),
+ 		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx24_info },
++	/* DW5932e-eSIM (sdx62), With eSIM */
++	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f5),
++		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info },
++	/* DW5932e (sdx62), Non-eSIM */
++	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f9),
++		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info },
+ 	/* MV31-W (Cinterion) */
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_THALES, 0x00b3),
+ 		.driver_data = (kernel_ulong_t) &mhi_mv31_info },
diff --git a/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch b/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
new file mode 100644
index 0000000000..c0dfe01e32
--- /dev/null
+++ b/target/linux/generic/backport-6.1/859-v6.6-bus-mhi-host-pci_generic-Add-support-for-Quectel-RM5.patch
@@ -0,0 +1,36 @@
+From 8be9e92a2c8f26fd7482acc2323c6dc2a4ad43aa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Duke=20Xin=20=28=E8=BE=9B=E5=AE=89=E6=96=87=29?=
+ <duke_xinanwen at 163.com>
+Date: Sun, 6 Aug 2023 20:04:54 -0700
+Subject: [PATCH 10/13] bus: mhi: host: pci_generic: Add support for Quectel
+ RM520N-GL Lenovo variant
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Quectel's RM520N-GL Lenovo variant is same as that of the existing
+RM520N-GL modem and uses the same config. But this one is designed for
+Lenovo laptop usecase, hence Quectel got a new PID.
+
+Signed-off-by: Duke Xin(???) <duke_xinanwen at 163.com>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+Reviewed-by: Loic Poulain <loic.poulain at linaro.org>
+Link: https://lore.kernel.org/r/20230807030454.37255-1-duke_xinanwen at 163.com
+[mani: tweaked subject and commit message a bit]
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -604,6 +604,9 @@ static const struct pci_device_id mhi_pc
+ 	/* RM520N-GL (sdx6x), eSIM */
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1004),
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_rm5xx_info },
++	/* RM520N-GL (sdx6x), Lenovo variant */
++	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1007),
++		.driver_data = (kernel_ulong_t) &mhi_quectel_rm5xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x100d), /* EM160R-GL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x2001), /* EM120R-GL for FCCL (sdx24) */
diff --git a/target/linux/generic/backport-6.1/860-v6.6-bus-mhi-host-pci_generic-add-support-for-Telit-FE990.patch b/target/linux/generic/backport-6.1/860-v6.6-bus-mhi-host-pci_generic-add-support-for-Telit-FE990.patch
new file mode 100644
index 0000000000..40fdfc613b
--- /dev/null
+++ b/target/linux/generic/backport-6.1/860-v6.6-bus-mhi-host-pci_generic-add-support-for-Telit-FE990.patch
@@ -0,0 +1,33 @@
+From 30001cf3a19a2f676a0e23c2c3a511c4a8903284 Mon Sep 17 00:00:00 2001
+From: Daniele Palmas <dnlplm at gmail.com>
+Date: Fri, 4 Aug 2023 11:40:39 +0200
+Subject: [PATCH 11/13] bus: mhi: host: pci_generic: add support for Telit
+ FE990 modem
+
+Add support for Telit FE990 that has the same configuration as FN990:
+
+$ lspci -vv
+04:00.0 Unassigned class [ff00]: Qualcomm Device 0308
+    Subsystem: Device 1c5d:2015
+
+Signed-off-by: Daniele Palmas <dnlplm at gmail.com>
+Reviewed-by: Manivannan Sadhasivam <mani at kernel.org>
+Link: https://lore.kernel.org/r/20230804094039.365102-1-dnlplm at gmail.com
+[mani: minor update to commit subject and adjusted comment]
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -595,6 +595,9 @@ static const struct pci_device_id mhi_pc
+ 	/* Telit FN990 */
+ 	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, 0x1c5d, 0x2010),
+ 		.driver_data = (kernel_ulong_t) &mhi_telit_fn990_info },
++	/* Telit FE990 */
++	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, 0x1c5d, 0x2015),
++		.driver_data = (kernel_ulong_t) &mhi_telit_fn990_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
+ 		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1001), /* EM120R-GL (sdx24) */
diff --git a/target/linux/generic/backport-6.1/861-v6.8-bus-mhi-host-Add-a-separate-timeout-parameter-for-wa.patch b/target/linux/generic/backport-6.1/861-v6.8-bus-mhi-host-Add-a-separate-timeout-parameter-for-wa.patch
new file mode 100644
index 0000000000..2b83d0396a
--- /dev/null
+++ b/target/linux/generic/backport-6.1/861-v6.8-bus-mhi-host-Add-a-separate-timeout-parameter-for-wa.patch
@@ -0,0 +1,175 @@
+From 6ab3d50b106c9aea123a80551a6c9deace83b914 Mon Sep 17 00:00:00 2001
+From: Qiang Yu <quic_qianyu at quicinc.com>
+Date: Tue, 7 Nov 2023 16:14:49 +0800
+Subject: [PATCH] bus: mhi: host: Add a separate timeout parameter for waiting
+ ready
+
+Some devices(eg. SDX75) take longer than expected (default, 8 seconds) to
+set ready after reboot. Hence add optional ready timeout parameter and pass
+the appropriate timeout value to mhi_poll_reg_field() to wait enough for
+device ready as part of power up sequence.
+
+Signed-off-by: Qiang Yu <quic_qianyu at quicinc.com>
+Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+Link: https://lore.kernel.org/r/1699344890-87076-2-git-send-email-quic_qianyu at quicinc.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/init.c     |  1 +
+ drivers/bus/mhi/host/internal.h |  2 +-
+ drivers/bus/mhi/host/main.c     |  5 +++--
+ drivers/bus/mhi/host/pm.c       | 24 +++++++++++++++++-------
+ include/linux/mhi.h             |  4 ++++
+ 5 files changed, 26 insertions(+), 10 deletions(-)
+
+--- a/drivers/bus/mhi/host/init.c
++++ b/drivers/bus/mhi/host/init.c
+@@ -881,6 +881,7 @@ static int parse_config(struct mhi_contr
+ 	if (!mhi_cntrl->timeout_ms)
+ 		mhi_cntrl->timeout_ms = MHI_TIMEOUT_MS;
+ 
++	mhi_cntrl->ready_timeout_ms = config->ready_timeout_ms;
+ 	mhi_cntrl->bounce_buf = config->use_bounce_buf;
+ 	mhi_cntrl->buffer_len = config->buf_len;
+ 	if (!mhi_cntrl->buffer_len)
+--- a/drivers/bus/mhi/host/internal.h
++++ b/drivers/bus/mhi/host/internal.h
+@@ -321,7 +321,7 @@ int __must_check mhi_read_reg_field(stru
+ 				    u32 *out);
+ int __must_check mhi_poll_reg_field(struct mhi_controller *mhi_cntrl,
+ 				    void __iomem *base, u32 offset, u32 mask,
+-				    u32 val, u32 delayus);
++				    u32 val, u32 delayus, u32 timeout_ms);
+ void mhi_write_reg(struct mhi_controller *mhi_cntrl, void __iomem *base,
+ 		   u32 offset, u32 val);
+ int __must_check mhi_write_reg_field(struct mhi_controller *mhi_cntrl,
+--- a/drivers/bus/mhi/host/main.c
++++ b/drivers/bus/mhi/host/main.c
+@@ -40,10 +40,11 @@ int __must_check mhi_read_reg_field(stru
+ 
+ int __must_check mhi_poll_reg_field(struct mhi_controller *mhi_cntrl,
+ 				    void __iomem *base, u32 offset,
+-				    u32 mask, u32 val, u32 delayus)
++				    u32 mask, u32 val, u32 delayus,
++				    u32 timeout_ms)
+ {
+ 	int ret;
+-	u32 out, retry = (mhi_cntrl->timeout_ms * 1000) / delayus;
++	u32 out, retry = (timeout_ms * 1000) / delayus;
+ 
+ 	while (retry--) {
+ 		ret = mhi_read_reg_field(mhi_cntrl, base, offset, mask, &out);
+--- a/drivers/bus/mhi/host/pm.c
++++ b/drivers/bus/mhi/host/pm.c
+@@ -163,6 +163,7 @@ int mhi_ready_state_transition(struct mh
+ 	enum mhi_pm_state cur_state;
+ 	struct device *dev = &mhi_cntrl->mhi_dev->dev;
+ 	u32 interval_us = 25000; /* poll register field every 25 milliseconds */
++	u32 timeout_ms;
+ 	int ret, i;
+ 
+ 	/* Check if device entered error state */
+@@ -173,14 +174,18 @@ int mhi_ready_state_transition(struct mh
+ 
+ 	/* Wait for RESET to be cleared and READY bit to be set by the device */
+ 	ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
+-				 MHICTRL_RESET_MASK, 0, interval_us);
++				 MHICTRL_RESET_MASK, 0, interval_us,
++				 mhi_cntrl->timeout_ms);
+ 	if (ret) {
+ 		dev_err(dev, "Device failed to clear MHI Reset\n");
+ 		return ret;
+ 	}
+ 
++	timeout_ms = mhi_cntrl->ready_timeout_ms ?
++		mhi_cntrl->ready_timeout_ms : mhi_cntrl->timeout_ms;
+ 	ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHISTATUS,
+-				 MHISTATUS_READY_MASK, 1, interval_us);
++				 MHISTATUS_READY_MASK, 1, interval_us,
++				 timeout_ms);
+ 	if (ret) {
+ 		dev_err(dev, "Device failed to enter MHI Ready\n");
+ 		return ret;
+@@ -479,7 +484,7 @@ static void mhi_pm_disable_transition(st
+ 
+ 		/* Wait for the reset bit to be cleared by the device */
+ 		ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
+-				 MHICTRL_RESET_MASK, 0, 25000);
++				 MHICTRL_RESET_MASK, 0, 25000, mhi_cntrl->timeout_ms);
+ 		if (ret)
+ 			dev_err(dev, "Device failed to clear MHI Reset\n");
+ 
+@@ -492,8 +497,8 @@ static void mhi_pm_disable_transition(st
+ 		if (!MHI_IN_PBL(mhi_get_exec_env(mhi_cntrl))) {
+ 			/* wait for ready to be set */
+ 			ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs,
+-						 MHISTATUS,
+-						 MHISTATUS_READY_MASK, 1, 25000);
++						 MHISTATUS, MHISTATUS_READY_MASK,
++						 1, 25000, mhi_cntrl->timeout_ms);
+ 			if (ret)
+ 				dev_err(dev, "Device failed to enter READY state\n");
+ 		}
+@@ -1111,7 +1116,8 @@ int mhi_async_power_up(struct mhi_contro
+ 	if (state == MHI_STATE_SYS_ERR) {
+ 		mhi_set_mhi_state(mhi_cntrl, MHI_STATE_RESET);
+ 		ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
+-				 MHICTRL_RESET_MASK, 0, interval_us);
++				 MHICTRL_RESET_MASK, 0, interval_us,
++				 mhi_cntrl->timeout_ms);
+ 		if (ret) {
+ 			dev_info(dev, "Failed to reset MHI due to syserr state\n");
+ 			goto error_exit;
+@@ -1202,14 +1208,18 @@ EXPORT_SYMBOL_GPL(mhi_power_down);
+ int mhi_sync_power_up(struct mhi_controller *mhi_cntrl)
+ {
+ 	int ret = mhi_async_power_up(mhi_cntrl);
++	u32 timeout_ms;
+ 
+ 	if (ret)
+ 		return ret;
+ 
++	/* Some devices need more time to set ready during power up */
++	timeout_ms = mhi_cntrl->ready_timeout_ms ?
++		mhi_cntrl->ready_timeout_ms : mhi_cntrl->timeout_ms;
+ 	wait_event_timeout(mhi_cntrl->state_event,
+ 			   MHI_IN_MISSION_MODE(mhi_cntrl->ee) ||
+ 			   MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state),
+-			   msecs_to_jiffies(mhi_cntrl->timeout_ms));
++			   msecs_to_jiffies(timeout_ms));
+ 
+ 	ret = (MHI_IN_MISSION_MODE(mhi_cntrl->ee)) ? 0 : -ETIMEDOUT;
+ 	if (ret)
+--- a/include/linux/mhi.h
++++ b/include/linux/mhi.h
+@@ -266,6 +266,7 @@ struct mhi_event_config {
+  * struct mhi_controller_config - Root MHI controller configuration
+  * @max_channels: Maximum number of channels supported
+  * @timeout_ms: Timeout value for operations. 0 means use default
++ * @ready_timeout_ms: Timeout value for waiting device to be ready (optional)
+  * @buf_len: Size of automatically allocated buffers. 0 means use default
+  * @num_channels: Number of channels defined in @ch_cfg
+  * @ch_cfg: Array of defined channels
+@@ -277,6 +278,7 @@ struct mhi_event_config {
+ struct mhi_controller_config {
+ 	u32 max_channels;
+ 	u32 timeout_ms;
++	u32 ready_timeout_ms;
+ 	u32 buf_len;
+ 	u32 num_channels;
+ 	const struct mhi_channel_config *ch_cfg;
+@@ -326,6 +328,7 @@ struct mhi_controller_config {
+  * @pm_mutex: Mutex for suspend/resume operation
+  * @pm_lock: Lock for protecting MHI power management state
+  * @timeout_ms: Timeout in ms for state transitions
++ * @ready_timeout_ms: Timeout in ms for waiting device to be ready (optional)
+  * @pm_state: MHI power management state
+  * @db_access: DB access states
+  * @ee: MHI device execution environment
+@@ -413,6 +416,7 @@ struct mhi_controller {
+ 	struct mutex pm_mutex;
+ 	rwlock_t pm_lock;
+ 	u32 timeout_ms;
++	u32 ready_timeout_ms;
+ 	u32 pm_state;
+ 	u32 db_access;
+ 	enum mhi_ee_type ee;
diff --git a/target/linux/generic/backport-6.1/862-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch b/target/linux/generic/backport-6.1/862-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch
new file mode 100644
index 0000000000..944747ac56
--- /dev/null
+++ b/target/linux/generic/backport-6.1/862-v6.8-bus-mhi-host-pci_generic-Add-SDX75-based-modem-suppo.patch
@@ -0,0 +1,62 @@
+From b2f401efbff8878be31b2bce6e8d7bdad23e6f12 Mon Sep 17 00:00:00 2001
+From: Qiang Yu <quic_qianyu at quicinc.com>
+Date: Tue, 7 Nov 2023 16:14:50 +0800
+Subject: [PATCH 12/13] bus: mhi: host: pci_generic: Add SDX75 based modem
+ support
+
+Add generic info for SDX75 based modems. SDX75 takes longer to set ready
+during power up. Hence use separate configuration.
+
+Signed-off-by: Qiang Yu <quic_qianyu at quicinc.com>
+Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+Link: https://lore.kernel.org/r/1699344890-87076-3-git-send-email-quic_qianyu at quicinc.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -269,6 +269,16 @@ static struct mhi_event_config modem_qco
+ 	MHI_EVENT_CONFIG_HW_DATA(5, 2048, 101)
+ };
+ 
++static const struct mhi_controller_config modem_qcom_v2_mhiv_config = {
++	.max_channels = 128,
++	.timeout_ms = 8000,
++	.ready_timeout_ms = 50000,
++	.num_channels = ARRAY_SIZE(modem_qcom_v1_mhi_channels),
++	.ch_cfg = modem_qcom_v1_mhi_channels,
++	.num_events = ARRAY_SIZE(modem_qcom_v1_mhi_events),
++	.event_cfg = modem_qcom_v1_mhi_events,
++};
++
+ static const struct mhi_controller_config modem_qcom_v1_mhiv_config = {
+ 	.max_channels = 128,
+ 	.timeout_ms = 8000,
+@@ -278,6 +288,16 @@ static const struct mhi_controller_confi
+ 	.event_cfg = modem_qcom_v1_mhi_events,
+ };
+ 
++static const struct mhi_pci_dev_info mhi_qcom_sdx75_info = {
++	.name = "qcom-sdx75m",
++	.fw = "qcom/sdx75m/xbl.elf",
++	.edl = "qcom/sdx75m/edl.mbn",
++	.config = &modem_qcom_v2_mhiv_config,
++	.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
++	.dma_data_width = 32,
++	.sideband_wake = false,
++};
++
+ static const struct mhi_pci_dev_info mhi_qcom_sdx65_info = {
+ 	.name = "qcom-sdx65m",
+ 	.fw = "qcom/sdx65m/xbl.elf",
+@@ -600,6 +620,8 @@ static const struct pci_device_id mhi_pc
+ 		.driver_data = (kernel_ulong_t) &mhi_telit_fn990_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
+ 		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
++	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0309),
++		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx75_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1001), /* EM120R-GL (sdx24) */
+ 		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
+ 	{ PCI_DEVICE(PCI_VENDOR_ID_QUECTEL, 0x1002), /* EM160R-GL (sdx24) */
diff --git a/target/linux/generic/backport-6.1/863-stable-bus-mhi-host-pci_generic-constify-modem_telit_fn980_.patch b/target/linux/generic/backport-6.1/863-stable-bus-mhi-host-pci_generic-constify-modem_telit_fn980_.patch
new file mode 100644
index 0000000000..085e8862ae
--- /dev/null
+++ b/target/linux/generic/backport-6.1/863-stable-bus-mhi-host-pci_generic-constify-modem_telit_fn980_.patch
@@ -0,0 +1,28 @@
+From 5f157aa89b876e82d6aafb2d009979118d0bdd2b Mon Sep 17 00:00:00 2001
+From: Jeff Johnson <quic_jjohnson at quicinc.com>
+Date: Thu, 22 Feb 2024 18:00:23 -0800
+Subject: [PATCH 13/13] bus: mhi: host: pci_generic: constify
+ modem_telit_fn980_hw_v1_config
+
+MHI expects the controller configs to be const, and all of the other ones
+in this file already are, so constify modem_telit_fn980_hw_v1_config.
+
+Signed-off-by: Jeff Johnson <quic_jjohnson at quicinc.com>
+Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+Link: https://lore.kernel.org/r/20240222-mhi-const-bus-mhi-host-pci_generic-v1-1-d4c9b0b0a7a5 at quicinc.com
+Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org>
+---
+ drivers/bus/mhi/host/pci_generic.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/bus/mhi/host/pci_generic.c
++++ b/drivers/bus/mhi/host/pci_generic.c
+@@ -538,7 +538,7 @@ static struct mhi_event_config mhi_telit
+ 	MHI_EVENT_CONFIG_HW_DATA(2, 2048, 101)
+ };
+ 
+-static struct mhi_controller_config modem_telit_fn980_hw_v1_config = {
++static const struct mhi_controller_config modem_telit_fn980_hw_v1_config = {
+ 	.max_channels = 128,
+ 	.timeout_ms = 20000,
+ 	.num_channels = ARRAY_SIZE(mhi_telit_fn980_hw_v1_channels),
diff --git a/target/linux/generic/pending-6.1/790-bus-mhi-core-add-SBL-state-callback.patch b/target/linux/generic/pending-6.1/790-bus-mhi-core-add-SBL-state-callback.patch
index f239355594..fe0f260ae3 100644
--- a/target/linux/generic/pending-6.1/790-bus-mhi-core-add-SBL-state-callback.patch
+++ b/target/linux/generic/pending-6.1/790-bus-mhi-core-add-SBL-state-callback.patch
@@ -20,7 +20,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/drivers/bus/mhi/host/main.c
 +++ b/drivers/bus/mhi/host/main.c
-@@ -905,6 +905,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
+@@ -906,6 +906,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
  			switch (event) {
  			case MHI_EE_SBL:
  				st = DEV_ST_TRANSITION_SBL;



From lede-commits at lists.infradead.org  Fri Mar 15 12:39:45 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 15:39:45 -0400
Subject: [openwrt/openwrt]  mac80211: fix another regression in the broadcast
 AQL patch
In-Reply-To: <171053158516.3409509.12494758756011030873@git-01.infra.openwrt.org>
References: <171053158516.3409509.12494758756011030873@git-01.infra.openwrt.org>
Message-ID: <mailman.16795.1710531595.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/163c87dfc20b1004be4e179fa5d59bb1c8925396

commit 163c87dfc20b1004be4e179fa5d59bb1c8925396
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Fri Mar 15 20:34:58 2024 +0100

    mac80211: fix another regression in the broadcast AQL patch
    
    Add a separate bit in struct ieee80211_tx_info to indicate airtime tracked
    as broadcast/multicast. This avoids a race condition where airtime from
    stations that were just removed wasn't getting subtracted from the total
    PHY airtime.
    
    Fixes: 95e633efbd1b ("mac80211: add AQL support for broadcast/multicast packets")
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 ...211-add-AQL-support-for-broadcast-packets.patch | 156 +++++++++++++++------
 .../subsys/780-avoid-crashing-missing-band.patch   |   2 +-
 2 files changed, 113 insertions(+), 45 deletions(-)

diff --git a/package/kernel/mac80211/patches/subsys/330-mac80211-add-AQL-support-for-broadcast-packets.patch b/package/kernel/mac80211/patches/subsys/330-mac80211-add-AQL-support-for-broadcast-packets.patch
index f117a68c16..d53afcf591 100644
--- a/package/kernel/mac80211/patches/subsys/330-mac80211-add-AQL-support-for-broadcast-packets.patch
+++ b/package/kernel/mac80211/patches/subsys/330-mac80211-add-AQL-support-for-broadcast-packets.patch
@@ -95,56 +95,48 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		spin_lock_init(&local->active_txq_lock[i]);
 --- a/net/mac80211/sta_info.c
 +++ b/net/mac80211/sta_info.c
-@@ -2341,29 +2341,33 @@ void ieee80211_sta_update_pending_airtim
+@@ -2343,13 +2343,28 @@ EXPORT_SYMBOL(ieee80211_sta_recalc_aggre
+ 
+ void ieee80211_sta_update_pending_airtime(struct ieee80211_local *local,
  					  struct sta_info *sta, u8 ac,
- 					  u16 tx_airtime, bool tx_completed)
+-					  u16 tx_airtime, bool tx_completed)
++					  u16 tx_airtime, bool tx_completed,
++					  bool mcast)
  {
--	int tx_pending;
-+	int tx_pending = 0;
-+	atomic_t *counter;
+ 	int tx_pending;
  
  	if (!wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL))
  		return;
  
--	if (!tx_completed) {
--		if (sta)
--			atomic_add(tx_airtime,
--				   &sta->airtime[ac].aql_tx_pending);
-+	if (sta)
-+		counter = &sta->airtime[ac].aql_tx_pending;
-+	else
-+		counter = &local->aql_bc_pending_airtime;
-+
-+	if (!tx_completed)
-+		atomic_add(tx_airtime, counter);
-+	else
-+		tx_pending = atomic_sub_return(tx_airtime, counter);
-+	if (tx_pending < 0)
-+		atomic_cmpxchg(counter, tx_pending, 0);
++	if (mcast) {
++		if (!tx_completed) {
++			atomic_add(tx_airtime, &local->aql_bc_pending_airtime);
++			return;
++		}
 +
-+	if (!sta)
++		tx_pending = atomic_sub_return(tx_airtime,
++					       &local->aql_bc_pending_airtime);
++		if (tx_pending < 0)
++			atomic_cmpxchg(&local->aql_bc_pending_airtime,
++				       tx_pending, 0);
 +		return;
- 
-+	if (!tx_completed) {
- 		atomic_add(tx_airtime, &local->aql_total_pending_airtime);
- 		atomic_add(tx_airtime, &local->aql_ac_pending_airtime[ac]);
- 		return;
- 	}
- 
--	if (sta) {
--		tx_pending = atomic_sub_return(tx_airtime,
--					       &sta->airtime[ac].aql_tx_pending);
--		if (tx_pending < 0)
--			atomic_cmpxchg(&sta->airtime[ac].aql_tx_pending,
--				       tx_pending, 0);
--	}
--
- 	atomic_sub(tx_airtime, &local->aql_total_pending_airtime);
- 	tx_pending = atomic_sub_return(tx_airtime,
- 				       &local->aql_ac_pending_airtime[ac]);
++	}
++
+ 	if (!tx_completed) {
+ 		if (sta)
+ 			atomic_add(tx_airtime,
 --- a/net/mac80211/tx.c
 +++ b/net/mac80211/tx.c
-@@ -3958,9 +3958,8 @@ begin:
+@@ -2536,7 +2536,7 @@ static u16 ieee80211_store_ack_skb(struc
+ 
+ 		spin_lock_irqsave(&local->ack_status_lock, flags);
+ 		id = idr_alloc(&local->ack_status_frames, ack_skb,
+-			       1, 0x2000, GFP_ATOMIC);
++			       1, 0x1000, GFP_ATOMIC);
+ 		spin_unlock_irqrestore(&local->ack_status_lock, flags);
+ 
+ 		if (id >= 0) {
+@@ -3958,20 +3958,20 @@ begin:
  encap_out:
  	IEEE80211_SKB_CB(skb)->control.vif = vif;
  
@@ -156,7 +148,26 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		u32 airtime;
  
  		airtime = ieee80211_calc_expected_tx_airtime(hw, vif, txq->sta,
-@@ -4026,6 +4025,7 @@ struct ieee80211_txq *ieee80211_next_txq
+ 							     skb->len, ampdu);
+-		if (airtime) {
+-			airtime = ieee80211_info_set_tx_time_est(info, airtime);
+-			ieee80211_sta_update_pending_airtime(local, tx.sta,
+-							     txq->ac,
+-							     airtime,
+-							     false);
+-		}
++		if (!airtime)
++			return skb;
++
++		airtime = ieee80211_info_set_tx_time_est(info, airtime);
++		info->tx_time_mc = !tx.sta;
++		ieee80211_sta_update_pending_airtime(local, tx.sta, txq->ac,
++						     airtime, false,
++						     info->tx_time_mc);
+ 	}
+ 
+ 	return skb;
+@@ -4026,6 +4026,7 @@ struct ieee80211_txq *ieee80211_next_txq
  	struct ieee80211_txq *ret = NULL;
  	struct txq_info *txqi = NULL, *head = NULL;
  	bool found_eligible_txq = false;
@@ -164,7 +175,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	spin_lock_bh(&local->active_txq_lock[ac]);
  
-@@ -4049,26 +4049,26 @@ struct ieee80211_txq *ieee80211_next_txq
+@@ -4049,26 +4050,26 @@ struct ieee80211_txq *ieee80211_next_txq
  	if (!head)
  		head = txqi;
  
@@ -203,7 +214,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (txqi->schedule_round == local->schedule_round[ac])
  		goto out;
  
-@@ -4133,7 +4133,8 @@ bool ieee80211_txq_airtime_check(struct
+@@ -4133,7 +4134,8 @@ bool ieee80211_txq_airtime_check(struct
  		return true;
  
  	if (!txq->sta)
@@ -213,7 +224,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	if (unlikely(txq->tid == IEEE80211_NUM_TIDS))
  		return true;
-@@ -4182,15 +4183,15 @@ bool ieee80211_txq_may_transmit(struct i
+@@ -4182,15 +4184,15 @@ bool ieee80211_txq_may_transmit(struct i
  
  	spin_lock_bh(&local->active_txq_lock[ac]);
  
@@ -232,3 +243,60 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	list_for_each_entry_safe(iter, tmp, &local->active_txqs[ac],
  				 schedule_order) {
  		if (iter == txqi)
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -1116,6 +1116,7 @@ ieee80211_rate_get_vht_nss(const struct
+  *	link the frame will be transmitted on
+  * @hw_queue: HW queue to put the frame on, skb_get_queue_mapping() gives the AC
+  * @ack_frame_id: internal frame ID for TX status, used internally
++ * @tx_time_mc: TX time is for a multicast packet
+  * @tx_time_est: TX time estimate in units of 4us, used internally
+  * @control: union part for control data
+  * @control.rates: TX rates array to try
+@@ -1155,8 +1156,9 @@ struct ieee80211_tx_info {
+ 	/* common information */
+ 	u32 flags;
+ 	u32 band:3,
+-	    ack_frame_id:13,
++	    ack_frame_id:12,
+ 	    hw_queue:4,
++	    tx_time_mc:1,
+ 	    tx_time_est:10;
+ 	/* 2 free bits */
+ 
+--- a/net/mac80211/sta_info.h
++++ b/net/mac80211/sta_info.h
+@@ -147,7 +147,8 @@ struct airtime_info {
+ 
+ void ieee80211_sta_update_pending_airtime(struct ieee80211_local *local,
+ 					  struct sta_info *sta, u8 ac,
+-					  u16 tx_airtime, bool tx_completed);
++					  u16 tx_airtime, bool tx_completed,
++					  bool mcast);
+ 
+ struct sta_info;
+ 
+--- a/net/mac80211/status.c
++++ b/net/mac80211/status.c
+@@ -716,7 +716,7 @@ static void ieee80211_report_used_skb(st
+ 		ieee80211_sta_update_pending_airtime(local, sta,
+ 						     skb_get_queue_mapping(skb),
+ 						     tx_time_est,
+-						     true);
++						     true, info->tx_time_mc);
+ 		rcu_read_unlock();
+ 	}
+ 
+@@ -1127,10 +1127,11 @@ void ieee80211_tx_status_ext(struct ieee
+ 		/* Do this here to avoid the expensive lookup of the sta
+ 		 * in ieee80211_report_used_skb().
+ 		 */
++		bool mcast = IEEE80211_SKB_CB(skb)->tx_time_mc;
+ 		ieee80211_sta_update_pending_airtime(local, sta,
+ 						     skb_get_queue_mapping(skb),
+ 						     tx_time_est,
+-						     true);
++						     true, mcast);
+ 		ieee80211_info_set_tx_time_est(IEEE80211_SKB_CB(skb), 0);
+ 	}
+ 
diff --git a/package/kernel/mac80211/patches/subsys/780-avoid-crashing-missing-band.patch b/package/kernel/mac80211/patches/subsys/780-avoid-crashing-missing-band.patch
index 6a1fc31d87..35fa961d21 100644
--- a/package/kernel/mac80211/patches/subsys/780-avoid-crashing-missing-band.patch
+++ b/package/kernel/mac80211/patches/subsys/780-avoid-crashing-missing-band.patch
@@ -18,7 +18,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 
 --- a/net/mac80211/sta_info.c
 +++ b/net/mac80211/sta_info.c
-@@ -2426,6 +2426,13 @@ static void sta_stats_decode_rate(struct
+@@ -2445,6 +2445,13 @@ static void sta_stats_decode_rate(struct
  
  		sband = local->hw.wiphy->bands[band];
  



From lede-commits at lists.infradead.org  Fri Mar 15 15:26:18 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 18:26:18 -0400
Subject: [openwrt/openwrt]  ramips: add support for Z-ROUTER ZR-2660
In-Reply-To: <171054157895.3759074.1870075665494900325@git-01.infra.openwrt.org>
References: <171054157895.3759074.1870075665494900325@git-01.infra.openwrt.org>
Message-ID: <mailman.16919.1710541588.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/200693f886d3765475fa264c4e03968e5f7e54b0

commit 200693f886d3765475fa264c4e03968e5f7e54b0
Author: Mikhail Zhilkin <csharper2005 at gmail.com>
AuthorDate: Sat Mar 2 19:58:40 2024 +0000

    ramips: add support for Z-ROUTER ZR-2660
    
    This commit adds support for Z-ROUTER ZR-2660 (also known as Routerich
    AX1800) wireless WiFi 6 router.
    
    Specification
    -------------
    - SoC       : MediaTek MT7621AT, MIPS, 880 MHz
    - RAM       : 256 MiB
    - Flash     : NAND 128 MiB (AMD/Spansion S34ML01G2)
    - WLAN      :
      - 2.4 GHz : MediaTek MT7905D/MT7975 (14c3:7916), b/g/n/ax, MIMO 2x2
      - 5 GHz   : MediaTek MT7915E (14c3:7915), a/n/ac/ax, MIMO 2x2
    - Ethernet  : 10/100/1000 Mbps x4 (1x WAN, 3x LAN)
    - USB       : 1x 2.0
    - UART      : 3.3V, 115200n8, pins are silkscreened on the pcb
    - Buttons   : 1x Reset
    - LEDs      : 1x WiFi 2.4 GHz (green)
                  1x WiFi 5 GHz (green)
                  1x LAN (green)
                  1x WAN (green)
                  1x WAN no-internet (red)
    - Power     : 12 VDC, 1 A
    
    Installation
    ------------
    1. Run tftp server on your PC (IP: 192.168.2.2) and put OpenWrt initramfs
       image (initramfs.bin) to the tftp root dir
    2. Open the following link in the browser to enable telnet:
            http://192.168.2.1/cgi-bin/telnet_ssh
    3. Connect to the router (default IP: 192.168.2.1) using telnet shell
       (credentials - user:admin)
    4. Run the following commands in the telnet shell (this will install
       OpenWrt initramfs image on nand flash):
            cd /tmp
            tftp -g -r initramfs.bin 192.168.2.2
            mtd write initramfs.bin firmware
            mtd erase firmware_backup
            reboot
    5. Copy OpenWrt sysupgrade image (sysupgrade.bin) to the /tmp dir of the
       router
    6. Connect to the router (IP: 192.168.1.1) using ssh shell and run
       sysupgrade command:
            sysupgrade -n /tmp/sysupgrade.bin
    
    Return to stock
    ---------------
    1. Copy stock firmware (stock.bin) to the /tmp dir of the router using scp
    2. Run following command in the router shell:
            cd /tmp
            mtd write stock.bin firmware
            reboot
    
    Recovery
    --------
    Connect uart (pins are silkscreened on the pcb), interrupt boot process by
    pressing any key, use u-boot menu to flash stock firmware image or OpenWrt
    initramfs image.
    
    MAC addresses
    -------------
    +---------+-------------------+-----------+
    |         | MAC               | Algorithm |
    +---------+-------------------+-----------+
    | LAN     | 24:0f:5e:xx:xx:4c | label     |
    | WAN     | 24:0f:5e:xx:xx:4d | label+1   |
    | WLAN 2g | 24:0f:5e:xx:xx:4e | label+2   |
    | WLAN 5g | 24:0f:5e:xx:xx:4f | label+3   |
    +---------+-------------------+-----------+
    The WLAN 2.4 MAC was found in 'factory', 0x4
    The LAN MAC was found in 'factory', 0xfff4
    The WAN MAC was found in 'factory', 0xfffa
    
    Signed-off-by: Mikhail Zhilkin <csharper2005 at gmail.com>
    (cherry picked from commit 1d3d6ef8269aca7ee34fb6ddd1c11d3fe45e785b)
    Signed-off-by: Mikhail Zhilkin <csharper2005 at gmail.com>
---
 .../linux/ramips/dts/mt7621_z-router_zr-2660.dts   | 211 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |  15 ++
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |   5 +
 .../mt7621/base-files/etc/board.d/02_network       |   1 +
 .../etc/hotplug.d/ieee80211/10_fix_wifi_mac        |   3 +-
 .../mt7621/base-files/lib/upgrade/platform.sh      |   1 +
 6 files changed, 235 insertions(+), 1 deletion(-)

diff --git a/target/linux/ramips/dts/mt7621_z-router_zr-2660.dts b/target/linux/ramips/dts/mt7621_z-router_zr-2660.dts
new file mode 100644
index 0000000000..34b151be75
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_z-router_zr-2660.dts
@@ -0,0 +1,211 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	compatible = "z-router,zr-2660", "mediatek,mt7621-soc";
+	model = "Z-ROUTER ZR-2660";
+
+	aliases {
+		label-mac-device = &gmac0;
+
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		key-0 {
+			label = "reset";
+			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led-0 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WAN;
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+		};
+
+		led-1 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <50>;
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+
+		led-2 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_LAN;
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+
+		led-3 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <24>;
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		led-4 {
+			color = <LED_COLOR_ID_RED>;
+			function = LED_FUNCTION_WAN;
+			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+		};
+
+		led_power_green: led-5 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_POWER;
+			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_3fff4>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	status = "okay";
+	label = "wan";
+	phy-handle = <&ethphy4>;
+
+	nvmem-cells = <&macaddr_factory_3fffa>;
+	nvmem-cell-names = "mac-address";
+};
+
+&mdio {
+	ethphy4: ethernet-phy at 4 {
+		reg = <4>;
+	};
+};
+
+&nand {
+	status = "okay";
+
+	mediatek,nmbm;
+	mediatek,bmt-max-ratio = <1>;
+	mediatek,bmt-max-reserved-blocks = <64>;
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition at 0 {
+			label = "u-boot";
+			reg = <0x0 0x80000>;
+			read-only;
+		};
+
+		partition at 80000 {
+			label = "Config";
+			reg = <0x80000 0x80000>;
+			read-only;
+		};
+
+		partition at 100000 {
+			label = "factory";
+			reg = <0x100000 0x80000>;
+			read-only;
+
+			nvmem-layout {
+				compatible = "fixed-layout";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				eeprom_factory_0: eeprom at 0 {
+					reg = <0x0 0xe00>;
+				};
+
+				macaddr_factory_3fff4: macaddr at 3fff4 {
+					reg = <0x3fff4 0x6>;
+				};
+
+				macaddr_factory_3fffa: macaddr at 3fffa {
+					reg = <0x3fffa 0x6>;
+				};
+			};
+		};
+
+		partition at 180000 {
+			label = "firmware";
+			reg = <0x180000 0x7680000>;
+
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "kernel";
+				reg = <0x0 0x400000>;
+			};
+
+			partition at 400000 {
+				label = "ubi";
+				reg = <0x400000 0x7280000>;
+			};
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie1 {
+	wifi at 0,0 {
+		compatible = "mediatek,mt76";
+		reg = <0x0000 0 0 0 0>;
+
+		mediatek,disable-radar-background;
+
+		nvmem-cells = <&eeprom_factory_0>;
+		nvmem-cell-names = "eeprom";
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "i2c", "jtag", "wdt";
+		function = "gpio";
+	};
+};
+
+&switch0 {
+	ports {
+		port at 1 {
+			status = "okay";
+			label = "lan1";
+		};
+
+		port at 2 {
+			status = "okay";
+			label = "lan2";
+		};
+
+		port at 3 {
+			status = "okay";
+			label = "lan3";
+		};
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 2800eea681..1a8df617b5 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -2816,6 +2816,21 @@ define Device/yuncore_g720
 endef
 TARGET_DEVICES += yuncore_g720
 
+define Device/z-router_zr-2660
+  $(Device/dsa-migration)
+  $(Device/nand)
+  DEVICE_VENDOR := Z-ROUTER
+  DEVICE_MODEL := ZR-2660
+  DEVICE_ALT0_VENDOR := Routerich
+  DEVICE_ALT0_MODEL := AX1800
+  IMAGE_SIZE := 90112k
+  KERNEL_LOADADDR := 0x82000000
+  KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
+	fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  DEVICE_PACKAGES += kmod-mt7915-firmware kmod-usb3 -uboot-envtools
+endef
+TARGET_DEVICES += z-router_zr-2660
+
 define Device/zbtlink_zbt-we1326
   $(Device/dsa-migration)
   $(Device/uimage-lzma-loader)
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
index a721833040..ae46ddb79f 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -246,6 +246,11 @@ yuncore,ax820)
 	ucidef_set_led_netdev "lan" "LAN" "green:lan" "lan"
 	ucidef_set_led_netdev "wan" "WAN" "green:wan" "wan"
 	;;
+z-router,zr-2660)
+	ucidef_set_led_netdev "lan" "lan" "green:lan" "br-lan" "link tx rx"
+	ucidef_set_led_netdev "wan" "wan" "green:wan" "wan" "link tx rx"
+	ucidef_set_led_netdev "wan-off" "wan-off" "red:wan" "wan" "link"
+	;;
 zyxel,lte3301-plus)
 	ucidef_set_led_netdev "internet" "internet" "white:internet" "wwan0"
 	;;
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
index 041df7677e..8aabf41928 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
@@ -26,6 +26,7 @@ ramips_setup_interfaces()
 	xiaomi,mi-router-cr6608|\
 	xiaomi,mi-router-cr6609|\
 	xiaomi,redmi-router-ac2100|\
+	z-router,zr-2660|\
 	zyxel,wsm20)
 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan"
 		;;
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 353bd31233..0e4541a421 100644
--- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -71,7 +71,8 @@ case "$board" in
 			macaddr_setbit_la "$base_mac" > /sys${DEVPATH}/macaddress
 		fi
 		;;
-	glinet,gl-mt1300)
+	glinet,gl-mt1300|\
+	z-router,zr-2660)
 		[ "$PHYNBR" = "1" ] && \
 			macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1 > /sys${DEVPATH}/macaddress
 		;;
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
index 98d26cc904..8b35b5d32a 100755
--- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
@@ -118,6 +118,7 @@ platform_do_upgrade() {
 	xiaomi,mi-router-cr6608|\
 	xiaomi,mi-router-cr6609|\
 	xiaomi,redmi-router-ac2100|\
+	z-router,zr-2660|\
 	zyxel,nwa50ax|\
 	zyxel,nwa55axe)
 		nand_do_upgrade "$1"



From lede-commits at lists.infradead.org  Fri Mar 15 15:29:40 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 18:29:40 -0400
Subject: [openwrt/openwrt]  filogic: fix wifi eeprom filename for tuf-ax6000
 The router use mt7986_eeprom_mt7976_dual.bin
In-Reply-To: <171054178088.3766526.15169370017905889538@git-01.infra.openwrt.org>
References: <171054178088.3766526.15169370017905889538@git-01.infra.openwrt.org>
Message-ID: <mailman.16924.1710541791.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/b3ad42e1e359b54c2b5ea85906111f813b802e6a

commit b3ad42e1e359b54c2b5ea85906111f813b802e6a
Author: Patryk Kowalczyk <patryk at kowalczyk.ws>
AuthorDate: Thu Nov 2 09:46:36 2023 +0100

    filogic: fix wifi eeprom filename for tuf-ax6000 The router use mt7986_eeprom_mt7976_dual.bin
    
    Fixes: d522ccecb2 ("filogic: add support for ASUS TUF AX6000")
    
    Signed-off-by: Patryk Kowalczyk <patryk at kowalczyk.ws>
    (cherry picked from commit 0c3f4bd85ee6067588a81843a403850ab0082270)
    Signed-off-by: Tom Herbers <mail at tomherbers.de>
---
 .../filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata      | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata
index 8eda14f82b..bff3be2a9b 100644
--- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata
+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/firmware/11-mt76-caldata
@@ -46,8 +46,7 @@ case "$FIRMWARE" in
 "mediatek/mt7986_eeprom_mt7976_dbdc.bin")
 	case "$board" in
 	asus,rt-ax59u|\
-	asus,tuf-ax4200|\
-	asus,tuf-ax6000)
+	asus,tuf-ax4200)
 		CI_UBIPART="UBI_DEV"
 		caldata_extract_ubi "Factory" 0x0 0x1000
 		;;
@@ -55,6 +54,10 @@ case "$FIRMWARE" in
 	;;
 "mediatek/mt7986_eeprom_mt7976_dual.bin")
 	case "$board" in
+	asus,tuf-ax6000)
+		CI_UBIPART="UBI_DEV"
+		caldata_extract_ubi "Factory" 0x0 0x1000
+		;;
 	glinet,gl-mt6000)
 		caldata_extract_mmc "factory" 0x0 0x1000
 		;;



From lede-commits at lists.infradead.org  Fri Mar 15 15:29:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 18:29:42 -0400
Subject: [openwrt/openwrt]  mediatek: filogic: Asus TUF AX6000 fix inverted
 LED for 2.5Gb LAN port
In-Reply-To: <171054178088.3766526.15169370017905889538@git-01.infra.openwrt.org>
References: <171054178088.3766526.15169370017905889538@git-01.infra.openwrt.org>
Message-ID: <mailman.16925.1710541792.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/6961fe98ecfb47655893606265c5426995dfbb3f

commit 6961fe98ecfb47655893606265c5426995dfbb3f
Author: Patryk Kowalczyk <patryk at kowalczyk.ws>
AuthorDate: Tue Jan 2 10:37:47 2024 +0100

    mediatek: filogic: Asus TUF AX6000 fix inverted LED for 2.5Gb LAN port
    
    Router Asus TUF AX6000 have second MaxLinear GPY211 PHY controller for 2.5Gb LAN port.
    The 5'th LAN port have inverted status of the LED.
    Based on the commit from main branch 90fbec8 we could set proper status of the LED.
    
    Signed-off-by: Patryk Kowalczyk <patryk at kowalczyk.ws>
    (cherry picked from commit b22539b5fef9572f9ce2bedcd01d083c918d82f1)
    Signed-off-by: Tom Herbers <mail at tomherbers.de>
---
 target/linux/mediatek/dts/mt7986a-asus-tuf-ax6000.dts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/mediatek/dts/mt7986a-asus-tuf-ax6000.dts b/target/linux/mediatek/dts/mt7986a-asus-tuf-ax6000.dts
index 41e6d2471d..b05dec93b4 100644
--- a/target/linux/mediatek/dts/mt7986a-asus-tuf-ax6000.dts
+++ b/target/linux/mediatek/dts/mt7986a-asus-tuf-ax6000.dts
@@ -131,6 +131,7 @@
 		compatible = "ethernet-phy-ieee802.3-c45";
 		reg = <5>;
 
+		mxl,led-drive-vdd;
 		mxl,led-config = <0x03f0 0x0 0x0 0x0>;
 	};
 



From lede-commits at lists.infradead.org  Fri Mar 15 15:29:41 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 18:29:41 -0400
Subject: [openwrt/openwrt]  kernel: hack: support inverted LEDs on MaxLinear
 GPY211 PHY
In-Reply-To: <171054178088.3766526.15169370017905889538@git-01.infra.openwrt.org>
References: <171054178088.3766526.15169370017905889538@git-01.infra.openwrt.org>
Message-ID: <mailman.16928.1710541795.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/5c786dcb2b504e8260957592447e8088bcc35afa

commit 5c786dcb2b504e8260957592447e8088bcc35afa
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Dec 10 01:15:36 2023 +0000

    kernel: hack: support inverted LEDs on MaxLinear GPY211 PHY
    
    Add downstream DT property to setup the PHY LEDs of the MaxLinear
    GPY211 PHY in such way that the VDD of the LED is driven by the SoC
    pin rather than the GND (which is the default).
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    (cherry picked from commit 90fbec89be263a3838558c5b674f3c4072cc2f1d)
    [removed patches for kernel 6.1]
    Signed-off-by: Tom Herbers <mail at tomherbers.de>
---
 .../hack-5.15/765-mxl-gpy-control-LED-reg-from-DT.patch        | 10 +++++++---
 ...2-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch |  8 ++++----
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/target/linux/generic/hack-5.15/765-mxl-gpy-control-LED-reg-from-DT.patch b/target/linux/generic/hack-5.15/765-mxl-gpy-control-LED-reg-from-DT.patch
index 8de3668def..95e9749d91 100644
--- a/target/linux/generic/hack-5.15/765-mxl-gpy-control-LED-reg-from-DT.patch
+++ b/target/linux/generic/hack-5.15/765-mxl-gpy-control-LED-reg-from-DT.patch
@@ -55,7 +55,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  /* SGMII */
  #define VSPEC1_SGMII_CTRL	0x08
  #define VSPEC1_SGMII_CTRL_ANEN	BIT(12)		/* Aneg enable */
-@@ -80,6 +87,31 @@ static const struct {
+@@ -80,6 +87,35 @@ static const struct {
  	{9, 0x73},
  };
  
@@ -64,6 +64,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 +	struct device_node *node = phydev->mdio.dev.of_node;
 +	u32 led_regs[PHY_LED_NUM_LEDS];
 +	int i, ret;
++	u16 val = 0xff00;
 +
 +	if (!IS_ENABLED(CONFIG_OF_MDIO))
 +		return 0;
@@ -71,8 +72,11 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 +	if (of_property_read_u32_array(node, "mxl,led-config", led_regs, PHY_LED_NUM_LEDS))
 +		return 0;
 +
++	if (of_property_read_bool(node, "mxl,led-drive-vdd"))
++		val &= 0x0fff;
++
 +	/* Enable LED function handling on all ports*/
-+	phy_write(phydev, PHY_LED, 0xFF00);
++	phy_write(phydev, PHY_LED, val);
 +
 +	/* Write LED register values */
 +	for (i = 0; i < PHY_LED_NUM_LEDS; i++) {
@@ -87,7 +91,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  static int gpy_config_init(struct phy_device *phydev)
  {
  	int ret;
-@@ -91,7 +123,10 @@ static int gpy_config_init(struct phy_de
+@@ -91,7 +127,10 @@ static int gpy_config_init(struct phy_de
  
  	/* Clear all pending interrupts */
  	ret = phy_read(phydev, PHY_ISTAT);
diff --git a/target/linux/mediatek/patches-5.15/732-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch b/target/linux/mediatek/patches-5.15/732-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch
index 598d9d0d21..6df4436ab9 100644
--- a/target/linux/mediatek/patches-5.15/732-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch
+++ b/target/linux/mediatek/patches-5.15/732-net-phy-mxl-gpy-don-t-use-SGMII-AN-if-using-phylink.patch
@@ -14,7 +14,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/net/phy/mxl-gpy.c
 +++ b/drivers/net/phy/mxl-gpy.c
-@@ -191,8 +191,11 @@ static bool gpy_2500basex_chk(struct phy
+@@ -195,8 +195,11 @@ static bool gpy_2500basex_chk(struct phy
  
  	phydev->speed = SPEED_2500;
  	phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
@@ -28,7 +28,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	return true;
  }
  
-@@ -216,6 +219,14 @@ static int gpy_config_aneg(struct phy_de
+@@ -220,6 +223,14 @@ static int gpy_config_aneg(struct phy_de
  	u32 adv;
  	int ret;
  
@@ -43,7 +43,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	if (phydev->autoneg == AUTONEG_DISABLE) {
  		/* Configure half duplex with genphy_setup_forced,
  		 * because genphy_c45_pma_setup_forced does not support.
-@@ -306,6 +317,8 @@ static void gpy_update_interface(struct
+@@ -310,6 +321,8 @@ static void gpy_update_interface(struct
  	switch (phydev->speed) {
  	case SPEED_2500:
  		phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
@@ -52,7 +52,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
  				     VSPEC1_SGMII_CTRL_ANEN, 0);
  		if (ret < 0)
-@@ -317,7 +330,7 @@ static void gpy_update_interface(struct
+@@ -321,7 +334,7 @@ static void gpy_update_interface(struct
  	case SPEED_100:
  	case SPEED_10:
  		phydev->interface = PHY_INTERFACE_MODE_SGMII;



From lede-commits at lists.infradead.org  Fri Mar 15 15:54:39 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 18:54:39 -0400
Subject: [openwrt/openwrt]  dropbear: cherry-pick upstream patches
In-Reply-To: <171054327929.3820666.16533586842297661108@git-01.infra.openwrt.org>
References: <171054327929.3820666.16533586842297661108@git-01.infra.openwrt.org>
Message-ID: <mailman.16931.1710543286.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/6549a711be6cb9788aaaec6d31e3396b21893163

commit 6549a711be6cb9788aaaec6d31e3396b21893163
Author: Konstantin Demin <rockdrilla at gmail.com>
AuthorDate: Tue Jan 9 03:40:01 2024 +0300

    dropbear: cherry-pick upstream patches
    
    critical fixes:
    - libtommath: possible integer overflow (CVE-2023-36328)
    - implement Strict KEX mode (CVE-2023-48795)
    
    various fixes:
    - fix DROPBEAR_DSS and DROPBEAR_RSA config options
    - y2038 issues
    - remove SO_LINGER socket option
    - make banner reading failure non-fatal
    - fix "noremotetcp" behavior
    - don't try to shutdown a pty
    - fix test for multiuser kernels
    
    adds new features:
    - option to bind to interface
    - allow inetd with non-syslog
    - ignore unsupported command line options with dropbearkey
    
    Signed-off-by: Konstantin Demin <rockdrilla at gmail.com>
    (cherry picked from commit b5cde260487eae86db1661a53e5e5e0823936aab)
    [Only add the patches fixing security problems]
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    Tested-by: Stijn Segers <foss at volatilesystems.org>
---
 package/network/services/dropbear/Makefile         |   2 +-
 ...-libtommath-fix-possible-integer-overflow.patch | 121 ++++++++++++
 .../patches/021-Implement-Strict-KEX-mode.patch    | 216 +++++++++++++++++++++
 3 files changed, 338 insertions(+), 1 deletion(-)

diff --git a/package/network/services/dropbear/Makefile b/package/network/services/dropbear/Makefile
index e98e995ba7..eec02bccc4 100644
--- a/package/network/services/dropbear/Makefile
+++ b/package/network/services/dropbear/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dropbear
 PKG_VERSION:=2022.82
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:= \
diff --git a/package/network/services/dropbear/patches/015-libtommath-fix-possible-integer-overflow.patch b/package/network/services/dropbear/patches/015-libtommath-fix-possible-integer-overflow.patch
new file mode 100644
index 0000000000..f39417adb7
--- /dev/null
+++ b/package/network/services/dropbear/patches/015-libtommath-fix-possible-integer-overflow.patch
@@ -0,0 +1,121 @@
+From 3b576d95dcf791d7b945e75f639da8f89c1685a2 Mon Sep 17 00:00:00 2001
+From: czurnieden <czurnieden at gmx.de>
+Date: Tue, 9 May 2023 17:17:12 +0200
+Subject: Fix possible integer overflow
+
+---
+ libtommath/bn_mp_2expt.c                | 4 ++++
+ libtommath/bn_mp_grow.c                 | 4 ++++
+ libtommath/bn_mp_init_size.c            | 5 +++++
+ libtommath/bn_mp_mul_2d.c               | 4 ++++
+ libtommath/bn_s_mp_mul_digs.c           | 4 ++++
+ libtommath/bn_s_mp_mul_digs_fast.c      | 4 ++++
+ libtommath/bn_s_mp_mul_high_digs.c      | 4 ++++
+ libtommath/bn_s_mp_mul_high_digs_fast.c | 4 ++++
+ 8 files changed, 33 insertions(+)
+
+--- a/libtommath/bn_mp_2expt.c
++++ b/libtommath/bn_mp_2expt.c
+@@ -12,6 +12,10 @@ mp_err mp_2expt(mp_int *a, int b)
+ {
+    mp_err    err;
+ 
++   if (b < 0) {
++      return MP_VAL;
++   }
++
+    /* zero a as per default */
+    mp_zero(a);
+ 
+--- a/libtommath/bn_mp_grow.c
++++ b/libtommath/bn_mp_grow.c
+@@ -9,6 +9,10 @@ mp_err mp_grow(mp_int *a, int size)
+    int     i;
+    mp_digit *tmp;
+ 
++   if (size < 0) {
++      return MP_VAL;
++   }
++
+    /* if the alloc size is smaller alloc more ram */
+    if (a->alloc < size) {
+       /* reallocate the array a->dp
+--- a/libtommath/bn_mp_init_size.c
++++ b/libtommath/bn_mp_init_size.c
+@@ -6,6 +6,11 @@
+ /* init an mp_init for a given size */
+ mp_err mp_init_size(mp_int *a, int size)
+ {
++
++   if (size < 0) {
++      return MP_VAL;
++   }
++
+    size = MP_MAX(MP_MIN_PREC, size);
+ 
+    /* alloc mem */
+--- a/libtommath/bn_mp_mul_2d.c
++++ b/libtommath/bn_mp_mul_2d.c
+@@ -9,6 +9,10 @@ mp_err mp_mul_2d(const mp_int *a, int b,
+    mp_digit d;
+    mp_err   err;
+ 
++   if (b < 0) {
++      return MP_VAL;
++   }
++
+    /* copy */
+    if (a != c) {
+       if ((err = mp_copy(a, c)) != MP_OKAY) {
+--- a/libtommath/bn_s_mp_mul_digs.c
++++ b/libtommath/bn_s_mp_mul_digs.c
+@@ -16,6 +16,10 @@ mp_err s_mp_mul_digs(const mp_int *a, co
+    mp_word r;
+    mp_digit tmpx, *tmpt, *tmpy;
+ 
++   if (digs < 0) {
++      return MP_VAL;
++   }
++
+    /* can we use the fast multiplier? */
+    if ((digs < MP_WARRAY) &&
+        (MP_MIN(a->used, b->used) < MP_MAXFAST)) {
+--- a/libtommath/bn_s_mp_mul_digs_fast.c
++++ b/libtommath/bn_s_mp_mul_digs_fast.c
+@@ -26,6 +26,10 @@ mp_err s_mp_mul_digs_fast(const mp_int *
+    mp_digit W[MP_WARRAY];
+    mp_word  _W;
+ 
++   if (digs < 0) {
++      return MP_VAL;
++   }
++
+    /* grow the destination as required */
+    if (c->alloc < digs) {
+       if ((err = mp_grow(c, digs)) != MP_OKAY) {
+--- a/libtommath/bn_s_mp_mul_high_digs.c
++++ b/libtommath/bn_s_mp_mul_high_digs.c
+@@ -15,6 +15,10 @@ mp_err s_mp_mul_high_digs(const mp_int *
+    mp_word  r;
+    mp_digit tmpx, *tmpt, *tmpy;
+ 
++   if (digs < 0) {
++      return MP_VAL;
++   }
++
+    /* can we use the fast multiplier? */
+    if (MP_HAS(S_MP_MUL_HIGH_DIGS_FAST)
+        && ((a->used + b->used + 1) < MP_WARRAY)
+--- a/libtommath/bn_s_mp_mul_high_digs_fast.c
++++ b/libtommath/bn_s_mp_mul_high_digs_fast.c
+@@ -19,6 +19,10 @@ mp_err s_mp_mul_high_digs_fast(const mp_
+    mp_digit W[MP_WARRAY];
+    mp_word  _W;
+ 
++   if (digs < 0) {
++      return MP_VAL;
++   }
++
+    /* grow the destination as required */
+    pa = a->used + b->used;
+    if (c->alloc < pa) {
diff --git a/package/network/services/dropbear/patches/021-Implement-Strict-KEX-mode.patch b/package/network/services/dropbear/patches/021-Implement-Strict-KEX-mode.patch
new file mode 100644
index 0000000000..e4a279b9ab
--- /dev/null
+++ b/package/network/services/dropbear/patches/021-Implement-Strict-KEX-mode.patch
@@ -0,0 +1,216 @@
+From 6e43be5c7b99dbee49dc72b6f989f29fdd7e9356 Mon Sep 17 00:00:00 2001
+From: Matt Johnston <matt at ucc.asn.au>
+Date: Mon, 20 Nov 2023 14:02:47 +0800
+Subject: Implement Strict KEX mode
+
+As specified by OpenSSH with kex-strict-c-v00 at openssh.com and
+kex-strict-s-v00 at openssh.com.
+---
+ cli-session.c    | 11 +++++++++++
+ common-algo.c    |  6 ++++++
+ common-kex.c     | 26 +++++++++++++++++++++++++-
+ kex.h            |  3 +++
+ process-packet.c | 34 +++++++++++++++++++---------------
+ ssh.h            |  4 ++++
+ svr-session.c    |  3 +++
+ 7 files changed, 71 insertions(+), 16 deletions(-)
+
+--- a/cli-session.c
++++ b/cli-session.c
+@@ -46,6 +46,7 @@ static void cli_finished(void) ATTRIB_NO
+ static void recv_msg_service_accept(void);
+ static void cli_session_cleanup(void);
+ static void recv_msg_global_request_cli(void);
++static void cli_algos_initialise(void);
+ 
+ struct clientsession cli_ses; /* GLOBAL */
+ 
+@@ -117,6 +118,7 @@ void cli_session(int sock_in, int sock_o
+ 	}
+ 
+ 	chaninitialise(cli_chantypes);
++	cli_algos_initialise();
+ 
+ 	/* Set up cli_ses vars */
+ 	cli_session_init(proxy_cmd_pid);
+@@ -487,3 +489,12 @@ void cli_dropbear_log(int priority, cons
+ 	fflush(stderr);
+ }
+ 
++static void cli_algos_initialise(void) {
++	algo_type *algo;
++	for (algo = sshkex; algo->name; algo++) {
++		if (strcmp(algo->name, SSH_STRICT_KEX_S) == 0) {
++			algo->usable = 0;
++		}
++	}
++}
++
+--- a/common-algo.c
++++ b/common-algo.c
+@@ -315,6 +315,12 @@ algo_type sshkex[] = {
+ 	{SSH_EXT_INFO_C, 0, NULL, 1, NULL},
+ #endif
+ #endif
++#if DROPBEAR_CLIENT
++	{SSH_STRICT_KEX_C, 0, NULL, 1, NULL},
++#endif
++#if DROPBEAR_SERVER
++	{SSH_STRICT_KEX_S, 0, NULL, 1, NULL},
++#endif
+ 	{NULL, 0, NULL, 0, NULL}
+ };
+ 
+--- a/common-kex.c
++++ b/common-kex.c
+@@ -183,6 +183,10 @@ void send_msg_newkeys() {
+ 	gen_new_keys();
+ 	switch_keys();
+ 
++	if (ses.kexstate.strict_kex) {
++		ses.transseq = 0;
++	}
++
+ 	TRACE(("leave send_msg_newkeys"))
+ }
+ 
+@@ -193,7 +197,11 @@ void recv_msg_newkeys() {
+ 
+ 	ses.kexstate.recvnewkeys = 1;
+ 	switch_keys();
+-	
++
++	if (ses.kexstate.strict_kex) {
++		ses.recvseq = 0;
++	}
++
+ 	TRACE(("leave recv_msg_newkeys"))
+ }
+ 
+@@ -550,6 +558,10 @@ void recv_msg_kexinit() {
+ 
+ 	ses.kexstate.recvkexinit = 1;
+ 
++	if (ses.kexstate.strict_kex && !ses.kexstate.donefirstkex && ses.recvseq != 1) {
++		dropbear_exit("First packet wasn't kexinit");
++	}
++
+ 	TRACE(("leave recv_msg_kexinit"))
+ }
+ 
+@@ -859,6 +871,18 @@ static void read_kex_algos() {
+ 	}
+ #endif
+ 
++	if (!ses.kexstate.donefirstkex) {
++		const char* strict_name;
++		if (IS_DROPBEAR_CLIENT) {
++			strict_name = SSH_STRICT_KEX_S;
++		} else {
++			strict_name = SSH_STRICT_KEX_C;
++		}
++		if (buf_has_algo(ses.payload, strict_name) == DROPBEAR_SUCCESS) {
++			ses.kexstate.strict_kex = 1;
++		}
++	}
++
+ 	algo = buf_match_algo(ses.payload, sshkex, kexguess2, &goodguess);
+ 	allgood &= goodguess;
+ 	if (algo == NULL || algo->data == NULL) {
+--- a/kex.h
++++ b/kex.h
+@@ -83,6 +83,9 @@ struct KEXState {
+ 
+ 	unsigned our_first_follows_matches : 1;
+ 
++	/* Boolean indicating that strict kex mode is in use */
++	unsigned int strict_kex;
++
+ 	time_t lastkextime; /* time of the last kex */
+ 	unsigned int datatrans; /* data transmitted since last kex */
+ 	unsigned int datarecv; /* data received since last kex */
+--- a/process-packet.c
++++ b/process-packet.c
+@@ -44,6 +44,7 @@ void process_packet() {
+ 
+ 	unsigned char type;
+ 	unsigned int i;
++	unsigned int first_strict_kex = ses.kexstate.strict_kex && !ses.kexstate.donefirstkex;
+ 	time_t now;
+ 
+ 	TRACE2(("enter process_packet"))
+@@ -54,22 +55,24 @@ void process_packet() {
+ 	now = monotonic_now();
+ 	ses.last_packet_time_keepalive_recv = now;
+ 
+-	/* These packets we can receive at any time */
+-	switch(type) {
+ 
+-		case SSH_MSG_IGNORE:
+-			goto out;
+-		case SSH_MSG_DEBUG:
+-			goto out;
+-
+-		case SSH_MSG_UNIMPLEMENTED:
+-			/* debugging XXX */
+-			TRACE(("SSH_MSG_UNIMPLEMENTED"))
+-			goto out;
+-			
+-		case SSH_MSG_DISCONNECT:
+-			/* TODO cleanup? */
+-			dropbear_close("Disconnect received");
++	if (type == SSH_MSG_DISCONNECT) {
++		/* Allowed at any time */
++		dropbear_close("Disconnect received");
++	}
++
++	/* These packets may be received at any time,
++	   except during first kex with strict kex */
++	if (!first_strict_kex) {
++		switch(type) {
++			case SSH_MSG_IGNORE:
++				goto out;
++			case SSH_MSG_DEBUG:
++				goto out;
++			case SSH_MSG_UNIMPLEMENTED:
++				TRACE(("SSH_MSG_UNIMPLEMENTED"))
++				goto out;
++		}
+ 	}
+ 
+ 	/* Ignore these packet types so that keepalives don't interfere with
+@@ -98,7 +101,8 @@ void process_packet() {
+ 			if (type >= 1 && type <= 49
+ 				&& type != SSH_MSG_SERVICE_REQUEST
+ 				&& type != SSH_MSG_SERVICE_ACCEPT
+-				&& type != SSH_MSG_KEXINIT)
++				&& type != SSH_MSG_KEXINIT
++				&& !first_strict_kex)
+ 			{
+ 				TRACE(("unknown allowed packet during kexinit"))
+ 				recv_unimplemented();
+--- a/ssh.h
++++ b/ssh.h
+@@ -100,6 +100,10 @@
+ #define SSH_EXT_INFO_C "ext-info-c"
+ #define SSH_SERVER_SIG_ALGS "server-sig-algs"
+ 
++/* OpenSSH strict KEX feature */
++#define SSH_STRICT_KEX_S "kex-strict-s-v00 at openssh.com"
++#define SSH_STRICT_KEX_C "kex-strict-c-v00 at openssh.com"
++
+ /* service types */
+ #define SSH_SERVICE_USERAUTH "ssh-userauth"
+ #define SSH_SERVICE_USERAUTH_LEN 12
+--- a/svr-session.c
++++ b/svr-session.c
+@@ -368,6 +368,9 @@ static void svr_algos_initialise(void) {
+ 			algo->usable = 0;
+ 		}
+ #endif
++		if (strcmp(algo->name, SSH_STRICT_KEX_C) == 0) {
++			algo->usable = 0;
++		}
+ 	}
+ }
+ 



From lede-commits at lists.infradead.org  Fri Mar 15 16:43:19 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 19:43:19 -0400
Subject: [openwrt/openwrt]  firmware: intel-microcode: update to 20231114
In-Reply-To: <171054619973.3915474.12914645603237518653@git-01.infra.openwrt.org>
References: <171054619973.3915474.12914645603237518653@git-01.infra.openwrt.org>
Message-ID: <mailman.16940.1710546218.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/e0bae5e5fe43e78bb925026c8f0f922bea851062

commit e0bae5e5fe43e78bb925026c8f0f922bea851062
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Fri Mar 8 21:16:44 2024 +0100

    firmware: intel-microcode: update to 20231114
    
    Debian changelog:
    
    intel-microcode (3.20231114.1) unstable; urgency=medium
    
      * New upstream microcode datafile 20231114 (closes: #1055962)
        Mitigations for "reptar", INTEL-SA-00950 (CVE-2023-23583)
        Sequence of processor instructions leads to unexpected behavior for some
        Intel(R) Processors, may allow an authenticated user to potentially enable
        escalation of privilege and/or information disclosure and/or denial of
        service via local access.
        Note: "retvar" on 4th gen Xeon Scalable (sig 0x806f8 pfm 0x87), 12th gen
        Core mobile (sig 0x906a4 pfm 0x80), 13th gen Core desktop (sig 0xb0671 pfm
        0x01) were already mitigated by a previous microcode update.
      * Fixes for unspecified functional issues
      * Updated microcodes:
        sig 0x000606a6, pf_mask 0x87, 2023-09-01, rev 0xd0003b9, size 299008
        sig 0x000606c1, pf_mask 0x10, 2023-09-08, rev 0x1000268, size 290816
        sig 0x000706e5, pf_mask 0x80, 2023-09-03, rev 0x00c2, size 113664
        sig 0x000806c1, pf_mask 0x80, 2023-09-07, rev 0x00b4, size 111616
        sig 0x000806c2, pf_mask 0xc2, 2023-09-07, rev 0x0034, size 98304
        sig 0x000806d1, pf_mask 0xc2, 2023-09-07, rev 0x004e, size 104448
        sig 0x000806f8, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0, size 572416
        sig 0x000806f8, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f7, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f6, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f5, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f4, pf_mask 0x87, 2023-06-16, rev 0x2b0004d0
        sig 0x000806f8, pf_mask 0x10, 2023-06-26, rev 0x2c000290, size 605184
        sig 0x000806f8, pf_mask 0x10, 2023-06-26, rev 0x2c000290
        sig 0x000806f6, pf_mask 0x10, 2023-06-26, rev 0x2c000290
        sig 0x000806f5, pf_mask 0x10, 2023-06-26, rev 0x2c000290
        sig 0x000806f4, pf_mask 0x10, 2023-06-26, rev 0x2c000290
        sig 0x00090672, pf_mask 0x07, 2023-06-07, rev 0x0032, size 222208
        sig 0x00090672, pf_mask 0x07, 2023-06-07, rev 0x0032
        sig 0x00090675, pf_mask 0x07, 2023-06-07, rev 0x0032
        sig 0x000b06f2, pf_mask 0x07, 2023-06-07, rev 0x0032
        sig 0x000b06f5, pf_mask 0x07, 2023-06-07, rev 0x0032
        sig 0x000906a3, pf_mask 0x80, 2023-06-07, rev 0x0430, size 220160
        sig 0x000906a3, pf_mask 0x80, 2023-06-07, rev 0x0430
        sig 0x000906a4, pf_mask 0x80, 2023-06-07, rev 0x0430
        sig 0x000906a4, pf_mask 0x40, 2023-05-05, rev 0x0005, size 117760
        sig 0x000a0671, pf_mask 0x02, 2023-09-03, rev 0x005d, size 104448
        sig 0x000b0671, pf_mask 0x32, 2023-08-29, rev 0x011d, size 210944
        sig 0x000b06a2, pf_mask 0xe0, 2023-08-30, rev 0x411c, size 216064
        sig 0x000b06a2, pf_mask 0xe0, 2023-08-30, rev 0x411c
        sig 0x000b06a3, pf_mask 0xe0, 2023-08-30, rev 0x411c
        sig 0x000b06e0, pf_mask 0x11, 2023-06-26, rev 0x0012, size 136192
      * Updated 2023-08-08 changelog entry:
        Mitigations for "retvar" on a few processors, refer to the 2023-11-14
        entry for details.  This information was disclosed in 2023-11-14.
      * source: update symlinks to reflect id of the latest release, 20231114
    
     -- Henrique de Moraes Holschuh <hmh at debian.org>  Thu, 16 Nov 2023 08:09:43 -0300
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
    (cherry picked from commit 7241a91c948066e9062729a043944fd313826753)
---
 package/firmware/intel-microcode/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/firmware/intel-microcode/Makefile b/package/firmware/intel-microcode/Makefile
index 9e87dccc12..d9b527a61f 100644
--- a/package/firmware/intel-microcode/Makefile
+++ b/package/firmware/intel-microcode/Makefile
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=intel-microcode
-PKG_VERSION:=20230808
+PKG_VERSION:=20231114
 PKG_RELEASE:=1
 
 PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).1.tar.xz
 PKG_SOURCE_URL:=@DEBIAN/pool/non-free-firmware/i/intel-microcode/
-PKG_HASH:=29e77c275b3f60a691832c0844f70effbd94a4594d04af21e0c2e6e0c1ac1894
+PKG_HASH:=637ac30d3fc36eb51d3ed71909f09f7408797f4527c20e58d3b0ad4eafc20869
 PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).1
 PKG_CPE_ID:=cpe:/a:intel:microcode
 



From lede-commits at lists.infradead.org  Fri Mar 15 16:43:20 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 15 Mar 2024 19:43:20 -0400
Subject: [openwrt/openwrt]  firmware: intel-microcode: update to 20240312
In-Reply-To: <171054619973.3915474.12914645603237518653@git-01.infra.openwrt.org>
References: <171054619973.3915474.12914645603237518653@git-01.infra.openwrt.org>
Message-ID: <mailman.16941.1710546218.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/100a5606d6d72bd402de480b6282dd2c3790cd14

commit 100a5606d6d72bd402de480b6282dd2c3790cd14
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Thu Mar 14 07:13:37 2024 +0100

    firmware: intel-microcode: update to 20240312
    
    Debian changelog:
    
    intel-microcode (3.20240312.1) unstable; urgency=medium
    
      * New upstream microcode datafile 20240312 (closes: #1066108)
        - Mitigations for INTEL-SA-INTEL-SA-00972 (CVE-2023-39368):
          Protection mechanism failure of bus lock regulator for some Intel
          Processors may allow an unauthenticated user to potentially enable
          denial of service via network access.
        - Mitigations for INTEL-SA-INTEL-SA-00982 (CVE-2023-38575):
          Non-transparent sharing of return predictor targets between contexts in
          some Intel Processors may allow an authorized user to potentially
          enable information disclosure via local access.  Affects SGX as well.
        - Mitigations for INTEL-SA-INTEL-SA-00898 (CVE-2023-28746), aka RFDS:
          Information exposure through microarchitectural state after transient
          execution from some register files for some Intel Atom Processors and
          E-cores of Intel Core Processors may allow an authenticated user to
          potentially enable information disclosure via local access.  Enhances
          VERW instruction to clear stale register buffers.  Affects SGX as well.
          Requires kernel update to be effective.
        - Mitigations for INTEL-SA-INTEL-SA-00960 (CVE-2023-22655), aka TECRA:
          Protection mechanism failure in some 3rd and 4th Generation Intel Xeon
          Processors when using Intel SGX or Intel TDX may allow a privileged
          user to potentially enable escalation of privilege via local access.
          NOTE: effective only when loaded by firmware.  Allows SMM firmware to
          attack SGX/TDX.
        - Mitigations for INTEL-SA-INTEL-SA-01045 (CVE-2023-43490):
          Incorrect calculation in microcode keying mechanism for some Intel
          Xeon D Processors with Intel SGX may allow a privileged user to
          potentially enable information disclosure via local access.
      * Fixes for other unspecified functional issues on many processors
      * Updated microcodes:
        sig 0x00050653, pf_mask 0x97, 2023-07-28, rev 0x1000191, size 36864
        sig 0x00050656, pf_mask 0xbf, 2023-07-28, rev 0x4003605, size 38912
        sig 0x00050657, pf_mask 0xbf, 2023-07-28, rev 0x5003605, size 37888
        sig 0x0005065b, pf_mask 0xbf, 2023-08-03, rev 0x7002802, size 30720
        sig 0x00050665, pf_mask 0x10, 2023-08-03, rev 0xe000015, size 23552
        sig 0x000506f1, pf_mask 0x01, 2023-10-05, rev 0x003e, size 11264
        sig 0x000606a6, pf_mask 0x87, 2023-09-14, rev 0xd0003d1, size 307200
        sig 0x000606c1, pf_mask 0x10, 2023-12-05, rev 0x1000290, size 299008
        sig 0x000706a1, pf_mask 0x01, 2023-08-25, rev 0x0040, size 76800
        sig 0x000706a8, pf_mask 0x01, 2023-08-25, rev 0x0024, size 76800
        sig 0x000706e5, pf_mask 0x80, 2023-09-14, rev 0x00c4, size 114688
        sig 0x000806c1, pf_mask 0x80, 2023-09-13, rev 0x00b6, size 111616
        sig 0x000806c2, pf_mask 0xc2, 2023-09-13, rev 0x0036, size 98304
        sig 0x000806d1, pf_mask 0xc2, 2023-09-13, rev 0x0050, size 104448
        sig 0x000806ec, pf_mask 0x94, 2023-07-16, rev 0x00fa, size 106496
        sig 0x000806f8, pf_mask 0x87, 2024-01-03, rev 0x2b000590, size 579584
        sig 0x000806f7, pf_mask 0x87, 2024-01-03, rev 0x2b000590
        sig 0x000806f6, pf_mask 0x87, 2024-01-03, rev 0x2b000590
        sig 0x000806f5, pf_mask 0x87, 2024-01-03, rev 0x2b000590
        sig 0x000806f4, pf_mask 0x87, 2024-01-03, rev 0x2b000590
        sig 0x00090661, pf_mask 0x01, 2023-09-26, rev 0x0019, size 20480
        sig 0x00090672, pf_mask 0x07, 2023-09-19, rev 0x0034, size 224256
        sig 0x00090675, pf_mask 0x07, 2023-09-19, rev 0x0034
        sig 0x000b06f2, pf_mask 0x07, 2023-09-19, rev 0x0034
        sig 0x000b06f5, pf_mask 0x07, 2023-09-19, rev 0x0034
        sig 0x000906a3, pf_mask 0x80, 2023-09-19, rev 0x0432, size 222208
        sig 0x000906a4, pf_mask 0x80, 2023-09-19, rev 0x0432
        sig 0x000906c0, pf_mask 0x01, 2023-09-26, rev 0x24000026, size 20480
        sig 0x000906e9, pf_mask 0x2a, 2023-09-28, rev 0x00f8, size 108544
        sig 0x000906ea, pf_mask 0x22, 2023-07-26, rev 0x00f6, size 105472
        sig 0x000906ec, pf_mask 0x22, 2023-07-26, rev 0x00f6, size 106496
        sig 0x000906ed, pf_mask 0x22, 2023-07-27, rev 0x00fc, size 106496
        sig 0x000a0652, pf_mask 0x20, 2023-07-16, rev 0x00fa, size 97280
        sig 0x000a0653, pf_mask 0x22, 2023-07-16, rev 0x00fa, size 97280
        sig 0x000a0655, pf_mask 0x22, 2023-07-16, rev 0x00fa, size 97280
        sig 0x000a0660, pf_mask 0x80, 2023-07-16, rev 0x00fa, size 97280
        sig 0x000a0661, pf_mask 0x80, 2023-07-16, rev 0x00fa, size 96256
        sig 0x000a0671, pf_mask 0x02, 2023-09-14, rev 0x005e, size 108544
        sig 0x000b0671, pf_mask 0x32, 2023-12-14, rev 0x0122, size 215040
        sig 0x000b06a2, pf_mask 0xe0, 2023-12-07, rev 0x4121, size 220160
        sig 0x000b06a3, pf_mask 0xe0, 2023-12-07, rev 0x4121
        sig 0x000b06e0, pf_mask 0x11, 2023-09-25, rev 0x0015, size 138240
      * New microcodes:
        sig 0x000a06a4, pf_mask 0xe6, 2024-01-03, rev 0x001c, size 136192
        sig 0x000b06a8, pf_mask 0xe0, 2023-12-07, rev 0x4121, size 220160
        sig 0x000c06f2, pf_mask 0x87, 2023-11-20, rev 0x21000200, size 549888
        sig 0x000c06f1, pf_mask 0x87, 2023-11-20, rev 0x21000200
      * source: update symlinks to reflect id of the latest release, 20240312
      * changelog, debian/changelog: fix typos
    
     -- Henrique de Moraes Holschuh <hmh at debian.org>  Tue, 12 Mar 2024 20:28:17 -0300
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
    (cherry picked from commit 7b911a9c492f3db50fe97311b8cee9850acf03ad)
---
 package/firmware/intel-microcode/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/firmware/intel-microcode/Makefile b/package/firmware/intel-microcode/Makefile
index d9b527a61f..91a697c673 100644
--- a/package/firmware/intel-microcode/Makefile
+++ b/package/firmware/intel-microcode/Makefile
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=intel-microcode
-PKG_VERSION:=20231114
+PKG_VERSION:=20240312
 PKG_RELEASE:=1
 
 PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).1.tar.xz
 PKG_SOURCE_URL:=@DEBIAN/pool/non-free-firmware/i/intel-microcode/
-PKG_HASH:=637ac30d3fc36eb51d3ed71909f09f7408797f4527c20e58d3b0ad4eafc20869
+PKG_HASH:=25f53bab1bf0c84aba927a77a97a9f1147c94199fa95b5187d874f839f022808
 PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).1
 PKG_CPE_ID:=cpe:/a:intel:microcode
 



From lede-commits at lists.infradead.org  Sat Mar 16 00:25:34 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 16 Mar 2024 03:25:34 -0400
Subject: [openwrt/openwrt]  mediatek: fix build failure of mt7623/mt7629 using
 kernel 6.6
In-Reply-To: <171057393356.708723.334648024632028277@git-01.infra.openwrt.org>
References: <171057393356.708723.334648024632028277@git-01.infra.openwrt.org>
Message-ID: <mailman.16985.1710573939.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7d1145ecb97b9c7f852714c7938771d80b2df4e8

commit 7d1145ecb97b9c7f852714c7938771d80b2df4e8
Author: Weijie Gao <hackpascal at gmail.com>
AuthorDate: Fri Mar 15 23:13:55 2024 +0800

    mediatek: fix build failure of mt7623/mt7629 using kernel 6.6
    
    In kernel 6.6, dts files for mediatek arm target are moved into
    arch/arm/boot/dts/mediatek instead of legacy path arch/arm/boot/dts.
    
    To avoid dts compile failure, change DTS_DIR to the mediatek subfolder
    for kernel 6.6.
    
    Signed-off-by: Weijie Gao <hackpascal at gmail.com>
---
 target/linux/mediatek/image/mt7623.mk | 4 ++++
 target/linux/mediatek/image/mt7629.mk | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/target/linux/mediatek/image/mt7623.mk b/target/linux/mediatek/image/mt7623.mk
index 24663551e0..93625c405b 100644
--- a/target/linux/mediatek/image/mt7623.mk
+++ b/target/linux/mediatek/image/mt7623.mk
@@ -1,3 +1,7 @@
+ifneq ($(KERNEL),6.1)
+DTS_DIR := $(DTS_DIR)/mediatek
+endif
+
 DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_IMAGE
 
 # The bootrom of MT7623 expects legacy MediaTek headers present in
diff --git a/target/linux/mediatek/image/mt7629.mk b/target/linux/mediatek/image/mt7629.mk
index 9374228808..9f0ea98950 100644
--- a/target/linux/mediatek/image/mt7629.mk
+++ b/target/linux/mediatek/image/mt7629.mk
@@ -1,3 +1,7 @@
+ifneq ($(KERNEL),6.1)
+DTS_DIR := $(DTS_DIR)/mediatek
+endif
+
 define Device/mediatek_mt7629-rfb
   DEVICE_VENDOR := MediaTek
   DEVICE_MODEL := MT7629 rfb AP



From lede-commits at lists.infradead.org  Sat Mar 16 00:25:33 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 16 Mar 2024 03:25:33 -0400
Subject: [openwrt/openwrt]  ds-lite: Add support for IPIP6(RFC2473) tunnel
In-Reply-To: <171057393356.708723.334648024632028277@git-01.infra.openwrt.org>
References: <171057393356.708723.334648024632028277@git-01.infra.openwrt.org>
Message-ID: <mailman.16986.1710573939.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/21eeb45420cf12c6df9b39b619f6579b3ec32bb4

commit 21eeb45420cf12c6df9b39b619f6579b3ec32bb4
Author: Arayuki Mago <ms at missing233.com>
AuthorDate: Tue Feb 13 19:08:50 2024 +0900

    ds-lite: Add support for IPIP6(RFC2473) tunnel
    
    Add Generic Packet Tunneling in IPv6 Specification (RFC 2473) support.
    
    Signed-off-by: Arayuki Mago <ms at missing233.com>
    Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
---
 package/network/ipv6/ds-lite/Makefile        |  6 +--
 package/network/ipv6/ds-lite/files/dslite.sh | 67 +++++++++++++++++++++-------
 2 files changed, 53 insertions(+), 20 deletions(-)

diff --git a/package/network/ipv6/ds-lite/Makefile b/package/network/ipv6/ds-lite/Makefile
index 502da366a9..37c3449ab2 100644
--- a/package/network/ipv6/ds-lite/Makefile
+++ b/package/network/ipv6/ds-lite/Makefile
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ds-lite
-PKG_RELEASE:=8
+PKG_RELEASE:=9
 PKG_LICENSE:=GPL-2.0
 
 include $(INCLUDE_DIR)/package.mk
@@ -17,13 +17,13 @@ define Package/ds-lite
   SECTION:=net
   CATEGORY:=Network
   DEPENDS:=@IPV6 +kmod-ip6-tunnel +resolveip
-  TITLE:=Dual-Stack Lite (DS-Lite) configuration support
+  TITLE:=IPv4 over IPv6 (RFC2473 and DS-Lite) configuration support
   MAINTAINER:=Steven Barth <steven at midlink.org>
   PKGARCH:=all
 endef
 
 define Package/ds-lite/description
-Provides support for Dual-Stack Lite in /etc/config/network.
+Provides support for IPv4 over IPv6 (RFC2473 and DS-Lite) in /etc/config/network.
 Refer to http://wiki.openwrt.org/doc/uci/network for
 configuration details.
 endef
diff --git a/package/network/ipv6/ds-lite/files/dslite.sh b/package/network/ipv6/ds-lite/files/dslite.sh
index 017963926d..325401b98b 100644
--- a/package/network/ipv6/ds-lite/files/dslite.sh
+++ b/package/network/ipv6/ds-lite/files/dslite.sh
@@ -1,6 +1,9 @@
 #!/bin/sh
-# dslite.sh - IPv4-in-IPv6 tunnel backend
+# dslite.sh - IPv4-in-IPv6 tunnel backend for ipip6 and ds-lite
 # Copyright (c) 2013 OpenWrt.org
+# Copyright (c) 2013 Steven Barth <steven at midlink.org>
+# Copyright (c) 2021 Kenji Uno <ku at digitaldolphins.jp>
+# Copyright (c) 2024 Arayuki Mago <ms at missing233.com>
 
 [ -n "$INCLUDE_ONLY" ] || {
 	. /lib/functions.sh
@@ -9,10 +12,13 @@
 	init_proto "$@"
 }
 
-proto_dslite_setup() {
+tnl_setup() {
 	local cfg="$1"
 	local iface="$2"
-	local link="ds-$cfg"
+	local tnl_type="$3"
+	local ip4addr="$4"
+	local ip4gateway="$5"
+	local link="$tnl_type-$cfg"
 	local remoteip6
 
 	local mtu ttl peeraddr ip6addr tunlink zone weakif encaplimit
@@ -59,7 +65,7 @@ proto_dslite_setup() {
 
 	proto_init_update "$link" 1
 	proto_add_ipv4_route "0.0.0.0" 0
-	proto_add_ipv4_address "192.0.0.2" "" "" "192.0.0.1"
+	proto_add_ipv4_address "$ip4addr" "" "" "$ip4gateway"
 
 	proto_add_tunnel
 	json_add_string mode ipip6
@@ -76,23 +82,22 @@ proto_dslite_setup() {
 	proto_add_data
 	[ -n "$zone" ] && json_add_string zone "$zone"
 
-	json_add_array firewall
-	  json_add_object ""
-	    json_add_string type nat
-	    json_add_string target ACCEPT
-	  json_close_object
-	json_close_array
+	if [ "$tnl_type" = "ds" ]; then
+		json_add_array firewall
+			json_add_object ""
+				json_add_string type nat
+				json_add_string target ACCEPT
+			json_close_object
+		json_close_array
+	fi
+
 	proto_close_data
 
 	proto_send_update "$cfg"
 }
 
-proto_dslite_teardown() {
-	local cfg="$1"
-}
-
-proto_dslite_init_config() {
-	no_device=1             
+init_config() {
+	no_device=1
 	available=1
 
 	proto_config_add_string "ip6addr"
@@ -105,6 +110,34 @@ proto_dslite_init_config() {
 	proto_config_add_string "weakif"
 }
 
+proto_ipip6_init_config() {
+	init_config
+	proto_config_add_string "ip4ifaddr"
+}
+
+proto_ipip6_setup() {
+	local ip4ifaddr
+	json_get_vars ip4ifaddr
+	tnl_setup "$1" "$2" "ipip6" "$ip4ifaddr" "0.0.0.0"
+}
+
+proto_ipip6_teardown() {
+	local cfg="$1"
+}
+
+proto_dslite_init_config() {
+	init_config
+}
+
+proto_dslite_setup() {
+	tnl_setup "$1" "$2" "ds" "192.0.0.2" "192.0.0.1"
+}
+
+proto_dslite_teardown() {
+	local cfg="$1"
+}
+
 [ -n "$INCLUDE_ONLY" ] || {
-        add_protocol dslite
+	add_protocol ipip6
+	add_protocol dslite
 }



From lede-commits at lists.infradead.org  Sat Mar 16 00:27:46 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 16 Mar 2024 03:27:46 -0400
Subject: [openwrt/openwrt]  mediatek: mt7622: simplify 02_network
In-Reply-To: <171057406679.714863.7030753868135106885@git-01.infra.openwrt.org>
References: <171057406679.714863.7030753868135106885@git-01.infra.openwrt.org>
Message-ID: <mailman.16987.1710574073.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fc9bde82f34eb81f9f639f9da8dd7369651d871b

commit fc9bde82f34eb81f9f639f9da8dd7369651d871b
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Tue Jan 16 23:19:02 2024 +0800

    mediatek: mt7622: simplify 02_network
    
    Most mt7622 devices use the mt7531 switch, which have been
    switched to dsa driver for a long time. So use dsa as the
    default configuration and configure these rtl8367s devices
    separately. This reduces the amount of code.
    
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
---
 .../mt7622/base-files/etc/board.d/02_network        | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
index 6c43e46222..6bda6e11f3 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
@@ -8,19 +8,6 @@ mediatek_setup_interfaces()
 	local board="$1"
 
 	case $board in
-	bananapi,bpi-r64|\
-	buffalo,wsr-3200ax4s|\
-	dlink,eagle-pro-ai-r32-a1|\
-	elecom,wrc-x3200gst3|\
-	linksys,e8450|\
-	linksys,e8450-ubi|\
-	mediatek,mt7622-rfb1|\
-	mediatek,mt7622-rfb1-ubi|\
-	netgear,wax206|\
-	reyee,ax3200-e5|\
-	ruijie,rg-ew3200gx-pro)
-		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" wan
-		;;
 	buffalo,wsr-2533dhp2)
 		ucidef_add_switch "switch0" \
 			"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6 at eth0"
@@ -28,6 +15,11 @@ mediatek_setup_interfaces()
 	dlink,eagle-pro-ai-m32-a1)
 		ucidef_set_interfaces_lan_wan "lan1 lan2" wan
 		;;
+	elecom,wrc-2533gent|\
+	totolink,a8000ru)
+		ucidef_add_switch "switch0" \
+			"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6u at eth0" "5u at eth1"
+		;;
 	ubnt,unifi-6-lr*)
 		ucidef_set_interface_lan "eth0"
 		;;
@@ -35,8 +27,7 @@ mediatek_setup_interfaces()
 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" wan
 		;;
 	*)
-		ucidef_add_switch "switch0" \
-				  "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6u at eth0" "5u at eth1"
+		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" wan
 		;;
 	esac
 }



From lede-commits at lists.infradead.org  Sat Mar 16 00:36:49 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 16 Mar 2024 03:36:49 -0400
Subject: [openwrt/openwrt]  kernel: xt_FLOWOFFLOAD: fix use of uninitialized
 dir variable
In-Reply-To: <171057460905.732190.10436020940582802375@git-01.infra.openwrt.org>
References: <171057460905.732190.10436020940582802375@git-01.infra.openwrt.org>
Message-ID: <mailman.16990.1710574613.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/503d26fb24cf980ed6d28cb080b0f81e8ba4e72d

commit 503d26fb24cf980ed6d28cb080b0f81e8ba4e72d
Author: Qingfang Deng <qingfang.deng at siflower.com.cn>
AuthorDate: Wed Mar 13 11:48:44 2024 +0800

    kernel: xt_FLOWOFFLOAD: fix use of uninitialized dir variable
    
    The dir variable has been used uninitialized since the port to 5.10, and
    somehow this remains undetected by GCC.
    
    Fixes: b10d6044599d ("kernel: add linux 5.10 support")
    Signed-off-by: Qingfang Deng <qingfang.deng at siflower.com.cn>
---
 .../generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch   | 4 ++--
 .../generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch    | 4 ++--
 .../generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch    | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index da60334498..ec887539d5 100644
--- a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -609,6 +609,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (!nf_ct_is_confirmed(ct))
 +		return XT_CONTINUE;
 +
++	dir = CTINFO2DIR(ctinfo);
++
 +	devs[dir] = xt_out(par);
 +	devs[!dir] = xt_in(par);
 +
@@ -618,8 +620,6 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (test_and_set_bit(IPS_OFFLOAD_BIT, &ct->status))
 +		return XT_CONTINUE;
 +
-+	dir = CTINFO2DIR(ctinfo);
-+
 +	if (xt_flowoffload_route(skb, ct, par, &route, dir, devs) < 0)
 +		goto err_flow_route;
 +
diff --git a/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index 59a5fb4d91..1dfd556ce8 100644
--- a/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -547,6 +547,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (!nf_ct_is_confirmed(ct))
 +		return XT_CONTINUE;
 +
++	dir = CTINFO2DIR(ctinfo);
++
 +	devs[dir] = xt_out(par);
 +	devs[!dir] = xt_in(par);
 +
@@ -556,8 +558,6 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (test_and_set_bit(IPS_OFFLOAD_BIT, &ct->status))
 +		return XT_CONTINUE;
 +
-+	dir = CTINFO2DIR(ctinfo);
-+
 +	if (xt_flowoffload_route(skb, ct, par, &route, dir, devs) < 0)
 +		goto err_flow_route;
 +
diff --git a/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index cb7ac007b1..1c75a2cf3d 100644
--- a/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -547,6 +547,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (!nf_ct_is_confirmed(ct))
 +		return XT_CONTINUE;
 +
++	dir = CTINFO2DIR(ctinfo);
++
 +	devs[dir] = xt_out(par);
 +	devs[!dir] = xt_in(par);
 +
@@ -556,8 +558,6 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +	if (test_and_set_bit(IPS_OFFLOAD_BIT, &ct->status))
 +		return XT_CONTINUE;
 +
-+	dir = CTINFO2DIR(ctinfo);
-+
 +	if (xt_flowoffload_route(skb, ct, par, &route, dir, devs) < 0)
 +		goto err_flow_route;
 +



From lede-commits at lists.infradead.org  Sat Mar 16 00:51:02 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 16 Mar 2024 03:51:02 -0400
Subject: [openwrt/openwrt]  mac80211: fix a crash triggered by sta disconnect
 with per-sta VLANs
In-Reply-To: <171057546204.760692.17858411287594304864@git-01.infra.openwrt.org>
References: <171057546204.760692.17858411287594304864@git-01.infra.openwrt.org>
Message-ID: <mailman.16994.1710575466.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/dea42f67ab06a8f2c1e6338f9829d31a28642317

commit dea42f67ab06a8f2c1e6338f9829d31a28642317
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Sat Mar 16 08:50:05 2024 +0100

    mac80211: fix a crash triggered by sta disconnect with per-sta VLANs
    
    Reported-by: ranygh at riseup.net
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 ...11-check-clear-fast-rx-for-non-4addr-sta-.patch | 35 ++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-check-clear-fast-rx-for-non-4addr-sta-.patch b/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-check-clear-fast-rx-for-non-4addr-sta-.patch
new file mode 100644
index 0000000000..02b4345f21
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/332-wifi-mac80211-check-clear-fast-rx-for-non-4addr-sta-.patch
@@ -0,0 +1,35 @@
+From: Felix Fietkau <nbd at nbd.name>
+Date: Sat, 16 Mar 2024 08:37:21 +0100
+Subject: [PATCH] wifi: mac80211: check/clear fast rx for non-4addr sta VLAN
+ changes
+
+When moving a station out of a VLAN and deleting the VLAN afterwards, the
+fast_rx entry still holds a pointer to the VLAN's netdev, which can cause
+use-after-free bugs. Fix this by immediately calling ieee80211_check_fast_rx
+after the VLAN change.
+
+Cc: stable at vger.kernel.org
+Reported-by: ranygh at riseup.net
+Signed-off-by: Felix Fietkau <nbd at nbd.name>
+---
+
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
+@@ -2184,15 +2184,14 @@ static int ieee80211_change_station(stru
+ 		}
+ 
+ 		if (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
+-		    sta->sdata->u.vlan.sta) {
+-			ieee80211_clear_fast_rx(sta);
++		    sta->sdata->u.vlan.sta)
+ 			RCU_INIT_POINTER(sta->sdata->u.vlan.sta, NULL);
+-		}
+ 
+ 		if (test_sta_flag(sta, WLAN_STA_AUTHORIZED))
+ 			ieee80211_vif_dec_num_mcast(sta->sdata);
+ 
+ 		sta->sdata = vlansdata;
++		ieee80211_check_fast_rx(sta);
+ 		ieee80211_check_fast_xmit(sta);
+ 
+ 		if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) {



From lede-commits at lists.infradead.org  Sat Mar 16 16:19:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 16 Mar 2024 19:19:29 -0400
Subject: [openwrt/openwrt]  hwmon: add TC654 fan-controller support
In-Reply-To: <171063116913.2694751.11655080194112427830@git-01.infra.openwrt.org>
References: <171063116913.2694751.11655080194112427830@git-01.infra.openwrt.org>
Message-ID: <mailman.17069.1710631182.1280.lede-commits@lists.infradead.org>

wigyori pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/afd5926e37b82561c5ddb30c4c672d207b3d50e9

commit afd5926e37b82561c5ddb30c4c672d207b3d50e9
Author: Zoltan HERPAI <wigyori at uid0.hu>
AuthorDate: Tue Mar 5 13:22:11 2024 +0100

    hwmon: add TC654 fan-controller support
    
    Add support for the Microchip TC654 PWM fan-controller.
    
    Signed-off-by: Zoltan HERPAI <wigyori at uid0.hu>
---
 package/kernel/linux/modules/hwmon.mk | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/package/kernel/linux/modules/hwmon.mk b/package/kernel/linux/modules/hwmon.mk
index 5be63ce779..be38a6071a 100644
--- a/package/kernel/linux/modules/hwmon.mk
+++ b/package/kernel/linux/modules/hwmon.mk
@@ -572,6 +572,21 @@ endef
 $(eval $(call KernelPackage,hwmon-sht3x))
 
 
+define KernelPackage/hwmon-tc654
+  TITLE:=TC654 monitoring support
+  KCONFIG:=CONFIG_SENSORS_TC654
+  FILES:=$(LINUX_DIR)/drivers/hwmon/tc654.ko
+  AUTOLOAD:=$(call AutoLoad,60,tc654)
+  $(call AddDepends/hwmon,+kmod-i2c-core)
+endef
+
+define KernelPackage/hwmon-tc654/description
+ Kernel module for Microchip TC654/TC655 and compatibles
+endef
+
+$(eval $(call KernelPackage,hwmon-tc654))
+
+
 define KernelPackage/hwmon-tmp102
   TITLE:=Texas Instruments TMP102 monitoring support
   KCONFIG:=CONFIG_SENSORS_TMP102



From lede-commits at lists.infradead.org  Sat Mar 16 16:19:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 16 Mar 2024 19:19:30 -0400
Subject: [openwrt/openwrt]  kirkwood: add support for Netgear Stora
 (MS2000/2110) NAS
In-Reply-To: <171063116913.2694751.11655080194112427830@git-01.infra.openwrt.org>
References: <171063116913.2694751.11655080194112427830@git-01.infra.openwrt.org>
Message-ID: <mailman.17070.1710631184.1280.lede-commits@lists.infradead.org>

wigyori pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0dfc0495fc4194eff2379293c90863ac0161fdb1

commit 0dfc0495fc4194eff2379293c90863ac0161fdb1
Author: Zoltan HERPAI <wigyori at uid0.hu>
AuthorDate: Thu May 5 08:47:27 2022 +0200

    kirkwood: add support for Netgear Stora (MS2000/2110) NAS
    
    Dual-slot NAS based on Marvell Kirkwood.
    
    Specifications:
     - Marvell 88F6281 @1GHz
     - 128Mb RAM
     - 256Mb NAND
     - 1x GbE LAN (Marvell 88E1116)
     - 1x USB 2.0
     - 2x SATA
     - PCF8563 RTC
     - LM75 sensor
     - TC654 PWM fan controller
     - Serial on J2 (115200,8n1)
     - Newer bootROM so kwboot-ing via serial is possible
    
    Installation:
    
    1. Serial console
     - Connect your levelshifter to the serial console
       on J2 (refer to the wiki page for pinout)
    2. Update u-boot
     - Download the u-boot.kwb image for the device
     - Powercycle the NAS
     - Run "kwboot -b ./u-boot.kwb /dev/ttyUSB0 -p"
     - Connect to the serial console with minicom
     - tftp 0x0800000 netgear_stora-u-boot.kwb
     - nand erase 0x0 100000
     - nand write 0x0800000 0x0 0x100000
     - reset
    3. Install OpenWrt
     - Boot up the initramfs image
     - tftpboot 0x800000 openwrt-kirkwood-netgear_stora-initramfs-uImage; bootm 0x800000
     - Download the sysupgrade image and perform sysupgrade
    
    The fan is controlled in 3 stages by a script running every minute
    from cron, measuring the CPU temperature.
    
    Snippets taken from bodhi <mibodhi at gmail.com>
    
    Signed-off-by: Zoltan HERPAI <wigyori at uid0.hu>
---
 package/boot/uboot-kirkwood/Makefile               |   6 +
 .../uboot-kirkwood/patches/180-netgear-stora.patch | 648 +++++++++++++++++++++
 .../kirkwood/base-files/etc/board.d/02_network     |   1 +
 .../base-files/etc/uci-defaults/04_storafan        |  22 +
 target/linux/kirkwood/base-files/sbin/fan_ctrl.sh  |  23 +
 .../files/arch/arm/boot/dts/kirkwood-stora.dts     | 227 ++++++++
 target/linux/kirkwood/image/Makefile               |  10 +
 .../kirkwood/patches-5.15/117-netgear_stora.patch  |  10 +
 .../kirkwood/patches-6.1/117-netgear_stora.patch   |  10 +
 9 files changed, 957 insertions(+)

diff --git a/package/boot/uboot-kirkwood/Makefile b/package/boot/uboot-kirkwood/Makefile
index 7f9ae4e151..92a814ac4f 100644
--- a/package/boot/uboot-kirkwood/Makefile
+++ b/package/boot/uboot-kirkwood/Makefile
@@ -65,6 +65,11 @@ define U-Boot/nas220
   BUILD_DEVICES:=seagate_blackarmor-nas220
 endef
 
+define U-Boot/netgear_ms2110
+  NAME:=Netgear Stora (MS2000/2110)
+  BUILD_DEVICES:=netgear_stora
+endef
+
 define U-Boot/nsa310
   NAME:=Zyxel NSA310
   BUILD_DEVICES:=zyxel_nsa310b
@@ -107,6 +112,7 @@ UBOOT_TARGETS := \
 	iconnect iconnect_second_stage \
 	l-50 \
 	nas220 \
+	netgear_ms2110 \
 	nsa310 \
 	nsa310s \
 	nsa325 \
diff --git a/package/boot/uboot-kirkwood/patches/180-netgear-stora.patch b/package/boot/uboot-kirkwood/patches/180-netgear-stora.patch
new file mode 100644
index 0000000000..5eed89d5e6
--- /dev/null
+++ b/package/boot/uboot-kirkwood/patches/180-netgear-stora.patch
@@ -0,0 +1,648 @@
+diff -ruN u-boot-2020.04.old/arch/arm/mach-kirkwood/Kconfig u-boot-2020.04/arch/arm/mach-kirkwood/Kconfig
+--- u-boot-2020.04.old/arch/arm/mach-kirkwood/Kconfig	2020-07-09 00:46:15.000000000 +0200
++++ u-boot-2020.04/arch/arm/mach-kirkwood/Kconfig	2020-07-09 01:07:00.309219477 +0200
+@@ -44,6 +44,9 @@
+ config TARGET_NETSPACE_V2
+ 	bool "LaCie netspace_v2 Board"
+ 
++config TARGET_NETGEAR_MS2110
++	bool "Netgear MS2110 Board"
++
+ config TARGET_IB62X0
+ 	bool "ib62x0 Board"
+ 
+@@ -92,6 +95,7 @@
+ source "board/keymile/Kconfig"
+ source "board/LaCie/net2big_v2/Kconfig"
+ source "board/LaCie/netspace_v2/Kconfig"
++source "board/Marvell/netgear_ms2110/Kconfig"
+ source "board/raidsonic/ib62x0/Kconfig"
+ source "board/Seagate/dockstar/Kconfig"
+ source "board/Seagate/goflexhome/Kconfig"
+diff -ruN u-boot-2020.04.old/board/Marvell/netgear_ms2110/Kconfig u-boot-2020.04/board/Marvell/netgear_ms2110/Kconfig
+--- u-boot-2020.04.old/board/Marvell/netgear_ms2110/Kconfig	1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2020.04/board/Marvell/netgear_ms2110/Kconfig	2020-07-09 00:59:29.000000000 +0200
+@@ -0,0 +1,12 @@
++if TARGET_NETGEAR_MS2110
++
++config SYS_BOARD
++	default "netgear_ms2110"
++
++config SYS_VENDOR
++	default "Marvell"
++
++config SYS_CONFIG_NAME
++	default "netgear_ms2110"
++
++endif
+diff -ruN u-boot-2020.04.old/board/Marvell/netgear_ms2110/kwbimage.cfg u-boot-2020.04/board/Marvell/netgear_ms2110/kwbimage.cfg
+--- u-boot-2020.04.old/board/Marvell/netgear_ms2110/kwbimage.cfg	1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2020.04/board/Marvell/netgear_ms2110/kwbimage.cfg	2020-07-09 00:59:29.000000000 +0200
+@@ -0,0 +1,167 @@
++#
++# (C) Copyright 2009
++# Marvell Semiconductor <www.marvell.com>
++# Written-by: Prafulla Wadaskar <prafulla at marvell.com>
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License as
++# published by the Free Software Foundation; either version 2 of
++# the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
++# MA 02110-1301 USA
++#
++# Refer docs/README.kwimage for more details about how-to configure
++# and create kirkwood boot image
++#
++
++# Boot Media configurations
++BOOT_FROM	nand
++NAND_ECC_MODE	default
++NAND_PAGE_SIZE	0x0800
++
++# SOC registers configuration using bootrom header extension
++# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
++
++# Configure RGMII-0 interface pad voltage to 1.8V
++DATA 0xFFD100e0 0x1b1b1b9b
++
++#Dram initalization for SINGLE x16 CL=5 @ 400MHz
++DATA 0xFFD01400 0x43000c30	# DDR Configuration register
++# bit13-0:  0xc30 (3120 DDR2 clks refresh rate)
++# bit23-14: zero
++# bit24: 1= enable exit self refresh mode on DDR access
++# bit25: 1 required
++# bit29-26: zero
++# bit31-30: 01
++
++DATA 0xFFD01404 0x37543000	# DDR Controller Control Low
++# bit 4:    0=addr/cmd in smame cycle
++# bit 5:    0=clk is driven during self refresh, we don't care for APX
++# bit 6:    0=use recommended falling edge of clk for addr/cmd
++# bit14:    0=input buffer always powered up
++# bit18:    1=cpu lock transaction enabled
++# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled bit31=0
++# bit27-24: 7= CL+2, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
++# bit30-28: 3 required
++# bit31:    0=no additional STARTBURST delay
++
++DATA 0xFFD01408 0x22125451	# DDR Timing (Low) (active cycles value +1)
++# bit3-0:   TRAS lsbs
++# bit7-4:   TRCD
++# bit11- 8: TRP
++# bit15-12: TWR
++# bit19-16: TWTR
++# bit20:    TRAS msb
++# bit23-21: 0x0
++# bit27-24: TRRD
++# bit31-28: TRTP
++
++DATA 0xFFD0140C 0x00000833	#  DDR Timing (High)
++# bit6-0:   TRFC
++# bit8-7:   TR2R
++# bit10-9:  TR2W
++# bit12-11: TW2W
++# bit31-13: zero required
++
++DATA 0xFFD01410 0x00000099	#  DDR Address Control
++# bit1-0:   00, Cs0width=x8
++# bit3-2:   11, Cs0size=1Gb
++# bit5-4:   00, Cs1width=x8
++# bit7-6:   11, Cs1size=1Gb
++# bit9-8:   00, Cs2width=nonexistent
++# bit11-10: 00, Cs2size =nonexistent
++# bit13-12: 00, Cs3width=nonexistent
++# bit15-14: 00, Cs3size =nonexistent
++# bit16:    0,  Cs0AddrSel
++# bit17:    0,  Cs1AddrSel
++# bit18:    0,  Cs2AddrSel
++# bit19:    0,  Cs3AddrSel
++# bit31-20: 0 required
++
++DATA 0xFFD01414 0x00000000	#  DDR Open Pages Control
++# bit0:    0,  OpenPage enabled
++# bit31-1: 0 required
++
++DATA 0xFFD01418 0x00000000	#  DDR Operation
++# bit3-0:   0x0, DDR cmd
++# bit31-4:  0 required
++
++DATA 0xFFD0141C 0x00000C52	#  DDR Mode
++# bit2-0:   2, BurstLen=2 required
++# bit3:     0, BurstType=0 required
++# bit6-4:   4, CL=5
++# bit7:     0, TestMode=0 normal
++# bit8:     0, DLL reset=0 normal
++# bit11-9:  6, auto-precharge write recovery ????????????
++# bit12:    0, PD must be zero
++# bit31-13: 0 required
++
++DATA 0xFFD01420 0x00000004	#  DDR Extended Mode
++# bit0:    0,  DDR DLL enabled
++# bit1:    0,  DDR drive strenght normal
++# bit2:    1,  DDR ODT control lsd (disabled)
++# bit5-3:  000, required
++# bit6:    0,  DDR ODT control msb, (disabled)
++# bit9-7:  000, required
++# bit10:   0,  differential DQS enabled
++# bit11:   0, required
++# bit12:   0, DDR output buffer enabled
++# bit31-13: 0 required
++
++DATA 0xFFD01424 0x0000F17F	#  DDR Controller Control High
++# bit2-0:  111, required
++# bit3  :  1  , MBUS Burst Chop disabled
++# bit6-4:  111, required
++# bit7  :  0
++# bit8  :  1  , add writepath sample stage, must be 1 for DDR freq >= 300MHz
++# bit9  :  0  , no half clock cycle addition to dataout
++# bit10 :  0  , 1/4 clock cycle skew enabled for addr/ctl signals
++# bit11 :  0  , 1/4 clock cycle skew disabled for write mesh
++# bit15-12: 1111 required
++# bit31-16: 0    required
++
++DATA 0xFFD01428 0x00085520	# DDR2 ODT Read Timing (default values)
++DATA 0xFFD0147C 0x00008552	# DDR2 ODT Write Timing (default values)
++
++DATA 0xFFD01500 0x00000000	# CS[0]n Base address to 0x0
++DATA 0xFFD01504 0x03FFFFF1	# CS[0]n Size
++# bit0:    1,  Window enabled
++# bit1:    0,  Write Protect disabled
++# bit3-2:  00, CS0 hit selected
++# bit23-4: ones, required
++# bit31-24: 0x0F, Size (i.e. 256MB)
++
++DATA 0xFFD01508 0x04000000	# CS[1]n Base address to 256Mb
++DATA 0xFFD0150C 0x03FFFFF5	# CS[1]n Size 256Mb Window enabled for CS1
++
++DATA 0xFFD01514 0x00000000	# CS[2]n Size, window disabled
++DATA 0xFFD0151C 0x00000000	# CS[3]n Size, window disabled
++
++DATA 0xFFD01494 0x00120012	#  DDR ODT Control (Low)
++# bit3-0:  2, ODT0Rd, MODT[0] asserted during read from DRAM CS1
++# bit7-4:  1, ODT0Rd, MODT[0] asserted during read from DRAM CS0
++# bit19-16:2, ODT0Wr, MODT[0] asserted during write to DRAM CS1
++# bit23-20:1, ODT0Wr, MODT[0] asserted during write to DRAM CS0
++
++DATA 0xFFD01498 0x00000000	#  DDR ODT Control (High)
++# bit1-0:  00, ODT0 controlled by ODT Control (low) register above
++# bit3-2:  01, ODT1 active NEVER!
++# bit31-4: zero, required
++
++DATA 0xFFD0149C 0x0000E40F	# CPU ODT Control
++DATA 0xFFD01480 0x00000001	# DDR Initialization Control
++#bit0=1, enable DDR init upon this register write
++
++# End of Header extension
++DATA 0x0 0x0
+diff -ruN u-boot-2020.04.old/board/Marvell/netgear_ms2110/MAINTAINERS u-boot-2020.04/board/Marvell/netgear_ms2110/MAINTAINERS
+--- u-boot-2020.04.old/board/Marvell/netgear_ms2110/MAINTAINERS	1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2020.04/board/Marvell/netgear_ms2110/MAINTAINERS	2020-07-09 00:59:29.000000000 +0200
+@@ -0,0 +1,6 @@
++NETGEAR_MS2110 BOARD
++M:	bodhi <mibodhi at gmail.com>
++S:	Maintained
++F:	board/Marvell/netgear_ms2110
++F:	include/configs/netgear_ms2110.h
++F:	configs/netgear_ms2110_defconfig
+diff -ruN u-boot-2020.04.old/board/Marvell/netgear_ms2110/Makefile u-boot-2020.04/board/Marvell/netgear_ms2110/Makefile
+--- u-boot-2020.04.old/board/Marvell/netgear_ms2110/Makefile	1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2020.04/board/Marvell/netgear_ms2110/Makefile	2020-07-09 00:59:29.000000000 +0200
+@@ -0,0 +1,13 @@
++#
++# (C) Copyright 2014 bodhi <mibodhi at gmail.com>
++#
++# Based on
++# (C) Copyright 2009
++# Marvell Semiconductor <www.marvell.com>
++# Written-by: Prafulla Wadaskar <prafulla at marvell.com>
++#
++# SPDX-License-Identifier:	GPL-2.0+
++#
++
++obj-y	:= netgear_ms2110.o
++
+diff -ruN u-boot-2020.04.old/board/Marvell/netgear_ms2110/netgear_ms2110.c u-boot-2020.04/board/Marvell/netgear_ms2110/netgear_ms2110.c
+--- u-boot-2020.04.old/board/Marvell/netgear_ms2110/netgear_ms2110.c	1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2020.04/board/Marvell/netgear_ms2110/netgear_ms2110.c	2020-07-09 00:59:29.000000000 +0200
+@@ -0,0 +1,151 @@
++/*
++ * Copyright (C) 2014-2017 bodhi <mibodhi at gmail.com>
++ *
++ * Based on Kirkwood support:
++ * (C) Copyright 2009
++ * Marvell Semiconductor <www.marvell.com>
++ * Written-by: Prafulla Wadaskar <prafulla at marvell.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
++ * MA 02110-1301 USA
++ */
++
++#include <common.h>
++#include <miiphy.h>
++#include <netdev.h>
++#include <asm/arch/soc.h>
++#include <asm/arch/mpp.h>
++#include "netgear_ms2110.h"
++#include <asm/mach-types.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++int board_early_init_f(void)
++{
++	/*
++	 * default gpio configuration
++	 * There are maximum 64 gpios controlled through 2 sets of registers
++	 * the  below configuration configures mainly initial LED status
++	 */
++	mvebu_config_gpio(NETGEAR_MS2110_OE_VAL_LOW,
++			NETGEAR_MS2110_OE_VAL_HIGH,
++			NETGEAR_MS2110_OE_LOW, NETGEAR_MS2110_OE_HIGH);
++
++	/* Multi-Purpose Pins Functionality configuration */
++	u32 kwmpp_config[] = {
++		MPP0_NF_IO2,
++		MPP1_NF_IO3,
++		MPP2_NF_IO4,
++		MPP3_NF_IO5,
++		MPP4_NF_IO6,
++		MPP5_NF_IO7,
++		MPP6_SYSRST_OUTn,
++		MPP7_SPI_SCn,
++		MPP8_TW_SDA,
++		MPP9_TW_SCK,
++		MPP10_UART0_TXD,
++		MPP11_UART0_RXD,
++		MPP12_SD_CLK,
++		MPP13_SD_CMD,
++		MPP14_SD_D0,
++		MPP15_SD_D1,
++		MPP16_SD_D2,
++		MPP17_SD_D3,
++		MPP18_NF_IO0,
++		MPP19_NF_IO1,
++		MPP20_SATA1_ACTn,
++		MPP21_SATA0_ACTn,
++		MPP22_GPIO,
++		MPP23_GPIO,
++		MPP24_GE1_4,
++		MPP25_GE1_5,
++		MPP26_GE1_6,
++		MPP27_GE1_7,
++		MPP28_GPIO,
++		MPP29_GPIO,
++		MPP30_GPIO,
++		MPP31_GPIO,
++		MPP32_GPIO,
++		MPP33_GE1_13,
++		MPP34_SATA1_ACTn,
++		MPP35_GPIO,
++		MPP36_GPIO,
++		MPP37_GPIO,
++		MPP38_GPIO,
++		MPP39_GPIO,
++		MPP40_GPIO,
++		MPP41_GPIO,
++		MPP42_GPIO,
++		MPP43_GPIO,
++		MPP44_GPIO,
++		MPP45_TDM_PCLK,
++		MPP46_TDM_FS,
++		MPP47_TDM_DRX,
++		MPP48_TDM_DTX,
++		MPP49_GPIO,
++		0
++	};
++	kirkwood_mpp_conf(kwmpp_config, NULL);
++	return 0;
++}
++
++int board_init(void)
++{	/*
++	 * arch number of board
++	 */
++	gd->bd->bi_arch_number = MACH_TYPE_NETGEAR_MS2110;
++
++	/* adress of boot parameters */
++	gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
++
++	return 0;
++}
++#ifdef CONFIG_RESET_PHY_R
++/* Configure and enable MV88E1116 PHY */
++void reset_phy(void)
++{
++	u16 reg;
++	u16 devadr;
++	char *name = "egiga0";
++
++	if (miiphy_set_current_dev(name))
++		return;
++
++	/* command to read PHY dev address */
++	if (miiphy_read(name, 0xEE, 0xEE, (u16 *) &devadr)) {
++		printf("Err..%s could not read PHY dev address\n",
++			__FUNCTION__);
++		return;
++	}
++
++	/*
++	 * Enable RGMII delay on Tx and Rx for CPU port
++	 * Ref: sec 4.7.2 of chip datasheet
++	 */
++	miiphy_write(name, devadr, MV88E1116_PGADR_REG, 2);
++	miiphy_read(name, devadr, MV88E1116_MAC_CTRL_REG, &reg);
++	reg |= (MV88E1116_RGMII_RXTM_CTRL | MV88E1116_RGMII_TXTM_CTRL);
++	miiphy_write(name, devadr, MV88E1116_MAC_CTRL_REG, reg);
++	miiphy_write(name, devadr, MV88E1116_PGADR_REG, 0);
++
++	/* reset the phy */
++	miiphy_reset(name, devadr);
++
++	printf("88E1116 Initialized on %s\n", name);
++}
++#endif /* CONFIG_RESET_PHY_R */
++
+diff -ruN u-boot-2020.04.old/board/Marvell/netgear_ms2110/netgear_ms2110.h u-boot-2020.04/board/Marvell/netgear_ms2110/netgear_ms2110.h
+--- u-boot-2020.04.old/board/Marvell/netgear_ms2110/netgear_ms2110.h	1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2020.04/board/Marvell/netgear_ms2110/netgear_ms2110.h	2020-07-09 00:59:29.000000000 +0200
+@@ -0,0 +1,41 @@
++/*
++ * (C) Copyright 2009
++ * Marvell Semiconductor <www.marvell.com>
++ * Written-by: Prafulla Wadaskar <prafulla at marvell.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
++ * MA 02110-1301 USA
++ */
++
++#ifndef __NETGEAR_MS2110_H
++#define __NETGEAR_MS2110_H
++
++#define NETGEAR_MS2110_OE_LOW			(~(1 << 7))
++#define NETGEAR_MS2110_OE_HIGH			(~(1 << 2 | 1 << 12))
++#define NETGEAR_MS2110_OE_VAL_LOW		(0)
++#define NETGEAR_MS2110_OE_VAL_HIGH		(1 << 12)
++
++/* PHY related */
++#define MV88E1116_LED_FCTRL_REG		10
++#define MV88E1116_CPRSP_CR3_REG		21
++#define MV88E1116_MAC_CTRL_REG		21
++#define MV88E1116_PGADR_REG		22
++#define MV88E1116_RGMII_TXTM_CTRL	(1 << 4)
++#define MV88E1116_RGMII_RXTM_CTRL	(1 << 5)
++
++#endif /* __NETGEAR_MS2110_H */
+diff -ruN a/configs/netgear_ms2110_defconfig b/configs/netgear_ms2110_defconfig
+--- a/configs/netgear_ms2110_defconfig	1970-01-01 01:00:00.000000000 +0100
++++ b/configs/netgear_ms2110_defconfig	2020-07-14 17:59:18.000000000 +0200
+@@ -0,0 +1,50 @@
++CONFIG_ARM=y
++CONFIG_KIRKWOOD=y
++CONFIG_SYS_DCACHE_OFF=y
++CONFIG_ARCH_CPU_INIT=y
++CONFIG_TARGET_NETGEAR_MS2110=y
++CONFIG_IDENT_STRING="\nNetgear Stora MS2110"
++CONFIG_SYS_PROMPT="Stora> "
++CONFIG_HUSH_PARSER=y
++CONFIG_SYS_TEXT_BASE=0x600000
++# CONFIG_DISPLAY_BOARDINFO is not set
++# CONFIG_CMD_IMLS is not set
++# CONFIG_CMD_FLASH is not set
++CONFIG_CMD_IDE=y
++CONFIG_MVGBE=y
++CONFIG_MII=y
++CONFIG_SYS_NS16550=y
++CONFIG_OF_LIBFDT=y
++CONFIG_CMD_FDT=y
++CONFIG_CMD_BOOTZ=y
++CONFIG_CMD_SETEXPR=y
++CONFIG_CMD_DATE=y
++CONFIG_CMD_DHCP=y
++CONFIG_CMD_MII=y
++CONFIG_CMD_PING=y
++CONFIG_CMD_EXT2=y
++CONFIG_CMD_EXT4=y
++CONFIG_CMD_FAT=y
++CONFIG_CMD_JFFS2=y
++CONFIG_CMD_USB=y
++CONFIG_ISO_PARTITION=y
++CONFIG_EFI_PARTITION=y
++# CONFIG_MMC is not set
++CONFIG_MTD=y
++CONFIG_MTD_RAW_NAND=y
++CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:0xe0000 at 0x0(uboot),0x20000 at 0xe0000(uboot_env),- at 0x100000(ubi)"
++CONFIG_CMD_MTDPARTS=y
++CONFIG_CMD_NAND=y
++CONFIG_ENV_IS_IN_NAND=y
++CONFIG_ENV_SIZE=0x20000
++CONFIG_ENV_ADDR=0xe0000
++CONFIG_ENV_OFFSET=0xe0000
++CONFIG_ENV_SECT_SIZE=0x20000
++CONFIG_CMD_UBI=y
++CONFIG_USB=y
++CONFIG_USB_EHCI_HCD=y
++CONFIG_USB_STORAGE=y
++CONFIG_BLK=y
++CONFIG_MVSATA_IDE=y
++CONFIG_DM_RTC=y
++CONFIG_RTC_MV=y
+diff -ruN a/include/configs/netgear_ms2110.h b/include/configs/netgear_ms2110.h
+--- a/include/configs/netgear_ms2110.h	1970-01-01 01:00:00.000000000 +0100
++++ b/include/configs/netgear_ms2110.h	2020-07-14 17:49:15.000000000 +0200
+@@ -0,0 +1,155 @@
++/*
++ * (C) Copyright 2014-2017 bodhi <mibodhi at gmail.com>
++ * (C) Copyright 2020 Zoltan HERPAI <wigyori at uid0.hu>
++ *
++ * Based on Kirkwood support: 
++ * (C) Copyright 2009
++ * Marvell Semiconductor <www.marvell.com>
++ * Written-by: Prafulla Wadaskar <prafulla at marvell.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
++ * MA 02110-1301 USA
++ */
++
++#ifndef _CONFIG_NGMS2110_H
++#define _CONFIG_NGMS2110_H
++
++/*
++ * High Level Configuration Options (easy to change)
++ */
++#define CONFIG_MARVELL		1
++#define CONFIG_ARM926EJS	1	/* Basic Architecture */
++#define CONFIG_FEROCEON_88FR131	1	/* CPU Core subversion */
++#define CONFIG_KIRKWOOD		1	/* SOC Family Name */
++#define CONFIG_KW88F6281	1	/* SOC Name */
++#define CONFIG_MACH_NETGEAR_MS2110	/* Machine type */
++#define CONFIG_SKIP_LOWLEVEL_INIT	/* disable board lowlevel_init */
++
++/*
++ * Commands configuration
++ */
++#define CONFIG_SYS_NO_FLASH             /* Declare no flash (NOR/SPI) */
++#define CONFIG_SYS_MVFS                 /* Picks up Filesystem from mv-common.h */
++#define CONFIG_CMD_ENV
++#define CONFIG_PREBOOT
++#define CONFIG_SYS_HUSH_PARSER
++#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
++
++/* #define CONFIG_CMD_AUTOSCRIPT */
++
++/*
++ * mv-common.h should be defined after CMD configs since it used them
++ * to enable certain macros
++ */
++#include "mv-common.h"
++
++/* Remove or override few declarations from mv-common.h */
++//#undef CONFIG_SYS_PROMPT        /* previously defined in mv-common.h */
++//#define CONFIG_SYS_PROMPT       "Netgear Stora> "
++
++/*
++ * NAND configuration
++ */
++#ifdef CONFIG_CMD_NAND
++#define CONFIG_NAND_KIRKWOOD
++#define CONFIG_SYS_MAX_NAND_DEVICE	1
++#define NAND_MAX_CHIPS			1
++#define CONFIG_SYS_NAND_BASE		0xD8000000	/* KW_DEFADR_NANDF */
++#define NAND_ALLOW_ERASE_ALL		1
++#endif
++
++/*
++ * Default environment variables
++*/
++#define CONFIG_BOOTCOMMAND \
++        "setenv bootargs ${console} ${mtdparts} ${bootargs_root}; "     \
++        "ubi part ubi; "                                                \
++        "ubifsmount ubi:rootfs; "                                       \
++        "ubi read 0x800000 kernel; "                                    \
++        "bootm 0x800000"
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++	"arcNumber=2743\0" \
++	"console=console=ttyS0,115200\0"        \
++	"ethact=egiga0\0" \
++	"ethaddr=52:3b:20:9c:11:51\0" \
++	"ipaddr=192.168.0.231\0" \
++	"mtdids=nand0=orion_nand\0"             \
++	"mtdparts="CONFIG_MTDPARTS_DEFAULT "\0" \
++	"serverip=192.168.0.220\0" \
++	"bootargs_root=\0"
++
++/* size in bytes reserved for initial data */
++#define CONFIG_SYS_GBL_DATA_SIZE	128
++
++/*
++ * Other required minimal configurations
++ */
++#define CONFIG_STACKSIZE	0x00100000	/* regular stack- 1M */
++
++/*
++ * Ethernet Driver configuration
++ */
++#ifdef CONFIG_CMD_NET
++#define CONFIG_NETCONSOLE      /* include NetConsole support */
++#define CONFIG_NET_MULTI       /* specify more that one ports available */
++#define CONFIG_KIRKWOOD_EGIGA_PORTS    {1,0}   /* enable first port */
++#define CONFIG_MV88E61XX_MULTICHIP_ADRMODE
++#define CONFIG_DIS_AUTO_NEG_SPEED_GMII /*Disable Auto speed negociation */
++#define CONFIG_PHY_SPEED       _1000BASET      /*Force PHYspeed to 1GBPs */
++#define CONFIG_MVGBE_PORTS	{1, 0}	/* enable port 0 only */
++#define CONFIG_PHY_BASE_ADR	0x0A
++#define CONFIG_RESET_PHY_R	/* use reset_phy() to init PHY */
++#endif /* CONFIG_CMD_NET */
++
++/*
++ * USB/EHCI
++ */
++#ifdef CONFIG_CMD_USB
++#define CONFIG_USB_EHCI			/* Enable EHCI USB support */
++#define CONFIG_USB_EHCI_KIRKWOOD	/* on Kirkwood platform	*/
++#define CONFIG_EHCI_IS_TDI
++#define CONFIG_SUPPORT_VFAT
++#endif /* CONFIG_CMD_USB */
++
++/*
++ * File system
++ */
++#define CONFIG_JFFS2_NAND
++#define CONFIG_JFFS2_LZO
++#define CONFIG_MTD_DEVICE               /* needed for mtdparts commands */
++
++/*
++ * SATA 
++ */
++
++#ifdef CONFIG_MVSATA_IDE
++#define CONFIG_SYS_ATA_IDE0_OFFSET      MV_SATA_PORT0_OFFSET
++#define CONFIG_SYS_ATA_IDE1_OFFSET      MV_SATA_PORT1_OFFSET
++#endif
++
++/*
++ *  Date Time
++ *   */
++#ifdef CONFIG_CMD_DATE
++#define CONFIG_RTC_MV
++#define CONFIG_CMD_SNTP
++#define CONFIG_CMD_DNS
++#endif /* CONFIG_CMD_DATE */
++
++#endif /* _CONFIG_NGMS2110_H */
diff --git a/target/linux/kirkwood/base-files/etc/board.d/02_network b/target/linux/kirkwood/base-files/etc/board.d/02_network
index 15f75df6a8..3ed2fa94b0 100644
--- a/target/linux/kirkwood/base-files/etc/board.d/02_network
+++ b/target/linux/kirkwood/base-files/etc/board.d/02_network
@@ -24,6 +24,7 @@ kirkwood_setup_interfaces()
 	iom,ix2-200|\
 	iptime,nas1|\
 	netgear,readynas-duo-v2|\
+	netgear,stora|\
 	raidsonic,ib-nas62x0|\
 	seagate,blackarmor-nas220|\
 	seagate,dockstar|\
diff --git a/target/linux/kirkwood/base-files/etc/uci-defaults/04_storafan b/target/linux/kirkwood/base-files/etc/uci-defaults/04_storafan
new file mode 100644
index 0000000000..cdf44afa14
--- /dev/null
+++ b/target/linux/kirkwood/base-files/etc/uci-defaults/04_storafan
@@ -0,0 +1,22 @@
+#
+# Copyright (C) 2021 OpenWrt.org
+#
+
+. /lib/functions.sh
+
+board=$(board_name)
+
+case "$board" in
+netgear,stora)
+	# Set fan script execution in crontab
+	grep -s -q fan_ctrl.sh /etc/crontabs/root && exit 0
+
+	echo "# stora fan script runs every 5 minutes" >> /etc/crontabs/root
+	echo "*/5 * * * * /sbin/fan_ctrl.sh" >> /etc/crontabs/root
+
+	# Execute one time after initial flash (instead of waiting 5 min for cron)
+	/sbin/fan_ctrl.sh
+	;;
+esac
+
+exit 0
diff --git a/target/linux/kirkwood/base-files/sbin/fan_ctrl.sh b/target/linux/kirkwood/base-files/sbin/fan_ctrl.sh
new file mode 100755
index 0000000000..bce8700736
--- /dev/null
+++ b/target/linux/kirkwood/base-files/sbin/fan_ctrl.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+CPU_TEMP=$(cut -c1-2 /sys/devices/platform/ocp at f1000000/f1011000.i2c/i2c-0/0-0048/hwmon/hwmon?/temp1_input)
+
+CPU_LOW=45
+CPU_MID=50
+CPU_HIGH=55
+
+if [ ! -e /sys/devices/platform/ocp at f1000000/f1011000.i2c/i2c-0/0-001b/hwmon/hwmon?/pwm1 ]; then
+	exit 0
+else
+	FAN_CTRL=$(ls /sys/devices/platform/ocp at f1000000/f1011000.i2c/i2c-0/0-001b/hwmon/hwmon?/pwm1)
+fi
+
+if [ "$CPU_TEMP" -ge "$CPU_HIGH" ]; then
+	echo "255" > $FAN_CTRL
+elif [ "$CPU_TEMP" -ge "$CPU_MID" ]; then
+	echo "100" > $FAN_CTRL
+elif [ "$CPU_TEMP" -ge "$CPU_LOW" ]; then
+	echo "50" > $FAN_CTRL
+else
+	echo "0" > $FAN_CTRL
+fi
diff --git a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-stora.dts b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-stora.dts
new file mode 100644
index 0000000000..577c009144
--- /dev/null
+++ b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-stora.dts
@@ -0,0 +1,227 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Device Tree file for NETGEAR Stora (MS2000/2110)
+ *
+ * Copyright (C) 2013, Arnaud EBALARD <arno at natisbad.org>
+ * Copyright (C) 2021, Zoltan HERPAI <wigyori at uid0.hu>
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+
+/ {
+	model = "NETGEAR Stora (MS2000/2110)";
+	compatible = "netgear,stora", "marvell,kirkwood-88f6281", "marvell,kirkwood";
+
+	memory { /* 128 MB */
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	aliases {
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8 earlyprintk";
+		stdout-path = &uart0;
+	};
+
+	ocp at f1000000 {
+		pinctrl: pin-controller at 10000 {
+			pmx_button_power: pmx-button-power {
+				marvell,pins = "mpp36";
+				marvell,function = "gpio";
+			};
+
+			pmx_button_reset: pmx-button-reset {
+				marvell,pins = "mpp38";
+				marvell,function = "gpio";
+			};
+
+			pmx_led_blue_power: pmx-led-blue-power {
+				marvell,pins = "mpp31";
+				marvell,function = "gpio";
+			};
+
+			pmx_led_green_disk1: pmx-led-green-disk1 {
+				marvell,pins = "mpp21";
+				marvell,function = "gpio";
+			};
+
+			pmx_led_green_disk2: pmx-led-green-disk2 {
+				marvell,pins = "mpp20";
+				marvell,function = "gpio";
+			};
+
+			pmx_led_red_disk1: pmx-led-red-disk1 {
+				marvell,pins = "mpp23";
+				marvell,function = "gpio";
+			};
+
+			pmx_led_red_disk2: pmx-led-red-disk2 {
+				marvell,pins = "mpp22";
+				marvell,function = "gpio";
+			};
+
+			pmx_poweroff: pmx-poweroff {
+				marvell,pins = "mpp40";
+				marvell,function = "gpio";
+			};
+
+			pmx_fan_tacho: pmx-fan-tacho {
+				marvell,pins = "mpp41";
+				marvell,function = "gpio";
+			};
+		};
+
+		clocks {
+			pcf8563_clk: pcf8563-oscillator {
+				 compatible = "fixed-clock";
+				 #clock-cells = <0>;
+				 clock-frequency = <2048>;
+			};
+		};
+
+		i2c at 11000 {
+			status = "okay";
+
+			tc654 at 1b {
+				compatible = "microchip,tc654";
+				reg = <0x1b>;
+			};
+
+			lm75 at 48 {
+				compatible = "national,lm75";
+				reg = <0x48>;
+			};
+
+			pcf8563 at 51 {
+				compatible = "nxp,pcf8563";
+				reg = <0x51>;
+			};
+		};
+
+		serial at 12000 {
+			status = "okay";
+		};
+
+		sata at 80000 {
+			status = "okay";
+			phy-names = "port0", "port1";
+			nr-ports = <2>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		pinctrl-0 = < &pmx_led_blue_power
+			      &pmx_led_green_disk1 &pmx_led_green_disk2
+			      &pmx_led_red_disk1 &pmx_led_red_disk2 >;
+		pinctrl-names = "default";
+
+		led_power: power {
+			label = "blue:power";
+			gpios = <&gpio0 31 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "default-on";
+		};
+
+		disk1 {
+			label = "green:disk1";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "ata1";
+		};
+
+		disk2 {
+			label = "green:disk2";
+			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "ata2";
+		};
+
+		disk1_fail {
+			label = "red:disk1_fail";
+			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+		};
+
+		disk2_fail {
+			label = "red:disk2_fail";
+			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+		pinctrl-0 = <&pmx_button_power &pmx_button_reset >;
+		pinctrl-names = "default";
+
+		power {
+			label = "Power Button";
+			linux,code = <KEY_POWER>;
+			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+		};
+
+		reset {
+			label = "Reset Button";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio-poweroff {
+		compatible = "gpio-poweroff";
+		pinctrl-0 = <&pmx_poweroff>;
+		pinctrl-names = "default";
+		gpios = <&gpio0 40 GPIO_ACTIVE_LOW>;
+	};
+};
+
+&nand {
+	status = "okay";
+	chip-delay = <40>;
+
+	partition at 0 {
+		label = "u-boot";
+		reg = <0x0000000 0x0e0000>;
+		read-only;
+	};
+
+	partition at e0000 {
+		label = "u-boot-env";
+		reg = <0x0e00000 0x020000>;
+	};
+
+	partition at 100000 {
+		label = "ubi";
+		reg = <0x0100000 0xff00000>;
+	};
+};
+
+&mdio {
+	status = "okay";
+
+	ethphy0: ethernet-phy at 0 { /* Marvell 88E1318 */
+		compatible = "marvell,88e1116";
+		reg = <8>;
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	ethernet0-port at 0 {
+		phy-handle = <&ethphy0>;
+	};
+};
+
+&pciec {
+	status = "okay";
+};
+
+&pcie0 {
+	status = "okay";
+};
diff --git a/target/linux/kirkwood/image/Makefile b/target/linux/kirkwood/image/Makefile
index 49d0124f43..70c11628f0 100644
--- a/target/linux/kirkwood/image/Makefile
+++ b/target/linux/kirkwood/image/Makefile
@@ -271,6 +271,16 @@ define Device/netgear_readynas-duo-v2
 endef
 TARGET_DEVICES += netgear_readynas-duo-v2
 
+define Device/netgear_stora
+  DEVICE_VENDOR := Netgear
+  DEVICE_MODEL := Stora (MS2000/2110)
+  DEVICE_DTS := kirkwood-stora
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
+	kmod-rtc-pcf8563 kmod-hwmon-lm75 kmod-hwmon-tc654 \
+	kmod-gpio-button-hotplug
+endef
+TARGET_DEVICES += netgear_stora
+
 define Device/raidsonic_ib-nas62x0
   DEVICE_VENDOR := RaidSonic
   DEVICE_MODEL := ICY BOX IB-NAS62x0
diff --git a/target/linux/kirkwood/patches-5.15/117-netgear_stora.patch b/target/linux/kirkwood/patches-5.15/117-netgear_stora.patch
new file mode 100644
index 0000000000..3ebef23ac4
--- /dev/null
+++ b/target/linux/kirkwood/patches-5.15/117-netgear_stora.patch
@@ -0,0 +1,10 @@
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -339,6 +339,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
+ 	kirkwood-rs411.dtb \
+ 	kirkwood-sheevaplug.dtb \
+ 	kirkwood-sheevaplug-esata.dtb \
++	kirkwood-stora.dtb \
+ 	kirkwood-t5325.dtb \
+ 	kirkwood-topkick.dtb \
+ 	kirkwood-ts219-6281.dtb \
diff --git a/target/linux/kirkwood/patches-6.1/117-netgear_stora.patch b/target/linux/kirkwood/patches-6.1/117-netgear_stora.patch
new file mode 100644
index 0000000000..c7518933b2
--- /dev/null
+++ b/target/linux/kirkwood/patches-6.1/117-netgear_stora.patch
@@ -0,0 +1,10 @@
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -375,6 +375,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
+ 	kirkwood-rs411.dtb \
+ 	kirkwood-sheevaplug.dtb \
+ 	kirkwood-sheevaplug-esata.dtb \
++	kirkwood-stora.dtb \
+ 	kirkwood-t5325.dtb \
+ 	kirkwood-topkick.dtb \
+ 	kirkwood-ts219-6281.dtb \



From lede-commits at lists.infradead.org  Sun Mar 17 09:28:50 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 12:28:50 -0400
Subject: [openwrt/openwrt]  archs38: add 6.1 as testing kernel
In-Reply-To: <171069292797.744342.9905158396652872490@git-01.infra.openwrt.org>
References: <171069292797.744342.9905158396652872490@git-01.infra.openwrt.org>
Message-ID: <mailman.17115.1710692934.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e0638cfe70c8e4ef85a3a0c3fea6fb39fd370469

commit e0638cfe70c8e4ef85a3a0c3fea6fb39fd370469
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 5 10:54:11 2024 +0100

    archs38: add 6.1 as testing kernel
    
    Allow selecting 6.1 as testing kernel on archs38.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/archs38/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/archs38/Makefile b/target/linux/archs38/Makefile
index 42b4edad8a..5d69da9a4b 100644
--- a/target/linux/archs38/Makefile
+++ b/target/linux/archs38/Makefile
@@ -12,6 +12,7 @@ FEATURES:=source-only
 SUBTARGETS:=generic
 
 KERNEL_PATCHVER:=5.15
+KERNEL_TESTING_PATCHVER:=6.1
 
 DEVICE_TYPE:=basic
 



From lede-commits at lists.infradead.org  Sun Mar 17 09:28:49 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 12:28:49 -0400
Subject: [openwrt/openwrt]  archs38: 6.1: refresh kernel config
In-Reply-To: <171069292797.744342.9905158396652872490@git-01.infra.openwrt.org>
References: <171069292797.744342.9905158396652872490@git-01.infra.openwrt.org>
Message-ID: <mailman.17116.1710692934.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d314b239eff90cfb67cce8eba820a5caf29da8e5

commit d314b239eff90cfb67cce8eba820a5caf29da8e5
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 5 11:21:23 2024 +0100

    archs38: 6.1: refresh kernel config
    
    Refresh kernel config by running kernel_menuconfig.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/archs38/config-6.1 | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/target/linux/archs38/config-6.1 b/target/linux/archs38/config-6.1
index d4b1c5ab60..9fe6ba2932 100644
--- a/target/linux/archs38/config-6.1
+++ b/target/linux/archs38/config-6.1
@@ -46,13 +46,15 @@ CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=4096
 CONFIG_BLK_DEV_SD=y
-CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y
+CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
+CONFIG_CC_NO_ARRAY_BOUNDS=y
 CONFIG_CLK_HSDK=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_COMMON_CLK=y
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
 CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_CONTEXT_TRACKING=y
+CONFIG_CONTEXT_TRACKING_IDLE=y
 CONFIG_CPU_RMAP=y
 CONFIG_CRC16=y
 CONFIG_CRYPTO_CRC32C=y
@@ -64,23 +66,26 @@ CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_JITTERENTROPY=y
 CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
 CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
+CONFIG_CRYPTO_LIB_SHA1=y
 CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_LIB_UTILS=y
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_RNG_DEFAULT=y
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=y
+CONFIG_DEBUG_INFO=y
 CONFIG_DMADEVICES=y
 CONFIG_DMA_DIRECT_REMAP=y
 CONFIG_DMA_ENGINE=y
 CONFIG_DMA_OF=y
-CONFIG_DMA_REMAP=y
 CONFIG_DMA_VIRTUAL_CHANNELS=y
 CONFIG_DTC=y
 CONFIG_DWMAC_ANARION=y
 CONFIG_DWMAC_GENERIC=y
 CONFIG_DW_APB_ICTL=y
 CONFIG_DW_AXI_DMAC=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
 CONFIG_EXT4_FS=y
 CONFIG_FAT_FS=y
 CONFIG_FB=y
@@ -91,10 +96,12 @@ CONFIG_FS_MBCACHE=y
 CONFIG_FS_POSIX_ACL=y
 CONFIG_FWNODE_MDIO=y
 CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CSUM=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_PCI_IOMAP=y
@@ -109,7 +116,6 @@ CONFIG_GPIO_DWAPB=y
 CONFIG_GPIO_GENERIC=y
 CONFIG_GPIO_SNPS_CREG=y
 CONFIG_GRACE_PERIOD=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HZ_PERIODIC=y
@@ -188,19 +194,25 @@ CONFIG_OF_KOBJ=y
 CONFIG_OF_MDIO=y
 CONFIG_PADATA=y
 CONFIG_PAGE_POOL=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
 CONFIG_PCS_XPCS=y
 CONFIG_PGTABLE_LEVELS=2
 CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
 CONFIG_PHYLINK=y
 CONFIG_PPS=y
 CONFIG_PREEMPT=y
 CONFIG_PREEMPTION=y
+CONFIG_PREEMPT_BUILD=y
 CONFIG_PREEMPT_COUNT=y
 # CONFIG_PREEMPT_NONE is not set
 CONFIG_PREEMPT_RCU=y
 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
 CONFIG_PTP_1588_CLOCK=y
 CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_RANDSTRUCT_NONE=y
 CONFIG_RATIONAL=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y



From lede-commits at lists.infradead.org  Sun Mar 17 09:28:47 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 12:28:47 -0400
Subject: [openwrt/openwrt]  kernel/archs38: Create kernel files for v6.1 (from
 v5.15)
In-Reply-To: <171069292797.744342.9905158396652872490@git-01.infra.openwrt.org>
References: <171069292797.744342.9905158396652872490@git-01.infra.openwrt.org>
Message-ID: <mailman.17117.1710692934.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/16edee94e8e3f215e28839f6246ac0ce3ea1adc3

commit 16edee94e8e3f215e28839f6246ac0ce3ea1adc3
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 5 10:52:38 2024 +0100

    kernel/archs38: Create kernel files for v6.1 (from v5.15)
    
    This is an automatically generated commit.
    
    During a `git bisect` session, `git bisect --skip` is needed recommended.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/archs38/{config-5.15 => config-6.1} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/target/linux/archs38/config-5.15 b/target/linux/archs38/config-6.1
similarity index 100%
rename from target/linux/archs38/config-5.15
rename to target/linux/archs38/config-6.1



From lede-commits at lists.infradead.org  Sun Mar 17 09:28:48 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 12:28:48 -0400
Subject: [openwrt/openwrt]  kernel/archs38: Restore kernel files for v5.15
In-Reply-To: <171069292797.744342.9905158396652872490@git-01.infra.openwrt.org>
References: <171069292797.744342.9905158396652872490@git-01.infra.openwrt.org>
Message-ID: <mailman.17118.1710692934.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6ee7ae68957788e3270006eb84f1ec7efa90068f

commit 6ee7ae68957788e3270006eb84f1ec7efa90068f
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 5 10:52:38 2024 +0100

    kernel/archs38: Restore kernel files for v5.15
    
    This is an automatically generated commit and is needed to outsmart git.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/archs38/config-5.15 | 256 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 256 insertions(+)

diff --git a/target/linux/archs38/config-5.15 b/target/linux/archs38/config-5.15
new file mode 100644
index 0000000000..d4b1c5ab60
--- /dev/null
+++ b/target/linux/archs38/config-5.15
@@ -0,0 +1,256 @@
+# CONFIG_16KSTACKS is not set
+CONFIG_ARC=y
+CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARC_BUILTIN_DTB_NAME=""
+CONFIG_ARC_CACHE=y
+CONFIG_ARC_CACHE_LINE_SHIFT=6
+CONFIG_ARC_CACHE_PAGES=y
+CONFIG_ARC_CPU_HS=y
+CONFIG_ARC_CURR_IN_REG=y
+CONFIG_ARC_DBG=y
+# CONFIG_ARC_DSP_AGU_USERSPACE is not set
+# CONFIG_ARC_DSP_KERNEL is not set
+CONFIG_ARC_DSP_NONE=y
+# CONFIG_ARC_DSP_USERSPACE is not set
+CONFIG_ARC_DW2_UNWIND=y
+CONFIG_ARC_FPU_SAVE_RESTORE=y
+CONFIG_ARC_HAS_ACCL_REGS=y
+CONFIG_ARC_HAS_DCACHE=y
+# CONFIG_ARC_HAS_DCCM is not set
+CONFIG_ARC_HAS_DIV_REM=y
+CONFIG_ARC_HAS_ICACHE=y
+# CONFIG_ARC_HAS_ICCM is not set
+CONFIG_ARC_HAS_LL64=y
+CONFIG_ARC_HAS_LLSC=y
+# CONFIG_ARC_HAS_PAE40 is not set
+CONFIG_ARC_HAS_SWAPE=y
+CONFIG_ARC_IRQ_NO_AUTOSAVE=y
+CONFIG_ARC_KVADDR_SIZE=256
+# CONFIG_ARC_LPB_DISABLE is not set
+CONFIG_ARC_MCIP=y
+# CONFIG_ARC_METAWARE_HLINK is not set
+CONFIG_ARC_MMU_V4=y
+# CONFIG_ARC_PAGE_SIZE_16K is not set
+# CONFIG_ARC_PAGE_SIZE_4K is not set
+CONFIG_ARC_PAGE_SIZE_8K=y
+CONFIG_ARC_PLAT_AXS10X=y
+# CONFIG_ARC_PLAT_TB10X is not set
+# CONFIG_ARC_SMP_HALT_ON_RESET is not set
+CONFIG_ARC_SOC_HSDK=y
+CONFIG_ARC_TIMERS=y
+CONFIG_ARC_TIMERS_64BIT=y
+CONFIG_ARC_TUNE_MCPU=""
+CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS=y
+CONFIG_AXS103=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_SD=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y
+CONFIG_CLK_HSDK=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_CPU_RMAP=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_ECHAINIV=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
+CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_DIRECT_REMAP=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_REMAP=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DTC=y
+CONFIG_DWMAC_ANARION=y
+CONFIG_DWMAC_GENERIC=y
+CONFIG_DW_APB_ICTL=y
+CONFIG_DW_AXI_DMAC=y
+CONFIG_EXT4_FS=y
+CONFIG_FAT_FS=y
+CONFIG_FB=y
+CONFIG_FB_CMDLINE=y
+CONFIG_FIXED_PHY=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GPIOLIB_IRQCHIP=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_DWAPB=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_SNPS_CREG=y
+CONFIG_GRACE_PERIOD=y
+CONFIG_HANDLE_DOMAIN_IRQ=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HZ_PERIODIC=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_IIO=y
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_KFIFO_BUF=y
+CONFIG_IIO_ST_PRESS=y
+CONFIG_IIO_ST_PRESS_I2C=y
+CONFIG_IIO_ST_PRESS_SPI=y
+CONFIG_IIO_ST_SENSORS_CORE=y
+CONFIG_IIO_ST_SENSORS_I2C=y
+CONFIG_IIO_ST_SENSORS_SPI=y
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_TRIGGERED_BUFFER=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_WORK=y
+# CONFIG_ISA_ARCOMPACT is not set
+CONFIG_ISA_ARCV2=y
+CONFIG_JBD2=y
+CONFIG_KALLSYMS=y
+CONFIG_KERNEL_GZIP=y
+CONFIG_LIBFDT=y
+CONFIG_LINUX_LINK_BASE=0x90000000
+CONFIG_LINUX_RAM_BASE=0x80000000
+CONFIG_LOCKD=y
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MICREL_PHY=y
+CONFIG_MIGRATION=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_DW=y
+# CONFIG_MMC_DW_BLUEFIELD is not set
+# CONFIG_MMC_DW_EXYNOS is not set
+# CONFIG_MMC_DW_HI3798CV200 is not set
+# CONFIG_MMC_DW_K3 is not set
+CONFIG_MMC_DW_PLTFM=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_NAMESPACES=y
+CONFIG_NATIONAL_PHY=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_NS=y
+CONFIG_NET_PTP_CLASSIFY=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NLS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NO_IOPORT_MAP=y
+CONFIG_NR_CPUS=4
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_PADATA=y
+CONFIG_PAGE_POOL=y
+CONFIG_PCS_XPCS=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_PHYLIB=y
+CONFIG_PHYLINK=y
+CONFIG_PPS=y
+CONFIG_PREEMPT=y
+CONFIG_PREEMPTION=y
+CONFIG_PREEMPT_COUNT=y
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_RCU=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_RATIONAL=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_SPI=y
+CONFIG_RESET_AXS10X=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_HSDK=y
+CONFIG_RESET_SIMPLE=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RPS=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_SCSI=y
+CONFIG_SCSI_COMMON=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_8250_DWLIB=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_ARC=y
+CONFIG_SERIAL_ARC_CONSOLE=y
+CONFIG_SERIAL_ARC_NR_PORTS=1
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SG_POOL=y
+CONFIG_SMP=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_SPI=y
+CONFIG_SPI_DESIGNWARE=y
+# CONFIG_SPI_DW_DMA is not set
+CONFIG_SPI_DW_MMIO=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SRCU=y
+CONFIG_STACKTRACE=y
+# CONFIG_STANDALONE is not set
+CONFIG_STMMAC_ETH=y
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_SUNRPC=y
+CONFIG_SWPHY=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TI_ADC108S102=y
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_USB_SUPPORT=y
+# CONFIG_USER_NS is not set
+CONFIG_VFAT_FS=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_XPS=y



From lede-commits at lists.infradead.org  Sun Mar 17 09:31:06 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 12:31:06 -0400
Subject: [openwrt/openwrt]  qualcommax: ipq807x: fix LEDs on QNAP QHora-301W
In-Reply-To: <171069306615.750603.10640502011626905396@git-01.infra.openwrt.org>
References: <171069306615.750603.10640502011626905396@git-01.infra.openwrt.org>
Message-ID: <mailman.17119.1710693070.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5c1c823c4ae2a3283b8e5ec0b68c4774456507f2

commit 5c1c823c4ae2a3283b8e5ec0b68c4774456507f2
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sat Mar 16 15:28:31 2024 +0900

    qualcommax: ipq807x: fix LEDs on QNAP QHora-301W
    
    On QNAP QHora-301W, all LEDs don't have "function" property and only
    "color" property is available for the newer binding of LED on Linux
    Kernel.
    2e659930d3 ("qualcommax: drop redundant label with new LED
    color/function format") removes "label" property from LEDs, then,
    multiple "<color>:" (ex.: "amber:"/"green:"/"red:") will be appeared as
    LED names and renamed to "<color>:_<num>" ("ex.: "green:_1", "green:_2",
    ...) by kernel.
    
    logs:
    
    [    4.246494] leds-gpio leds: Led green: renamed to green:_1 due to name collision
    [    4.248978] leds-gpio leds: Led green: renamed to green:_2 due to name collision
    [    4.256345] leds-gpio leds: Led green: renamed to green:_3 due to name collision
    [    4.263770] leds-gpio leds: Led green: renamed to green:_4 due to name collision
    [    4.271105] leds-gpio leds: Led amber: renamed to amber:_1 due to name collision
    [    4.278487] leds-gpio leds: Led green: renamed to green:_5 due to name collision
    [    4.285856] leds-gpio leds: Led amber: renamed to amber:_2 due to name collision
    [    4.293257] leds-gpio leds: Led green: renamed to green:_6 due to name collision
    [    4.300616] leds-gpio leds: Led amber: renamed to amber:_3 due to name collision
    [    4.308002] leds-gpio leds: Led green: renamed to green:_7 due to name collision
    [    4.315384] leds-gpio leds: Led amber: renamed to amber:_4 due to name collision
    [    4.322760] leds-gpio leds: Led green: renamed to green:_8 due to name collision
    [    4.330135] leds-gpio leds: Led amber: renamed to amber:_5 due to name collision
    
    /sys/class/leds:
    
    amber:          amber:_4        green:_2        green:_6
    amber:_1        green:_5        green:_3        green:_7
    amber:_2        green:          green:_4        green:_8
    amber:_3        green:_1        green:_5        red:
    
    Fix this issue by adding missing "function" (and "function-enumerator")
    property to LEDs on QNAP QHora-301W.
    Note: there are no appropriate functions in dt-bindings/leds/common.h
    for some LEDs, so use the hardcoded strings for them instead.
    
    Fixes: 2e659930d3 ("qualcommax: drop redundant label with new LED color/function format")
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 .../arch/arm64/boot/dts/qcom/ipq8072-301w.dts      | 28 ++++++++++++++++++++++
 .../ipq807x/base-files/etc/board.d/01_leds         | 12 +++++-----
 2 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-301w.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-301w.dts
index 081e932b5c..2fe723591e 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-301w.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-301w.dts
@@ -63,81 +63,109 @@
 		led_system_green: led-system-green {
 			gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_STATUS;
 		};
 
 		led_system_red: led-system-red {
 			gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_RED>;
+			function = LED_FUNCTION_STATUS;
 		};
 
 		led_pwr_green: led-pwr-green {
 			gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_POWER;
 		};
 
 		led-wifi-green {
 			gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_WLAN;
 		};
 
 		led-lan4-green {
 			gpios = <&tlmm 6 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_LAN;
+			function-enumerator = <4>;
 		};
 
 		led-lan4-amber {
 			gpios = <&tlmm 7 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_AMBER>;
+			function = LED_FUNCTION_LAN;
+			function-enumerator = <4>;
 		};
 
 		led-lan3-green {
 			gpios = <&tlmm 8 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_LAN;
+			function-enumerator = <3>;
 		};
 
 		led-lan3-amber {
 			gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_AMBER>;
+			function = LED_FUNCTION_LAN;
+			function-enumerator = <3>;
 		};
 
 		led-lan2-green {
 			gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_LAN;
+			function-enumerator = <2>;
 		};
 
 		led-lan2-amber {
 			gpios = <&tlmm 13 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_AMBER>;
+			function = LED_FUNCTION_LAN;
+			function-enumerator = <2>;
 		};
 
 		led-lan1-green {
 			gpios = <&tlmm 14 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_LAN;
+			function-enumerator = <1>;
 		};
 
 		led-lan1-amber {
 			gpios = <&tlmm 15 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_AMBER>;
+			function = LED_FUNCTION_LAN;
+			function-enumerator = <1>;
 		};
 
 		led-10g-1-green {
 			gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = "10g";
+			function-enumerator = <1>;
 		};
 
 		led-10g-1-amber {
 			gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_AMBER>;
+			function = "10g";
+			function-enumerator = <1>;
 		};
 
 		led-10g-2-green {
 			gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_GREEN>;
+			function = "10g";
+			function-enumerator = <2>;
 		};
 
 		led-10g-2-amber {
 			gpios = <&tlmm 52 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_AMBER>;
+			function = "10g";
+			function-enumerator = <2>;
 		};
 	};
 };
diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds
index d6f5db7093..737c64fcec 100644
--- a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds
+++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds
@@ -51,12 +51,12 @@ xiaomi,ax9000)
 	ucidef_set_led_netdev "lan4-port-link" "LAN4-PORT-LINK" "90000.mdio-1:00:green:lan" "lan4" "tx rx link_10 link_100 link_1000"
 	;;
 qnap,301w)
-	ucidef_set_led_netdev "lan1" "LAN1" "green:lan1" "lan1"
-	ucidef_set_led_netdev "lan2" "LAN2" "green:lan2" "lan2"
-	ucidef_set_led_netdev "lan3" "LAN3" "green:lan3" "lan3"
-	ucidef_set_led_netdev "lan4" "LAN4" "green:lan4" "lan4"
-	ucidef_set_led_netdev "10G_1" "10G_1" "green:10g_1" "10g-1"
-	ucidef_set_led_netdev "10G_2" "10G_2" "green:10g_2" "10g-2"
+	ucidef_set_led_netdev "lan1" "LAN1" "green:lan-1" "lan1"
+	ucidef_set_led_netdev "lan2" "LAN2" "green:lan-2" "lan2"
+	ucidef_set_led_netdev "lan3" "LAN3" "green:lan-3" "lan3"
+	ucidef_set_led_netdev "lan4" "LAN4" "green:lan-4" "lan4"
+	ucidef_set_led_netdev "10G_1" "10G_1" "green:10g-1" "10g-1"
+	ucidef_set_led_netdev "10G_2" "10G_2" "green:10g-2" "10g-2"
 	;;
 yuncore,ax880)
 	ucidef_set_led_netdev "wan-port-link" "WAN-PORT-LINK" "90000.mdio-1:18:green:wan" "wan" "tx rx link_10 link_100 link_1000 link_2500"



From lede-commits at lists.infradead.org  Sun Mar 17 09:31:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 12:31:07 -0400
Subject: [openwrt/openwrt]  qualcommax: ipq807x: fix LEDs on Buffalo
 WXR-5950AX12
In-Reply-To: <171069306615.750603.10640502011626905396@git-01.infra.openwrt.org>
References: <171069306615.750603.10640502011626905396@git-01.infra.openwrt.org>
Message-ID: <mailman.17122.1710693070.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f7275dedd4f9a9ab818ca96a6336464a6718514d

commit f7275dedd4f9a9ab818ca96a6336464a6718514d
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Sat Mar 16 19:12:20 2024 +0900

    qualcommax: ipq807x: fix LEDs on Buffalo WXR-5950AX12
    
    On Buffalo WXR-5590AX12, some LEDs don't have "function" property and
    only "color" property is available for the newer binding of LED on
    Linux Kernel.
    2e659930d3 ("qualcommax: drop redundant label with new LED
    color/function format") removes "label" property from LEDs, then,
    multiple "<color>:" (ex.: "white:"/"red:") will be appeared as LED names
    and renamed to "<color>:_<num>" ("ex.: "white:_1", "green:_2", ...) by
    kernel.
    
    logs:
    
    [    5.372863] leds-gpio leds: Led white: renamed to white:_1 due to name collision
    [    5.375796] leds-gpio leds: Led red: renamed to red:_1 due to name collision
    
    /sys/class/leds:
    
    root at OpenWrt:/# ls /sys/class/leds/
    red:         red:power    white:       white:power
    red:_1       red:wlan     white:_1     white:wlan
    
    Fix this issue by adding missing "function" property to LEDs on Buffalo
    WXR-5950AX12.
    Note: there are no appropriate functions in dt-bindings/leds/common.h
    for some LEDs, so use the hardcoded strings for them instead.
    
    Fixes: 2e659930d3 ("qualcommax: drop redundant label with new LED color/function format")
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 .../files/arch/arm64/boot/dts/qcom/ipq8074-wxr-5950ax12.dts           | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-wxr-5950ax12.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-wxr-5950ax12.dts
index d6411e4fa5..d8237e81dd 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-wxr-5950ax12.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-wxr-5950ax12.dts
@@ -33,11 +33,13 @@
 		led-0 {
 			gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_WHITE>;
+			function = "router";
 		};
 
 		led-1 {
 			gpios = <&tlmm 22 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_RED>;
+			function = "router";
 		};
 
 		led_power_red: led-2 {
@@ -55,11 +57,13 @@
 		led-4 {
 			gpios = <&tlmm 43 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_WHITE>;
+			function = "internet";
 		};
 
 		led-5 {
 			gpios = <&tlmm 44 GPIO_ACTIVE_HIGH>;
 			color = <LED_COLOR_ID_RED>;
+			function = "internet";
 		};
 
 		led-6 {



From lede-commits at lists.infradead.org  Sun Mar 17 10:24:09 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 13:24:09 -0400
Subject: [openwrt/openwrt]  uci: fix variable declaration
In-Reply-To: <171069624951.866192.16779601283872297370@git-01.infra.openwrt.org>
References: <171069624951.866192.16779601283872297370@git-01.infra.openwrt.org>
Message-ID: <mailman.17129.1710696254.1280.lede-commits@lists.infradead.org>

aparcar pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7ac030876cba4d84729fb5be8796fd5b2a05855f

commit 7ac030876cba4d84729fb5be8796fd5b2a05855f
Author: Paul Spooren <mail at aparcar.org>
AuthorDate: Sat Mar 16 18:30:37 2024 +0100

    uci: fix variable declaration
    
    Using := doesn't fly well when including other variables. In fact this
    would cause the variable to be empty and break cloning of the git repo.
    
    Fix: "c354c069b3 uci: fix Makefile formatting"
    
    Signed-off-by: Paul Spooren <mail at aparcar.org>
---
 package/system/uci/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/system/uci/Makefile b/package/system/uci/Makefile
index 86bfdfb978..5d68b8905d 100644
--- a/package/system/uci/Makefile
+++ b/package/system/uci/Makefile
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=uci
 PKG_RELEASE:=1
 
-PKG_SOURCE_URL:=$(PROJECT_GIT)/project/uci.git
+PKG_SOURCE_URL=$(PROJECT_GIT)/project/uci.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-08-10
 PKG_SOURCE_VERSION:=5781664d5087ccc4b5ab58505883231212dbedbc



From lede-commits at lists.infradead.org  Sun Mar 17 12:39:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 15:39:52 -0400
Subject: [openwrt/openwrt]  mvebu: enable thermal zone polling for IEI Puzzle
 devices
In-Reply-To: <171070439207.1219134.16573781923571001267@git-01.infra.openwrt.org>
References: <171070439207.1219134.16573781923571001267@git-01.infra.openwrt.org>
Message-ID: <mailman.17154.1710704398.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fc177695e00e80afd30d20d29f6e915edc9e9eb9

commit fc177695e00e80afd30d20d29f6e915edc9e9eb9
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 17 15:55:09 2024 +0000

    mvebu: enable thermal zone polling for IEI Puzzle devices
    
    Marvell's thermal sensors do not support interrupts, so we need to
    poll them. Reading temperature every second should be enough to
    control the fan.
    While at it, also make sure fan speed is reduced again if temperature
    goes down.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
index 94677532f2..a8ce8fd102 100644
--- a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
@@ -1,4 +1,7 @@
 #define PUZZLE_FAN_THERMAL(_cname, _fan)					\
+	polling-delay-passive = <500>;						\
+	polling-delay = <1000>;							\
+										\
 	trips {									\
 		_cname##_active_high: cpu-active-high {				\
 			temperature = <80000>;					\
@@ -28,14 +31,14 @@
 		};								\
 		cpu-active-med {						\
 			trip = <&_cname##_active_med>;				\
-			cooling-device = <_fan 2 THERMAL_NO_LIMIT>;		\
+			cooling-device = <_fan 2 3>;				\
 		};								\
 		cpu-active-low {						\
 			trip = <&_cname##_active_low>;				\
-			cooling-device = <_fan 1 THERMAL_NO_LIMIT>;		\
+			cooling-device = <_fan 1 2>;				\
 		};								\
 		cpu-active-idle {						\
 			trip = <&_cname##_active_idle>;				\
-			cooling-device = <_fan 0 THERMAL_NO_LIMIT>;		\
+			cooling-device = <_fan 0 0>;				\
 		};								\
 	}



From lede-commits at lists.infradead.org  Sun Mar 17 12:40:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 15:40:58 -0400
Subject: [openwrt/openwrt]  mvebu: enable thermal zone polling for IEI Puzzle
 devices
In-Reply-To: <171070445855.1222463.3819225369147889470@git-01.infra.openwrt.org>
References: <171070445855.1222463.3819225369147889470@git-01.infra.openwrt.org>
Message-ID: <mailman.17155.1710704462.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/f02920dd98188758113d4e44b97c95f07f7cde2a

commit f02920dd98188758113d4e44b97c95f07f7cde2a
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 17 15:55:09 2024 +0000

    mvebu: enable thermal zone polling for IEI Puzzle devices
    
    Marvell's thermal sensors do not support interrupts, so we need to
    poll them. Reading temperature every second should be enough to
    control the fan.
    While at it, also make sure fan speed is reduced again if temperature
    goes down.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    (cherry picked from commit fc177695e00e80afd30d20d29f6e915edc9e9eb9)
---
 .../mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
index 94677532f2..a8ce8fd102 100644
--- a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
@@ -1,4 +1,7 @@
 #define PUZZLE_FAN_THERMAL(_cname, _fan)					\
+	polling-delay-passive = <500>;						\
+	polling-delay = <1000>;							\
+										\
 	trips {									\
 		_cname##_active_high: cpu-active-high {				\
 			temperature = <80000>;					\
@@ -28,14 +31,14 @@
 		};								\
 		cpu-active-med {						\
 			trip = <&_cname##_active_med>;				\
-			cooling-device = <_fan 2 THERMAL_NO_LIMIT>;		\
+			cooling-device = <_fan 2 3>;				\
 		};								\
 		cpu-active-low {						\
 			trip = <&_cname##_active_low>;				\
-			cooling-device = <_fan 1 THERMAL_NO_LIMIT>;		\
+			cooling-device = <_fan 1 2>;				\
 		};								\
 		cpu-active-idle {						\
 			trip = <&_cname##_active_idle>;				\
-			cooling-device = <_fan 0 THERMAL_NO_LIMIT>;		\
+			cooling-device = <_fan 0 0>;				\
 		};								\
 	}



From lede-commits at lists.infradead.org  Sun Mar 17 13:16:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 16:16:58 -0400
Subject: [openwrt/openwrt]  kernel: bump 6.6 to 6.6.22
In-Reply-To: <171070661739.1303076.38453386667361985@git-01.infra.openwrt.org>
References: <171070661739.1303076.38453386667361985@git-01.infra.openwrt.org>
Message-ID: <mailman.17158.1710706627.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/34b8c70a813c7772a03614fee0bb3cb34769d5ca

commit 34b8c70a813c7772a03614fee0bb3cb34769d5ca
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Sat Mar 16 06:49:35 2024 -0400

    kernel: bump 6.6 to 6.6.22
    
    Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.22
    
    Affected Patch automatically rebased.
    
    Build system: x86/64
    Build-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3
    Run-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
---
 include/kernel-6.6                                         |  4 ++--
 ...allow-rejecting-with-source-address-failed-policy.patch | 14 +++++++-------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/kernel-6.6 b/include/kernel-6.6
index f4fb9269c2..b30a51434c 100644
--- a/include/kernel-6.6
+++ b/include/kernel-6.6
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.6 = .21
-LINUX_KERNEL_HASH-6.6.21 = ee0b430148da94d2b13608b8d80b007b7d281dc90e3f19b63cf9a9943810e457
+LINUX_VERSION-6.6 = .22
+LINUX_KERNEL_HASH-6.6.22 = 23e3e7b56407250f5411bdab95763d0bc4e3a19dfa431d951df7eacabd61a2f4
diff --git a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index e09decca56..f3b5ccf2c0 100644
--- a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -6284,6 +6315,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6277,6 +6308,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -6295,6 +6328,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6288,6 +6321,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -6495,6 +6529,8 @@ static int __net_init ip6_route_net_init
+@@ -6488,6 +6522,8 @@ static int __net_init ip6_route_net_init
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	net->ipv6.fib6_has_custom_rules = false;
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
  					       sizeof(*net->ipv6.ip6_prohibit_entry),
  					       GFP_KERNEL);
-@@ -6505,11 +6541,21 @@ static int __net_init ip6_route_net_init
+@@ -6498,11 +6534,21 @@ static int __net_init ip6_route_net_init
  			 ip6_template_metrics, true);
  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
  
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
-@@ -6536,6 +6582,8 @@ out:
+@@ -6529,6 +6575,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -6555,6 +6603,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6548,6 +6596,7 @@ static void __net_exit ip6_route_net_exi
  	kfree(net->ipv6.ip6_null_entry);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	kfree(net->ipv6.ip6_blk_hole_entry);
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6638,6 +6687,9 @@ void __init ip6_route_init_special_entri
+@@ -6631,6 +6680,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);



From lede-commits at lists.infradead.org  Sun Mar 17 13:16:57 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 16:16:57 -0400
Subject: [openwrt/openwrt]  kernel: bump 6.6 to 6.6.21
In-Reply-To: <171070661739.1303076.38453386667361985@git-01.infra.openwrt.org>
References: <171070661739.1303076.38453386667361985@git-01.infra.openwrt.org>
Message-ID: <mailman.17159.1710706627.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6642d6c24e6b4e63ad4fc25a0582a04ff06b8b2c

commit 6642d6c24e6b4e63ad4fc25a0582a04ff06b8b2c
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Sat Mar 16 06:48:39 2024 -0400

    kernel: bump 6.6 to 6.6.21
    
    Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.21
    
    All patches automatically rebased.
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
---
 include/kernel-6.6                                           |  4 ++--
 ....7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch | 12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/kernel-6.6 b/include/kernel-6.6
index 53132d2ae5..f4fb9269c2 100644
--- a/include/kernel-6.6
+++ b/include/kernel-6.6
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.6 = .20
-LINUX_KERNEL_HASH-6.6.20 = e2f6c7f39b304248193370f8c5755553ab73ad5672e92dae994a344084d8dd22
+LINUX_VERSION-6.6 = .21
+LINUX_KERNEL_HASH-6.6.21 = ee0b430148da94d2b13608b8d80b007b7d281dc90e3f19b63cf9a9943810e457
diff --git a/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch b/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
index c02e7f8888..ce39895b45 100644
--- a/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
+++ b/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch
@@ -42,7 +42,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  
  	u64_stats_update_begin(&txq_stats->napi_syncp);
  	u64_stats_add(&txq_stats->napi.tx_packets, tx_packets);
-@@ -5603,6 +5607,7 @@ static int stmmac_napi_poll_tx(struct na
+@@ -5605,6 +5609,7 @@ static int stmmac_napi_poll_tx(struct na
  		container_of(napi, struct stmmac_channel, tx_napi);
  	struct stmmac_priv *priv = ch->priv_data;
  	struct stmmac_txq_stats *txq_stats;
@@ -50,7 +50,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	u32 chan = ch->index;
  	int work_done;
  
-@@ -5611,7 +5616,7 @@ static int stmmac_napi_poll_tx(struct na
+@@ -5613,7 +5618,7 @@ static int stmmac_napi_poll_tx(struct na
  	u64_stats_inc(&txq_stats->napi.poll);
  	u64_stats_update_end(&txq_stats->napi_syncp);
  
@@ -59,7 +59,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	work_done = min(work_done, budget);
  
  	if (work_done < budget && napi_complete_done(napi, work_done)) {
-@@ -5622,6 +5627,10 @@ static int stmmac_napi_poll_tx(struct na
+@@ -5624,6 +5629,10 @@ static int stmmac_napi_poll_tx(struct na
  		spin_unlock_irqrestore(&ch->lock, flags);
  	}
  
@@ -70,7 +70,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	return work_done;
  }
  
-@@ -5630,6 +5639,7 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5632,6 +5641,7 @@ static int stmmac_napi_poll_rxtx(struct
  	struct stmmac_channel *ch =
  		container_of(napi, struct stmmac_channel, rxtx_napi);
  	struct stmmac_priv *priv = ch->priv_data;
@@ -78,7 +78,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	int rx_done, tx_done, rxtx_done;
  	struct stmmac_rxq_stats *rxq_stats;
  	struct stmmac_txq_stats *txq_stats;
-@@ -5645,7 +5655,7 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5647,7 +5657,7 @@ static int stmmac_napi_poll_rxtx(struct
  	u64_stats_inc(&txq_stats->napi.poll);
  	u64_stats_update_end(&txq_stats->napi_syncp);
  
@@ -87,7 +87,7 @@ Signed-off-by: Paolo Abeni <pabeni at redhat.com>
  	tx_done = min(tx_done, budget);
  
  	rx_done = stmmac_rx_zc(priv, budget, chan);
-@@ -5670,6 +5680,10 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5672,6 +5682,10 @@ static int stmmac_napi_poll_rxtx(struct
  		spin_unlock_irqrestore(&ch->lock, flags);
  	}
  



From lede-commits at lists.infradead.org  Sun Mar 17 13:56:24 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 16:56:24 -0400
Subject: [openwrt/openwrt]  mediatek: filogic: replace built-in Aquantia
 driver with module
In-Reply-To: <171070898403.1410116.10916842826028066662@git-01.infra.openwrt.org>
References: <171070898403.1410116.10916842826028066662@git-01.infra.openwrt.org>
Message-ID: <mailman.17160.1710708989.1280.lede-commits@lists.infradead.org>

rmilecki pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/0a571c9e77b381ff4ea4beb42113b5cd43144f12

commit 0a571c9e77b381ff4ea4beb42113b5cd43144f12
Author: Rafa? Mi?ecki <rafal at milecki.pl>
AuthorDate: Wed Jan 17 22:20:15 2024 +0100

    mediatek: filogic: replace built-in Aquantia driver with module
    
    Some Aquantia PHYs (e.g. AQR113C) require firmware to be uploaded by
    host system. With built-in drivers this doesn't work in OpenWrt /
    embeddded as filesystem isn't available during PHY probe. That results
    in delays like:
    [    1.588068] Aquantia AQR113C mdio-bus:00: Falling back to sysfs fallback for: Rhe-05.06-Candidate9-AQR_Mediatek_23B_P5_ID45824_LCLVER1.cld
    [   64.526387] Aquantia AQR113C mdio-bus:00: failed to find FW file Rhe-05.06-Candidate9-AQR_Mediatek_23B_P5_ID45824_LCLVER1.cld (-110)
    
    Switch to module to postpone PHY probe to init state.
    
    Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
    (cherry picked from commit 3bd79e6136a572b73536e9216cc199399fb33b30)
---
 target/linux/mediatek/filogic/config-5.15 | 1 -
 target/linux/mediatek/filogic/target.mk   | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/mediatek/filogic/config-5.15 b/target/linux/mediatek/filogic/config-5.15
index 8c46b9ad2c..fd05fdfb58 100644
--- a/target/linux/mediatek/filogic/config-5.15
+++ b/target/linux/mediatek/filogic/config-5.15
@@ -1,6 +1,5 @@
 CONFIG_64BIT=y
 # CONFIG_AHCI_MTK is not set
-CONFIG_AQUANTIA_PHY=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
 CONFIG_ARCH_KEEP_MEMBLOCK=y
 CONFIG_ARCH_MEDIATEK=y
diff --git a/target/linux/mediatek/filogic/target.mk b/target/linux/mediatek/filogic/target.mk
index dd4c4c1448..182b229db2 100644
--- a/target/linux/mediatek/filogic/target.mk
+++ b/target/linux/mediatek/filogic/target.mk
@@ -2,7 +2,7 @@ ARCH:=aarch64
 SUBTARGET:=filogic
 BOARDNAME:=Filogic 8x0 (MT798x)
 CPU_TYPE:=cortex-a53
-DEFAULT_PACKAGES += kmod-crypto-hw-safexcel kmod-mt7915e wpad-basic-mbedtls uboot-envtools
+DEFAULT_PACKAGES += kmod-phy-aquantia kmod-crypto-hw-safexcel kmod-mt7915e wpad-basic-mbedtls uboot-envtools
 KERNELNAME:=Image dtbs
 
 define Target/Description



From lede-commits at lists.infradead.org  Sun Mar 17 18:53:54 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 17 Mar 2024 21:53:54 -0400
Subject: [openwrt/openwrt]  kernel: modules: package driver for MediaTek T7xx
 PCIe 5G modem
In-Reply-To: <171072683418.2015116.11147615149174927890@git-01.infra.openwrt.org>
References: <171072683418.2015116.11147615149174927890@git-01.infra.openwrt.org>
Message-ID: <mailman.17183.1710726841.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/40fce9dcb89a5b0cb179c82f11913edb004629fc

commit 40fce9dcb89a5b0cb179c82f11913edb004629fc
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 17 22:38:58 2024 +0000

    kernel: modules: package driver for MediaTek T7xx PCIe 5G modem
    
    Build and package driver for MediaTek PCIe 5G WWAN modem T7xx device
    available in Linux 6.1 and 6.6 as kmod-mtk-t7xx.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/kernel/linux/modules/netdevices.mk | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk
index d43866ed9b..af1d8b485e 100644
--- a/package/kernel/linux/modules/netdevices.mk
+++ b/package/kernel/linux/modules/netdevices.mk
@@ -1706,6 +1706,23 @@ endef
 
 $(eval $(call KernelPackage,mhi-wwan-mbim))
 
+
+define KernelPackage/mtk-t7xx
+  SUBMENU:=$(NETWORK_DEVICES_MENU)
+  TITLE:=MediaTek T7xx 5G modem
+  DEPENDS:=@!LINUX_5_15 @PCI_SUPPORT +kmod-wwan
+  KCONFIG:=CONFIG_MTK_T7XX
+  FILES:=$(LINUX_DIR)/drivers/net/wwan/t7xx/mtk_t7xx.ko
+  AUTOLOAD:=$(call AutoProbe,mtk_t7xx)
+endef
+
+define KernelPackage/mtk-t7xx/description
+ Driver for MediaTek PCIe 5G WWAN modem T7xx device
+endef
+
+$(eval $(call KernelPackage,mtk-t7xx))
+
+
 define KernelPackage/atlantic
   SUBMENU:=$(NETWORK_DEVICES_MENU)
   TITLE:=Aquantia AQtion 10Gbps Ethernet NIC



From lede-commits at lists.infradead.org  Tue Mar 19 17:20:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 19 Mar 2024 20:20:27 -0400
Subject: [openwrt/openwrt]  dnsmasq: Backport 2 upstream patches
In-Reply-To: <171089402710.3726730.4609921774903809370@git-01.infra.openwrt.org>
References: <171089402710.3726730.4609921774903809370@git-01.infra.openwrt.org>
Message-ID: <mailman.17859.1710894034.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/28c87d7ecd142a31772572faac079b77163ceeca

commit 28c87d7ecd142a31772572faac079b77163ceeca
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Mon Mar 18 22:39:56 2024 +0100

    dnsmasq: Backport 2 upstream patches
    
    These two patches are fixing minor problems with DNSSEC found shortly
    after the dnsmasq 2.90 release.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/network/services/dnsmasq/Makefile          |  2 +-
 ...spurious-resource-limit-exceeded-messages.patch | 43 ++++++++++++++++++++++
 ...rror-introduced-in-51471cafa5a4fa44d6fe49.patch | 31 ++++++++++++++++
 .../100-remove-old-runtime-kernel-support.patch    |  8 ++--
 .../services/dnsmasq/patches/200-ubus_dns.patch    | 28 +++++---------
 5 files changed, 88 insertions(+), 24 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index 9020278d53..5224e996a4 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=dnsmasq
 PKG_UPSTREAM_VERSION:=2.90
 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
 PKG_SOURCE_URL:=https://thekelleys.org.uk/dnsmasq/
diff --git a/package/network/services/dnsmasq/patches/0001-Fix-spurious-resource-limit-exceeded-messages.patch b/package/network/services/dnsmasq/patches/0001-Fix-spurious-resource-limit-exceeded-messages.patch
new file mode 100644
index 0000000000..f25ee20413
--- /dev/null
+++ b/package/network/services/dnsmasq/patches/0001-Fix-spurious-resource-limit-exceeded-messages.patch
@@ -0,0 +1,43 @@
+From 1ed783b8d7343c42910a61f12a8fc6237eb80417 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon at thekelleys.org.uk>
+Date: Mon, 19 Feb 2024 12:22:43 +0000
+Subject: Fix spurious "resource limit exceeded" messages.
+
+Replies from upstream with a REFUSED rcode can result in
+log messages stating that a resource limit has been exceeded,
+which is not the case.
+
+Thanks to Dominik Derigs and the Pi-hole project for
+spotting this.
+---
+ CHANGELOG     | 5 +++++
+ src/forward.c | 6 +++---
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -1,3 +1,8 @@
++version 2.91
++	Fix spurious "resource limit exceeded messages". Thanks to 
++	Dominik Derigs for the bug report.
++	
++
+ version 2.90
+ 	Fix reversion in --rev-server introduced in 2.88 which
+ 	caused breakage if the prefix length is not exactly divisible
+--- a/src/forward.c
++++ b/src/forward.c
+@@ -937,10 +937,10 @@ static void dnssec_validate(struct frec
+ 	status = dnssec_validate_reply(now, header, plen, daemon->namebuff, daemon->keyname, &forward->class, 
+ 				       !option_bool(OPT_DNSSEC_IGN_NS) && (forward->sentto->flags & SERV_DO_DNSSEC),
+ 				       NULL, NULL, NULL, &orig->validate_counter);
+-    }
+ 
+-  if (STAT_ISEQUAL(status, STAT_ABANDONED))
+-    log_resource = 1;
++      if (STAT_ISEQUAL(status, STAT_ABANDONED))
++	log_resource = 1;
++    }
+   
+   /* Can't validate, as we're missing key data. Put this
+      answer aside, whilst we get that. */     
diff --git a/package/network/services/dnsmasq/patches/0002-PATCH-Fix-error-introduced-in-51471cafa5a4fa44d6fe49.patch b/package/network/services/dnsmasq/patches/0002-PATCH-Fix-error-introduced-in-51471cafa5a4fa44d6fe49.patch
new file mode 100644
index 0000000000..5c50ae8446
--- /dev/null
+++ b/package/network/services/dnsmasq/patches/0002-PATCH-Fix-error-introduced-in-51471cafa5a4fa44d6fe49.patch
@@ -0,0 +1,31 @@
+From ccff85ad72d2f858d9743d40525128e4f62d41a8 Mon Sep 17 00:00:00 2001
+From: renmingshuai <renmingshuai at huawei.com>
+Date: Wed, 21 Feb 2024 00:24:25 +0000
+Subject: [PATCH] Fix error introduced in
+ 51471cafa5a4fa44d6fe490885d9910bd72a5907
+
+Signed-off-by: renmingshuai <renmingshuai at huawei.com>
+---
+ src/dnssec.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/src/dnssec.c
++++ b/src/dnssec.c
+@@ -1547,7 +1547,7 @@ static int prove_non_existence_nsec3(str
+       nsecs[i] = NULL; /* Speculative, will be restored if OK. */
+       
+       if (!(p = skip_name(nsec3p, header, plen, 15)))
+-	return 0; /* bad packet */
++	return DNSSEC_FAIL_BADPACKET; /* bad packet */
+       
+       p += 10; /* type, class, TTL, rdlen */
+       
+@@ -1640,7 +1640,7 @@ static int prove_non_existence_nsec3(str
+   if (!wildname)
+     {
+       if (!(wildcard = strchr(next_closest, '.')) || wildcard == next_closest)
+-	return 0;
++	return DNSSEC_FAIL_NONSEC;
+       
+       wildcard--;
+       *wildcard = '*';
diff --git a/package/network/services/dnsmasq/patches/100-remove-old-runtime-kernel-support.patch b/package/network/services/dnsmasq/patches/100-remove-old-runtime-kernel-support.patch
index 59b8d02c0e..26c1b463b9 100644
--- a/package/network/services/dnsmasq/patches/100-remove-old-runtime-kernel-support.patch
+++ b/package/network/services/dnsmasq/patches/100-remove-old-runtime-kernel-support.patch
@@ -13,7 +13,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
 
 --- a/src/dnsmasq.c
 +++ b/src/dnsmasq.c
-@@ -103,10 +103,6 @@ int main (int argc, char **argv)
+@@ -105,10 +105,6 @@ int main (int argc, char **argv)
    
    read_opts(argc, argv, compile_opts);
   
@@ -26,7 +26,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
  
 --- a/src/dnsmasq.h
 +++ b/src/dnsmasq.h
-@@ -1248,7 +1248,7 @@ extern struct daemon {
+@@ -1277,7 +1277,7 @@ extern struct daemon {
    int inotifyfd;
  #endif
  #if defined(HAVE_LINUX_NETWORK)
@@ -35,7 +35,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
  #elif defined(HAVE_BSD_NETWORK)
    int dhcp_raw_fd, dhcp_icmp_fd, routefd;
  #endif
-@@ -1453,9 +1453,6 @@ int read_write(int fd, unsigned char *pa
+@@ -1491,9 +1491,6 @@ int read_write(int fd, unsigned char *pa
  void close_fds(long max_fd, int spare1, int spare2, int spare3);
  int wildcard_match(const char* wildcard, const char* match);
  int wildcard_matchn(const char* wildcard, const char* match, int num);
@@ -140,7 +140,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
       my_syslog(LOG_ERR, _("failed to update ipset %s: %s"), setname, strerror(errno));
 --- a/src/util.c
 +++ b/src/util.c
-@@ -855,22 +855,3 @@ int wildcard_matchn(const char* wildcard
+@@ -866,22 +866,3 @@ int wildcard_matchn(const char* wildcard
  
    return (!num) || (*wildcard == *match);
  }
diff --git a/package/network/services/dnsmasq/patches/200-ubus_dns.patch b/package/network/services/dnsmasq/patches/200-ubus_dns.patch
index c1694d5551..72acbaeba9 100644
--- a/package/network/services/dnsmasq/patches/200-ubus_dns.patch
+++ b/package/network/services/dnsmasq/patches/200-ubus_dns.patch
@@ -1,8 +1,6 @@
-diff --git a/src/dnsmasq.c b/src/dnsmasq.c
-index 30fb419..776351a 100644
 --- a/src/dnsmasq.c
 +++ b/src/dnsmasq.c
-@@ -2025,6 +2025,10 @@ static void check_dns_listeners(time_t now)
+@@ -2021,6 +2021,10 @@ static void check_dns_listeners(time_t n
  		  daemon->pipe_to_parent = pipefd[1];
  		}
  
@@ -13,11 +11,9 @@ index 30fb419..776351a 100644
  	      /* start with no upstream connections. */
  	      for (s = daemon->servers; s; s = s->next)
  		 s->tcpfd = -1; 
-diff --git a/src/dnsmasq.h b/src/dnsmasq.h
-index e455c3f..c84ba48 100644
 --- a/src/dnsmasq.h
 +++ b/src/dnsmasq.h
-@@ -1673,14 +1673,26 @@ void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname);
+@@ -1670,14 +1670,26 @@ void emit_dbus_signal(int action, struct
  
  /* ubus.c */
  #ifdef HAVE_UBUS
@@ -44,11 +40,9 @@ index e455c3f..c84ba48 100644
  #endif
  
  /* ipset.c */
-diff --git a/src/forward.c b/src/forward.c
-index 32f37e4..3d28963 100644
 --- a/src/forward.c
 +++ b/src/forward.c
-@@ -803,7 +803,7 @@ static size_t process_reply(struct dns_header *header, time_t now, struct server
+@@ -803,7 +803,7 @@ static size_t process_reply(struct dns_h
  	  cache_secure = 0;
  	}
        
@@ -57,8 +51,6 @@ index 32f37e4..3d28963 100644
  	cache_secure = 0;
        
        /* check_for_bogus_wildcard() does it's own caching, so
-diff --git a/src/rfc1035.c b/src/rfc1035.c
-index 387d894..7bf7967 100644
 --- a/src/rfc1035.c
 +++ b/src/rfc1035.c
 @@ -13,8 +13,10 @@
@@ -73,7 +65,7 @@ index 387d894..7bf7967 100644
  
  int extract_name(struct dns_header *header, size_t plen, unsigned char **pp, 
  		 char *name, int isExtract, int extrabytes)
-@@ -384,10 +386,65 @@ static int private_net6(struct in6_addr *a, int ban_localhost)
+@@ -384,10 +386,65 @@ static int private_net6(struct in6_addr
      ((u32 *)a)[0] == htonl(0x20010db8); /* RFC 6303 4.6 */
  }
  
@@ -140,7 +132,7 @@ index 387d894..7bf7967 100644
    int done = 0;
    
    if (!(p = skip_questions(header, qlen)))
-@@ -404,7 +461,7 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
+@@ -404,7 +461,7 @@ int do_doctor(struct dns_header *header,
        
        GETSHORT(qtype, p); 
        GETSHORT(qclass, p);
@@ -149,7 +141,7 @@ index 387d894..7bf7967 100644
        GETSHORT(rdlen, p);
        
        if (qclass == C_IN && qtype == T_A)
-@@ -415,6 +472,9 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
+@@ -415,6 +472,9 @@ int do_doctor(struct dns_header *header,
  	  if (!CHECK_LEN(header, p, qlen, INADDRSZ))
  	    return done;
  	  
@@ -159,7 +151,7 @@ index 387d894..7bf7967 100644
  	  /* alignment */
  	  memcpy(&addr.addr4, p, INADDRSZ);
  	  
-@@ -444,6 +504,14 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
+@@ -444,6 +504,14 @@ int do_doctor(struct dns_header *header,
  	      break;
  	    }
  	}
@@ -174,11 +166,9 @@ index 387d894..7bf7967 100644
        
        if (!ADD_RDLEN(header, p, qlen, rdlen))
  	 return done; /* bad packet */
-diff --git a/src/ubus.c b/src/ubus.c
-index a5758e7..f2a75a8 100644
 --- a/src/ubus.c
 +++ b/src/ubus.c
-@@ -72,6 +72,13 @@ static struct ubus_object ubus_object = {
+@@ -72,6 +72,13 @@ static struct ubus_object ubus_object =
    .subscribe_cb = ubus_subscribe_cb,
  };
  
@@ -192,7 +182,7 @@ index a5758e7..f2a75a8 100644
  static void ubus_subscribe_cb(struct ubus_context *ctx, struct ubus_object *obj)
  {
    (void)ctx;
-@@ -105,13 +112,21 @@ static void ubus_disconnect_cb(struct ubus_context *ubus)
+@@ -105,13 +112,21 @@ static void ubus_disconnect_cb(struct ub
  char *ubus_init()
  {
    struct ubus_context *ubus = NULL;



From lede-commits at lists.infradead.org  Tue Mar 19 17:22:40 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 19 Mar 2024 20:22:40 -0400
Subject: [openwrt/openwrt]  dnsmasq: Backport 2 upstream patches
In-Reply-To: <171089416079.3731848.11028418628505505691@git-01.infra.openwrt.org>
References: <171089416079.3731848.11028418628505505691@git-01.infra.openwrt.org>
Message-ID: <mailman.17860.1710894165.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/03a3a729ec96b5c31cad5f03cd2c3d1a0b4c471f

commit 03a3a729ec96b5c31cad5f03cd2c3d1a0b4c471f
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Mon Mar 18 22:39:56 2024 +0100

    dnsmasq: Backport 2 upstream patches
    
    These two patches are fixing minor problems with DNSSEC found shortly
    after the dnsmasq 2.90 release.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    (cherry picked from commit 28c87d7ecd142a31772572faac079b77163ceeca)
---
 package/network/services/dnsmasq/Makefile          |  2 +-
 ...spurious-resource-limit-exceeded-messages.patch | 43 ++++++++++++++++++++++
 ...rror-introduced-in-51471cafa5a4fa44d6fe49.patch | 31 ++++++++++++++++
 .../100-remove-old-runtime-kernel-support.patch    |  8 ++--
 .../services/dnsmasq/patches/200-ubus_dns.patch    | 28 +++++---------
 5 files changed, 88 insertions(+), 24 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index 9020278d53..5224e996a4 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=dnsmasq
 PKG_UPSTREAM_VERSION:=2.90
 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
 PKG_SOURCE_URL:=https://thekelleys.org.uk/dnsmasq/
diff --git a/package/network/services/dnsmasq/patches/0001-Fix-spurious-resource-limit-exceeded-messages.patch b/package/network/services/dnsmasq/patches/0001-Fix-spurious-resource-limit-exceeded-messages.patch
new file mode 100644
index 0000000000..f25ee20413
--- /dev/null
+++ b/package/network/services/dnsmasq/patches/0001-Fix-spurious-resource-limit-exceeded-messages.patch
@@ -0,0 +1,43 @@
+From 1ed783b8d7343c42910a61f12a8fc6237eb80417 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon at thekelleys.org.uk>
+Date: Mon, 19 Feb 2024 12:22:43 +0000
+Subject: Fix spurious "resource limit exceeded" messages.
+
+Replies from upstream with a REFUSED rcode can result in
+log messages stating that a resource limit has been exceeded,
+which is not the case.
+
+Thanks to Dominik Derigs and the Pi-hole project for
+spotting this.
+---
+ CHANGELOG     | 5 +++++
+ src/forward.c | 6 +++---
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -1,3 +1,8 @@
++version 2.91
++	Fix spurious "resource limit exceeded messages". Thanks to 
++	Dominik Derigs for the bug report.
++	
++
+ version 2.90
+ 	Fix reversion in --rev-server introduced in 2.88 which
+ 	caused breakage if the prefix length is not exactly divisible
+--- a/src/forward.c
++++ b/src/forward.c
+@@ -937,10 +937,10 @@ static void dnssec_validate(struct frec
+ 	status = dnssec_validate_reply(now, header, plen, daemon->namebuff, daemon->keyname, &forward->class, 
+ 				       !option_bool(OPT_DNSSEC_IGN_NS) && (forward->sentto->flags & SERV_DO_DNSSEC),
+ 				       NULL, NULL, NULL, &orig->validate_counter);
+-    }
+ 
+-  if (STAT_ISEQUAL(status, STAT_ABANDONED))
+-    log_resource = 1;
++      if (STAT_ISEQUAL(status, STAT_ABANDONED))
++	log_resource = 1;
++    }
+   
+   /* Can't validate, as we're missing key data. Put this
+      answer aside, whilst we get that. */     
diff --git a/package/network/services/dnsmasq/patches/0002-PATCH-Fix-error-introduced-in-51471cafa5a4fa44d6fe49.patch b/package/network/services/dnsmasq/patches/0002-PATCH-Fix-error-introduced-in-51471cafa5a4fa44d6fe49.patch
new file mode 100644
index 0000000000..5c50ae8446
--- /dev/null
+++ b/package/network/services/dnsmasq/patches/0002-PATCH-Fix-error-introduced-in-51471cafa5a4fa44d6fe49.patch
@@ -0,0 +1,31 @@
+From ccff85ad72d2f858d9743d40525128e4f62d41a8 Mon Sep 17 00:00:00 2001
+From: renmingshuai <renmingshuai at huawei.com>
+Date: Wed, 21 Feb 2024 00:24:25 +0000
+Subject: [PATCH] Fix error introduced in
+ 51471cafa5a4fa44d6fe490885d9910bd72a5907
+
+Signed-off-by: renmingshuai <renmingshuai at huawei.com>
+---
+ src/dnssec.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/src/dnssec.c
++++ b/src/dnssec.c
+@@ -1547,7 +1547,7 @@ static int prove_non_existence_nsec3(str
+       nsecs[i] = NULL; /* Speculative, will be restored if OK. */
+       
+       if (!(p = skip_name(nsec3p, header, plen, 15)))
+-	return 0; /* bad packet */
++	return DNSSEC_FAIL_BADPACKET; /* bad packet */
+       
+       p += 10; /* type, class, TTL, rdlen */
+       
+@@ -1640,7 +1640,7 @@ static int prove_non_existence_nsec3(str
+   if (!wildname)
+     {
+       if (!(wildcard = strchr(next_closest, '.')) || wildcard == next_closest)
+-	return 0;
++	return DNSSEC_FAIL_NONSEC;
+       
+       wildcard--;
+       *wildcard = '*';
diff --git a/package/network/services/dnsmasq/patches/100-remove-old-runtime-kernel-support.patch b/package/network/services/dnsmasq/patches/100-remove-old-runtime-kernel-support.patch
index 59b8d02c0e..26c1b463b9 100644
--- a/package/network/services/dnsmasq/patches/100-remove-old-runtime-kernel-support.patch
+++ b/package/network/services/dnsmasq/patches/100-remove-old-runtime-kernel-support.patch
@@ -13,7 +13,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
 
 --- a/src/dnsmasq.c
 +++ b/src/dnsmasq.c
-@@ -103,10 +103,6 @@ int main (int argc, char **argv)
+@@ -105,10 +105,6 @@ int main (int argc, char **argv)
    
    read_opts(argc, argv, compile_opts);
   
@@ -26,7 +26,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
  
 --- a/src/dnsmasq.h
 +++ b/src/dnsmasq.h
-@@ -1248,7 +1248,7 @@ extern struct daemon {
+@@ -1277,7 +1277,7 @@ extern struct daemon {
    int inotifyfd;
  #endif
  #if defined(HAVE_LINUX_NETWORK)
@@ -35,7 +35,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
  #elif defined(HAVE_BSD_NETWORK)
    int dhcp_raw_fd, dhcp_icmp_fd, routefd;
  #endif
-@@ -1453,9 +1453,6 @@ int read_write(int fd, unsigned char *pa
+@@ -1491,9 +1491,6 @@ int read_write(int fd, unsigned char *pa
  void close_fds(long max_fd, int spare1, int spare2, int spare3);
  int wildcard_match(const char* wildcard, const char* match);
  int wildcard_matchn(const char* wildcard, const char* match, int num);
@@ -140,7 +140,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir at darbyshire-bryant.me.uk>
       my_syslog(LOG_ERR, _("failed to update ipset %s: %s"), setname, strerror(errno));
 --- a/src/util.c
 +++ b/src/util.c
-@@ -855,22 +855,3 @@ int wildcard_matchn(const char* wildcard
+@@ -866,22 +866,3 @@ int wildcard_matchn(const char* wildcard
  
    return (!num) || (*wildcard == *match);
  }
diff --git a/package/network/services/dnsmasq/patches/200-ubus_dns.patch b/package/network/services/dnsmasq/patches/200-ubus_dns.patch
index c1694d5551..72acbaeba9 100644
--- a/package/network/services/dnsmasq/patches/200-ubus_dns.patch
+++ b/package/network/services/dnsmasq/patches/200-ubus_dns.patch
@@ -1,8 +1,6 @@
-diff --git a/src/dnsmasq.c b/src/dnsmasq.c
-index 30fb419..776351a 100644
 --- a/src/dnsmasq.c
 +++ b/src/dnsmasq.c
-@@ -2025,6 +2025,10 @@ static void check_dns_listeners(time_t now)
+@@ -2021,6 +2021,10 @@ static void check_dns_listeners(time_t n
  		  daemon->pipe_to_parent = pipefd[1];
  		}
  
@@ -13,11 +11,9 @@ index 30fb419..776351a 100644
  	      /* start with no upstream connections. */
  	      for (s = daemon->servers; s; s = s->next)
  		 s->tcpfd = -1; 
-diff --git a/src/dnsmasq.h b/src/dnsmasq.h
-index e455c3f..c84ba48 100644
 --- a/src/dnsmasq.h
 +++ b/src/dnsmasq.h
-@@ -1673,14 +1673,26 @@ void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname);
+@@ -1670,14 +1670,26 @@ void emit_dbus_signal(int action, struct
  
  /* ubus.c */
  #ifdef HAVE_UBUS
@@ -44,11 +40,9 @@ index e455c3f..c84ba48 100644
  #endif
  
  /* ipset.c */
-diff --git a/src/forward.c b/src/forward.c
-index 32f37e4..3d28963 100644
 --- a/src/forward.c
 +++ b/src/forward.c
-@@ -803,7 +803,7 @@ static size_t process_reply(struct dns_header *header, time_t now, struct server
+@@ -803,7 +803,7 @@ static size_t process_reply(struct dns_h
  	  cache_secure = 0;
  	}
        
@@ -57,8 +51,6 @@ index 32f37e4..3d28963 100644
  	cache_secure = 0;
        
        /* check_for_bogus_wildcard() does it's own caching, so
-diff --git a/src/rfc1035.c b/src/rfc1035.c
-index 387d894..7bf7967 100644
 --- a/src/rfc1035.c
 +++ b/src/rfc1035.c
 @@ -13,8 +13,10 @@
@@ -73,7 +65,7 @@ index 387d894..7bf7967 100644
  
  int extract_name(struct dns_header *header, size_t plen, unsigned char **pp, 
  		 char *name, int isExtract, int extrabytes)
-@@ -384,10 +386,65 @@ static int private_net6(struct in6_addr *a, int ban_localhost)
+@@ -384,10 +386,65 @@ static int private_net6(struct in6_addr
      ((u32 *)a)[0] == htonl(0x20010db8); /* RFC 6303 4.6 */
  }
  
@@ -140,7 +132,7 @@ index 387d894..7bf7967 100644
    int done = 0;
    
    if (!(p = skip_questions(header, qlen)))
-@@ -404,7 +461,7 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
+@@ -404,7 +461,7 @@ int do_doctor(struct dns_header *header,
        
        GETSHORT(qtype, p); 
        GETSHORT(qclass, p);
@@ -149,7 +141,7 @@ index 387d894..7bf7967 100644
        GETSHORT(rdlen, p);
        
        if (qclass == C_IN && qtype == T_A)
-@@ -415,6 +472,9 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
+@@ -415,6 +472,9 @@ int do_doctor(struct dns_header *header,
  	  if (!CHECK_LEN(header, p, qlen, INADDRSZ))
  	    return done;
  	  
@@ -159,7 +151,7 @@ index 387d894..7bf7967 100644
  	  /* alignment */
  	  memcpy(&addr.addr4, p, INADDRSZ);
  	  
-@@ -444,6 +504,14 @@ int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
+@@ -444,6 +504,14 @@ int do_doctor(struct dns_header *header,
  	      break;
  	    }
  	}
@@ -174,11 +166,9 @@ index 387d894..7bf7967 100644
        
        if (!ADD_RDLEN(header, p, qlen, rdlen))
  	 return done; /* bad packet */
-diff --git a/src/ubus.c b/src/ubus.c
-index a5758e7..f2a75a8 100644
 --- a/src/ubus.c
 +++ b/src/ubus.c
-@@ -72,6 +72,13 @@ static struct ubus_object ubus_object = {
+@@ -72,6 +72,13 @@ static struct ubus_object ubus_object =
    .subscribe_cb = ubus_subscribe_cb,
  };
  
@@ -192,7 +182,7 @@ index a5758e7..f2a75a8 100644
  static void ubus_subscribe_cb(struct ubus_context *ctx, struct ubus_object *obj)
  {
    (void)ctx;
-@@ -105,13 +112,21 @@ static void ubus_disconnect_cb(struct ubus_context *ubus)
+@@ -105,13 +112,21 @@ static void ubus_disconnect_cb(struct ub
  char *ubus_init()
  {
    struct ubus_context *ubus = NULL;



From lede-commits at lists.infradead.org  Wed Mar 20 04:32:19 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 20 Mar 2024 07:32:19 -0400
Subject: [openwrt/openwrt]  ramips: mt7621: disable Edgerouter X image
 generation
In-Reply-To: <171093433946.1072549.10577340521665954072@git-01.infra.openwrt.org>
References: <171093433946.1072549.10577340521665954072@git-01.infra.openwrt.org>
Message-ID: <mailman.18023.1710934344.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/362f9c41a4690964a77afef5216f6e23bc265611

commit 362f9c41a4690964a77afef5216f6e23bc265611
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Mar 20 11:38:58 2024 +0100

    ramips: mt7621: disable Edgerouter X image generation
    
    With kernel 6.1 image size is too large for Edgerouter X current size
    limit and is causing the buildbots to fail building so images for other
    devices are not updated as well.
    
    So, disable building Edgerouter X images until a workaround is found.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/ramips/image/mt7621.mk | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 5fd95463c8..fb8cfce589 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -2504,6 +2504,7 @@ define Device/ubnt_edgerouter_common
 	ubnt-erx-factory-image $(KDIR)/tmp/$$(KERNEL_INITRAMFS_PREFIX)-factory.tar
   IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
   DEVICE_PACKAGES += -wpad-basic-mbedtls -uboot-envtools
+  DEFAULT := n
 endef
 
 define Device/ubnt_edgerouter-x



From lede-commits at lists.infradead.org  Wed Mar 20 09:32:51 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 20 Mar 2024 12:32:51 -0400
Subject: [openwrt/openwrt]  mediatek: mt7622: linksys-e8450: set driving
 strength for SPI-NAND
In-Reply-To: <171095237106.1767207.5541086125044056651@git-01.infra.openwrt.org>
References: <171095237106.1767207.5541086125044056651@git-01.infra.openwrt.org>
Message-ID: <mailman.18081.1710952376.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/a8f51096ddaf97e9e2b9a837368056099a593c41

commit a8f51096ddaf97e9e2b9a837368056099a593c41
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sun Mar 10 23:14:33 2024 +0000

    mediatek: mt7622: linksys-e8450: set driving strength for SPI-NAND
    
    Set 12mA driving strength for SPI-NAND pins like the stock firmware's
    bootloader does as well.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
    (cherry picked from commit 45a2109353fa18701b65aefe2323ec06391da543)
---
 target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi b/target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi
index abac02a72d..360a1711f9 100644
--- a/target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi
+++ b/target/linux/mediatek/dts/mt7622-linksys-e8450.dtsi
@@ -1,8 +1,9 @@
 // SPDX-License-Identifier: (GPL-2.0-only OR MIT)
 
 /dts-v1/;
-#include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/mt65xx.h>
 
 #include "mt7622.dtsi"
 #include "mt6380.dtsi"
@@ -275,6 +276,11 @@
 			function = "flash";
 			groups = "snfi";
 		};
+
+		conf {
+			groups = "snfi";
+			drive-strength = <MTK_DRIVE_12mA>;
+		};
 	};
 
 	spic0_pins: spic0-pins {



From lede-commits at lists.infradead.org  Wed Mar 20 12:24:11 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 20 Mar 2024 15:24:11 -0400
Subject: [openwrt/openwrt]  umdns: add /etc/umdns/ to mount namespace jail
In-Reply-To: <171096265141.2177763.6133644148406884130@git-01.infra.openwrt.org>
References: <171096265141.2177763.6133644148406884130@git-01.infra.openwrt.org>
Message-ID: <mailman.18115.1710962657.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/330d67ecc0121bc83f1b1a616e92aacd4760b499

commit 330d67ecc0121bc83f1b1a616e92aacd4760b499
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Mar 20 19:22:46 2024 +0000

    umdns: add /etc/umdns/ to mount namespace jail
    
    Make sure /etc/umdns/ is accessiable for the umdns process if it
    exists and umdns is run with umdns. at umdns[0].jail='1'.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/network/services/umdns/files/umdns.init | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/package/network/services/umdns/files/umdns.init b/package/network/services/umdns/files/umdns.init
index 7f25595f24..e9a2c05e09 100644
--- a/package/network/services/umdns/files/umdns.init
+++ b/package/network/services/umdns/files/umdns.init
@@ -42,7 +42,10 @@ start_service() {
 	done
 	procd_add_raw_trigger "instance.update" 5000 "/bin/ubus" "call" "umdns" "reload"
 	procd_close_trigger
-	[ "$(uci -q get umdns. at umdns[-1].jail)" = 1 ] && procd_add_jail umdns ubus log
+	[ "$(uci get umdns. at umdns[-1].jail)" = 1 ] && {
+		procd_add_jail umdns ubus log
+		[ -d /etc/umdns ] && procd_add_jail_mount "/etc/umdns"
+	}
 	procd_close_instance
 }
 



From lede-commits at lists.infradead.org  Wed Mar 20 12:43:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 20 Mar 2024 15:43:21 -0400
Subject: [openwrt/openwrt]  umdns: update to git HEAD
In-Reply-To: <171096380182.2220167.14202685345094182188@git-01.infra.openwrt.org>
References: <171096380182.2220167.14202685345094182188@git-01.infra.openwrt.org>
Message-ID: <mailman.18116.1710963806.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5d34c835a179405ff9802839f5e3e80ccc3b8d43

commit 5d34c835a179405ff9802839f5e3e80ccc3b8d43
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Mar 20 19:42:46 2024 +0000

    umdns: update to git HEAD
    
     e91ed40 ubus: assume that the service iface can be NULL
     4094a3c interface: remove unused peer field
     8a0c9db interface: add missing cache cleanup on interface free
     3b341f4 add the ability to announce additional hostnames
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/network/services/umdns/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/network/services/umdns/Makefile b/package/network/services/umdns/Makefile
index 5689a6d78d..95997eaba5 100644
--- a/package/network/services/umdns/Makefile
+++ b/package/network/services/umdns/Makefile
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/mdnsd.git
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2023-11-21
-PKG_SOURCE_VERSION:=b1e023eda3584da4a5dfbc33016839f977a02040
-PKG_MIRROR_HASH:=e0619afc3b8e1b8a627b35bbe0734746303db02e6d62fd8a3ff047d4fbaa0522
+PKG_SOURCE_DATE:=2024-01-08
+PKG_SOURCE_VERSION:=e91ed406ecebb4bc08c346929e25f1b819c19edd
+PKG_MIRROR_HASH:=d5b94ff96dd16d1df3281621c66b3974982d9ee96f52b8400504e9acbc3d9de4
 
 PKG_MAINTAINER:=John Crispin <john at phrozen.org>
 PKG_LICENSE:=LGPL-2.1



From lede-commits at lists.infradead.org  Wed Mar 20 16:44:26 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 20 Mar 2024 19:44:26 -0400
Subject: [openwrt/openwrt]  umdns: fix PKG_MIRROR_HASH
In-Reply-To: <171097826628.2769609.718127741359482697@git-01.infra.openwrt.org>
References: <171097826628.2769609.718127741359482697@git-01.infra.openwrt.org>
Message-ID: <mailman.18135.1710978271.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/56448cc8c18db453436264cb1b9320640e84d8e1

commit 56448cc8c18db453436264cb1b9320640e84d8e1
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Mar 20 23:43:05 2024 +0000

    umdns: fix PKG_MIRROR_HASH
    
    PKG_MIRROR_HASH was accidentally generated with already APK-adapted
    version string in the filename. That can't work (yet). Regenerate and
    hash the file with the currently used version scheme to fix that.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/network/services/umdns/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/umdns/Makefile b/package/network/services/umdns/Makefile
index 95997eaba5..ab6bf290dc 100644
--- a/package/network/services/umdns/Makefile
+++ b/package/network/services/umdns/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/mdnsd.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2024-01-08
 PKG_SOURCE_VERSION:=e91ed406ecebb4bc08c346929e25f1b819c19edd
-PKG_MIRROR_HASH:=d5b94ff96dd16d1df3281621c66b3974982d9ee96f52b8400504e9acbc3d9de4
+PKG_MIRROR_HASH:=6568409c5facaa37dc27aeca67dc798b822c2e2897d6e067b4c61e3e99c1072c
 
 PKG_MAINTAINER:=John Crispin <john at phrozen.org>
 PKG_LICENSE:=LGPL-2.1



From lede-commits at lists.infradead.org  Wed Mar 20 16:44:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Wed, 20 Mar 2024 19:44:27 -0400
Subject: [openwrt/openwrt]  glibc: don't ship /etc/localtime -> /tmp/localtime
 symlink
In-Reply-To: <171097826628.2769609.718127741359482697@git-01.infra.openwrt.org>
References: <171097826628.2769609.718127741359482697@git-01.infra.openwrt.org>
Message-ID: <mailman.18136.1710978271.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5305dbbe9fb41d3259051bc039f26ca23fad1cd8

commit 5305dbbe9fb41d3259051bc039f26ca23fad1cd8
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Wed Mar 20 22:56:00 2024 +0000

    glibc: don't ship /etc/localtime -> /tmp/localtime symlink
    
    The symlink is already part of the base-files package. We don't need
    to ship it with glibc again.
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 package/libs/toolchain/Makefile | 1 -
 1 file changed, 1 deletion(-)

diff --git a/package/libs/toolchain/Makefile b/package/libs/toolchain/Makefile
index ea36af5da4..4f71d31b28 100644
--- a/package/libs/toolchain/Makefile
+++ b/package/libs/toolchain/Makefile
@@ -519,7 +519,6 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
   define Package/glibc/install
 	$(CP) ./glibc-files/* $(1)/
 	rm -f $(1)/etc/localtime
-	$(LN) /tmp/localtime $(1)/etc/localtime
 	$(INSTALL_DIR) $(1)/lib
 	$(CP) \
 		$(TOOLCHAIN_DIR)/lib/ld*.so.* \



From lede-commits at lists.infradead.org  Thu Mar 21 01:57:14 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 21 Mar 2024 04:57:14 -0400
Subject: [openwrt/openwrt]  mediatek: mt7622: add a second u-boot for
 redmi-ax6s
In-Reply-To: <171101143259.3966518.11591833499519708522@git-01.infra.openwrt.org>
References: <171101143259.3966518.11591833499519708522@git-01.infra.openwrt.org>
Message-ID: <mailman.18222.1711011440.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a6991fc7d251f7ab65a588546e22abfd4f8ce472

commit a6991fc7d251f7ab65a588546e22abfd4f8ce472
Author: Chuanhong Guo <gch981213 at gmail.com>
AuthorDate: Sat Mar 2 21:12:54 2024 +0800

    mediatek: mt7622: add a second u-boot for redmi-ax6s
    
    The vendor u-boot knows nothing about UBI, and we used to have a
    fixed-size kernel partition for vendor u-boot and UBI for rootfs.
    However, that fixed partition becomes too small eventually, and
    expanding it requires complicated procedure.
    
    This commit changed the flash layout and added a second u-boot
    where the kernel supposed to be.
    Now the vendor u-boot chainloads our mainline u-boot, and our
    u-boot reads kernel+rootfs from UBI, verifies it, and boot
    into OpenWrt.
    
    There are two possible ways to convert from the old fw:
    Flash the factory image using mtd (provided by @rany2):
    
    mount -o remount,ro /
    mount -o remount,ro /overlay
    cd /tmp
    dd if=factory.bin bs=1M count=4 | mtd write - kernel
    dd if=factory.bin bs=1M skip=4 | mtd -r write - ubi
    
    Or, flash the 2nd u-boot via mtd and upload the firmware
    to the 2nd u-boot using tftp:
    
    1. prepare a tftp server at 192.168.1.254 to serve the
       sysupgrade image:
       openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-sysupgrade.itb
    2. upload the ubi-loader.itb to OpenWrt /tmp, and flash it to
       the old kernel partition:
       mtd -r write openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-ubi-loader.itb
    3. The router should reboot and flash the sysupgrade image via TFTP.
    
    Procedure for flashing from vendor firmware shouldn't change.
    
    Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
---
 .../dts/mt7622-xiaomi-redmi-router-ax6s.dts        | 23 +++++++++------
 target/linux/mediatek/image/mt7622.mk              | 33 ++++++++++++++++++----
 .../etc/uci-defaults/05_fix-compat-version         |  3 +-
 .../mt7622/base-files/lib/upgrade/platform.sh      |  9 +++---
 4 files changed, 48 insertions(+), 20 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7622-xiaomi-redmi-router-ax6s.dts b/target/linux/mediatek/dts/mt7622-xiaomi-redmi-router-ax6s.dts
index 01365a278d..c0db31fd3a 100644
--- a/target/linux/mediatek/dts/mt7622-xiaomi-redmi-router-ax6s.dts
+++ b/target/linux/mediatek/dts/mt7622-xiaomi-redmi-router-ax6s.dts
@@ -22,7 +22,8 @@
 
 	chosen {
 		stdout-path = "serial0:115200n8";
-		bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8 swiotlb=512";
+		rootdisk = <&ubi_rootfs>;
+		bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 ubi.block=0,fit root=/dev/fit0";
 	};
 
 	memory {
@@ -230,7 +231,7 @@
 
 		mediatek,bmt-v2;
 		mediatek,bmt-table-size = <0x1000>;
-		mediatek,bmt-remap-range = <0x0 0x6c0000>;
+		mediatek,bmt-remap-range = <0x0 0x340000>;
 
 		partitions {
 			compatible = "fixed-partitions";
@@ -295,12 +296,9 @@
 				read-only;
 			};
 
-			/* Shrunk and renamed from "firmware"
-			 * as to not break luci size checks
-			 */
 			partition at 2c0000 {
-				label = "kernel";
-				reg = <0x2c0000 0x400000>;
+				label = "ubi-loader";
+				reg = <0x2c0000 0x80000>;
 			};
 
 			/* ubi partition is the result of squashing
@@ -310,9 +308,16 @@
 			 * - overlay
 			 * - obr
 			 */
-			partition at 6c0000 {
+			partition at 340000 {
 				label = "ubi";
-				reg = <0x6C0000 0x6f00000>;
+				reg = <0x340000 0x7280000>;
+				compatible = "linux,ubi";
+
+				volumes {
+					ubi_rootfs: ubi-volume-fit {
+						volname = "fit";
+					};
+				};
 			};
 		};
 	};
diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk
index ab2bde0836..096a923457 100644
--- a/target/linux/mediatek/image/mt7622.mk
+++ b/target/linux/mediatek/image/mt7622.mk
@@ -37,6 +37,21 @@ define Build/bl31-uboot
 	cat $(STAGING_DIR_IMAGE)/mt7622_$1-u-boot.fip >> $@
 endef
 
+define Build/uboot-bin
+	cat $(STAGING_DIR_IMAGE)/mt7622_$1-u-boot.bin >> $@
+endef
+
+define Build/uboot-fit
+	$(TOPDIR)/scripts/mkits.sh \
+		-D $(DEVICE_NAME) -o $@.its -k $@ \
+		-C $(word 1,$(1)) \
+		-a 0x41e00000 -e 0x41e00000 \
+		-c "config-1" \
+		-A $(LINUX_KARCH) -v u-boot
+	PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
+	@mv $@.new $@
+endef
+
 # Append header to a D-Link M32/R32 Kernel 1 partition
 define Build/m32-r32-recovery-header-kernel1
 	$(eval header_start=$(word 1,$(1)))
@@ -458,12 +473,20 @@ define Device/xiaomi_redmi-router-ax6s
   BOARD_NAME := xiaomi,redmi-router-ax6s
   DEVICE_PACKAGES := kmod-mt7915-firmware
   UBINIZE_OPTS := -E 5
-  IMAGES += factory.bin
   BLOCKSIZE := 128k
   PAGESIZE := 2048
-  KERNEL_SIZE := 4096k
+  KERNEL := kernel-bin | gzip
+  KERNEL_INITRAMFS := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
   KERNEL_INITRAMFS_SUFFIX := -recovery.itb
-  IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi
-  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  IMAGES := sysupgrade.itb
+  IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
+  ARTIFACTS := ubi-loader.itb
+  ARTIFACT/ubi-loader.itb := uboot-bin xiaomi_redmi-router-ax6s-ubi-loader | lzma | uboot-fit lzma
+ifneq ($(CONFIG_TARGET_ROOTFS_SQUASHFS),)
+  ARTIFACTS += factory.bin
+  ARTIFACT/factory.bin := uboot-bin xiaomi_redmi-router-ax6s-ubi-loader | lzma | uboot-fit lzma | pad-to 512k | ubinize-image fit squashfs-sysupgrade.itb
+endif
+  DEVICE_COMPAT_VERSION := 2.0
+  DEVICE_COMPAT_MESSAGE := Flash layout changes require a manual reinstall using factory.bin.
 endef
-# TARGET_DEVICES += xiaomi_redmi-router-ax6s
+TARGET_DEVICES += xiaomi_redmi-router-ax6s
diff --git a/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version b/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version
index 6309728e4b..dd224f3d8c 100644
--- a/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version
+++ b/target/linux/mediatek/mt7622/base-files/etc/uci-defaults/05_fix-compat-version
@@ -9,7 +9,8 @@ case "$(board_name)" in
 	uci set system. at system[0].compat_version="1.1"
 	uci commit system
 	;;
-	linksys,e8450-ubi)
+	linksys,e8450-ubi|\
+	xiaomi,redmi-router-ax6s)
 	uci set system. at system[0].compat_version="2.0"
 	uci commit system
 	;;
diff --git a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
index 236e8fdfb0..59375ccd9b 100755
--- a/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh
@@ -10,7 +10,8 @@ platform_do_upgrade() {
 	linksys,e8450-ubi|\
 	ubnt,unifi-6-lr-v1-ubootmod|\
 	ubnt,unifi-6-lr-v2-ubootmod|\
-	ubnt,unifi-6-lr-v3-ubootmod)
+	ubnt,unifi-6-lr-v3-ubootmod|\
+	xiaomi,redmi-router-ax6s)
 		[ -e /dev/fit0 ] && fitblk /dev/fit0
 		[ -e /dev/fitrw ] && fitblk /dev/fitrw
 		bootdev="$(fitblk_get_bootdev)"
@@ -48,8 +49,7 @@ platform_do_upgrade() {
 	elecom,wrc-x3200gst3|\
 	mediatek,mt7622-rfb1-ubi|\
 	netgear,wax206|\
-	totolink,a8000ru|\
-	xiaomi,redmi-router-ax6s)
+	totolink,a8000ru)
 		nand_do_upgrade "$1"
 		;;
 	linksys,e8450)
@@ -84,8 +84,7 @@ platform_check_image() {
 	elecom,wrc-x3200gst3|\
 	mediatek,mt7622-rfb1-ubi|\
 	netgear,wax206|\
-	totolink,a8000ru|\
-	xiaomi,redmi-router-ax6s)
+	totolink,a8000ru)
 		nand_do_platform_check "$board" "$1"
 		return $?
 		;;



From lede-commits at lists.infradead.org  Thu Mar 21 01:57:13 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 21 Mar 2024 04:57:13 -0400
Subject: [openwrt/openwrt]  uboot-mediatek: add support for GD5F1GQ5UE
In-Reply-To: <171101143259.3966518.11591833499519708522@git-01.infra.openwrt.org>
References: <171101143259.3966518.11591833499519708522@git-01.infra.openwrt.org>
Message-ID: <mailman.18223.1711011440.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ec8c3dc701cfd53e1ddc9817041e710fb4bbb0f3

commit ec8c3dc701cfd53e1ddc9817041e710fb4bbb0f3
Author: Chuanhong Guo <gch981213 at gmail.com>
AuthorDate: Sat Mar 9 12:06:31 2024 +0800

    uboot-mediatek: add support for GD5F1GQ5UE
    
    This patch adds support for GigaDevice GD5F1GQ5UExxG to the
    mtk-snfi driver in u-boot.
    
    Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
---
 ...00-02-drivers-mtd-add-support-for-MediaTek-SPI-NAND-flash-.patch | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/package/boot/uboot-mediatek/patches/100-02-drivers-mtd-add-support-for-MediaTek-SPI-NAND-flash-.patch b/package/boot/uboot-mediatek/patches/100-02-drivers-mtd-add-support-for-MediaTek-SPI-NAND-flash-.patch
index 05138d984e..e75251d172 100644
--- a/package/boot/uboot-mediatek/patches/100-02-drivers-mtd-add-support-for-MediaTek-SPI-NAND-flash-.patch
+++ b/package/boot/uboot-mediatek/patches/100-02-drivers-mtd-add-support-for-MediaTek-SPI-NAND-flash-.patch
@@ -783,7 +783,7 @@ Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
 +}
 --- /dev/null
 +++ b/drivers/mtd/mtk-snand/mtk-snand-ids.c
-@@ -0,0 +1,515 @@
+@@ -0,0 +1,519 @@
 +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 +/*
 + * Copyright (C) 2020 MediaTek Inc. All Rights Reserved.
@@ -901,6 +901,10 @@ Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
 +		   SNAND_MEMORG_1G_2K_64,
 +		   &snand_cap_read_from_cache_quad_q2d,
 +		   &snand_cap_program_load_x4),
++	SNAND_INFO("GD5F1GQ5UExxG", SNAND_ID(SNAND_ID_ADDR, 0xc8, 0x51),
++		   SNAND_MEMORG_1G_2K_128,
++		   &snand_cap_read_from_cache_quad,
++		   &snand_cap_program_load_x4),
 +	SNAND_INFO("GD5F2GQ4UExIG", SNAND_ID(SNAND_ID_ADDR, 0xc8, 0xd2),
 +		   SNAND_MEMORG_2G_2K_128,
 +		   &snand_cap_read_from_cache_quad_q2d,



From lede-commits at lists.infradead.org  Thu Mar 21 01:57:12 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 21 Mar 2024 04:57:12 -0400
Subject: [openwrt/openwrt]  uboot-mediatek: add Redmi AX6S as UBI loader
In-Reply-To: <171101143259.3966518.11591833499519708522@git-01.infra.openwrt.org>
References: <171101143259.3966518.11591833499519708522@git-01.infra.openwrt.org>
Message-ID: <mailman.18224.1711011442.1280.lede-commits@lists.infradead.org>

981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2ea8610e4fcaa13208432b0242ca82e18e1f3da6

commit 2ea8610e4fcaa13208432b0242ca82e18e1f3da6
Author: Chuanhong Guo <gch981213 at gmail.com>
AuthorDate: Sat Mar 2 21:07:37 2024 +0800

    uboot-mediatek: add Redmi AX6S as UBI loader
    
    Add support for Xiaomi Redmi AX6S to be used as a second-stage
    UBI loader.
    The defconfig/env is minimal: Boot fit from UBI. If that failed,
    load and boot initramfs image from TFTP.
    
    Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
---
 package/boot/uboot-mediatek/Makefile               |   9 +
 .../patches/452-add-xiaomi-redmi-ax6s.patch        | 320 +++++++++++++++++++++
 2 files changed, 329 insertions(+)

diff --git a/package/boot/uboot-mediatek/Makefile b/package/boot/uboot-mediatek/Makefile
index c96f7da882..bc55d43211 100644
--- a/package/boot/uboot-mediatek/Makefile
+++ b/package/boot/uboot-mediatek/Makefile
@@ -171,6 +171,14 @@ define U-Boot/mt7622_ubnt_unifi-6-lr-v3
   FIP_COMPRESS:=1
 endef
 
+define U-Boot/mt7622_xiaomi_redmi-router-ax6s-ubi-loader
+  NAME:=Xiaomi Redmi Router AX6S (as UBI loader)
+  UBOOT_CONFIG:=mt7622_xiaomi_redmi-router-ax6s-ubi-loader
+  BUILD_DEVICES:=xiaomi_redmi-router-ax6s
+  BUILD_SUBTARGET:=mt7622
+  UBOOT_IMAGE:=u-boot.bin
+endef
+
 define U-Boot/mt7623a_unielec_u7623
   NAME:=UniElec U7623 (mt7623)
   BUILD_DEVICES:=unielec_u7623-02
@@ -635,6 +643,7 @@ UBOOT_TARGETS := \
 	mt7622_ubnt_unifi-6-lr-v1 \
 	mt7622_ubnt_unifi-6-lr-v2 \
 	mt7622_ubnt_unifi-6-lr-v3 \
+  mt7622_xiaomi_redmi-router-ax6s-ubi-loader \
 	mt7623n_bpir2 \
 	mt7623a_unielec_u7623 \
 	mt7628_rfb \
diff --git a/package/boot/uboot-mediatek/patches/452-add-xiaomi-redmi-ax6s.patch b/package/boot/uboot-mediatek/patches/452-add-xiaomi-redmi-ax6s.patch
new file mode 100644
index 0000000000..28cc5d73d7
--- /dev/null
+++ b/package/boot/uboot-mediatek/patches/452-add-xiaomi-redmi-ax6s.patch
@@ -0,0 +1,320 @@
+From 57dc777bddf0baf3c27177576c40b5113309ce54 Mon Sep 17 00:00:00 2001
+From: Chuanhong Guo <gch981213 at gmail.com>
+Date: Sat, 2 Mar 2024 20:30:16 +0800
+Subject: [PATCH] add xiaomi redmi ax6s
+
+---
+ arch/arm/dts/Makefile                         |   1 +
+ .../dts/mt7622-xiaomi-redmi-router-ax6s.dts   | 166 ++++++++++++++++++
+ ...omi_redmi-router-ax6s-ubi-loader_defconfig |  98 +++++++++++
+ xiaomi-redmi-router-ax6s-ubi-loader_env       |  22 +++
+ 4 files changed, 287 insertions(+)
+ create mode 100644 arch/arm/dts/mt7622-xiaomi-redmi-router-ax6s.dts
+ create mode 100644 configs/mt7622_xiaomi_redmi-router-ax6s-ubi-loader_defconfig
+ create mode 100644 xiaomi-redmi-router-ax6s-ubi-loader_env
+
+--- a/arch/arm/dts/Makefile
++++ b/arch/arm/dts/Makefile
+@@ -1425,6 +1425,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
+ 	mt7622-linksys-e8450-ubi.dtb \
+ 	mt7622-ubnt-unifi-6-lr.dtb \
+ 	mt7622-ubnt-unifi-6-lr-v3.dtb \
++	mt7622-xiaomi-redmi-router-ax6s.dtb \
+ 	mt7623n-bananapi-bpi-r2.dtb \
+ 	mt7629-rfb.dtb \
+ 	mt7981-rfb.dtb \
+--- /dev/null
++++ b/arch/arm/dts/mt7622-xiaomi-redmi-router-ax6s.dts
+@@ -0,0 +1,166 @@
++// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
++
++/dts-v1/;
++#include <dt-bindings/input/linux-event-codes.h>
++#include <dt-bindings/leds/common.h>
++#include "mt7622.dtsi"
++#include "mt7622-u-boot.dtsi"
++
++/ {
++	#address-cells = <1>;
++	#size-cells = <1>;
++	model = "Xiaomi Redmi Router AX6S";
++	compatible = "xiaomi,redmi-router-ax6s", "mediatek,mt7622";
++
++	chosen {
++		stdout-path = &uart0;
++		tick-timer = &timer0;
++	};
++
++	aliases {
++		spi0 = &snand;
++		ethernet0 = &eth;
++	};
++
++	memory at 40000000 {
++		device_type = "memory";
++		reg = <0x40000000 0x8000000>;
++	};
++
++	leds {
++		compatible = "gpio-leds";
++
++		led_power_blue: power_blue {
++			function = LED_FUNCTION_POWER;
++			color = <LED_COLOR_ID_BLUE>;
++			gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
++		};
++
++		led_power_amber: power_amber {
++			function = LED_FUNCTION_POWER;
++			color = <LED_COLOR_ID_AMBER>;
++			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
++		};
++
++		led_net_blue: net_blue {
++			label = "blue:net";
++			gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
++		};
++
++		led_net_amber: net_amber {
++			label = "amber:net";
++			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
++		};
++
++	};
++
++	keys {
++		compatible = "gpio-keys";
++
++		reset {
++			label = "reset";
++			gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
++			linux,code = <KEY_RESTART>;
++		};
++
++		mesh {
++			label = "mesh";
++			gpios = <&gpio 102 GPIO_ACTIVE_LOW>;
++			linux,code = <BTN_9>;
++			linux,input-type = <EV_SW>;
++		};
++	};
++
++	reg_1p8v: regulator-1p8v {
++		compatible = "regulator-fixed";
++		regulator-name = "fixed-1.8V";
++		regulator-min-microvolt = <1800000>;
++		regulator-max-microvolt = <1800000>;
++		regulator-boot-on;
++		regulator-always-on;
++	};
++
++	reg_3p3v: regulator-3p3v {
++		compatible = "regulator-fixed";
++		regulator-name = "fixed-3.3V";
++		regulator-min-microvolt = <3300000>;
++		regulator-max-microvolt = <3300000>;
++		regulator-boot-on;
++		regulator-always-on;
++	};
++};
++
++&pcie {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pcie0_pins>;
++	status = "okay";
++
++	pcie at 0,0 {
++		status = "okay";
++	};
++};
++
++&pinctrl {
++	pcie0_pins: pcie0-pins {
++		mux {
++			function = "pcie";
++			groups = "pcie0_pad_perst",
++				 "pcie0_1_waken",
++				 "pcie0_1_clkreq";
++		};
++	};
++
++	snfi_pins: snfi-pins {
++		mux {
++			function = "flash";
++			groups = "snfi";
++		};
++	};
++
++	uart0_pins: uart0 {
++		mux {
++			function = "uart";
++			groups = "uart0_0_tx_rx" ;
++		};
++	};
++
++	watchdog_pins: watchdog-default {
++		mux {
++			function = "watchdog";
++			groups = "watchdog";
++		};
++	};
++};
++
++&snand {
++	pinctrl-names = "default";
++	pinctrl-0 = <&snfi_pins>;
++	quad-spi;
++	status = "okay";
++};
++
++&uart0 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&uart0_pins>;
++	mediatek,force-highspeed;
++	status = "okay";
++};
++
++&watchdog {
++	pinctrl-names = "default";
++	pinctrl-0 = <&watchdog_pins>;
++	status = "okay";
++};
++
++&eth {
++	status = "okay";
++	mediatek,gmac-id = <0>;
++	phy-mode = "2500base-x";
++	mediatek,switch = "mt7531";
++	reset-gpios = <&gpio 54 GPIO_ACTIVE_HIGH>;
++
++	fixed-link {
++		speed = <2500>;
++		full-duplex;
++	};
++};
+--- /dev/null
++++ b/configs/mt7622_xiaomi_redmi-router-ax6s-ubi-loader_defconfig
+@@ -0,0 +1,98 @@
++CONFIG_ARM=y
++CONFIG_SYS_HAS_NONCACHED_MEMORY=y
++CONFIG_POSITION_INDEPENDENT=y
++CONFIG_ARCH_MEDIATEK=y
++CONFIG_TEXT_BASE=0x41e00000
++CONFIG_SYS_MALLOC_F_LEN=0x4000
++CONFIG_NR_DRAM_BANKS=1
++CONFIG_DEFAULT_DEVICE_TREE="mt7622-xiaomi-redmi-router-ax6s"
++CONFIG_PRE_CON_BUF_ADDR=0x4007EF00
++CONFIG_DEBUG_UART_BASE=0x11002000
++CONFIG_DEBUG_UART_CLOCK=25000000
++CONFIG_SYS_LOAD_ADDR=0x40080000
++CONFIG_PCI=y
++CONFIG_DEBUG_UART=y
++CONFIG_FIT=y
++CONFIG_BOOTDELAY=30
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_DEFAULT_FDT_FILE="mediatek/mt7622-xiaomi-redmi-router-ax6s"
++CONFIG_LOGLEVEL=7
++CONFIG_PRE_CONSOLE_BUFFER=y
++CONFIG_LOG=y
++CONFIG_BOARD_LATE_INIT=y
++CONFIG_LAST_STAGE_INIT=y
++CONFIG_HUSH_PARSER=y
++# CONFIG_AUTO_COMPLETE is not set
++CONFIG_SYS_PROMPT="MT7622> "
++CONFIG_CMD_LICENSE=y
++CONFIG_CMD_ASKENV=y
++CONFIG_CMD_ERASEENV=y
++CONFIG_CMD_ENV_FLAGS=y
++# CONFIG_CMD_UNLZ4 is not set
++# CONFIG_CMD_UNZIP is not set
++CONFIG_CMD_GPIO=y
++CONFIG_CMD_MTD=y
++# CONFIG_CMD_BOOTP is not set
++CONFIG_CMD_TFTPSRV=y
++CONFIG_CMD_PING=y
++CONFIG_CMD_HASH=y
++CONFIG_CMD_SMC=y
++CONFIG_CMD_FS_GENERIC=y
++CONFIG_CMD_FS_UUID=y
++CONFIG_CMD_MTDPARTS=y
++CONFIG_MTDPARTS_DEFAULT="mtdparts=spi-nand0:512k(preloader),2816k(reserved),117248k(ubi)"
++CONFIG_CMD_UBI=y
++CONFIG_CMD_UBI_RENAME=y
++CONFIG_DOS_PARTITION=y
++CONFIG_EFI_PARTITION=y
++CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
++CONFIG_SYS_RELOC_GD_ENV_ADDR=y
++CONFIG_USE_DEFAULT_ENV_FILE=y
++CONFIG_DEFAULT_ENV_FILE="xiaomi-redmi-router-ax6s-ubi-loader_env"
++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
++CONFIG_VERSION_VARIABLE=y
++CONFIG_PROT_UDP=y
++CONFIG_BOOTP_SEND_HOSTNAME=y
++CONFIG_NET_RANDOM_ETHADDR=y
++CONFIG_NETCONSOLE=y
++CONFIG_USE_IPADDR=y
++CONFIG_IPADDR="192.168.1.1"
++CONFIG_USE_SERVERIP=y
++CONFIG_SERVERIP="192.168.1.254"
++CONFIG_REGMAP=y
++CONFIG_SYSCON=y
++CONFIG_BUTTON=y
++CONFIG_BUTTON_GPIO=y
++CONFIG_CLK=y
++CONFIG_GPIO_HOG=y
++CONFIG_LED=y
++CONFIG_LED_BLINK=y
++CONFIG_LED_GPIO=y
++# CONFIG_MMC is not set
++CONFIG_MTD=y
++CONFIG_DM_MTD=y
++CONFIG_MTK_SPI_NAND=y
++CONFIG_MTK_SPI_NAND_MTD=y
++CONFIG_UBI_SILENCE_MSG=y
++CONFIG_MTD_UBI_FASTMAP=y
++CONFIG_PHY_FIXED=y
++CONFIG_MEDIATEK_ETH=y
++CONFIG_PCIE_MEDIATEK=y
++CONFIG_PHY=y
++CONFIG_PINCTRL=y
++CONFIG_PINCONF=y
++CONFIG_PINCTRL_MT7622=y
++CONFIG_POWER_DOMAIN=y
++CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_DM_REGULATOR=y
++CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_REGULATOR_GPIO=y
++CONFIG_RAM=y
++CONFIG_DM_SERIAL=y
++CONFIG_MTK_SERIAL=y
++CONFIG_SPI=y
++CONFIG_DM_SPI=y
++CONFIG_UBIFS_SILENCE_MSG=y
++CONFIG_LZ4=y
++CONFIG_ZSTD=y
++CONFIG_HEXDUMP=y
+--- /dev/null
++++ b/xiaomi-redmi-router-ax6s-ubi-loader_env
+@@ -0,0 +1,22 @@
++ipaddr=192.168.1.1
++serverip=192.168.1.254
++loadaddr=0x46000000
++console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
++bootled_pwr=power_blue
++bootled_rec=power_amber
++bootcmd=run boot_or_recovery
++bootconf=config-1
++bootdelay=0
++bootfile=openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-initramfs-recovery.itb
++bootfile_upg=openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-sysupgrade.itb
++boot_or_recovery=run boot_production ; led $bootled_pwr off ; led $bootled_rec on ; if ubi check fit ; then run boot_tftp_forever ; else run tftp_production ; fi
++boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr#$bootconf
++boot_tftp_forever=while true ; do run boot_tftp ; sleep 1 ; done
++boot_production=run ubi_read_production && bootm $loadaddr#$bootconf
++ubi_format=ubi detach ; mtd erase ubi && ubi part ubi
++ubi_init=ubi part ubi || run ubi_format
++ubi_prepare_rootfs=if ubi check rootfs_data ; then else if env exists rootfs_data_max ; then ubi create rootfs_data $rootfs_data_max dynamic || ubi create rootfs_data - dynamic ; else ubi create rootfs_data - dynamic ; fi ; fi
++ubi_remove_rootfs=ubi check rootfs_data && ubi remove rootfs_data
++ubi_write_production=ubi check fit && ubi remove fit ; run ubi_remove_rootfs ; ubi create fit $filesize dynamic 2 && ubi write $loadaddr fit $filesize
++ubi_read_production=run ubi_init && ubi read $loadaddr fit && iminfo $loadaddr && run ubi_prepare_rootfs
++tftp_production=tftpboot $loadaddr $bootfile_upg && iminfo $loadaddr && run ubi_write_production && reset



From lede-commits at lists.infradead.org  Thu Mar 21 13:41:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 21 Mar 2024 16:41:29 -0400
Subject: [openwrt/openwrt]  wireless-regdb: add missing license information
In-Reply-To: <171105368976.1455267.8814796258030354543@git-01.infra.openwrt.org>
References: <171105368976.1455267.8814796258030354543@git-01.infra.openwrt.org>
Message-ID: <mailman.18415.1711053694.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7a3deadf91a356b6b0ac25771854f8fa1c3e6980

commit 7a3deadf91a356b6b0ac25771854f8fa1c3e6980
Author: Florian Eckert <fe at dev.tdt.de>
AuthorDate: Tue Mar 19 15:44:44 2024 +0100

    wireless-regdb: add missing license information
    
    Add the missing license information PKG_LICENSE and PKG_LICENSE_FILES.
    
    Signed-off-by: Florian Eckert <fe at dev.tdt.de>
---
 package/firmware/wireless-regdb/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/package/firmware/wireless-regdb/Makefile b/package/firmware/wireless-regdb/Makefile
index 431d07c35b..a0080bdbfd 100644
--- a/package/firmware/wireless-regdb/Makefile
+++ b/package/firmware/wireless-regdb/Makefile
@@ -3,6 +3,8 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=wireless-regdb
 PKG_VERSION:=2024.01.23
 PKG_RELEASE:=1
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/



From lede-commits at lists.infradead.org  Thu Mar 21 13:48:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 21 Mar 2024 16:48:07 -0400
Subject: [openwrt/openwrt]  ca-certificates: add missing license information
In-Reply-To: <171105408774.1467898.1489528243386445547@git-01.infra.openwrt.org>
References: <171105408774.1467898.1489528243386445547@git-01.infra.openwrt.org>
Message-ID: <mailman.18424.1711054092.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0da116f25b1a80ac9429fd7d13ee30130494f19e

commit 0da116f25b1a80ac9429fd7d13ee30130494f19e
Author: Florian Eckert <fe at dev.tdt.de>
AuthorDate: Wed Mar 13 12:41:38 2024 +0100

    ca-certificates: add missing license information
    
    The package has no licence information. So let's fix it.
    
    Signed-off-by: Florian Eckert <fe at dev.tdt.de>
---
 package/system/ca-certificates/Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/package/system/ca-certificates/Makefile b/package/system/ca-certificates/Makefile
index 06418cebfa..254d7b5178 100644
--- a/package/system/ca-certificates/Makefile
+++ b/package/system/ca-certificates/Makefile
@@ -11,6 +11,9 @@ PKG_VERSION:=20240203
 PKG_RELEASE:=1
 PKG_MAINTAINER:=
 
+PKG_LICENSE:=GPL-2.0-or-later MPL-2.0
+PKG_LICENSE_FILES:=debian/copyright
+
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@DEBIAN/pool/main/c/ca-certificates
 PKG_HASH:=3286d3fc42c4d11b7086711a85f865b44065ce05cf1fb5376b2abed07622a9c6



From lede-commits at lists.infradead.org  Thu Mar 21 13:50:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 21 Mar 2024 16:50:29 -0400
Subject: [openwrt/openwrt]  mac80211: add missing license information
In-Reply-To: <171105422956.1473400.7754245464468622087@git-01.infra.openwrt.org>
References: <171105422956.1473400.7754245464468622087@git-01.infra.openwrt.org>
Message-ID: <mailman.18425.1711054232.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/3128157ec71c7be5c2e26a04b1f4b5080ebf870a

commit 3128157ec71c7be5c2e26a04b1f4b5080ebf870a
Author: Florian Eckert <fe at dev.tdt.de>
AuthorDate: Fri Mar 15 11:57:14 2024 +0100

    mac80211: add missing license information
    
    The lincense information for the packages mac80211 are missing.
    This commit adds the missing information.
    
    Signed-off-by: Florian Eckert <fe at dev.tdt.de>
---
 package/kernel/mac80211/Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index 54a2bf4499..566cfdd7b2 100644
--- a/package/kernel/mac80211/Makefile
+++ b/package/kernel/mac80211/Makefile
@@ -12,6 +12,9 @@ PKG_NAME:=mac80211
 
 PKG_VERSION:=6.6.15
 PKG_RELEASE:=1
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=COPYING
+
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
 PKG_HASH:=3bbc461121134fda9089c084a5eed577d05e7837a157edf9a3797937172a3ece
 



From lede-commits at lists.infradead.org  Thu Mar 21 13:50:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 21 Mar 2024 16:50:30 -0400
Subject: [openwrt/openwrt]  kernel: update deprecated license information
In-Reply-To: <171105422956.1473400.7754245464468622087@git-01.infra.openwrt.org>
References: <171105422956.1473400.7754245464468622087@git-01.infra.openwrt.org>
Message-ID: <mailman.18426.1711054239.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/879826154fd3e5ec353117a9c00cecf5e38c4a16

commit 879826154fd3e5ec353117a9c00cecf5e38c4a16
Author: Florian Eckert <fe at dev.tdt.de>
AuthorDate: Thu Mar 21 12:55:01 2024 +0100

    kernel: update deprecated license information
    
    Update the deprecated license information from GPL-2.0 to GPL-2.0-only
    as written in the COPYING file of the linux source tree.
    
    Also add the 'COPYING' file to the PKG_LICENSE_FILES variable.
    
    Signed-off-by: Florian Eckert <fe at dev.tdt.de>
---
 package/kernel/linux/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/kernel/linux/Makefile b/package/kernel/linux/Makefile
index 6592b01678..d53017018c 100644
--- a/package/kernel/linux/Makefile
+++ b/package/kernel/linux/Makefile
@@ -16,8 +16,8 @@ SUBTARGETS = $(sort $(filter-out feeds,$(notdir $(wildcard $(TOPDIR)/target/linu
 SUBTARGET_MODULES = $(foreach t,$(SUBTARGETS),$(firstword $(wildcard $(TOPDIR)/target/linux/feeds/$(t)/modules.mk $(TOPDIR)/target/linux/$(t)/modules.mk)))
 SCAN_DEPS=modules/*.mk $(SUBTARGET_MODULES) $(TOPDIR)/include/netfilter.mk
 
-PKG_LICENSE:=GPL-2.0
-PKG_LICENSE_FILES:=
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=COPYING
 
 export SHELL:=/bin/sh
 .ONESHELL:



From lede-commits at lists.infradead.org  Thu Mar 21 14:25:53 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 21 Mar 2024 17:25:53 -0400
Subject: [openwrt/openwrt]  mvebu: puzzle-m90x: optimize thermal zone
In-Reply-To: <171105635299.1554056.17122430164553235032@git-01.infra.openwrt.org>
References: <171105635299.1554056.17122430164553235032@git-01.infra.openwrt.org>
Message-ID: <mailman.18429.1711056359.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1a47ce5ff2f2db07fca8fc28801c0a78cbf19fe4

commit 1a47ce5ff2f2db07fca8fc28801c0a78cbf19fe4
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Thu Mar 21 20:59:13 2024 +0000

    mvebu: puzzle-m90x: optimize thermal zone
    
     * have more defined PWM steps similar to the vendor's shell script doing
       the same thing
     * replace PWM values with experiencal values provided by forum users
     * increase hyteresis to prevent changing fan speed every second
       (just because it's annoying to listen to)
     * add 'hot' trip point at 75 deg. to warn users that shutdown is imminent
    
    Tested on Puzzle M902 only for now, PWM values for Puzzle M901 might be
    slightly different but should quite certainly also be rised.
    
    Suggested-by: Martin Gierschner <martin_gierschner at gmx.de>
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../arm64/boot/dts/marvell/cn9131-puzzle-m901.dts  |  2 +-
 .../arm64/boot/dts/marvell/cn9132-puzzle-m902.dts  |  2 +-
 .../arm64/boot/dts/marvell/puzzle-thermal.dtsi     | 44 +++++++++++++++++-----
 3 files changed, 36 insertions(+), 12 deletions(-)

diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts
index a33f8394ca..d214853f1b 100644
--- a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts
@@ -112,7 +112,7 @@
 			chassis_fan_group0: fan-group at 0 {
 				#cooling-cells = <2>;
 				reg = <0x00>;
-				cooling-levels = <80 102 170 230 255>;
+				cooling-levels = <0 159 195 211 223 241 255>;
 			};
 		};
 	};
diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts
index 4b153fdc8c..8c775e4a4f 100644
--- a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts
@@ -157,7 +157,7 @@
 			chassis_fan_group0: fan-group at 0 {
 				#cooling-cells = <2>;
 				reg = <0x00>;
-				cooling-levels = <80 102 170 230 255>;
+				cooling-levels = <0 159 195 211 223 241 255>;
 			};
 		};
 	};
diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
index a8ce8fd102..ea79ab224e 100644
--- a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/puzzle-thermal.dtsi
@@ -3,38 +3,62 @@
 	polling-delay = <1000>;							\
 										\
 	trips {									\
+		cpu-hot {							\
+			temperature = <75000>;					\
+			hysteresis = <5000>;					\
+			type = "hot";						\
+		};								\
+		_cname##_active_full: cpu-active-full {				\
+			temperature = <70000>;					\
+			hysteresis = <5000>;					\
+			type = "active";					\
+		};								\
 		_cname##_active_high: cpu-active-high {				\
-			temperature = <80000>;					\
-			hysteresis = <2000>;					\
+			temperature = <65000>;					\
+			hysteresis = <5000>;					\
 			type = "active";					\
 		};								\
 		_cname##_active_med: cpu-active-med {				\
-			temperature = <72000>;					\
-			hysteresis = <2000>;					\
+			temperature = <62500>;					\
+			hysteresis = <3000>;					\
 			type = "active";					\
 		};								\
 		_cname##_active_low: cpu-active-low {				\
-			temperature = <65000>;					\
-			hysteresis = <2000>;					\
+			temperature = <60000>;					\
+			hysteresis = <3000>;					\
+			type = "active";					\
+		};								\
+		_cname##_active_min: cpu-active-min {				\
+			temperature = <55000>;					\
+			hysteresis = <5000>;					\
 			type = "active";					\
 		};								\
 		_cname##_active_idle: cpu-active-idle {				\
-			temperature = <60000>;					\
-			hysteresis = <2000>;					\
+			temperature = <50000>;					\
+			hysteresis = <5000>;					\
 			type = "active";					\
 		};								\
 	};									\
 	cooling-maps {								\
+		cpu-active-full {						\
+			trip = <&_cname##_active_full>;				\
+			cooling-device = <_fan THERMAL_NO_LIMIT			\
+					       THERMAL_NO_LIMIT>;		\
+		};								\
 		cpu-active-high {						\
 			trip = <&_cname##_active_high>;				\
-			cooling-device = <_fan 3 THERMAL_NO_LIMIT>;		\
+			cooling-device = <_fan 4 5>;				\
 		};								\
 		cpu-active-med {						\
 			trip = <&_cname##_active_med>;				\
-			cooling-device = <_fan 2 3>;				\
+			cooling-device = <_fan 3 4>;				\
 		};								\
 		cpu-active-low {						\
 			trip = <&_cname##_active_low>;				\
+			cooling-device = <_fan 2 3>;				\
+		};								\
+		cpu-active-min {						\
+			trip = <&_cname##_active_min>;				\
 			cooling-device = <_fan 1 2>;				\
 		};								\
 		cpu-active-idle {						\



From lede-commits at lists.infradead.org  Fri Mar 22 04:21:10 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 07:21:10 -0400
Subject: [openwrt/openwrt]  kernel: config: 6.6: add missing ARM64 SM4 CE
 symbols
In-Reply-To: <171110647075.3431110.10040898452666336101@git-01.infra.openwrt.org>
References: <171110647075.3431110.10040898452666336101@git-01.infra.openwrt.org>
Message-ID: <mailman.18613.1711106477.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/494c5691c60316aa710fbf5a6d38bdb04ff14f76

commit 494c5691c60316aa710fbf5a6d38bdb04ff14f76
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 22 11:31:51 2024 +0100

    kernel: config: 6.6: add missing ARM64 SM4 CE symbols
    
    Disable CONFIG_CRYPTO_SM4_ARM64_CE_CCM and CONFIG_CRYPTO_SM4_ARM64_CE_GCM
    in the generic config like we do with similar CE symbols.
    
    This avoids the need to disable them in individual targets.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/generic/config-6.6 | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 7486d8c882..d012750ba1 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -1345,6 +1345,8 @@ CONFIG_CRYPTO_SKCIPHER2=y
 # CONFIG_CRYPTO_SM4 is not set
 # CONFIG_CRYPTO_SM4_ARM64_CE is not set
 # CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set
+# CONFIG_CRYPTO_SM4_ARM64_CE_CCM is not set
+# CONFIG_CRYPTO_SM4_ARM64_CE_GCM is not set
 # CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set
 # CONFIG_CRYPTO_SM4_GENERIC is not set
 # CONFIG_CRYPTO_SPECK is not set



From lede-commits at lists.infradead.org  Fri Mar 22 06:58:10 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 09:58:10 -0400
Subject: [openwrt/openwrt]  mediatek: mt7629: 6.6: disable LEDS_SMARTRG_LED by
 default
In-Reply-To: <171111589014.3817472.3469871162605274837@git-01.infra.openwrt.org>
References: <171111589014.3817472.3469871162605274837@git-01.infra.openwrt.org>
Message-ID: <mailman.18675.1711115896.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6bdea8c7bd85a43e0490107613a60c4f805e093f

commit 6bdea8c7bd85a43e0490107613a60c4f805e093f
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 22 14:17:50 2024 +0100

    mediatek: mt7629: 6.6: disable LEDS_SMARTRG_LED by default
    
    When building MT7629 with ALL_KMODS then we get prompted for
    LEDS_SMARTRG_LED and this will break CI and in future buildbot compilation.
    
    It depends on I2C so the symbol is hidden until ALL_KMODS is used and I2C
    support is available, so disable the LEDS_SMARTRG_LED symbol in 6.6 config
    intentionally as is done in the 6.1 mt7629 config.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/mediatek/mt7629/config-6.6 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/mediatek/mt7629/config-6.6 b/target/linux/mediatek/mt7629/config-6.6
index 15329133c0..31d7401619 100644
--- a/target/linux/mediatek/mt7629/config-6.6
+++ b/target/linux/mediatek/mt7629/config-6.6
@@ -167,6 +167,7 @@ CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_IRQ_TIME_ACCOUNTING=y
 CONFIG_IRQ_WORK=y
 # CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
+# CONFIG_LEDS_SMARTRG_LED is not set
 CONFIG_LIBFDT=y
 CONFIG_LOCK_DEBUGGING_SUPPORT=y
 CONFIG_LOCK_SPIN_ON_OWNER=y



From lede-commits at lists.infradead.org  Fri Mar 22 12:00:36 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 15:00:36 -0400
Subject: [openwrt/openwrt]  mt76: update to latest HEAD
In-Reply-To: <171113403682.423041.9133271422675576592@git-01.infra.openwrt.org>
References: <171113403682.423041.9133271422675576592@git-01.infra.openwrt.org>
Message-ID: <mailman.18764.1711134042.1280.lede-commits@lists.infradead.org>

blocktrron pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/5ef41b1f915999d99cfb7099d0780bcdffbf8f37

commit 5ef41b1f915999d99cfb7099d0780bcdffbf8f37
Author: David Bauer <mail at david-bauer.net>
AuthorDate: Fri Feb 16 23:12:00 2024 +0100

    mt76: update to latest HEAD
    
    f1e1e67d wifi: mt76: fix race condition related to checking tx queue fill status
    bbbac7de wifi: mt76: rename mt76_packet_id_init/flush to mt76_wcid_init/cleanup
    b5d13611 mt76: mt7915: fix monitor mode issues
    
    Signed-off-by: David Bauer <mail at david-bauer.net>
---
 package/kernel/mt76/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile
index c31631e6e5..c66a3988ad 100644
--- a/package/kernel/mt76/Makefile
+++ b/package/kernel/mt76/Makefile
@@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
 
 PKG_SOURCE_URL:=https://github.com/openwrt/mt76
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2023-08-14
-PKG_SOURCE_VERSION:=b14c2351ddb8601c322576d84029e463d456caef
-PKG_MIRROR_HASH:=62b5e157ad525424b6857e77ed373e8d39d03af71b057f8b309d8b293d6eac5f
+PKG_SOURCE_DATE:=2023-09-11
+PKG_SOURCE_VERSION:=f1e1e67d97d1e9a8bb01b59ab20c45ebc985a958
+PKG_MIRROR_HASH:=884c90d25d59609f86eeeb6d2bd0f9b8befba2bd0552a6c776cbae80be76503c
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_USE_NINJA:=0



From lede-commits at lists.infradead.org  Fri Mar 22 13:19:34 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 16:19:34 -0400
Subject: [openwrt/openwrt]  qualcommax: add 6.6 as testing kernel
In-Reply-To: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
References: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
Message-ID: <mailman.18770.1711138772.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/36acf88fe0d974a7de5c3be5d3303048c54ce6fb

commit 36acf88fe0d974a7de5c3be5d3303048c54ce6fb
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Feb 29 21:42:06 2024 +0100

    qualcommax: add 6.6 as testing kernel
    
    Provide kernel 6.6 as the testing kernel for qualcommax.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/qualcommax/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/qualcommax/Makefile b/target/linux/qualcommax/Makefile
index 1ce391ad22..68609157b0 100644
--- a/target/linux/qualcommax/Makefile
+++ b/target/linux/qualcommax/Makefile
@@ -9,6 +9,7 @@ CPU_TYPE:=cortex-a53
 SUBTARGETS:=ipq807x ipq60xx
 
 KERNEL_PATCHVER:=6.1
+KERNEL_TESTING_PATCHVER:=6.6
 
 include $(INCLUDE_DIR)/target.mk
 DEFAULT_PACKAGES += \



From lede-commits at lists.infradead.org  Fri Mar 22 13:19:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 16:19:30 -0400
Subject: [openwrt/openwrt]  qualcommax: 6.6: fix SCM header include path for
 WCSS
In-Reply-To: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
References: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
Message-ID: <mailman.18771.1711138772.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cab45db187c51d63e3063594803b0e11cbdfb1cf

commit cab45db187c51d63e3063594803b0e11cbdfb1cf
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Feb 29 22:04:52 2024 +0100

    qualcommax: 6.6: fix SCM header include path for WCSS
    
    SCM header was moved to <linux/firmware/qcom/qcom_scm.h> so adjust the
    WCSS patch accordingly.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch b/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch
index 8bb5bc695b..ef2a35bbd2 100644
--- a/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch
+++ b/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch
@@ -18,7 +18,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  #include <linux/regulator/consumer.h>
  #include <linux/reset.h>
  #include <linux/soc/qcom/mdt_loader.h>
-+#include <linux/qcom_scm.h>
++#include <linux/firmware/qcom/qcom_scm.h>
  #include "qcom_common.h"
  #include "qcom_pil_info.h"
  #include "qcom_q6v5.h"



From lede-commits at lists.infradead.org  Fri Mar 22 13:19:32 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 16:19:32 -0400
Subject: [openwrt/openwrt]  kernel: qca-nss-dp: enable compiling against 6.6
In-Reply-To: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
References: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
Message-ID: <mailman.18772.1711138774.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d9a2886263570fa8be070fca6e592ebae4adeefd

commit d9a2886263570fa8be070fca6e592ebae4adeefd
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Feb 29 22:35:52 2024 +0100

    kernel: qca-nss-dp: enable compiling against 6.6
    
    Since 6.5 netdev_rx_queue was moved out of netdevice.h so include the new
    header since that is where it lives now.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 ...0010-nss-dp-include-net-netdev_rx_queue.h.patch | 25 ++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/package/kernel/qca-nss-dp/patches/0010-nss-dp-include-net-netdev_rx_queue.h.patch b/package/kernel/qca-nss-dp/patches/0010-nss-dp-include-net-netdev_rx_queue.h.patch
new file mode 100644
index 0000000000..ddbf342868
--- /dev/null
+++ b/package/kernel/qca-nss-dp/patches/0010-nss-dp-include-net-netdev_rx_queue.h.patch
@@ -0,0 +1,25 @@
+From 01ec275bd0942ddc6b80e1d3671cdc66be670f57 Mon Sep 17 00:00:00 2001
+From: Robert Marko <robimarko at gmail.com>
+Date: Fri, 1 Sep 2023 12:23:58 +0200
+Subject: [PATCH] nss-dp: include <net/netdev_rx_queue.h>
+
+Since 6.5 netdev_rx_queue was moved out of netdevice.h so include the new
+header since that is where it lives now.
+
+Signed-off-by: Robert Marko <robimarko at gmail.com>
+---
+ nss_dp_main.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/nss_dp_main.c
++++ b/nss_dp_main.c
+@@ -34,6 +34,9 @@
+ #if defined(NSS_DP_MAC_POLL_SUPPORT)
+ #include <init/ssdk_init.h>
+ #endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0))
++#include <net/netdev_rx_queue.h>
++#endif
+ 
+ #include "nss_dp_hal.h"
+ 



From lede-commits at lists.infradead.org  Fri Mar 22 13:19:31 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 16:19:31 -0400
Subject: [openwrt/openwrt]  kernel: qca-ssdk: allow compiling against 6.6
In-Reply-To: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
References: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
Message-ID: <mailman.18773.1711138775.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6a4411533894a35e0244235ab183d709ecfca9f5

commit 6a4411533894a35e0244235ab183d709ecfca9f5
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Feb 29 22:18:53 2024 +0100

    kernel: qca-ssdk: allow compiling against 6.6
    
    Add a patch that makes SSDK recognize kernel 6.6 and thus allows
    compiling against it.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../patches/0001-config-identify-kernel-6.6.patch  | 47 ++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/package/kernel/qca-ssdk/patches/0001-config-identify-kernel-6.6.patch b/package/kernel/qca-ssdk/patches/0001-config-identify-kernel-6.6.patch
new file mode 100644
index 0000000000..2dc0923263
--- /dev/null
+++ b/package/kernel/qca-ssdk/patches/0001-config-identify-kernel-6.6.patch
@@ -0,0 +1,47 @@
+From f6c0115daaac586740e873a3b8145c5370a73dce Mon Sep 17 00:00:00 2001
+From: Robert Marko <robimarko at gmail.com>
+Date: Sat, 17 Feb 2024 13:02:31 +0100
+Subject: [PATCH] config: identify kernel 6.6
+
+Identify kernel 6.6 so it can be compiled against.
+
+Signed-off-by: Robert Marko <robimarko at gmail.com>
+---
+ config            | 5 +++++
+ make/linux_opt.mk | 4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+--- a/config
++++ b/config
+@@ -27,6 +27,11 @@ endif
+ ifeq ($(KVER),$(filter 6.1%,$(KVER)))
+ 	OS_VER=6_1
+ endif
++
++ifeq ($(KVER),$(filter 6.6%,$(KVER)))
++	OS_VER=6_6
++endif
++
+ ifeq ($(KVER), 3.4.0)
+ 	OS_VER=3_4
+ endif
+--- a/make/linux_opt.mk
++++ b/make/linux_opt.mk
+@@ -450,7 +450,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+       KASAN_SHADOW_SCALE_SHIFT := 3
+   endif
+ 
+-  ifeq ($(OS_VER),$(filter 5_4 6_1, $(OS_VER)))
++  ifeq ($(OS_VER),$(filter 5_4 6_1 6_6, $(OS_VER)))
+       ifeq ($(ARCH), arm64)
+           KASAN_OPTION += -DKASAN_SHADOW_SCALE_SHIFT=$(KASAN_SHADOW_SCALE_SHIFT)
+        endif
+@@ -481,7 +481,7 @@ ifeq (KSLIB, $(MODULE_TYPE))
+ 
+   endif
+ 
+-  ifeq ($(OS_VER),$(filter 4_4 5_4 6_1, $(OS_VER)))
++  ifeq ($(OS_VER),$(filter 4_4 5_4 6_1 6_6, $(OS_VER)))
+                 MODULE_CFLAG += -DKVER34
+                 MODULE_CFLAG += -DKVER32
+             MODULE_CFLAG += -DLNX26_22



From lede-commits at lists.infradead.org  Fri Mar 22 13:19:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 16:19:29 -0400
Subject: [openwrt/openwrt]  qualcommax: 6.6: refresh config
In-Reply-To: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
References: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
Message-ID: <mailman.18774.1711138775.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9b650e1319ce1b48b787f407d9ec9e473a9e93b8

commit 9b650e1319ce1b48b787f407d9ec9e473a9e93b8
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 22 11:33:33 2024 +0100

    qualcommax: 6.6: refresh config
    
    Refresh 6.6 qualcommax kernel config via kernel_menuconfig.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/qualcommax/config-6.6 | 81 ++++++++++++++++++++++++++++----------
 1 file changed, 60 insertions(+), 21 deletions(-)

diff --git a/target/linux/qualcommax/config-6.6 b/target/linux/qualcommax/config-6.6
index acfdc99b22..f9ab275fb3 100644
--- a/target/linux/qualcommax/config-6.6
+++ b/target/linux/qualcommax/config-6.6
@@ -1,9 +1,9 @@
 CONFIG_64BIT=y
-# CONFIG_APQ_GCC_8084 is not set
-# CONFIG_APQ_MMCC_8084 is not set
 CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
 CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
+CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_FORCE_MAX_ORDER=10
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_KEEP_MEMBLOCK=y
 CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
@@ -11,7 +11,6 @@ CONFIG_ARCH_MMAP_RND_BITS=18
 CONFIG_ARCH_MMAP_RND_BITS_MAX=24
 CONFIG_ARCH_MMAP_RND_BITS_MIN=18
 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
-CONFIG_ARCH_NR_GPIO=0
 CONFIG_ARCH_PROC_KCORE_TEXT=y
 CONFIG_ARCH_QCOM=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -62,6 +61,7 @@ CONFIG_BLK_DEV_SD=y
 CONFIG_BLK_MQ_PCI=y
 CONFIG_BLK_MQ_VIRTIO=y
 CONFIG_BLK_PM=y
+CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y
 CONFIG_CAVIUM_TX2_ERRATUM_219=y
 CONFIG_CC_HAVE_SHADOW_CALL_STACK=y
 CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
@@ -116,6 +116,7 @@ CONFIG_CRYPTO_HASH_INFO=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
 CONFIG_CRYPTO_LIB_DES=y
+CONFIG_CRYPTO_LIB_GF128MUL=y
 CONFIG_CRYPTO_LIB_SHA1=y
 CONFIG_CRYPTO_LIB_SHA256=y
 CONFIG_CRYPTO_LIB_UTILS=y
@@ -131,6 +132,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
 CONFIG_DEBUG_INFO=y
 CONFIG_DEV_COREDUMP=y
 CONFIG_DMADEVICES=y
+CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y
 CONFIG_DMA_DIRECT_REMAP=y
 CONFIG_DMA_ENGINE=y
 CONFIG_DMA_OF=y
@@ -142,13 +144,16 @@ CONFIG_EXCLUSIVE_SYSTEM_RAM=y
 CONFIG_FIXED_PHY=y
 CONFIG_FIX_EARLYCON_MEM=y
 CONFIG_FRAME_POINTER=y
+CONFIG_FS_IOMAP=y
 CONFIG_FUJITSU_ERRATUM_010001=y
+CONFIG_FUNCTION_ALIGNMENT=4
+CONFIG_FUNCTION_ALIGNMENT_4B=y
 CONFIG_FWNODE_MDIO=y
 CONFIG_FW_LOADER_PAGED_BUF=y
 CONFIG_FW_LOADER_SYSFS=y
 CONFIG_GCC11_NO_ARRAY_BOUNDS=y
 CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
-CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_GENERIC_ARCH_TOPOLOGY=y
 CONFIG_GENERIC_BUG=y
@@ -167,7 +172,6 @@ CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
 CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
 CONFIG_GENERIC_MSI_IRQ=y
-CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
 CONFIG_GENERIC_PCI_IOMAP=y
 CONFIG_GENERIC_PHY=y
 CONFIG_GENERIC_PINCONF=y
@@ -184,6 +188,7 @@ CONFIG_GPIO_CDEV=y
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
 CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HWSPINLOCK=y
 CONFIG_HWSPINLOCK_QCOM=y
@@ -199,10 +204,11 @@ CONFIG_INITRAMFS_SOURCE=""
 CONFIG_IPQ_APSS_6018=y
 CONFIG_IPQ_APSS_PLL=y
 # CONFIG_IPQ_GCC_4019 is not set
+# CONFIG_IPQ_GCC_5018 is not set
+# CONFIG_IPQ_GCC_5332 is not set
 # CONFIG_IPQ_GCC_6018 is not set
-# CONFIG_IPQ_GCC_806X is not set
 # CONFIG_IPQ_GCC_8074 is not set
-# CONFIG_IPQ_LCC_806X is not set
+# CONFIG_IPQ_GCC_9574 is not set
 CONFIG_IRQCHIP=y
 CONFIG_IRQ_DOMAIN=y
 CONFIG_IRQ_DOMAIN_HIERARCHY=y
@@ -221,9 +227,6 @@ CONFIG_MDIO_BUS=y
 CONFIG_MDIO_DEVICE=y
 CONFIG_MDIO_DEVRES=y
 CONFIG_MDIO_IPQ4019=y
-# CONFIG_MDM_GCC_9615 is not set
-# CONFIG_MDM_LCC_9615 is not set
-CONFIG_MEMFD_CREATE=y
 # CONFIG_MFD_QCOM_RPM is not set
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
@@ -236,21 +239,16 @@ CONFIG_MMC_SDHCI_IO_ACCESSORS=y
 CONFIG_MMC_SDHCI_MSM=y
 # CONFIG_MMC_SDHCI_PCI is not set
 CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
 CONFIG_MODULES_USE_ELF_RELA=y
-# CONFIG_MSM_GCC_8660 is not set
-# CONFIG_MSM_GCC_8909 is not set
 # CONFIG_MSM_GCC_8916 is not set
+# CONFIG_MSM_GCC_8917 is not set
 # CONFIG_MSM_GCC_8939 is not set
-# CONFIG_MSM_GCC_8960 is not set
-# CONFIG_MSM_GCC_8974 is not set
 # CONFIG_MSM_GCC_8976 is not set
 # CONFIG_MSM_GCC_8994 is not set
 # CONFIG_MSM_GCC_8996 is not set
 # CONFIG_MSM_GCC_8998 is not set
 # CONFIG_MSM_GPUCC_8998 is not set
-# CONFIG_MSM_LCC_8960 is not set
-# CONFIG_MSM_MMCC_8960 is not set
-# CONFIG_MSM_MMCC_8974 is not set
 # CONFIG_MSM_MMCC_8996 is not set
 # CONFIG_MSM_MMCC_8998 is not set
 CONFIG_MTD_NAND_CORE=y
@@ -267,9 +265,12 @@ CONFIG_MTD_UBI_WL_THRESHOLD=4096
 CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NET_EGRESS=y
 CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_INGRESS=y
 CONFIG_NET_SELFTESTS=y
 CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_XGRESS=y
 CONFIG_NLS=y
 CONFIG_NO_HZ_COMMON=y
 CONFIG_NO_HZ_IDLE=y
@@ -310,25 +311,38 @@ CONFIG_PCIE_QCOM=y
 CONFIG_PCI_DOMAINS=y
 CONFIG_PCI_DOMAINS_GENERIC=y
 CONFIG_PCI_MSI=y
-CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PER_VMA_LOCK=y
 CONFIG_PGTABLE_LEVELS=3
 CONFIG_PHYLIB=y
 CONFIG_PHYLIB_LEDS=y
 CONFIG_PHYS_ADDR_T_64BIT=y
 # CONFIG_PHY_QCOM_APQ8064_SATA is not set
 # CONFIG_PHY_QCOM_EDP is not set
+# CONFIG_PHY_QCOM_EUSB2_REPEATER is not set
 # CONFIG_PHY_QCOM_IPQ4019_USB is not set
 # CONFIG_PHY_QCOM_IPQ806X_SATA is not set
 # CONFIG_PHY_QCOM_IPQ806X_USB is not set
+# CONFIG_PHY_QCOM_M31_USB is not set
 # CONFIG_PHY_QCOM_PCIE2 is not set
 CONFIG_PHY_QCOM_QMP=y
+CONFIG_PHY_QCOM_QMP_COMBO=y
+CONFIG_PHY_QCOM_QMP_PCIE=y
+CONFIG_PHY_QCOM_QMP_PCIE_8996=y
+CONFIG_PHY_QCOM_QMP_UFS=y
+CONFIG_PHY_QCOM_QMP_USB=y
+# CONFIG_PHY_QCOM_QMP_USB_LEGACY is not set
 CONFIG_PHY_QCOM_QUSB2=y
+# CONFIG_PHY_QCOM_SGMII_ETH is not set
+# CONFIG_PHY_QCOM_SNPS_EUSB2 is not set
 # CONFIG_PHY_QCOM_USB_HS_28NM is not set
 # CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2 is not set
 # CONFIG_PHY_QCOM_USB_SS is not set
 CONFIG_PINCTRL=y
+# CONFIG_PINCTRL_IPQ5018 is not set
+# CONFIG_PINCTRL_IPQ5332 is not set
 # CONFIG_PINCTRL_IPQ6018 is not set
 # CONFIG_PINCTRL_IPQ8074 is not set
+# CONFIG_PINCTRL_IPQ9574 is not set
 CONFIG_PINCTRL_MSM=y
 # CONFIG_PINCTRL_MSM8916 is not set
 # CONFIG_PINCTRL_MSM8976 is not set
@@ -338,15 +352,21 @@ CONFIG_PINCTRL_MSM=y
 # CONFIG_PINCTRL_QCM2290 is not set
 # CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
 # CONFIG_PINCTRL_QCS404 is not set
+# CONFIG_PINCTRL_QDU1000 is not set
+# CONFIG_PINCTRL_SA8775P is not set
 # CONFIG_PINCTRL_SC7180 is not set
 # CONFIG_PINCTRL_SC8280XP is not set
 # CONFIG_PINCTRL_SDM660 is not set
+# CONFIG_PINCTRL_SDM670 is not set
 # CONFIG_PINCTRL_SDM845 is not set
+# CONFIG_PINCTRL_SDX75 is not set
 # CONFIG_PINCTRL_SM6350 is not set
 # CONFIG_PINCTRL_SM6375 is not set
+# CONFIG_PINCTRL_SM7150 is not set
 # CONFIG_PINCTRL_SM8150 is not set
 # CONFIG_PINCTRL_SM8250 is not set
 # CONFIG_PINCTRL_SM8450 is not set
+# CONFIG_PINCTRL_SM8550 is not set
 CONFIG_PM=y
 CONFIG_PM_CLK=y
 CONFIG_PM_OPP=y
@@ -369,7 +389,6 @@ CONFIG_QCOM_APCS_IPC=y
 CONFIG_QCOM_BAM_DMA=y
 # CONFIG_QCOM_CLK_APCC_MSM8996 is not set
 # CONFIG_QCOM_CLK_APCS_MSM8916 is not set
-# CONFIG_QCOM_CLK_APCS_SDX55 is not set
 # CONFIG_QCOM_COMMAND_DB is not set
 # CONFIG_QCOM_CPR is not set
 # CONFIG_QCOM_EBI2 is not set
@@ -391,8 +410,10 @@ CONFIG_QCOM_Q6V5_COMMON=y
 # CONFIG_QCOM_Q6V5_MSS is not set
 # CONFIG_QCOM_Q6V5_PAS is not set
 CONFIG_QCOM_Q6V5_WCSS=y
+# CONFIG_QCOM_RAMP_CTRL is not set
 # CONFIG_QCOM_RMTFS_MEM is not set
 # CONFIG_QCOM_RPMH is not set
+# CONFIG_QCOM_RPM_MASTER_STATS is not set
 CONFIG_QCOM_RPROC_COMMON=y
 CONFIG_QCOM_SCM=y
 # CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
@@ -412,6 +433,7 @@ CONFIG_QCOM_WDT=y
 # CONFIG_QCS_GCC_404 is not set
 # CONFIG_QCS_Q6SSTOP_404 is not set
 # CONFIG_QCS_TURING_404 is not set
+# CONFIG_QDU_GCC_1000 is not set
 CONFIG_QUEUED_RWLOCKS=y
 CONFIG_QUEUED_SPINLOCKS=y
 CONFIG_RANDSTRUCT_NONE=y
@@ -422,6 +444,7 @@ CONFIG_REGMAP_MMIO=y
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_CPR3 is not set
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_QCOM_REFGEN is not set
 # CONFIG_REGULATOR_VQMMC_IPQ4019 is not set
 CONFIG_RELOCATABLE=y
 CONFIG_REMOTEPROC=y
@@ -444,6 +467,8 @@ CONFIG_RPS=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_I2C_AND_SPI=y
 CONFIG_RWSEM_SPIN_ON_OWNER=y
+# CONFIG_SA_GCC_8775P is not set
+# CONFIG_SA_GPUCC_8775P is not set
 # CONFIG_SCHED_CORE is not set
 CONFIG_SCHED_MC=y
 CONFIG_SCHED_SMT=y
@@ -454,10 +479,12 @@ CONFIG_SCSI_COMMON=y
 # CONFIG_SCSI_PROC_FS is not set
 # CONFIG_SC_CAMCC_7280 is not set
 # CONFIG_SC_DISPCC_7180 is not set
+# CONFIG_SC_DISPCC_8280XP is not set
 # CONFIG_SC_GCC_7180 is not set
 # CONFIG_SC_GCC_8280XP is not set
 # CONFIG_SC_GPUCC_7180 is not set
 # CONFIG_SC_LPASSCC_7280 is not set
+# CONFIG_SC_LPASSCC_8280XP is not set
 # CONFIG_SC_LPASS_CORECC_7180 is not set
 # CONFIG_SC_LPASS_CORECC_7280 is not set
 # CONFIG_SC_MSS_7180 is not set
@@ -469,7 +496,7 @@ CONFIG_SCSI_COMMON=y
 # CONFIG_SDM_GPUCC_845 is not set
 # CONFIG_SDM_LPASSCC_845 is not set
 # CONFIG_SDM_VIDEOCC_845 is not set
-# CONFIG_SDX_GCC_65 is not set
+# CONFIG_SDX_GCC_75 is not set
 CONFIG_SERIAL_8250_FSL=y
 CONFIG_SERIAL_MCTRL_GPIO=y
 CONFIG_SERIAL_MSM=y
@@ -477,16 +504,28 @@ CONFIG_SERIAL_MSM_CONSOLE=y
 CONFIG_SGL_ALLOC=y
 CONFIG_SG_POOL=y
 CONFIG_SMP=y
+# CONFIG_SM_CAMCC_6350 is not set
 # CONFIG_SM_CAMCC_8450 is not set
+# CONFIG_SM_GCC_7150 is not set
 # CONFIG_SM_GCC_8150 is not set
 # CONFIG_SM_GCC_8250 is not set
 # CONFIG_SM_GCC_8450 is not set
+# CONFIG_SM_GCC_8550 is not set
+# CONFIG_SM_GPUCC_6115 is not set
+# CONFIG_SM_GPUCC_6125 is not set
 # CONFIG_SM_GPUCC_6350 is not set
+# CONFIG_SM_GPUCC_6375 is not set
 # CONFIG_SM_GPUCC_8150 is not set
 # CONFIG_SM_GPUCC_8250 is not set
 # CONFIG_SM_GPUCC_8350 is not set
+# CONFIG_SM_GPUCC_8450 is not set
+# CONFIG_SM_GPUCC_8550 is not set
+# CONFIG_SM_TCSRCC_8550 is not set
 # CONFIG_SM_VIDEOCC_8150 is not set
 # CONFIG_SM_VIDEOCC_8250 is not set
+# CONFIG_SM_VIDEOCC_8350 is not set
+# CONFIG_SM_VIDEOCC_8450 is not set
+# CONFIG_SM_VIDEOCC_8550 is not set
 CONFIG_SOCK_RX_QUEUE_MAPPING=y
 CONFIG_SOC_BUS=y
 CONFIG_SOFTIRQ_ON_OWN_STACK=y
@@ -499,7 +538,7 @@ CONFIG_SPI=y
 CONFIG_SPI_MASTER=y
 CONFIG_SPI_MEM=y
 CONFIG_SPI_QUP=y
-CONFIG_SRCU=y
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
 CONFIG_SWIOTLB=y
 CONFIG_SWPHY=y
 CONFIG_SYSCTL_EXCEPTION_TRACE=y



From lede-commits at lists.infradead.org  Fri Mar 22 13:19:33 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 16:19:33 -0400
Subject: [openwrt/openwrt]  qualcommax: ipq807x: add WLAN device path
 migration
In-Reply-To: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
References: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
Message-ID: <mailman.18777.1711138780.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/4989556a53e788ea81aa2623446b16e0f44f60e3

commit 4989556a53e788ea81aa2623446b16e0f44f60e3
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Sat Mar 9 11:22:05 2024 +0100

    qualcommax: ipq807x: add WLAN device path migration
    
    Kernel 6.6 has changed the path of WLAN devices as the soc node was updated
    to include an adress as well because according to spec it needed one:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/arch/arm64/boot/dts/qcom/ipq8074.dtsi?h=v6.6.21&id=da6aa1111a17db11367817ddc10c5a6c188cdc44
    
    So, this will break existing configuration as device path was changed for
    example:
    "platform/soc/c000000.wifi" to "platform/soc at 0/c000000.wifi"
    "platform/soc/c000000.wifi+1" to "platform/soc at 0/c000000.wifi+1"
    
    PCIe attached devices also have their path changed, so lets add a script
    that will migrate the paths based on the detected running kernel version
    so returning to kernel 6.1 will work as well.
    
    Co-developed-by: Sean Khan <datapronix at protonmail.com>
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../etc/hotplug.d/ieee80211/05-wifi-migrate        | 68 ++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate
new file mode 100644
index 0000000000..aa0069410a
--- /dev/null
+++ b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+# This must run before 10-wifi-detect
+
+[ "${ACTION}" = "add" ] || return
+
+. /lib/functions.sh
+
+check_kernel()
+{
+	local kernel_current=$(uname -r)
+	if [ ${kernel_current//./} -lt "6600" ]; then
+	  return 1
+	fi
+}
+
+do_migrate_radio()
+{
+	local cfg="$1" from="$2" to="$3"
+
+	config_get path "$cfg" path
+
+	[ "$path" = "$from" ] || return
+
+	uci set "wireless.${cfg}.path=${to}"
+	WIRELESS_CHANGED=true
+
+	logger -t wifi-migrate "Updated path of wireless.${cfg} from '${from}' to '${to}'"
+}
+
+check_path()
+{
+	local config
+	config="$1"
+
+	config_get path "$config" path
+
+	to=${path/soc\//soc at 0\/}
+
+	# Checks if kernel version is less than 6.6.0, if it is and the path is using the new format,
+	# then path should be migrated to the old format. This would allow users on platforms with two partitions,
+	# to test 6.1 and 6.6.
+	check_kernel || to=${path/soc at 0\//soc\/}
+
+	[ "$path" = "$to" ] || do_migrate_radio "$config" "$path" "$to"
+}
+
+migrate_radio()
+{
+	config_load wireless
+
+	# Check if there is already a section with the target path: In this case, the system
+	# was already upgraded to a version without this migration script before; better bail out,
+	# as we can't be sure we don't break more than we fix.
+	config_foreach check_path wifi-device
+}
+
+WIRELESS_CHANGED=false
+
+case "$(board_name)" in
+*)
+	migrate_radio
+    ;;
+esac
+
+$WIRELESS_CHANGED && uci commit wireless
+
+exit 0



From lede-commits at lists.infradead.org  Fri Mar 22 13:19:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 16:19:28 -0400
Subject: [openwrt/openwrt]  qualcommax: 6.6: make patches apply
In-Reply-To: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
References: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
Message-ID: <mailman.18778.1711138780.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d9386dc8e9691ee87d63833b97055b01af869074

commit d9386dc8e9691ee87d63833b97055b01af869074
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 22 11:08:54 2024 +0100

    qualcommax: 6.6: make patches apply
    
    Drop backported patches already included in 6.6 and refresh the rest to
    apply.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 ...2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch |   32 -
 ...vers-tsens-Add-support-for-combined-inter.patch |  134 -
 ...vers-tsens-Allow-configuring-min-and-max-.patch |  101 -
 ...thermal-drivers-tsens-Add-IPQ8074-support.patch |   74 -
 ...-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch |  130 -
 ...arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch |   29 -
 ...2-clk-qcom-ipq8074-convert-to-parent-data.patch | 3601 --------------------
 ...arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch |   28 -
 ...-clock-qcom-ipq8074-add-missing-networkin.patch |   39 -
 ...com-ipq8074-add-missing-networking-resets.patch |   41 -
 ...-ipq8074-populate-fw_name-for-all-parents.patch |  152 -
 ...com-ipq8074-pass-XO-and-sleep-clocks-to-G.patch |   36 -
 ...0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch |  149 -
 ...64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch |   37 -
 ...m64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch |   42 -
 ....2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch |   82 -
 ...com-ipq8074-align-TLMM-pin-configuration-.patch |   60 -
 ...com-ipq6018-align-TLMM-pin-configuration-.patch |   56 -
 ...com-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch |   24 -
 ...CI-qcom-Add-support-for-IPQ8074-Gen3-port.patch |   26 -
 ...om-ipq8074-populate-fw_name-for-usb3phy-s.patch |   38 -
 ...s-qcom-ipq8074-add-compatible-fallback-to.patch |   26 -
 ...s-qcom-ipq8074-add-critical-thermal-trips.patch |  199 --
 ...s-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch |    4 +-
 ...pufreq-qcom-nvmem-add-support-for-IPQ6018.patch |   14 +-
 ...pufreq-qcom-nvmem-add-support-for-IPQ8074.patch |   10 +-
 ...com-ipq8074-include-the-GPLL0-as-clock-pr.patch |    2 +-
 ...-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch |   27 -
 ...-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch |   33 -
 ...-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch |   28 -
 ...dings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch |   25 -
 ...-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch |   52 -
 ...rm64-dts-qcom-ipq6018-Sort-nodes-properly.patch |  605 ----
 ...dts-qcom-ipq6018-Add-remove-some-newlines.patch |   92 -
 ...-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch |   25 -
 ...s-qcom-ipq6018-align-RPM-G-Link-node-with.patch |   28 -
 ...s-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch |   27 -
 ...-qcom-add-few-more-reserved-memory-region.patch |   92 -
 ...dts-qcom-enable-the-download-mode-support.patch |   49 -
 ...ts-qcom-ipq6018-correct-qrng-unit-address.patch |   29 -
 ...qcom-ipq6018-add-unit-address-to-soc-node.patch |   28 -
 ....5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch |   34 -
 ...4-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch |   37 -
 ...4-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch |   29 -
 ...gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch |   27 -
 ...-qcom-gcc-ipq6018-drop-redundant-F-define.patch |   27 -
 ...6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch |   39 -
 ...gcc-ipq6018-remove-duplicate-initializers.patch |   38 -
 ...c-qcom-Add-RPM-processor-subsystem-driver.patch |  132 -
 ...rm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch |   93 -
 ...m64-dts-qcom-ipq6018-include-the-GPLL0-as.patch |    2 +-
 ...7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch |    4 +-
 ...-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch |    4 +-
 ...4-dts-ipq6018-Add-remaining-QUP-UART-node.patch |    4 +-
 ...dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch |    8 +-
 ...6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch |    2 +-
 ...-arm64-dts-qcom-ipq6018-add-thermal-zones.patch |    2 +-
 ...c-ipq6018-add-qdss_at-clock-needed-for-wi.patch |    4 +-
 ...-usb-fix-serdes-init-sequence-for-IPQ6018.patch |   58 +-
 ...-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch |    2 +-
 ...k-rcg2-introduce-support-for-multiple-con.patch |    4 +-
 ...c-ipq8074-rework-nss_port5-6-clock-to-mul.patch |    8 +-
 ...m64-dts-ipq8074-add-reserved-memory-nodes.patch |    4 +-
 ...com-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch |    2 +-
 ...-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch |    6 +-
 ...0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch |   10 +-
 ...13-remoteproc-qcom-Add-secure-PIL-support.patch |    6 +-
 ...qcom-Add-support-for-split-q6-m3-wlan-fir.patch |    8 +-
 ...oteproc-qcom-Add-ssr-subdevice-identifier.patch |    2 +-
 ...qcom-Update-regmap-offsets-for-halt-regis.patch |    6 +-
 .../0118-clk-qcom-Add-WCSSAON-reset.patch          |    2 +-
 ...teproc-wcss-disable-auto-boot-for-IPQ8074.patch |    6 +-
 ...dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch |   12 +-
 .../0121-arm64-dts-ipq8074-Add-WLAN-node.patch     |    2 +-
 ...9-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch |   19 +-
 ...-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch |    2 +-
 ...qcom-wcss-populate-driver-data-for-IPQ601.patch |    8 +-
 ...137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch |    2 +-
 ...rm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch |    2 +-
 ...d-rawnand-add-support-for-TH58NYG3S0HBAI4.patch |    2 +-
 ...901-regulator-add-Qualcomm-CPR-regulators.patch |    4 +-
 ...q6018-workaround-networking-clock-parenti.patch |   12 +-
 ...q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch |    4 +-
 ...0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch |    2 +-
 .../0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch   |    2 +-
 ...qcom_q6v5_wcss-add-optional-qdss_at-clock.patch |    2 +-
 ...com-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch |    2 +-
 ...com-ipq6018-change-voltage-to-perf-levels.patch |    2 +-
 88 files changed, 106 insertions(+), 6889 deletions(-)

diff --git a/target/linux/qualcommax/patches-6.6/0001-v6.2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch b/target/linux/qualcommax/patches-6.6/0001-v6.2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch
deleted file mode 100644
index 5a4b1bbc99..0000000000
--- a/target/linux/qualcommax/patches-6.6/0001-v6.2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 6463c10bfdbd684ec7ecfd408ea541283215a088 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 19 Aug 2022 00:06:28 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq8074: add A53 PLL node
-
-Add the required node for A53 PLL which will be used to provide the CPU
-clock via APCS for APSS scaling.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20220818220628.339366-9-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -677,6 +677,14 @@
- 			#mbox-cells = <1>;
- 		};
- 
-+		a53pll: clock at b116000 {
-+			compatible = "qcom,ipq8074-a53pll";
-+			reg = <0x0b116000 0x40>;
-+			#clock-cells = <0>;
-+			clocks = <&xo>;
-+			clock-names = "xo";
-+		};
-+
- 		timer at b120000 {
- 			#address-cells = <1>;
- 			#size-cells = <1>;
diff --git a/target/linux/qualcommax/patches-6.6/0002-v6.2-thermal-drivers-tsens-Add-support-for-combined-inter.patch b/target/linux/qualcommax/patches-6.6/0002-v6.2-thermal-drivers-tsens-Add-support-for-combined-inter.patch
deleted file mode 100644
index 0320725999..0000000000
--- a/target/linux/qualcommax/patches-6.6/0002-v6.2-thermal-drivers-tsens-Add-support-for-combined-inter.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From e593e834fe8ba9bf314d8215ac05d8787f81efda Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 19 Aug 2022 00:02:42 +0200
-Subject: [PATCH] thermal/drivers/tsens: Add support for combined interrupt
-
-Despite using tsens v2.3 IP, IPQ8074 and IPQ6018 only have one IRQ for
-signaling both up/low and critical trips.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Reviewed-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20220818220245.338396-2-robimarko at gmail.com
-Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
----
- drivers/thermal/qcom/tsens-8960.c |  1 +
- drivers/thermal/qcom/tsens-v0_1.c |  1 +
- drivers/thermal/qcom/tsens-v1.c   |  1 +
- drivers/thermal/qcom/tsens-v2.c   |  1 +
- drivers/thermal/qcom/tsens.c      | 38 ++++++++++++++++++++++++++-----
- drivers/thermal/qcom/tsens.h      |  2 ++
- 6 files changed, 38 insertions(+), 6 deletions(-)
-
---- a/drivers/thermal/qcom/tsens-8960.c
-+++ b/drivers/thermal/qcom/tsens-8960.c
-@@ -269,6 +269,7 @@ static const struct tsens_ops ops_8960 =
- static struct tsens_features tsens_8960_feat = {
- 	.ver_major	= VER_0,
- 	.crit_int	= 0,
-+	.combo_int	= 0,
- 	.adc		= 1,
- 	.srot_split	= 0,
- 	.max_sensors	= 11,
---- a/drivers/thermal/qcom/tsens-v0_1.c
-+++ b/drivers/thermal/qcom/tsens-v0_1.c
-@@ -549,6 +549,7 @@ static int __init init_8939(struct tsens
- static struct tsens_features tsens_v0_1_feat = {
- 	.ver_major	= VER_0_1,
- 	.crit_int	= 0,
-+	.combo_int	= 0,
- 	.adc		= 1,
- 	.srot_split	= 1,
- 	.max_sensors	= 11,
---- a/drivers/thermal/qcom/tsens-v1.c
-+++ b/drivers/thermal/qcom/tsens-v1.c
-@@ -273,6 +273,7 @@ static int calibrate_8976(struct tsens_p
- static struct tsens_features tsens_v1_feat = {
- 	.ver_major	= VER_1_X,
- 	.crit_int	= 0,
-+	.combo_int	= 0,
- 	.adc		= 1,
- 	.srot_split	= 1,
- 	.max_sensors	= 11,
---- a/drivers/thermal/qcom/tsens-v2.c
-+++ b/drivers/thermal/qcom/tsens-v2.c
-@@ -31,6 +31,7 @@
- static struct tsens_features tsens_v2_feat = {
- 	.ver_major	= VER_2_X,
- 	.crit_int	= 1,
-+	.combo_int	= 0,
- 	.adc		= 0,
- 	.srot_split	= 1,
- 	.max_sensors	= 16,
---- a/drivers/thermal/qcom/tsens.c
-+++ b/drivers/thermal/qcom/tsens.c
-@@ -532,6 +532,27 @@ static irqreturn_t tsens_irq_thread(int
- 	return IRQ_HANDLED;
- }
- 
-+/**
-+ * tsens_combined_irq_thread() - Threaded interrupt handler for combined interrupts
-+ * @irq: irq number
-+ * @data: tsens controller private data
-+ *
-+ * Handle the combined interrupt as if it were 2 separate interrupts, so call the
-+ * critical handler first and then the up/low one.
-+ *
-+ * Return: IRQ_HANDLED
-+ */
-+static irqreturn_t tsens_combined_irq_thread(int irq, void *data)
-+{
-+	irqreturn_t ret;
-+
-+	ret = tsens_critical_irq_thread(irq, data);
-+	if (ret != IRQ_HANDLED)
-+		return ret;
-+
-+	return tsens_irq_thread(irq, data);
-+}
-+
- static int tsens_set_trips(struct thermal_zone_device *tz, int low, int high)
- {
- 	struct tsens_sensor *s = tz->devdata;
-@@ -1074,13 +1095,18 @@ static int tsens_register(struct tsens_p
- 				   tsens_mC_to_hw(priv->sensor, 0));
- 	}
- 
--	ret = tsens_register_irq(priv, "uplow", tsens_irq_thread);
--	if (ret < 0)
--		return ret;
-+	if (priv->feat->combo_int) {
-+		ret = tsens_register_irq(priv, "combined",
-+					 tsens_combined_irq_thread);
-+	} else {
-+		ret = tsens_register_irq(priv, "uplow", tsens_irq_thread);
-+		if (ret < 0)
-+			return ret;
- 
--	if (priv->feat->crit_int)
--		ret = tsens_register_irq(priv, "critical",
--					 tsens_critical_irq_thread);
-+		if (priv->feat->crit_int)
-+			ret = tsens_register_irq(priv, "critical",
-+						 tsens_critical_irq_thread);
-+	}
- 
- 	return ret;
- }
---- a/drivers/thermal/qcom/tsens.h
-+++ b/drivers/thermal/qcom/tsens.h
-@@ -493,6 +493,7 @@ enum regfield_ids {
-  * struct tsens_features - Features supported by the IP
-  * @ver_major: Major number of IP version
-  * @crit_int: does the IP support critical interrupts?
-+ * @combo_int: does the IP use one IRQ for up, low and critical thresholds?
-  * @adc:      do the sensors only output adc code (instead of temperature)?
-  * @srot_split: does the IP neatly splits the register space into SROT and TM,
-  *              with SROT only being available to secure boot firmware?
-@@ -502,6 +503,7 @@ enum regfield_ids {
- struct tsens_features {
- 	unsigned int ver_major;
- 	unsigned int crit_int:1;
-+	unsigned int combo_int:1;
- 	unsigned int adc:1;
- 	unsigned int srot_split:1;
- 	unsigned int has_watchdog:1;
diff --git a/target/linux/qualcommax/patches-6.6/0003-v6.2-thermal-drivers-tsens-Allow-configuring-min-and-max-.patch b/target/linux/qualcommax/patches-6.6/0003-v6.2-thermal-drivers-tsens-Allow-configuring-min-and-max-.patch
deleted file mode 100644
index 363061813a..0000000000
--- a/target/linux/qualcommax/patches-6.6/0003-v6.2-thermal-drivers-tsens-Allow-configuring-min-and-max-.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 7805365fee582056b32c69cf35aafbb94b14a8ca Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 19 Aug 2022 00:02:43 +0200
-Subject: [PATCH] thermal/drivers/tsens: Allow configuring min and max trips
-
-IPQ8074 and IPQ6018 dont support negative trip temperatures and support
-up to 204 degrees C as the max trip temperature.
-
-So, instead of always setting the -40 as min and 120 degrees C as max
-allow it to be configured as part of the features.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Reviewed-by: Bjorn Andersson <bjorn.andersson at linaro.org>
-Link: https://lore.kernel.org/r/20220818220245.338396-3-robimarko at gmail.com
-Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
----
- drivers/thermal/qcom/tsens-8960.c | 2 ++
- drivers/thermal/qcom/tsens-v0_1.c | 2 ++
- drivers/thermal/qcom/tsens-v1.c   | 2 ++
- drivers/thermal/qcom/tsens-v2.c   | 2 ++
- drivers/thermal/qcom/tsens.c      | 4 ++--
- drivers/thermal/qcom/tsens.h      | 4 ++++
- 6 files changed, 14 insertions(+), 2 deletions(-)
-
---- a/drivers/thermal/qcom/tsens-8960.c
-+++ b/drivers/thermal/qcom/tsens-8960.c
-@@ -273,6 +273,8 @@ static struct tsens_features tsens_8960_
- 	.adc		= 1,
- 	.srot_split	= 0,
- 	.max_sensors	= 11,
-+	.trip_min_temp	= -40000,
-+	.trip_max_temp	= 120000,
- };
- 
- struct tsens_plat_data data_8960 = {
---- a/drivers/thermal/qcom/tsens-v0_1.c
-+++ b/drivers/thermal/qcom/tsens-v0_1.c
-@@ -553,6 +553,8 @@ static struct tsens_features tsens_v0_1_
- 	.adc		= 1,
- 	.srot_split	= 1,
- 	.max_sensors	= 11,
-+	.trip_min_temp	= -40000,
-+	.trip_max_temp	= 120000,
- };
- 
- static const struct reg_field tsens_v0_1_regfields[MAX_REGFIELDS] = {
---- a/drivers/thermal/qcom/tsens-v1.c
-+++ b/drivers/thermal/qcom/tsens-v1.c
-@@ -277,6 +277,8 @@ static struct tsens_features tsens_v1_fe
- 	.adc		= 1,
- 	.srot_split	= 1,
- 	.max_sensors	= 11,
-+	.trip_min_temp	= -40000,
-+	.trip_max_temp	= 120000,
- };
- 
- static const struct reg_field tsens_v1_regfields[MAX_REGFIELDS] = {
---- a/drivers/thermal/qcom/tsens-v2.c
-+++ b/drivers/thermal/qcom/tsens-v2.c
-@@ -35,6 +35,8 @@ static struct tsens_features tsens_v2_fe
- 	.adc		= 0,
- 	.srot_split	= 1,
- 	.max_sensors	= 16,
-+	.trip_min_temp	= -40000,
-+	.trip_max_temp	= 120000,
- };
- 
- static const struct reg_field tsens_v2_regfields[MAX_REGFIELDS] = {
---- a/drivers/thermal/qcom/tsens.c
-+++ b/drivers/thermal/qcom/tsens.c
-@@ -573,8 +573,8 @@ static int tsens_set_trips(struct therma
- 	dev_dbg(dev, "[%u] %s: proposed thresholds: (%d:%d)\n",
- 		hw_id, __func__, low, high);
- 
--	cl_high = clamp_val(high, -40000, 120000);
--	cl_low  = clamp_val(low, -40000, 120000);
-+	cl_high = clamp_val(high, priv->feat->trip_min_temp, priv->feat->trip_max_temp);
-+	cl_low  = clamp_val(low, priv->feat->trip_min_temp, priv->feat->trip_max_temp);
- 
- 	high_val = tsens_mC_to_hw(s, cl_high);
- 	low_val  = tsens_mC_to_hw(s, cl_low);
---- a/drivers/thermal/qcom/tsens.h
-+++ b/drivers/thermal/qcom/tsens.h
-@@ -499,6 +499,8 @@ enum regfield_ids {
-  *              with SROT only being available to secure boot firmware?
-  * @has_watchdog: does this IP support watchdog functionality?
-  * @max_sensors: maximum sensors supported by this version of the IP
-+ * @trip_min_temp: minimum trip temperature supported by this version of the IP
-+ * @trip_max_temp: maximum trip temperature supported by this version of the IP
-  */
- struct tsens_features {
- 	unsigned int ver_major;
-@@ -508,6 +510,8 @@ struct tsens_features {
- 	unsigned int srot_split:1;
- 	unsigned int has_watchdog:1;
- 	unsigned int max_sensors;
-+	int trip_min_temp;
-+	int trip_max_temp;
- };
- 
- /**
diff --git a/target/linux/qualcommax/patches-6.6/0004-v6.2-thermal-drivers-tsens-Add-IPQ8074-support.patch b/target/linux/qualcommax/patches-6.6/0004-v6.2-thermal-drivers-tsens-Add-IPQ8074-support.patch
deleted file mode 100644
index eaea693959..0000000000
--- a/target/linux/qualcommax/patches-6.6/0004-v6.2-thermal-drivers-tsens-Add-IPQ8074-support.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 0164d794cbc58488a7321272e95958d10cf103a4 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 19 Aug 2022 00:02:44 +0200
-Subject: [PATCH] thermal/drivers/tsens: Add IPQ8074 support
-
-Qualcomm IPQ8074 uses tsens v2.3 IP, however unlike other tsens v2 IP
-it only has one IRQ, that is used for up/low as well as critical.
-It also does not support negative trip temperatures.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Reviewed-by: Bjorn Andersson <bjorn.andersson at linaro.org>
-Link: https://lore.kernel.org/r/20220818220245.338396-4-robimarko at gmail.com
-Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
----
- drivers/thermal/qcom/tsens-v2.c | 17 +++++++++++++++++
- drivers/thermal/qcom/tsens.c    |  3 +++
- drivers/thermal/qcom/tsens.h    |  2 +-
- 3 files changed, 21 insertions(+), 1 deletion(-)
-
---- a/drivers/thermal/qcom/tsens-v2.c
-+++ b/drivers/thermal/qcom/tsens-v2.c
-@@ -39,6 +39,17 @@ static struct tsens_features tsens_v2_fe
- 	.trip_max_temp	= 120000,
- };
- 
-+static struct tsens_features ipq8074_feat = {
-+	.ver_major	= VER_2_X,
-+	.crit_int	= 1,
-+	.combo_int	= 1,
-+	.adc		= 0,
-+	.srot_split	= 1,
-+	.max_sensors	= 16,
-+	.trip_min_temp	= 0,
-+	.trip_max_temp	= 204000,
-+};
-+
- static const struct reg_field tsens_v2_regfields[MAX_REGFIELDS] = {
- 	/* ----- SROT ------ */
- 	/* VERSION */
-@@ -104,6 +115,12 @@ struct tsens_plat_data data_tsens_v2 = {
- 	.fields	= tsens_v2_regfields,
- };
- 
-+struct tsens_plat_data data_ipq8074 = {
-+	.ops		= &ops_generic_v2,
-+	.feat		= &ipq8074_feat,
-+	.fields	= tsens_v2_regfields,
-+};
-+
- /* Kept around for backward compatibility with old msm8996.dtsi */
- struct tsens_plat_data data_8996 = {
- 	.num_sensors	= 13,
---- a/drivers/thermal/qcom/tsens.c
-+++ b/drivers/thermal/qcom/tsens.c
-@@ -981,6 +981,9 @@ static const struct of_device_id tsens_t
- 		.compatible = "qcom,ipq8064-tsens",
- 		.data = &data_8960,
- 	}, {
-+		.compatible = "qcom,ipq8074-tsens",
-+		.data = &data_ipq8074,
-+	}, {
- 		.compatible = "qcom,mdm9607-tsens",
- 		.data = &data_9607,
- 	}, {
---- a/drivers/thermal/qcom/tsens.h
-+++ b/drivers/thermal/qcom/tsens.h
-@@ -597,6 +597,6 @@ extern struct tsens_plat_data data_8916,
- extern struct tsens_plat_data data_tsens_v1, data_8976, data_8956;
- 
- /* TSENS v2 targets */
--extern struct tsens_plat_data data_8996, data_tsens_v2;
-+extern struct tsens_plat_data data_8996, data_ipq8074, data_tsens_v2;
- 
- #endif /* __QCOM_TSENS_H__ */
diff --git a/target/linux/qualcommax/patches-6.6/0005-v6.2-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch b/target/linux/qualcommax/patches-6.6/0005-v6.2-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch
deleted file mode 100644
index f5abd27965..0000000000
--- a/target/linux/qualcommax/patches-6.6/0005-v6.2-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From c3cc0c2a17f552be2426200e47a9e2c62cf449ce Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 19 Aug 2022 00:02:45 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq8074: add thermal nodes
-
-IPQ8074 has a tsens v2.3.0 peripheral which monitors
-temperatures around the various subsystems on the
-die.
-
-So lets add the tsens and thermal zone nodes, passive
-CPU cooling will come in later patches after CPU frequency
-scaling is supported.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20220818220245.338396-5-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 96 +++++++++++++++++++++++++++
- 1 file changed, 96 insertions(+)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -276,6 +276,16 @@
- 			status = "disabled";
- 		};
- 
-+		tsens: thermal-sensor at 4a9000 {
-+			compatible = "qcom,ipq8074-tsens";
-+			reg = <0x4a9000 0x1000>, /* TM */
-+			      <0x4a8000 0x1000>; /* SROT */
-+			interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
-+			interrupt-names = "combined";
-+			#qcom,sensors = <16>;
-+			#thermal-sensor-cells = <1>;
-+		};
-+
- 		cryptobam: dma-controller at 704000 {
- 			compatible = "qcom,bam-v1.7.0";
- 			reg = <0x00704000 0x20000>;
-@@ -876,4 +886,90 @@
- 			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
- 			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
- 	};
-+
-+	thermal-zones {
-+		nss-top-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 4>;
-+		};
-+
-+		nss0-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 5>;
-+		};
-+
-+		nss1-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 6>;
-+		};
-+
-+		wcss-phya0-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 7>;
-+		};
-+
-+		wcss-phya1-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 8>;
-+		};
-+
-+		cpu0_thermal: cpu0-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 9>;
-+		};
-+
-+		cpu1_thermal: cpu1-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 10>;
-+		};
-+
-+		cpu2_thermal: cpu2-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 11>;
-+		};
-+
-+		cpu3_thermal: cpu3-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 12>;
-+		};
-+
-+		cluster_thermal: cluster-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 13>;
-+		};
-+
-+		wcss-phyb0-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 14>;
-+		};
-+
-+		wcss-phyb1-thermal {
-+			polling-delay-passive = <250>;
-+			polling-delay = <1000>;
-+
-+			thermal-sensors = <&tsens 15>;
-+		};
-+	};
- };
diff --git a/target/linux/qualcommax/patches-6.6/0006-v6.2-arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch b/target/linux/qualcommax/patches-6.6/0006-v6.2-arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch
deleted file mode 100644
index 96b49e60bf..0000000000
--- a/target/linux/qualcommax/patches-6.6/0006-v6.2-arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 0df592a0a1a3fff9133977192677aa915afc174f Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 19 Aug 2022 00:08:49 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq8074: add clocks to APCS
-
-APCS now has support for providing the APSS clocks as the child device
-for IPQ8074.
-
-So, add the A53 PLL and XO clocks in order to use APCS as the CPU
-clocksource for APSS scaling.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20220818220849.339732-4-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -682,6 +682,8 @@
- 		apcs_glb: mailbox at b111000 {
- 			compatible = "qcom,ipq8074-apcs-apps-global";
- 			reg = <0x0b111000 0x1000>;
-+			clocks = <&a53pll>, <&xo>;
-+			clock-names = "pll", "xo";
- 
- 			#clock-cells = <1>;
- 			#mbox-cells = <1>;
diff --git a/target/linux/qualcommax/patches-6.6/0007-v6.2-clk-qcom-ipq8074-convert-to-parent-data.patch b/target/linux/qualcommax/patches-6.6/0007-v6.2-clk-qcom-ipq8074-convert-to-parent-data.patch
deleted file mode 100644
index c209adbc06..0000000000
--- a/target/linux/qualcommax/patches-6.6/0007-v6.2-clk-qcom-ipq8074-convert-to-parent-data.patch
+++ /dev/null
@@ -1,3601 +0,0 @@
-From e6c5115d6845f25eda7e162dcd783a2044215867 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Sun, 30 Oct 2022 18:57:01 +0100
-Subject: [PATCH] clk: qcom: ipq8074: convert to parent data
-
-Convert the IPQ8074 GCC driver to use parent data instead of global
-name matching.
-
-Utilize ARRAY_SIZE for num_parents instead of hardcoding the value.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221030175703.1103224-1-robimarko at gmail.com
----
- drivers/clk/qcom/gcc-ipq8074.c | 1781 +++++++++++++++-----------------
- 1 file changed, 813 insertions(+), 968 deletions(-)
-
---- a/drivers/clk/qcom/gcc-ipq8074.c
-+++ b/drivers/clk/qcom/gcc-ipq8074.c
-@@ -49,349 +49,6 @@ enum {
- 	P_UNIPHY2_TX,
- };
- 
--static const char * const gcc_xo_gpll0_gpll0_out_main_div2[] = {
--	"xo",
--	"gpll0",
--	"gpll0_out_main_div2",
--};
--
--static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0, 1 },
--	{ P_GPLL0_DIV2, 4 },
--};
--
--static const struct parent_map gcc_xo_gpll0_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0, 1 },
--};
--
--static const char * const gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
--	"xo",
--	"gpll0",
--	"gpll2",
--	"gpll0_out_main_div2",
--};
--
--static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0, 1 },
--	{ P_GPLL2, 2 },
--	{ P_GPLL0_DIV2, 4 },
--};
--
--static const char * const gcc_xo_gpll0_sleep_clk[] = {
--	"xo",
--	"gpll0",
--	"sleep_clk",
--};
--
--static const struct parent_map gcc_xo_gpll0_sleep_clk_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0, 2 },
--	{ P_SLEEP_CLK, 6 },
--};
--
--static const char * const gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
--	"xo",
--	"gpll6",
--	"gpll0",
--	"gpll0_out_main_div2",
--};
--
--static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL6, 1 },
--	{ P_GPLL0, 3 },
--	{ P_GPLL0_DIV2, 4 },
--};
--
--static const char * const gcc_xo_gpll0_out_main_div2_gpll0[] = {
--	"xo",
--	"gpll0_out_main_div2",
--	"gpll0",
--};
--
--static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0_DIV2, 2 },
--	{ P_GPLL0, 1 },
--};
--
--static const char * const gcc_usb3phy_0_cc_pipe_clk_xo[] = {
--	"usb3phy_0_cc_pipe_clk",
--	"xo",
--};
--
--static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
--	{ P_USB3PHY_0_PIPE, 0 },
--	{ P_XO, 2 },
--};
--
--static const char * const gcc_usb3phy_1_cc_pipe_clk_xo[] = {
--	"usb3phy_1_cc_pipe_clk",
--	"xo",
--};
--
--static const struct parent_map gcc_usb3phy_1_cc_pipe_clk_xo_map[] = {
--	{ P_USB3PHY_1_PIPE, 0 },
--	{ P_XO, 2 },
--};
--
--static const char * const gcc_pcie20_phy0_pipe_clk_xo[] = {
--	"pcie20_phy0_pipe_clk",
--	"xo",
--};
--
--static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
--	{ P_PCIE20_PHY0_PIPE, 0 },
--	{ P_XO, 2 },
--};
--
--static const char * const gcc_pcie20_phy1_pipe_clk_xo[] = {
--	"pcie20_phy1_pipe_clk",
--	"xo",
--};
--
--static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map[] = {
--	{ P_PCIE20_PHY1_PIPE, 0 },
--	{ P_XO, 2 },
--};
--
--static const char * const gcc_xo_gpll0_gpll6_gpll0_div2[] = {
--	"xo",
--	"gpll0",
--	"gpll6",
--	"gpll0_out_main_div2",
--};
--
--static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0, 1 },
--	{ P_GPLL6, 2 },
--	{ P_GPLL0_DIV2, 4 },
--};
--
--static const char * const gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
--	"xo",
--	"gpll0",
--	"gpll6",
--	"gpll0_out_main_div2",
--};
--
--static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0, 1 },
--	{ P_GPLL6, 2 },
--	{ P_GPLL0_DIV2, 3 },
--};
--
--static const char * const gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = {
--	"xo",
--	"bias_pll_nss_noc_clk",
--	"gpll0",
--	"gpll2",
--};
--
--static const struct parent_map gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map[] = {
--	{ P_XO, 0 },
--	{ P_BIAS_PLL_NSS_NOC, 1 },
--	{ P_GPLL0, 2 },
--	{ P_GPLL2, 3 },
--};
--
--static const char * const gcc_xo_nss_crypto_pll_gpll0[] = {
--	"xo",
--	"nss_crypto_pll",
--	"gpll0",
--};
--
--static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
--	{ P_XO, 0 },
--	{ P_NSS_CRYPTO_PLL, 1 },
--	{ P_GPLL0, 2 },
--};
--
--static const char * const gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
--	"xo",
--	"ubi32_pll",
--	"gpll0",
--	"gpll2",
--	"gpll4",
--	"gpll6",
--};
--
--static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
--	{ P_XO, 0 },
--	{ P_UBI32_PLL, 1 },
--	{ P_GPLL0, 2 },
--	{ P_GPLL2, 3 },
--	{ P_GPLL4, 4 },
--	{ P_GPLL6, 5 },
--};
--
--static const char * const gcc_xo_gpll0_out_main_div2[] = {
--	"xo",
--	"gpll0_out_main_div2",
--};
--
--static const struct parent_map gcc_xo_gpll0_out_main_div2_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0_DIV2, 1 },
--};
--
--static const char * const gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
--	"xo",
--	"bias_pll_cc_clk",
--	"gpll0",
--	"gpll4",
--	"nss_crypto_pll",
--	"ubi32_pll",
--};
--
--static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
--	{ P_XO, 0 },
--	{ P_BIAS_PLL, 1 },
--	{ P_GPLL0, 2 },
--	{ P_GPLL4, 3 },
--	{ P_NSS_CRYPTO_PLL, 4 },
--	{ P_UBI32_PLL, 5 },
--};
--
--static const char * const gcc_xo_gpll0_gpll4[] = {
--	"xo",
--	"gpll0",
--	"gpll4",
--};
--
--static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0, 1 },
--	{ P_GPLL4, 2 },
--};
--
--static const char * const gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
--	"xo",
--	"uniphy0_gcc_rx_clk",
--	"uniphy0_gcc_tx_clk",
--	"ubi32_pll",
--	"bias_pll_cc_clk",
--};
--
--static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
--	{ P_XO, 0 },
--	{ P_UNIPHY0_RX, 1 },
--	{ P_UNIPHY0_TX, 2 },
--	{ P_UBI32_PLL, 5 },
--	{ P_BIAS_PLL, 6 },
--};
--
--static const char * const gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
--	"xo",
--	"uniphy0_gcc_tx_clk",
--	"uniphy0_gcc_rx_clk",
--	"ubi32_pll",
--	"bias_pll_cc_clk",
--};
--
--static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
--	{ P_XO, 0 },
--	{ P_UNIPHY0_TX, 1 },
--	{ P_UNIPHY0_RX, 2 },
--	{ P_UBI32_PLL, 5 },
--	{ P_BIAS_PLL, 6 },
--};
--
--static const char * const gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
--	"xo",
--	"uniphy0_gcc_rx_clk",
--	"uniphy0_gcc_tx_clk",
--	"uniphy1_gcc_rx_clk",
--	"uniphy1_gcc_tx_clk",
--	"ubi32_pll",
--	"bias_pll_cc_clk",
--};
--
--static const struct parent_map
--gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
--	{ P_XO, 0 },
--	{ P_UNIPHY0_RX, 1 },
--	{ P_UNIPHY0_TX, 2 },
--	{ P_UNIPHY1_RX, 3 },
--	{ P_UNIPHY1_TX, 4 },
--	{ P_UBI32_PLL, 5 },
--	{ P_BIAS_PLL, 6 },
--};
--
--static const char * const gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
--	"xo",
--	"uniphy0_gcc_tx_clk",
--	"uniphy0_gcc_rx_clk",
--	"uniphy1_gcc_tx_clk",
--	"uniphy1_gcc_rx_clk",
--	"ubi32_pll",
--	"bias_pll_cc_clk",
--};
--
--static const struct parent_map
--gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
--	{ P_XO, 0 },
--	{ P_UNIPHY0_TX, 1 },
--	{ P_UNIPHY0_RX, 2 },
--	{ P_UNIPHY1_TX, 3 },
--	{ P_UNIPHY1_RX, 4 },
--	{ P_UBI32_PLL, 5 },
--	{ P_BIAS_PLL, 6 },
--};
--
--static const char * const gcc_xo_uniphy2_rx_tx_ubi32_bias[] = {
--	"xo",
--	"uniphy2_gcc_rx_clk",
--	"uniphy2_gcc_tx_clk",
--	"ubi32_pll",
--	"bias_pll_cc_clk",
--};
--
--static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = {
--	{ P_XO, 0 },
--	{ P_UNIPHY2_RX, 1 },
--	{ P_UNIPHY2_TX, 2 },
--	{ P_UBI32_PLL, 5 },
--	{ P_BIAS_PLL, 6 },
--};
--
--static const char * const gcc_xo_uniphy2_tx_rx_ubi32_bias[] = {
--	"xo",
--	"uniphy2_gcc_tx_clk",
--	"uniphy2_gcc_rx_clk",
--	"ubi32_pll",
--	"bias_pll_cc_clk",
--};
--
--static const struct parent_map gcc_xo_uniphy2_tx_rx_ubi32_bias_map[] = {
--	{ P_XO, 0 },
--	{ P_UNIPHY2_TX, 1 },
--	{ P_UNIPHY2_RX, 2 },
--	{ P_UBI32_PLL, 5 },
--	{ P_BIAS_PLL, 6 },
--};
--
--static const char * const gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
--	"xo",
--	"gpll0",
--	"gpll6",
--	"gpll0_out_main_div2",
--	"sleep_clk",
--};
--
--static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
--	{ P_XO, 0 },
--	{ P_GPLL0, 1 },
--	{ P_GPLL6, 2 },
--	{ P_GPLL0_DIV2, 4 },
--	{ P_SLEEP_CLK, 6 },
--};
--
- static struct clk_alpha_pll gpll0_main = {
- 	.offset = 0x21000,
- 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
-@@ -400,8 +57,9 @@ static struct clk_alpha_pll gpll0_main =
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gpll0_main",
--			.parent_names = (const char *[]){
--				"xo"
-+			.parent_data = &(const struct clk_parent_data){
-+				.fw_name = "xo",
-+				.name = "xo",
- 			},
- 			.num_parents = 1,
- 			.ops = &clk_alpha_pll_ops,
-@@ -414,9 +72,8 @@ static struct clk_fixed_factor gpll0_out
- 	.div = 2,
- 	.hw.init = &(struct clk_init_data){
- 		.name = "gpll0_out_main_div2",
--		.parent_names = (const char *[]){
--			"gpll0_main"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&gpll0_main.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_fixed_factor_ops,
- 	},
-@@ -428,9 +85,8 @@ static struct clk_alpha_pll_postdiv gpll
- 	.width = 4,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "gpll0",
--		.parent_names = (const char *[]){
--			"gpll0_main"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&gpll0_main.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_alpha_pll_postdiv_ro_ops,
- 	},
-@@ -444,8 +100,9 @@ static struct clk_alpha_pll gpll2_main =
- 		.enable_mask = BIT(2),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gpll2_main",
--			.parent_names = (const char *[]){
--				"xo"
-+			.parent_data = &(const struct clk_parent_data){
-+				.fw_name = "xo",
-+				.name = "xo",
- 			},
- 			.num_parents = 1,
- 			.ops = &clk_alpha_pll_ops,
-@@ -460,9 +117,8 @@ static struct clk_alpha_pll_postdiv gpll
- 	.width = 4,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "gpll2",
--		.parent_names = (const char *[]){
--			"gpll2_main"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&gpll2_main.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_alpha_pll_postdiv_ro_ops,
- 	},
-@@ -476,8 +132,9 @@ static struct clk_alpha_pll gpll4_main =
- 		.enable_mask = BIT(5),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gpll4_main",
--			.parent_names = (const char *[]){
--				"xo"
-+			.parent_data = &(const struct clk_parent_data){
-+				.fw_name = "xo",
-+				.name = "xo",
- 			},
- 			.num_parents = 1,
- 			.ops = &clk_alpha_pll_ops,
-@@ -492,9 +149,8 @@ static struct clk_alpha_pll_postdiv gpll
- 	.width = 4,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "gpll4",
--		.parent_names = (const char *[]){
--			"gpll4_main"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&gpll4_main.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_alpha_pll_postdiv_ro_ops,
- 	},
-@@ -509,8 +165,9 @@ static struct clk_alpha_pll gpll6_main =
- 		.enable_mask = BIT(7),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gpll6_main",
--			.parent_names = (const char *[]){
--				"xo"
-+			.parent_data = &(const struct clk_parent_data){
-+				.fw_name = "xo",
-+				.name = "xo",
- 			},
- 			.num_parents = 1,
- 			.ops = &clk_alpha_pll_ops,
-@@ -525,9 +182,8 @@ static struct clk_alpha_pll_postdiv gpll
- 	.width = 2,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "gpll6",
--		.parent_names = (const char *[]){
--			"gpll6_main"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&gpll6_main.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_alpha_pll_postdiv_ro_ops,
- 	},
-@@ -538,9 +194,8 @@ static struct clk_fixed_factor gpll6_out
- 	.div = 2,
- 	.hw.init = &(struct clk_init_data){
- 		.name = "gpll6_out_main_div2",
--		.parent_names = (const char *[]){
--			"gpll6_main"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&gpll6_main.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_fixed_factor_ops,
- 	},
-@@ -555,8 +210,9 @@ static struct clk_alpha_pll ubi32_pll_ma
- 		.enable_mask = BIT(6),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "ubi32_pll_main",
--			.parent_names = (const char *[]){
--				"xo"
-+			.parent_data = &(const struct clk_parent_data){
-+				.fw_name = "xo",
-+				.name = "xo",
- 			},
- 			.num_parents = 1,
- 			.ops = &clk_alpha_pll_huayra_ops,
-@@ -570,9 +226,8 @@ static struct clk_alpha_pll_postdiv ubi3
- 	.width = 2,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "ubi32_pll",
--		.parent_names = (const char *[]){
--			"ubi32_pll_main"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&ubi32_pll_main.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_alpha_pll_postdiv_ro_ops,
- 		.flags = CLK_SET_RATE_PARENT,
-@@ -587,8 +242,9 @@ static struct clk_alpha_pll nss_crypto_p
- 		.enable_mask = BIT(4),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_crypto_pll_main",
--			.parent_names = (const char *[]){
--				"xo"
-+			.parent_data = &(const struct clk_parent_data){
-+				.fw_name = "xo",
-+				.name = "xo",
- 			},
- 			.num_parents = 1,
- 			.ops = &clk_alpha_pll_ops,
-@@ -602,9 +258,8 @@ static struct clk_alpha_pll_postdiv nss_
- 	.width = 4,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_crypto_pll",
--		.parent_names = (const char *[]){
--			"nss_crypto_pll_main"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&nss_crypto_pll_main.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_alpha_pll_postdiv_ro_ops,
- 	},
-@@ -617,6 +272,18 @@ static const struct freq_tbl ftbl_pcnoc_
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0.clkr.hw},
-+	{ .hw = &gpll0_out_main_div2.hw},
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0, 1 },
-+	{ P_GPLL0_DIV2, 4 },
-+};
-+
- static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
- 	.cmd_rcgr = 0x27000,
- 	.freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
-@@ -624,8 +291,8 @@ static struct clk_rcg2 pcnoc_bfdcd_clk_s
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "pcnoc_bfdcd_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 		.flags = CLK_IS_CRITICAL,
- 	},
-@@ -636,9 +303,8 @@ static struct clk_fixed_factor pcnoc_clk
- 	.div = 1,
- 	.hw.init = &(struct clk_init_data){
- 		.name = "pcnoc_clk_src",
--		.parent_names = (const char *[]){
--			"pcnoc_bfdcd_clk_src"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_bfdcd_clk_src.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_fixed_factor_ops,
- 		.flags = CLK_SET_RATE_PARENT,
-@@ -652,8 +318,9 @@ static struct clk_branch gcc_sleep_clk_s
- 		.enable_mask = BIT(1),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sleep_clk_src",
--			.parent_names = (const char *[]){
--				"sleep_clk"
-+			.parent_data = &(const struct clk_parent_data){
-+				.fw_name = "sleep_clk",
-+				.name = "sleep_clk",
- 			},
- 			.num_parents = 1,
- 			.ops = &clk_branch2_ops,
-@@ -676,8 +343,8 @@ static struct clk_rcg2 blsp1_qup1_i2c_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup1_i2c_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -702,8 +369,8 @@ static struct clk_rcg2 blsp1_qup1_spi_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup1_spi_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -715,8 +382,8 @@ static struct clk_rcg2 blsp1_qup2_i2c_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup2_i2c_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -729,8 +396,8 @@ static struct clk_rcg2 blsp1_qup2_spi_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup2_spi_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -742,8 +409,8 @@ static struct clk_rcg2 blsp1_qup3_i2c_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup3_i2c_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -756,8 +423,8 @@ static struct clk_rcg2 blsp1_qup3_spi_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup3_spi_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -769,8 +436,8 @@ static struct clk_rcg2 blsp1_qup4_i2c_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup4_i2c_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -783,8 +450,8 @@ static struct clk_rcg2 blsp1_qup4_spi_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup4_spi_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -796,8 +463,8 @@ static struct clk_rcg2 blsp1_qup5_i2c_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup5_i2c_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -810,8 +477,8 @@ static struct clk_rcg2 blsp1_qup5_spi_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup5_spi_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -823,8 +490,8 @@ static struct clk_rcg2 blsp1_qup6_i2c_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup6_i2c_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -837,8 +504,8 @@ static struct clk_rcg2 blsp1_qup6_spi_ap
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_qup6_spi_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -871,8 +538,8 @@ static struct clk_rcg2 blsp1_uart1_apps_
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_uart1_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -885,8 +552,8 @@ static struct clk_rcg2 blsp1_uart2_apps_
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_uart2_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -899,8 +566,8 @@ static struct clk_rcg2 blsp1_uart3_apps_
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_uart3_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -913,8 +580,8 @@ static struct clk_rcg2 blsp1_uart4_apps_
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_uart4_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -927,8 +594,8 @@ static struct clk_rcg2 blsp1_uart5_apps_
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_uart5_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -941,8 +608,8 @@ static struct clk_rcg2 blsp1_uart6_apps_
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "blsp1_uart6_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -952,6 +619,11 @@ static const struct clk_parent_data gcc_
- 	{ .hw = &gpll0.clkr.hw },
- };
- 
-+static const struct parent_map gcc_xo_gpll0_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0, 1 },
-+};
-+
- static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
- 	F(19200000, P_XO, 1, 0, 0),
- 	F(200000000, P_GPLL0, 4, 0, 0),
-@@ -966,7 +638,7 @@ static struct clk_rcg2 pcie0_axi_clk_src
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "pcie0_axi_clk_src",
- 		.parent_data = gcc_xo_gpll0,
--		.num_parents = 2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -975,6 +647,18 @@ static const struct freq_tbl ftbl_pcie_a
- 	F(19200000, P_XO, 1, 0, 0),
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_sleep_clk[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_sleep_clk_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0, 2 },
-+	{ P_SLEEP_CLK, 6 },
-+};
-+
- static struct clk_rcg2 pcie0_aux_clk_src = {
- 	.cmd_rcgr = 0x75024,
- 	.freq_tbl = ftbl_pcie_aux_clk_src,
-@@ -983,12 +667,22 @@ static struct clk_rcg2 pcie0_aux_clk_src
- 	.parent_map = gcc_xo_gpll0_sleep_clk_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "pcie0_aux_clk_src",
--		.parent_names = gcc_xo_gpll0_sleep_clk,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_sleep_clk,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_sleep_clk),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
- 
-+static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
-+	{ .name = "pcie20_phy0_pipe_clk" },
-+	{ .fw_name = "xo", .name = "xo" },
-+};
-+
-+static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
-+	{ P_PCIE20_PHY0_PIPE, 0 },
-+	{ P_XO, 2 },
-+};
-+
- static struct clk_regmap_mux pcie0_pipe_clk_src = {
- 	.reg = 0x7501c,
- 	.shift = 8,
-@@ -997,8 +691,8 @@ static struct clk_regmap_mux pcie0_pipe_
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "pcie0_pipe_clk_src",
--			.parent_names = gcc_pcie20_phy0_pipe_clk_xo,
--			.num_parents = 2,
-+			.parent_data = gcc_pcie20_phy0_pipe_clk_xo,
-+			.num_parents = ARRAY_SIZE(gcc_pcie20_phy0_pipe_clk_xo),
- 			.ops = &clk_regmap_mux_closest_ops,
- 			.flags = CLK_SET_RATE_PARENT,
- 		},
-@@ -1013,7 +707,7 @@ static struct clk_rcg2 pcie1_axi_clk_src
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "pcie1_axi_clk_src",
- 		.parent_data = gcc_xo_gpll0,
--		.num_parents = 2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1026,12 +720,22 @@ static struct clk_rcg2 pcie1_aux_clk_src
- 	.parent_map = gcc_xo_gpll0_sleep_clk_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "pcie1_aux_clk_src",
--		.parent_names = gcc_xo_gpll0_sleep_clk,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_sleep_clk,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_sleep_clk),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
- 
-+static const struct clk_parent_data gcc_pcie20_phy1_pipe_clk_xo[] = {
-+	{ .name = "pcie20_phy1_pipe_clk" },
-+	{ .fw_name = "xo", .name = "xo" },
-+};
-+
-+static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map[] = {
-+	{ P_PCIE20_PHY1_PIPE, 0 },
-+	{ P_XO, 2 },
-+};
-+
- static struct clk_regmap_mux pcie1_pipe_clk_src = {
- 	.reg = 0x7601c,
- 	.shift = 8,
-@@ -1040,8 +744,8 @@ static struct clk_regmap_mux pcie1_pipe_
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "pcie1_pipe_clk_src",
--			.parent_names = gcc_pcie20_phy1_pipe_clk_xo,
--			.num_parents = 2,
-+			.parent_data = gcc_pcie20_phy1_pipe_clk_xo,
-+			.num_parents = ARRAY_SIZE(gcc_pcie20_phy1_pipe_clk_xo),
- 			.ops = &clk_regmap_mux_closest_ops,
- 			.flags = CLK_SET_RATE_PARENT,
- 		},
-@@ -1060,6 +764,20 @@ static const struct freq_tbl ftbl_sdcc_a
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll2.clkr.hw },
-+	{ .hw = &gpll0_out_main_div2.hw },
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0, 1 },
-+	{ P_GPLL2, 2 },
-+	{ P_GPLL0_DIV2, 4 },
-+};
-+
- static struct clk_rcg2 sdcc1_apps_clk_src = {
- 	.cmd_rcgr = 0x42004,
- 	.freq_tbl = ftbl_sdcc_apps_clk_src,
-@@ -1068,8 +786,8 @@ static struct clk_rcg2 sdcc1_apps_clk_sr
- 	.parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "sdcc1_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
--		.num_parents = 4,
-+		.parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_floor_ops,
- 	},
- };
-@@ -1080,6 +798,20 @@ static const struct freq_tbl ftbl_sdcc_i
- 	F(308570000, P_GPLL6, 3.5, 0, 0),
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll6.clkr.hw },
-+	{ .hw = &gpll0_out_main_div2.hw },
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0, 1 },
-+	{ P_GPLL6, 2 },
-+	{ P_GPLL0_DIV2, 4 },
-+};
-+
- static struct clk_rcg2 sdcc1_ice_core_clk_src = {
- 	.cmd_rcgr = 0x5d000,
- 	.freq_tbl = ftbl_sdcc_ice_core_clk_src,
-@@ -1088,8 +820,8 @@ static struct clk_rcg2 sdcc1_ice_core_cl
- 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "sdcc1_ice_core_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll6_gpll0_div2,
--		.num_parents = 4,
-+		.parent_data = gcc_xo_gpll0_gpll6_gpll0_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1102,8 +834,8 @@ static struct clk_rcg2 sdcc2_apps_clk_sr
- 	.parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "sdcc2_apps_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
--		.num_parents = 4,
-+		.parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_floor_ops,
- 	},
- };
-@@ -1115,6 +847,18 @@ static const struct freq_tbl ftbl_usb_ma
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0_out_main_div2.hw },
-+	{ .hw = &gpll0.clkr.hw },
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0_DIV2, 2 },
-+	{ P_GPLL0, 1 },
-+};
-+
- static struct clk_rcg2 usb0_master_clk_src = {
- 	.cmd_rcgr = 0x3e00c,
- 	.freq_tbl = ftbl_usb_master_clk_src,
-@@ -1123,8 +867,8 @@ static struct clk_rcg2 usb0_master_clk_s
- 	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "usb0_master_clk_src",
--		.parent_names = gcc_xo_gpll0_out_main_div2_gpll0,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_out_main_div2_gpll0),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1142,8 +886,8 @@ static struct clk_rcg2 usb0_aux_clk_src
- 	.parent_map = gcc_xo_gpll0_sleep_clk_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "usb0_aux_clk_src",
--		.parent_names = gcc_xo_gpll0_sleep_clk,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_sleep_clk,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_sleep_clk),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1155,6 +899,20 @@ static const struct freq_tbl ftbl_usb_mo
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll6.clkr.hw },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll0_out_main_div2.hw },
-+};
-+
-+static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL6, 1 },
-+	{ P_GPLL0, 3 },
-+	{ P_GPLL0_DIV2, 4 },
-+};
-+
- static struct clk_rcg2 usb0_mock_utmi_clk_src = {
- 	.cmd_rcgr = 0x3e020,
- 	.freq_tbl = ftbl_usb_mock_utmi_clk_src,
-@@ -1163,12 +921,22 @@ static struct clk_rcg2 usb0_mock_utmi_cl
- 	.parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "usb0_mock_utmi_clk_src",
--		.parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
--		.num_parents = 4,
-+		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll6_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
- 
-+static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
-+	{ .name = "usb3phy_0_cc_pipe_clk" },
-+	{ .fw_name = "xo", .name = "xo" },
-+};
-+
-+static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
-+	{ P_USB3PHY_0_PIPE, 0 },
-+	{ P_XO, 2 },
-+};
-+
- static struct clk_regmap_mux usb0_pipe_clk_src = {
- 	.reg = 0x3e048,
- 	.shift = 8,
-@@ -1177,8 +945,8 @@ static struct clk_regmap_mux usb0_pipe_c
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "usb0_pipe_clk_src",
--			.parent_names = gcc_usb3phy_0_cc_pipe_clk_xo,
--			.num_parents = 2,
-+			.parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,
-+			.num_parents = ARRAY_SIZE(gcc_usb3phy_0_cc_pipe_clk_xo),
- 			.ops = &clk_regmap_mux_closest_ops,
- 			.flags = CLK_SET_RATE_PARENT,
- 		},
-@@ -1193,8 +961,8 @@ static struct clk_rcg2 usb1_master_clk_s
- 	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "usb1_master_clk_src",
--		.parent_names = gcc_xo_gpll0_out_main_div2_gpll0,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_out_main_div2_gpll0),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1207,8 +975,8 @@ static struct clk_rcg2 usb1_aux_clk_src
- 	.parent_map = gcc_xo_gpll0_sleep_clk_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "usb1_aux_clk_src",
--		.parent_names = gcc_xo_gpll0_sleep_clk,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_sleep_clk,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_sleep_clk),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1221,12 +989,22 @@ static struct clk_rcg2 usb1_mock_utmi_cl
- 	.parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "usb1_mock_utmi_clk_src",
--		.parent_names = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
--		.num_parents = 4,
-+		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll6_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
- 
-+static const struct clk_parent_data gcc_usb3phy_1_cc_pipe_clk_xo[] = {
-+	{ .name = "usb3phy_1_cc_pipe_clk" },
-+	{ .fw_name = "xo", .name = "xo" },
-+};
-+
-+static const struct parent_map gcc_usb3phy_1_cc_pipe_clk_xo_map[] = {
-+	{ P_USB3PHY_1_PIPE, 0 },
-+	{ P_XO, 2 },
-+};
-+
- static struct clk_regmap_mux usb1_pipe_clk_src = {
- 	.reg = 0x3f048,
- 	.shift = 8,
-@@ -1235,8 +1013,8 @@ static struct clk_regmap_mux usb1_pipe_c
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "usb1_pipe_clk_src",
--			.parent_names = gcc_usb3phy_1_cc_pipe_clk_xo,
--			.num_parents = 2,
-+			.parent_data = gcc_usb3phy_1_cc_pipe_clk_xo,
-+			.num_parents = ARRAY_SIZE(gcc_usb3phy_1_cc_pipe_clk_xo),
- 			.ops = &clk_regmap_mux_closest_ops,
- 			.flags = CLK_SET_RATE_PARENT,
- 		},
-@@ -1250,8 +1028,9 @@ static struct clk_branch gcc_xo_clk_src
- 		.enable_mask = BIT(1),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_xo_clk_src",
--			.parent_names = (const char *[]){
--				"xo"
-+			.parent_data = &(const struct clk_parent_data){
-+				.fw_name = "xo",
-+				.name = "xo",
- 			},
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
-@@ -1265,9 +1044,8 @@ static struct clk_fixed_factor gcc_xo_di
- 	.div = 4,
- 	.hw.init = &(struct clk_init_data){
- 		.name = "gcc_xo_div4_clk_src",
--		.parent_names = (const char *[]){
--			"gcc_xo_clk_src"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&gcc_xo_clk_src.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_fixed_factor_ops,
- 		.flags = CLK_SET_RATE_PARENT,
-@@ -1285,6 +1063,20 @@ static const struct freq_tbl ftbl_system
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll6.clkr.hw },
-+	{ .hw = &gpll0_out_main_div2.hw },
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0, 1 },
-+	{ P_GPLL6, 2 },
-+	{ P_GPLL0_DIV2, 3 },
-+};
-+
- static struct clk_rcg2 system_noc_bfdcd_clk_src = {
- 	.cmd_rcgr = 0x26004,
- 	.freq_tbl = ftbl_system_noc_bfdcd_clk_src,
-@@ -1292,8 +1084,8 @@ static struct clk_rcg2 system_noc_bfdcd_
- 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "system_noc_bfdcd_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
--		.num_parents = 4,
-+		.parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 		.flags = CLK_IS_CRITICAL,
- 	},
-@@ -1304,9 +1096,8 @@ static struct clk_fixed_factor system_no
- 	.div = 1,
- 	.hw.init = &(struct clk_init_data){
- 		.name = "system_noc_clk_src",
--		.parent_names = (const char *[]){
--			"system_noc_bfdcd_clk_src"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&system_noc_bfdcd_clk_src.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_fixed_factor_ops,
- 		.flags = CLK_SET_RATE_PARENT,
-@@ -1327,7 +1118,7 @@ static struct clk_rcg2 nss_ce_clk_src =
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_ce_clk_src",
- 		.parent_data = gcc_xo_gpll0,
--		.num_parents = 2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1338,6 +1129,20 @@ static const struct freq_tbl ftbl_nss_no
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .name = "bias_pll_nss_noc_clk" },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll2.clkr.hw },
-+};
-+
-+static const struct parent_map gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map[] = {
-+	{ P_XO, 0 },
-+	{ P_BIAS_PLL_NSS_NOC, 1 },
-+	{ P_GPLL0, 2 },
-+	{ P_GPLL2, 3 },
-+};
-+
- static struct clk_rcg2 nss_noc_bfdcd_clk_src = {
- 	.cmd_rcgr = 0x68088,
- 	.freq_tbl = ftbl_nss_noc_bfdcd_clk_src,
-@@ -1345,8 +1150,8 @@ static struct clk_rcg2 nss_noc_bfdcd_clk
- 	.parent_map = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_noc_bfdcd_clk_src",
--		.parent_names = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2,
--		.num_parents = 4,
-+		.parent_data = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1356,9 +1161,8 @@ static struct clk_fixed_factor nss_noc_c
- 	.div = 1,
- 	.hw.init = &(struct clk_init_data){
- 		.name = "nss_noc_clk_src",
--		.parent_names = (const char *[]){
--			"nss_noc_bfdcd_clk_src"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&nss_noc_bfdcd_clk_src.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_fixed_factor_ops,
- 		.flags = CLK_SET_RATE_PARENT,
-@@ -1371,6 +1175,18 @@ static const struct freq_tbl ftbl_nss_cr
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &nss_crypto_pll.clkr.hw },
-+	{ .hw = &gpll0.clkr.hw },
-+};
-+
-+static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
-+	{ P_XO, 0 },
-+	{ P_NSS_CRYPTO_PLL, 1 },
-+	{ P_GPLL0, 2 },
-+};
-+
- static struct clk_rcg2 nss_crypto_clk_src = {
- 	.cmd_rcgr = 0x68144,
- 	.freq_tbl = ftbl_nss_crypto_clk_src,
-@@ -1379,8 +1195,8 @@ static struct clk_rcg2 nss_crypto_clk_sr
- 	.parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_crypto_clk_src",
--		.parent_names = gcc_xo_nss_crypto_pll_gpll0,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_nss_crypto_pll_gpll0,
-+		.num_parents = ARRAY_SIZE(gcc_xo_nss_crypto_pll_gpll0),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1394,6 +1210,24 @@ static const struct freq_tbl ftbl_nss_ub
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &ubi32_pll.clkr.hw },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll2.clkr.hw },
-+	{ .hw = &gpll4.clkr.hw },
-+	{ .hw = &gpll6.clkr.hw },
-+};
-+
-+static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
-+	{ P_XO, 0 },
-+	{ P_UBI32_PLL, 1 },
-+	{ P_GPLL0, 2 },
-+	{ P_GPLL2, 3 },
-+	{ P_GPLL4, 4 },
-+	{ P_GPLL6, 5 },
-+};
-+
- static struct clk_rcg2 nss_ubi0_clk_src = {
- 	.cmd_rcgr = 0x68104,
- 	.freq_tbl = ftbl_nss_ubi_clk_src,
-@@ -1401,8 +1235,8 @@ static struct clk_rcg2 nss_ubi0_clk_src
- 	.parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_ubi0_clk_src",
--		.parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
--		.num_parents = 6,
-+		.parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
-+		.num_parents = ARRAY_SIZE(gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6),
- 		.ops = &clk_rcg2_ops,
- 		.flags = CLK_SET_RATE_PARENT,
- 	},
-@@ -1415,9 +1249,8 @@ static struct clk_regmap_div nss_ubi0_di
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_ubi0_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_ubi0_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ubi0_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ro_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1432,8 +1265,8 @@ static struct clk_rcg2 nss_ubi1_clk_src
- 	.parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_ubi1_clk_src",
--		.parent_names = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
--		.num_parents = 6,
-+		.parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
-+		.num_parents = ARRAY_SIZE(gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6),
- 		.ops = &clk_rcg2_ops,
- 		.flags = CLK_SET_RATE_PARENT,
- 	},
-@@ -1446,9 +1279,8 @@ static struct clk_regmap_div nss_ubi1_di
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_ubi1_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_ubi1_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ubi1_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ro_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1462,6 +1294,16 @@ static const struct freq_tbl ftbl_ubi_mp
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_out_main_div2[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0_out_main_div2.hw },
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_out_main_div2_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0_DIV2, 1 },
-+};
-+
- static struct clk_rcg2 ubi_mpt_clk_src = {
- 	.cmd_rcgr = 0x68090,
- 	.freq_tbl = ftbl_ubi_mpt_clk_src,
-@@ -1469,8 +1311,8 @@ static struct clk_rcg2 ubi_mpt_clk_src =
- 	.parent_map = gcc_xo_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "ubi_mpt_clk_src",
--		.parent_names = gcc_xo_gpll0_out_main_div2,
--		.num_parents = 2,
-+		.parent_data = gcc_xo_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1481,6 +1323,18 @@ static const struct freq_tbl ftbl_nss_im
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll4.clkr.hw },
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0, 1 },
-+	{ P_GPLL4, 2 },
-+};
-+
- static struct clk_rcg2 nss_imem_clk_src = {
- 	.cmd_rcgr = 0x68158,
- 	.freq_tbl = ftbl_nss_imem_clk_src,
-@@ -1488,8 +1342,8 @@ static struct clk_rcg2 nss_imem_clk_src
- 	.parent_map = gcc_xo_gpll0_gpll4_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_imem_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll4,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll4,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1500,6 +1354,24 @@ static const struct freq_tbl ftbl_nss_pp
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .name = "bias_pll_cc_clk" },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll4.clkr.hw },
-+	{ .hw = &nss_crypto_pll.clkr.hw },
-+	{ .hw = &ubi32_pll.clkr.hw },
-+};
-+
-+static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
-+	{ P_XO, 0 },
-+	{ P_BIAS_PLL, 1 },
-+	{ P_GPLL0, 2 },
-+	{ P_GPLL4, 3 },
-+	{ P_NSS_CRYPTO_PLL, 4 },
-+	{ P_UBI32_PLL, 5 },
-+};
-+
- static struct clk_rcg2 nss_ppe_clk_src = {
- 	.cmd_rcgr = 0x68080,
- 	.freq_tbl = ftbl_nss_ppe_clk_src,
-@@ -1507,8 +1379,8 @@ static struct clk_rcg2 nss_ppe_clk_src =
- 	.parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_ppe_clk_src",
--		.parent_names = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
--		.num_parents = 6,
-+		.parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
-+		.num_parents = ARRAY_SIZE(gcc_xo_bias_gpll0_gpll4_nss_ubi32),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1518,9 +1390,8 @@ static struct clk_fixed_factor nss_ppe_c
- 	.div = 4,
- 	.hw.init = &(struct clk_init_data){
- 		.name = "nss_ppe_cdiv_clk_src",
--		.parent_names = (const char *[]){
--			"nss_ppe_clk_src"
--		},
-+		.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 		.num_parents = 1,
- 		.ops = &clk_fixed_factor_ops,
- 		.flags = CLK_SET_RATE_PARENT,
-@@ -1534,6 +1405,22 @@ static const struct freq_tbl ftbl_nss_po
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .name = "uniphy0_gcc_rx_clk" },
-+	{ .name = "uniphy0_gcc_tx_clk" },
-+	{ .hw = &ubi32_pll.clkr.hw },
-+	{ .name = "bias_pll_cc_clk" },
-+};
-+
-+static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
-+	{ P_XO, 0 },
-+	{ P_UNIPHY0_RX, 1 },
-+	{ P_UNIPHY0_TX, 2 },
-+	{ P_UBI32_PLL, 5 },
-+	{ P_BIAS_PLL, 6 },
-+};
-+
- static struct clk_rcg2 nss_port1_rx_clk_src = {
- 	.cmd_rcgr = 0x68020,
- 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
-@@ -1541,8 +1428,8 @@ static struct clk_rcg2 nss_port1_rx_clk_
- 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port1_rx_clk_src",
--		.parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1554,9 +1441,8 @@ static struct clk_regmap_div nss_port1_r
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port1_rx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port1_rx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port1_rx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1571,6 +1457,22 @@ static const struct freq_tbl ftbl_nss_po
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .name = "uniphy0_gcc_tx_clk" },
-+	{ .name = "uniphy0_gcc_rx_clk" },
-+	{ .hw = &ubi32_pll.clkr.hw },
-+	{ .name = "bias_pll_cc_clk" },
-+};
-+
-+static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
-+	{ P_XO, 0 },
-+	{ P_UNIPHY0_TX, 1 },
-+	{ P_UNIPHY0_RX, 2 },
-+	{ P_UBI32_PLL, 5 },
-+	{ P_BIAS_PLL, 6 },
-+};
-+
- static struct clk_rcg2 nss_port1_tx_clk_src = {
- 	.cmd_rcgr = 0x68028,
- 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
-@@ -1578,8 +1480,8 @@ static struct clk_rcg2 nss_port1_tx_clk_
- 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port1_tx_clk_src",
--		.parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1591,9 +1493,8 @@ static struct clk_regmap_div nss_port1_t
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port1_tx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port1_tx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port1_tx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1608,8 +1509,8 @@ static struct clk_rcg2 nss_port2_rx_clk_
- 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port2_rx_clk_src",
--		.parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1621,9 +1522,8 @@ static struct clk_regmap_div nss_port2_r
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port2_rx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port2_rx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port2_rx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1638,8 +1538,8 @@ static struct clk_rcg2 nss_port2_tx_clk_
- 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port2_tx_clk_src",
--		.parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1651,9 +1551,8 @@ static struct clk_regmap_div nss_port2_t
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port2_tx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port2_tx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port2_tx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1668,8 +1567,8 @@ static struct clk_rcg2 nss_port3_rx_clk_
- 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port3_rx_clk_src",
--		.parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1681,9 +1580,8 @@ static struct clk_regmap_div nss_port3_r
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port3_rx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port3_rx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port3_rx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1698,8 +1596,8 @@ static struct clk_rcg2 nss_port3_tx_clk_
- 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port3_tx_clk_src",
--		.parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1711,9 +1609,8 @@ static struct clk_regmap_div nss_port3_t
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port3_tx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port3_tx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port3_tx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1728,8 +1625,8 @@ static struct clk_rcg2 nss_port4_rx_clk_
- 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port4_rx_clk_src",
--		.parent_names = gcc_xo_uniphy0_rx_tx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1741,9 +1638,8 @@ static struct clk_regmap_div nss_port4_r
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port4_rx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port4_rx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port4_rx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1758,8 +1654,8 @@ static struct clk_rcg2 nss_port4_tx_clk_
- 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port4_tx_clk_src",
--		.parent_names = gcc_xo_uniphy0_tx_rx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1771,9 +1667,8 @@ static struct clk_regmap_div nss_port4_t
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port4_tx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port4_tx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port4_tx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1793,6 +1688,27 @@ static const struct freq_tbl ftbl_nss_po
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .name = "uniphy0_gcc_rx_clk" },
-+	{ .name = "uniphy0_gcc_tx_clk" },
-+	{ .name = "uniphy1_gcc_rx_clk" },
-+	{ .name = "uniphy1_gcc_tx_clk" },
-+	{ .hw = &ubi32_pll.clkr.hw },
-+	{ .name = "bias_pll_cc_clk" },
-+};
-+
-+static const struct parent_map
-+gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
-+	{ P_XO, 0 },
-+	{ P_UNIPHY0_RX, 1 },
-+	{ P_UNIPHY0_TX, 2 },
-+	{ P_UNIPHY1_RX, 3 },
-+	{ P_UNIPHY1_TX, 4 },
-+	{ P_UBI32_PLL, 5 },
-+	{ P_BIAS_PLL, 6 },
-+};
-+
- static struct clk_rcg2 nss_port5_rx_clk_src = {
- 	.cmd_rcgr = 0x68060,
- 	.freq_tbl = ftbl_nss_port5_rx_clk_src,
-@@ -1800,8 +1716,8 @@ static struct clk_rcg2 nss_port5_rx_clk_
- 	.parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port5_rx_clk_src",
--		.parent_names = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
--		.num_parents = 7,
-+		.parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1813,9 +1729,8 @@ static struct clk_regmap_div nss_port5_r
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port5_rx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port5_rx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port5_rx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1835,6 +1750,27 @@ static const struct freq_tbl ftbl_nss_po
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .name = "uniphy0_gcc_tx_clk" },
-+	{ .name = "uniphy0_gcc_rx_clk" },
-+	{ .name = "uniphy1_gcc_tx_clk" },
-+	{ .name = "uniphy1_gcc_rx_clk" },
-+	{ .hw = &ubi32_pll.clkr.hw },
-+	{ .name = "bias_pll_cc_clk" },
-+};
-+
-+static const struct parent_map
-+gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
-+	{ P_XO, 0 },
-+	{ P_UNIPHY0_TX, 1 },
-+	{ P_UNIPHY0_RX, 2 },
-+	{ P_UNIPHY1_TX, 3 },
-+	{ P_UNIPHY1_RX, 4 },
-+	{ P_UBI32_PLL, 5 },
-+	{ P_BIAS_PLL, 6 },
-+};
-+
- static struct clk_rcg2 nss_port5_tx_clk_src = {
- 	.cmd_rcgr = 0x68068,
- 	.freq_tbl = ftbl_nss_port5_tx_clk_src,
-@@ -1842,8 +1778,8 @@ static struct clk_rcg2 nss_port5_tx_clk_
- 	.parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port5_tx_clk_src",
--		.parent_names = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
--		.num_parents = 7,
-+		.parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1855,9 +1791,8 @@ static struct clk_regmap_div nss_port5_t
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port5_tx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port5_tx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port5_tx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1877,6 +1812,22 @@ static const struct freq_tbl ftbl_nss_po
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_uniphy2_rx_tx_ubi32_bias[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .name = "uniphy2_gcc_rx_clk" },
-+	{ .name = "uniphy2_gcc_tx_clk" },
-+	{ .hw = &ubi32_pll.clkr.hw },
-+	{ .name = "bias_pll_cc_clk" },
-+};
-+
-+static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = {
-+	{ P_XO, 0 },
-+	{ P_UNIPHY2_RX, 1 },
-+	{ P_UNIPHY2_TX, 2 },
-+	{ P_UBI32_PLL, 5 },
-+	{ P_BIAS_PLL, 6 },
-+};
-+
- static struct clk_rcg2 nss_port6_rx_clk_src = {
- 	.cmd_rcgr = 0x68070,
- 	.freq_tbl = ftbl_nss_port6_rx_clk_src,
-@@ -1884,8 +1835,8 @@ static struct clk_rcg2 nss_port6_rx_clk_
- 	.parent_map = gcc_xo_uniphy2_rx_tx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port6_rx_clk_src",
--		.parent_names = gcc_xo_uniphy2_rx_tx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy2_rx_tx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy2_rx_tx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1897,9 +1848,8 @@ static struct clk_regmap_div nss_port6_r
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port6_rx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port6_rx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port6_rx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1919,6 +1869,22 @@ static const struct freq_tbl ftbl_nss_po
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_uniphy2_tx_rx_ubi32_bias[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .name = "uniphy2_gcc_tx_clk" },
-+	{ .name = "uniphy2_gcc_rx_clk" },
-+	{ .hw = &ubi32_pll.clkr.hw },
-+	{ .name = "bias_pll_cc_clk" },
-+};
-+
-+static const struct parent_map gcc_xo_uniphy2_tx_rx_ubi32_bias_map[] = {
-+	{ P_XO, 0 },
-+	{ P_UNIPHY2_TX, 1 },
-+	{ P_UNIPHY2_RX, 2 },
-+	{ P_UBI32_PLL, 5 },
-+	{ P_BIAS_PLL, 6 },
-+};
-+
- static struct clk_rcg2 nss_port6_tx_clk_src = {
- 	.cmd_rcgr = 0x68078,
- 	.freq_tbl = ftbl_nss_port6_tx_clk_src,
-@@ -1926,8 +1892,8 @@ static struct clk_rcg2 nss_port6_tx_clk_
- 	.parent_map = gcc_xo_uniphy2_tx_rx_ubi32_bias_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "nss_port6_tx_clk_src",
--		.parent_names = gcc_xo_uniphy2_tx_rx_ubi32_bias,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_uniphy2_tx_rx_ubi32_bias,
-+		.num_parents = ARRAY_SIZE(gcc_xo_uniphy2_tx_rx_ubi32_bias),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1939,9 +1905,8 @@ static struct clk_regmap_div nss_port6_t
- 	.clkr = {
- 		.hw.init = &(struct clk_init_data){
- 			.name = "nss_port6_tx_div_clk_src",
--			.parent_names = (const char *[]){
--				"nss_port6_tx_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port6_tx_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.ops = &clk_regmap_div_ops,
- 			.flags = CLK_SET_RATE_PARENT,
-@@ -1964,8 +1929,8 @@ static struct clk_rcg2 crypto_clk_src =
- 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "crypto_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll0_out_main_div2,
--		.num_parents = 3,
-+		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1975,6 +1940,22 @@ static struct freq_tbl ftbl_gp_clk_src[]
- 	{ }
- };
- 
-+static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
-+	{ .fw_name = "xo", .name = "xo" },
-+	{ .hw = &gpll0.clkr.hw },
-+	{ .hw = &gpll6.clkr.hw },
-+	{ .hw = &gpll0_out_main_div2.hw },
-+	{ .fw_name = "sleep_clk", .name = "sleep_clk" },
-+};
-+
-+static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
-+	{ P_XO, 0 },
-+	{ P_GPLL0, 1 },
-+	{ P_GPLL6, 2 },
-+	{ P_GPLL0_DIV2, 4 },
-+	{ P_SLEEP_CLK, 6 },
-+};
-+
- static struct clk_rcg2 gp1_clk_src = {
- 	.cmd_rcgr = 0x08004,
- 	.freq_tbl = ftbl_gp_clk_src,
-@@ -1983,8 +1964,8 @@ static struct clk_rcg2 gp1_clk_src = {
- 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "gp1_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_sleep_clk),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -1997,8 +1978,8 @@ static struct clk_rcg2 gp2_clk_src = {
- 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "gp2_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_sleep_clk),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -2011,8 +1992,8 @@ static struct clk_rcg2 gp3_clk_src = {
- 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "gp3_clk_src",
--		.parent_names = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
--		.num_parents = 5,
-+		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_sleep_clk),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
-@@ -2024,9 +2005,8 @@ static struct clk_branch gcc_blsp1_ahb_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2041,9 +2021,8 @@ static struct clk_branch gcc_blsp1_qup1_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup1_i2c_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup1_i2c_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2058,9 +2037,8 @@ static struct clk_branch gcc_blsp1_qup1_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup1_spi_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup1_spi_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup1_spi_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2075,9 +2053,8 @@ static struct clk_branch gcc_blsp1_qup2_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup2_i2c_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup2_i2c_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2092,9 +2069,8 @@ static struct clk_branch gcc_blsp1_qup2_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup2_spi_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup2_spi_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup2_spi_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2109,9 +2085,8 @@ static struct clk_branch gcc_blsp1_qup3_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup3_i2c_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup3_i2c_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2126,9 +2101,8 @@ static struct clk_branch gcc_blsp1_qup3_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup3_spi_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup3_spi_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup3_spi_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2143,9 +2117,8 @@ static struct clk_branch gcc_blsp1_qup4_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup4_i2c_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup4_i2c_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2160,9 +2133,8 @@ static struct clk_branch gcc_blsp1_qup4_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup4_spi_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup4_spi_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup4_spi_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2177,9 +2149,8 @@ static struct clk_branch gcc_blsp1_qup5_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup5_i2c_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup5_i2c_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2194,9 +2165,8 @@ static struct clk_branch gcc_blsp1_qup5_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup5_spi_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup5_spi_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup5_spi_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2211,9 +2181,8 @@ static struct clk_branch gcc_blsp1_qup6_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup6_i2c_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup6_i2c_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2228,9 +2197,8 @@ static struct clk_branch gcc_blsp1_qup6_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_qup6_spi_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_qup6_spi_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_qup6_spi_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2245,9 +2213,8 @@ static struct clk_branch gcc_blsp1_uart1
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_uart1_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_uart1_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_uart1_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2262,9 +2229,8 @@ static struct clk_branch gcc_blsp1_uart2
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_uart2_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_uart2_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_uart2_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2279,9 +2245,8 @@ static struct clk_branch gcc_blsp1_uart3
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_uart3_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_uart3_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_uart3_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2296,9 +2261,8 @@ static struct clk_branch gcc_blsp1_uart4
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_uart4_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_uart4_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_uart4_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2313,9 +2277,8 @@ static struct clk_branch gcc_blsp1_uart5
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_uart5_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_uart5_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_uart5_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2330,9 +2293,8 @@ static struct clk_branch gcc_blsp1_uart6
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_blsp1_uart6_apps_clk",
--			.parent_names = (const char *[]){
--				"blsp1_uart6_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&blsp1_uart6_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2348,9 +2310,8 @@ static struct clk_branch gcc_prng_ahb_cl
- 		.enable_mask = BIT(8),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_prng_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2365,9 +2326,8 @@ static struct clk_branch gcc_qpic_ahb_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_qpic_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2382,9 +2342,8 @@ static struct clk_branch gcc_qpic_clk =
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_qpic_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2399,9 +2358,8 @@ static struct clk_branch gcc_pcie0_ahb_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie0_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2416,9 +2374,8 @@ static struct clk_branch gcc_pcie0_aux_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie0_aux_clk",
--			.parent_names = (const char *[]){
--				"pcie0_aux_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie0_aux_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2433,9 +2390,8 @@ static struct clk_branch gcc_pcie0_axi_m
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie0_axi_m_clk",
--			.parent_names = (const char *[]){
--				"pcie0_axi_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie0_axi_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2450,9 +2406,8 @@ static struct clk_branch gcc_pcie0_axi_s
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie0_axi_s_clk",
--			.parent_names = (const char *[]){
--				"pcie0_axi_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie0_axi_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2468,9 +2423,8 @@ static struct clk_branch gcc_pcie0_pipe_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie0_pipe_clk",
--			.parent_names = (const char *[]){
--				"pcie0_pipe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie0_pipe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2485,9 +2439,8 @@ static struct clk_branch gcc_sys_noc_pci
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sys_noc_pcie0_axi_clk",
--			.parent_names = (const char *[]){
--				"pcie0_axi_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie0_axi_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2502,9 +2455,8 @@ static struct clk_branch gcc_pcie1_ahb_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie1_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2519,9 +2471,8 @@ static struct clk_branch gcc_pcie1_aux_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie1_aux_clk",
--			.parent_names = (const char *[]){
--				"pcie1_aux_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie1_aux_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2536,9 +2487,8 @@ static struct clk_branch gcc_pcie1_axi_m
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie1_axi_m_clk",
--			.parent_names = (const char *[]){
--				"pcie1_axi_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie1_axi_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2553,9 +2503,8 @@ static struct clk_branch gcc_pcie1_axi_s
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie1_axi_s_clk",
--			.parent_names = (const char *[]){
--				"pcie1_axi_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie1_axi_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2571,9 +2520,8 @@ static struct clk_branch gcc_pcie1_pipe_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_pcie1_pipe_clk",
--			.parent_names = (const char *[]){
--				"pcie1_pipe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie1_pipe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2588,9 +2536,8 @@ static struct clk_branch gcc_sys_noc_pci
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sys_noc_pcie1_axi_clk",
--			.parent_names = (const char *[]){
--				"pcie1_axi_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcie1_axi_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2605,9 +2552,8 @@ static struct clk_branch gcc_usb0_aux_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb0_aux_clk",
--			.parent_names = (const char *[]){
--				"usb0_aux_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb0_aux_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2622,9 +2568,8 @@ static struct clk_branch gcc_sys_noc_usb
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sys_noc_usb0_axi_clk",
--			.parent_names = (const char *[]){
--				"usb0_master_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb0_master_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2639,9 +2584,8 @@ static struct clk_branch gcc_usb0_master
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb0_master_clk",
--			.parent_names = (const char *[]){
--				"usb0_master_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb0_master_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2656,9 +2600,8 @@ static struct clk_branch gcc_usb0_mock_u
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb0_mock_utmi_clk",
--			.parent_names = (const char *[]){
--				"usb0_mock_utmi_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb0_mock_utmi_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2673,9 +2616,8 @@ static struct clk_branch gcc_usb0_phy_cf
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb0_phy_cfg_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2691,9 +2633,8 @@ static struct clk_branch gcc_usb0_pipe_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb0_pipe_clk",
--			.parent_names = (const char *[]){
--				"usb0_pipe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb0_pipe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2708,9 +2649,8 @@ static struct clk_branch gcc_usb0_sleep_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb0_sleep_clk",
--			.parent_names = (const char *[]){
--				"gcc_sleep_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gcc_sleep_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2725,9 +2665,8 @@ static struct clk_branch gcc_usb1_aux_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb1_aux_clk",
--			.parent_names = (const char *[]){
--				"usb1_aux_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb1_aux_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2742,9 +2681,8 @@ static struct clk_branch gcc_sys_noc_usb
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sys_noc_usb1_axi_clk",
--			.parent_names = (const char *[]){
--				"usb1_master_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb1_master_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2759,9 +2697,8 @@ static struct clk_branch gcc_usb1_master
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb1_master_clk",
--			.parent_names = (const char *[]){
--				"usb1_master_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb1_master_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2776,9 +2713,8 @@ static struct clk_branch gcc_usb1_mock_u
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb1_mock_utmi_clk",
--			.parent_names = (const char *[]){
--				"usb1_mock_utmi_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb1_mock_utmi_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2793,9 +2729,8 @@ static struct clk_branch gcc_usb1_phy_cf
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb1_phy_cfg_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2811,9 +2746,8 @@ static struct clk_branch gcc_usb1_pipe_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb1_pipe_clk",
--			.parent_names = (const char *[]){
--				"usb1_pipe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&usb1_pipe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2828,9 +2762,8 @@ static struct clk_branch gcc_usb1_sleep_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_usb1_sleep_clk",
--			.parent_names = (const char *[]){
--				"gcc_sleep_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gcc_sleep_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2845,9 +2778,8 @@ static struct clk_branch gcc_sdcc1_ahb_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sdcc1_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2862,9 +2794,8 @@ static struct clk_branch gcc_sdcc1_apps_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sdcc1_apps_clk",
--			.parent_names = (const char *[]){
--				"sdcc1_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&sdcc1_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2879,9 +2810,8 @@ static struct clk_branch gcc_sdcc1_ice_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sdcc1_ice_core_clk",
--			.parent_names = (const char *[]){
--				"sdcc1_ice_core_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&sdcc1_ice_core_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2896,9 +2826,8 @@ static struct clk_branch gcc_sdcc2_ahb_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sdcc2_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2913,9 +2842,8 @@ static struct clk_branch gcc_sdcc2_apps_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_sdcc2_apps_clk",
--			.parent_names = (const char *[]){
--				"sdcc2_apps_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&sdcc2_apps_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2930,9 +2858,8 @@ static struct clk_branch gcc_mem_noc_nss
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_mem_noc_nss_axi_clk",
--			.parent_names = (const char *[]){
--				"nss_noc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_noc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2947,9 +2874,8 @@ static struct clk_branch gcc_nss_ce_apb_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_ce_apb_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2964,9 +2890,8 @@ static struct clk_branch gcc_nss_ce_axi_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_ce_axi_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2981,9 +2906,8 @@ static struct clk_branch gcc_nss_cfg_clk
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_cfg_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -2998,9 +2922,8 @@ static struct clk_branch gcc_nss_crypto_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_crypto_clk",
--			.parent_names = (const char *[]){
--				"nss_crypto_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_crypto_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3015,9 +2938,8 @@ static struct clk_branch gcc_nss_csr_clk
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_csr_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3032,9 +2954,8 @@ static struct clk_branch gcc_nss_edma_cf
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_edma_cfg_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3049,9 +2970,8 @@ static struct clk_branch gcc_nss_edma_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_edma_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3066,9 +2986,8 @@ static struct clk_branch gcc_nss_imem_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_imem_clk",
--			.parent_names = (const char *[]){
--				"nss_imem_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_imem_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3083,9 +3002,8 @@ static struct clk_branch gcc_nss_noc_clk
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_noc_clk",
--			.parent_names = (const char *[]){
--				"nss_noc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_noc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3100,9 +3018,8 @@ static struct clk_branch gcc_nss_ppe_btq
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_ppe_btq_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3117,9 +3034,8 @@ static struct clk_branch gcc_nss_ppe_cfg
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_ppe_cfg_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3134,9 +3050,8 @@ static struct clk_branch gcc_nss_ppe_clk
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_ppe_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3151,9 +3066,8 @@ static struct clk_branch gcc_nss_ppe_ipe
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_ppe_ipe_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3168,9 +3082,8 @@ static struct clk_branch gcc_nss_ptp_ref
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_ptp_ref_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_cdiv_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_cdiv_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3186,9 +3099,8 @@ static struct clk_branch gcc_crypto_ppe_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_crypto_ppe_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3203,9 +3115,8 @@ static struct clk_branch gcc_nssnoc_ce_a
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_ce_apb_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3220,9 +3131,8 @@ static struct clk_branch gcc_nssnoc_ce_a
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_ce_axi_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3237,9 +3147,8 @@ static struct clk_branch gcc_nssnoc_cryp
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_crypto_clk",
--			.parent_names = (const char *[]){
--				"nss_crypto_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_crypto_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3254,9 +3163,8 @@ static struct clk_branch gcc_nssnoc_ppe_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_ppe_cfg_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3271,9 +3179,8 @@ static struct clk_branch gcc_nssnoc_ppe_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_ppe_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3288,9 +3195,8 @@ static struct clk_branch gcc_nssnoc_qosg
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_qosgen_ref_clk",
--			.parent_names = (const char *[]){
--				"gcc_xo_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gcc_xo_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3305,9 +3211,8 @@ static struct clk_branch gcc_nssnoc_snoc
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_snoc_clk",
--			.parent_names = (const char *[]){
--				"system_noc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&system_noc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3322,9 +3227,8 @@ static struct clk_branch gcc_nssnoc_time
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_timeout_ref_clk",
--			.parent_names = (const char *[]){
--				"gcc_xo_div4_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gcc_xo_div4_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3339,9 +3243,8 @@ static struct clk_branch gcc_nssnoc_ubi0
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_ubi0_ahb_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3356,9 +3259,8 @@ static struct clk_branch gcc_nssnoc_ubi1
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nssnoc_ubi1_ahb_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3374,9 +3276,8 @@ static struct clk_branch gcc_ubi0_ahb_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi0_ahb_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3392,9 +3293,8 @@ static struct clk_branch gcc_ubi0_axi_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi0_axi_clk",
--			.parent_names = (const char *[]){
--				"nss_noc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_noc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3410,9 +3310,8 @@ static struct clk_branch gcc_ubi0_nc_axi
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi0_nc_axi_clk",
--			.parent_names = (const char *[]){
--				"nss_noc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_noc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3428,9 +3327,8 @@ static struct clk_branch gcc_ubi0_core_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi0_core_clk",
--			.parent_names = (const char *[]){
--				"nss_ubi0_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ubi0_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3446,9 +3344,8 @@ static struct clk_branch gcc_ubi0_mpt_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi0_mpt_clk",
--			.parent_names = (const char *[]){
--				"ubi_mpt_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&ubi_mpt_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3464,9 +3361,8 @@ static struct clk_branch gcc_ubi1_ahb_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi1_ahb_clk",
--			.parent_names = (const char *[]){
--				"nss_ce_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ce_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3482,9 +3378,8 @@ static struct clk_branch gcc_ubi1_axi_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi1_axi_clk",
--			.parent_names = (const char *[]){
--				"nss_noc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_noc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3500,9 +3395,8 @@ static struct clk_branch gcc_ubi1_nc_axi
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi1_nc_axi_clk",
--			.parent_names = (const char *[]){
--				"nss_noc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_noc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3518,9 +3412,8 @@ static struct clk_branch gcc_ubi1_core_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi1_core_clk",
--			.parent_names = (const char *[]){
--				"nss_ubi1_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ubi1_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3536,9 +3429,8 @@ static struct clk_branch gcc_ubi1_mpt_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_ubi1_mpt_clk",
--			.parent_names = (const char *[]){
--				"ubi_mpt_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&ubi_mpt_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3553,9 +3445,8 @@ static struct clk_branch gcc_cmn_12gpll_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_cmn_12gpll_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3570,9 +3461,8 @@ static struct clk_branch gcc_cmn_12gpll_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_cmn_12gpll_sys_clk",
--			.parent_names = (const char *[]){
--				"gcc_xo_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gcc_xo_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3587,9 +3477,8 @@ static struct clk_branch gcc_mdio_ahb_cl
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_mdio_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3604,9 +3493,8 @@ static struct clk_branch gcc_uniphy0_ahb
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3621,9 +3509,8 @@ static struct clk_branch gcc_uniphy0_sys
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_sys_clk",
--			.parent_names = (const char *[]){
--				"gcc_xo_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gcc_xo_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3638,9 +3525,8 @@ static struct clk_branch gcc_uniphy1_ahb
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy1_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3655,9 +3541,8 @@ static struct clk_branch gcc_uniphy1_sys
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy1_sys_clk",
--			.parent_names = (const char *[]){
--				"gcc_xo_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gcc_xo_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3672,9 +3557,8 @@ static struct clk_branch gcc_uniphy2_ahb
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy2_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3689,9 +3573,8 @@ static struct clk_branch gcc_uniphy2_sys
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy2_sys_clk",
--			.parent_names = (const char *[]){
--				"gcc_xo_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gcc_xo_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3706,9 +3589,8 @@ static struct clk_branch gcc_nss_port1_r
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port1_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port1_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port1_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3723,9 +3605,8 @@ static struct clk_branch gcc_nss_port1_t
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port1_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port1_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port1_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3740,9 +3621,8 @@ static struct clk_branch gcc_nss_port2_r
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port2_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port2_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port2_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3757,9 +3637,8 @@ static struct clk_branch gcc_nss_port2_t
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port2_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port2_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port2_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3774,9 +3653,8 @@ static struct clk_branch gcc_nss_port3_r
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port3_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port3_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port3_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3791,9 +3669,8 @@ static struct clk_branch gcc_nss_port3_t
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port3_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port3_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port3_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3808,9 +3685,8 @@ static struct clk_branch gcc_nss_port4_r
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port4_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port4_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port4_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3825,9 +3701,8 @@ static struct clk_branch gcc_nss_port4_t
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port4_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port4_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port4_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3842,9 +3717,8 @@ static struct clk_branch gcc_nss_port5_r
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port5_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port5_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port5_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3859,9 +3733,8 @@ static struct clk_branch gcc_nss_port5_t
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port5_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port5_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port5_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3876,9 +3749,8 @@ static struct clk_branch gcc_nss_port6_r
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port6_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port6_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port6_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3893,9 +3765,8 @@ static struct clk_branch gcc_nss_port6_t
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_nss_port6_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port6_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port6_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3910,9 +3781,8 @@ static struct clk_branch gcc_port1_mac_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_port1_mac_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3927,9 +3797,8 @@ static struct clk_branch gcc_port2_mac_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_port2_mac_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3944,9 +3813,8 @@ static struct clk_branch gcc_port3_mac_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_port3_mac_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3961,9 +3829,8 @@ static struct clk_branch gcc_port4_mac_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_port4_mac_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3978,9 +3845,8 @@ static struct clk_branch gcc_port5_mac_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_port5_mac_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -3995,9 +3861,8 @@ static struct clk_branch gcc_port6_mac_c
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_port6_mac_clk",
--			.parent_names = (const char *[]){
--				"nss_ppe_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_ppe_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4012,9 +3877,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port1_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port1_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port1_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4029,9 +3893,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port1_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port1_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port1_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4046,9 +3909,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port2_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port2_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port2_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4063,9 +3925,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port2_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port2_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port2_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4080,9 +3941,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port3_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port3_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port3_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4097,9 +3957,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port3_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port3_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port3_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4114,9 +3973,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port4_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port4_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port4_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4131,9 +3989,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port4_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port4_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port4_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4148,9 +4005,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port5_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port5_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port5_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4165,9 +4021,8 @@ static struct clk_branch gcc_uniphy0_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy0_port5_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port5_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port5_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4182,9 +4037,8 @@ static struct clk_branch gcc_uniphy1_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy1_port5_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port5_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port5_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4199,9 +4053,8 @@ static struct clk_branch gcc_uniphy1_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy1_port5_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port5_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port5_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4216,9 +4069,8 @@ static struct clk_branch gcc_uniphy2_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy2_port6_rx_clk",
--			.parent_names = (const char *[]){
--				"nss_port6_rx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port6_rx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4233,9 +4085,8 @@ static struct clk_branch gcc_uniphy2_por
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_uniphy2_port6_tx_clk",
--			.parent_names = (const char *[]){
--				"nss_port6_tx_div_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&nss_port6_tx_div_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4251,9 +4102,8 @@ static struct clk_branch gcc_crypto_ahb_
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_crypto_ahb_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4269,9 +4119,8 @@ static struct clk_branch gcc_crypto_axi_
- 		.enable_mask = BIT(1),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_crypto_axi_clk",
--			.parent_names = (const char *[]){
--				"pcnoc_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&pcnoc_clk_src.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4287,9 +4136,8 @@ static struct clk_branch gcc_crypto_clk
- 		.enable_mask = BIT(2),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_crypto_clk",
--			.parent_names = (const char *[]){
--				"crypto_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&crypto_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4304,9 +4152,8 @@ static struct clk_branch gcc_gp1_clk = {
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_gp1_clk",
--			.parent_names = (const char *[]){
--				"gp1_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gp1_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4321,9 +4168,8 @@ static struct clk_branch gcc_gp2_clk = {
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_gp2_clk",
--			.parent_names = (const char *[]){
--				"gp2_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gp2_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4338,9 +4184,8 @@ static struct clk_branch gcc_gp3_clk = {
- 		.enable_mask = BIT(0),
- 		.hw.init = &(struct clk_init_data){
- 			.name = "gcc_gp3_clk",
--			.parent_names = (const char *[]){
--				"gp3_clk_src"
--			},
-+			.parent_hws = (const struct clk_hw *[]){
-+				&gp3_clk_src.clkr.hw },
- 			.num_parents = 1,
- 			.flags = CLK_SET_RATE_PARENT,
- 			.ops = &clk_branch2_ops,
-@@ -4362,7 +4207,7 @@ static struct clk_rcg2 pcie0_rchng_clk_s
- 	.clkr.hw.init = &(struct clk_init_data){
- 		.name = "pcie0_rchng_clk_src",
- 		.parent_data = gcc_xo_gpll0,
--		.num_parents = 2,
-+		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
- 		.ops = &clk_rcg2_ops,
- 	},
- };
diff --git a/target/linux/qualcommax/patches-6.6/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch b/target/linux/qualcommax/patches-6.6/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch
deleted file mode 100644
index a87ae4b8ad..0000000000
--- a/target/linux/qualcommax/patches-6.6/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 8857b0ab6a562c473c5bded0efda9390b82a84d4 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Tue, 27 Sep 2022 22:12:17 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq6018: fix NAND node name
-
-Per schema it should be nand-controller at 79b0000 instead of nand at 79b0000.
-Fix it to match nand-controller.yaml requirements.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20220927201218.1264506-1-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -348,7 +348,7 @@
- 			status = "disabled";
- 		};
- 
--		qpic_nand: nand at 79b0000 {
-+		qpic_nand: nand-controller at 79b0000 {
- 			compatible = "qcom,ipq6018-nand";
- 			reg = <0x0 0x079b0000 0x0 0x10000>;
- 			#address-cells = <1>;
diff --git a/target/linux/qualcommax/patches-6.6/0009-v6.2-dt-bindings-clock-qcom-ipq8074-add-missing-networkin.patch b/target/linux/qualcommax/patches-6.6/0009-v6.2-dt-bindings-clock-qcom-ipq8074-add-missing-networkin.patch
deleted file mode 100644
index 75f16a1673..0000000000
--- a/target/linux/qualcommax/patches-6.6/0009-v6.2-dt-bindings-clock-qcom-ipq8074-add-missing-networkin.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From e78a40eb24187a8b4f9b89e2181f674df39c2013 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Mon, 7 Nov 2022 14:29:00 +0100
-Subject: [PATCH] dt-bindings: clock: qcom: ipq8074: add missing networking
- resets
-
-Add bindings for the missing networking resets found in IPQ8074 GCC.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221107132901.489240-2-robimarko at gmail.com
----
- include/dt-bindings/clock/qcom,gcc-ipq8074.h | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
---- a/include/dt-bindings/clock/qcom,gcc-ipq8074.h
-+++ b/include/dt-bindings/clock/qcom,gcc-ipq8074.h
-@@ -367,6 +367,20 @@
- #define GCC_PCIE1_AHB_ARES			129
- #define GCC_PCIE1_AXI_MASTER_STICKY_ARES	130
- #define GCC_PCIE0_AXI_SLAVE_STICKY_ARES		131
-+#define GCC_PPE_FULL_RESET			132
-+#define GCC_UNIPHY0_SOFT_RESET			133
-+#define GCC_UNIPHY0_XPCS_RESET			134
-+#define GCC_UNIPHY1_SOFT_RESET			135
-+#define GCC_UNIPHY1_XPCS_RESET			136
-+#define GCC_UNIPHY2_SOFT_RESET			137
-+#define GCC_UNIPHY2_XPCS_RESET			138
-+#define GCC_EDMA_HW_RESET			139
-+#define GCC_NSSPORT1_RESET			140
-+#define GCC_NSSPORT2_RESET			141
-+#define GCC_NSSPORT3_RESET			142
-+#define GCC_NSSPORT4_RESET			143
-+#define GCC_NSSPORT5_RESET			144
-+#define GCC_NSSPORT6_RESET			145
- 
- #define USB0_GDSC				0
- #define USB1_GDSC				1
diff --git a/target/linux/qualcommax/patches-6.6/0010-v6.2-clk-qcom-ipq8074-add-missing-networking-resets.patch b/target/linux/qualcommax/patches-6.6/0010-v6.2-clk-qcom-ipq8074-add-missing-networking-resets.patch
deleted file mode 100644
index 81014ab24c..0000000000
--- a/target/linux/qualcommax/patches-6.6/0010-v6.2-clk-qcom-ipq8074-add-missing-networking-resets.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From da76cb63d04dc22ed32123b8c1d084c006d67bfb Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Mon, 7 Nov 2022 14:29:01 +0100
-Subject: [PATCH] clk: qcom: ipq8074: add missing networking resets
-
-Downstream QCA 5.4 kernel defines networking resets which are not present
-in the mainline kernel but are required for the networking drivers.
-
-So, port the downstream resets and avoid using magic values for mask,
-construct mask for resets which require multiple bits to be set/cleared.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221107132901.489240-3-robimarko at gmail.com
----
- drivers/clk/qcom/gcc-ipq8074.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
---- a/drivers/clk/qcom/gcc-ipq8074.c
-+++ b/drivers/clk/qcom/gcc-ipq8074.c
-@@ -4665,6 +4665,20 @@ static const struct qcom_reset_map gcc_i
- 	[GCC_PCIE1_AXI_SLAVE_ARES] = { 0x76040, 4 },
- 	[GCC_PCIE1_AHB_ARES] = { 0x76040, 5 },
- 	[GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 },
-+	[GCC_PPE_FULL_RESET] = { .reg = 0x68014, .bitmask = GENMASK(19, 16) },
-+	[GCC_UNIPHY0_SOFT_RESET] = { .reg = 0x56004, .bitmask = GENMASK(13, 4) | BIT(1) },
-+	[GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 },
-+	[GCC_UNIPHY1_SOFT_RESET] = { .reg = 0x56104, .bitmask = GENMASK(5, 4) | BIT(1) },
-+	[GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 },
-+	[GCC_UNIPHY2_SOFT_RESET] = { .reg = 0x56204, .bitmask = GENMASK(5, 4) | BIT(1) },
-+	[GCC_UNIPHY2_XPCS_RESET] = { 0x56204, 2 },
-+	[GCC_EDMA_HW_RESET] = { .reg = 0x68014, .bitmask = GENMASK(21, 20) },
-+	[GCC_NSSPORT1_RESET] = { .reg = 0x68014, .bitmask = BIT(24) | GENMASK(1, 0) },
-+	[GCC_NSSPORT2_RESET] = { .reg = 0x68014, .bitmask = BIT(25) | GENMASK(3, 2) },
-+	[GCC_NSSPORT3_RESET] = { .reg = 0x68014, .bitmask = BIT(26) | GENMASK(5, 4) },
-+	[GCC_NSSPORT4_RESET] = { .reg = 0x68014, .bitmask = BIT(27) | GENMASK(9, 8) },
-+	[GCC_NSSPORT5_RESET] = { .reg = 0x68014, .bitmask = BIT(28) | GENMASK(11, 10) },
-+	[GCC_NSSPORT6_RESET] = { .reg = 0x68014, .bitmask = BIT(29) | GENMASK(13, 12) },
- };
- 
- static struct gdsc *gcc_ipq8074_gdscs[] = {
diff --git a/target/linux/qualcommax/patches-6.6/0011-v6.2-clk-qcom-ipq8074-populate-fw_name-for-all-parents.patch b/target/linux/qualcommax/patches-6.6/0011-v6.2-clk-qcom-ipq8074-populate-fw_name-for-all-parents.patch
deleted file mode 100644
index 35a0a07c70..0000000000
--- a/target/linux/qualcommax/patches-6.6/0011-v6.2-clk-qcom-ipq8074-populate-fw_name-for-all-parents.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From 78936d46470938caa9a7ea529deeb36777b4f98e Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Wed, 16 Nov 2022 22:46:55 +0100
-Subject: [PATCH] clk: qcom: ipq8074: populate fw_name for all parents
-
-It appears that having only .name populated in parent_data for clocks
-which are only globally searchable currently will not work as the clk core
-won't copy that name if there is no .fw_name present as well.
-
-So, populate .fw_name for all parent clocks in parent_data.
-
-Fixes: ae55ad32e273 ("clk: qcom: ipq8074: convert to parent data")
-
-Co-developed-by: Christian Marangi <ansuelsmth at gmail.com>
-Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221116214655.1116467-1-robimarko at gmail.com
----
- drivers/clk/qcom/gcc-ipq8074.c | 52 +++++++++++++++++-----------------
- 1 file changed, 26 insertions(+), 26 deletions(-)
-
---- a/drivers/clk/qcom/gcc-ipq8074.c
-+++ b/drivers/clk/qcom/gcc-ipq8074.c
-@@ -674,7 +674,7 @@ static struct clk_rcg2 pcie0_aux_clk_src
- };
- 
- static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
--	{ .name = "pcie20_phy0_pipe_clk" },
-+	{ .fw_name = "pcie0_pipe", .name = "pcie20_phy0_pipe_clk" },
- 	{ .fw_name = "xo", .name = "xo" },
- };
- 
-@@ -727,7 +727,7 @@ static struct clk_rcg2 pcie1_aux_clk_src
- };
- 
- static const struct clk_parent_data gcc_pcie20_phy1_pipe_clk_xo[] = {
--	{ .name = "pcie20_phy1_pipe_clk" },
-+	{ .fw_name = "pcie1_pipe", .name = "pcie20_phy1_pipe_clk" },
- 	{ .fw_name = "xo", .name = "xo" },
- };
- 
-@@ -1131,7 +1131,7 @@ static const struct freq_tbl ftbl_nss_no
- 
- static const struct clk_parent_data gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = {
- 	{ .fw_name = "xo", .name = "xo" },
--	{ .name = "bias_pll_nss_noc_clk" },
-+	{ .fw_name = "bias_pll_nss_noc_clk", .name = "bias_pll_nss_noc_clk" },
- 	{ .hw = &gpll0.clkr.hw },
- 	{ .hw = &gpll2.clkr.hw },
- };
-@@ -1356,7 +1356,7 @@ static const struct freq_tbl ftbl_nss_pp
- 
- static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
- 	{ .fw_name = "xo", .name = "xo" },
--	{ .name = "bias_pll_cc_clk" },
-+	{ .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },
- 	{ .hw = &gpll0.clkr.hw },
- 	{ .hw = &gpll4.clkr.hw },
- 	{ .hw = &nss_crypto_pll.clkr.hw },
-@@ -1407,10 +1407,10 @@ static const struct freq_tbl ftbl_nss_po
- 
- static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
- 	{ .fw_name = "xo", .name = "xo" },
--	{ .name = "uniphy0_gcc_rx_clk" },
--	{ .name = "uniphy0_gcc_tx_clk" },
-+	{ .fw_name = "uniphy0_gcc_rx_clk", .name = "uniphy0_gcc_rx_clk" },
-+	{ .fw_name = "uniphy0_gcc_tx_clk", .name = "uniphy0_gcc_tx_clk" },
- 	{ .hw = &ubi32_pll.clkr.hw },
--	{ .name = "bias_pll_cc_clk" },
-+	{ .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },
- };
- 
- static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
-@@ -1459,10 +1459,10 @@ static const struct freq_tbl ftbl_nss_po
- 
- static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
- 	{ .fw_name = "xo", .name = "xo" },
--	{ .name = "uniphy0_gcc_tx_clk" },
--	{ .name = "uniphy0_gcc_rx_clk" },
-+	{ .fw_name = "uniphy0_gcc_tx_clk", .name = "uniphy0_gcc_tx_clk" },
-+	{ .fw_name = "uniphy0_gcc_rx_clk", .name = "uniphy0_gcc_rx_clk" },
- 	{ .hw = &ubi32_pll.clkr.hw },
--	{ .name = "bias_pll_cc_clk" },
-+	{ .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },
- };
- 
- static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
-@@ -1690,12 +1690,12 @@ static const struct freq_tbl ftbl_nss_po
- 
- static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
- 	{ .fw_name = "xo", .name = "xo" },
--	{ .name = "uniphy0_gcc_rx_clk" },
--	{ .name = "uniphy0_gcc_tx_clk" },
--	{ .name = "uniphy1_gcc_rx_clk" },
--	{ .name = "uniphy1_gcc_tx_clk" },
-+	{ .fw_name = "uniphy0_gcc_rx_clk", .name = "uniphy0_gcc_rx_clk" },
-+	{ .fw_name = "uniphy0_gcc_tx_clk", .name = "uniphy0_gcc_tx_clk" },
-+	{ .fw_name = "uniphy1_gcc_rx_clk", .name = "uniphy1_gcc_rx_clk" },
-+	{ .fw_name = "uniphy1_gcc_tx_clk", .name = "uniphy1_gcc_tx_clk" },
- 	{ .hw = &ubi32_pll.clkr.hw },
--	{ .name = "bias_pll_cc_clk" },
-+	{ .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },
- };
- 
- static const struct parent_map
-@@ -1752,12 +1752,12 @@ static const struct freq_tbl ftbl_nss_po
- 
- static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
- 	{ .fw_name = "xo", .name = "xo" },
--	{ .name = "uniphy0_gcc_tx_clk" },
--	{ .name = "uniphy0_gcc_rx_clk" },
--	{ .name = "uniphy1_gcc_tx_clk" },
--	{ .name = "uniphy1_gcc_rx_clk" },
-+	{ .fw_name = "uniphy0_gcc_tx_clk", .name = "uniphy0_gcc_tx_clk" },
-+	{ .fw_name = "uniphy0_gcc_rx_clk", .name = "uniphy0_gcc_rx_clk" },
-+	{ .fw_name = "uniphy1_gcc_tx_clk", .name = "uniphy1_gcc_tx_clk" },
-+	{ .fw_name = "uniphy1_gcc_rx_clk", .name = "uniphy1_gcc_rx_clk" },
- 	{ .hw = &ubi32_pll.clkr.hw },
--	{ .name = "bias_pll_cc_clk" },
-+	{ .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },
- };
- 
- static const struct parent_map
-@@ -1814,10 +1814,10 @@ static const struct freq_tbl ftbl_nss_po
- 
- static const struct clk_parent_data gcc_xo_uniphy2_rx_tx_ubi32_bias[] = {
- 	{ .fw_name = "xo", .name = "xo" },
--	{ .name = "uniphy2_gcc_rx_clk" },
--	{ .name = "uniphy2_gcc_tx_clk" },
-+	{ .fw_name = "uniphy2_gcc_rx_clk", .name = "uniphy2_gcc_rx_clk" },
-+	{ .fw_name = "uniphy2_gcc_tx_clk", .name = "uniphy2_gcc_tx_clk" },
- 	{ .hw = &ubi32_pll.clkr.hw },
--	{ .name = "bias_pll_cc_clk" },
-+	{ .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },
- };
- 
- static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = {
-@@ -1871,10 +1871,10 @@ static const struct freq_tbl ftbl_nss_po
- 
- static const struct clk_parent_data gcc_xo_uniphy2_tx_rx_ubi32_bias[] = {
- 	{ .fw_name = "xo", .name = "xo" },
--	{ .name = "uniphy2_gcc_tx_clk" },
--	{ .name = "uniphy2_gcc_rx_clk" },
-+	{ .fw_name = "uniphy2_gcc_tx_clk", .name = "uniphy2_gcc_tx_clk" },
-+	{ .fw_name = "uniphy2_gcc_rx_clk", .name = "uniphy2_gcc_rx_clk" },
- 	{ .hw = &ubi32_pll.clkr.hw },
--	{ .name = "bias_pll_cc_clk" },
-+	{ .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },
- };
- 
- static const struct parent_map gcc_xo_uniphy2_tx_rx_ubi32_bias_map[] = {
diff --git a/target/linux/qualcommax/patches-6.6/0012-v6.2-arm64-dts-qcom-ipq8074-pass-XO-and-sleep-clocks-to-G.patch b/target/linux/qualcommax/patches-6.6/0012-v6.2-arm64-dts-qcom-ipq8074-pass-XO-and-sleep-clocks-to-G.patch
deleted file mode 100644
index 0f3fdfe4d4..0000000000
--- a/target/linux/qualcommax/patches-6.6/0012-v6.2-arm64-dts-qcom-ipq8074-pass-XO-and-sleep-clocks-to-G.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 9033c3c86ea0dd35bd2ab957317573b755967298 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Sun, 30 Oct 2022 18:57:03 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq8074: pass XO and sleep clocks to GCC
-
-Pass XO and sleep clocks to the GCC controller so it does not have to
-find them by matching globaly by name.
-
-If not passed directly, driver maintains backwards compatibility by then
-falling back to global lookup.
-
-Since we are here, set cell numbers in decimal instead of hex.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221030175703.1103224-3-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -363,9 +363,11 @@
- 		gcc: gcc at 1800000 {
- 			compatible = "qcom,gcc-ipq8074";
- 			reg = <0x01800000 0x80000>;
--			#clock-cells = <0x1>;
-+			clocks = <&xo>, <&sleep_clk>;
-+			clock-names = "xo", "sleep_clk";
-+			#clock-cells = <1>;
- 			#power-domain-cells = <1>;
--			#reset-cells = <0x1>;
-+			#reset-cells = <1>;
- 		};
- 
- 		tcsr_mutex: hwlock at 1905000 {
diff --git a/target/linux/qualcommax/patches-6.6/0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch b/target/linux/qualcommax/patches-6.6/0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch
deleted file mode 100644
index cd146420cf..0000000000
--- a/target/linux/qualcommax/patches-6.6/0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From fb76b808f8628215afebaf0f8af0bde635302590 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 19 Aug 2022 00:18:14 +0200
-Subject: [PATCH] arm64: dts: qcom: add PMP8074 DTSI
-
-PMP8074 is a companion PMIC to the Qualcomm IPQ8074 series that is
-controlled via SPMI.
-
-Add DTSI for it providing GPIO, regulator, RTC and VADC support.
-
-RTC is disabled by default as there is no built-in battery so it will
-loose time unless board vendor added a battery, so make it optional.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20220818221815.346233-4-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/pmp8074.dtsi | 125 ++++++++++++++++++++++++++
- 1 file changed, 125 insertions(+)
- create mode 100644 arch/arm64/boot/dts/qcom/pmp8074.dtsi
-
---- /dev/null
-+++ b/arch/arm64/boot/dts/qcom/pmp8074.dtsi
-@@ -0,0 +1,125 @@
-+// SPDX-License-Identifier: GPL-2.0-only OR BSD-3-Clause
-+
-+#include <dt-bindings/spmi/spmi.h>
-+#include <dt-bindings/iio/qcom,spmi-vadc.h>
-+
-+&spmi_bus {
-+	pmic at 0 {
-+		compatible = "qcom,pmp8074", "qcom,spmi-pmic";
-+		reg = <0x0 SPMI_USID>;
-+		#address-cells = <1>;
-+		#size-cells = <0>;
-+
-+		pmp8074_adc: adc at 3100 {
-+			compatible = "qcom,spmi-adc-rev2";
-+			reg = <0x3100>;
-+			interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
-+			#address-cells = <1>;
-+			#size-cells = <0>;
-+			#io-channel-cells = <1>;
-+
-+			ref-gnd at 0 {
-+				reg = <ADC5_REF_GND>;
-+				qcom,pre-scaling = <1 1>;
-+			};
-+
-+			vref-1p25 at 1 {
-+				reg = <ADC5_1P25VREF>;
-+				qcom,pre-scaling = <1 1>;
-+			};
-+
-+			vref-vadc at 2 {
-+				reg = <ADC5_VREF_VADC>;
-+				qcom,pre-scaling = <1 1>;
-+			};
-+
-+			pmic_die: die-temp at 6 {
-+				reg = <ADC5_DIE_TEMP>;
-+				qcom,pre-scaling = <1 1>;
-+			};
-+
-+			xo_therm: xo-temp at 76 {
-+				reg = <ADC5_XO_THERM_100K_PU>;
-+				qcom,ratiometric;
-+				qcom,hw-settle-time = <200>;
-+				qcom,pre-scaling = <1 1>;
-+			};
-+
-+			pa_therm1: thermistor1 at 77 {
-+				reg = <ADC5_AMUX_THM1_100K_PU>;
-+				qcom,ratiometric;
-+				qcom,hw-settle-time = <200>;
-+				qcom,pre-scaling = <1 1>;
-+			};
-+
-+			pa_therm2: thermistor2 at 78 {
-+				reg = <ADC5_AMUX_THM2_100K_PU>;
-+				qcom,ratiometric;
-+				qcom,hw-settle-time = <200>;
-+				qcom,pre-scaling = <1 1>;
-+			};
-+
-+			pa_therm3: thermistor3 at 79 {
-+				reg = <ADC5_AMUX_THM3_100K_PU>;
-+				qcom,ratiometric;
-+				qcom,hw-settle-time = <200>;
-+				qcom,pre-scaling = <1 1>;
-+			};
-+
-+			vph-pwr at 131 {
-+				reg = <ADC5_VPH_PWR>;
-+				qcom,pre-scaling = <1 3>;
-+			};
-+		};
-+
-+		pmp8074_rtc: rtc at 6000 {
-+			compatible = "qcom,pm8941-rtc";
-+			reg = <0x6000>;
-+			reg-names = "rtc", "alarm";
-+			interrupts = <0x0 0x61 0x1 IRQ_TYPE_NONE>;
-+			allow-set-time;
-+			status = "disabled";
-+		};
-+
-+		pmp8074_gpios: gpio at c000 {
-+			compatible = "qcom,pmp8074-gpio", "qcom,spmi-gpio";
-+			reg = <0xc000>;
-+			gpio-controller;
-+			#gpio-cells = <2>;
-+			gpio-ranges = <&pmp8074_gpios 0 0 12>;
-+			interrupt-controller;
-+			#interrupt-cells = <2>;
-+		};
-+	};
-+
-+	pmic at 1 {
-+		compatible = "qcom,pmp8074", "qcom,spmi-pmic";
-+		reg = <0x1 SPMI_USID>;
-+
-+		regulators {
-+			compatible = "qcom,pmp8074-regulators";
-+
-+			s3: s3 {
-+				regulator-name = "vdd_s3";
-+				regulator-min-microvolt = <592000>;
-+				regulator-max-microvolt = <1064000>;
-+				regulator-always-on;
-+				regulator-boot-on;
-+			};
-+
-+			s4: s4 {
-+				regulator-name = "vdd_s4";
-+				regulator-min-microvolt = <712000>;
-+				regulator-max-microvolt = <992000>;
-+				regulator-always-on;
-+				regulator-boot-on;
-+			};
-+
-+			l11: l11 {
-+				regulator-name = "l11";
-+				regulator-min-microvolt = <1800000>;
-+				regulator-max-microvolt = <3300000>;
-+			};
-+		};
-+	};
-+};
diff --git a/target/linux/qualcommax/patches-6.6/0014-v6.2-arm64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch b/target/linux/qualcommax/patches-6.6/0014-v6.2-arm64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch
deleted file mode 100644
index ebd3763a58..0000000000
--- a/target/linux/qualcommax/patches-6.6/0014-v6.2-arm64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 2c394cfc1779886048feca7dc7f4075da5f6328c Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 19 Aug 2022 00:18:15 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq8074-hk01: add VQMMC supply
-
-Since now we have control over the PMP8074 PMIC providing various system
-voltages including L11 which provides the SDIO/eMMC I/O voltage set it as
-the SDHCI VQMMC supply.
-
-This allows SDHCI controller to switch to 1.8V I/O mode and support high
-speed modes like HS200 and HS400.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20220818221815.346233-5-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq8074-hk01.dts | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074-hk01.dts
-+++ b/arch/arm64/boot/dts/qcom/ipq8074-hk01.dts
-@@ -3,6 +3,7 @@
- /* Copyright (c) 2017, The Linux Foundation. All rights reserved.
-  */
- #include "ipq8074.dtsi"
-+#include "pmp8074.dtsi"
- 
- / {
- 	model = "Qualcomm Technologies, Inc. IPQ8074-HK01";
-@@ -84,6 +85,7 @@
- 
- &sdhc_1 {
- 	status = "okay";
-+	vqmmc-supply = <&l11>;
- };
- 
- &qusb_phy_0 {
diff --git a/target/linux/qualcommax/patches-6.6/0015-v6.2-arm64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch b/target/linux/qualcommax/patches-6.6/0015-v6.2-arm64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch
deleted file mode 100644
index e08f6d1f3c..0000000000
--- a/target/linux/qualcommax/patches-6.6/0015-v6.2-arm64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 82ceb86227b1fc15c76d5fc691b2bf425f1a63b3 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Mon, 7 Nov 2022 10:29:30 +0100
-Subject: [PATCH] arm64: dts: qcom: hk01: use GPIO flags for tlmm
-
-Use respective GPIO_ACTIVE_LOW/HIGH flags for tlmm GPIOs instead of
-harcoding the cell value.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221107092930.33325-3-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq8074-hk01.dts | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074-hk01.dts
-+++ b/arch/arm64/boot/dts/qcom/ipq8074-hk01.dts
-@@ -4,6 +4,7 @@
-  */
- #include "ipq8074.dtsi"
- #include "pmp8074.dtsi"
-+#include <dt-bindings/gpio/gpio.h>
- 
- / {
- 	model = "Qualcomm Technologies, Inc. IPQ8074-HK01";
-@@ -52,12 +53,12 @@
- 
- &pcie0 {
- 	status = "okay";
--	perst-gpios = <&tlmm 61 0x1>;
-+	perst-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>;
- };
- 
- &pcie1 {
- 	status = "okay";
--	perst-gpios = <&tlmm 58 0x1>;
-+	perst-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
- };
- 
- &pcie_qmp0 {
diff --git a/target/linux/qualcommax/patches-6.6/0016-v6.2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch b/target/linux/qualcommax/patches-6.6/0016-v6.2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch
deleted file mode 100644
index a8bf2492f4..0000000000
--- a/target/linux/qualcommax/patches-6.6/0016-v6.2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 1b1c1423ca3e740984aa883512a72c4ea08fbe28 Mon Sep 17 00:00:00 2001
-From: Konrad Dybcio <konrad.dybcio at linaro.org>
-Date: Mon, 7 Nov 2022 15:55:17 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq8074-*: Fix up comments
-
-Make sure all multiline C-style commends begin with just '/*' with
-the comment text starting on a new line.
-
-Also, fix up some whitespace within comments.
-
-Signed-off-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221107145522.6706-8-konrad.dybcio at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq8074-hk01.dts    |  3 ++-
- arch/arm64/boot/dts/qcom/ipq8074-hk10-c1.dts |  3 ++-
- arch/arm64/boot/dts/qcom/ipq8074-hk10-c2.dts |  3 ++-
- arch/arm64/boot/dts/qcom/ipq8074.dtsi        | 12 ++++++------
- 4 files changed, 12 insertions(+), 9 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074-hk01.dts
-+++ b/arch/arm64/boot/dts/qcom/ipq8074-hk01.dts
-@@ -1,6 +1,7 @@
- // SPDX-License-Identifier: GPL-2.0-only
- /dts-v1/;
--/* Copyright (c) 2017, The Linux Foundation. All rights reserved.
-+/*
-+ * Copyright (c) 2017, The Linux Foundation. All rights reserved.
-  */
- #include "ipq8074.dtsi"
- #include "pmp8074.dtsi"
---- a/arch/arm64/boot/dts/qcom/ipq8074-hk10-c1.dts
-+++ b/arch/arm64/boot/dts/qcom/ipq8074-hk10-c1.dts
-@@ -1,5 +1,6 @@
- // SPDX-License-Identifier: GPL-2.0-only
--/* Copyright (c) 2020 The Linux Foundation. All rights reserved.
-+/*
-+ * Copyright (c) 2020 The Linux Foundation. All rights reserved.
-  */
- /dts-v1/;
- 
---- a/arch/arm64/boot/dts/qcom/ipq8074-hk10-c2.dts
-+++ b/arch/arm64/boot/dts/qcom/ipq8074-hk10-c2.dts
-@@ -1,6 +1,7 @@
- // SPDX-License-Identifier: GPL-2.0-only
- /dts-v1/;
--/* Copyright (c) 2020 The Linux Foundation. All rights reserved.
-+/*
-+ * Copyright (c) 2020 The Linux Foundation. All rights reserved.
-  */
- #include "ipq8074-hk10.dtsi"
- 
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -129,10 +129,10 @@
- 			status = "disabled";
- 
- 			usb1_ssphy: phy at 58200 {
--				reg = <0x00058200 0x130>,       /* Tx */
-+				reg = <0x00058200 0x130>,     /* Tx */
- 				      <0x00058400 0x200>,     /* Rx */
--				      <0x00058800 0x1f8>,     /* PCS  */
--				      <0x00058600 0x044>;     /* PCS misc*/
-+				      <0x00058800 0x1f8>,     /* PCS */
-+				      <0x00058600 0x044>;     /* PCS misc */
- 				#phy-cells = <0>;
- 				#clock-cells = <0>;
- 				clocks = <&gcc GCC_USB1_PIPE_CLK>;
-@@ -172,10 +172,10 @@
- 			status = "disabled";
- 
- 			usb0_ssphy: phy at 78200 {
--				reg = <0x00078200 0x130>,       /* Tx */
-+				reg = <0x00078200 0x130>,     /* Tx */
- 				      <0x00078400 0x200>,     /* Rx */
--				      <0x00078800 0x1f8>,     /* PCS  */
--				      <0x00078600 0x044>;     /* PCS misc*/
-+				      <0x00078800 0x1f8>,     /* PCS */
-+				      <0x00078600 0x044>;     /* PCS misc */
- 				#phy-cells = <0>;
- 				#clock-cells = <0>;
- 				clocks = <&gcc GCC_USB0_PIPE_CLK>;
diff --git a/target/linux/qualcommax/patches-6.6/0017-v6.2-arm64-dts-qcom-ipq8074-align-TLMM-pin-configuration-.patch b/target/linux/qualcommax/patches-6.6/0017-v6.2-arm64-dts-qcom-ipq8074-align-TLMM-pin-configuration-.patch
deleted file mode 100644
index c9fef2cab4..0000000000
--- a/target/linux/qualcommax/patches-6.6/0017-v6.2-arm64-dts-qcom-ipq8074-align-TLMM-pin-configuration-.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 5f20690f77878b1ba24ec88df01b92d5131a6780 Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Tue, 8 Nov 2022 15:23:57 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq8074: align TLMM pin configuration with
- DT schema
-
-DT schema expects TLMM pin configuration nodes to be named with
-'-state' suffix and their optional children with '-pins' suffix.
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221108142357.67202-2-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -320,35 +320,35 @@
- 			interrupt-controller;
- 			#interrupt-cells = <0x2>;
- 
--			serial_4_pins: serial4-pinmux {
-+			serial_4_pins: serial4-state {
- 				pins = "gpio23", "gpio24";
- 				function = "blsp4_uart1";
- 				drive-strength = <8>;
- 				bias-disable;
- 			};
- 
--			i2c_0_pins: i2c-0-pinmux {
-+			i2c_0_pins: i2c-0-state {
- 				pins = "gpio42", "gpio43";
- 				function = "blsp1_i2c";
- 				drive-strength = <8>;
- 				bias-disable;
- 			};
- 
--			spi_0_pins: spi-0-pins {
-+			spi_0_pins: spi-0-state {
- 				pins = "gpio38", "gpio39", "gpio40", "gpio41";
- 				function = "blsp0_spi";
- 				drive-strength = <8>;
- 				bias-disable;
- 			};
- 
--			hsuart_pins: hsuart-pins {
-+			hsuart_pins: hsuart-state {
- 				pins = "gpio46", "gpio47", "gpio48", "gpio49";
- 				function = "blsp2_uart";
- 				drive-strength = <8>;
- 				bias-disable;
- 			};
- 
--			qpic_pins: qpic-pins {
-+			qpic_pins: qpic-state {
- 				pins = "gpio1", "gpio3", "gpio4",
- 				       "gpio5", "gpio6", "gpio7",
- 				       "gpio8", "gpio10", "gpio11",
diff --git a/target/linux/qualcommax/patches-6.6/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch b/target/linux/qualcommax/patches-6.6/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch
deleted file mode 100644
index ceaf68bf7a..0000000000
--- a/target/linux/qualcommax/patches-6.6/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 20afb6751739264ea41993877de93923911dfdc3 Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Thu, 6 Oct 2022 14:46:27 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq6018: align TLMM pin configuration with
- DT schema
-
-DT schema expects TLMM pin configuration nodes to be named with
-'-state' suffix and their optional children with '-pins' suffix.
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Bjorn Andersson <andersson at kernel.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at somainline.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20221006124659.217540-3-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts | 4 ++--
- arch/arm64/boot/dts/qcom/ipq6018.dtsi        | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
-+++ b/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
-@@ -51,13 +51,13 @@
- };
- 
- &tlmm {
--	i2c_1_pins: i2c-1-pins {
-+	i2c_1_pins: i2c-1-state {
- 		pins = "gpio42", "gpio43";
- 		function = "blsp2_i2c";
- 		drive-strength = <8>;
- 	};
- 
--	spi_0_pins: spi-0-pins {
-+	spi_0_pins: spi-0-state {
- 		pins = "gpio38", "gpio39", "gpio40", "gpio41";
- 		function = "blsp0_spi";
- 		drive-strength = <8>;
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -218,14 +218,14 @@
- 			interrupt-controller;
- 			#interrupt-cells = <2>;
- 
--			serial_3_pins: serial3-pinmux {
-+			serial_3_pins: serial3-state {
- 				pins = "gpio44", "gpio45";
- 				function = "blsp2_uart";
- 				drive-strength = <8>;
- 				bias-pull-down;
- 			};
- 
--			qpic_pins: qpic-pins {
-+			qpic_pins: qpic-state {
- 				pins = "gpio1", "gpio3", "gpio4",
- 					"gpio5", "gpio6", "gpio7",
- 					"gpio8", "gpio10", "gpio11",
diff --git a/target/linux/qualcommax/patches-6.6/0019-v6.3-arm64-dts-qcom-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch b/target/linux/qualcommax/patches-6.6/0019-v6.3-arm64-dts-qcom-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch
deleted file mode 100644
index 2578aa9343..0000000000
--- a/target/linux/qualcommax/patches-6.6/0019-v6.3-arm64-dts-qcom-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From a4748d2850783d36f77ccf2b5fcc86ccf1800ef1 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Wed, 16 Nov 2022 22:48:36 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq8074: set Gen2 PCIe pcie max-link-speed
-
-Add the generic 'max-link-speed' property to describe the Gen2 PCIe link
-generation limit.
-This allows the generic DWC code to configure the link speed correctly.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -768,6 +768,7 @@
- 			linux,pci-domain = <1>;
- 			bus-range = <0x00 0xff>;
- 			num-lanes = <1>;
-+			max-link-speed = <2>;
- 			#address-cells = <3>;
- 			#size-cells = <2>;
- 
diff --git a/target/linux/qualcommax/patches-6.6/0020-v6.3-PCI-qcom-Add-support-for-IPQ8074-Gen3-port.patch b/target/linux/qualcommax/patches-6.6/0020-v6.3-PCI-qcom-Add-support-for-IPQ8074-Gen3-port.patch
deleted file mode 100644
index 3d5c2182e9..0000000000
--- a/target/linux/qualcommax/patches-6.6/0020-v6.3-PCI-qcom-Add-support-for-IPQ8074-Gen3-port.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From f356132229b18ceef5d5ef9103bbaa9bdeb84c8d Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 13 Jan 2023 17:44:47 +0100
-Subject: [PATCH] PCI: qcom: Add IPQ8074 Gen3 port support
-
-IPQ8074 has one Gen2 and one Gen3 port, with Gen2 port already supported.
-Add compatible for Gen3 port which uses the same controller as IPQ6018.
-
-Link: https://lore.kernel.org/r/20230113164449.906002-7-robimarko at gmail.com
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Lorenzo Pieralisi <lpieralisi at kernel.org>
-Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
----
- drivers/pci/controller/dwc/pcie-qcom.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/pci/controller/dwc/pcie-qcom.c
-+++ b/drivers/pci/controller/dwc/pcie-qcom.c
-@@ -1762,6 +1762,7 @@ static const struct of_device_id qcom_pc
- 	{ .compatible = "qcom,pcie-ipq8064", .data = &cfg_2_1_0 },
- 	{ .compatible = "qcom,pcie-ipq8064-v2", .data = &cfg_2_1_0 },
- 	{ .compatible = "qcom,pcie-ipq8074", .data = &cfg_2_3_3 },
-+	{ .compatible = "qcom,pcie-ipq8074-gen3", .data = &cfg_2_9_0 },
- 	{ .compatible = "qcom,pcie-msm8996", .data = &cfg_2_3_2 },
- 	{ .compatible = "qcom,pcie-qcs404", .data = &cfg_2_4_0 },
- 	{ .compatible = "qcom,pcie-sa8540p", .data = &cfg_1_9_0 },
diff --git a/target/linux/qualcommax/patches-6.6/0021-v6.3-clk-qcom-ipq8074-populate-fw_name-for-usb3phy-s.patch b/target/linux/qualcommax/patches-6.6/0021-v6.3-clk-qcom-ipq8074-populate-fw_name-for-usb3phy-s.patch
deleted file mode 100644
index e0e8125ba6..0000000000
--- a/target/linux/qualcommax/patches-6.6/0021-v6.3-clk-qcom-ipq8074-populate-fw_name-for-usb3phy-s.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 614d31c231c7707322b643f409eeb7e28adc7f8c Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Sun, 8 Jan 2023 13:36:28 +0100
-Subject: [PATCH] clk: qcom: ipq8074: populate fw_name for usb3phy-s
-
-Having only .name populated in parent_data for clocks which are only
-globally searchable currently will not work as the clk core won't copy
-that name if there is no .fw_name present as well.
-
-So, populate .fw_name for usb3phy clocks in parent_data as they were
-missed by me in ("clk: qcom: ipq8074: populate fw_name for all parents").
-
-Fixes: ae55ad32e273 ("clk: qcom: ipq8074: convert to parent data")
-Signed-off-by: Robert Marko <robimarko at gmail.com>
----
- drivers/clk/qcom/gcc-ipq8074.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/clk/qcom/gcc-ipq8074.c
-+++ b/drivers/clk/qcom/gcc-ipq8074.c
-@@ -928,7 +928,7 @@ static struct clk_rcg2 usb0_mock_utmi_cl
- };
- 
- static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
--	{ .name = "usb3phy_0_cc_pipe_clk" },
-+	{ .fw_name = "usb3phy_0_cc_pipe_clk", .name = "usb3phy_0_cc_pipe_clk" },
- 	{ .fw_name = "xo", .name = "xo" },
- };
- 
-@@ -996,7 +996,7 @@ static struct clk_rcg2 usb1_mock_utmi_cl
- };
- 
- static const struct clk_parent_data gcc_usb3phy_1_cc_pipe_clk_xo[] = {
--	{ .name = "usb3phy_1_cc_pipe_clk" },
-+	{ .fw_name = "usb3phy_1_cc_pipe_clk", .name = "usb3phy_1_cc_pipe_clk" },
- 	{ .fw_name = "xo", .name = "xo" },
- };
- 
diff --git a/target/linux/qualcommax/patches-6.6/0022-v6.4-arm64-dts-qcom-ipq8074-add-compatible-fallback-to.patch b/target/linux/qualcommax/patches-6.6/0022-v6.4-arm64-dts-qcom-ipq8074-add-compatible-fallback-to.patch
deleted file mode 100644
index f85be793cd..0000000000
--- a/target/linux/qualcommax/patches-6.6/0022-v6.4-arm64-dts-qcom-ipq8074-add-compatible-fallback-to.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From d93bd4630ce163f3761aedc0b342b072bee6db6b Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Wed, 22 Mar 2023 18:41:40 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq8074: add compatible fallback to mailbox
-
-IPQ8074 mailbox is compatible with IPQ6018.
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230322174148.810938-4-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -682,7 +682,8 @@
- 		};
- 
- 		apcs_glb: mailbox at b111000 {
--			compatible = "qcom,ipq8074-apcs-apps-global";
-+			compatible = "qcom,ipq8074-apcs-apps-global",
-+				     "qcom,ipq6018-apcs-apps-global";
- 			reg = <0x0b111000 0x1000>;
- 			clocks = <&a53pll>, <&xo>;
- 			clock-names = "pll", "xo";
diff --git a/target/linux/qualcommax/patches-6.6/0023-v6.5-arm64-dts-qcom-ipq8074-add-critical-thermal-trips.patch b/target/linux/qualcommax/patches-6.6/0023-v6.5-arm64-dts-qcom-ipq8074-add-critical-thermal-trips.patch
deleted file mode 100644
index 737bb06752..0000000000
--- a/target/linux/qualcommax/patches-6.6/0023-v6.5-arm64-dts-qcom-ipq8074-add-critical-thermal-trips.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From 56d3067cb694ba60d654e7f5ef231b6fabc4697f Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Wed, 7 Jun 2023 20:44:48 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq8074: add critical thermal trips
-
-According to bindings, thermal zones must have associated trips as well.
-Since we currently dont have CPUFreq support and thus no passive cooling
-lets start by defining critical trips to protect the devices against
-severe overheating.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230607184448.2512179-1-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 96 +++++++++++++++++++++++++++
- 1 file changed, 96 insertions(+)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -899,6 +899,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 4>;
-+
-+			trips {
-+				nss-top-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		nss0-thermal {
-@@ -906,6 +914,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 5>;
-+
-+			trips {
-+				nss-0-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		nss1-thermal {
-@@ -913,6 +929,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 6>;
-+
-+			trips {
-+				nss-1-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		wcss-phya0-thermal {
-@@ -920,6 +944,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 7>;
-+
-+			trips {
-+				wcss-phya0-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		wcss-phya1-thermal {
-@@ -927,6 +959,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 8>;
-+
-+			trips {
-+				wcss-phya1-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		cpu0_thermal: cpu0-thermal {
-@@ -934,6 +974,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 9>;
-+
-+			trips {
-+				cpu0-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		cpu1_thermal: cpu1-thermal {
-@@ -941,6 +989,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 10>;
-+
-+			trips {
-+				cpu1-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		cpu2_thermal: cpu2-thermal {
-@@ -948,6 +1004,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 11>;
-+
-+			trips {
-+				cpu2-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		cpu3_thermal: cpu3-thermal {
-@@ -955,6 +1019,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 12>;
-+
-+			trips {
-+				cpu3-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		cluster_thermal: cluster-thermal {
-@@ -962,6 +1034,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 13>;
-+
-+			trips {
-+				cluster-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		wcss-phyb0-thermal {
-@@ -969,6 +1049,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 14>;
-+
-+			trips {
-+				wcss-phyb0-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 
- 		wcss-phyb1-thermal {
-@@ -976,6 +1064,14 @@
- 			polling-delay = <1000>;
- 
- 			thermal-sensors = <&tsens 15>;
-+
-+			trips {
-+				wcss-phyb1-crit {
-+					temperature = <110000>;
-+					hysteresis = <1000>;
-+					type = "critical";
-+				};
-+			};
- 		};
- 	};
- };
diff --git a/target/linux/qualcommax/patches-6.6/0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch b/target/linux/qualcommax/patches-6.6/0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch
index 4eb0f097cc..c1381a7bf3 100644
--- a/target/linux/qualcommax/patches-6.6/0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch
+++ b/target/linux/qualcommax/patches-6.6/0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch
@@ -17,7 +17,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/include/dt-bindings/arm/qcom,ids.h
 +++ b/include/dt-bindings/arm/qcom,ids.h
-@@ -121,6 +121,9 @@
+@@ -203,6 +203,9 @@
  #define QCOM_ID_SM6125			394
  #define QCOM_ID_IPQ8070A		395
  #define QCOM_ID_IPQ8071A		396
@@ -26,4 +26,4 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 +#define QCOM_ID_IPQ8174			399
  #define QCOM_ID_IPQ6018			402
  #define QCOM_ID_IPQ6028			403
- #define QCOM_ID_IPQ6000			421
+ #define QCOM_ID_SDM429W			416
diff --git a/target/linux/qualcommax/patches-6.6/0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch b/target/linux/qualcommax/patches-6.6/0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch
index 63e2f22db7..6b305cc282 100644
--- a/target/linux/qualcommax/patches-6.6/0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch
+++ b/target/linux/qualcommax/patches-6.6/0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch
@@ -25,9 +25,9 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
 
 --- a/drivers/cpufreq/cpufreq-dt-platdev.c
 +++ b/drivers/cpufreq/cpufreq-dt-platdev.c
-@@ -163,6 +163,7 @@ static const struct of_device_id blockli
- 	{ .compatible = "ti,dra7", },
- 	{ .compatible = "ti,omap3", },
+@@ -177,6 +177,7 @@ static const struct of_device_id blockli
+ 	{ .compatible = "ti,am625", },
+ 	{ .compatible = "ti,am62a7", },
  
 +	{ .compatible = "qcom,ipq6018", },
  	{ .compatible = "qcom,ipq8064", },
@@ -35,7 +35,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
  	{ .compatible = "qcom,msm8974", },
 --- a/drivers/cpufreq/qcom-cpufreq-nvmem.c
 +++ b/drivers/cpufreq/qcom-cpufreq-nvmem.c
-@@ -31,6 +31,8 @@
+@@ -30,6 +30,8 @@
  
  #include <dt-bindings/arm/qcom,ids.h>
  
@@ -44,7 +44,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
  struct qcom_cpufreq_drv;
  
  struct qcom_cpufreq_match_data {
-@@ -204,6 +206,57 @@ len_error:
+@@ -203,6 +205,57 @@ len_error:
  	return ret;
  }
  
@@ -102,7 +102,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
  static const struct qcom_cpufreq_match_data match_data_kryo = {
  	.get_version = qcom_cpufreq_kryo_name_version,
  };
-@@ -218,6 +271,10 @@ static const struct qcom_cpufreq_match_d
+@@ -217,6 +270,10 @@ static const struct qcom_cpufreq_match_d
  	.genpd_names = qcs404_genpd_names,
  };
  
@@ -113,7 +113,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
  static int qcom_cpufreq_probe(struct platform_device *pdev)
  {
  	struct qcom_cpufreq_drv *drv;
-@@ -362,6 +419,7 @@ static const struct of_device_id qcom_cp
+@@ -359,6 +416,7 @@ static const struct of_device_id qcom_cp
  	{ .compatible = "qcom,apq8096", .data = &match_data_kryo },
  	{ .compatible = "qcom,msm8996", .data = &match_data_kryo },
  	{ .compatible = "qcom,qcs404", .data = &match_data_qcs404 },
diff --git a/target/linux/qualcommax/patches-6.6/0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch b/target/linux/qualcommax/patches-6.6/0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch
index cbd7b770f4..8ff3b5f9b1 100644
--- a/target/linux/qualcommax/patches-6.6/0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch
+++ b/target/linux/qualcommax/patches-6.6/0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch
@@ -25,7 +25,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
 
 --- a/drivers/cpufreq/cpufreq-dt-platdev.c
 +++ b/drivers/cpufreq/cpufreq-dt-platdev.c
-@@ -165,6 +165,7 @@ static const struct of_device_id blockli
+@@ -179,6 +179,7 @@ static const struct of_device_id blockli
  
  	{ .compatible = "qcom,ipq6018", },
  	{ .compatible = "qcom,ipq8064", },
@@ -35,7 +35,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
  	{ .compatible = "qcom,msm8960", },
 --- a/drivers/cpufreq/qcom-cpufreq-nvmem.c
 +++ b/drivers/cpufreq/qcom-cpufreq-nvmem.c
-@@ -33,6 +33,11 @@
+@@ -32,6 +32,11 @@
  
  #define IPQ6000_VERSION	BIT(2)
  
@@ -47,7 +47,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
  struct qcom_cpufreq_drv;
  
  struct qcom_cpufreq_match_data {
-@@ -257,6 +262,44 @@ static int qcom_cpufreq_ipq6018_name_ver
+@@ -256,6 +261,44 @@ static int qcom_cpufreq_ipq6018_name_ver
  	return 0;
  }
  
@@ -92,7 +92,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
  static const struct qcom_cpufreq_match_data match_data_kryo = {
  	.get_version = qcom_cpufreq_kryo_name_version,
  };
-@@ -275,6 +318,10 @@ static const struct qcom_cpufreq_match_d
+@@ -274,6 +317,10 @@ static const struct qcom_cpufreq_match_d
  	.get_version = qcom_cpufreq_ipq6018_name_version,
  };
  
@@ -103,7 +103,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
  static int qcom_cpufreq_probe(struct platform_device *pdev)
  {
  	struct qcom_cpufreq_drv *drv;
-@@ -421,6 +468,7 @@ static const struct of_device_id qcom_cp
+@@ -418,6 +465,7 @@ static const struct of_device_id qcom_cp
  	{ .compatible = "qcom,qcs404", .data = &match_data_qcs404 },
  	{ .compatible = "qcom,ipq6018", .data = &match_data_ipq6018 },
  	{ .compatible = "qcom,ipq8064", .data = &match_data_krait },
diff --git a/target/linux/qualcommax/patches-6.6/0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch b/target/linux/qualcommax/patches-6.6/0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch
index fb7011de95..7607bdad8b 100644
--- a/target/linux/qualcommax/patches-6.6/0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch
+++ b/target/linux/qualcommax/patches-6.6/0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch
@@ -19,7 +19,7 @@ Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -685,8 +685,8 @@
+@@ -721,8 +721,8 @@
  			compatible = "qcom,ipq8074-apcs-apps-global",
  				     "qcom,ipq6018-apcs-apps-global";
  			reg = <0x0b111000 0x1000>;
diff --git a/target/linux/qualcommax/patches-6.6/0029-v6.3-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch b/target/linux/qualcommax/patches-6.6/0029-v6.3-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch
deleted file mode 100644
index 61bb3f6c37..0000000000
--- a/target/linux/qualcommax/patches-6.6/0029-v6.3-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From c0877a26b7ee54ef30d16ffdcdd37f2bcffe518e Mon Sep 17 00:00:00 2001
-From: Kathiravan T <quic_kathirav at quicinc.com>
-Date: Wed, 8 Feb 2023 11:27:08 +0530
-Subject: [PATCH] dt-bindings: arm: qcom,ids: Add IDs for IPQ5332 and its
- variant
-
-Add SOC ID for Qualcomm IPQ5332 and IPQ5322 variants.
-
-Signed-off-by: Kathiravan T <quic_kathirav at quicinc.com>
-Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230208055709.13162-2-quic_kathirav at quicinc.com
----
- include/dt-bindings/arm/qcom,ids.h | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/include/dt-bindings/arm/qcom,ids.h
-+++ b/include/dt-bindings/arm/qcom,ids.h
-@@ -143,6 +143,8 @@
- #define QCOM_ID_SC7280			487
- #define QCOM_ID_SC7180P			495
- #define QCOM_ID_SM6375			507
-+#define QCOM_ID_IPQ5332			592
-+#define QCOM_ID_IPQ5322			593
- 
- /*
-  * The board type and revision information, used by Qualcomm bootloaders and
diff --git a/target/linux/qualcommax/patches-6.6/0030-v6.4-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch b/target/linux/qualcommax/patches-6.6/0030-v6.4-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch
deleted file mode 100644
index 7d80e4c1fd..0000000000
--- a/target/linux/qualcommax/patches-6.6/0030-v6.4-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 725352e15e1d030885611a546eb1f2884851a407 Mon Sep 17 00:00:00 2001
-From: Varadarajan Narayanan <quic_varada at quicinc.com>
-Date: Tue, 14 Mar 2023 11:43:33 +0530
-Subject: [PATCH] dt-bindings: arm: qcom,ids: Add IDs for IPQ9574 and its
- variants
-
-Add SOC ID for Qualcomm IPQ9574, IPQ9570, IPQ9554, IPQ9550,
-IPQ9514 and IPQ9510
-
-Signed-off-by: Varadarajan Narayanan <quic_varada at quicinc.com>
-Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Kathiravan T <quic_kathirav at quicinc.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/1678774414-14414-2-git-send-email-quic_varada at quicinc.com
----
- include/dt-bindings/arm/qcom,ids.h | 6 ++++++
- 1 file changed, 6 insertions(+)
-
---- a/include/dt-bindings/arm/qcom,ids.h
-+++ b/include/dt-bindings/arm/qcom,ids.h
-@@ -143,6 +143,12 @@
- #define QCOM_ID_SC7280			487
- #define QCOM_ID_SC7180P			495
- #define QCOM_ID_SM6375			507
-+#define QCOM_ID_IPQ9514			510
-+#define QCOM_ID_IPQ9550			511
-+#define QCOM_ID_IPQ9554			512
-+#define QCOM_ID_IPQ9570			513
-+#define QCOM_ID_IPQ9574			514
-+#define QCOM_ID_IPQ9510			521
- #define QCOM_ID_IPQ5332			592
- #define QCOM_ID_IPQ5322			593
- 
diff --git a/target/linux/qualcommax/patches-6.6/0031-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch b/target/linux/qualcommax/patches-6.6/0031-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch
deleted file mode 100644
index ad70e7b6c9..0000000000
--- a/target/linux/qualcommax/patches-6.6/0031-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 614c778cf0d570642c50715adfa0b70930d8cf29 Mon Sep 17 00:00:00 2001
-From: Kathiravan T <quic_kathirav at quicinc.com>
-Date: Tue, 9 May 2023 09:05:30 +0530
-Subject: [PATCH] dt-bindings: arm: qcom,ids: add SoC ID for IPQ5312 and
- IPQ5302
-
-Add the SoC ID for IPQ5312 and IPQ5302, which belong to the family of
-IPQ5332 SoC.
-
-Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Signed-off-by: Kathiravan T <quic_kathirav at quicinc.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230509033531.21468-2-quic_kathirav at quicinc.com
----
- include/dt-bindings/arm/qcom,ids.h | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/include/dt-bindings/arm/qcom,ids.h
-+++ b/include/dt-bindings/arm/qcom,ids.h
-@@ -151,6 +151,8 @@
- #define QCOM_ID_IPQ9510			521
- #define QCOM_ID_IPQ5332			592
- #define QCOM_ID_IPQ5322			593
-+#define QCOM_ID_IPQ5312			594
-+#define QCOM_ID_IPQ5302			595
- 
- /*
-  * The board type and revision information, used by Qualcomm bootloaders and
diff --git a/target/linux/qualcommax/patches-6.6/0032-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch b/target/linux/qualcommax/patches-6.6/0032-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch
deleted file mode 100644
index 7925a0994d..0000000000
--- a/target/linux/qualcommax/patches-6.6/0032-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From b3c72f2795467e3d43ee429b0ebd5f523ec08f60 Mon Sep 17 00:00:00 2001
-From: Kathiravan T <quic_kathirav at quicinc.com>
-Date: Mon, 5 Jun 2023 13:35:28 +0530
-Subject: [PATCH] dt-bindings: arm: qcom,ids: add SoC ID for IPQ5300
-
-Add the SoC ID for IPQ5300, which belong to the family of IPQ5332 SoC.
-
-Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Signed-off-by: Kathiravan T <quic_kathirav at quicinc.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230605080531.3879-2-quic_kathirav at quicinc.com
----
- include/dt-bindings/arm/qcom,ids.h | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/include/dt-bindings/arm/qcom,ids.h
-+++ b/include/dt-bindings/arm/qcom,ids.h
-@@ -153,6 +153,7 @@
- #define QCOM_ID_IPQ5322			593
- #define QCOM_ID_IPQ5312			594
- #define QCOM_ID_IPQ5302			595
-+#define QCOM_ID_IPQ5300			624
- 
- /*
-  * The board type and revision information, used by Qualcomm bootloaders and
diff --git a/target/linux/qualcommax/patches-6.6/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch b/target/linux/qualcommax/patches-6.6/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch
deleted file mode 100644
index c3e94a2ae0..0000000000
--- a/target/linux/qualcommax/patches-6.6/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From feeef118fda562cf9081edef8ad464d89db070f4 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Tue, 27 Sep 2022 22:12:18 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq6018: move ARMv8 timer out of SoC node
-
-The ARM timer is usually considered not part of SoC node, just like
-other ARM designed blocks (PMU, PSCI).  This fixes dtbs_check warning:
-
-arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb: soc: timer: {'compatible': ['arm,armv8-timer'], 'interrupts': [[1, 2, 3848], [1, 3, 3848], [1, 4, 3848], [1, 1, 3848]]} should not be valid under {'type': 'object'}
-	From schema: dtschema/schemas/simple-bus.yaml
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20220927201218.1264506-2-robimarko at gmail.com
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -510,14 +510,6 @@
- 			clock-names = "xo";
- 		};
- 
--		timer {
--			compatible = "arm,armv8-timer";
--			interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
--				     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
--				     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
--				     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
--		};
--
- 		timer at b120000 {
- 			#address-cells = <1>;
- 			#size-cells = <1>;
-@@ -769,6 +761,14 @@
- 		};
- 	};
- 
-+	timer {
-+		compatible = "arm,armv8-timer";
-+		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-+			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-+			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-+			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-+	};
-+
- 	wcss: wcss-smp2p {
- 		compatible = "qcom,smp2p";
- 		qcom,smem = <435>, <428>;
diff --git a/target/linux/qualcommax/patches-6.6/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch b/target/linux/qualcommax/patches-6.6/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch
deleted file mode 100644
index ad32e64fe1..0000000000
--- a/target/linux/qualcommax/patches-6.6/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch
+++ /dev/null
@@ -1,605 +0,0 @@
-From 2c6e322a41c5e1ca45be50b9d5fbcda62dc23a0d Mon Sep 17 00:00:00 2001
-From: Konrad Dybcio <konrad.dybcio at linaro.org>
-Date: Mon, 2 Jan 2023 10:46:28 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq6018: Sort nodes properly
-
-Order nodes by unit address if one exists and alphabetically otherwise.
-
-Signed-off-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230102094642.74254-4-konrad.dybcio at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 562 +++++++++++++-------------
- 1 file changed, 281 insertions(+), 281 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -87,6 +87,12 @@
- 		};
- 	};
- 
-+	firmware {
-+		scm {
-+			compatible = "qcom,scm-ipq6018", "qcom,scm";
-+		};
-+	};
-+
- 	cpu_opp_table: opp-table-cpu {
- 		compatible = "operating-points-v2";
- 		opp-shared;
-@@ -123,12 +129,6 @@
- 		};
- 	};
- 
--	firmware {
--		scm {
--			compatible = "qcom,scm-ipq6018", "qcom,scm";
--		};
--	};
--
- 	pmuv8: pmu {
- 		compatible = "arm,cortex-a53-pmu";
- 		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) |
-@@ -166,6 +166,28 @@
- 		};
- 	};
- 
-+	rpm-glink {
-+		compatible = "qcom,glink-rpm";
-+		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
-+		qcom,rpm-msg-ram = <&rpm_msg_ram>;
-+		mboxes = <&apcs_glb 0>;
-+
-+		rpm_requests: glink-channel {
-+			compatible = "qcom,rpm-ipq6018";
-+			qcom,glink-channels = "rpm_requests";
-+
-+			regulators {
-+				compatible = "qcom,rpm-mp5496-regulators";
-+
-+				ipq6018_s2: s2 {
-+					regulator-min-microvolt = <725000>;
-+					regulator-max-microvolt = <1062500>;
-+					regulator-always-on;
-+				};
-+			};
-+		};
-+	};
-+
- 	smem {
- 		compatible = "qcom,smem";
- 		memory-region = <&smem_region>;
-@@ -179,6 +201,102 @@
- 		dma-ranges;
- 		compatible = "simple-bus";
- 
-+		qusb_phy_1: qusb at 59000 {
-+			compatible = "qcom,ipq6018-qusb2-phy";
-+			reg = <0x0 0x00059000 0x0 0x180>;
-+			#phy-cells = <0>;
-+
-+			clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>,
-+				 <&xo>;
-+			clock-names = "cfg_ahb", "ref";
-+
-+			resets = <&gcc GCC_QUSB2_1_PHY_BCR>;
-+			status = "disabled";
-+		};
-+
-+		ssphy_0: ssphy at 78000 {
-+			compatible = "qcom,ipq6018-qmp-usb3-phy";
-+			reg = <0x0 0x00078000 0x0 0x1c4>;
-+			#address-cells = <2>;
-+			#size-cells = <2>;
-+			ranges;
-+
-+			clocks = <&gcc GCC_USB0_AUX_CLK>,
-+				 <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, <&xo>;
-+			clock-names = "aux", "cfg_ahb", "ref";
-+
-+			resets = <&gcc GCC_USB0_PHY_BCR>,
-+				 <&gcc GCC_USB3PHY_0_PHY_BCR>;
-+			reset-names = "phy","common";
-+			status = "disabled";
-+
-+			usb0_ssphy: phy at 78200 {
-+				reg = <0x0 0x00078200 0x0 0x130>, /* Tx */
-+				      <0x0 0x00078400 0x0 0x200>, /* Rx */
-+				      <0x0 0x00078800 0x0 0x1f8>, /* PCS */
-+				      <0x0 0x00078600 0x0 0x044>; /* PCS misc */
-+				#phy-cells = <0>;
-+				#clock-cells = <0>;
-+				clocks = <&gcc GCC_USB0_PIPE_CLK>;
-+				clock-names = "pipe0";
-+				clock-output-names = "gcc_usb0_pipe_clk_src";
-+			};
-+		};
-+
-+		qusb_phy_0: qusb at 79000 {
-+			compatible = "qcom,ipq6018-qusb2-phy";
-+			reg = <0x0 0x00079000 0x0 0x180>;
-+			#phy-cells = <0>;
-+
-+			clocks = <&gcc GCC_USB0_PHY_CFG_AHB_CLK>,
-+				<&xo>;
-+			clock-names = "cfg_ahb", "ref";
-+
-+			resets = <&gcc GCC_QUSB2_0_PHY_BCR>;
-+			status = "disabled";
-+		};
-+
-+		pcie_phy: phy at 84000 {
-+			compatible = "qcom,ipq6018-qmp-pcie-phy";
-+			reg = <0x0 0x00084000 0x0 0x1bc>; /* Serdes PLL */
-+			status = "disabled";
-+			#address-cells = <2>;
-+			#size-cells = <2>;
-+			ranges;
-+
-+			clocks = <&gcc GCC_PCIE0_AUX_CLK>,
-+				<&gcc GCC_PCIE0_AHB_CLK>;
-+			clock-names = "aux", "cfg_ahb";
-+
-+			resets = <&gcc GCC_PCIE0_PHY_BCR>,
-+				<&gcc GCC_PCIE0PHY_PHY_BCR>;
-+			reset-names = "phy",
-+				      "common";
-+
-+			pcie_phy0: phy at 84200 {
-+				reg = <0x0 0x00084200 0x0 0x16c>, /* Serdes Tx */
-+				      <0x0 0x00084400 0x0 0x200>, /* Serdes Rx */
-+				      <0x0 0x00084800 0x0 0x1f0>, /* PCS: Lane0, COM, PCIE */
-+				      <0x0 0x00084c00 0x0 0xf4>; /* pcs_misc */
-+				#phy-cells = <0>;
-+
-+				clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
-+				clock-names = "pipe0";
-+				clock-output-names = "gcc_pcie0_pipe_clk_src";
-+				#clock-cells = <0>;
-+			};
-+		};
-+
-+		mdio: mdio at 90000 {
-+			#address-cells = <1>;
-+			#size-cells = <0>;
-+			compatible = "qcom,ipq6018-mdio", "qcom,ipq4019-mdio";
-+			reg = <0x0 0x00090000 0x0 0x64>;
-+			clocks = <&gcc GCC_MDIO_AHB_CLK>;
-+			clock-names = "gcc_mdio_ahb_clk";
-+			status = "disabled";
-+		};
-+
- 		prng: qrng at e1000 {
- 			compatible = "qcom,prng-ee";
- 			reg = <0x0 0x000e3000 0x0 0x1000>;
-@@ -257,6 +375,41 @@
- 			reg = <0x0 0x01937000 0x0 0x21000>;
- 		};
- 
-+		usb2: usb at 70f8800 {
-+			compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
-+			reg = <0x0 0x070F8800 0x0 0x400>;
-+			#address-cells = <2>;
-+			#size-cells = <2>;
-+			ranges;
-+			clocks = <&gcc GCC_USB1_MASTER_CLK>,
-+				 <&gcc GCC_USB1_SLEEP_CLK>,
-+				 <&gcc GCC_USB1_MOCK_UTMI_CLK>;
-+			clock-names = "core",
-+				      "sleep",
-+				      "mock_utmi";
-+
-+			assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>,
-+					  <&gcc GCC_USB1_MOCK_UTMI_CLK>;
-+			assigned-clock-rates = <133330000>,
-+					       <24000000>;
-+			resets = <&gcc GCC_USB1_BCR>;
-+			status = "disabled";
-+
-+			dwc_1: usb at 7000000 {
-+				compatible = "snps,dwc3";
-+				reg = <0x0 0x07000000 0x0 0xcd00>;
-+				interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
-+				phys = <&qusb_phy_1>;
-+				phy-names = "usb2-phy";
-+				tx-fifo-resize;
-+				snps,is-utmi-l1-suspend;
-+				snps,hird-threshold = /bits/ 8 <0x0>;
-+				snps,dis_u2_susphy_quirk;
-+				snps,dis_u3_susphy_quirk;
-+				dr_mode = "host";
-+			};
-+		};
-+
- 		blsp_dma: dma-controller at 7884000 {
- 			compatible = "qcom,bam-v1.7.0";
- 			reg = <0x0 0x07884000 0x0 0x2b000>;
-@@ -366,6 +519,49 @@
- 			status = "disabled";
- 		};
- 
-+		usb3: usb at 8af8800 {
-+			compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
-+			reg = <0x0 0x08af8800 0x0 0x400>;
-+			#address-cells = <2>;
-+			#size-cells = <2>;
-+			ranges;
-+
-+			clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
-+				<&gcc GCC_USB0_MASTER_CLK>,
-+				<&gcc GCC_USB0_SLEEP_CLK>,
-+				<&gcc GCC_USB0_MOCK_UTMI_CLK>;
-+			clock-names = "cfg_noc",
-+				"core",
-+				"sleep",
-+				"mock_utmi";
-+
-+			assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
-+					  <&gcc GCC_USB0_MASTER_CLK>,
-+					  <&gcc GCC_USB0_MOCK_UTMI_CLK>;
-+			assigned-clock-rates = <133330000>,
-+					       <133330000>,
-+					       <24000000>;
-+
-+			resets = <&gcc GCC_USB0_BCR>;
-+			status = "disabled";
-+
-+			dwc_0: usb at 8a00000 {
-+				compatible = "snps,dwc3";
-+				reg = <0x0 0x08a00000 0x0 0xcd00>;
-+				interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
-+				phys = <&qusb_phy_0>, <&usb0_ssphy>;
-+				phy-names = "usb2-phy", "usb3-phy";
-+				clocks = <&xo>;
-+				clock-names = "ref";
-+				tx-fifo-resize;
-+				snps,is-utmi-l1-suspend;
-+				snps,hird-threshold = /bits/ 8 <0x0>;
-+				snps,dis_u2_susphy_quirk;
-+				snps,dis_u3_susphy_quirk;
-+				dr_mode = "host";
-+			};
-+		};
-+
- 		intc: interrupt-controller at b000000 {
- 			compatible = "qcom,msm-qgic2";
- 			#address-cells = <2>;
-@@ -386,105 +582,6 @@
- 			};
- 		};
- 
--		pcie_phy: phy at 84000 {
--			compatible = "qcom,ipq6018-qmp-pcie-phy";
--			reg = <0x0 0x00084000 0x0 0x1bc>; /* Serdes PLL */
--			status = "disabled";
--			#address-cells = <2>;
--			#size-cells = <2>;
--			ranges;
--
--			clocks = <&gcc GCC_PCIE0_AUX_CLK>,
--				<&gcc GCC_PCIE0_AHB_CLK>;
--			clock-names = "aux", "cfg_ahb";
--
--			resets = <&gcc GCC_PCIE0_PHY_BCR>,
--				<&gcc GCC_PCIE0PHY_PHY_BCR>;
--			reset-names = "phy",
--				      "common";
--
--			pcie_phy0: phy at 84200 {
--				reg = <0x0 0x00084200 0x0 0x16c>, /* Serdes Tx */
--				      <0x0 0x00084400 0x0 0x200>, /* Serdes Rx */
--				      <0x0 0x00084800 0x0 0x1f0>, /* PCS: Lane0, COM, PCIE */
--				      <0x0 0x00084c00 0x0 0xf4>; /* pcs_misc */
--				#phy-cells = <0>;
--
--				clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
--				clock-names = "pipe0";
--				clock-output-names = "gcc_pcie0_pipe_clk_src";
--				#clock-cells = <0>;
--			};
--		};
--
--		pcie0: pci at 20000000 {
--			compatible = "qcom,pcie-ipq6018";
--			reg = <0x0 0x20000000 0x0 0xf1d>,
--			      <0x0 0x20000f20 0x0 0xa8>,
--			      <0x0 0x20001000 0x0 0x1000>,
--			      <0x0 0x80000 0x0 0x4000>,
--			      <0x0 0x20100000 0x0 0x1000>;
--			reg-names = "dbi", "elbi", "atu", "parf", "config";
--
--			device_type = "pci";
--			linux,pci-domain = <0>;
--			bus-range = <0x00 0xff>;
--			num-lanes = <1>;
--			max-link-speed = <3>;
--			#address-cells = <3>;
--			#size-cells = <2>;
--
--			phys = <&pcie_phy0>;
--			phy-names = "pciephy";
--
--			ranges = <0x81000000 0x0 0x00000000 0x0 0x20200000 0x0 0x10000>,
--				 <0x82000000 0x0 0x20220000 0x0 0x20220000 0x0 0xfde0000>;
--
--			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
--			interrupt-names = "msi";
--
--			#interrupt-cells = <1>;
--			interrupt-map-mask = <0 0 0 0x7>;
--			interrupt-map = <0 0 0 1 &intc 0 75
--					 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
--					<0 0 0 2 &intc 0 78
--					 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
--					<0 0 0 3 &intc 0 79
--					 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
--					<0 0 0 4 &intc 0 83
--					 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
--
--			clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
--				 <&gcc GCC_PCIE0_AXI_M_CLK>,
--				 <&gcc GCC_PCIE0_AXI_S_CLK>,
--				 <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>,
--				 <&gcc PCIE0_RCHNG_CLK>;
--			clock-names = "iface",
--				      "axi_m",
--				      "axi_s",
--				      "axi_bridge",
--				      "rchng";
--
--			resets = <&gcc GCC_PCIE0_PIPE_ARES>,
--				 <&gcc GCC_PCIE0_SLEEP_ARES>,
--				 <&gcc GCC_PCIE0_CORE_STICKY_ARES>,
--				 <&gcc GCC_PCIE0_AXI_MASTER_ARES>,
--				 <&gcc GCC_PCIE0_AXI_SLAVE_ARES>,
--				 <&gcc GCC_PCIE0_AHB_ARES>,
--				 <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>,
--				 <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>;
--			reset-names = "pipe",
--				      "sleep",
--				      "sticky",
--				      "axi_m",
--				      "axi_s",
--				      "ahb",
--				      "axi_m_sticky",
--				      "axi_s_sticky";
--
--			status = "disabled";
--		};
--
- 		watchdog at b017000 {
- 			compatible = "qcom,kpss-wdt";
- 			interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
-@@ -617,147 +714,74 @@
- 			};
- 		};
- 
--		mdio: mdio at 90000 {
--			#address-cells = <1>;
--			#size-cells = <0>;
--			compatible = "qcom,ipq6018-mdio", "qcom,ipq4019-mdio";
--			reg = <0x0 0x00090000 0x0 0x64>;
--			clocks = <&gcc GCC_MDIO_AHB_CLK>;
--			clock-names = "gcc_mdio_ahb_clk";
--			status = "disabled";
--		};
--
--		qusb_phy_1: qusb at 59000 {
--			compatible = "qcom,ipq6018-qusb2-phy";
--			reg = <0x0 0x00059000 0x0 0x180>;
--			#phy-cells = <0>;
--
--			clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>,
--				 <&xo>;
--			clock-names = "cfg_ahb", "ref";
--
--			resets = <&gcc GCC_QUSB2_1_PHY_BCR>;
--			status = "disabled";
--		};
--
--		usb2: usb at 70f8800 {
--			compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
--			reg = <0x0 0x070F8800 0x0 0x400>;
--			#address-cells = <2>;
--			#size-cells = <2>;
--			ranges;
--			clocks = <&gcc GCC_USB1_MASTER_CLK>,
--				 <&gcc GCC_USB1_SLEEP_CLK>,
--				 <&gcc GCC_USB1_MOCK_UTMI_CLK>;
--			clock-names = "core",
--				      "sleep",
--				      "mock_utmi";
--
--			assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>,
--					  <&gcc GCC_USB1_MOCK_UTMI_CLK>;
--			assigned-clock-rates = <133330000>,
--					       <24000000>;
--			resets = <&gcc GCC_USB1_BCR>;
--			status = "disabled";
--
--			dwc_1: usb at 7000000 {
--				compatible = "snps,dwc3";
--				reg = <0x0 0x07000000 0x0 0xcd00>;
--				interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
--				phys = <&qusb_phy_1>;
--				phy-names = "usb2-phy";
--				tx-fifo-resize;
--				snps,is-utmi-l1-suspend;
--				snps,hird-threshold = /bits/ 8 <0x0>;
--				snps,dis_u2_susphy_quirk;
--				snps,dis_u3_susphy_quirk;
--				dr_mode = "host";
--			};
--		};
-+		pcie0: pci at 20000000 {
-+			compatible = "qcom,pcie-ipq6018";
-+			reg = <0x0 0x20000000 0x0 0xf1d>,
-+			      <0x0 0x20000f20 0x0 0xa8>,
-+			      <0x0 0x20001000 0x0 0x1000>,
-+			      <0x0 0x80000 0x0 0x4000>,
-+			      <0x0 0x20100000 0x0 0x1000>;
-+			reg-names = "dbi", "elbi", "atu", "parf", "config";
- 
--		ssphy_0: ssphy at 78000 {
--			compatible = "qcom,ipq6018-qmp-usb3-phy";
--			reg = <0x0 0x00078000 0x0 0x1c4>;
--			#address-cells = <2>;
-+			device_type = "pci";
-+			linux,pci-domain = <0>;
-+			bus-range = <0x00 0xff>;
-+			num-lanes = <1>;
-+			max-link-speed = <3>;
-+			#address-cells = <3>;
- 			#size-cells = <2>;
--			ranges;
--
--			clocks = <&gcc GCC_USB0_AUX_CLK>,
--				 <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, <&xo>;
--			clock-names = "aux", "cfg_ahb", "ref";
--
--			resets = <&gcc GCC_USB0_PHY_BCR>,
--				 <&gcc GCC_USB3PHY_0_PHY_BCR>;
--			reset-names = "phy","common";
--			status = "disabled";
--
--			usb0_ssphy: phy at 78200 {
--				reg = <0x0 0x00078200 0x0 0x130>, /* Tx */
--				      <0x0 0x00078400 0x0 0x200>, /* Rx */
--				      <0x0 0x00078800 0x0 0x1f8>, /* PCS */
--				      <0x0 0x00078600 0x0 0x044>; /* PCS misc */
--				#phy-cells = <0>;
--				#clock-cells = <0>;
--				clocks = <&gcc GCC_USB0_PIPE_CLK>;
--				clock-names = "pipe0";
--				clock-output-names = "gcc_usb0_pipe_clk_src";
--			};
--		};
- 
--		qusb_phy_0: qusb at 79000 {
--			compatible = "qcom,ipq6018-qusb2-phy";
--			reg = <0x0 0x00079000 0x0 0x180>;
--			#phy-cells = <0>;
-+			phys = <&pcie_phy0>;
-+			phy-names = "pciephy";
- 
--			clocks = <&gcc GCC_USB0_PHY_CFG_AHB_CLK>,
--				<&xo>;
--			clock-names = "cfg_ahb", "ref";
-+			ranges = <0x81000000 0 0x20200000 0 0x20200000
-+				  0 0x10000>, /* downstream I/O */
-+				 <0x82000000 0 0x20220000 0 0x20220000
-+				  0 0xfde0000>; /* non-prefetchable memory */
- 
--			resets = <&gcc GCC_QUSB2_0_PHY_BCR>;
--			status = "disabled";
--		};
-+			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
-+			interrupt-names = "msi";
- 
--		usb3: usb at 8af8800 {
--			compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
--			reg = <0x0 0x8af8800 0x0 0x400>;
--			#address-cells = <2>;
--			#size-cells = <2>;
--			ranges;
-+			#interrupt-cells = <1>;
-+			interrupt-map-mask = <0 0 0 0x7>;
-+			interrupt-map = <0 0 0 1 &intc 0 75
-+					 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
-+					<0 0 0 2 &intc 0 78
-+					 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
-+					<0 0 0 3 &intc 0 79
-+					 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
-+					<0 0 0 4 &intc 0 83
-+					 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
- 
--			clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
--				<&gcc GCC_USB0_MASTER_CLK>,
--				<&gcc GCC_USB0_SLEEP_CLK>,
--				<&gcc GCC_USB0_MOCK_UTMI_CLK>;
--			clock-names = "cfg_noc",
--				"core",
--				"sleep",
--				"mock_utmi";
-+			clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
-+				 <&gcc GCC_PCIE0_AXI_M_CLK>,
-+				 <&gcc GCC_PCIE0_AXI_S_CLK>,
-+				 <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>,
-+				 <&gcc PCIE0_RCHNG_CLK>;
-+			clock-names = "iface",
-+				      "axi_m",
-+				      "axi_s",
-+				      "axi_bridge",
-+				      "rchng";
- 
--			assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
--					  <&gcc GCC_USB0_MASTER_CLK>,
--					  <&gcc GCC_USB0_MOCK_UTMI_CLK>;
--			assigned-clock-rates = <133330000>,
--					       <133330000>,
--					       <24000000>;
-+			resets = <&gcc GCC_PCIE0_PIPE_ARES>,
-+				 <&gcc GCC_PCIE0_SLEEP_ARES>,
-+				 <&gcc GCC_PCIE0_CORE_STICKY_ARES>,
-+				 <&gcc GCC_PCIE0_AXI_MASTER_ARES>,
-+				 <&gcc GCC_PCIE0_AXI_SLAVE_ARES>,
-+				 <&gcc GCC_PCIE0_AHB_ARES>,
-+				 <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>,
-+				 <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>;
-+			reset-names = "pipe",
-+				      "sleep",
-+				      "sticky",
-+				      "axi_m",
-+				      "axi_s",
-+				      "ahb",
-+				      "axi_m_sticky",
-+				      "axi_s_sticky";
- 
--			resets = <&gcc GCC_USB0_BCR>;
- 			status = "disabled";
--
--			dwc_0: usb at 8a00000 {
--				compatible = "snps,dwc3";
--				reg = <0x0 0x8a00000 0x0 0xcd00>;
--				interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
--				phys = <&qusb_phy_0>, <&usb0_ssphy>;
--				phy-names = "usb2-phy", "usb3-phy";
--				clocks = <&xo>;
--				clock-names = "ref";
--				tx-fifo-resize;
--				snps,is-utmi-l1-suspend;
--				snps,hird-threshold = /bits/ 8 <0x0>;
--				snps,dis_u2_susphy_quirk;
--				snps,dis_u3_susphy_quirk;
--				dr_mode = "host";
--			};
- 		};
- 	};
- 
-@@ -792,26 +816,4 @@
- 			#interrupt-cells = <2>;
- 		};
- 	};
--
--	rpm-glink {
--		compatible = "qcom,glink-rpm";
--		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
--		qcom,rpm-msg-ram = <&rpm_msg_ram>;
--		mboxes = <&apcs_glb 0>;
--
--		rpm_requests: glink-channel {
--			compatible = "qcom,rpm-ipq6018";
--			qcom,glink-channels = "rpm_requests";
--
--			regulators {
--				compatible = "qcom,rpm-mp5496-regulators";
--
--				ipq6018_s2: s2 {
--					regulator-min-microvolt = <725000>;
--					regulator-max-microvolt = <1062500>;
--					regulator-always-on;
--				};
--			};
--		};
--	};
- };
diff --git a/target/linux/qualcommax/patches-6.6/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch b/target/linux/qualcommax/patches-6.6/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch
deleted file mode 100644
index a883e305df..0000000000
--- a/target/linux/qualcommax/patches-6.6/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 6db9ed9a128cbae1423d043f3debd8bfa77783fd Mon Sep 17 00:00:00 2001
-From: Konrad Dybcio <konrad.dybcio at linaro.org>
-Date: Mon, 2 Jan 2023 10:46:29 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq6018: Add/remove some newlines
-
-Some lines were broken very aggresively, presumably to fit under 80 chars
-and some places could have used a newline, particularly between subsequent
-nodes. Address all that and remove redundant comments near PCIe ranges
-while at it so as not to exceed 100 chars needlessly.
-
-Signed-off-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230102094642.74254-5-konrad.dybcio at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 26 ++++++++++++--------------
- 1 file changed, 12 insertions(+), 14 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -102,26 +102,31 @@
- 			opp-microvolt = <725000>;
- 			clock-latency-ns = <200000>;
- 		};
-+
- 		opp-1056000000 {
- 			opp-hz = /bits/ 64 <1056000000>;
- 			opp-microvolt = <787500>;
- 			clock-latency-ns = <200000>;
- 		};
-+
- 		opp-1320000000 {
- 			opp-hz = /bits/ 64 <1320000000>;
- 			opp-microvolt = <862500>;
- 			clock-latency-ns = <200000>;
- 		};
-+
- 		opp-1440000000 {
- 			opp-hz = /bits/ 64 <1440000000>;
- 			opp-microvolt = <925000>;
- 			clock-latency-ns = <200000>;
- 		};
-+
- 		opp-1608000000 {
- 			opp-hz = /bits/ 64 <1608000000>;
- 			opp-microvolt = <987500>;
- 			clock-latency-ns = <200000>;
- 		};
-+
- 		opp-1800000000 {
- 			opp-hz = /bits/ 64 <1800000000>;
- 			opp-microvolt = <1062500>;
-@@ -131,8 +136,7 @@
- 
- 	pmuv8: pmu {
- 		compatible = "arm,cortex-a53-pmu";
--		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) |
--					 IRQ_TYPE_LEVEL_HIGH)>;
-+		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
- 	};
- 
- 	psci: psci {
-@@ -734,24 +738,18 @@
- 			phys = <&pcie_phy0>;
- 			phy-names = "pciephy";
- 
--			ranges = <0x81000000 0 0x20200000 0 0x20200000
--				  0 0x10000>, /* downstream I/O */
--				 <0x82000000 0 0x20220000 0 0x20220000
--				  0 0xfde0000>; /* non-prefetchable memory */
-+			ranges = <0x81000000 0 0x20200000 0 0x20200000 0 0x10000>,
-+				 <0x82000000 0 0x20220000 0 0x20220000 0 0xfde0000>;
- 
- 			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
- 			interrupt-names = "msi";
- 
- 			#interrupt-cells = <1>;
- 			interrupt-map-mask = <0 0 0 0x7>;
--			interrupt-map = <0 0 0 1 &intc 0 75
--					 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
--					<0 0 0 2 &intc 0 78
--					 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
--					<0 0 0 3 &intc 0 79
--					 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
--					<0 0 0 4 &intc 0 83
--					 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
-+			interrupt-map = <0 0 0 1 &intc 0 75 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
-+					<0 0 0 2 &intc 0 78 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
-+					<0 0 0 3 &intc 0 79 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
-+					<0 0 0 4 &intc 0 83 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
- 
- 			clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
- 				 <&gcc GCC_PCIE0_AXI_M_CLK>,
diff --git a/target/linux/qualcommax/patches-6.6/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch b/target/linux/qualcommax/patches-6.6/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch
deleted file mode 100644
index 35aa46bb10..0000000000
--- a/target/linux/qualcommax/patches-6.6/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 7356ae3e10abd1d71f06ff0b8a8e72aa7c955c57 Mon Sep 17 00:00:00 2001
-From: Konrad Dybcio <konrad.dybcio at linaro.org>
-Date: Mon, 2 Jan 2023 10:46:30 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq6018: Use lowercase hex
-
-One value escaped my previous lowercase hexification. Take care of it.
-
-Signed-off-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230102094642.74254-6-konrad.dybcio at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -381,7 +381,7 @@
- 
- 		usb2: usb at 70f8800 {
- 			compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
--			reg = <0x0 0x070F8800 0x0 0x400>;
-+			reg = <0x0 0x070f8800 0x0 0x400>;
- 			#address-cells = <2>;
- 			#size-cells = <2>;
- 			ranges;
diff --git a/target/linux/qualcommax/patches-6.6/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch b/target/linux/qualcommax/patches-6.6/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch
deleted file mode 100644
index c939d126bf..0000000000
--- a/target/linux/qualcommax/patches-6.6/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 679ee73bbee28cab441008f8cca38160cc8f3d05 Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Wed, 8 Feb 2023 11:15:39 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq6018: align RPM G-Link node with
- bindings
-
-Bindings expect (and most of DTS use) the RPM G-Link node name to be
-"rpm-requests".
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230208101545.45711-1-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -176,7 +176,7 @@
- 		qcom,rpm-msg-ram = <&rpm_msg_ram>;
- 		mboxes = <&apcs_glb 0>;
- 
--		rpm_requests: glink-channel {
-+		rpm_requests: rpm-requests {
- 			compatible = "qcom,rpm-ipq6018";
- 			qcom,glink-channels = "rpm_requests";
- 
diff --git a/target/linux/qualcommax/patches-6.6/0038-v6.4-arm64-dts-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch b/target/linux/qualcommax/patches-6.6/0038-v6.4-arm64-dts-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch
deleted file mode 100644
index 28688069b8..0000000000
--- a/target/linux/qualcommax/patches-6.6/0038-v6.4-arm64-dts-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From afa8eb675fc6dd606783ed2350de90927d6fb9d3 Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Wed, 8 Mar 2023 13:59:01 +0100
-Subject: [PATCH] arm64: dts: qcom: ipq6018-cp01-c1: drop SPI cs-select
-
-The SPI controller nodes do not use/allow cs-select property:
-
-  ipq6018-cp01-c1.dtb: spi at 78b5000: Unevaluated properties are not allowed ('cs-select' was unexpected)
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230308125906.236885-6-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
-+++ b/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
-@@ -36,7 +36,6 @@
- };
- 
- &blsp1_spi1 {
--	cs-select = <0>;
- 	pinctrl-0 = <&spi_0_pins>;
- 	pinctrl-names = "default";
- 	status = "okay";
diff --git a/target/linux/qualcommax/patches-6.6/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch b/target/linux/qualcommax/patches-6.6/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch
deleted file mode 100644
index d1280b528b..0000000000
--- a/target/linux/qualcommax/patches-6.6/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 0cd4e90cb2dec02ff859f5c98f744f43a23aea65 Mon Sep 17 00:00:00 2001
-From: Vignesh Viswanathan <quic_viswanat at quicinc.com>
-Date: Fri, 26 May 2023 16:36:53 +0530
-Subject: [PATCH] arm64: dts: qcom: add few more reserved memory region
-
-In IPQ SoCs, bootloader will collect the system RAM contents upon crash
-for the post morterm analysis. If we don't reserve the memory region used
-by bootloader, obviously linux will consume it and upon next boot on
-crash, bootloader will be loaded in the same region, which will lead to
-loose some of the data, sometimes we may miss out critical information.
-So lets reserve the region used by the bootloader.
-
-Similarly SBL copies some data into the reserved region and it will be
-used in the crash scenario. So reserve 1MB for SBL as well.
-
-While at it, drop the size padding in the reserved memory region,
-wherever applicable.
-
-Signed-off-by: Vignesh Viswanathan <quic_viswanat at quicinc.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230526110653.27777-4-quic_viswanat at quicinc.com
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 16 +++++++++++++---
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 14 ++++++++++++--
- 2 files changed, 25 insertions(+), 5 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -154,18 +154,28 @@
- 			no-map;
- 		};
- 
-+		bootloader at 4a100000 {
-+			reg = <0x0 0x4a100000 0x0 0x400000>;
-+			no-map;
-+		};
-+
-+		sbl at 4a500000 {
-+			reg = <0x0 0x4a500000 0x0 0x100000>;
-+			no-map;
-+		};
-+
- 		tz: memory at 4a600000 {
--			reg = <0x0 0x4a600000 0x0 0x00400000>;
-+			reg = <0x0 0x4a600000 0x0 0x400000>;
- 			no-map;
- 		};
- 
- 		smem_region: memory at 4aa00000 {
--			reg = <0x0 0x4aa00000 0x0 0x00100000>;
-+			reg = <0x0 0x4aa00000 0x0 0x100000>;
- 			no-map;
- 		};
- 
- 		q6_region: memory at 4ab00000 {
--			reg = <0x0 0x4ab00000 0x0 0x05500000>;
-+			reg = <0x0 0x4ab00000 0x0 0x5500000>;
- 			no-map;
- 		};
- 	};
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -85,17 +85,27 @@
- 		#size-cells = <2>;
- 		ranges;
- 
-+		bootloader at 4a600000 {
-+			reg = <0x0 0x4a600000 0x0 0x400000>;
-+			no-map;
-+		};
-+
-+		sbl at 4aa00000 {
-+			reg = <0x0 0x4aa00000 0x0 0x100000>;
-+			no-map;
-+		};
-+
- 		smem at 4ab00000 {
- 			compatible = "qcom,smem";
--			reg = <0x0 0x4ab00000 0x0 0x00100000>;
-+			reg = <0x0 0x4ab00000 0x0 0x100000>;
- 			no-map;
- 
- 			hwlocks = <&tcsr_mutex 3>;
- 		};
- 
- 		memory at 4ac00000 {
-+			reg = <0x0 0x4ac00000 0x0 0x400000>;
- 			no-map;
--			reg = <0x0 0x4ac00000 0x0 0x00400000>;
- 		};
- 	};
- 
diff --git a/target/linux/qualcommax/patches-6.6/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch b/target/linux/qualcommax/patches-6.6/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch
deleted file mode 100644
index 6dd185f6e0..0000000000
--- a/target/linux/qualcommax/patches-6.6/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 9b2406aaba7841863ac041225316c1ec1c86ea36 Mon Sep 17 00:00:00 2001
-From: Vignesh Viswanathan <quic_viswanat at quicinc.com>
-Date: Fri, 26 May 2023 16:36:52 +0530
-Subject: [PATCH] arm64: dts: qcom: enable the download mode support
-
-Like any other Qualcomm SoCs, IPQ8074 and IPQ6018 also supports the
-download mode to collect the RAM dumps if system crashes, to perform
-the post mortem analysis. Add support for the same.
-
-Signed-off-by: Vignesh Viswanathan <quic_viswanat at quicinc.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230526110653.27777-3-quic_viswanat at quicinc.com
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 1 +
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 6 ++++++
- 2 files changed, 7 insertions(+)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -90,6 +90,7 @@
- 	firmware {
- 		scm {
- 			compatible = "qcom,scm-ipq6018", "qcom,scm";
-+			qcom,dload-mode = <&tcsr 0x6100>;
- 		};
- 	};
- 
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -112,6 +112,7 @@
- 	firmware {
- 		scm {
- 			compatible = "qcom,scm-ipq8074", "qcom,scm";
-+			qcom,dload-mode = <&tcsr 0x6100>;
- 		};
- 	};
- 
-@@ -386,6 +387,11 @@
- 			#hwlock-cells = <1>;
- 		};
- 
-+		tcsr: syscon at 1937000 {
-+			compatible = "qcom,tcsr-ipq8074", "syscon";
-+			reg = <0x01937000 0x21000>;
-+		};
-+
- 		spmi_bus: spmi at 200f000 {
- 			compatible = "qcom,spmi-pmic-arb";
- 			reg = <0x0200f000 0x001000>,
diff --git a/target/linux/qualcommax/patches-6.6/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch b/target/linux/qualcommax/patches-6.6/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch
deleted file mode 100644
index e9b92b596e..0000000000
--- a/target/linux/qualcommax/patches-6.6/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 085058786a7890dd44ec623fe5ac74db870f6b93 Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Wed, 19 Apr 2023 23:18:39 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq6018: correct qrng unit address
-
-Match unit-address to reg entry to fix dtbs W=1 warnings:
-
-  Warning (simple_bus_reg): /soc/qrng at e1000: simple-bus unit address format error, expected "e3000"
-
-Fixes: 5bf635621245 ("arm64: dts: ipq6018: Add a few device nodes")
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230419211856.79332-1-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -312,7 +312,7 @@
- 			status = "disabled";
- 		};
- 
--		prng: qrng at e1000 {
-+		prng: qrng at e3000 {
- 			compatible = "qcom,prng-ee";
- 			reg = <0x0 0x000e3000 0x0 0x1000>;
- 			clocks = <&gcc GCC_PRNG_AHB_CLK>;
diff --git a/target/linux/qualcommax/patches-6.6/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch b/target/linux/qualcommax/patches-6.6/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch
deleted file mode 100644
index 821c9890c6..0000000000
--- a/target/linux/qualcommax/patches-6.6/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 393595d4ffbd0a1fafd5548f8de1b8487a037cf2 Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Thu, 20 Apr 2023 08:36:04 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq6018: add unit address to soc node
-
-"soc" node is supposed to have unit address:
-
-  Warning (unit_address_vs_reg): /soc: node has a reg or ranges property, but no unit name
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230420063610.11068-1-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -209,7 +209,7 @@
- 		hwlocks = <&tcsr_mutex 3>;
- 	};
- 
--	soc: soc {
-+	soc: soc at 0 {
- 		#address-cells = <2>;
- 		#size-cells = <2>;
- 		ranges = <0 0 0 0 0x0 0xffffffff>;
diff --git a/target/linux/qualcommax/patches-6.6/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch b/target/linux/qualcommax/patches-6.6/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch
deleted file mode 100644
index 68895c5c96..0000000000
--- a/target/linux/qualcommax/patches-6.6/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 546f0617a22a481f3ca1f7e058aea0c40517c64e Mon Sep 17 00:00:00 2001
-From: Kathiravan T <quic_kathirav at quicinc.com>
-Date: Fri, 26 May 2023 18:23:04 +0530
-Subject: [PATCH] arm64: dts: qcom: ipq6018: add QFPROM node
-
-IPQ6018 has efuse region to determine the various HW quirks. Lets
-add the initial support and the individual fuses will be added as they
-are required.
-
-Signed-off-by: Kathiravan T <quic_kathirav at quicinc.com>
-Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230526125305.19626-4-quic_kathirav at quicinc.com
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 7 +++++++
- 1 file changed, 7 insertions(+)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -312,6 +312,13 @@
- 			status = "disabled";
- 		};
- 
-+		qfprom: efuse at a4000 {
-+			compatible = "qcom,ipq6018-qfprom", "qcom,qfprom";
-+			reg = <0x0 0x000a4000 0x0 0x2000>;
-+			#address-cells = <1>;
-+			#size-cells = <1>;
-+		};
-+
- 		prng: qrng at e3000 {
- 			compatible = "qcom,prng-ee";
- 			reg = <0x0 0x000e3000 0x0 0x1000>;
diff --git a/target/linux/qualcommax/patches-6.6/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch b/target/linux/qualcommax/patches-6.6/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch
deleted file mode 100644
index b2057e588e..0000000000
--- a/target/linux/qualcommax/patches-6.6/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From b8420d478aa3fc739fcdba6b4b945850b356cb3b Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Sun, 16 Apr 2023 14:37:25 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq6018: drop incorrect SPI bus
- spi-max-frequency
-
-The spi-max-frequency property belongs to SPI devices, not SPI
-controller:
-
-  ipq6018-cp01-c1.dtb: spi at 78b5000: Unevaluated properties are not allowed ('spi-max-frequency' was unexpected)
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230416123730.300863-1-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 --
- 1 file changed, 2 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -458,7 +458,6 @@
- 			#size-cells = <0>;
- 			reg = <0x0 0x078b5000 0x0 0x600>;
- 			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
--			spi-max-frequency = <50000000>;
- 			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
- 				 <&gcc GCC_BLSP1_AHB_CLK>;
- 			clock-names = "core", "iface";
-@@ -473,7 +472,6 @@
- 			#size-cells = <0>;
- 			reg = <0x0 0x078b6000 0x0 0x600>;
- 			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
--			spi-max-frequency = <50000000>;
- 			clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
- 				 <&gcc GCC_BLSP1_AHB_CLK>;
- 			clock-names = "core", "iface";
diff --git a/target/linux/qualcommax/patches-6.6/0045-v6.5-arm64-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch b/target/linux/qualcommax/patches-6.6/0045-v6.5-arm64-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch
deleted file mode 100644
index 52ba16cc9f..0000000000
--- a/target/linux/qualcommax/patches-6.6/0045-v6.5-arm64-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From e6e0e706940b64e3a77e0a4840037692f109bd5f Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Date: Sun, 16 Apr 2023 14:37:26 +0200
-Subject: [PATCH] arm64: dts: qcom: ipq8074: drop incorrect SPI bus
- spi-max-frequency
-
-The spi-max-frequency property belongs to SPI devices, not SPI
-controller:
-
-  ipq8074-hk01.dtb: spi at 78b5000: Unevaluated properties are not allowed ('spi-max-frequency' was unexpected)
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230416123730.300863-2-krzysztof.kozlowski at linaro.org
----
- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -487,7 +487,6 @@
- 			#size-cells = <0>;
- 			reg = <0x078b5000 0x600>;
- 			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
--			spi-max-frequency = <50000000>;
- 			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
- 				<&gcc GCC_BLSP1_AHB_CLK>;
- 			clock-names = "core", "iface";
diff --git a/target/linux/qualcommax/patches-6.6/0046-v6.6-clk-qcom-gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch b/target/linux/qualcommax/patches-6.6/0046-v6.6-clk-qcom-gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch
deleted file mode 100644
index 9ae72730d8..0000000000
--- a/target/linux/qualcommax/patches-6.6/0046-v6.6-clk-qcom-gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 56e5ae0116aef87273cf1812d608645b076e4f02 Mon Sep 17 00:00:00 2001
-From: Mantas Pucka <mantas at 8devices.com>
-Date: Tue, 25 Apr 2023 12:11:49 +0300
-Subject: [PATCH] clk: qcom: gcc-ipq6018: Use floor ops for sdcc clocks
-
-SDCC clocks must be rounded down to avoid overclocking the controller.
-
-Fixes: d9db07f088af ("clk: qcom: Add ipq6018 Global Clock Controller support")
-Signed-off-by: Mantas Pucka <mantas at 8devices.com>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/1682413909-24927-1-git-send-email-mantas at 8devices.com
----
- drivers/clk/qcom/gcc-ipq6018.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/clk/qcom/gcc-ipq6018.c
-+++ b/drivers/clk/qcom/gcc-ipq6018.c
-@@ -1702,7 +1702,7 @@ static struct clk_rcg2 usb0_mock_utmi_cl
- 		.name = "usb0_mock_utmi_clk_src",
- 		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
- 		.num_parents = 4,
--		.ops = &clk_rcg2_ops,
-+		.ops = &clk_rcg2_floor_ops,
- 	},
- };
- 
diff --git a/target/linux/qualcommax/patches-6.6/0047-v6.6-clk-qcom-gcc-ipq6018-drop-redundant-F-define.patch b/target/linux/qualcommax/patches-6.6/0047-v6.6-clk-qcom-gcc-ipq6018-drop-redundant-F-define.patch
deleted file mode 100644
index 19dc9482e6..0000000000
--- a/target/linux/qualcommax/patches-6.6/0047-v6.6-clk-qcom-gcc-ipq6018-drop-redundant-F-define.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 923f7d678b2ae3d522543058514d5605c185633b Mon Sep 17 00:00:00 2001
-From: Christian Marangi <ansuelsmth at gmail.com>
-Date: Mon, 17 Apr 2023 19:44:07 +0200
-Subject: [PATCH] clk: qcom: gcc-ipq6018: drop redundant F define
-
-The same exact F frequency table entry is defined in clk-rcg.h
-Drop the redundant define to cleanup code.
-
-Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230417174408.23722-1-ansuelsmth at gmail.com
----
- drivers/clk/qcom/gcc-ipq6018.c | 2 --
- 1 file changed, 2 deletions(-)
-
---- a/drivers/clk/qcom/gcc-ipq6018.c
-+++ b/drivers/clk/qcom/gcc-ipq6018.c
-@@ -26,8 +26,6 @@
- #include "clk-regmap-mux.h"
- #include "reset.h"
- 
--#define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
--
- enum {
- 	P_XO,
- 	P_BIAS_PLL,
diff --git a/target/linux/qualcommax/patches-6.6/0048-v6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch b/target/linux/qualcommax/patches-6.6/0048-v6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch
deleted file mode 100644
index e38b40278c..0000000000
--- a/target/linux/qualcommax/patches-6.6/0048-v6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From f4f0c8acee0e41c5fbae7a7ad06087668ddce0d6 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robimarko at gmail.com>
-Date: Fri, 26 May 2023 21:08:54 +0200
-Subject: [PATCH] clk: qcom: gcc-ipq6018: update UBI32 PLL
-
-Update the UBI32 alpha PLL config to the latest values from the downstream
-QCA 5.4 kernel.
-
-Signed-off-by: Robert Marko <robimarko at gmail.com>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230526190855.2941291-1-robimarko at gmail.com
----
- drivers/clk/qcom/gcc-ipq6018.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
---- a/drivers/clk/qcom/gcc-ipq6018.c
-+++ b/drivers/clk/qcom/gcc-ipq6018.c
-@@ -4143,15 +4143,20 @@ static struct clk_branch gcc_dcc_clk = {
- 
- static const struct alpha_pll_config ubi32_pll_config = {
- 	.l = 0x3e,
--	.alpha = 0x57,
-+	.alpha = 0x6667,
- 	.config_ctl_val = 0x240d6aa8,
- 	.config_ctl_hi_val = 0x3c2,
-+	.config_ctl_val = 0x240d4828,
-+	.config_ctl_hi_val = 0x6,
- 	.main_output_mask = BIT(0),
- 	.aux_output_mask = BIT(1),
- 	.pre_div_val = 0x0,
- 	.pre_div_mask = BIT(12),
- 	.post_div_val = 0x0,
- 	.post_div_mask = GENMASK(9, 8),
-+	.alpha_en_mask = BIT(24),
-+	.test_ctl_val = 0x1C0000C0,
-+	.test_ctl_hi_val = 0x4000,
- };
- 
- static const struct alpha_pll_config nss_crypto_pll_config = {
diff --git a/target/linux/qualcommax/patches-6.6/0049-v6.6-clk-qcom-gcc-ipq6018-remove-duplicate-initializers.patch b/target/linux/qualcommax/patches-6.6/0049-v6.6-clk-qcom-gcc-ipq6018-remove-duplicate-initializers.patch
deleted file mode 100644
index e4faac1b6e..0000000000
--- a/target/linux/qualcommax/patches-6.6/0049-v6.6-clk-qcom-gcc-ipq6018-remove-duplicate-initializers.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 5ae7899765607e97e5eb34486336898c8d9ec654 Mon Sep 17 00:00:00 2001
-From: Arnd Bergmann <arnd at arndb.de>
-Date: Thu, 1 Jun 2023 23:34:12 +0200
-Subject: [PATCH] clk: qcom: gcc-ipq6018: remove duplicate initializers
-
-A recent change added new initializers for .config_ctl_val and
-.config_ctl_hi_val but left the old values in place:
-
-drivers/clk/qcom/gcc-ipq6018.c:4155:27: error: initialized field overwritten [-Werror=override-init]
- 4155 |         .config_ctl_val = 0x240d4828,
-      |                           ^~~~~~~~~~
-drivers/clk/qcom/gcc-ipq6018.c:4156:30: error: initialized field overwritten [-Werror=override-init]
- 4156 |         .config_ctl_hi_val = 0x6,
-      |                              ^~~
-
-Remove the unused ones now to avoid confusion.
-
-Fixes: f4f0c8acee0e4 ("clk: qcom: gcc-ipq6018: update UBI32 PLL")
-Signed-off-by: Arnd Bergmann <arnd at arndb.de>
-Reviewed-by: Robert Marko <robimarko at gmail.com>
-Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
-Link: https://lore.kernel.org/r/20230601213416.3373599-1-arnd at kernel.org
----
- drivers/clk/qcom/gcc-ipq6018.c | 2 --
- 1 file changed, 2 deletions(-)
-
---- a/drivers/clk/qcom/gcc-ipq6018.c
-+++ b/drivers/clk/qcom/gcc-ipq6018.c
-@@ -4144,8 +4144,6 @@ static struct clk_branch gcc_dcc_clk = {
- static const struct alpha_pll_config ubi32_pll_config = {
- 	.l = 0x3e,
- 	.alpha = 0x6667,
--	.config_ctl_val = 0x240d6aa8,
--	.config_ctl_hi_val = 0x3c2,
- 	.config_ctl_val = 0x240d4828,
- 	.config_ctl_hi_val = 0x6,
- 	.main_output_mask = BIT(0),
diff --git a/target/linux/qualcommax/patches-6.6/0050-v6.6-soc-qcom-Add-RPM-processor-subsystem-driver.patch b/target/linux/qualcommax/patches-6.6/0050-v6.6-soc-qcom-Add-RPM-processor-subsystem-driver.patch
deleted file mode 100644
index c2c26fb079..0000000000
--- a/target/linux/qualcommax/patches-6.6/0050-v6.6-soc-qcom-Add-RPM-processor-subsystem-driver.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 8ddfa81d090c71fd6cb3cb8ca1d420c0da33a575 Mon Sep 17 00:00:00 2001
-From: Stephan Gerhold <stephan at gerhold.net>
-Date: Thu, 15 Jun 2023 18:50:42 +0200
-Subject: [PATCH] soc: qcom: Add RPM processor/subsystem driver
-
-Add a simple driver for the qcom,rpm-proc compatible that registers the
-"smd-edge" and populates other children defined in the device tree.
-
-Note that the DT schema belongs to the remoteproc subsystem while this
-driver is added inside soc/qcom. I argue that the RPM *is* a remoteproc,
-but as an implementation detail in Linux it can currently not benefit
-from anything provided by the remoteproc subsystem. The RPM firmware is
-usually already loaded and started by earlier components in the boot
-chain and is not meant to be ever restarted.
-
-To avoid breaking existing kernel configurations the driver is always
-built when smd-rpm.c is also built. They belong closely together anyway.
-To avoid build errors CONFIG_RPMSG_QCOM_SMD must be also built-in if
-rpm-proc is.
-
-Reviewed-by: Konrad Dybcio <konrad.dybcio at linaro.org>
-Signed-off-by: Stephan Gerhold <stephan at gerhold.net>
-Link: https://lore.kernel.org/r/20230531-rpm-rproc-v3-9-a07dcdefd918 at gerhold.net
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
----
- drivers/soc/qcom/Kconfig    |  1 +
- drivers/soc/qcom/Makefile   |  2 +-
- drivers/soc/qcom/rpm-proc.c | 77 +++++++++++++++++++++++++++++++++++++
- 3 files changed, 79 insertions(+), 1 deletion(-)
- create mode 100644 drivers/soc/qcom/rpm-proc.c
-
---- a/drivers/soc/qcom/Kconfig
-+++ b/drivers/soc/qcom/Kconfig
-@@ -153,6 +153,7 @@ config QCOM_SMD_RPM
- 	tristate "Qualcomm Resource Power Manager (RPM) over SMD"
- 	depends on ARCH_QCOM || COMPILE_TEST
- 	depends on RPMSG
-+	depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
- 	help
- 	  If you say yes to this option, support will be included for the
- 	  Resource Power Manager system found in the Qualcomm 8974 based
---- a/drivers/soc/qcom/Makefile
-+++ b/drivers/soc/qcom/Makefile
-@@ -14,7 +14,7 @@ obj-$(CONFIG_QCOM_RMTFS_MEM)	+= rmtfs_me
- obj-$(CONFIG_QCOM_RPMH)		+= qcom_rpmh.o
- qcom_rpmh-y			+= rpmh-rsc.o
- qcom_rpmh-y			+= rpmh.o
--obj-$(CONFIG_QCOM_SMD_RPM)	+= smd-rpm.o
-+obj-$(CONFIG_QCOM_SMD_RPM)	+= rpm-proc.o smd-rpm.o
- obj-$(CONFIG_QCOM_SMEM) +=	smem.o
- obj-$(CONFIG_QCOM_SMEM_STATE) += smem_state.o
- obj-$(CONFIG_QCOM_SMP2P)	+= smp2p.o
---- /dev/null
-+++ b/drivers/soc/qcom/rpm-proc.c
-@@ -0,0 +1,77 @@
-+// SPDX-License-Identifier: GPL-2.0-only
-+/* Copyright (c) 2021-2023, Stephan Gerhold <stephan at gerhold.net> */
-+
-+#include <linux/module.h>
-+#include <linux/of.h>
-+#include <linux/of_platform.h>
-+#include <linux/platform_device.h>
-+#include <linux/rpmsg/qcom_smd.h>
-+
-+static int rpm_proc_probe(struct platform_device *pdev)
-+{
-+	struct qcom_smd_edge *edge = NULL;
-+	struct device *dev = &pdev->dev;
-+	struct device_node *edge_node;
-+	int ret;
-+
-+	edge_node = of_get_child_by_name(dev->of_node, "smd-edge");
-+	if (edge_node) {
-+		edge = qcom_smd_register_edge(dev, edge_node);
-+		of_node_put(edge_node);
-+		if (IS_ERR(edge))
-+			return dev_err_probe(dev, PTR_ERR(edge),
-+					     "Failed to register smd-edge\n");
-+	}
-+
-+	ret = devm_of_platform_populate(dev);
-+	if (ret) {
-+		dev_err(dev, "Failed to populate child devices: %d\n", ret);
-+		goto err;
-+	}
-+
-+	platform_set_drvdata(pdev, edge);
-+	return 0;
-+err:
-+	if (edge)
-+		qcom_smd_unregister_edge(edge);
-+	return ret;
-+}
-+
-+static void rpm_proc_remove(struct platform_device *pdev)
-+{
-+	struct qcom_smd_edge *edge = platform_get_drvdata(pdev);
-+
-+	if (edge)
-+		qcom_smd_unregister_edge(edge);
-+}
-+
-+static const struct of_device_id rpm_proc_of_match[] = {
-+	{ .compatible = "qcom,rpm-proc", },
-+	{ /* sentinel */ }
-+};
-+MODULE_DEVICE_TABLE(of, rpm_proc_of_match);
-+
-+static struct platform_driver rpm_proc_driver = {
-+	.probe = rpm_proc_probe,
-+	.remove_new = rpm_proc_remove,
-+	.driver = {
-+		.name = "qcom-rpm-proc",
-+		.of_match_table = rpm_proc_of_match,
-+	},
-+};
-+
-+static int __init rpm_proc_init(void)
-+{
-+	return platform_driver_register(&rpm_proc_driver);
-+}
-+arch_initcall(rpm_proc_init);
-+
-+static void __exit rpm_proc_exit(void)
-+{
-+	platform_driver_unregister(&rpm_proc_driver);
-+}
-+module_exit(rpm_proc_exit);
-+
-+MODULE_DESCRIPTION("Qualcomm RPM processor/subsystem driver");
-+MODULE_AUTHOR("Stephan Gerhold <stephan at gerhold.net>");
-+MODULE_LICENSE("GPL");
diff --git a/target/linux/qualcommax/patches-6.6/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch b/target/linux/qualcommax/patches-6.6/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch
deleted file mode 100644
index 746a391b42..0000000000
--- a/target/linux/qualcommax/patches-6.6/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 7e1acc8b92a3b67db1e5255adae2851d58d74434 Mon Sep 17 00:00:00 2001
-From: Stephan Gerhold <stephan at gerhold.net>
-Date: Thu, 15 Jun 2023 18:50:44 +0200
-Subject: [PATCH] arm64: dts: qcom: Add rpm-proc node for GLINK gplatforms
-
-Rather than having the RPM GLINK channels as the only child of a dummy
-top-level rpm-glink node, switch to representing the RPM as remoteproc
-like all the other remoteprocs (modem DSP, ...).
-
-This allows assigning additional subdevices to it like the MPM
-interrupt-controller or rpm-master-stats.
-
-Tested-by: Konrad Dybcio <konrad.dybcio at linaro.org> # SM6375
-Signed-off-by: Stephan Gerhold <stephan at gerhold.net>
-Link: https://lore.kernel.org/r/20230531-rpm-rproc-v3-11-a07dcdefd918 at gerhold.net
-Signed-off-by: Bjorn Andersson <andersson at kernel.org>
----
- arch/arm64/boot/dts/qcom/ipq6018.dtsi |  48 ++++----
- arch/arm64/boot/dts/qcom/ipq9574.dtsi |  28 +++--
- arch/arm64/boot/dts/qcom/msm8996.dtsi | 113 +++++++++----------
- arch/arm64/boot/dts/qcom/msm8998.dtsi | 102 ++++++++---------
- arch/arm64/boot/dts/qcom/qcm2290.dtsi | 126 ++++++++++-----------
- arch/arm64/boot/dts/qcom/qcs404.dtsi  | 152 +++++++++++++-------------
- arch/arm64/boot/dts/qcom/sdm630.dtsi  | 132 +++++++++++-----------
- arch/arm64/boot/dts/qcom/sm6115.dtsi  | 128 +++++++++++-----------
- arch/arm64/boot/dts/qcom/sm6125.dtsi  | 140 ++++++++++++------------
- arch/arm64/boot/dts/qcom/sm6375.dtsi  | 126 ++++++++++-----------
- 10 files changed, 566 insertions(+), 529 deletions(-)
-
---- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -145,6 +145,32 @@
- 		method = "smc";
- 	};
- 
-+	rpm: remoteproc {
-+		compatible = "qcom,ipq6018-rpm-proc", "qcom,rpm-proc";
-+
-+		glink-edge {
-+			compatible = "qcom,glink-rpm";
-+			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
-+			qcom,rpm-msg-ram = <&rpm_msg_ram>;
-+			mboxes = <&apcs_glb 0>;
-+
-+			rpm_requests: rpm-requests {
-+				compatible = "qcom,rpm-ipq6018";
-+				qcom,glink-channels = "rpm_requests";
-+
-+				regulators {
-+					compatible = "qcom,rpm-mp5496-regulators";
-+
-+					ipq6018_s2: s2 {
-+						regulator-min-microvolt = <725000>;
-+						regulator-max-microvolt = <1062500>;
-+						regulator-always-on;
-+					};
-+				};
-+			};
-+		};
-+	};
-+
- 	reserved-memory {
- 		#address-cells = <2>;
- 		#size-cells = <2>;
-@@ -181,28 +207,6 @@
- 		};
- 	};
- 
--	rpm-glink {
--		compatible = "qcom,glink-rpm";
--		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
--		qcom,rpm-msg-ram = <&rpm_msg_ram>;
--		mboxes = <&apcs_glb 0>;
--
--		rpm_requests: rpm-requests {
--			compatible = "qcom,rpm-ipq6018";
--			qcom,glink-channels = "rpm_requests";
--
--			regulators {
--				compatible = "qcom,rpm-mp5496-regulators";
--
--				ipq6018_s2: s2 {
--					regulator-min-microvolt = <725000>;
--					regulator-max-microvolt = <1062500>;
--					regulator-always-on;
--				};
--			};
--		};
--	};
--
- 	smem {
- 		compatible = "qcom,smem";
- 		memory-region = <&smem_region>;
diff --git a/target/linux/qualcommax/patches-6.6/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch b/target/linux/qualcommax/patches-6.6/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch
index b70d7bf69c..3239404977 100644
--- a/target/linux/qualcommax/patches-6.6/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch
+++ b/target/linux/qualcommax/patches-6.6/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch
@@ -22,7 +22,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -618,8 +618,8 @@
+@@ -619,8 +619,8 @@
  			compatible = "qcom,ipq6018-apcs-apps-global";
  			reg = <0x0 0x0b111000 0x0 0x1000>;
  			#clock-cells = <1>;
diff --git a/target/linux/qualcommax/patches-6.6/0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch b/target/linux/qualcommax/patches-6.6/0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch
index 0858528933..caef49cfaf 100644
--- a/target/linux/qualcommax/patches-6.6/0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch
+++ b/target/linux/qualcommax/patches-6.6/0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch
@@ -20,7 +20,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/drivers/clk/qcom/gcc-ipq6018.c
 +++ b/drivers/clk/qcom/gcc-ipq6018.c
-@@ -2120,6 +2120,26 @@ static struct clk_branch gcc_blsp1_qup5_
+@@ -2119,6 +2119,26 @@ static struct clk_branch gcc_blsp1_qup5_
  	},
  };
  
@@ -47,7 +47,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
  static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
  	.halt_reg = 0x0700c,
  	.clkr = {
-@@ -4276,6 +4296,7 @@ static struct clk_regmap *gcc_ipq6018_cl
+@@ -4275,6 +4295,7 @@ static struct clk_regmap *gcc_ipq6018_cl
  	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
  	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
  	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
diff --git a/target/linux/qualcommax/patches-6.6/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch b/target/linux/qualcommax/patches-6.6/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch
index 1369a90a8a..6198e24f38 100644
--- a/target/linux/qualcommax/patches-6.6/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch
+++ b/target/linux/qualcommax/patches-6.6/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch
@@ -20,7 +20,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -95,42 +95,49 @@
+@@ -96,42 +96,49 @@
  	};
  
  	cpu_opp_table: opp-table-cpu {
@@ -71,7 +71,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
  			clock-latency-ns = <200000>;
  		};
  	};
-@@ -321,6 +328,11 @@
+@@ -322,6 +329,11 @@
  			reg = <0x0 0x000a4000 0x0 0x2000>;
  			#address-cells = <1>;
  			#size-cells = <1>;
diff --git a/target/linux/qualcommax/patches-6.6/0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch b/target/linux/qualcommax/patches-6.6/0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch
index ca3c896047..af3e132584 100644
--- a/target/linux/qualcommax/patches-6.6/0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch
+++ b/target/linux/qualcommax/patches-6.6/0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch
@@ -15,7 +15,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -458,6 +458,26 @@
+@@ -459,6 +459,26 @@
  			qcom,ee = <0>;
  		};
  
@@ -42,7 +42,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
  		blsp1_uart3: serial at 78b1000 {
  			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
  			reg = <0x0 0x078b1000 0x0 0x200>;
-@@ -466,6 +486,36 @@
+@@ -467,6 +487,36 @@
  				 <&gcc GCC_BLSP1_AHB_CLK>;
  			clock-names = "core", "iface";
  			status = "disabled";
diff --git a/target/linux/qualcommax/patches-6.6/0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch b/target/linux/qualcommax/patches-6.6/0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch
index 0f1b3e6a38..8eb3915057 100644
--- a/target/linux/qualcommax/patches-6.6/0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch
+++ b/target/linux/qualcommax/patches-6.6/0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch
@@ -36,7 +36,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -430,6 +430,12 @@
+@@ -431,6 +431,12 @@
  					  <&gcc GCC_USB1_MOCK_UTMI_CLK>;
  			assigned-clock-rates = <133330000>,
  					       <24000000>;
@@ -49,7 +49,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
  			resets = <&gcc GCC_USB1_BCR>;
  			status = "disabled";
  
-@@ -628,6 +634,13 @@
+@@ -629,6 +635,13 @@
  					       <133330000>,
  					       <24000000>;
  
@@ -65,7 +65,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
  
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -611,6 +611,13 @@
+@@ -632,6 +632,13 @@
  						<133330000>,
  						<19200000>;
  
@@ -79,7 +79,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
  			power-domains = <&gcc USB0_GDSC>;
  
  			resets = <&gcc GCC_USB0_BCR>;
-@@ -653,6 +660,13 @@
+@@ -674,6 +681,13 @@
  						<133330000>,
  						<19200000>;
  
diff --git a/target/linux/qualcommax/patches-6.6/0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch b/target/linux/qualcommax/patches-6.6/0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch
index 9de90e4da6..29d2de9b23 100644
--- a/target/linux/qualcommax/patches-6.6/0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch
+++ b/target/linux/qualcommax/patches-6.6/0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch
@@ -15,7 +15,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -342,6 +342,16 @@
+@@ -343,6 +343,16 @@
  			clock-names = "core";
  		};
  
diff --git a/target/linux/qualcommax/patches-6.6/0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch b/target/linux/qualcommax/patches-6.6/0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch
index dab433348a..b8b623c8bc 100644
--- a/target/linux/qualcommax/patches-6.6/0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch
+++ b/target/linux/qualcommax/patches-6.6/0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch
@@ -55,7 +55,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
  		};
  
  		L2_0: l2-cache {
-@@ -888,6 +893,122 @@
+@@ -889,6 +894,122 @@
  		};
  	};
  
diff --git a/target/linux/qualcommax/patches-6.6/0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch b/target/linux/qualcommax/patches-6.6/0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch
index e72d1180c5..8b455532a1 100644
--- a/target/linux/qualcommax/patches-6.6/0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch
+++ b/target/linux/qualcommax/patches-6.6/0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch
@@ -17,7 +17,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/drivers/clk/qcom/gcc-ipq6018.c
 +++ b/drivers/clk/qcom/gcc-ipq6018.c
-@@ -3523,6 +3523,22 @@ static struct clk_branch gcc_prng_ahb_cl
+@@ -3522,6 +3522,22 @@ static struct clk_branch gcc_prng_ahb_cl
  	},
  };
  
@@ -40,7 +40,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
  static struct clk_branch gcc_qdss_dap_clk = {
  	.halt_reg = 0x29084,
  	.clkr = {
-@@ -4362,6 +4378,7 @@ static struct clk_regmap *gcc_ipq6018_cl
+@@ -4361,6 +4377,7 @@ static struct clk_regmap *gcc_ipq6018_cl
  	[GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
  	[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
  	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
diff --git a/target/linux/qualcommax/patches-6.6/0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch b/target/linux/qualcommax/patches-6.6/0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch
index 97b46f74ef..4082e3d852 100644
--- a/target/linux/qualcommax/patches-6.6/0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch
+++ b/target/linux/qualcommax/patches-6.6/0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch
@@ -20,52 +20,8 @@ Signed-off-by: Vinod Koul <vkoul at kernel.org>
 
 --- a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c
 +++ b/drivers/phy/qualcomm/phy-qcom-qmp-usb.c
-@@ -233,6 +233,43 @@ static const struct qmp_phy_init_tbl ipq
- 	QMP_PHY_INIT_CFG(QPHY_V3_PCS_TXDEEMPH_M3P5DB_V0, 0x0f),
- };
- 
-+static const struct qmp_phy_init_tbl ipq9574_usb3_serdes_tbl[] = {
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SYSCLK_EN_SEL, 0x1a),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_BIAS_EN_CLKBUFLR_EN, 0x08),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_CLK_SELECT, 0x30),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_BG_TRIM, 0x0f),
-+	QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_FASTLOCK_FO_GAIN, 0x0b),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SVS_MODE_CLK_SEL, 0x01),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_HSCLK_SEL, 0x00),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_CMN_CONFIG, 0x06),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_PLL_IVCO, 0x0f),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SYS_CLK_CTRL, 0x06),
-+	/* PLL and Loop filter settings */
-+	QMP_PHY_INIT_CFG(QSERDES_COM_DEC_START_MODE0, 0x68),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_DIV_FRAC_START1_MODE0, 0xab),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_DIV_FRAC_START2_MODE0, 0xaa),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_DIV_FRAC_START3_MODE0, 0x02),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_CP_CTRL_MODE0, 0x09),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_PLL_RCTRL_MODE0, 0x16),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_PLL_CCTRL_MODE0, 0x28),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_INTEGLOOP_GAIN0_MODE0, 0xa0),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_LOCK_CMP1_MODE0, 0xaa),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_LOCK_CMP2_MODE0, 0x29),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_LOCK_CMP3_MODE0, 0x00),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_CORE_CLK_EN, 0x00),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_LOCK_CMP_CFG, 0x00),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_MAP, 0x00),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_BG_TIMER, 0x0a),
-+	/* SSC settings */
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SSC_EN_CENTER, 0x01),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SSC_PER1, 0x7d),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SSC_PER2, 0x01),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SSC_ADJ_PER1, 0x00),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SSC_ADJ_PER2, 0x00),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SSC_STEP_SIZE1, 0x0a),
-+	QMP_PHY_INIT_CFG(QSERDES_COM_SSC_STEP_SIZE2, 0x05),
-+};
-+
- static const struct qmp_phy_init_tbl msm8996_usb3_serdes_tbl[] = {
- 	QMP_PHY_INIT_CFG(QSERDES_COM_SYSCLK_EN_SEL, 0x14),
- 	QMP_PHY_INIT_CFG(QSERDES_COM_BIAS_EN_CLKBUFLR_EN, 0x08),
-@@ -1591,6 +1628,26 @@ static const char * const qmp_phy_vreg_l
- 	"vdda-phy", "vdda-pll",
+@@ -1314,6 +1314,26 @@ static const struct qmp_usb_offsets qmp_
+ 	.rx		= 0x1000,
  };
  
 +static const struct qmp_phy_cfg ipq6018_usb3phy_cfg = {
@@ -91,12 +47,12 @@ Signed-off-by: Vinod Koul <vkoul at kernel.org>
  static const struct qmp_phy_cfg ipq8074_usb3phy_cfg = {
  	.lanes			= 1,
  
-@@ -2534,7 +2591,7 @@ static const struct of_device_id qmp_usb
- 		.data = &msm8996_usb3phy_cfg,
- 	}, {
+@@ -2238,7 +2258,7 @@ err_node_put:
+ static const struct of_device_id qmp_usb_of_match_table[] = {
+ 	{
  		.compatible = "qcom,ipq6018-qmp-usb3-phy",
 -		.data = &ipq8074_usb3phy_cfg,
 +		.data = &ipq6018_usb3phy_cfg,
  	}, {
- 		.compatible = "qcom,sc7180-qmp-usb3-phy",
- 		.data = &sc7180_usb3phy_cfg,
+ 		.compatible = "qcom,ipq8074-qmp-usb3-phy",
+ 		.data = &ipq8074_usb3phy_cfg,
diff --git a/target/linux/qualcommax/patches-6.6/0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch b/target/linux/qualcommax/patches-6.6/0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch
index 1525726640..16d2437490 100644
--- a/target/linux/qualcommax/patches-6.6/0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch
+++ b/target/linux/qualcommax/patches-6.6/0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch
@@ -15,7 +15,7 @@ Signed-off-by: Bjorn Andersson <andersson at kernel.org>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -529,6 +529,20 @@
+@@ -536,6 +536,20 @@
  			status = "disabled";
  		};
  
diff --git a/target/linux/qualcommax/patches-6.6/0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch b/target/linux/qualcommax/patches-6.6/0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch
index 9aa0a7952c..54d16ba9f5 100644
--- a/target/linux/qualcommax/patches-6.6/0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch
+++ b/target/linux/qualcommax/patches-6.6/0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch
@@ -176,7 +176,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  
  	return 0;
  }
-@@ -351,6 +408,7 @@ static int __clk_rcg2_set_rate(struct cl
+@@ -353,6 +410,7 @@ static int __clk_rcg2_set_rate(struct cl
  {
  	struct clk_rcg2 *rcg = to_clk_rcg2(hw);
  	const struct freq_tbl *f;
@@ -184,7 +184,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  
  	switch (policy) {
  	case FLOOR:
-@@ -366,7 +424,15 @@ static int __clk_rcg2_set_rate(struct cl
+@@ -368,7 +426,15 @@ static int __clk_rcg2_set_rate(struct cl
  	if (!f)
  		return -EINVAL;
  
diff --git a/target/linux/qualcommax/patches-6.6/0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch b/target/linux/qualcommax/patches-6.6/0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch
index 62a30bbb22..af1e44a6af 100644
--- a/target/linux/qualcommax/patches-6.6/0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch
+++ b/target/linux/qualcommax/patches-6.6/0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch
@@ -23,7 +23,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
 
 --- a/drivers/clk/qcom/gcc-ipq8074.c
 +++ b/drivers/clk/qcom/gcc-ipq8074.c
-@@ -1676,13 +1676,21 @@ static struct clk_regmap_div nss_port4_t
+@@ -1675,13 +1675,21 @@ static struct clk_regmap_div nss_port4_t
  	},
  };
  
@@ -49,7 +49,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  	F(156250000, P_UNIPHY1_RX, 2, 0, 0),
  	F(312500000, P_UNIPHY1_RX, 1, 0, 0),
  	{ }
-@@ -1738,13 +1746,21 @@ static struct clk_regmap_div nss_port5_r
+@@ -1737,13 +1745,21 @@ static struct clk_regmap_div nss_port5_r
  	},
  };
  
@@ -75,7 +75,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  	F(156250000, P_UNIPHY1_TX, 2, 0, 0),
  	F(312500000, P_UNIPHY1_TX, 1, 0, 0),
  	{ }
-@@ -1800,13 +1816,21 @@ static struct clk_regmap_div nss_port5_t
+@@ -1799,13 +1815,21 @@ static struct clk_regmap_div nss_port5_t
  	},
  };
  
@@ -101,7 +101,7 @@ Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
  	F(156250000, P_UNIPHY2_RX, 2, 0, 0),
  	F(312500000, P_UNIPHY2_RX, 1, 0, 0),
  	{ }
-@@ -1857,13 +1881,21 @@ static struct clk_regmap_div nss_port6_r
+@@ -1856,13 +1880,21 @@ static struct clk_regmap_div nss_port6_r
  	},
  };
  
diff --git a/target/linux/qualcommax/patches-6.6/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch b/target/linux/qualcommax/patches-6.6/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch
index 3996d15d9d..6d97641f65 100644
--- a/target/linux/qualcommax/patches-6.6/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch
+++ b/target/linux/qualcommax/patches-6.6/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch
@@ -19,7 +19,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -85,6 +85,16 @@
+@@ -86,6 +86,16 @@
  		#size-cells = <2>;
  		ranges;
  
@@ -36,7 +36,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  		bootloader at 4a600000 {
  			reg = <0x0 0x4a600000 0x0 0x400000>;
  			no-map;
-@@ -107,6 +117,21 @@
+@@ -108,6 +118,21 @@
  			reg = <0x0 0x4ac00000 0x0 0x400000>;
  			no-map;
  		};
diff --git a/target/linux/qualcommax/patches-6.6/0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch b/target/linux/qualcommax/patches-6.6/0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch
index fd97663513..9753fa84d3 100644
--- a/target/linux/qualcommax/patches-6.6/0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch
+++ b/target/linux/qualcommax/patches-6.6/0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch
@@ -17,7 +17,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -399,8 +399,8 @@
+@@ -407,8 +407,8 @@
  		gcc: gcc at 1800000 {
  			compatible = "qcom,gcc-ipq8074";
  			reg = <0x01800000 0x80000>;
diff --git a/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch b/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
index 9163cd76fe..ed37601020 100644
--- a/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
+++ b/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
@@ -12,7 +12,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -734,7 +734,7 @@
+@@ -755,7 +755,7 @@
  			reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
  			ranges = <0 0xb00a000 0xffd>;
  
@@ -21,7 +21,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  				compatible = "arm,gic-v2m-frame";
  				msi-controller;
  				reg = <0x0 0xffd>;
-@@ -847,8 +847,7 @@
+@@ -868,8 +868,7 @@
  			ranges = <0x81000000 0x0 0x00000000 0x10200000 0x0 0x10000>,   /* I/O */
  				 <0x82000000 0x0 0x10220000 0x10220000 0x0 0xfde0000>; /* MEM */
  
@@ -31,7 +31,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  			#interrupt-cells = <1>;
  			interrupt-map-mask = <0 0 0 0x7>;
  			interrupt-map = <0 0 0 1 &intc 0 142
-@@ -909,8 +908,7 @@
+@@ -930,8 +929,7 @@
  			ranges = <0x81000000 0x0 0x00000000 0x20200000 0x0 0x10000>,   /* I/O */
  				 <0x82000000 0x0 0x20220000 0x20220000 0x0 0xfde0000>; /* MEM */
  
diff --git a/target/linux/qualcommax/patches-6.6/0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch b/target/linux/qualcommax/patches-6.6/0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch
index 0a984948b5..d3664f293d 100644
--- a/target/linux/qualcommax/patches-6.6/0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch
+++ b/target/linux/qualcommax/patches-6.6/0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch
@@ -86,7 +86,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  	qcom_q6v5_unprepare(&wcss->q6v5);
  
  	return 0;
-@@ -900,7 +910,21 @@ static int q6v5_alloc_memory_region(stru
+@@ -899,7 +909,21 @@ static int q6v5_alloc_memory_region(stru
  	return 0;
  }
  
@@ -109,7 +109,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  {
  	int ret;
  
-@@ -990,7 +1014,7 @@ static int q6v5_wcss_init_clock(struct q
+@@ -989,7 +1013,7 @@ static int q6v5_wcss_init_clock(struct q
  	return 0;
  }
  
@@ -118,7 +118,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  {
  	wcss->cx_supply = devm_regulator_get(wcss->dev, "cx");
  	if (IS_ERR(wcss->cx_supply))
-@@ -1034,12 +1058,14 @@ static int q6v5_wcss_probe(struct platfo
+@@ -1033,12 +1057,14 @@ static int q6v5_wcss_probe(struct platfo
  	if (ret)
  		goto free_rproc;
  
@@ -136,7 +136,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  		if (ret)
  			goto free_rproc;
  	}
-@@ -1087,6 +1113,7 @@ static int q6v5_wcss_remove(struct platf
+@@ -1084,6 +1110,7 @@ static void q6v5_wcss_remove(struct plat
  }
  
  static const struct wcss_data wcss_ipq8074_res_init = {
@@ -144,7 +144,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  	.firmware_name = "IPQ8074/q6_fw.mdt",
  	.crash_reason_smem = WCSS_CRASH_REASON,
  	.aon_reset_required = true,
-@@ -1096,6 +1123,8 @@ static const struct wcss_data wcss_ipq80
+@@ -1093,6 +1120,8 @@ static const struct wcss_data wcss_ipq80
  };
  
  static const struct wcss_data wcss_qcs404_res_init = {
diff --git a/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch b/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch
index 0328efc041..8bb5bc695b 100644
--- a/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch
+++ b/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch
@@ -115,7 +115,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  	if (ret)
  		return ret;
  
-@@ -1036,6 +1068,9 @@ static int q6v5_wcss_probe(struct platfo
+@@ -1035,6 +1067,9 @@ static int q6v5_wcss_probe(struct platfo
  	if (!desc)
  		return -EINVAL;
  
@@ -125,7 +125,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  	rproc = rproc_alloc(&pdev->dev, pdev->name, desc->ops,
  			    desc->firmware_name, sizeof(*wcss));
  	if (!rproc) {
-@@ -1049,6 +1084,7 @@ static int q6v5_wcss_probe(struct platfo
+@@ -1048,6 +1083,7 @@ static int q6v5_wcss_probe(struct platfo
  
  	wcss->version = desc->version;
  	wcss->requires_force_stop = desc->requires_force_stop;
@@ -133,7 +133,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  
  	ret = q6v5_wcss_init_mmio(wcss, pdev);
  	if (ret)
-@@ -1120,6 +1156,7 @@ static const struct wcss_data wcss_ipq80
+@@ -1117,6 +1153,7 @@ static const struct wcss_data wcss_ipq80
  	.wcss_q6_reset_required = true,
  	.ops = &q6v5_wcss_ipq8074_ops,
  	.requires_force_stop = true,
diff --git a/target/linux/qualcommax/patches-6.6/0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch b/target/linux/qualcommax/patches-6.6/0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch
index e5c9506c89..f7e576cf8e 100644
--- a/target/linux/qualcommax/patches-6.6/0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch
+++ b/target/linux/qualcommax/patches-6.6/0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch
@@ -65,7 +65,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  	if (wcss->need_mem_protection)
  		ret = qcom_mdt_load(wcss->dev, fw, rproc->firmware,
  				    WCNSS_PAS_ID, wcss->mem_region,
-@@ -1072,7 +1095,7 @@ static int q6v5_wcss_probe(struct platfo
+@@ -1071,7 +1094,7 @@ static int q6v5_wcss_probe(struct platfo
  		return -EPROBE_DEFER;
  
  	rproc = rproc_alloc(&pdev->dev, pdev->name, desc->ops,
@@ -74,7 +74,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  	if (!rproc) {
  		dev_err(&pdev->dev, "failed to allocate rproc\n");
  		return -ENOMEM;
-@@ -1085,6 +1108,7 @@ static int q6v5_wcss_probe(struct platfo
+@@ -1084,6 +1107,7 @@ static int q6v5_wcss_probe(struct platfo
  	wcss->version = desc->version;
  	wcss->requires_force_stop = desc->requires_force_stop;
  	wcss->need_mem_protection = desc->need_mem_protection;
@@ -82,7 +82,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  
  	ret = q6v5_wcss_init_mmio(wcss, pdev);
  	if (ret)
-@@ -1150,7 +1174,8 @@ static int q6v5_wcss_remove(struct platf
+@@ -1147,7 +1171,8 @@ static void q6v5_wcss_remove(struct plat
  
  static const struct wcss_data wcss_ipq8074_res_init = {
  	.init_clock = ipq8074_init_clock,
@@ -92,7 +92,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
  	.crash_reason_smem = WCSS_CRASH_REASON,
  	.aon_reset_required = true,
  	.wcss_q6_reset_required = true,
-@@ -1163,7 +1188,7 @@ static const struct wcss_data wcss_qcs40
+@@ -1160,7 +1185,7 @@ static const struct wcss_data wcss_qcs40
  	.init_clock = qcs404_init_clock,
  	.init_regulator = qcs404_init_regulator,
  	.crash_reason_smem = WCSS_CRASH_REASON,
diff --git a/target/linux/qualcommax/patches-6.6/0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch b/target/linux/qualcommax/patches-6.6/0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch
index be63d46e8e..7a07b561e4 100644
--- a/target/linux/qualcommax/patches-6.6/0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch
+++ b/target/linux/qualcommax/patches-6.6/0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch
@@ -14,7 +14,7 @@ Signed-off-by: Nikhil Prakash V <nprakash at codeaurora.org>
 
 --- a/drivers/remoteproc/qcom_q6v5_wcss.c
 +++ b/drivers/remoteproc/qcom_q6v5_wcss.c
-@@ -1179,6 +1179,7 @@ static const struct wcss_data wcss_ipq80
+@@ -1176,6 +1176,7 @@ static const struct wcss_data wcss_ipq80
  	.crash_reason_smem = WCSS_CRASH_REASON,
  	.aon_reset_required = true,
  	.wcss_q6_reset_required = true,
diff --git a/target/linux/qualcommax/patches-6.6/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch b/target/linux/qualcommax/patches-6.6/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
index f0b717210f..7ef6884e45 100644
--- a/target/linux/qualcommax/patches-6.6/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
+++ b/target/linux/qualcommax/patches-6.6/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
@@ -48,7 +48,7 @@ Signed-off-by: Sricharan R <sricharan at codeaurora.org>
  	}
  
  	return 0;
-@@ -929,9 +933,9 @@ static int q6v5_wcss_init_mmio(struct q6
+@@ -928,9 +932,9 @@ static int q6v5_wcss_init_mmio(struct q6
  		return -EINVAL;
  	}
  
@@ -61,7 +61,7 @@ Signed-off-by: Sricharan R <sricharan at codeaurora.org>
  
  	return 0;
  }
-@@ -1179,6 +1183,7 @@ static const struct wcss_data wcss_ipq80
+@@ -1176,6 +1180,7 @@ static const struct wcss_data wcss_ipq80
  	.crash_reason_smem = WCSS_CRASH_REASON,
  	.aon_reset_required = true,
  	.wcss_q6_reset_required = true,
@@ -69,7 +69,7 @@ Signed-off-by: Sricharan R <sricharan at codeaurora.org>
  	.ssr_name = "q6wcss",
  	.ops = &q6v5_wcss_ipq8074_ops,
  	.requires_force_stop = true,
-@@ -1193,6 +1198,7 @@ static const struct wcss_data wcss_qcs40
+@@ -1190,6 +1195,7 @@ static const struct wcss_data wcss_qcs40
  	.version = WCSS_QCS404,
  	.aon_reset_required = false,
  	.wcss_q6_reset_required = false,
diff --git a/target/linux/qualcommax/patches-6.6/0118-clk-qcom-Add-WCSSAON-reset.patch b/target/linux/qualcommax/patches-6.6/0118-clk-qcom-Add-WCSSAON-reset.patch
index be0524338d..9fa0243f15 100644
--- a/target/linux/qualcommax/patches-6.6/0118-clk-qcom-Add-WCSSAON-reset.patch
+++ b/target/linux/qualcommax/patches-6.6/0118-clk-qcom-Add-WCSSAON-reset.patch
@@ -15,7 +15,7 @@ Acked-by: Stephen Boyd <sboyd at kernel.org>
 
 --- a/drivers/clk/qcom/gcc-ipq8074.c
 +++ b/drivers/clk/qcom/gcc-ipq8074.c
-@@ -4711,6 +4711,7 @@ static const struct qcom_reset_map gcc_i
+@@ -4710,6 +4710,7 @@ static const struct qcom_reset_map gcc_i
  	[GCC_NSSPORT4_RESET] = { .reg = 0x68014, .bitmask = BIT(27) | GENMASK(9, 8) },
  	[GCC_NSSPORT5_RESET] = { .reg = 0x68014, .bitmask = BIT(28) | GENMASK(11, 10) },
  	[GCC_NSSPORT6_RESET] = { .reg = 0x68014, .bitmask = BIT(29) | GENMASK(13, 12) },
diff --git a/target/linux/qualcommax/patches-6.6/0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch b/target/linux/qualcommax/patches-6.6/0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch
index 8674522a11..ecd87ac7a8 100644
--- a/target/linux/qualcommax/patches-6.6/0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch
+++ b/target/linux/qualcommax/patches-6.6/0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch
@@ -22,7 +22,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  };
  
  static int q6v5_wcss_reset(struct q6v5_wcss *wcss)
-@@ -1150,6 +1151,7 @@ static int q6v5_wcss_probe(struct platfo
+@@ -1149,6 +1150,7 @@ static int q6v5_wcss_probe(struct platfo
  						      desc->sysmon_name,
  						      desc->ssctl_id);
  
@@ -30,7 +30,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  	ret = rproc_add(rproc);
  	if (ret)
  		goto free_rproc;
-@@ -1188,6 +1190,7 @@ static const struct wcss_data wcss_ipq80
+@@ -1185,6 +1187,7 @@ static const struct wcss_data wcss_ipq80
  	.ops = &q6v5_wcss_ipq8074_ops,
  	.requires_force_stop = true,
  	.need_mem_protection = true,
@@ -38,7 +38,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  };
  
  static const struct wcss_data wcss_qcs404_res_init = {
-@@ -1204,6 +1207,7 @@ static const struct wcss_data wcss_qcs40
+@@ -1201,6 +1204,7 @@ static const struct wcss_data wcss_qcs40
  	.ssctl_id = 0x12,
  	.ops = &q6v5_wcss_qcs404_ops,
  	.requires_force_stop = false,
diff --git a/target/linux/qualcommax/patches-6.6/0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch b/target/linux/qualcommax/patches-6.6/0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch
index 17ecd069a6..2ea9bcb9fc 100644
--- a/target/linux/qualcommax/patches-6.6/0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch
+++ b/target/linux/qualcommax/patches-6.6/0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch
@@ -16,7 +16,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -141,6 +141,32 @@
+@@ -142,6 +142,32 @@
  		};
  	};
  
@@ -46,10 +46,10 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 +		};
 +	};
 +
- 	soc: soc {
- 		#address-cells = <0x1>;
- 		#size-cells = <0x1>;
-@@ -417,6 +443,11 @@
+ 	soc: soc at 0 {
+ 		#address-cells = <1>;
+ 		#size-cells = <1>;
+@@ -425,6 +451,11 @@
  			reg = <0x01937000 0x21000>;
  		};
  
@@ -61,7 +61,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  		spmi_bus: spmi at 200f000 {
  			compatible = "qcom,spmi-pmic-arb";
  			reg = <0x0200f000 0x001000>,
-@@ -949,6 +980,56 @@
+@@ -970,6 +1001,56 @@
  				      "axi_s_sticky";
  			status = "disabled";
  		};
diff --git a/target/linux/qualcommax/patches-6.6/0121-arm64-dts-ipq8074-Add-WLAN-node.patch b/target/linux/qualcommax/patches-6.6/0121-arm64-dts-ipq8074-Add-WLAN-node.patch
index 76d3f35dd2..627b0711b7 100644
--- a/target/linux/qualcommax/patches-6.6/0121-arm64-dts-ipq8074-Add-WLAN-node.patch
+++ b/target/linux/qualcommax/patches-6.6/0121-arm64-dts-ipq8074-Add-WLAN-node.patch
@@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -1030,6 +1030,117 @@
+@@ -1051,6 +1051,117 @@
  				};
  			};
  		};
diff --git a/target/linux/qualcommax/patches-6.6/0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch b/target/linux/qualcommax/patches-6.6/0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch
index 8ec4660123..7730ad89f5 100644
--- a/target/linux/qualcommax/patches-6.6/0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch
+++ b/target/linux/qualcommax/patches-6.6/0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch
@@ -12,15 +12,10 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
-@@ -343,6 +343,113 @@
- 			status = "disabled";
- 		};
- 
-+		qfprom: efuse at a4000 {
-+			compatible = "qcom,ipq8074-qfprom", "qcom,qfprom";
-+			reg = <0x000a4000 0x1000>;
-+			#address-cells = <1>;
-+			#size-cells = <1>;
+@@ -349,6 +349,106 @@
+ 			reg = <0x000a4000 0x2000>;
+ 			#address-cells = <1>;
+ 			#size-cells = <1>;
 +
 +			cpr_efuse_speedbin: speedbin at 125 {
 +				reg = <0x125 0x1>;
@@ -121,8 +116,6 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 +				reg = <0x23c 0x1>;
 +				bits = <0 7>;
 +			};
-+		};
-+
+ 		};
+ 
  		prng: rng at e3000 {
- 			compatible = "qcom,prng-ee";
- 			reg = <0x000e3000 0x1000>;
diff --git a/target/linux/qualcommax/patches-6.6/0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch b/target/linux/qualcommax/patches-6.6/0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch
index 9c1e7b9d29..a89e50f52f 100644
--- a/target/linux/qualcommax/patches-6.6/0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch
+++ b/target/linux/qualcommax/patches-6.6/0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch
@@ -45,7 +45,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  		};
  
  		L2_0: l2-cache {
-@@ -83,6 +87,54 @@
+@@ -84,6 +88,54 @@
  		};
  	};
  
diff --git a/target/linux/qualcommax/patches-6.6/0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch b/target/linux/qualcommax/patches-6.6/0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch
index 9a5a3407e1..eaf6e37275 100644
--- a/target/linux/qualcommax/patches-6.6/0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch
+++ b/target/linux/qualcommax/patches-6.6/0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch
@@ -12,7 +12,7 @@ Signed-off-by: Gokul Sriram Palanisamy <gokulsri at codeaurora.org>
 
 --- a/drivers/remoteproc/qcom_q6v5_wcss.c
 +++ b/drivers/remoteproc/qcom_q6v5_wcss.c
-@@ -970,7 +970,7 @@ static int q6v5_alloc_memory_region(stru
+@@ -969,7 +969,7 @@ static int q6v5_alloc_memory_region(stru
  	return 0;
  }
  
@@ -21,7 +21,7 @@ Signed-off-by: Gokul Sriram Palanisamy <gokulsri at codeaurora.org>
  {
  	int ret;
  
-@@ -1179,7 +1179,7 @@ static int q6v5_wcss_remove(struct platf
+@@ -1176,7 +1176,7 @@ static void q6v5_wcss_remove(struct plat
  }
  
  static const struct wcss_data wcss_ipq8074_res_init = {
@@ -30,7 +30,7 @@ Signed-off-by: Gokul Sriram Palanisamy <gokulsri at codeaurora.org>
  	.q6_firmware_name = "IPQ8074/q6_fw.mdt",
  	.m3_firmware_name = "IPQ8074/m3_fw.mdt",
  	.crash_reason_smem = WCSS_CRASH_REASON,
-@@ -1193,6 +1193,20 @@ static const struct wcss_data wcss_ipq80
+@@ -1190,6 +1190,20 @@ static const struct wcss_data wcss_ipq80
  	.need_auto_boot = false,
  };
  
@@ -51,7 +51,7 @@ Signed-off-by: Gokul Sriram Palanisamy <gokulsri at codeaurora.org>
  static const struct wcss_data wcss_qcs404_res_init = {
  	.init_clock = qcs404_init_clock,
  	.init_regulator = qcs404_init_regulator,
-@@ -1212,6 +1226,7 @@ static const struct wcss_data wcss_qcs40
+@@ -1209,6 +1223,7 @@ static const struct wcss_data wcss_qcs40
  
  static const struct of_device_id q6v5_wcss_of_match[] = {
  	{ .compatible = "qcom,ipq8074-wcss-pil", .data = &wcss_ipq8074_res_init },
diff --git a/target/linux/qualcommax/patches-6.6/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch b/target/linux/qualcommax/patches-6.6/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch
index bfca74ba76..e1296aa792 100644
--- a/target/linux/qualcommax/patches-6.6/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch
+++ b/target/linux/qualcommax/patches-6.6/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch
@@ -13,7 +13,7 @@ Tested-by: Robert Marko <robimarko at gmail.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -469,6 +469,29 @@
+@@ -470,6 +470,29 @@
  			};
  		};
  
diff --git a/target/linux/qualcommax/patches-6.6/0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch b/target/linux/qualcommax/patches-6.6/0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch
index 8889db97f9..2f7746646a 100644
--- a/target/linux/qualcommax/patches-6.6/0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch
+++ b/target/linux/qualcommax/patches-6.6/0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch
@@ -13,7 +13,7 @@ Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -178,6 +178,11 @@
+@@ -179,6 +179,11 @@
  						regulator-max-microvolt = <1062500>;
  						regulator-always-on;
  					};
diff --git a/target/linux/qualcommax/patches-6.6/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch b/target/linux/qualcommax/patches-6.6/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch
index c52681928b..c7632d47c0 100644
--- a/target/linux/qualcommax/patches-6.6/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch
+++ b/target/linux/qualcommax/patches-6.6/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch
@@ -30,7 +30,7 @@ Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
 
 --- a/drivers/mtd/nand/raw/nand_ids.c
 +++ b/drivers/mtd/nand/raw/nand_ids.c
-@@ -55,6 +55,9 @@ struct nand_flash_dev nand_flash_ids[] =
+@@ -58,6 +58,9 @@ struct nand_flash_dev nand_flash_ids[] =
  		{ .id = {0xad, 0xde, 0x14, 0xa7, 0x42, 0x4a} },
  		  SZ_16K, SZ_8K, SZ_4M, NAND_NEED_SCRAMBLING, 6, 1664,
  		  NAND_ECC_INFO(40, SZ_1K) },
diff --git a/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch b/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch
index 9b9f7159f3..9b2772c01a 100644
--- a/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch
+++ b/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch
@@ -25,7 +25,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/drivers/regulator/Kconfig
 +++ b/drivers/regulator/Kconfig
-@@ -1524,4 +1524,37 @@ config REGULATOR_QCOM_LABIBB
+@@ -1663,4 +1663,37 @@ config REGULATOR_QCOM_LABIBB
  	  boost regulator and IBB can be used as a negative boost regulator
  	  for LCD display panel.
  
@@ -65,7 +65,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  endif
 --- a/drivers/regulator/Makefile
 +++ b/drivers/regulator/Makefile
-@@ -110,6 +110,9 @@ obj-$(CONFIG_REGULATOR_QCOM_RPMH) += qco
+@@ -116,6 +116,9 @@ obj-$(CONFIG_REGULATOR_QCOM_RPMH) += qco
  obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o
  obj-$(CONFIG_REGULATOR_QCOM_SPMI) += qcom_spmi-regulator.o
  obj-$(CONFIG_REGULATOR_QCOM_USB_VBUS) += qcom_usb_vbus-regulator.o
diff --git a/target/linux/qualcommax/patches-6.6/0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch b/target/linux/qualcommax/patches-6.6/0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch
index 175d475849..9172a02b08 100644
--- a/target/linux/qualcommax/patches-6.6/0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch
+++ b/target/linux/qualcommax/patches-6.6/0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch
@@ -19,7 +19,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 
 --- a/drivers/clk/qcom/gcc-ipq6018.c
 +++ b/drivers/clk/qcom/gcc-ipq6018.c
-@@ -361,7 +361,7 @@ static const struct freq_tbl ftbl_nss_pp
+@@ -360,7 +360,7 @@ static const struct freq_tbl ftbl_nss_pp
  
  static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
  	{ .fw_name = "xo" },
@@ -28,7 +28,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  	{ .hw = &gpll0.clkr.hw },
  	{ .hw = &gpll4.clkr.hw },
  	{ .hw = &nss_crypto_pll.clkr.hw },
-@@ -527,12 +527,12 @@ static const struct freq_tbl ftbl_nss_po
+@@ -526,12 +526,12 @@ static const struct freq_tbl ftbl_nss_po
  static const struct clk_parent_data
  gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
  	{ .fw_name = "xo" },
@@ -46,7 +46,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  };
  
  static const struct parent_map
-@@ -574,12 +574,12 @@ static const struct freq_tbl ftbl_nss_po
+@@ -573,12 +573,12 @@ static const struct freq_tbl ftbl_nss_po
  static const struct clk_parent_data
  gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
  	{ .fw_name = "xo" },
@@ -64,7 +64,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  };
  
  static const struct parent_map
-@@ -715,10 +715,10 @@ static const struct freq_tbl ftbl_nss_po
+@@ -714,10 +714,10 @@ static const struct freq_tbl ftbl_nss_po
  
  static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
  	{ .fw_name = "xo" },
@@ -78,7 +78,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  };
  
  static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
-@@ -751,10 +751,10 @@ static const struct freq_tbl ftbl_nss_po
+@@ -750,10 +750,10 @@ static const struct freq_tbl ftbl_nss_po
  
  static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
  	{ .fw_name = "xo" },
@@ -92,7 +92,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
  };
  
  static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
-@@ -1898,12 +1898,11 @@ static const struct freq_tbl ftbl_ubi32_
+@@ -1897,12 +1897,11 @@ static const struct freq_tbl ftbl_ubi32_
  	{ }
  };
  
diff --git a/target/linux/qualcommax/patches-6.6/0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch b/target/linux/qualcommax/patches-6.6/0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch
index 58bea43892..db20d3f2c4 100644
--- a/target/linux/qualcommax/patches-6.6/0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch
+++ b/target/linux/qualcommax/patches-6.6/0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch
@@ -18,7 +18,7 @@ Signed-off-by: Mantas Pucka <mantas at 8devices.com>
 
 --- a/drivers/remoteproc/qcom_q6v5_wcss.c
 +++ b/drivers/remoteproc/qcom_q6v5_wcss.c
-@@ -1143,8 +1143,8 @@ static int q6v5_wcss_probe(struct platfo
+@@ -1142,8 +1142,8 @@ static int q6v5_wcss_probe(struct platfo
  	if (ret)
  		goto free_rproc;
  
@@ -29,7 +29,7 @@ Signed-off-by: Mantas Pucka <mantas at 8devices.com>
  
  	if (desc->ssctl_id)
  		wcss->sysmon = qcom_add_sysmon_subdev(rproc,
-@@ -1201,7 +1201,7 @@ static const struct wcss_data wcss_ipq60
+@@ -1198,7 +1198,7 @@ static const struct wcss_data wcss_ipq60
  	.aon_reset_required = true,
  	.wcss_q6_reset_required = true,
  	.bcr_reset_required = false,
diff --git a/target/linux/qualcommax/patches-6.6/0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch b/target/linux/qualcommax/patches-6.6/0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch
index 247df110ff..3e040cd2fd 100644
--- a/target/linux/qualcommax/patches-6.6/0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch
+++ b/target/linux/qualcommax/patches-6.6/0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch
@@ -15,7 +15,7 @@ Signed-off-by: Mantas Pucka <mantas at 8devices.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -807,6 +807,102 @@
+@@ -808,6 +808,102 @@
  			};
  		};
  
diff --git a/target/linux/qualcommax/patches-6.6/0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch b/target/linux/qualcommax/patches-6.6/0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch
index 88e294562d..d1bca14063 100644
--- a/target/linux/qualcommax/patches-6.6/0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch
+++ b/target/linux/qualcommax/patches-6.6/0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch
@@ -15,7 +15,7 @@ Signed-off-by: Mantas Pucka <mantas at 8devices.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -1155,6 +1155,7 @@
+@@ -1156,6 +1156,7 @@
  
  		wcss_smp2p_out: master-kernel {
  			qcom,entry-name = "master-kernel";
diff --git a/target/linux/qualcommax/patches-6.6/0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch b/target/linux/qualcommax/patches-6.6/0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch
index cfc9adda04..309c424731 100644
--- a/target/linux/qualcommax/patches-6.6/0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch
+++ b/target/linux/qualcommax/patches-6.6/0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch
@@ -40,7 +40,7 @@ Signed-off-by: Mantas Pucka <mantas at 8devices.com>
  	clk_disable_unprepare(wcss->prng_clk);
  	qcom_q6v5_unprepare(&wcss->q6v5);
  
-@@ -981,6 +987,12 @@ static int ipq_init_clock(struct q6v5_wc
+@@ -980,6 +986,12 @@ static int ipq_init_clock(struct q6v5_wc
  			dev_err(wcss->dev, "Failed to get prng clock\n");
  		return ret;
  	}
diff --git a/target/linux/qualcommax/patches-6.6/0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch b/target/linux/qualcommax/patches-6.6/0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch
index 0a7a100f6a..3e0ac68f2b 100644
--- a/target/linux/qualcommax/patches-6.6/0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch
+++ b/target/linux/qualcommax/patches-6.6/0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch
@@ -13,7 +13,7 @@ Signed-off-by: Mantas Pucka <mantas at 8devices.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -928,8 +928,8 @@
+@@ -929,8 +929,8 @@
  				      "wcss_reset",
  				      "wcss_q6_reset";
  
diff --git a/target/linux/qualcommax/patches-6.6/0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch b/target/linux/qualcommax/patches-6.6/0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch
index 17784235c3..25fa313670 100644
--- a/target/linux/qualcommax/patches-6.6/0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch
+++ b/target/linux/qualcommax/patches-6.6/0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch
@@ -14,7 +14,7 @@ Signed-off-by: Mantas Pucka <mantas at 8devices.com>
 
 --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
 +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
-@@ -106,42 +106,42 @@
+@@ -107,42 +107,42 @@
  
  		opp-864000000 {
  			opp-hz = /bits/ 64 <864000000>;



From lede-commits at lists.infradead.org  Fri Mar 22 13:19:26 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 16:19:26 -0400
Subject: [openwrt/openwrt]  kernel/qualcommax: Create kernel files for v6.6
 (from v6.1)
In-Reply-To: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
References: <171113876651.594929.2166095756752866606@git-01.infra.openwrt.org>
Message-ID: <mailman.18781.1711138780.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e28492c81ac57c200798d62c60af4a288b076cfb

commit e28492c81ac57c200798d62c60af4a288b076cfb
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 22 10:01:17 2024 +0100

    kernel/qualcommax: Create kernel files for v6.6 (from v6.1)
    
    This is an automatically generated commit.
    
    When doing `git bisect`, consider `git bisect --skip`.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/qualcommax/{config-6.1 => config-6.6}                        | 0
 .../0001-v6.2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch               | 0
 .../0002-v6.2-thermal-drivers-tsens-Add-support-for-combined-inter.patch  | 0
 .../0003-v6.2-thermal-drivers-tsens-Allow-configuring-min-and-max-.patch  | 0
 .../0004-v6.2-thermal-drivers-tsens-Add-IPQ8074-support.patch             | 0
 .../0005-v6.2-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch              | 0
 .../0006-v6.2-arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch             | 0
 .../0007-v6.2-clk-qcom-ipq8074-convert-to-parent-data.patch               | 0
 .../0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch             | 0
 .../0009-v6.2-dt-bindings-clock-qcom-ipq8074-add-missing-networkin.patch  | 0
 .../0010-v6.2-clk-qcom-ipq8074-add-missing-networking-resets.patch        | 0
 .../0011-v6.2-clk-qcom-ipq8074-populate-fw_name-for-all-parents.patch     | 0
 .../0012-v6.2-arm64-dts-qcom-ipq8074-pass-XO-and-sleep-clocks-to-G.patch  | 0
 .../0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch                       | 0
 .../0014-v6.2-arm64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch          | 0
 .../0015-v6.2-arm64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch           | 0
 .../0016-v6.2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch                | 0
 .../0017-v6.2-arm64-dts-qcom-ipq8074-align-TLMM-pin-configuration-.patch  | 0
 .../0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch  | 0
 .../0019-v6.3-arm64-dts-qcom-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch  | 0
 .../0020-v6.3-PCI-qcom-Add-support-for-IPQ8074-Gen3-port.patch            | 0
 .../0021-v6.3-clk-qcom-ipq8074-populate-fw_name-for-usb3phy-s.patch       | 0
 .../0022-v6.4-arm64-dts-qcom-ipq8074-add-compatible-fallback-to.patch     | 0
 .../0023-v6.5-arm64-dts-qcom-ipq8074-add-critical-thermal-trips.patch     | 0
 .../0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch   | 0
 .../0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch            | 0
 .../0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch            | 0
 .../0027-v6.7-clk-qcom-apss-ipq6018-add-the-GPLL0-clock-also-as-cl.patch  | 0
 .../0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch  | 0
 .../0029-v6.3-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch  | 0
 .../0030-v6.4-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch  | 0
 .../0031-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch  | 0
 .../0032-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch       | 0
 .../0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch    | 0
 .../0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch            | 0
 .../0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch       | 0
 .../0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch              | 0
 .../0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch     | 0
 .../0038-v6.4-arm64-dts-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch     | 0
 .../0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch    | 0
 .../0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch       | 0
 .../0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch      | 0
 .../0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch   | 0
 .../0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch                | 0
 .../0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch         | 0
 .../0045-v6.5-arm64-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch         | 0
 .../0046-v6.6-clk-qcom-gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch    | 0
 .../0047-v6.6-clk-qcom-gcc-ipq6018-drop-redundant-F-define.patch          | 0
 .../0048-v6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch                 | 0
 .../0049-v6.6-clk-qcom-gcc-ipq6018-remove-duplicate-initializers.patch    | 0
 .../0050-v6.6-soc-qcom-Add-RPM-processor-subsystem-driver.patch           | 0
 .../0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch            | 0
 .../0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch           | 0
 .../0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch               | 0
 .../0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch              | 0
 .../0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch         | 0
 .../0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch       | 0
 .../0057-v6.8-hwspinlock-qcom-Remove-IPQ6018-SOC-specific-.patch          | 0
 .../0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch                 | 0
 .../0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch              | 0
 .../0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch  | 0
 .../0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch | 0
 .../0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch              | 0
 .../0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch       | 0
 .../0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch       | 0
 .../0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch                | 0
 .../0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch       | 0
 .../0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch             | 0
 .../0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch                       | 0
 .../0113-remoteproc-qcom-Add-secure-PIL-support.patch                     | 0
 .../0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch       | 0
 .../0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch               | 0
 .../0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch       | 0
 .../0117-dt-bindings-clock-qcom-Add-reset-for-WCSSAON.patch               | 0
 .../{patches-6.1 => patches-6.6}/0118-clk-qcom-Add-WCSSAON-reset.patch    | 0
 .../0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch              | 0
 .../0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch            | 0
 .../0121-arm64-dts-ipq8074-Add-WLAN-node.patch                            | 0
 .../0122-arm64-dts-ipq8074-add-CPU-clock.patch                            | 0
 .../0123-arm64-dts-ipq8074-add-cooling-cells-to-CPU-nodes.patch           | 0
 .../0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch                    | 0
 .../0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch                   | 0
 .../0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch       | 0
 .../0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch                      | 0
 .../0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch                 | 0
 .../0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch                | 0
 .../{patches-6.1 => patches-6.6}/0900-power-Add-Qualcomm-APM.patch        | 0
 .../0901-regulator-add-Qualcomm-CPR-regulators.patch                      | 0
 .../0902-arm64-dts-ipq8074-add-label-to-clocks.patch                      | 0
 .../0903-psci-dont-advertise-OSI-support-for-IPQ6018.patch                | 0
 .../0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch       | 0
 .../0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch       | 0
 .../0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch                       | 0
 .../0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch                          | 0
 .../0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch       | 0
 .../0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch       | 0
 .../0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch       | 0
 97 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/target/linux/qualcommax/config-6.1 b/target/linux/qualcommax/config-6.6
similarity index 100%
rename from target/linux/qualcommax/config-6.1
rename to target/linux/qualcommax/config-6.6
diff --git a/target/linux/qualcommax/patches-6.1/0001-v6.2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch b/target/linux/qualcommax/patches-6.6/0001-v6.2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0001-v6.2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch
rename to target/linux/qualcommax/patches-6.6/0001-v6.2-arm64-dts-qcom-ipq8074-add-A53-PLL-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0002-v6.2-thermal-drivers-tsens-Add-support-for-combined-inter.patch b/target/linux/qualcommax/patches-6.6/0002-v6.2-thermal-drivers-tsens-Add-support-for-combined-inter.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0002-v6.2-thermal-drivers-tsens-Add-support-for-combined-inter.patch
rename to target/linux/qualcommax/patches-6.6/0002-v6.2-thermal-drivers-tsens-Add-support-for-combined-inter.patch
diff --git a/target/linux/qualcommax/patches-6.1/0003-v6.2-thermal-drivers-tsens-Allow-configuring-min-and-max-.patch b/target/linux/qualcommax/patches-6.6/0003-v6.2-thermal-drivers-tsens-Allow-configuring-min-and-max-.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0003-v6.2-thermal-drivers-tsens-Allow-configuring-min-and-max-.patch
rename to target/linux/qualcommax/patches-6.6/0003-v6.2-thermal-drivers-tsens-Allow-configuring-min-and-max-.patch
diff --git a/target/linux/qualcommax/patches-6.1/0004-v6.2-thermal-drivers-tsens-Add-IPQ8074-support.patch b/target/linux/qualcommax/patches-6.6/0004-v6.2-thermal-drivers-tsens-Add-IPQ8074-support.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0004-v6.2-thermal-drivers-tsens-Add-IPQ8074-support.patch
rename to target/linux/qualcommax/patches-6.6/0004-v6.2-thermal-drivers-tsens-Add-IPQ8074-support.patch
diff --git a/target/linux/qualcommax/patches-6.1/0005-v6.2-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch b/target/linux/qualcommax/patches-6.6/0005-v6.2-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0005-v6.2-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch
rename to target/linux/qualcommax/patches-6.6/0005-v6.2-arm64-dts-qcom-ipq8074-add-thermal-nodes.patch
diff --git a/target/linux/qualcommax/patches-6.1/0006-v6.2-arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch b/target/linux/qualcommax/patches-6.6/0006-v6.2-arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0006-v6.2-arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch
rename to target/linux/qualcommax/patches-6.6/0006-v6.2-arm64-dts-qcom-ipq8074-add-clocks-to-APCS.patch
diff --git a/target/linux/qualcommax/patches-6.1/0007-v6.2-clk-qcom-ipq8074-convert-to-parent-data.patch b/target/linux/qualcommax/patches-6.6/0007-v6.2-clk-qcom-ipq8074-convert-to-parent-data.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0007-v6.2-clk-qcom-ipq8074-convert-to-parent-data.patch
rename to target/linux/qualcommax/patches-6.6/0007-v6.2-clk-qcom-ipq8074-convert-to-parent-data.patch
diff --git a/target/linux/qualcommax/patches-6.1/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch b/target/linux/qualcommax/patches-6.6/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch
rename to target/linux/qualcommax/patches-6.6/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch
diff --git a/target/linux/qualcommax/patches-6.1/0009-v6.2-dt-bindings-clock-qcom-ipq8074-add-missing-networkin.patch b/target/linux/qualcommax/patches-6.6/0009-v6.2-dt-bindings-clock-qcom-ipq8074-add-missing-networkin.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0009-v6.2-dt-bindings-clock-qcom-ipq8074-add-missing-networkin.patch
rename to target/linux/qualcommax/patches-6.6/0009-v6.2-dt-bindings-clock-qcom-ipq8074-add-missing-networkin.patch
diff --git a/target/linux/qualcommax/patches-6.1/0010-v6.2-clk-qcom-ipq8074-add-missing-networking-resets.patch b/target/linux/qualcommax/patches-6.6/0010-v6.2-clk-qcom-ipq8074-add-missing-networking-resets.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0010-v6.2-clk-qcom-ipq8074-add-missing-networking-resets.patch
rename to target/linux/qualcommax/patches-6.6/0010-v6.2-clk-qcom-ipq8074-add-missing-networking-resets.patch
diff --git a/target/linux/qualcommax/patches-6.1/0011-v6.2-clk-qcom-ipq8074-populate-fw_name-for-all-parents.patch b/target/linux/qualcommax/patches-6.6/0011-v6.2-clk-qcom-ipq8074-populate-fw_name-for-all-parents.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0011-v6.2-clk-qcom-ipq8074-populate-fw_name-for-all-parents.patch
rename to target/linux/qualcommax/patches-6.6/0011-v6.2-clk-qcom-ipq8074-populate-fw_name-for-all-parents.patch
diff --git a/target/linux/qualcommax/patches-6.1/0012-v6.2-arm64-dts-qcom-ipq8074-pass-XO-and-sleep-clocks-to-G.patch b/target/linux/qualcommax/patches-6.6/0012-v6.2-arm64-dts-qcom-ipq8074-pass-XO-and-sleep-clocks-to-G.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0012-v6.2-arm64-dts-qcom-ipq8074-pass-XO-and-sleep-clocks-to-G.patch
rename to target/linux/qualcommax/patches-6.6/0012-v6.2-arm64-dts-qcom-ipq8074-pass-XO-and-sleep-clocks-to-G.patch
diff --git a/target/linux/qualcommax/patches-6.1/0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch b/target/linux/qualcommax/patches-6.6/0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch
rename to target/linux/qualcommax/patches-6.6/0013-v6.2-arm64-dts-qcom-add-PMP8074-DTSI.patch
diff --git a/target/linux/qualcommax/patches-6.1/0014-v6.2-arm64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch b/target/linux/qualcommax/patches-6.6/0014-v6.2-arm64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0014-v6.2-arm64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch
rename to target/linux/qualcommax/patches-6.6/0014-v6.2-arm64-dts-qcom-ipq8074-hk01-add-VQMMC-supply.patch
diff --git a/target/linux/qualcommax/patches-6.1/0015-v6.2-arm64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch b/target/linux/qualcommax/patches-6.6/0015-v6.2-arm64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0015-v6.2-arm64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch
rename to target/linux/qualcommax/patches-6.6/0015-v6.2-arm64-dts-qcom-hk01-use-GPIO-flags-for-tlmm.patch
diff --git a/target/linux/qualcommax/patches-6.1/0016-v6.2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch b/target/linux/qualcommax/patches-6.6/0016-v6.2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0016-v6.2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch
rename to target/linux/qualcommax/patches-6.6/0016-v6.2-arm64-dts-qcom-ipq8074-Fix-up-comments.patch
diff --git a/target/linux/qualcommax/patches-6.1/0017-v6.2-arm64-dts-qcom-ipq8074-align-TLMM-pin-configuration-.patch b/target/linux/qualcommax/patches-6.6/0017-v6.2-arm64-dts-qcom-ipq8074-align-TLMM-pin-configuration-.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0017-v6.2-arm64-dts-qcom-ipq8074-align-TLMM-pin-configuration-.patch
rename to target/linux/qualcommax/patches-6.6/0017-v6.2-arm64-dts-qcom-ipq8074-align-TLMM-pin-configuration-.patch
diff --git a/target/linux/qualcommax/patches-6.1/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch b/target/linux/qualcommax/patches-6.6/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch
rename to target/linux/qualcommax/patches-6.6/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch
diff --git a/target/linux/qualcommax/patches-6.1/0019-v6.3-arm64-dts-qcom-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch b/target/linux/qualcommax/patches-6.6/0019-v6.3-arm64-dts-qcom-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0019-v6.3-arm64-dts-qcom-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch
rename to target/linux/qualcommax/patches-6.6/0019-v6.3-arm64-dts-qcom-ipq8074-set-Gen2-PCIe-pcie-max-link-s.patch
diff --git a/target/linux/qualcommax/patches-6.1/0020-v6.3-PCI-qcom-Add-support-for-IPQ8074-Gen3-port.patch b/target/linux/qualcommax/patches-6.6/0020-v6.3-PCI-qcom-Add-support-for-IPQ8074-Gen3-port.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0020-v6.3-PCI-qcom-Add-support-for-IPQ8074-Gen3-port.patch
rename to target/linux/qualcommax/patches-6.6/0020-v6.3-PCI-qcom-Add-support-for-IPQ8074-Gen3-port.patch
diff --git a/target/linux/qualcommax/patches-6.1/0021-v6.3-clk-qcom-ipq8074-populate-fw_name-for-usb3phy-s.patch b/target/linux/qualcommax/patches-6.6/0021-v6.3-clk-qcom-ipq8074-populate-fw_name-for-usb3phy-s.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0021-v6.3-clk-qcom-ipq8074-populate-fw_name-for-usb3phy-s.patch
rename to target/linux/qualcommax/patches-6.6/0021-v6.3-clk-qcom-ipq8074-populate-fw_name-for-usb3phy-s.patch
diff --git a/target/linux/qualcommax/patches-6.1/0022-v6.4-arm64-dts-qcom-ipq8074-add-compatible-fallback-to.patch b/target/linux/qualcommax/patches-6.6/0022-v6.4-arm64-dts-qcom-ipq8074-add-compatible-fallback-to.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0022-v6.4-arm64-dts-qcom-ipq8074-add-compatible-fallback-to.patch
rename to target/linux/qualcommax/patches-6.6/0022-v6.4-arm64-dts-qcom-ipq8074-add-compatible-fallback-to.patch
diff --git a/target/linux/qualcommax/patches-6.1/0023-v6.5-arm64-dts-qcom-ipq8074-add-critical-thermal-trips.patch b/target/linux/qualcommax/patches-6.6/0023-v6.5-arm64-dts-qcom-ipq8074-add-critical-thermal-trips.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0023-v6.5-arm64-dts-qcom-ipq8074-add-critical-thermal-trips.patch
rename to target/linux/qualcommax/patches-6.6/0023-v6.5-arm64-dts-qcom-ipq8074-add-critical-thermal-trips.patch
diff --git a/target/linux/qualcommax/patches-6.1/0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch b/target/linux/qualcommax/patches-6.6/0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch
rename to target/linux/qualcommax/patches-6.6/0024-v6.7-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ8174-family.patch
diff --git a/target/linux/qualcommax/patches-6.1/0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch b/target/linux/qualcommax/patches-6.6/0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch
rename to target/linux/qualcommax/patches-6.6/0025-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ6018.patch
diff --git a/target/linux/qualcommax/patches-6.1/0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch b/target/linux/qualcommax/patches-6.6/0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch
rename to target/linux/qualcommax/patches-6.6/0026-v6.7-cpufreq-qcom-nvmem-add-support-for-IPQ8074.patch
diff --git a/target/linux/qualcommax/patches-6.1/0027-v6.7-clk-qcom-apss-ipq6018-add-the-GPLL0-clock-also-as-cl.patch b/target/linux/qualcommax/patches-6.6/0027-v6.7-clk-qcom-apss-ipq6018-add-the-GPLL0-clock-also-as-cl.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0027-v6.7-clk-qcom-apss-ipq6018-add-the-GPLL0-clock-also-as-cl.patch
rename to target/linux/qualcommax/patches-6.6/0027-v6.7-clk-qcom-apss-ipq6018-add-the-GPLL0-clock-also-as-cl.patch
diff --git a/target/linux/qualcommax/patches-6.1/0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch b/target/linux/qualcommax/patches-6.6/0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch
rename to target/linux/qualcommax/patches-6.6/0028-v6.7-arm64-dts-qcom-ipq8074-include-the-GPLL0-as-clock-pr.patch
diff --git a/target/linux/qualcommax/patches-6.1/0029-v6.3-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch b/target/linux/qualcommax/patches-6.6/0029-v6.3-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0029-v6.3-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch
rename to target/linux/qualcommax/patches-6.6/0029-v6.3-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ5332-and-its.patch
diff --git a/target/linux/qualcommax/patches-6.1/0030-v6.4-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch b/target/linux/qualcommax/patches-6.6/0030-v6.4-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0030-v6.4-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch
rename to target/linux/qualcommax/patches-6.6/0030-v6.4-dt-bindings-arm-qcom-ids-Add-IDs-for-IPQ9574-and-its.patch
diff --git a/target/linux/qualcommax/patches-6.1/0031-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch b/target/linux/qualcommax/patches-6.6/0031-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0031-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch
rename to target/linux/qualcommax/patches-6.6/0031-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5312-and-.patch
diff --git a/target/linux/qualcommax/patches-6.1/0032-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch b/target/linux/qualcommax/patches-6.6/0032-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0032-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch
rename to target/linux/qualcommax/patches-6.6/0032-v6.5-dt-bindings-arm-qcom-ids-add-SoC-ID-for-IPQ5300.patch
diff --git a/target/linux/qualcommax/patches-6.1/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch b/target/linux/qualcommax/patches-6.6/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch
rename to target/linux/qualcommax/patches-6.6/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch
diff --git a/target/linux/qualcommax/patches-6.1/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch b/target/linux/qualcommax/patches-6.6/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch
rename to target/linux/qualcommax/patches-6.6/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch
diff --git a/target/linux/qualcommax/patches-6.1/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch b/target/linux/qualcommax/patches-6.6/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch
rename to target/linux/qualcommax/patches-6.6/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch
diff --git a/target/linux/qualcommax/patches-6.1/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch b/target/linux/qualcommax/patches-6.6/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch
rename to target/linux/qualcommax/patches-6.6/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch
diff --git a/target/linux/qualcommax/patches-6.1/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch b/target/linux/qualcommax/patches-6.6/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch
rename to target/linux/qualcommax/patches-6.6/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch
diff --git a/target/linux/qualcommax/patches-6.1/0038-v6.4-arm64-dts-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch b/target/linux/qualcommax/patches-6.6/0038-v6.4-arm64-dts-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0038-v6.4-arm64-dts-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch
rename to target/linux/qualcommax/patches-6.6/0038-v6.4-arm64-dts-qcom-ipq6018-cp01-c1-drop-SPI-cs-select.patch
diff --git a/target/linux/qualcommax/patches-6.1/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch b/target/linux/qualcommax/patches-6.6/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch
rename to target/linux/qualcommax/patches-6.6/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch
diff --git a/target/linux/qualcommax/patches-6.1/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch b/target/linux/qualcommax/patches-6.6/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch
rename to target/linux/qualcommax/patches-6.6/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch
diff --git a/target/linux/qualcommax/patches-6.1/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch b/target/linux/qualcommax/patches-6.6/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch
rename to target/linux/qualcommax/patches-6.6/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch
diff --git a/target/linux/qualcommax/patches-6.1/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch b/target/linux/qualcommax/patches-6.6/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch
rename to target/linux/qualcommax/patches-6.6/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch b/target/linux/qualcommax/patches-6.6/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch
rename to target/linux/qualcommax/patches-6.6/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch b/target/linux/qualcommax/patches-6.6/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch
rename to target/linux/qualcommax/patches-6.6/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch
diff --git a/target/linux/qualcommax/patches-6.1/0045-v6.5-arm64-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch b/target/linux/qualcommax/patches-6.6/0045-v6.5-arm64-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0045-v6.5-arm64-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch
rename to target/linux/qualcommax/patches-6.6/0045-v6.5-arm64-dts-qcom-ipq8074-drop-incorrect-SPI-bus.patch
diff --git a/target/linux/qualcommax/patches-6.1/0046-v6.6-clk-qcom-gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch b/target/linux/qualcommax/patches-6.6/0046-v6.6-clk-qcom-gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0046-v6.6-clk-qcom-gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch
rename to target/linux/qualcommax/patches-6.6/0046-v6.6-clk-qcom-gcc-ipq6018-Use-floor-ops-for-sdcc-clocks.patch
diff --git a/target/linux/qualcommax/patches-6.1/0047-v6.6-clk-qcom-gcc-ipq6018-drop-redundant-F-define.patch b/target/linux/qualcommax/patches-6.6/0047-v6.6-clk-qcom-gcc-ipq6018-drop-redundant-F-define.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0047-v6.6-clk-qcom-gcc-ipq6018-drop-redundant-F-define.patch
rename to target/linux/qualcommax/patches-6.6/0047-v6.6-clk-qcom-gcc-ipq6018-drop-redundant-F-define.patch
diff --git a/target/linux/qualcommax/patches-6.1/0048-v6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch b/target/linux/qualcommax/patches-6.6/0048-v6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0048-v6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch
rename to target/linux/qualcommax/patches-6.6/0048-v6.6-clk-qcom-gcc-ipq6018-update-UBI32-PLL.patch
diff --git a/target/linux/qualcommax/patches-6.1/0049-v6.6-clk-qcom-gcc-ipq6018-remove-duplicate-initializers.patch b/target/linux/qualcommax/patches-6.6/0049-v6.6-clk-qcom-gcc-ipq6018-remove-duplicate-initializers.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0049-v6.6-clk-qcom-gcc-ipq6018-remove-duplicate-initializers.patch
rename to target/linux/qualcommax/patches-6.6/0049-v6.6-clk-qcom-gcc-ipq6018-remove-duplicate-initializers.patch
diff --git a/target/linux/qualcommax/patches-6.1/0050-v6.6-soc-qcom-Add-RPM-processor-subsystem-driver.patch b/target/linux/qualcommax/patches-6.6/0050-v6.6-soc-qcom-Add-RPM-processor-subsystem-driver.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0050-v6.6-soc-qcom-Add-RPM-processor-subsystem-driver.patch
rename to target/linux/qualcommax/patches-6.6/0050-v6.6-soc-qcom-Add-RPM-processor-subsystem-driver.patch
diff --git a/target/linux/qualcommax/patches-6.1/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch b/target/linux/qualcommax/patches-6.6/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch
rename to target/linux/qualcommax/patches-6.6/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch
diff --git a/target/linux/qualcommax/patches-6.1/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch b/target/linux/qualcommax/patches-6.6/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch
rename to target/linux/qualcommax/patches-6.6/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch
diff --git a/target/linux/qualcommax/patches-6.1/0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch b/target/linux/qualcommax/patches-6.6/0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch
rename to target/linux/qualcommax/patches-6.6/0053-v6.7-clk-qcom-gcc-ipq6018-add-QUP6-I2C-clock.patch
diff --git a/target/linux/qualcommax/patches-6.1/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch b/target/linux/qualcommax/patches-6.6/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch
rename to target/linux/qualcommax/patches-6.6/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch
diff --git a/target/linux/qualcommax/patches-6.1/0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch b/target/linux/qualcommax/patches-6.6/0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch
rename to target/linux/qualcommax/patches-6.6/0055-v6.8-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch b/target/linux/qualcommax/patches-6.6/0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch
rename to target/linux/qualcommax/patches-6.6/0056-v6.9-arm64-dts-qcom-Fix-hs_phy_irq-for-QUSB2-targets.patch
diff --git a/target/linux/qualcommax/patches-6.1/0057-v6.8-hwspinlock-qcom-Remove-IPQ6018-SOC-specific-.patch b/target/linux/qualcommax/patches-6.6/0057-v6.8-hwspinlock-qcom-Remove-IPQ6018-SOC-specific-.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0057-v6.8-hwspinlock-qcom-Remove-IPQ6018-SOC-specific-.patch
rename to target/linux/qualcommax/patches-6.6/0057-v6.8-hwspinlock-qcom-Remove-IPQ6018-SOC-specific-.patch
diff --git a/target/linux/qualcommax/patches-6.1/0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch b/target/linux/qualcommax/patches-6.6/0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch
rename to target/linux/qualcommax/patches-6.6/0058-v6.9-arm64-dts-qcom-ipq6018-add-tsens-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch b/target/linux/qualcommax/patches-6.6/0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch
rename to target/linux/qualcommax/patches-6.6/0059-v6.9-arm64-dts-qcom-ipq6018-add-thermal-zones.patch
diff --git a/target/linux/qualcommax/patches-6.1/0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch b/target/linux/qualcommax/patches-6.6/0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch
rename to target/linux/qualcommax/patches-6.6/0060-v6.9-clk-qcom-gcc-ipq6018-add-qdss_at-clock-needed-for-wi.patch
diff --git a/target/linux/qualcommax/patches-6.1/0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch b/target/linux/qualcommax/patches-6.6/0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch
rename to target/linux/qualcommax/patches-6.6/0061-v6.8-phy-qcom-qmp-usb-fix-serdes-init-sequence-for-IPQ6018.patch
diff --git a/target/linux/qualcommax/patches-6.1/0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch b/target/linux/qualcommax/patches-6.6/0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch
rename to target/linux/qualcommax/patches-6.6/0062-v6.8-arm64-dts-qcom-ipq8074-Add-QUP4-SPI-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch b/target/linux/qualcommax/patches-6.6/0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch
rename to target/linux/qualcommax/patches-6.6/0100-clk-qcom-clk-rcg2-introduce-support-for-multiple-con.patch
diff --git a/target/linux/qualcommax/patches-6.1/0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch b/target/linux/qualcommax/patches-6.6/0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch
rename to target/linux/qualcommax/patches-6.6/0101-clk-qcom-gcc-ipq8074-rework-nss_port5-6-clock-to-mul.patch
diff --git a/target/linux/qualcommax/patches-6.1/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch b/target/linux/qualcommax/patches-6.6/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch
rename to target/linux/qualcommax/patches-6.6/0102-arm64-dts-ipq8074-add-reserved-memory-nodes.patch
diff --git a/target/linux/qualcommax/patches-6.1/0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch b/target/linux/qualcommax/patches-6.6/0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch
rename to target/linux/qualcommax/patches-6.6/0110-arm64-dts-qcom-ipq8074-pass-QMP-PCI-PHY-PIPE-clocks-.patch
diff --git a/target/linux/qualcommax/patches-6.1/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch b/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
rename to target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
diff --git a/target/linux/qualcommax/patches-6.1/0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch b/target/linux/qualcommax/patches-6.6/0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch
rename to target/linux/qualcommax/patches-6.6/0112-remoteproc-qcom-Add-PRNG-proxy-clock.patch
diff --git a/target/linux/qualcommax/patches-6.1/0113-remoteproc-qcom-Add-secure-PIL-support.patch b/target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0113-remoteproc-qcom-Add-secure-PIL-support.patch
rename to target/linux/qualcommax/patches-6.6/0113-remoteproc-qcom-Add-secure-PIL-support.patch
diff --git a/target/linux/qualcommax/patches-6.1/0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch b/target/linux/qualcommax/patches-6.6/0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch
rename to target/linux/qualcommax/patches-6.6/0114-remoteproc-qcom-Add-support-for-split-q6-m3-wlan-fir.patch
diff --git a/target/linux/qualcommax/patches-6.1/0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch b/target/linux/qualcommax/patches-6.6/0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch
rename to target/linux/qualcommax/patches-6.6/0115-remoteproc-qcom-Add-ssr-subdevice-identifier.patch
diff --git a/target/linux/qualcommax/patches-6.1/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch b/target/linux/qualcommax/patches-6.6/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
rename to target/linux/qualcommax/patches-6.6/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
diff --git a/target/linux/qualcommax/patches-6.1/0117-dt-bindings-clock-qcom-Add-reset-for-WCSSAON.patch b/target/linux/qualcommax/patches-6.6/0117-dt-bindings-clock-qcom-Add-reset-for-WCSSAON.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0117-dt-bindings-clock-qcom-Add-reset-for-WCSSAON.patch
rename to target/linux/qualcommax/patches-6.6/0117-dt-bindings-clock-qcom-Add-reset-for-WCSSAON.patch
diff --git a/target/linux/qualcommax/patches-6.1/0118-clk-qcom-Add-WCSSAON-reset.patch b/target/linux/qualcommax/patches-6.6/0118-clk-qcom-Add-WCSSAON-reset.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0118-clk-qcom-Add-WCSSAON-reset.patch
rename to target/linux/qualcommax/patches-6.6/0118-clk-qcom-Add-WCSSAON-reset.patch
diff --git a/target/linux/qualcommax/patches-6.1/0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch b/target/linux/qualcommax/patches-6.6/0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch
rename to target/linux/qualcommax/patches-6.6/0119-remoteproc-wcss-disable-auto-boot-for-IPQ8074.patch
diff --git a/target/linux/qualcommax/patches-6.1/0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch b/target/linux/qualcommax/patches-6.6/0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch
rename to target/linux/qualcommax/patches-6.6/0120-arm64-dts-qcom-Enable-Q6v5-WCSS-for-ipq8074-SoC.patch
diff --git a/target/linux/qualcommax/patches-6.1/0121-arm64-dts-ipq8074-Add-WLAN-node.patch b/target/linux/qualcommax/patches-6.6/0121-arm64-dts-ipq8074-Add-WLAN-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0121-arm64-dts-ipq8074-Add-WLAN-node.patch
rename to target/linux/qualcommax/patches-6.6/0121-arm64-dts-ipq8074-Add-WLAN-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0122-arm64-dts-ipq8074-add-CPU-clock.patch b/target/linux/qualcommax/patches-6.6/0122-arm64-dts-ipq8074-add-CPU-clock.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0122-arm64-dts-ipq8074-add-CPU-clock.patch
rename to target/linux/qualcommax/patches-6.6/0122-arm64-dts-ipq8074-add-CPU-clock.patch
diff --git a/target/linux/qualcommax/patches-6.1/0123-arm64-dts-ipq8074-add-cooling-cells-to-CPU-nodes.patch b/target/linux/qualcommax/patches-6.6/0123-arm64-dts-ipq8074-add-cooling-cells-to-CPU-nodes.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0123-arm64-dts-ipq8074-add-cooling-cells-to-CPU-nodes.patch
rename to target/linux/qualcommax/patches-6.6/0123-arm64-dts-ipq8074-add-cooling-cells-to-CPU-nodes.patch
diff --git a/target/linux/qualcommax/patches-6.1/0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch b/target/linux/qualcommax/patches-6.6/0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch
rename to target/linux/qualcommax/patches-6.6/0129-arm64-dts-qcom-ipq8074-add-QFPROM-fuses.patch
diff --git a/target/linux/qualcommax/patches-6.1/0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch b/target/linux/qualcommax/patches-6.6/0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch
rename to target/linux/qualcommax/patches-6.6/0130-arm64-dts-qcom-ipq8074-add-CPU-OPP-table.patch
diff --git a/target/linux/qualcommax/patches-6.1/0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch b/target/linux/qualcommax/patches-6.6/0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch
rename to target/linux/qualcommax/patches-6.6/0136-remoteproc-qcom-wcss-populate-driver-data-for-IPQ601.patch
diff --git a/target/linux/qualcommax/patches-6.1/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch b/target/linux/qualcommax/patches-6.6/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch
rename to target/linux/qualcommax/patches-6.6/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch b/target/linux/qualcommax/patches-6.6/0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch
rename to target/linux/qualcommax/patches-6.6/0139-arm64-dts-qcom-ipq6018-add-LDOA2-regulator.patch
diff --git a/target/linux/qualcommax/patches-6.1/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch b/target/linux/qualcommax/patches-6.6/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch
rename to target/linux/qualcommax/patches-6.6/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch
diff --git a/target/linux/qualcommax/patches-6.1/0900-power-Add-Qualcomm-APM.patch b/target/linux/qualcommax/patches-6.6/0900-power-Add-Qualcomm-APM.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0900-power-Add-Qualcomm-APM.patch
rename to target/linux/qualcommax/patches-6.6/0900-power-Add-Qualcomm-APM.patch
diff --git a/target/linux/qualcommax/patches-6.1/0901-regulator-add-Qualcomm-CPR-regulators.patch b/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0901-regulator-add-Qualcomm-CPR-regulators.patch
rename to target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch
diff --git a/target/linux/qualcommax/patches-6.1/0902-arm64-dts-ipq8074-add-label-to-clocks.patch b/target/linux/qualcommax/patches-6.6/0902-arm64-dts-ipq8074-add-label-to-clocks.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0902-arm64-dts-ipq8074-add-label-to-clocks.patch
rename to target/linux/qualcommax/patches-6.6/0902-arm64-dts-ipq8074-add-label-to-clocks.patch
diff --git a/target/linux/qualcommax/patches-6.1/0903-psci-dont-advertise-OSI-support-for-IPQ6018.patch b/target/linux/qualcommax/patches-6.6/0903-psci-dont-advertise-OSI-support-for-IPQ6018.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0903-psci-dont-advertise-OSI-support-for-IPQ6018.patch
rename to target/linux/qualcommax/patches-6.6/0903-psci-dont-advertise-OSI-support-for-IPQ6018.patch
diff --git a/target/linux/qualcommax/patches-6.1/0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch b/target/linux/qualcommax/patches-6.6/0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch
rename to target/linux/qualcommax/patches-6.6/0904-clk-qcom-ipq6018-workaround-networking-clock-parenti.patch
diff --git a/target/linux/qualcommax/patches-6.1/0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch b/target/linux/qualcommax/patches-6.6/0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch
rename to target/linux/qualcommax/patches-6.6/0905-remoteproc-q6v5_wcss-change-ssr-name-for-ipq6018-wif.patch
diff --git a/target/linux/qualcommax/patches-6.1/0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch b/target/linux/qualcommax/patches-6.6/0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch
rename to target/linux/qualcommax/patches-6.6/0906-arm64-dts-qcom-ipq6018-add-wifi-node.patch
diff --git a/target/linux/qualcommax/patches-6.1/0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch b/target/linux/qualcommax/patches-6.6/0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch
rename to target/linux/qualcommax/patches-6.6/0907-soc-qcom-fix-smp2p-ack-on-ipq6018.patch
diff --git a/target/linux/qualcommax/patches-6.1/0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch b/target/linux/qualcommax/patches-6.6/0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch
rename to target/linux/qualcommax/patches-6.6/0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch
diff --git a/target/linux/qualcommax/patches-6.1/0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch b/target/linux/qualcommax/patches-6.6/0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch
rename to target/linux/qualcommax/patches-6.6/0909-arm64-dts-qcom-ipq6018-assign-QDSS_AT-clock-to-wifi-.patch
diff --git a/target/linux/qualcommax/patches-6.1/0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch b/target/linux/qualcommax/patches-6.6/0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch
similarity index 100%
rename from target/linux/qualcommax/patches-6.1/0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch
rename to target/linux/qualcommax/patches-6.6/0910-arm64-dts-qcom-ipq6018-change-voltage-to-perf-levels.patch



From lede-commits at lists.infradead.org  Fri Mar 22 14:14:31 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 17:14:31 -0400
Subject: [openwrt/openwrt]  treewide: use APK compatible version schema
In-Reply-To: <171114207155.712953.5708150512349965791@git-01.infra.openwrt.org>
References: <171114207155.712953.5708150512349965791@git-01.infra.openwrt.org>
Message-ID: <mailman.18787.1711142084.1280.lede-commits@lists.infradead.org>

aparcar pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/e8725a932e16eaf6ec51add8c084d959cbe32ff2

commit e8725a932e16eaf6ec51add8c084d959cbe32ff2
Author: Paul Spooren <mail at aparcar.org>
AuthorDate: Sun Mar 17 18:43:10 2024 +0100

    treewide: use APK compatible version schema
    
    Different from OPKG, APK uses a deterministic version schema which chips
    the version into chunks and compares them individually. This enforces a
    certain schema which was previously entirely flexible.
    
     - Releases are added at the very and end prefixed with an `r` like
    `1.2.3-r3`.
    - Hashes are prefixed with a `~` like `1.2.3~abc123`.
    - Dates become semantic versions, like `2024.04.01`
    - Extra tags are possible like `_git`, `_alpha` and more.
    
    For full details see the APK test list:
    https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/test/version.data
    
    Signed-off-by: Paul Spooren <mail at aparcar.org>
---
 include/download.mk                          | 2 +-
 include/kernel.mk                            | 4 ++--
 include/package-defaults.mk                  | 2 +-
 package/base-files/Makefile                  | 2 +-
 package/devel/leds/Makefile                  | 1 -
 package/firmware/ath10k-ct-firmware/Makefile | 2 +-
 package/firmware/ath11k-firmware/Makefile    | 2 +-
 package/firmware/broadcom-sprom/Makefile     | 2 +-
 package/kernel/ath10k-ct/Makefile            | 2 +-
 package/kernel/linux/Makefile                | 2 +-
 package/kernel/mt76/Makefile                 | 2 +-
 package/kernel/nat46/Makefile                | 2 +-
 package/kernel/rtl8812au-ct/Makefile         | 2 +-
 package/libs/libnl-tiny/Makefile             | 2 +-
 package/libs/libubox/Makefile                | 2 +-
 package/libs/toolchain/Makefile              | 4 ++--
 package/libs/uclient/Makefile                | 2 +-
 package/libs/udebug/Makefile                 | 2 +-
 package/libs/ustream-ssl/Makefile            | 2 +-
 package/network/config/firewall/Makefile     | 2 +-
 package/network/config/firewall4/Makefile    | 4 ++--
 package/network/config/netifd/Makefile       | 2 +-
 package/network/config/qosify/Makefile       | 2 +-
 package/network/ipv6/odhcp6c/Makefile        | 2 +-
 package/network/services/bridger/Makefile    | 2 +-
 package/network/services/hostapd/Makefile    | 8 ++++----
 package/network/services/ipset-dns/Makefile  | 2 +-
 package/network/services/odhcpd/Makefile     | 2 +-
 package/network/services/omcproxy/Makefile   | 2 +-
 package/network/services/ppp/Makefile        | 4 ++--
 package/network/services/relayd/Makefile     | 2 +-
 package/network/services/uhttpd/Makefile     | 2 +-
 package/network/services/umdns/Makefile      | 2 +-
 package/network/services/unetd/Makefile      | 2 +-
 package/network/services/ustp/Makefile       | 2 +-
 package/network/utils/ebtables/Makefile      | 2 +-
 package/network/utils/iwinfo/Makefile        | 2 +-
 package/network/utils/umbim/Makefile         | 2 +-
 package/network/utils/uqmi/Makefile          | 2 +-
 package/network/utils/wwan/Makefile          | 2 +-
 package/system/fstools/Makefile              | 2 +-
 package/system/fwtool/Makefile               | 2 +-
 package/system/gpio-cdev/nu801/Makefile      | 2 +-
 package/system/openwrt-keyring/Makefile      | 2 +-
 package/system/opkg/Makefile                 | 2 +-
 package/system/procd/Makefile                | 2 +-
 package/system/rpcd/Makefile                 | 2 +-
 package/system/ubox/Makefile                 | 2 +-
 package/system/ubus/Makefile                 | 2 +-
 package/system/ucert/Makefile                | 2 +-
 package/system/uci/Makefile                  | 2 +-
 package/system/urngd/Makefile                | 2 +-
 package/system/usign/Makefile                | 2 +-
 package/utils/jsonfilter/Makefile            | 2 +-
 package/utils/ravpower-mcu/Makefile          | 2 +-
 package/utils/ucode/Makefile                 | 2 +-
 package/utils/ugps/Makefile                  | 2 +-
 package/utils/usbmode/Makefile               | 2 +-
 tools/b43-tools/Makefile                     | 2 +-
 tools/cbootimage-configs/Makefile            | 2 +-
 tools/firmware-utils/Makefile                | 2 +-
 tools/make-ext4fs/Makefile                   | 2 +-
 tools/sdimage/Makefile                       | 2 +-
 63 files changed, 69 insertions(+), 70 deletions(-)

diff --git a/include/download.mk b/include/download.mk
index e261b14035..d9edcb1c3a 100644
--- a/include/download.mk
+++ b/include/download.mk
@@ -10,7 +10,7 @@ LEDE_GIT = $(PROJECT_GIT)
 
 ifdef PKG_SOURCE_VERSION
   ifndef PKG_VERSION
-    PKG_VERSION := $(if $(PKG_SOURCE_DATE),$(PKG_SOURCE_DATE)-)$(call version_abbrev,$(PKG_SOURCE_VERSION))
+    PKG_VERSION := $(if $(PKG_SOURCE_DATE),$(subst -,.,$(PKG_SOURCE_DATE)),0)~$(call version_abbrev,$(PKG_SOURCE_VERSION))
   endif
   PKG_SOURCE_SUBDIR ?= $(PKG_NAME)-$(PKG_VERSION)
   PKG_SOURCE ?= $(PKG_SOURCE_SUBDIR).tar.xz
diff --git a/include/kernel.mk b/include/kernel.mk
index 8236416132..9969c519dd 100644
--- a/include/kernel.mk
+++ b/include/kernel.mk
@@ -211,8 +211,8 @@ define KernelPackage
     SECTION:=kernel
     CATEGORY:=Kernel modules
     DESCRIPTION:=$(DESCRIPTION)
-    EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC))
-    VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),+$(PKG_VERSION))-$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE))
+    EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)~$(LINUX_VERMAGIC)-r$(LINUX_RELEASE))
+    VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),.$(PKG_VERSION))-r$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE))
     PKGFLAGS:=$(PKGFLAGS)
     $(call KernelPackage/$(1))
     $(call KernelPackage/$(1)/$(BOARD))
diff --git a/include/package-defaults.mk b/include/package-defaults.mk
index 392aad0d5d..37de9f0ccb 100644
--- a/include/package-defaults.mk
+++ b/include/package-defaults.mk
@@ -23,7 +23,7 @@ define Package/Default
   SOURCE:=$(patsubst $(TOPDIR)/%,%,$(patsubst $(TOPDIR)/package/%,feeds/base/%,$(CURDIR)))
   ifneq ($(PKG_VERSION),)
     ifneq ($(PKG_RELEASE),)
-      VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
+      VERSION:=$(PKG_VERSION)-r$(PKG_RELEASE)
     else
       VERSION:=$(PKG_VERSION)
     endif
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 67fc5d29c1..b1a834e1bf 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -42,7 +42,7 @@ define Package/base-files
   DEPENDS:=+netifd +libc +jsonfilter +SIGNED_PACKAGES:usign +SIGNED_PACKAGES:openwrt-keyring +NAND_SUPPORT:ubi-utils +fstools +fwtool
   TITLE:=Base filesystem for OpenWrt
   URL:=http://openwrt.org/
-  VERSION:=$(PKG_RELEASE)-$(REVISION)
+  VERSION:=$(PKG_RELEASE)~$(lastword $(subst -, ,$(REVISION)))
 endef
 
 define Package/base-files/conffiles
diff --git a/package/devel/leds/Makefile b/package/devel/leds/Makefile
index 47b9674c4f..ea3b19c4e9 100644
--- a/package/devel/leds/Makefile
+++ b/package/devel/leds/Makefile
@@ -14,7 +14,6 @@ include $(INCLUDE_DIR)/package.mk
 define Package/leds/default
   SECTION:=devel
   CATEGORY:=Development
-  VERSION:=$(LINUX_VERSION)-$(PKG_RELEASE)
   URL:=http://www.kernel.org
 endef
 
diff --git a/package/firmware/ath10k-ct-firmware/Makefile b/package/firmware/ath10k-ct-firmware/Makefile
index 78846fbe9d..f861a32b8b 100644
--- a/package/firmware/ath10k-ct-firmware/Makefile
+++ b/package/firmware/ath10k-ct-firmware/Makefile
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ath10k-ct-firmware
-PKG_VERSION:=2020-11-08
+PKG_VERSION:=2020.11.08
 PKG_RELEASE:=1
 
 DL_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
diff --git a/package/firmware/ath11k-firmware/Makefile b/package/firmware/ath11k-firmware/Makefile
index 33fe6fbb1f..87d486eacc 100644
--- a/package/firmware/ath11k-firmware/Makefile
+++ b/package/firmware/ath11k-firmware/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=ath11k-firmware
 PKG_SOURCE_DATE:=2024-03-14
 PKG_SOURCE_VERSION:=795809c7041582bd51bdfaa1f548b916ae8d4382
-PKG_MIRROR_HASH:=7d6d2946531c336a402f51e453d5b0e2b5c17201432d6cfa5482eb3626270212
+PKG_MIRROR_HASH:=5018bbfed6da372b9f2ab9b152d3dfd09718713310d83232a699545b53c84b2e
 PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
diff --git a/package/firmware/broadcom-sprom/Makefile b/package/firmware/broadcom-sprom/Makefile
index 01bca2c35b..2d2839179e 100644
--- a/package/firmware/broadcom-sprom/Makefile
+++ b/package/firmware/broadcom-sprom/Makefile
@@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=broadcom-sprom
 PKG_SOURCE_DATE:=2023-04-27
 PKG_SOURCE_VERSION:=d36f7fcb37711106a3a2652b576436cb09aa5b6f
-PKG_MIRROR_HASH:=fde251ab4ed26d61c95269316119710d6ccb8fe30ef13305d08b3e7d7d8a4c60
+PKG_MIRROR_HASH:=70c68c923a661f40842e8800203b4b3a2675f6735c35aa3479f856cc54ad750c
 PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
diff --git a/package/kernel/ath10k-ct/Makefile b/package/kernel/ath10k-ct/Makefile
index 9c0029d3bd..2942976373 100644
--- a/package/kernel/ath10k-ct/Makefile
+++ b/package/kernel/ath10k-ct/Makefile
@@ -10,7 +10,7 @@ PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-06-05
 PKG_SOURCE_VERSION:=fadd0768cbd22248a60efbb219ccefc9d86cd78c
-PKG_MIRROR_HASH:=513f62765ba3a2f423099426fbba86b854f3de0ab13ec2ab6e2780577ea75f95
+PKG_MIRROR_HASH:=94b5f99245bb35edbfeff08b32f03272c4e6fac8eabcd2a88e85835e088bc534
 
 # Build the 6.4 ath10k-ct driver version.
 # Probably this should match as closely as
diff --git a/package/kernel/linux/Makefile b/package/kernel/linux/Makefile
index d53017018c..8dfb01ad66 100644
--- a/package/kernel/linux/Makefile
+++ b/package/kernel/linux/Makefile
@@ -52,7 +52,7 @@ define Package/kernel
   CATEGORY:=Kernel
   DEFAULT:=y
   TITLE:=Virtual kernel package
-  VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)
+  VERSION:=$(LINUX_VERSION)~$(LINUX_VERMAGIC)-r$(LINUX_RELEASE)
   URL:=http://www.kernel.org/
   PKG_FLAGS:=nonshared
 endef
diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile
index 9daa5a2783..61491063e9 100644
--- a/package/kernel/mt76/Makefile
+++ b/package/kernel/mt76/Makefile
@@ -10,7 +10,7 @@ PKG_SOURCE_URL:=https://github.com/openwrt/mt76
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2024-03-18
 PKG_SOURCE_VERSION:=2135e201e7a9339e018d4e2d4a33c73266e674d7
-PKG_MIRROR_HASH:=810f636c60c86e6a426c676c3bf7aaea2f711feb31f4a66889d485112b612745
+PKG_MIRROR_HASH:=530db8a70d18295677989aafc9c1757b151ef77e359985417f1d36e7d2415d33
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_USE_NINJA:=0
diff --git a/package/kernel/nat46/Makefile b/package/kernel/nat46/Makefile
index 5e5efbe101..5c70b4b5fd 100644
--- a/package/kernel/nat46/Makefile
+++ b/package/kernel/nat46/Makefile
@@ -3,7 +3,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=nat46
 
-PKG_MIRROR_HASH:=aeff95aa278ec1e197b59700284c0210f32b92c1fb757e5c3088bd00b3b403d4
+PKG_MIRROR_HASH:=fc3ce43f8680bba6ada7d793479c5961e609138304198b250609b968d1833bb4
 PKG_SOURCE_URL:=https://github.com/ayourtch/nat46.git
 PKG_SOURCE_DATE:=2022-09-19
 PKG_SOURCE_PROTO:=git
diff --git a/package/kernel/rtl8812au-ct/Makefile b/package/kernel/rtl8812au-ct/Makefile
index b0440a6858..8941358d54 100644
--- a/package/kernel/rtl8812au-ct/Makefile
+++ b/package/kernel/rtl8812au-ct/Makefile
@@ -7,7 +7,7 @@ PKG_LICENSE:=GPLv2
 PKG_LICENSE_FILES:=
 
 PKG_SOURCE_URL:=https://github.com/greearb/rtl8812AU_8821AU_linux.git
-PKG_MIRROR_HASH:=748f5c58aa3f391222c0c43db35b9ff4c30c9c987ca052a5a3cdf36193e5821b
+PKG_MIRROR_HASH:=141633ba4d68fce3ae1eed59e79eec9107ae36614480630a6eccd97d5cee612a
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2022-10-26
 PKG_SOURCE_VERSION:=9b2b203a217e1320602a0eb07c338a1bfca0f5a6
diff --git a/package/libs/libnl-tiny/Makefile b/package/libs/libnl-tiny/Makefile
index a0c6efe517..093c058a22 100644
--- a/package/libs/libnl-tiny/Makefile
+++ b/package/libs/libnl-tiny/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/libnl-tiny.git
 PKG_SOURCE_DATE:=2023-12-05
 PKG_SOURCE_VERSION:=965c4bf49658342ced0bd6e7cb069571b4a1ddff
-PKG_MIRROR_HASH:=93596c2686926a470b6bf322f6c166a420a08abe1ea715b4ae8c9df3de00eb28
+PKG_MIRROR_HASH:=4e166d01533aaaea5e01a2e3605ae224c3d632264936b6c40c07335e11e6b51b
 CMAKE_INSTALL:=1
 
 PKG_LICENSE:=LGPL-2.1
diff --git a/package/libs/libubox/Makefile b/package/libs/libubox/Makefile
index a987304ba1..67bc100b60 100644
--- a/package/libs/libubox/Makefile
+++ b/package/libs/libubox/Makefile
@@ -5,7 +5,7 @@ PKG_RELEASE=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git
-PKG_MIRROR_HASH:=071139fed757bea240d4ba8f55a0ff5a81862d23e16b39fc871ae07da78ae6a4
+PKG_MIRROR_HASH:=e07d0c8b92a9ef18d2459ebbbca38de20eeee657704320d4705578f895b78257
 PKG_SOURCE_DATE:=2024-01-26
 PKG_SOURCE_VERSION:=c1be505732e6d254464973bdeacb955214c76c46
 PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
diff --git a/package/libs/toolchain/Makefile b/package/libs/toolchain/Makefile
index 4f71d31b28..285fbcfa98 100644
--- a/package/libs/toolchain/Makefile
+++ b/package/libs/toolchain/Makefile
@@ -27,7 +27,7 @@ define Package/gcc/Default
   SECTION:=libs
   CATEGORY:=Base system
   URL:=http://gcc.gnu.org/
-  VERSION:=$(LIBGCC_VERSION)-$(PKG_RELEASE)
+  VERSION:=$(LIBGCC_VERSION)-r$(PKG_RELEASE)
 endef
 
 define Package/libgcc
@@ -230,7 +230,7 @@ endef
 define Package/libc/Default
   SECTION:=libs
   CATEGORY:=Base system
-  VERSION:=$(LIBC_VERSION)-$(PKG_RELEASE)
+  VERSION:=$(LIBC_VERSION)-r$(PKG_RELEASE)
   DEPENDS:=+libgcc
   URL:=$(LIBC_URL)
 endef
diff --git a/package/libs/uclient/Makefile b/package/libs/uclient/Makefile
index d7d1f1bb1f..6294f5d089 100644
--- a/package/libs/uclient/Makefile
+++ b/package/libs/uclient/Makefile
@@ -5,7 +5,7 @@ PKG_RELEASE=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/uclient.git
-PKG_MIRROR_HASH:=16c6c97f45d9737fb40628ea22ae347541a1e37d8d1576e04ffbaa5fc92f3b6d
+PKG_MIRROR_HASH:=761d8b357eb0c37a0833cc76106948c5f2bfe9abe785728996a8d050a25b0a8a
 PKG_SOURCE_DATE:=2023-04-13
 PKG_SOURCE_VERSION:=007d945467499f43656b141171d31f5643b83a6c
 CMAKE_INSTALL:=1
diff --git a/package/libs/udebug/Makefile b/package/libs/udebug/Makefile
index 0a54515e74..5c665f2d1e 100644
--- a/package/libs/udebug/Makefile
+++ b/package/libs/udebug/Makefile
@@ -11,7 +11,7 @@ PKG_NAME:=udebug
 CMAKE_INSTALL:=1
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/udebug.git
-PKG_MIRROR_HASH:=553a58a14b59dc7b22755557acbc74f0655a431442a4faca56d28cdb1ef14fb4
+PKG_MIRROR_HASH:=62d470ad4a3c4a0138c3102ad2e21dd56e93e9c0c7ec466d591c14e7b8af9a97
 PKG_SOURCE_DATE:=2023-12-06
 PKG_SOURCE_VERSION:=6d3f51f9fda706f0cf4732c762e4dbe8c21e12cf
 PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
diff --git a/package/libs/ustream-ssl/Makefile b/package/libs/ustream-ssl/Makefile
index 076053abf6..830f67ad0e 100644
--- a/package/libs/ustream-ssl/Makefile
+++ b/package/libs/ustream-ssl/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustream-ssl.git
 PKG_SOURCE_DATE:=2023-11-26
 PKG_SOURCE_VERSION:=263b9a97cf7e1e2467319c23832b705fc01190b5
-PKG_MIRROR_HASH:=1c01d633f21c6cb578a785826d1983284b28f49b20d608d82179842dcdbeed6e
+PKG_MIRROR_HASH:=95db3f3a01c65d008a48398c7d5bfbf98cb31eabe291e74a0238220018f0a15b
 CMAKE_INSTALL:=1
 
 PKG_LICENSE:=ISC
diff --git a/package/network/config/firewall/Makefile b/package/network/config/firewall/Makefile
index 0e00f38689..3306dde319 100644
--- a/package/network/config/firewall/Makefile
+++ b/package/network/config/firewall/Makefile
@@ -15,7 +15,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firewall3.git
 PKG_SOURCE_DATE:=2022-02-17
 PKG_SOURCE_VERSION:=4cd7d4f36bea731bf901cb067456f1d460294926
-PKG_MIRROR_HASH:=ce9e8ac1bcf22afbb0a80c3da1a8e8e887851299681097e3dfbfc347f2c4c80f
+PKG_MIRROR_HASH:=66a498164dc89251f34155a679186f090d9f1df104a4a63805f3231d0587e0c9
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
 PKG_LICENSE:=ISC
 
diff --git a/package/network/config/firewall4/Makefile b/package/network/config/firewall4/Makefile
index 6a54e28f0c..7f1058b8d4 100644
--- a/package/network/config/firewall4/Makefile
+++ b/package/network/config/firewall4/Makefile
@@ -11,7 +11,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firewall4.git
 PKG_SOURCE_DATE:=2023-11-03
 PKG_SOURCE_VERSION:=698a53354fd280aae097efe08803c0c9a10c14c2
-PKG_MIRROR_HASH:=e38484bffe11a04a67069128aa3b8a8c707ad58c79c0de2785a5d995421457aa
+PKG_MIRROR_HASH:=466c43e46fc4b9c24053874b322b84556e24718c1149bd9a52b889062de0dc29
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
 PKG_LICENSE:=ISC
 
@@ -26,7 +26,7 @@ define Package/firewall4
 	+kmod-nft-nat \
 	+nftables-json \
 	+ucode +ucode-mod-fs +ucode-mod-ubus +ucode-mod-uci
-  EXTRA_DEPENDS:=ucode (>= 2022-03-22)
+  EXTRA_DEPENDS:=ucode (>=2022.03.22)
   PROVIDES:=uci-firewall
 endef
 
diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile
index ba4516c1dc..e0998b0b80 100644
--- a/package/network/config/netifd/Makefile
+++ b/package/network/config/netifd/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
 PKG_SOURCE_DATE:=2024-01-04
 PKG_SOURCE_VERSION:=f01345ec13b9b27ffd314d8689fb2d3f9c81a47d
-PKG_MIRROR_HASH:=58e92e9ce1a2c8ccb487e95dadf806f38b38abbe7cb3cde61ff880de5eb85c2f
+PKG_MIRROR_HASH:=7d1d40d89a8bc20213e0f7a9c1167cdefef250417ec34ca8b4df79b92ba0b5d3
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 
 PKG_LICENSE:=GPL-2.0
diff --git a/package/network/config/qosify/Makefile b/package/network/config/qosify/Makefile
index f4ad042235..1cfc65d4f0 100644
--- a/package/network/config/qosify/Makefile
+++ b/package/network/config/qosify/Makefile
@@ -13,7 +13,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/qosify.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-03-07
 PKG_SOURCE_VERSION:=9a47ea4b683dd845ec94534fcd82d3117c9ab313
-PKG_MIRROR_HASH:=c4c313aed4a405492201612bdfef5e219c9a994a35f35acc84fc8327d9aa73d2
+PKG_MIRROR_HASH:=0df1dc6e9645691f1ce0c3c039afedbcd8d4635dad36923ce47174e8d5b4ce43
 PKG_RELEASE:=1
 
 PKG_LICENSE:=GPL-2.0
diff --git a/package/network/ipv6/odhcp6c/Makefile b/package/network/ipv6/odhcp6c/Makefile
index ac507e1f17..36e79c6d79 100644
--- a/package/network/ipv6/odhcp6c/Makefile
+++ b/package/network/ipv6/odhcp6c/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcp6c.git
 PKG_SOURCE_DATE:=2023-05-12
 PKG_SOURCE_VERSION:=bcd283632ac13391aac3ebdd074d1fd832d76fa3
-PKG_MIRROR_HASH:=0f3508a5a148ca831ae30b49b21919535f9dfbbd003a942baa6cb5388d207878
+PKG_MIRROR_HASH:=21aac76fcf4099287868afb52924ed2219e8e846ad82b96b7e1753417a8dde87
 PKG_MAINTAINER:=Hans Dedecker <dedeckeh at gmail.com>
 PKG_LICENSE:=GPL-2.0
 
diff --git a/package/network/services/bridger/Makefile b/package/network/services/bridger/Makefile
index e228de517d..ccb29db1ed 100644
--- a/package/network/services/bridger/Makefile
+++ b/package/network/services/bridger/Makefile
@@ -12,7 +12,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/nbd168/bridger
 PKG_SOURCE_DATE:=2023-05-12
 PKG_SOURCE_VERSION:=d0f79a16c749ad310d79e1c31f593860619f99eb
-PKG_MIRROR_HASH:=bee35594767cbcd13764f5c95e4837a4fc73171a91fcdae73aaefe00f4e8f8fa
+PKG_MIRROR_HASH:=052beb648545c67a4e24034347e4cb5d91319147bfe3f8d498d1aa576d14a089
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
index c8f476f7b8..2b072bd599 100644
--- a/package/network/services/hostapd/Makefile
+++ b/package/network/services/hostapd/Makefile
@@ -11,7 +11,7 @@ PKG_SOURCE_URL:=http://w1.fi/hostap.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-09-08
 PKG_SOURCE_VERSION:=e5ccbfc69ecf297590341ae8b461edba9d8e964c
-PKG_MIRROR_HASH:=fcc6550f46c7f8bbdbf71e63f8f699b9a0878565ad1b90a17855f5ec21283b8f
+PKG_MIRROR_HASH:=8be806f6c88e736fff920e0d3e2cde7188fbf640fef47e9aeaad504674bfc0f3
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_LICENSE:=BSD-3-Clause
@@ -150,7 +150,7 @@ define Package/hostapd/Default
   TITLE:=IEEE 802.1x Authenticator
   URL:=http://hostap.epitest.fi/
   DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
-  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
+  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-r$(PKG_RELEASE))
   USERID:=network=101:network=101
   PROVIDES:=hostapd
   CONFLICTS:=$(HOSTAPD_PROVIDERS)
@@ -255,7 +255,7 @@ define Package/wpad/Default
   SUBMENU:=WirelessAPD
   TITLE:=IEEE 802.1x Auth/Supplicant
   DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
-  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
+  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-r$(PKG_RELEASE))
   USERID:=network=101:network=101
   URL:=http://hostap.epitest.fi/
   PROVIDES:=hostapd wpa-supplicant
@@ -400,7 +400,7 @@ define Package/wpa-supplicant/Default
   TITLE:=WPA Supplicant
   URL:=http://hostap.epitest.fi/wpa_supplicant/
   DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
-  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
+  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-r$(PKG_RELEASE))
   USERID:=network=101:network=101
   PROVIDES:=wpa-supplicant
   CONFLICTS:=$(SUPPLICANT_PROVIDERS)
diff --git a/package/network/services/ipset-dns/Makefile b/package/network/services/ipset-dns/Makefile
index f55281ef42..284e76eab2 100644
--- a/package/network/services/ipset-dns/Makefile
+++ b/package/network/services/ipset-dns/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://git.zx2c4.com/ipset-dns
 PKG_SOURCE_DATE:=2017-10-08
 PKG_SOURCE_VERSION:=ade2cf88e933f4f90451e0a6171f0aa4a523f989
-PKG_MIRROR_HASH:=34ad1f5c7d2eab90b795f2a512102891428216e3d439d918a8992846550e9697
+PKG_MIRROR_HASH:=3e978df41cf2c79edb13846c458579388b0fae9a547ebca7b9f52ad6c0e50e70
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
 
 PKG_LICENSE:=GPL-2.0
diff --git a/package/network/services/odhcpd/Makefile b/package/network/services/odhcpd/Makefile
index ba6358f779..22df72df60 100644
--- a/package/network/services/odhcpd/Makefile
+++ b/package/network/services/odhcpd/Makefile
@@ -12,7 +12,7 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
-PKG_MIRROR_HASH:=9936331b64880260cf969cc5656e1e1a8b7dc0e0843d64621242c500a330b4d6
+PKG_MIRROR_HASH:=59d04d80175a115d04031291195dcb2ce858301c78bd37f18aeabfa40f750ef8
 PKG_SOURCE_DATE:=2023-10-24
 PKG_SOURCE_VERSION:=d8118f6e76e5519881f9a37137c3a06b3cb60fd2
 
diff --git a/package/network/services/omcproxy/Makefile b/package/network/services/omcproxy/Makefile
index c5b2f3e67f..f90c5192f0 100644
--- a/package/network/services/omcproxy/Makefile
+++ b/package/network/services/omcproxy/Makefile
@@ -12,7 +12,7 @@ PKG_RELEASE:=9
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/omcproxy.git
-PKG_MIRROR_HASH:=6443276368dc7d45ee58bd7067da6c3a85396d9996039232cae3bdd426382f0c
+PKG_MIRROR_HASH:=5e69aa12ca3bc1ecfb211e0ad40e0763a7e9dd99fc8b95b4d62b8c3d29df40bd
 PKG_SOURCE_DATE:=2021-11-04
 PKG_SOURCE_VERSION:=bfba2aa75802ff1a70ef2fd3eba53409a8c6e93a
 PKG_MAINTAINER:=Steven Barth <cyrus at openwrt.org>
diff --git a/package/network/services/ppp/Makefile b/package/network/services/ppp/Makefile
index 40ec5c5cf1..db55a32e2f 100644
--- a/package/network/services/ppp/Makefile
+++ b/package/network/services/ppp/Makefile
@@ -15,13 +15,13 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/paulusmack/ppp
 PKG_SOURCE_DATE:=2021-01-04
 PKG_SOURCE_VERSION:=4fb319056f168bb8379865b91b4fd3e1ada73f1e
-PKG_MIRROR_HASH:=429cb5fcff36e1d8698766130711d4764347f08b83233dfb4831bea21616efef
+PKG_MIRROR_HASH:=a6a31f71e46c7170b94e53723515f7d6f8ec512a84aa3003f20d393d8bd97347
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_LICENSE:=BSD-4-Clause
 PKG_CPE_ID:=cpe:/a:samba:ppp
 
 PKG_RELEASE_VERSION:=2.4.9
-PKG_VERSION:=$(PKG_RELEASE_VERSION).git-$(PKG_SOURCE_DATE)
+PKG_VERSION:=$(PKG_RELEASE_VERSION)_git$(subst -,,$(PKG_SOURCE_DATE))
 
 PKG_BUILD_DEPENDS:=libpcap
 
diff --git a/package/network/services/relayd/Makefile b/package/network/services/relayd/Makefile
index aba6939955..a7d38cb0a8 100644
--- a/package/network/services/relayd/Makefile
+++ b/package/network/services/relayd/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/relayd.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-01-28
 PKG_SOURCE_VERSION:=f646ba40489371e69f624f2dee2fc4e19ceec00e
-PKG_MIRROR_HASH:=672d3115728d40ee6897a9f633d269d127496699a7bd45eba11844aa771f2501
+PKG_MIRROR_HASH:=19f2627c2e878617df72e31f01bf4505b063e0cb736c1745b176ec416971f923
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_LICENSE:=GPL-2.0
diff --git a/package/network/services/uhttpd/Makefile b/package/network/services/uhttpd/Makefile
index 2a6ad535b4..b4f5fb84cf 100644
--- a/package/network/services/uhttpd/Makefile
+++ b/package/network/services/uhttpd/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/uhttpd.git
 PKG_SOURCE_DATE:=2023-06-25
 PKG_SOURCE_VERSION:=34a8a74dbdec3c0de38abc1b08f6a73c51263792
-PKG_MIRROR_HASH:=8206885eebed5d1827763bcc5bcf9ca3510ae22b0ad1f6432114f1136c32dde2
+PKG_MIRROR_HASH:=28f4b97588d6a991f64ae19a3e8dfed52295f37f543e30010fbeec92b3723c66
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_LICENSE:=ISC
 
diff --git a/package/network/services/umdns/Makefile b/package/network/services/umdns/Makefile
index ab6bf290dc..95997eaba5 100644
--- a/package/network/services/umdns/Makefile
+++ b/package/network/services/umdns/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/mdnsd.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2024-01-08
 PKG_SOURCE_VERSION:=e91ed406ecebb4bc08c346929e25f1b819c19edd
-PKG_MIRROR_HASH:=6568409c5facaa37dc27aeca67dc798b822c2e2897d6e067b4c61e3e99c1072c
+PKG_MIRROR_HASH:=d5b94ff96dd16d1df3281621c66b3974982d9ee96f52b8400504e9acbc3d9de4
 
 PKG_MAINTAINER:=John Crispin <john at phrozen.org>
 PKG_LICENSE:=LGPL-2.1
diff --git a/package/network/services/unetd/Makefile b/package/network/services/unetd/Makefile
index 7d8ed9a144..e3d947b047 100644
--- a/package/network/services/unetd/Makefile
+++ b/package/network/services/unetd/Makefile
@@ -12,7 +12,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/unetd.git
 PKG_SOURCE_DATE:=2023-05-31
 PKG_SOURCE_VERSION:=7d3986b7a5a20b9af0dacd053b2657210385e7bb
-PKG_MIRROR_HASH:=07f0a4cbae3e80c6309bb8aa27fcef19fbc56093a9c7e426e0d527227af09429
+PKG_MIRROR_HASH:=d3db5c71fdeae96782deadb413adf902009a189b7d5f21875d8f4315389849c3
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
diff --git a/package/network/services/ustp/Makefile b/package/network/services/ustp/Makefile
index 2cdd033754..48ee988882 100644
--- a/package/network/services/ustp/Makefile
+++ b/package/network/services/ustp/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustp.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2021-09-21
 PKG_SOURCE_VERSION:=462b3a491347e452c15220861949b1d6371fa59e
-PKG_MIRROR_HASH:=0e96edc983cf437b95874e5715d743f30bb826d8757dc3771ff872ab9cf18f35
+PKG_MIRROR_HASH:=b1d4e96f4855580d20572f930764cb09986339017c2a0ec26b22ce11d511c14f
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_LICENSE:=GPL-2.0
diff --git a/package/network/utils/ebtables/Makefile b/package/network/utils/ebtables/Makefile
index f35b768b43..ebbdcb035f 100644
--- a/package/network/utils/ebtables/Makefile
+++ b/package/network/utils/ebtables/Makefile
@@ -14,7 +14,7 @@ PKG_RELEASE:=1
 PKG_SOURCE_URL:=https://git.netfilter.org/ebtables
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_VERSION:=48cff25dfea5b37e16ba5dc6601e98ab140f5f99
-PKG_MIRROR_HASH:=1327cdc3402e5e3056819e4e9b6f9d4a5bfd401f2c4f58447afb2c3c73fc8aac
+PKG_MIRROR_HASH:=160f5087b403173d5d1e93880d28b89dab98e828ba3f545315bf1cb88afe5a46
 
 PKG_LICENSE:=GPL-2.0
 PKG_CPE_ID:=cpe:/a:netfilter:ebtables
diff --git a/package/network/utils/iwinfo/Makefile b/package/network/utils/iwinfo/Makefile
index e1941ca3a8..0a8320c0d4 100644
--- a/package/network/utils/iwinfo/Makefile
+++ b/package/network/utils/iwinfo/Makefile
@@ -13,7 +13,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/iwinfo.git
 PKG_SOURCE_DATE:=2024-03-08
 PKG_SOURCE_VERSION:=8ffb8bfd1115ae95265aa52590aa948aba7672e4
-PKG_MIRROR_HASH:=77bb6018b5001268c0f442dbfd8159893db620c575c9810221b1a42a30be4b5f
+PKG_MIRROR_HASH:=846d4ac22832e507e5a96e07332324e30cd39289743d18e9ec0d418009f3ba37
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
 PKG_LICENSE:=GPL-2.0
 
diff --git a/package/network/utils/umbim/Makefile b/package/network/utils/umbim/Makefile
index 56e1a6f378..0d4ea5ac5f 100644
--- a/package/network/utils/umbim/Makefile
+++ b/package/network/utils/umbim/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/umbim.git
 PKG_SOURCE_DATE:=2022-08-13
 PKG_SOURCE_VERSION:=146bc77c98ace3d1cc672986669650d2e1da71f3
-PKG_MIRROR_HASH:=3cf04858ff5c3f529904f9789b094aa9645ad41c91f553e6fc3fcd3cb341d359
+PKG_MIRROR_HASH:=c610dc08b5663876c2afdc247d4d5615fd1be23e33fa7a646f0237d298719b98
 PKG_MAINTAINER:=John Crispin <john at phrozen.org>
 
 PKG_LICENSE:=GPL-2.0
diff --git a/package/network/utils/uqmi/Makefile b/package/network/utils/uqmi/Makefile
index 6753e47cdb..2c7f71b48a 100644
--- a/package/network/utils/uqmi/Makefile
+++ b/package/network/utils/uqmi/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git
 PKG_SOURCE_DATE:=2024-01-16
 PKG_SOURCE_VERSION:=c3488b831ce6285c8107704156b9b8ed7d59deb3
-PKG_MIRROR_HASH:=3ca47f2ae22bc1adcb05560e6dbea824063fa914670c13f107e7e78f33399779
+PKG_MIRROR_HASH:=a171d71d471a03e24c45509059db461efcf3cfe0fc19cffec2e8e4fbf99d6eed
 PKG_MAINTAINER:=Matti Laakso <malaakso at elisanet.fi>
 
 PKG_LICENSE:=GPL-2.0
diff --git a/package/network/utils/wwan/Makefile b/package/network/utils/wwan/Makefile
index 19404383cb..b02f9e11a4 100644
--- a/package/network/utils/wwan/Makefile
+++ b/package/network/utils/wwan/Makefile
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wwan
-PKG_VERSION:=2019-04-29
+PKG_VERSION:=2019.04.29
 PKG_RELEASE=6
 
 PKG_LICENSE:=GPL-2.0
diff --git a/package/system/fstools/Makefile b/package/system/fstools/Makefile
index 717e59f836..86f9a8643b 100644
--- a/package/system/fstools/Makefile
+++ b/package/system/fstools/Makefile
@@ -12,7 +12,7 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/fstools.git
-PKG_MIRROR_HASH:=32e39891455b602e9deb367c9ce2d099dc72353fad0bf0433307416925f7b393
+PKG_MIRROR_HASH:=ab6978773d2b88eec502f5a217035b059730baf845d90ebb5f1fa52aacf12218
 PKG_SOURCE_DATE:=2024-01-22
 PKG_SOURCE_VERSION:=08cd7083cac4bddf88459efa0881ee52858e7d0a
 CMAKE_INSTALL:=1
diff --git a/package/system/fwtool/Makefile b/package/system/fwtool/Makefile
index 00f0339b02..965200bf5c 100644
--- a/package/system/fwtool/Makefile
+++ b/package/system/fwtool/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/fwtool.git
 PKG_SOURCE_DATE:=2019-11-12
 PKG_SOURCE_VERSION:=8f7fe925ca205c8e8e2d0d1b16218c1e148d5173
-PKG_MIRROR_HASH:=ff68e77397a7ba8f497aae9a6d1f89e196c89391a8d5ed0b81c4eafb889ba744
+PKG_MIRROR_HASH:=f8309d4cf548ce28d98f8f8313d78e17307ded135b96b49bfbc9ac6b039d8689
 CMAKE_INSTALL:=1
 
 PKG_FLAGS:=nonshared
diff --git a/package/system/gpio-cdev/nu801/Makefile b/package/system/gpio-cdev/nu801/Makefile
index 67b2a771ec..3c0b4f2086 100644
--- a/package/system/gpio-cdev/nu801/Makefile
+++ b/package/system/gpio-cdev/nu801/Makefile
@@ -8,7 +8,7 @@ PKG_RELEASE:=1
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/chunkeey/nu801.git
 PKG_SOURCE_VERSION:=f623879a393d0315f29095fe46b19cd2246d10d7
-PKG_MIRROR_HASH:=db21671a1c14f0bfeb65525cbfd0576d2d5bbebf3901e35e64f9bf92a9a53b0d
+PKG_MIRROR_HASH:=d2080fa74901fcd9c2576784adaa84792b577167576a45326b478192cb157eba
 PKG_MAINTAINER:=Christian Lamparter <chunkeey at gmail.com>
 PKG_LICENSE:=GPL-3.0-or-later
 PKG_LICENSE_FILES:=LICENSE
diff --git a/package/system/openwrt-keyring/Makefile b/package/system/openwrt-keyring/Makefile
index 4f8a20734a..9280e8102b 100644
--- a/package/system/openwrt-keyring/Makefile
+++ b/package/system/openwrt-keyring/Makefile
@@ -9,7 +9,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/keyring.git
 PKG_SOURCE_DATE:=2022-03-25
 PKG_SOURCE_VERSION:=62471e693b4f9f19dd88afa6827fc3a2cf121d9a
-PKG_MIRROR_HASH:=9e1c85c83b61c91f467d8df9bdf94e8a94a85ffbddfcbf3b3dc38a56e98e2516
+PKG_MIRROR_HASH:=805bc093b13d9faa4751f7236421199554e6ddbd7d8ae399b9ca3925dcdc5374
 
 PKG_MAINTAINER:=John Crispin <john at phrozen.org>
 PKG_LICENSE:=GPL-2.0
diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile
index 3510e7435d..c892020de9 100644
--- a/package/system/opkg/Makefile
+++ b/package/system/opkg/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/opkg-lede.git
 PKG_SOURCE_DATE:=2022-02-24
 PKG_SOURCE_VERSION:=d038e5b6d155784575f62a66a8bb7e874173e92e
-PKG_MIRROR_HASH:=e5ec4ae93f6529f7f0b9acc22a9a63c1b2f27d3b30b4a82041fcd58b9bc7cdf3
+PKG_MIRROR_HASH:=6ef0c62ae66ae77c51513b42b685908b709cf7e1c897289a36b3f6d5612b1462
 
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile
index 5cbc44f0c0..537a1ff718 100644
--- a/package/system/procd/Makefile
+++ b/package/system/procd/Makefile
@@ -12,7 +12,7 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git
-PKG_MIRROR_HASH:=fc7ea415ebb1946661c1204a16b2a2b129014d39521da5883524e5ced8c3c9b4
+PKG_MIRROR_HASH:=90dc0593b8db32e8645e82cc36f18438ccd2103d56fae68c44320f7633aa0eec
 PKG_SOURCE_DATE:=2024-02-24
 PKG_SOURCE_VERSION:=1901aba90b6841ec1a99a25224a92d2519c603fd
 CMAKE_INSTALL:=1
diff --git a/package/system/rpcd/Makefile b/package/system/rpcd/Makefile
index ef360a2c12..2bdd7a7e8d 100644
--- a/package/system/rpcd/Makefile
+++ b/package/system/rpcd/Makefile
@@ -12,7 +12,7 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/rpcd.git
-PKG_MIRROR_HASH:=cf77c8aca75f893315620e2e3abf7fa02d8c8a21f54808b238973e43c66d0059
+PKG_MIRROR_HASH:=69ba17315cfaa2736e1d2c4da03624f42dcff25cc3c8422cbb0e5f7d2729f4ae
 PKG_SOURCE_DATE:=2024-02-22
 PKG_SOURCE_VERSION:=8ef4c2587ac0041049c67befed281a70cf240769
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
diff --git a/package/system/ubox/Makefile b/package/system/ubox/Makefile
index adfb68e55b..3d1754c5f0 100644
--- a/package/system/ubox/Makefile
+++ b/package/system/ubox/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubox.git
 PKG_SOURCE_DATE:=2024-01-24
 PKG_SOURCE_VERSION:=2c5887cb46883a28d69071c4349c3dabbbe3972c
-PKG_MIRROR_HASH:=0ded95382fd3a2e9751ea5fdd16c2afb7dcc52499f6ab47951c5db9525a4faa9
+PKG_MIRROR_HASH:=3194d80bc10147a32d7e4491c54d1a4e718a53080fa0307fe68b6d11cf79e13e
 CMAKE_INSTALL:=1
 
 PKG_LICENSE:=GPL-2.0
diff --git a/package/system/ubus/Makefile b/package/system/ubus/Makefile
index fdf16cfeee..fddc36b0dd 100644
--- a/package/system/ubus/Makefile
+++ b/package/system/ubus/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubus.git
 PKG_SOURCE_DATE:=2023-11-28
 PKG_SOURCE_VERSION:=f84eb5998c6ea2d34989ca2d3254e56c66139313
-PKG_MIRROR_HASH:=d0c15a0275fa3d35accddb84611700bf601745ad68462bc18905bb65da931f21
+PKG_MIRROR_HASH:=75f39a88a6b019ae95c73ed3f7373e5197aa1ff29dc9a95ea46483412f4051ae
 PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
 CMAKE_INSTALL:=1
 
diff --git a/package/system/ucert/Makefile b/package/system/ucert/Makefile
index 950f2b64d3..2aea706a3a 100644
--- a/package/system/ucert/Makefile
+++ b/package/system/ucert/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/ucert.git
 PKG_SOURCE_DATE:=2020-05-24
 PKG_SOURCE_VERSION:=00b921d80ac0dc47339305d803f865ff43c56d63
-PKG_MIRROR_HASH:=839fda1811a58a495ac7bbc41db75222dd5a15e4d72110ca6acc4cdad56908fe
+PKG_MIRROR_HASH:=e6e9024777c36c43a8aa5f0f91927d822d1e08943adfee9bc0a34d86a00dde4c
 
 CMAKE_INSTALL:=1
 PKG_CHECK_FORMAT_SECURITY:=1
diff --git a/package/system/uci/Makefile b/package/system/uci/Makefile
index 5d68b8905d..90cd8be1f9 100644
--- a/package/system/uci/Makefile
+++ b/package/system/uci/Makefile
@@ -15,7 +15,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/uci.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-08-10
 PKG_SOURCE_VERSION:=5781664d5087ccc4b5ab58505883231212dbedbc
-PKG_MIRROR_HASH:=2d60a8543fa00cfc75df6417354b004abf58f672c91bf0a3bffe3ea1dbf84a4b
+PKG_MIRROR_HASH:=18169cbabe76e8b3f5989a031c05e353a57708633e522605ea0f11dcbb3fa441
 
 PKG_LICENSE:=LGPL-2.1
 PKG_LICENSE_FILES:=
diff --git a/package/system/urngd/Makefile b/package/system/urngd/Makefile
index 477c5f2405..ff7e59fc56 100644
--- a/package/system/urngd/Makefile
+++ b/package/system/urngd/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/urngd.git
 PKG_SOURCE_DATE:=2023-11-01
 PKG_SOURCE_VERSION:=44365eb1e1165f2a44cb31f404b04cf85031718e
-PKG_MIRROR_HASH:=743bdfacf1f1e779047a55fe8f388aaf31f6e55e8a4d0a00fcabffb68af2202e
+PKG_MIRROR_HASH:=07055a10fe6f45e07bb8e06245e3231f316ac0c9efb0f86a0f6630b8ac640b38
 
 PKG_LICENSE:=GPL-2.0 BSD-3-Clause
 PKG_LICENSE_FILES:=
diff --git a/package/system/usign/Makefile b/package/system/usign/Makefile
index 3c28318028..75ecd2018a 100644
--- a/package/system/usign/Makefile
+++ b/package/system/usign/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/usign.git
 PKG_SOURCE_DATE:=2020-05-23
 PKG_SOURCE_VERSION:=f1f65026a94137c91b5466b149ef3ea3f20091e9
-PKG_MIRROR_HASH:=3f6569a5e63fdfd032976ac0f79d736d3935101ac1b97fb370514b013c5e6bb6
+PKG_MIRROR_HASH:=e5c047bf0fdb2d790a60fcfe460c414be8bea84863fa4503c65d95d2ee4bf5ee
 CMAKE_INSTALL:=1
 PKG_CHECK_FORMAT_SECURITY:=1
 PKG_BUILD_FLAGS:=no-mips16 lto
diff --git a/package/utils/jsonfilter/Makefile b/package/utils/jsonfilter/Makefile
index fda66bbfb4..d243ac732c 100644
--- a/package/utils/jsonfilter/Makefile
+++ b/package/utils/jsonfilter/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/jsonpath.git
 PKG_SOURCE_DATE:=2024-01-23
 PKG_SOURCE_VERSION:=594cfa86469c005972ba750614f5b3f1af84d0f6
-PKG_MIRROR_HASH:=70d2e0870b746920af4569631218c38c1dddfee4f5d029ec8ea0a67999bdafcd
+PKG_MIRROR_HASH:=92bb2bc64be6769bd16c2c3c0e955e8f58abd6b99ffe6841d089e08df78fc8b7
 CMAKE_INSTALL:=1
 
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
diff --git a/package/utils/ravpower-mcu/Makefile b/package/utils/ravpower-mcu/Makefile
index 949ccfcce1..8337cb2a1a 100644
--- a/package/utils/ravpower-mcu/Makefile
+++ b/package/utils/ravpower-mcu/Makefile
@@ -5,7 +5,7 @@ PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/blocktrron/ravpower-mcu.git
-PKG_MIRROR_HASH:=edde0fda3fc708eac65baff46b5b6f1290ab733d3f4bd7fc027ef45c3d1b5814
+PKG_MIRROR_HASH:=b018291629782d46cd5e3aae59c18598f83d2bae2edd1e356b88d296be07a48a
 PKG_SOURCE_DATE:=2020-06-19
 PKG_SOURCE_VERSION:=1665d9e9212dcd118629a74fbe658841f81036f7
 PKG_MAINTAINER:=David Bauer <mail at david-bauer.net>
diff --git a/package/utils/ucode/Makefile b/package/utils/ucode/Makefile
index e18f53ea32..61cf3815a9 100644
--- a/package/utils/ucode/Makefile
+++ b/package/utils/ucode/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/jow-/ucode.git
 PKG_SOURCE_DATE:=2024-02-21
 PKG_SOURCE_VERSION:=ba3855ae3775197f3594fc2615cac539075bd2fb
-PKG_MIRROR_HASH:=82b8a73417575b58a234586354eba4d0b10180a80b441cd87a9a554227304d34
+PKG_MIRROR_HASH:=8c52f1a03729653640a8184dbb97c22fde9619ee3a29b6ebdd76a16fae3e60ef
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
 PKG_LICENSE:=ISC
 
diff --git a/package/utils/ugps/Makefile b/package/utils/ugps/Makefile
index 66d42dca89..62e183821d 100644
--- a/package/utils/ugps/Makefile
+++ b/package/utils/ugps/Makefile
@@ -14,7 +14,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/ugps.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2024-02-14
 PKG_SOURCE_VERSION:=69561a074d6f50f63b82608b19041e5eb2c605a9
-PKG_MIRROR_HASH:=6a9ea235665babc22393df53e6945030a2e2264d92afccf2e9cd61fa01aa3b11
+PKG_MIRROR_HASH:=ed85dfc8eb34b2c4ffdfd817f851bcef48f46983e5a3b7212003df418c217493
 
 PKG_MAINTAINER:=John Crispin <john at phrozen.org>
 PKG_LICENSE:=GPL-2.0+
diff --git a/package/utils/usbmode/Makefile b/package/utils/usbmode/Makefile
index 1aa1980ce2..aebc7926d6 100644
--- a/package/utils/usbmode/Makefile
+++ b/package/utils/usbmode/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/usbmode.git
 PKG_SOURCE_DATE:=2022-02-24
 PKG_SOURCE_VERSION:=3c8595a4e75510f58fa231b145d5506768dcafc9
-PKG_MIRROR_HASH:=5f0234945f61639080f039522172151452180dd4aec33bafc8a61b60131c3bed
+PKG_MIRROR_HASH:=dfa2cd90d5bea5f7382157f6396da8a79a7b38d25f65bacfdb682729ac257cf4
 CMAKE_INSTALL:=1
 
 PKG_LICENSE:=GPL-2.0
diff --git a/tools/b43-tools/Makefile b/tools/b43-tools/Makefile
index bae498c78f..d3f6e80b52 100644
--- a/tools/b43-tools/Makefile
+++ b/tools/b43-tools/Makefile
@@ -13,7 +13,7 @@ PKG_DATE:=2022-07-05
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/mbuesch/b43-tools.git
 PKG_SOURCE_VERSION:=2fe10ea6690df9a068cb21cde537236bae784a14
-PKG_MIRROR_HASH:=4f1cde5da35a1e768f6a01d67888549d04512073990769342381af1b2c9e7fd2
+PKG_MIRROR_HASH:=3b18a0883924029b295fd2df4458b51e00f47d299a8ecca6cb2ed9e30afae5d5
 
 include $(INCLUDE_DIR)/host-build.mk
 
diff --git a/tools/cbootimage-configs/Makefile b/tools/cbootimage-configs/Makefile
index cafd4e5a20..5d841041b3 100644
--- a/tools/cbootimage-configs/Makefile
+++ b/tools/cbootimage-configs/Makefile
@@ -12,7 +12,7 @@ PKG_SOURCE_DATE := 2017-04-13
 PKG_SOURCE_PROTO := git
 PKG_SOURCE_URL := https://github.com/NVIDIA/cbootimage-configs.git
 PKG_SOURCE_VERSION := 7c3b458b93ed6947cd083623f543e93f9103cc0f
-PKG_MIRROR_HASH := 1d24421af8cf74ec2d625e237aa8121b1273774c4380ad333e2954e052a5a4fe
+PKG_MIRROR_HASH := 56c01f0339a3b4bee4ce31db253bb614d04f4e17a13793e873d701ec1a0de91b
 
 include $(INCLUDE_DIR)/host-build.mk
 
diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile
index 4809c9aa19..3d86d6aec2 100644
--- a/tools/firmware-utils/Makefile
+++ b/tools/firmware-utils/Makefile
@@ -13,7 +13,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
 PKG_SOURCE_DATE:=2023-11-22
 PKG_SOURCE_VERSION:=d87b6c4b6423201e595459840f51d0dced04a4eb
-PKG_MIRROR_HASH:=f34fbf4dc4bd13d18ea94e6e25090b57cde11b3dc7133e46f6ce3bb9164ab8fb
+PKG_MIRROR_HASH:=00f25358d4755547618affee173986e95ba078d04fc80535fe394505196fdc0d
 
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/cmake.mk
diff --git a/tools/make-ext4fs/Makefile b/tools/make-ext4fs/Makefile
index 77031cdce3..91fba48ba7 100644
--- a/tools/make-ext4fs/Makefile
+++ b/tools/make-ext4fs/Makefile
@@ -13,7 +13,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/make_ext4fs.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2020-01-05
 PKG_SOURCE_VERSION:=5c201be7d72aff735da27e17c29852e0cefe3e52
-PKG_MIRROR_HASH:=a9b74b7b95acc84a5a5c33d6acf493faad8f161caca3180734d9bd383c9d823f
+PKG_MIRROR_HASH:=f1c204ff4daa941dc30465286af25044d67bafa537cc66b29fc1b4ec49bfdb28
 
 include $(INCLUDE_DIR)/host-build.mk
 
diff --git a/tools/sdimage/Makefile b/tools/sdimage/Makefile
index 532bc481ac..654d157497 100644
--- a/tools/sdimage/Makefile
+++ b/tools/sdimage/Makefile
@@ -13,7 +13,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/mhei/fsl-imx-uuc.git
 PKG_SOURCE_DATE:=2018-11-18
 PKG_SOURCE_VERSION:=c6536ac5b4388b33c217bde2c3a76a4e96d64176
-PKG_MIRROR_HASH:=747fb640a0596cab7d516979188e1f85be58c470df85cf1f7e3dcf8a4c1b36e5
+PKG_MIRROR_HASH:=5bff90bf59bb3e7e8db6c2ec55c984367f75cb0ee6847f3f2ea666172e203c07
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=LICENSE



From lede-commits at lists.infradead.org  Fri Mar 22 15:19:56 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 18:19:56 -0400
Subject: [openwrt/openwrt]  mt76: Fix PKG_MIRROR_HASH
In-Reply-To: <171114599615.901792.262990699710815392@git-01.infra.openwrt.org>
References: <171114599615.901792.262990699710815392@git-01.infra.openwrt.org>
Message-ID: <mailman.18792.1711146002.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/234f1a2efa558074dfa29382cf86f0024d71c524

commit 234f1a2efa558074dfa29382cf86f0024d71c524
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Fri Mar 22 23:09:42 2024 +0100

    mt76: Fix PKG_MIRROR_HASH
    
    Fix the PKG_MIRROR_HASH after the last upgrade.
    
    Fixes: 5ef41b1f9159 ("mt76: update to latest HEAD")
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/mt76/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile
index c66a3988ad..b0c096b8fb 100644
--- a/package/kernel/mt76/Makefile
+++ b/package/kernel/mt76/Makefile
@@ -10,7 +10,7 @@ PKG_SOURCE_URL:=https://github.com/openwrt/mt76
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-09-11
 PKG_SOURCE_VERSION:=f1e1e67d97d1e9a8bb01b59ab20c45ebc985a958
-PKG_MIRROR_HASH:=884c90d25d59609f86eeeb6d2bd0f9b8befba2bd0552a6c776cbae80be76503c
+PKG_MIRROR_HASH:=41fde79de5bec3aaafdb64658475a1fa99bc483b8122e6aad9b2aa8aa8edfce6
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_USE_NINJA:=0



From lede-commits at lists.infradead.org  Fri Mar 22 15:31:40 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 18:31:40 -0400
Subject: [openwrt/openwrt]  OpenWrt v23.05.3: adjust config defaults
In-Reply-To: <171114670019.922231.14910705154575249611@git-01.infra.openwrt.org>
References: <171114670019.922231.14910705154575249611@git-01.infra.openwrt.org>
Message-ID: <mailman.18793.1711146704.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/01170d518da1c8ade9d26e56d0135d12cda8e781

commit 01170d518da1c8ade9d26e56d0135d12cda8e781
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Fri Mar 22 23:26:03 2024 +0100

    OpenWrt v23.05.3: adjust config defaults
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 feeds.conf.default                 | 8 ++++----
 include/version.mk                 | 6 +++---
 package/base-files/image-config.in | 4 ++--
 version                            | 1 +
 version.date                       | 1 +
 5 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/feeds.conf.default b/feeds.conf.default
index d467db5627..45ab752893 100644
--- a/feeds.conf.default
+++ b/feeds.conf.default
@@ -1,4 +1,4 @@
-src-git packages https://git.openwrt.org/feed/packages.git;openwrt-23.05
-src-git luci https://git.openwrt.org/project/luci.git;openwrt-23.05
-src-git routing https://git.openwrt.org/feed/routing.git;openwrt-23.05
-src-git telephony https://git.openwrt.org/feed/telephony.git;openwrt-23.05
+src-git packages https://git.openwrt.org/feed/packages.git^063b2393cbc3e5aab9d2b40b2911cab1c3967c59
+src-git luci https://git.openwrt.org/project/luci.git^b07cf9dcfc37e021e5619a41c847e63afbd5d34a
+src-git routing https://git.openwrt.org/feed/routing.git^648753932d5a7deff7f2bdb33c000018a709ad84
+src-git telephony https://git.openwrt.org/feed/telephony.git^86af194d03592121f5321474ec9918dd109d3057
diff --git a/include/version.mk b/include/version.mk
index 924bf83541..58c51b4b79 100644
--- a/include/version.mk
+++ b/include/version.mk
@@ -23,13 +23,13 @@ PKG_CONFIG_DEPENDS += \
 sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
 
 VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
-VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),23.05-SNAPSHOT)
+VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),23.05.3)
 
 VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
-VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
+VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r23809-234f1a2efa)
 
 VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
-VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/23.05-SNAPSHOT)
+VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/23.05.3)
 
 VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
 VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
diff --git a/package/base-files/image-config.in b/package/base-files/image-config.in
index 9a72863813..f48dedd5fc 100644
--- a/package/base-files/image-config.in
+++ b/package/base-files/image-config.in
@@ -190,7 +190,7 @@ if VERSIONOPT
 	config VERSION_REPO
 		string
 		prompt "Release repository"
-		default "https://downloads.openwrt.org/releases/23.05-SNAPSHOT"
+		default "https://downloads.openwrt.org/releases/23.05.3"
 		help
 			This is the repository address embedded in the image, it defaults
 			to the trunk snapshot repo; the url may contain the following placeholders:
@@ -266,7 +266,7 @@ if VERSIONOPT
 	config VERSION_CODE_FILENAMES
 		bool
 		prompt "Revision code in filenames"
-		default y
+		default n
 		help
 			Enable this to include the revision identifier or the configured
 			version code into the firmware image, SDK- and Image Builder archive
diff --git a/version b/version
new file mode 100644
index 0000000000..ffbfa772e9
--- /dev/null
+++ b/version
@@ -0,0 +1 @@
+r23809-234f1a2efa
diff --git a/version.date b/version.date
new file mode 100644
index 0000000000..e1e962239b
--- /dev/null
+++ b/version.date
@@ -0,0 +1 @@
+1711145382



From lede-commits at lists.infradead.org  Fri Mar 22 15:31:41 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 22 Mar 2024 18:31:41 -0400
Subject: [openwrt/openwrt]  OpenWrt v23.05.3: revert to branch defaults
In-Reply-To: <171114670019.922231.14910705154575249611@git-01.infra.openwrt.org>
References: <171114670019.922231.14910705154575249611@git-01.infra.openwrt.org>
Message-ID: <mailman.18794.1711146704.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/2b61e258b4f95027dfc4babfa13a1d68fae27ff0

commit 2b61e258b4f95027dfc4babfa13a1d68fae27ff0
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Fri Mar 22 23:26:12 2024 +0100

    OpenWrt v23.05.3: revert to branch defaults
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 feeds.conf.default                 | 8 ++++----
 include/version.mk                 | 6 +++---
 package/base-files/image-config.in | 4 ++--
 version                            | 1 -
 version.date                       | 1 -
 5 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/feeds.conf.default b/feeds.conf.default
index 45ab752893..d467db5627 100644
--- a/feeds.conf.default
+++ b/feeds.conf.default
@@ -1,4 +1,4 @@
-src-git packages https://git.openwrt.org/feed/packages.git^063b2393cbc3e5aab9d2b40b2911cab1c3967c59
-src-git luci https://git.openwrt.org/project/luci.git^b07cf9dcfc37e021e5619a41c847e63afbd5d34a
-src-git routing https://git.openwrt.org/feed/routing.git^648753932d5a7deff7f2bdb33c000018a709ad84
-src-git telephony https://git.openwrt.org/feed/telephony.git^86af194d03592121f5321474ec9918dd109d3057
+src-git packages https://git.openwrt.org/feed/packages.git;openwrt-23.05
+src-git luci https://git.openwrt.org/project/luci.git;openwrt-23.05
+src-git routing https://git.openwrt.org/feed/routing.git;openwrt-23.05
+src-git telephony https://git.openwrt.org/feed/telephony.git;openwrt-23.05
diff --git a/include/version.mk b/include/version.mk
index 58c51b4b79..924bf83541 100644
--- a/include/version.mk
+++ b/include/version.mk
@@ -23,13 +23,13 @@ PKG_CONFIG_DEPENDS += \
 sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
 
 VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
-VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),23.05.3)
+VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),23.05-SNAPSHOT)
 
 VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
-VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r23809-234f1a2efa)
+VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
 
 VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
-VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/23.05.3)
+VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/23.05-SNAPSHOT)
 
 VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
 VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
diff --git a/package/base-files/image-config.in b/package/base-files/image-config.in
index f48dedd5fc..9a72863813 100644
--- a/package/base-files/image-config.in
+++ b/package/base-files/image-config.in
@@ -190,7 +190,7 @@ if VERSIONOPT
 	config VERSION_REPO
 		string
 		prompt "Release repository"
-		default "https://downloads.openwrt.org/releases/23.05.3"
+		default "https://downloads.openwrt.org/releases/23.05-SNAPSHOT"
 		help
 			This is the repository address embedded in the image, it defaults
 			to the trunk snapshot repo; the url may contain the following placeholders:
@@ -266,7 +266,7 @@ if VERSIONOPT
 	config VERSION_CODE_FILENAMES
 		bool
 		prompt "Revision code in filenames"
-		default n
+		default y
 		help
 			Enable this to include the revision identifier or the configured
 			version code into the firmware image, SDK- and Image Builder archive
diff --git a/version b/version
deleted file mode 100644
index ffbfa772e9..0000000000
--- a/version
+++ /dev/null
@@ -1 +0,0 @@
-r23809-234f1a2efa
diff --git a/version.date b/version.date
deleted file mode 100644
index e1e962239b..0000000000
--- a/version.date
+++ /dev/null
@@ -1 +0,0 @@
-1711145382



From lede-commits at lists.infradead.org  Fri Mar 22 23:56:14 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 02:56:14 -0400
Subject: [openwrt/openwrt]  kernel: kmod-ata-ahci-platform: enable support for
 RK35xx
In-Reply-To: <171117697460.1941945.119344945378257168@git-01.infra.openwrt.org>
References: <171117697460.1941945.119344945378257168@git-01.infra.openwrt.org>
Message-ID: <mailman.18823.1711176985.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/28ee115673c5752b9953430ae22ecd0979526cbb

commit 28ee115673c5752b9953430ae22ecd0979526cbb
Author: Marius Durbaca <mariusd84 at gmail.com>
AuthorDate: Wed Feb 28 08:37:44 2024 +0000

    kernel: kmod-ata-ahci-platform: enable support for RK35xx
    
    enable support for RK35xx in kmod-ata-ahci-platform kernel module
    
    Suggested-by: Tianling Shen <cnsztl at immortalwrt.org>
    Signed-off-by: Marius Durbaca <mariusd84 at gmail.com>
---
 package/kernel/linux/modules/block.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/block.mk b/package/kernel/linux/modules/block.mk
index 49a1b6fce1..4f3a6e085f 100644
--- a/package/kernel/linux/modules/block.mk
+++ b/package/kernel/linux/modules/block.mk
@@ -65,7 +65,7 @@ define KernelPackage/ata-ahci-platform
     $(LINUX_DIR)/drivers/ata/ahci_platform.ko \
     $(LINUX_DIR)/drivers/ata/libahci_platform.ko
   AUTOLOAD:=$(call AutoLoad,40,libahci libahci_platform ahci_platform,1)
-  $(call AddDepends/ata, at TARGET_ipq806x||TARGET_layerscape||TARGET_sunxi)
+  $(call AddDepends/ata, at TARGET_ipq806x||TARGET_layerscape||TARGET_rockchip||TARGET_sunxi)
 endef
 
 define KernelPackage/ata-ahci-platform/description



From lede-commits at lists.infradead.org  Fri Mar 22 23:56:15 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 02:56:15 -0400
Subject: [openwrt/openwrt]  uboot-rockchip: add Radxa E25 board support
In-Reply-To: <171117697460.1941945.119344945378257168@git-01.infra.openwrt.org>
References: <171117697460.1941945.119344945378257168@git-01.infra.openwrt.org>
Message-ID: <mailman.18824.1711176985.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ce5661e455f7bb87c028ac989c6d05dbc174877b

commit ce5661e455f7bb87c028ac989c6d05dbc174877b
Author: Marius Durbaca <mariusd84 at gmail.com>
AuthorDate: Wed Feb 28 08:41:31 2024 +0000

    uboot-rockchip: add Radxa E25 board support
    
    add Radxa E25 board support in uboot-rockchip
    
    Signed-off-by: Marius Durbaca <mariusd84 at gmail.com>
    Reviewed-by: Tianling Shen <cnsztl at immortalwrt.org>
---
 package/boot/uboot-rockchip/Makefile | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/package/boot/uboot-rockchip/Makefile b/package/boot/uboot-rockchip/Makefile
index c9b3bbd3ac..89a7ccdd4b 100644
--- a/package/boot/uboot-rockchip/Makefile
+++ b/package/boot/uboot-rockchip/Makefile
@@ -165,6 +165,13 @@ define U-Boot/nanopi-r5s-rk3568
     friendlyarm_nanopi-r5s
 endef
 
+define U-Boot/radxa-e25-rk3568
+  $(U-Boot/rk3568/Default)
+  NAME:=E25
+  BUILD_DEVICES:= \
+    radxa_e25
+endef
+
 UBOOT_TARGETS := \
   nanopc-t4-rk3399 \
   nanopi-r4s-rk3399 \
@@ -180,7 +187,8 @@ UBOOT_TARGETS := \
   rock-pi-e-rk3328 \
   radxa-cm3-io-rk3566 \
   nanopi-r5c-rk3568 \
-  nanopi-r5s-rk3568
+  nanopi-r5s-rk3568 \
+  radxa-e25-rk3568
 
 UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
 



From lede-commits at lists.infradead.org  Fri Mar 22 23:56:16 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 02:56:16 -0400
Subject: [openwrt/openwrt]  rockchip: add Radxa E25 board support
In-Reply-To: <171117697460.1941945.119344945378257168@git-01.infra.openwrt.org>
References: <171117697460.1941945.119344945378257168@git-01.infra.openwrt.org>
Message-ID: <mailman.18825.1711176988.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f7c732bf9ed9bd09646a528681256fb7b0d80bfc

commit f7c732bf9ed9bd09646a528681256fb7b0d80bfc
Author: Marius Durbaca <mariusd84 at gmail.com>
AuthorDate: Wed Feb 28 09:39:44 2024 +0000

    rockchip: add Radxa E25 board support
    
    Radxa E25 is a network application carrier board for the Radxa CM3
    Industrial (CM3I) SoM, which is based on the Rockchip RK3568 SoC.
    
    It has the following features:
    
    - MicroSD card socket, on board eMMC flash
    - 2x 2.5GbE Realtek RTL8125B Ethernet transceiver
    - 1x USB Type-C port (Power and Serial console)
    - 1x USB 3.0 OTG port
    - mini PCIe socket (USB or PCIe)
    - ngff PCIe socket (USB or SATA)
    - 1x User LED and 16x RGB LEDs
    - 26-pin expansion header
    
    Installation:
    Uncompress the OpenWrt sysupgrade and write it to a micro SD card or
    internal eMMC using dd.
    
    Signed-off-by: Marius Durbaca <mariusd84 at gmail.com>
---
 .../armv8/base-files/etc/board.d/02_network        |   3 +-
 .../etc/hotplug.d/net/40-net-smp-affinity          |   3 +-
 target/linux/rockchip/image/armv8.mk               |  10 +
 ...6.3-arm64-dts-rockchip-Add-Radxa-CM3I-E25.patch | 689 +++++++++++++++++++++
 ...25-v6.3-arm64-dts-rockchip-Update-eMMC-SD.patch |  48 ++
 ...-v6.3-arm64-dts-rockchip-Add-missing-CM3i.patch |  35 ++
 ...chip-Correct-the-model-name-for-Radxa-E25.patch |  28 +
 ...rockchip-Fix-PCIe-regulators-on-Radxa-E25.patch |  79 +++
 ...m64-dts-rockchip-Enable-SATA-on-Radxa-E25.patch |  41 ++
 .../112-radxa-e25-add-led-aliases.patch            |  24 +
 10 files changed, 958 insertions(+), 2 deletions(-)

diff --git a/target/linux/rockchip/armv8/base-files/etc/board.d/02_network b/target/linux/rockchip/armv8/base-files/etc/board.d/02_network
index f87b17dbc1..d6e97b91fa 100644
--- a/target/linux/rockchip/armv8/base-files/etc/board.d/02_network
+++ b/target/linux/rockchip/armv8/base-files/etc/board.d/02_network
@@ -16,7 +16,8 @@ rockchip_setup_interfaces()
 	xunlong,orangepi-r1-plus-lts)
 		ucidef_set_interfaces_lan_wan 'eth1' 'eth0'
 		;;
-	friendlyarm,nanopi-r5c)
+	friendlyarm,nanopi-r5c|\
+	radxa,e25)
 		ucidef_set_interfaces_lan_wan 'eth0' 'eth1'
 		;;
 	friendlyarm,nanopi-r5s)
diff --git a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity b/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity
index 360b34ba91..5753d1e856 100644
--- a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity
+++ b/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity
@@ -43,7 +43,8 @@ friendlyarm,nanopi-r4s-enterprise)
 	set_interface_core 10 "eth0"
 	set_interface_core 20 "eth1"
 	;;
-friendlyarm,nanopi-r5c)
+friendlyarm,nanopi-r5c|\
+radxa,e25)
 	set_interface_core 2 "eth0"
 	set_interface_core 4 "eth1"
 	;;
diff --git a/target/linux/rockchip/image/armv8.mk b/target/linux/rockchip/image/armv8.mk
index 251a9c17db..d457058282 100644
--- a/target/linux/rockchip/image/armv8.mk
+++ b/target/linux/rockchip/image/armv8.mk
@@ -104,6 +104,16 @@ define Device/radxa_cm3-io
 endef
 TARGET_DEVICES += radxa_cm3-io
 
+define Device/radxa_e25
+  DEVICE_VENDOR := Radxa
+  DEVICE_MODEL := E25
+  SOC := rk3568
+  DEVICE_DTS := rockchip/rk3568-radxa-e25
+  UBOOT_DEVICE_NAME := radxa-e25-rk3568
+  DEVICE_PACKAGES := kmod-r8169 kmod-ata-ahci-platform
+endef
+TARGET_DEVICES += radxa_e25
+
 define Device/radxa_rock-pi-4a
   DEVICE_VENDOR := Radxa
   DEVICE_MODEL := ROCK Pi 4A
diff --git a/target/linux/rockchip/patches-6.1/024-v6.3-arm64-dts-rockchip-Add-Radxa-CM3I-E25.patch b/target/linux/rockchip/patches-6.1/024-v6.3-arm64-dts-rockchip-Add-Radxa-CM3I-E25.patch
new file mode 100644
index 0000000000..354c546d7e
--- /dev/null
+++ b/target/linux/rockchip/patches-6.1/024-v6.3-arm64-dts-rockchip-Add-Radxa-CM3I-E25.patch
@@ -0,0 +1,689 @@
+From 2bf2f4d9f673013a58109626b87329310537a611 Mon Sep 17 00:00:00 2001
+From: Chukun Pan <amadeus at jmu.edu.cn>
+Date: Fri, 9 Dec 2022 18:25:24 +0800
+Subject: [PATCH] arm64: dts: rockchip: Add Radxa CM3I E25
+
+Radxa E25 is a network application carrier board for the Radxa CM3
+Industrial (CM3I) SoM, which is based on the Rockchip RK3568 SoC.
+
+It has the following features:
+
+- MicroSD card socket, on board eMMC flash
+- 2x 2.5GbE Realtek RTL8125B Ethernet transceiver
+- 1x USB Type-C port (Power and Serial console)
+- 1x USB 3.0 OTG port
+- mini PCIe socket (USB or PCIe)
+- ngff PCIe socket (USB or SATA)
+- 1x User LED and 16x RGB LEDs
+- 26-pin expansion header
+
+Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
+Link: https://lore.kernel.org/r/20221209102524.129367-3-amadeus at jmu.edu.cn
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/Makefile         |   1 +
+ .../boot/dts/rockchip/rk3568-radxa-cm3i.dtsi  | 416 ++++++++++++++++++
+ .../boot/dts/rockchip/rk3568-radxa-e25.dts    | 229 ++++++++++
+ 3 files changed, 646 insertions(+)
+ create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-radxa-cm3i.dtsi
+ create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
+
+--- a/arch/arm64/boot/dts/rockchip/Makefile
++++ b/arch/arm64/boot/dts/rockchip/Makefile
+@@ -78,4 +78,5 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bp
+ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb
+ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
+ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5s.dtb
++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-radxa-e25.dtb
+ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
+--- /dev/null
++++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-cm3i.dtsi
+@@ -0,0 +1,416 @@
++// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
++
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/leds/common.h>
++#include <dt-bindings/pinctrl/rockchip.h>
++#include "rk3568.dtsi"
++
++/ {
++	model = "Radxa CM3 Industrial Board";
++	compatible = "radxa,cm3i", "rockchip,rk3568";
++
++	aliases {
++		mmc0 = &sdhci;
++	};
++
++	chosen {
++		stdout-path = "serial2:115200n8";
++	};
++
++	gpio-leds {
++		compatible = "gpio-leds";
++
++		led_user: led-0 {
++			gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
++			function = LED_FUNCTION_HEARTBEAT;
++			color = <LED_COLOR_ID_GREEN>;
++			linux,default-trigger = "heartbeat";
++			pinctrl-names = "default";
++			pinctrl-0 = <&led_user_en>;
++		};
++	};
++
++	pcie30_avdd0v9: pcie30-avdd0v9-regulator {
++		compatible = "regulator-fixed";
++		regulator-name = "pcie30_avdd0v9";
++		regulator-always-on;
++		regulator-boot-on;
++		regulator-min-microvolt = <900000>;
++		regulator-max-microvolt = <900000>;
++		vin-supply = <&vcc3v3_sys>;
++	};
++
++	pcie30_avdd1v8: pcie30-avdd1v8-regulator {
++		compatible = "regulator-fixed";
++		regulator-name = "pcie30_avdd1v8";
++		regulator-always-on;
++		regulator-boot-on;
++		regulator-min-microvolt = <1800000>;
++		regulator-max-microvolt = <1800000>;
++		vin-supply = <&vcc3v3_sys>;
++	};
++
++	vcc3v3_sys: vcc3v3-sys-regulator {
++		compatible = "regulator-fixed";
++		regulator-name = "vcc3v3_sys";
++		regulator-always-on;
++		regulator-boot-on;
++		regulator-min-microvolt = <3300000>;
++		regulator-max-microvolt = <3300000>;
++		vin-supply = <&vcc5v_input>;
++	};
++
++	vcc5v0_sys: vcc5v0-sys-regulator {
++		compatible = "regulator-fixed";
++		regulator-name = "vcc5v0_sys";
++		regulator-always-on;
++		regulator-boot-on;
++		regulator-min-microvolt = <5000000>;
++		regulator-max-microvolt = <5000000>;
++		vin-supply = <&vcc5v_input>;
++	};
++
++	/* labeled +5v_input in schematic */
++	vcc5v_input: vcc5v-input-regulator {
++		compatible = "regulator-fixed";
++		regulator-name = "vcc5v_input";
++		regulator-always-on;
++		regulator-boot-on;
++		regulator-min-microvolt = <5000000>;
++		regulator-max-microvolt = <5000000>;
++	};
++};
++
++&combphy0 {
++	status = "okay";
++};
++
++&combphy1 {
++	status = "okay";
++};
++
++&combphy2 {
++	status = "okay";
++};
++
++&cpu0 {
++	cpu-supply = <&vdd_cpu>;
++};
++
++&cpu1 {
++	cpu-supply = <&vdd_cpu>;
++};
++
++&cpu2 {
++	cpu-supply = <&vdd_cpu>;
++};
++
++&cpu3 {
++	cpu-supply = <&vdd_cpu>;
++};
++
++&display_subsystem {
++	status = "disabled";
++};
++
++&gpu {
++	mali-supply = <&vdd_gpu>;
++	status = "okay";
++};
++
++&i2c0 {
++	status = "okay";
++
++	vdd_cpu: regulator at 1c {
++		compatible = "tcs,tcs4525";
++		reg = <0x1c>;
++		fcs,suspend-voltage-selector = <1>;
++		regulator-name = "vdd_cpu";
++		regulator-always-on;
++		regulator-boot-on;
++		regulator-min-microvolt = <800000>;
++		regulator-max-microvolt = <1150000>;
++		regulator-ramp-delay = <2300>;
++		vin-supply = <&vcc5v_input>;
++
++		regulator-state-mem {
++			regulator-off-in-suspend;
++		};
++	};
++
++	rk809: pmic at 20 {
++		compatible = "rockchip,rk809";
++		reg = <0x20>;
++		interrupt-parent = <&gpio0>;
++		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
++		#clock-cells = <1>;
++		pinctrl-names = "default";
++		pinctrl-0 = <&pmic_int>;
++		rockchip,system-power-controller;
++		wakeup-source;
++
++		vcc1-supply = <&vcc3v3_sys>;
++		vcc2-supply = <&vcc3v3_sys>;
++		vcc3-supply = <&vcc3v3_sys>;
++		vcc4-supply = <&vcc3v3_sys>;
++		vcc5-supply = <&vcc3v3_sys>;
++		vcc6-supply = <&vcc3v3_sys>;
++		vcc7-supply = <&vcc3v3_sys>;
++		vcc8-supply = <&vcc3v3_sys>;
++		vcc9-supply = <&vcc3v3_sys>;
++
++		regulators {
++			vdd_logic: DCDC_REG1 {
++				regulator-name = "vdd_logic";
++				regulator-always-on;
++				regulator-boot-on;
++				regulator-init-microvolt = <900000>;
++				regulator-initial-mode = <0x2>;
++				regulator-min-microvolt = <500000>;
++				regulator-max-microvolt = <1350000>;
++				regulator-ramp-delay = <6001>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vdd_gpu: DCDC_REG2 {
++				regulator-name = "vdd_gpu";
++				regulator-always-on;
++				regulator-init-microvolt = <900000>;
++				regulator-initial-mode = <0x2>;
++				regulator-min-microvolt = <500000>;
++				regulator-max-microvolt = <1350000>;
++				regulator-ramp-delay = <6001>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vcc_ddr: DCDC_REG3 {
++				regulator-name = "vcc_ddr";
++				regulator-always-on;
++				regulator-boot-on;
++				regulator-initial-mode = <0x2>;
++
++				regulator-state-mem {
++					regulator-on-in-suspend;
++				};
++			};
++
++			vdd_npu: DCDC_REG4 {
++				regulator-name = "vdd_npu";
++				regulator-init-microvolt = <900000>;
++				regulator-initial-mode = <0x2>;
++				regulator-min-microvolt = <500000>;
++				regulator-max-microvolt = <1350000>;
++				regulator-ramp-delay = <6001>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vcc_1v8: DCDC_REG5 {
++				regulator-name = "vcc_1v8";
++				regulator-always-on;
++				regulator-boot-on;
++				regulator-min-microvolt = <1800000>;
++				regulator-max-microvolt = <1800000>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vdda0v9_image: LDO_REG1 {
++				regulator-name = "vdda0v9_image";
++				regulator-min-microvolt = <900000>;
++				regulator-max-microvolt = <900000>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vdda_0v9: LDO_REG2 {
++				regulator-name = "vdda_0v9";
++				regulator-always-on;
++				regulator-boot-on;
++				regulator-min-microvolt = <900000>;
++				regulator-max-microvolt = <900000>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vdda0v9_pmu: LDO_REG3 {
++				regulator-name = "vdda0v9_pmu";
++				regulator-always-on;
++				regulator-boot-on;
++				regulator-min-microvolt = <900000>;
++				regulator-max-microvolt = <900000>;
++
++				regulator-state-mem {
++					regulator-on-in-suspend;
++					regulator-suspend-microvolt = <900000>;
++				};
++			};
++
++			vccio_acodec: LDO_REG4 {
++				regulator-name = "vccio_acodec";
++				regulator-always-on;
++				regulator-min-microvolt = <3300000>;
++				regulator-max-microvolt = <3300000>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vccio_sd: LDO_REG5 {
++				regulator-name = "vccio_sd";
++				regulator-min-microvolt = <1800000>;
++				regulator-max-microvolt = <3300000>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vcc3v3_pmu: LDO_REG6 {
++				regulator-name = "vcc3v3_pmu";
++				regulator-always-on;
++				regulator-boot-on;
++				regulator-min-microvolt = <3300000>;
++				regulator-max-microvolt = <3300000>;
++
++				regulator-state-mem {
++					regulator-on-in-suspend;
++					regulator-suspend-microvolt = <3300000>;
++				};
++			};
++
++			vcca_1v8: LDO_REG7 {
++				regulator-name = "vcca_1v8";
++				regulator-always-on;
++				regulator-boot-on;
++				regulator-min-microvolt = <1800000>;
++				regulator-max-microvolt = <1800000>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vcca1v8_pmu: LDO_REG8 {
++				regulator-name = "vcca1v8_pmu";
++				regulator-always-on;
++				regulator-boot-on;
++				regulator-min-microvolt = <1800000>;
++				regulator-max-microvolt = <1800000>;
++
++				regulator-state-mem {
++					regulator-on-in-suspend;
++					regulator-suspend-microvolt = <1800000>;
++				};
++			};
++
++			vcca1v8_image: LDO_REG9 {
++				regulator-name = "vcca1v8_image";
++				regulator-min-microvolt = <1800000>;
++				regulator-max-microvolt = <1800000>;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vcc_3v3: SWITCH_REG1 {
++				regulator-name = "vcc_3v3";
++				regulator-always-on;
++				regulator-boot-on;
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++
++			vcc3v3_sd: SWITCH_REG2 {
++				regulator-name = "vcc3v3_sd";
++
++				regulator-state-mem {
++					regulator-off-in-suspend;
++				};
++			};
++		};
++	};
++};
++
++&pinctrl {
++	leds {
++		led_user_en: led_user_en {
++			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
++		};
++	};
++
++	pmic {
++		pmic_int: pmic_int {
++			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
++		};
++	};
++};
++
++&pmu_io_domains {
++	pmuio1-supply = <&vcc3v3_pmu>;
++	pmuio2-supply = <&vcc3v3_pmu>;
++	vccio1-supply = <&vccio_acodec>;
++	vccio2-supply = <&vcc_1v8>;
++	vccio3-supply = <&vccio_sd>;
++	vccio4-supply = <&vcc_1v8>;
++	vccio5-supply = <&vcc_3v3>;
++	vccio6-supply = <&vcc_1v8>;
++	vccio7-supply = <&vcc_3v3>;
++	status = "okay";
++};
++
++&saradc {
++	vref-supply = <&vcca_1v8>;
++	status = "okay";
++};
++
++&sdhci {
++	bus-width = <8>;
++	max-frequency = <200000000>;
++	non-removable;
++	pinctrl-names = "default";
++	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
++	vmmc-supply = <&vcc_3v3>;
++	vqmmc-supply = <&vcc_1v8>;
++	status = "okay";
++};
++
++&tsadc {
++	rockchip,hw-tshut-mode = <1>;
++	rockchip,hw-tshut-polarity = <0>;
++	status = "okay";
++};
++
++&uart2 {
++	status = "okay";
++};
++
++&usb2phy0 {
++	status = "okay";
++};
++
++&usb2phy1 {
++	status = "okay";
++};
++
++&usb_host0_xhci {
++	extcon = <&usb2phy0>;
++};
+--- /dev/null
++++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
+@@ -0,0 +1,229 @@
++// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
++
++/dts-v1/;
++#include "rk3568-radxa-cm3i.dtsi"
++
++/ {
++	model = "Radxa E25";
++	compatible = "radxa,e25", "rockchip,rk3568";
++
++	aliases {
++		mmc0 = &sdmmc0;
++		mmc1 = &sdhci;
++	};
++
++	pwm-leds {
++		compatible = "pwm-leds-multicolor";
++
++		multi-led {
++			color = <LED_COLOR_ID_RGB>;
++			max-brightness = <255>;
++
++			led-red {
++				color = <LED_COLOR_ID_RED>;
++				pwms = <&pwm1 0 1000000 0>;
++			};
++
++			led-green {
++				color = <LED_COLOR_ID_GREEN>;
++				pwms = <&pwm2 0 1000000 0>;
++			};
++
++			led-blue {
++				color = <LED_COLOR_ID_BLUE>;
++				pwms = <&pwm12 0 1000000 0>;
++			};
++		};
++	};
++
++	vbus_typec: vbus-typec-regulator {
++		compatible = "regulator-fixed";
++		enable-active-high;
++		gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
++		pinctrl-names = "default";
++		pinctrl-0 = <&vbus_typec_en>;
++		regulator-name = "vbus_typec";
++		regulator-min-microvolt = <5000000>;
++		regulator-max-microvolt = <5000000>;
++		vin-supply = <&vcc5v0_sys>;
++	};
++
++	vcc3v3_minipcie: vcc3v3-minipcie-regulator {
++		compatible = "regulator-fixed";
++		enable-active-high;
++		gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
++		pinctrl-names = "default";
++		pinctrl-0 = <&minipcie_enable_h>;
++		regulator-name = "vcc3v3_minipcie";
++		regulator-min-microvolt = <5000000>;
++		regulator-max-microvolt = <5000000>;
++		vin-supply = <&vcc5v0_sys>;
++	};
++
++	vcc3v3_ngff: vcc3v3-ngff-regulator {
++		compatible = "regulator-fixed";
++		enable-active-high;
++		gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
++		pinctrl-names = "default";
++		pinctrl-0 = <&ngffpcie_enable_h>;
++		regulator-name = "vcc3v3_ngff";
++		regulator-min-microvolt = <3300000>;
++		regulator-max-microvolt = <3300000>;
++		vin-supply = <&vcc5v0_sys>;
++	};
++
++	/* actually fed by vcc5v0_sys, dependent
++	 * on pi6c clock generator
++	 */
++	vcc3v3_pcie30x1: vcc3v3-pcie30x1-regulator {
++		compatible = "regulator-fixed";
++		enable-active-high;
++		gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
++		pinctrl-names = "default";
++		pinctrl-0 = <&pcie30x1_enable_h>;
++		regulator-name = "vcc3v3_pcie30x1";
++		regulator-min-microvolt = <3300000>;
++		regulator-max-microvolt = <3300000>;
++		vin-supply = <&vcc3v3_pi6c_05>;
++	};
++
++	vcc3v3_pi6c_05: vcc3v3-pi6c-05-regulator {
++		compatible = "regulator-fixed";
++		enable-active-high;
++		gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
++		pinctrl-names = "default";
++		pinctrl-0 = <&pcie_enable_h>;
++		regulator-name = "vcc3v3_pcie";
++		regulator-min-microvolt = <3300000>;
++		regulator-max-microvolt = <3300000>;
++		vin-supply = <&vcc5v0_sys>;
++	};
++};
++
++&pcie2x1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pcie20_reset_h>;
++	reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
++	vpcie3v3-supply = <&vcc3v3_pi6c_05>;
++	status = "okay";
++};
++
++&pcie30phy {
++	data-lanes = <1 2>;
++	status = "okay";
++};
++
++&pcie3x1 {
++	num-lanes = <1>;
++	pinctrl-names = "default";
++	pinctrl-0 = <&pcie30x1m0_pins>;
++	reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
++	vpcie3v3-supply = <&vcc3v3_pcie30x1>;
++	status = "okay";
++};
++
++&pcie3x2 {
++	num-lanes = <1>;
++	pinctrl-names = "default";
++	pinctrl-0 = <&pcie30x2_reset_h>;
++	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
++	vpcie3v3-supply = <&vcc3v3_pi6c_05>;
++	status = "okay";
++};
++
++&pinctrl {
++	pcie {
++		pcie20_reset_h: pcie20-reset-h {
++			rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
++		};
++
++		pcie30x1_enable_h: pcie30x1-enable-h {
++			rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
++		};
++
++		pcie30x2_reset_h: pcie30x2-reset-h {
++			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
++		};
++
++		pcie_enable_h: pcie-enable-h {
++			rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
++		};
++	};
++
++	usb {
++		minipcie_enable_h: minipcie-enable-h {
++			rockchip,pins = <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>;
++		};
++
++		ngffpcie_enable_h: ngffpcie-enable-h {
++			rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
++		};
++
++		vbus_typec_en: vbus_typec_en {
++			rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
++		};
++	};
++};
++
++&pwm1 {
++	status = "okay";
++};
++
++&pwm2 {
++	status = "okay";
++};
++
++&pwm12 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pwm12m1_pins>;
++	status = "okay";
++};
++
++&sdmmc0 {
++	bus-width = <4>;
++	cap-sd-highspeed;
++	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
++	/* Also used in pcie30x1_clkreqnm0 */
++	disable-wp;
++	pinctrl-names = "default";
++	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd>;
++	sd-uhs-sdr104;
++	vmmc-supply = <&vcc3v3_sd>;
++	vqmmc-supply = <&vccio_sd>;
++	status = "okay";
++};
++
++&usb_host0_ehci {
++	status = "okay";
++};
++
++&usb_host0_ohci {
++	status = "okay";
++};
++
++&usb_host0_xhci {
++	status = "okay";
++};
++
++&usb_host1_ehci {
++	status = "okay";
++};
++
++&usb_host1_ohci {
++	status = "okay";
++};
++
++&usb2phy0_otg {
++	phy-supply = <&vbus_typec>;
++	status = "okay";
++};
++
++&usb2phy1_host {
++	phy-supply = <&vcc3v3_minipcie>;
++	status = "okay";
++};
++
++&usb2phy1_otg {
++	phy-supply = <&vcc3v3_ngff>;
++	status = "okay";
++};
diff --git a/target/linux/rockchip/patches-6.1/025-v6.3-arm64-dts-rockchip-Update-eMMC-SD.patch b/target/linux/rockchip/patches-6.1/025-v6.3-arm64-dts-rockchip-Update-eMMC-SD.patch
new file mode 100644
index 0000000000..e556e2eb42
--- /dev/null
+++ b/target/linux/rockchip/patches-6.1/025-v6.3-arm64-dts-rockchip-Update-eMMC-SD.patch
@@ -0,0 +1,48 @@
+From c80992abd2877590059e9cb254213c16824e2106 Mon Sep 17 00:00:00 2001
+From: Jagan Teki <jagan at amarulasolutions.com>
+Date: Wed, 18 Jan 2023 13:34:53 +0530
+Subject: [PATCH] arm64: dts: rockchip: Update eMMC, SD aliases for Radxa SoM
+ boards
+
+Radxa has produced Compute Modules like RK3399pro VMARC and CM3i with
+onboarding eMMC flash, so the eMMC is the primary MMC device.
+
+On the other hand, Rockchip boot orders start from eMMC from an MMC
+device perspective.
+
+Mark, the eMMC has mmc0 to satisfy the above two conditions.
+
+Reported-by: FUKAUMI Naoki <naoki at radxa.com>
+Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
+Link: https://lore.kernel.org/r/20230118080454.11643-1-jagan at amarulasolutions.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi | 4 ++--
+ arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts     | 3 +--
+ 2 files changed, 3 insertions(+), 4 deletions(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi
+@@ -13,8 +13,8 @@
+ 	compatible = "vamrs,rk3399pro-vmarc-som", "rockchip,rk3399pro";
+ 
+ 	aliases {
+-		mmc0 = &sdmmc;
+-		mmc1 = &sdhci;
++		mmc0 = &sdhci;
++		mmc1 = &sdmmc;
+ 	};
+ 
+ 	vcc3v3_pcie: vcc-pcie-regulator {
+--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
+@@ -8,8 +8,7 @@
+ 	compatible = "radxa,e25", "rockchip,rk3568";
+ 
+ 	aliases {
+-		mmc0 = &sdmmc0;
+-		mmc1 = &sdhci;
++		mmc1 = &sdmmc0;
+ 	};
+ 
+ 	pwm-leds {
diff --git a/target/linux/rockchip/patches-6.1/026-v6.3-arm64-dts-rockchip-Add-missing-CM3i.patch b/target/linux/rockchip/patches-6.1/026-v6.3-arm64-dts-rockchip-Add-missing-CM3i.patch
new file mode 100644
index 0000000000..c1f1a09219
--- /dev/null
+++ b/target/linux/rockchip/patches-6.1/026-v6.3-arm64-dts-rockchip-Add-missing-CM3i.patch
@@ -0,0 +1,35 @@
+From c4d2b02d63ee38b381fbc886c02eecfec4f981cc Mon Sep 17 00:00:00 2001
+From: Jagan Teki <jagan at amarulasolutions.com>
+Date: Mon, 23 Jan 2023 12:46:51 +0530
+Subject: [PATCH] arm64: dts: rockchip: Add missing CM3i fallback compatible
+ for Radxa E25
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In order to function the Radxa E25 Carrier board, it is mandatory to
+mount the Radxa CM3i module.?
+
+Add Radxa CM3i compatible as fallback compatible to string to satisfy
+the Module and Carrier board topology.
+
+Fixes: 2bf2f4d9f673 ("arm64: dts: rockchip: Add Radxa CM3I E25")
+Cc: Chukun Pan <amadeus at jmu.edu.cn>
+Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
+Link: https://lore.kernel.org/r/20230123071654.73139-2-jagan at amarulasolutions.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
+@@ -5,7 +5,7 @@
+ 
+ / {
+ 	model = "Radxa E25";
+-	compatible = "radxa,e25", "rockchip,rk3568";
++	compatible = "radxa,e25", "radxa,cm3i", "rockchip,rk3568";
+ 
+ 	aliases {
+ 		mmc1 = &sdmmc0;
diff --git a/target/linux/rockchip/patches-6.1/027-v6.3-arm64-dts-rockchip-Correct-the-model-name-for-Radxa-E25.patch b/target/linux/rockchip/patches-6.1/027-v6.3-arm64-dts-rockchip-Correct-the-model-name-for-Radxa-E25.patch
new file mode 100644
index 0000000000..84e87bae05
--- /dev/null
+++ b/target/linux/rockchip/patches-6.1/027-v6.3-arm64-dts-rockchip-Correct-the-model-name-for-Radxa-E25.patch
@@ -0,0 +1,28 @@
+From ef9134d9bbce071c9e4ebdcbb6f8fb1a5dd0a67e Mon Sep 17 00:00:00 2001
+From: Jagan Teki <jagan at amarulasolutions.com>
+Date: Mon, 23 Jan 2023 12:46:53 +0530
+Subject: [PATCH] arm64: dts: rockchip: Correct the model name for Radxa E25
+
+Radxa E25 is a Carrier board, so update the model name for Radxa E25
+as suggested by the Radxa website.
+
+Fixes: 2bf2f4d9f673 ("arm64: dts: rockchip: Add Radxa CM3I E25")
+Cc: Chukun Pan <amadeus at jmu.edu.cn>
+Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
+Link: https://lore.kernel.org/r/20230123071654.73139-4-jagan at amarulasolutions.com
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
+@@ -4,7 +4,7 @@
+ #include "rk3568-radxa-cm3i.dtsi"
+ 
+ / {
+-	model = "Radxa E25";
++	model = "Radxa E25 Carrier Board";
+ 	compatible = "radxa,e25", "radxa,cm3i", "rockchip,rk3568";
+ 
+ 	aliases {
diff --git a/target/linux/rockchip/patches-6.1/028-v6.6-arm64-dts-rockchip-Fix-PCIe-regulators-on-Radxa-E25.patch b/target/linux/rockchip/patches-6.1/028-v6.6-arm64-dts-rockchip-Fix-PCIe-regulators-on-Radxa-E25.patch
new file mode 100644
index 0000000000..da02c4c001
--- /dev/null
+++ b/target/linux/rockchip/patches-6.1/028-v6.6-arm64-dts-rockchip-Fix-PCIe-regulators-on-Radxa-E25.patch
@@ -0,0 +1,79 @@
+From a87852e37f782257ebc57cc44a0d3fbf806471f6 Mon Sep 17 00:00:00 2001
+From: Jonas Karlman <jonas at kwiboo.se>
+Date: Mon, 24 Jul 2023 14:52:16 +0000
+Subject: [PATCH] arm64: dts: rockchip: Fix PCIe regulators on Radxa E25
+
+Despite its name, the regulator vcc3v3_pcie30x1 has nothing to do with
+pcie30x1. Instead, it supply power to VBAT1-5 on the M.2 KEY B port as
+seen on page 8 of the schematic [1].
+
+pcie30x1 is used for the mini PCIe slot, and as seen on page 9 the
+vcc3v3_minipcie regulator is instead related to pcie30x1.
+
+The M.2 KEY B port can be used for WWAN USB2 modules or SATA drives.
+
+Use correct regulator vcc3v3_minipcie for pcie30x1.
+
+[1] https://dl.radxa.com/cm3p/e25/radxa-e25-v1.4-sch.pdf
+
+Fixes: 2bf2f4d9f673 ("arm64: dts: rockchip: Add Radxa CM3I E25")
+Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
+Link: https://lore.kernel.org/r/20230724145213.3833099-1-jonas at kwiboo.se
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ .../arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
+@@ -47,6 +47,9 @@
+ 		vin-supply = <&vcc5v0_sys>;
+ 	};
+ 
++	/* actually fed by vcc5v0_sys, dependent
++	 * on pi6c clock generator
++	 */
+ 	vcc3v3_minipcie: vcc3v3-minipcie-regulator {
+ 		compatible = "regulator-fixed";
+ 		enable-active-high;
+@@ -54,9 +57,9 @@
+ 		pinctrl-names = "default";
+ 		pinctrl-0 = <&minipcie_enable_h>;
+ 		regulator-name = "vcc3v3_minipcie";
+-		regulator-min-microvolt = <5000000>;
+-		regulator-max-microvolt = <5000000>;
+-		vin-supply = <&vcc5v0_sys>;
++		regulator-min-microvolt = <3300000>;
++		regulator-max-microvolt = <3300000>;
++		vin-supply = <&vcc3v3_pi6c_05>;
+ 	};
+ 
+ 	vcc3v3_ngff: vcc3v3-ngff-regulator {
+@@ -71,9 +74,6 @@
+ 		vin-supply = <&vcc5v0_sys>;
+ 	};
+ 
+-	/* actually fed by vcc5v0_sys, dependent
+-	 * on pi6c clock generator
+-	 */
+ 	vcc3v3_pcie30x1: vcc3v3-pcie30x1-regulator {
+ 		compatible = "regulator-fixed";
+ 		enable-active-high;
+@@ -83,7 +83,7 @@
+ 		regulator-name = "vcc3v3_pcie30x1";
+ 		regulator-min-microvolt = <3300000>;
+ 		regulator-max-microvolt = <3300000>;
+-		vin-supply = <&vcc3v3_pi6c_05>;
++		vin-supply = <&vcc5v0_sys>;
+ 	};
+ 
+ 	vcc3v3_pi6c_05: vcc3v3-pi6c-05-regulator {
+@@ -117,7 +117,7 @@
+ 	pinctrl-names = "default";
+ 	pinctrl-0 = <&pcie30x1m0_pins>;
+ 	reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
+-	vpcie3v3-supply = <&vcc3v3_pcie30x1>;
++	vpcie3v3-supply = <&vcc3v3_minipcie>;
+ 	status = "okay";
+ };
+ 
diff --git a/target/linux/rockchip/patches-6.1/029-v6.6-arm64-dts-rockchip-Enable-SATA-on-Radxa-E25.patch b/target/linux/rockchip/patches-6.1/029-v6.6-arm64-dts-rockchip-Enable-SATA-on-Radxa-E25.patch
new file mode 100644
index 0000000000..c0abdeb267
--- /dev/null
+++ b/target/linux/rockchip/patches-6.1/029-v6.6-arm64-dts-rockchip-Enable-SATA-on-Radxa-E25.patch
@@ -0,0 +1,41 @@
+From 2bdfe84fbd57a4ed9fd65a67210442559ce078f0 Mon Sep 17 00:00:00 2001
+From: Jonas Karlman <jonas at kwiboo.se>
+Date: Mon, 24 Jul 2023 14:52:16 +0000
+Subject: [PATCH] arm64: dts: rockchip: Enable SATA on Radxa E25
+
+The M.2 KEY B port can be used for WWAN USB2 modules or SATA drives.
+
+Enable sata1 node to fix use of SATA drives on the M.2 slot.
+
+Fixes: 2bf2f4d9f673 ("arm64: dts: rockchip: Add Radxa CM3I E25")
+Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
+Link: https://lore.kernel.org/r/20230724145213.3833099-1-jonas at kwiboo.se
+Signed-off-by: Heiko Stuebner <heiko at sntech.de>
+---
+ arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
+@@ -99,6 +99,10 @@
+ 	};
+ };
+ 
++&combphy1 {
++	phy-supply = <&vcc3v3_pcie30x1>;
++};
++
+ &pcie2x1 {
+ 	pinctrl-names = "default";
+ 	pinctrl-0 = <&pcie20_reset_h>;
+@@ -178,6 +182,10 @@
+ 	status = "okay";
+ };
+ 
++&sata1 {
++	status = "okay";
++};
++
+ &sdmmc0 {
+ 	bus-width = <4>;
+ 	cap-sd-highspeed;
diff --git a/target/linux/rockchip/patches-6.1/112-radxa-e25-add-led-aliases.patch b/target/linux/rockchip/patches-6.1/112-radxa-e25-add-led-aliases.patch
new file mode 100644
index 0000000000..75038c7f39
--- /dev/null
+++ b/target/linux/rockchip/patches-6.1/112-radxa-e25-add-led-aliases.patch
@@ -0,0 +1,24 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Marius Durbaca <mariusd84 at gmail.com>
+Date: Tue Feb 27 16:25:27 2024 +0200
+Subject: [PATCH] arm64: dts: rockchip: Update LED properties for Radxa 
+E25
+
+Add OpenWrt's LED aliases for showing system status.
+
+Signed-off-by: Marius Durbaca <mariusd84 at gmail.com>
+---
+
+--- a/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3568-radxa-e25.dts
+@@ -9,6 +9,10 @@
+ 
+ 	aliases {
+ 		mmc1 = &sdmmc0;
++		led-boot = &led_user;
++		led-failsafe = &led_user;
++		led-running = &led_user;
++		led-upgrade = &led_user;
+ 	};
+ 
+ 	pwm-leds {



From lede-commits at lists.infradead.org  Sat Mar 23 06:26:56 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 09:26:56 -0400
Subject: [openwrt/openwrt]  mac80211: carl9170: re-fix fortified-memset
 warning
In-Reply-To: <171120041644.2694777.3225588505309770435@git-01.infra.openwrt.org>
References: <171120041644.2694777.3225588505309770435@git-01.infra.openwrt.org>
Message-ID: <mailman.18866.1711200436.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/bce7b4f8e5bc01fa29ca45db88bb55bb0d301265

commit bce7b4f8e5bc01fa29ca45db88bb55bb0d301265
Author: Mieczyslaw Nalewaj <namiltd at yahoo.com>
AuthorDate: Fri Mar 22 23:15:59 2024 +0100

    mac80211: carl9170: re-fix fortified-memset warning
    
    The carl9170_tx_release() function sometimes triggers a fortified-memset
    warning in my randconfig builds:
    
    In file included from include/linux/string.h:254,
                     from drivers/net/wireless/ath/carl9170/tx.c:40:
    In function 'fortify_memset_chk',
        inlined from 'carl9170_tx_release' at drivers/net/wireless/ath/carl9170/tx.c:283:2,
        inlined from 'kref_put' at include/linux/kref.h:65:3,
        inlined from 'carl9170_tx_put_skb' at drivers/net/wireless/ath/carl9170/tx.c:342:9:
    include/linux/fortify-string.h:493:25: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
      493 |                         __write_overflow_field(p_size_field, size);
    
    Kees previously tried to avoid this by using memset_after(), but it seems
    this does not fully address the problem. I noticed that the memset_after()
    here is done on a different part of the union (status) than the original
    cast was from (rate_driver_data), which may confuse the compiler.
    
    Unfortunately, the memset_after() trick does not work on driver_rates[]
    because that is part of an anonymous struct, and I could not get
    struct_group() to do this either. Using two separate memset() calls
    on the two members does address the warning though.
    
    Signed-off-by: Mieczyslaw Nalewaj <namiltd at yahoo.com>
---
 ...-carl9170_re-fix_fortified-memset_warning.patch | 51 ++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/package/kernel/mac80211/patches/ath/432-carl9170_re-fix_fortified-memset_warning.patch b/package/kernel/mac80211/patches/ath/432-carl9170_re-fix_fortified-memset_warning.patch
new file mode 100644
index 0000000000..eafe49bd6f
--- /dev/null
+++ b/package/kernel/mac80211/patches/ath/432-carl9170_re-fix_fortified-memset_warning.patch
@@ -0,0 +1,51 @@
+[PATCH 1/2] carl9170: re-fix fortified-memset warning
+@ 2023-06-23 15:23 Arnd Bergmann
+  2023-06-23 15:24 ` [PATCH 2/2] mac80211: make ieee80211_tx_info padding explicit Arnd Bergmann
+                   ` (2 more replies)
+  0 siblings, 3 replies; 9+ messages in thread
+From: Arnd Bergmann @ 2023-06-23 15:23 UTC (permalink / raw)
+  To: Christian Lamparter, Kalle Valo, Kees Cook, Johannes Berg
+  Cc: Arnd Bergmann, linux-wireless, linux-kernel
+
+From: Arnd Bergmann <arnd at arndb.de>
+
+The carl9170_tx_release() function sometimes triggers a fortified-memset
+warning in my randconfig builds:
+
+In file included from include/linux/string.h:254,
+                 from drivers/net/wireless/ath/carl9170/tx.c:40:
+In function 'fortify_memset_chk',
+    inlined from 'carl9170_tx_release' at drivers/net/wireless/ath/carl9170/tx.c:283:2,
+    inlined from 'kref_put' at include/linux/kref.h:65:3,
+    inlined from 'carl9170_tx_put_skb' at drivers/net/wireless/ath/carl9170/tx.c:342:9:
+include/linux/fortify-string.h:493:25: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
+  493 |                         __write_overflow_field(p_size_field, size);
+
+Kees previously tried to avoid this by using memset_after(), but it seems
+this does not fully address the problem. I noticed that the memset_after()
+here is done on a different part of the union (status) than the original
+cast was from (rate_driver_data), which may confuse the compiler.
+
+Unfortunately, the memset_after() trick does not work on driver_rates[]
+because that is part of an anonymous struct, and I could not get
+struct_group() to do this either. Using two separate memset() calls
+on the two members does address the warning though.
+
+Fixes: fb5f6a0e8063b ("mac80211: Use memset_after() to clear tx status")
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+---
+ drivers/net/wireless/ath/carl9170/tx.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/carl9170/tx.c
++++ b/drivers/net/wireless/ath/carl9170/tx.c
+@@ -280,7 +280,8 @@ static void carl9170_tx_release(struct k
+ 	 * carl9170_tx_fill_rateinfo() has filled the rate information
+ 	 * before we get to this point.
+ 	 */
+-	memset_after(&txinfo->status, 0, rates);
++	memset(&txinfo->pad, 0, sizeof(txinfo->pad));
++	memset(&txinfo->rate_driver_data, 0, sizeof(txinfo->rate_driver_data));
+ 
+ 	if (atomic_read(&ar->tx_total_queued))
+ 		ar->tx_schedule = true;



From lede-commits at lists.infradead.org  Sat Mar 23 06:57:34 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 09:57:34 -0400
Subject: [openwrt/openwrt]  kirkwood: add ix4-200d support to uboot-envtools
In-Reply-To: <171120225462.2773616.3960901264329468106@git-01.infra.openwrt.org>
References: <171120225462.2773616.3960901264329468106@git-01.infra.openwrt.org>
Message-ID: <mailman.18877.1711202259.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2cfe86d383c9eb74b6d37d8e33bb726f7d6cbb8a

commit 2cfe86d383c9eb74b6d37d8e33bb726f7d6cbb8a
Author: Sander van Deijck <sander at vandeijck.com>
AuthorDate: Tue Mar 12 01:54:38 2024 +0100

    kirkwood: add ix4-200d support to uboot-envtools
    
    This adds support for the Iomega ix4-200d device in uboot-envtools.
    
    Signed-off-by: Sander van Deijck <sander at vandeijck.com>
---
 package/boot/uboot-envtools/files/kirkwood | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package/boot/uboot-envtools/files/kirkwood b/package/boot/uboot-envtools/files/kirkwood
index 240371f48d..1b07640cd3 100644
--- a/package/boot/uboot-envtools/files/kirkwood
+++ b/package/boot/uboot-envtools/files/kirkwood
@@ -17,6 +17,7 @@ cloudengines,pogoe02|\
 cloudengines,pogoplugv4|\
 globalscale,sheevaplug|\
 iom,ix2-200|\
+iom,ix4-200d|\
 linksys,e4200-v2|\
 linksys,ea4500|\
 netgear,readynas-duo-v2|\



From lede-commits at lists.infradead.org  Sat Mar 23 06:59:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 09:59:07 -0400
Subject: [openwrt/openwrt]  kirkwood: add ix4-200d support to uboot-envtools
In-Reply-To: <171120234793.2780244.14748098555130967088@git-01.infra.openwrt.org>
References: <171120234793.2780244.14748098555130967088@git-01.infra.openwrt.org>
Message-ID: <mailman.18878.1711202356.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/0a2047cf77fc582e012eb9c9ef4e901fb29eddce

commit 0a2047cf77fc582e012eb9c9ef4e901fb29eddce
Author: Sander van Deijck <sander at vandeijck.com>
AuthorDate: Tue Mar 12 01:54:38 2024 +0100

    kirkwood: add ix4-200d support to uboot-envtools
    
    This adds support for the Iomega ix4-200d device in uboot-envtools.
    
    Signed-off-by: Sander van Deijck <sander at vandeijck.com>
    (cherry picked from commit 2cfe86d383c9eb74b6d37d8e33bb726f7d6cbb8a)
---
 package/boot/uboot-envtools/files/kirkwood | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package/boot/uboot-envtools/files/kirkwood b/package/boot/uboot-envtools/files/kirkwood
index 240371f48d..1b07640cd3 100644
--- a/package/boot/uboot-envtools/files/kirkwood
+++ b/package/boot/uboot-envtools/files/kirkwood
@@ -17,6 +17,7 @@ cloudengines,pogoe02|\
 cloudengines,pogoplugv4|\
 globalscale,sheevaplug|\
 iom,ix2-200|\
+iom,ix4-200d|\
 linksys,e4200-v2|\
 linksys,ea4500|\
 netgear,readynas-duo-v2|\



From lede-commits at lists.infradead.org  Sat Mar 23 07:41:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 10:41:52 -0400
Subject: [openwrt/openwrt]  tools: firmware-utils: update to git HEAD
In-Reply-To: <171120491244.2891236.10296430327123018911@git-01.infra.openwrt.org>
References: <171120491244.2891236.10296430327123018911@git-01.infra.openwrt.org>
Message-ID: <mailman.18883.1711204924.1280.lede-commits@lists.infradead.org>

svanheule pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/3b4cfb25bc33da5171c6936b45ed89a424841a73

commit 3b4cfb25bc33da5171c6936b45ed89a424841a73
Author: Sander Vanheule <sander at svanheule.net>
AuthorDate: Sat Mar 23 15:36:34 2024 +0100

    tools: firmware-utils: update to git HEAD
    
    Add the new 'zycast' tool for remote flashing of Zyxel devices, support
    for factory image generation for two new TP-Link devices, and improved
    compatibility with two other devices.
    
        17de36575f1e zycast: disable build on non-Linux OS
        a5dfb5fb5e6e tplink-safeloader: add TP-Link RE205 v3 support
        c1e06daf4622 tplink-safeloader: bump EAP225-V3 compat_level
        335d063cff23 tplink-safeloader: bump EAP225-Outdoor v1 compat
        c1e69e6f9c0d tplink-safeloader: show compat_level with FW info
        e87f23849790 zycast: new tool for ZyXEL bootloader flashing
        9067281d17da tplink-safeloader: add RE365 v1
    
    Signed-off-by: Sander Vanheule <sander at svanheule.net>
---
 tools/firmware-utils/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile
index 3d86d6aec2..6d378589f0 100644
--- a/tools/firmware-utils/Makefile
+++ b/tools/firmware-utils/Makefile
@@ -11,9 +11,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
-PKG_SOURCE_DATE:=2023-11-22
-PKG_SOURCE_VERSION:=d87b6c4b6423201e595459840f51d0dced04a4eb
-PKG_MIRROR_HASH:=00f25358d4755547618affee173986e95ba078d04fc80535fe394505196fdc0d
+PKG_SOURCE_DATE:=2024-02-14
+PKG_SOURCE_VERSION:=17de36575f1edf4287c1d92c7d7eb45c8ceca29e
+PKG_MIRROR_HASH:=70ee16f2dd00a9f1a66b6cd0d90ba58ad36e45e713dae53af38831ed38fbe7e5
 
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/cmake.mk



From lede-commits at lists.infradead.org  Sat Mar 23 07:52:51 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 10:52:51 -0400
Subject: [openwrt/openwrt]  tools: firmware-utils: update to git HEAD
In-Reply-To: <171120557114.2904196.11612269982711099089@git-01.infra.openwrt.org>
References: <171120557114.2904196.11612269982711099089@git-01.infra.openwrt.org>
Message-ID: <mailman.18884.1711205576.1280.lede-commits@lists.infradead.org>

svanheule pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2ac6fe6a8849e700012d17705c6252716a0e8c8b

commit 2ac6fe6a8849e700012d17705c6252716a0e8c8b
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sat Mar 23 15:14:01 2024 +0100

    tools: firmware-utils: update to git HEAD
    
    6b24299 ptgen: fix limitation for active partition in GPT
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 tools/firmware-utils/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile
index 6d378589f0..9e7c8d6d31 100644
--- a/tools/firmware-utils/Makefile
+++ b/tools/firmware-utils/Makefile
@@ -11,9 +11,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
-PKG_SOURCE_DATE:=2024-02-14
-PKG_SOURCE_VERSION:=17de36575f1edf4287c1d92c7d7eb45c8ceca29e
-PKG_MIRROR_HASH:=70ee16f2dd00a9f1a66b6cd0d90ba58ad36e45e713dae53af38831ed38fbe7e5
+PKG_SOURCE_DATE:=2024-03-23
+PKG_SOURCE_VERSION:=6b242991a995c41769977efb010dc9f4e4ec3da2
+PKG_MIRROR_HASH:=f8d84868487ec51ea4119fb5a48a181025ca272d8eb5b714068d0eec8db88d87
 
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/cmake.mk



From lede-commits at lists.infradead.org  Sat Mar 23 07:52:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 10:52:52 -0400
Subject: [openwrt/openwrt]  firmware-utils: update to git HEAD
In-Reply-To: <171120557114.2904196.11612269982711099089@git-01.infra.openwrt.org>
References: <171120557114.2904196.11612269982711099089@git-01.infra.openwrt.org>
Message-ID: <mailman.18885.1711205576.1280.lede-commits@lists.infradead.org>

svanheule pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f403824a6fde7c06c7ea7af5a81b0971fce714a1

commit f403824a6fde7c06c7ea7af5a81b0971fce714a1
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sat Mar 23 15:16:19 2024 +0100

    firmware-utils: update to git HEAD
    
    9067281 tplink-safeloader: add RE365 v1
    e87f238 zycast: new tool for ZyXEL bootloader flashing
    c1e69e6 tplink-safeloader: show compat_level with FW info
    335d063 tplink-safeloader: bump EAP225-Outdoor v1 compat
    c1e06da tplink-safeloader: bump EAP225-V3 compat_level
    a5dfb5f tplink-safeloader: add TP-Link RE205 v3 support
    17de365 zycast: disable build on non-Linux OS
    6b24299 ptgen: fix limitation for active partition in GPT
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/utils/firmware-utils/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/utils/firmware-utils/Makefile b/package/utils/firmware-utils/Makefile
index 5e5f57e5a0..d9213d71c8 100644
--- a/package/utils/firmware-utils/Makefile
+++ b/package/utils/firmware-utils/Makefile
@@ -7,9 +7,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
-PKG_SOURCE_DATE:=2023-11-22
-PKG_SOURCE_VERSION:=d87b6c4b6423201e595459840f51d0dced04a4eb
-PKG_MIRROR_HASH:=f34fbf4dc4bd13d18ea94e6e25090b57cde11b3dc7133e46f6ce3bb9164ab8fb
+PKG_SOURCE_DATE:=2024-03-23
+PKG_SOURCE_VERSION:=6b242991a995c41769977efb010dc9f4e4ec3da2
+PKG_MIRROR_HASH:=f8d84868487ec51ea4119fb5a48a181025ca272d8eb5b714068d0eec8db88d87
 
 PKG_BUILD_DEPENDS:=openssl zlib
 



From lede-commits at lists.infradead.org  Sat Mar 23 08:58:48 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 11:58:48 -0400
Subject: [openwrt/openwrt]  mac80211: add missing config for third 160MHz
 width for 5GHz radio
In-Reply-To: <171120952866.2974872.13448181741622600059@git-01.infra.openwrt.org>
References: <171120952866.2974872.13448181741622600059@git-01.infra.openwrt.org>
Message-ID: <mailman.18886.1711209534.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a91b79fd04d58e711273d08e0b1246942b2eec98

commit a91b79fd04d58e711273d08e0b1246942b2eec98
Author: Pawe? Owoc <frut3k7 at gmail.com>
AuthorDate: Mon Mar 18 21:53:51 2024 +0100

    mac80211: add missing config for third 160MHz width for 5GHz radio
    
    Without this configuration it is not possible to run the radio using HE160 on channels 149-177.
    
    Fixes: #14906
    Signed-off-by: Pawe? Owoc <frut3k7 at gmail.com>
---
 .../network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh    | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
index 55df71ee3d..bc59c303b9 100755
--- a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
+++ b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
@@ -273,6 +273,7 @@ mac80211_hostapd_setup_base() {
 				case "$channel" in
 					36|40|44|48|52|56|60|64) idx=50;;
 					100|104|108|112|116|120|124|128) idx=114;;
+					149|153|157|161|165|169|173|177) idx=163;;
 				esac
 			fi
 			enable_ac=1



From lede-commits at lists.infradead.org  Sat Mar 23 10:35:18 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 13:35:18 -0400
Subject: [openwrt/openwrt]  kernel: support RISC-V PMU
In-Reply-To: <171121531894.3176804.12224860881099026402@git-01.infra.openwrt.org>
References: <171121531894.3176804.12224860881099026402@git-01.infra.openwrt.org>
Message-ID: <mailman.18896.1711215331.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/686cc58c10a48b58a9eef601f3697c9ec4019da6

commit 686cc58c10a48b58a9eef601f3697c9ec4019da6
Author: Qingfang Deng <dqfext at gmail.com>
AuthorDate: Tue Mar 12 10:08:30 2024 +0800

    kernel: support RISC-V PMU
    
    Add RISC-V PMU config symbols and enable them for riscv64.
    
    Signed-off-by: Qingfang Deng <dqfext at gmail.com>
---
 config/Config-kernel.in         | 10 ++++++++++
 target/linux/generic/config-6.1 |  3 +++
 target/linux/generic/config-6.6 |  3 +++
 3 files changed, 16 insertions(+)

diff --git a/config/Config-kernel.in b/config/Config-kernel.in
index 2e59bc9551..f4ea6ccbe8 100644
--- a/config/Config-kernel.in
+++ b/config/Config-kernel.in
@@ -50,6 +50,15 @@ config KERNEL_ARM_PMU
 	default y if TARGET_armsr_armv8
 	depends on (arm || aarch64)
 
+config KERNEL_RISCV_PMU
+	bool
+	select KERNEL_RISCV_PMU_SBI
+	depends on riscv64
+
+config KERNEL_RISCV_PMU_SBI
+	bool
+	depends on riscv64
+
 config KERNEL_X86_VSYSCALL_EMULATION
 	bool "Enable vsyscall emulation"
 	depends on x86_64
@@ -70,6 +79,7 @@ config KERNEL_X86_VSYSCALL_EMULATION
 config KERNEL_PERF_EVENTS
 	bool "Compile the kernel with performance events and counters"
 	select KERNEL_ARM_PMU if (arm || aarch64)
+	select KERNEL_RISCV_PMU if riscv64
 
 config KERNEL_PROFILING
 	bool "Compile the kernel with profiling enabled"
diff --git a/target/linux/generic/config-6.1 b/target/linux/generic/config-6.1
index fa82f9cb9a..5bac0ee57a 100644
--- a/target/linux/generic/config-6.1
+++ b/target/linux/generic/config-6.1
@@ -5304,6 +5304,9 @@ CONFIG_RFKILL=y
 # CONFIG_RING_BUFFER_BENCHMARK is not set
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
 # CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set
+# CONFIG_RISCV_PMU is not set
+# CONFIG_RISCV_PMU_LEGACY is not set
+# CONFIG_RISCV_PMU_SBI is not set
 # CONFIG_RMI4_CORE is not set
 # CONFIG_RMNET is not set
 # CONFIG_ROCKCHIP_PHY is not set
diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index d012750ba1..4e26f2af9b 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -5426,6 +5426,9 @@ CONFIG_RFKILL=y
 # CONFIG_RING_BUFFER_BENCHMARK is not set
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
 # CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set
+# CONFIG_RISCV_PMU is not set
+# CONFIG_RISCV_PMU_LEGACY is not set
+# CONFIG_RISCV_PMU_SBI is not set
 # CONFIG_RMI4_CORE is not set
 # CONFIG_RMNET is not set
 # CONFIG_ROCKCHIP_ERRATUM_3588001 is not set



From lede-commits at lists.infradead.org  Sat Mar 23 10:35:19 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 13:35:19 -0400
Subject: [openwrt/openwrt]  kernel: fix iptables offload build without
 nftables
In-Reply-To: <171121531894.3176804.12224860881099026402@git-01.infra.openwrt.org>
References: <171121531894.3176804.12224860881099026402@git-01.infra.openwrt.org>
Message-ID: <mailman.18899.1711215331.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/27ce04a94867e870ffa1c753e531571054f2358f

commit 27ce04a94867e870ffa1c753e531571054f2358f
Author: Qingfang Deng <dqfext at gmail.com>
AuthorDate: Tue Mar 12 10:05:13 2024 +0800

    kernel: fix iptables offload build without nftables
    
    When rebasing patches on top of 6.1, a change that removed NF_TABLES
    from NF_FLOW_TABLE's dependency was dropped accidentally, and iptables
    flow offload module can only be built when nftables is selected.
    Restore the change to fix it.
    
    Fixes: 19a246bb6503 ("generic: 6.1: manually refresh hack patches")
    Signed-off-by: Qingfang Deng <dqfext at gmail.com>
---
 .../hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch     | 10 +++++++++-
 .../hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch     | 10 +++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index 1dfd556ce8..6fdfc79207 100644
--- a/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-6.1/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -8,7 +8,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -1023,6 +1023,15 @@ config NETFILTER_XT_TARGET_NOTRACK
+@@ -726,7 +726,6 @@ config NF_FLOW_TABLE
+ 	tristate "Netfilter flow table module"
+ 	depends on NETFILTER_INGRESS
+ 	depends on NF_CONNTRACK
+-	depends on NF_TABLES
+ 	help
+ 	  This option adds the flow table core infrastructure.
+ 
+@@ -1023,6 +1022,15 @@ config NETFILTER_XT_TARGET_NOTRACK
  	depends on NETFILTER_ADVANCED
  	select NETFILTER_XT_TARGET_CT
  
diff --git a/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index 1c75a2cf3d..9735983212 100644
--- a/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/target/linux/generic/hack-6.6/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@ -8,7 +8,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -1025,6 +1025,15 @@ config NETFILTER_XT_TARGET_NOTRACK
+@@ -729,7 +729,6 @@ config NF_FLOW_TABLE
+ 	tristate "Netfilter flow table module"
+ 	depends on NETFILTER_INGRESS
+ 	depends on NF_CONNTRACK
+-	depends on NF_TABLES
+ 	help
+ 	  This option adds the flow table core infrastructure.
+ 
+@@ -1025,6 +1024,15 @@ config NETFILTER_XT_TARGET_NOTRACK
  	depends on NETFILTER_ADVANCED
  	select NETFILTER_XT_TARGET_CT
  



From lede-commits at lists.infradead.org  Sat Mar 23 10:36:59 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 13:36:59 -0400
Subject: [openwrt/openwrt]  realtek: support common GPIOs on D-Link
 DGS-1210-16
In-Reply-To: <171121541939.3180584.4121352965711009512@git-01.infra.openwrt.org>
References: <171121541939.3180584.4121352965711009512@git-01.infra.openwrt.org>
Message-ID: <mailman.18900.1711215424.1280.lede-commits@lists.infradead.org>

svanheule pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/92c21b2e18f0c53f45cca9731e131568cddcbbd5

commit 92c21b2e18f0c53f45cca9731e131568cddcbbd5
Author: Richard Kunze <kunze at tivano.de>
AuthorDate: Wed Mar 20 19:26:27 2024 +0100

    realtek: support common GPIOs on D-Link DGS-1210-16
    
    D-Link DGS-1210-16 hangs when rebooting and has no support for the reset
    button.
    
    Fix both by enabling the same GPIOs for reboot and the reset button as
    already used for D-Link DGS-1210-20 and D-Link DGS-1210-28.
    
    Signed-off-by: Richard Kunze <kunze at tivano.de>
---
 target/linux/realtek/dts-5.15/rtl8382_d-link_dgs-1210-16.dts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/realtek/dts-5.15/rtl8382_d-link_dgs-1210-16.dts b/target/linux/realtek/dts-5.15/rtl8382_d-link_dgs-1210-16.dts
index 35f41b9e4d..c9a79fb607 100644
--- a/target/linux/realtek/dts-5.15/rtl8382_d-link_dgs-1210-16.dts
+++ b/target/linux/realtek/dts-5.15/rtl8382_d-link_dgs-1210-16.dts
@@ -2,6 +2,7 @@
 
 #include "rtl838x.dtsi"
 #include "rtl83xx_d-link_dgs-1210_common.dtsi"
+#include "rtl83xx_d-link_dgs-1210_gpio.dtsi"
 
 / {
 	compatible = "d-link,dgs-1210-16", "realtek,rtl838x-soc";



From lede-commits at lists.infradead.org  Sat Mar 23 11:36:55 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 14:36:55 -0400
Subject: [openwrt/openwrt]  libiwinfo: update to Git HEAD (2024-03-23)
In-Reply-To: <171121901576.3310922.15241953980789599448@git-01.infra.openwrt.org>
References: <171121901576.3310922.15241953980789599448@git-01.infra.openwrt.org>
Message-ID: <mailman.18906.1711219022.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a693291ca9da031e168d802a5570c1a4bdfe0658

commit a693291ca9da031e168d802a5570c1a4bdfe0658
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sat Mar 23 19:34:22 2024 +0100

    libiwinfo: update to Git HEAD (2024-03-23)
    
    3aa2b6b devices: add device id for MediaTek MT7601U
    79a9615 devices: add device id for Realtek RTL8188CU and RTL8188FTV
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/network/utils/iwinfo/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/network/utils/iwinfo/Makefile b/package/network/utils/iwinfo/Makefile
index 0a8320c0d4..5b5d1b573f 100644
--- a/package/network/utils/iwinfo/Makefile
+++ b/package/network/utils/iwinfo/Makefile
@@ -11,9 +11,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/iwinfo.git
-PKG_SOURCE_DATE:=2024-03-08
-PKG_SOURCE_VERSION:=8ffb8bfd1115ae95265aa52590aa948aba7672e4
-PKG_MIRROR_HASH:=846d4ac22832e507e5a96e07332324e30cd39289743d18e9ec0d418009f3ba37
+PKG_SOURCE_DATE:=2024-03-23
+PKG_SOURCE_VERSION:=79a96150647110fb03852bc321bd37159d63ae1a
+PKG_MIRROR_HASH:=684ef80f1b85e054016709fc1d90160bd2191e76309831818ace1d4c5ec0f37e
 PKG_MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
 PKG_LICENSE:=GPL-2.0
 



From lede-commits at lists.infradead.org  Sat Mar 23 12:03:08 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 15:03:08 -0400
Subject: [openwrt/openwrt]  treewide: disable spectre mitigation on unaffected
 Arm32 targets
In-Reply-To: <171122058849.3374735.1149583354123632926@git-01.infra.openwrt.org>
References: <171122058849.3374735.1149583354123632926@git-01.infra.openwrt.org>
Message-ID: <mailman.18907.1711220593.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/54f9744c820a6090e0c06574684c33e3e611939d

commit 54f9744c820a6090e0c06574684c33e3e611939d
Author: Qingfang Deng <dqfext at gmail.com>
AuthorDate: Mon Feb 26 16:38:52 2024 +0800

    treewide: disable spectre mitigation on unaffected Arm32 targets
    
    Cortex-A5 and Cortex-A7 are not vulnerable to any Spectre variants.
    
    Ref: https://developer.arm.com/Arm%20Security%20Center/Speculative%20Processor%20Vulnerability
    Signed-off-by: Qingfang Deng <dqfext at gmail.com>
---
 target/linux/airoha/config-5.15          | 3 ++-
 target/linux/airoha/config-6.1           | 3 ++-
 target/linux/at91/sama5/config-5.15      | 3 ++-
 target/linux/at91/sama7/config-5.15      | 3 ++-
 target/linux/bcm27xx/bcm2709/config-6.1  | 3 ++-
 target/linux/imx/cortexa7/config-default | 2 ++
 target/linux/ipq40xx/config-6.1          | 3 ++-
 target/linux/layerscape/armv7/config-6.1 | 3 ++-
 target/linux/mediatek/mt7623/config-6.1  | 3 ++-
 target/linux/mediatek/mt7623/config-6.6  | 2 ++
 target/linux/mediatek/mt7629/config-6.1  | 3 ++-
 target/linux/mediatek/mt7629/config-6.6  | 2 ++
 target/linux/sunxi/cortexa7/config-6.1   | 2 ++
 13 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/target/linux/airoha/config-5.15 b/target/linux/airoha/config-5.15
index ae6c1d5089..259ab03521 100644
--- a/target/linux/airoha/config-5.15
+++ b/target/linux/airoha/config-5.15
@@ -122,7 +122,8 @@ CONFIG_GPIO_CDEV=y
 CONFIG_GPIO_EN7523=y
 CONFIG_GPIO_GENERIC=y
 CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/airoha/config-6.1 b/target/linux/airoha/config-6.1
index 3402d779b2..e609c29db2 100644
--- a/target/linux/airoha/config-6.1
+++ b/target/linux/airoha/config-6.1
@@ -133,7 +133,8 @@ CONFIG_GPIOLIB_IRQCHIP=y
 CONFIG_GPIO_CDEV=y
 CONFIG_GPIO_EN7523=y
 CONFIG_GPIO_GENERIC=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/at91/sama5/config-5.15 b/target/linux/at91/sama5/config-5.15
index 3e51deb98e..47596039c8 100644
--- a/target/linux/at91/sama5/config-5.15
+++ b/target/linux/at91/sama5/config-5.15
@@ -192,7 +192,8 @@ CONFIG_GLOB=y
 CONFIG_GPIOLIB_IRQCHIP=y
 CONFIG_GPIO_CDEV=y
 CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/at91/sama7/config-5.15 b/target/linux/at91/sama7/config-5.15
index 150059bf50..228007b8c3 100644
--- a/target/linux/at91/sama7/config-5.15
+++ b/target/linux/at91/sama7/config-5.15
@@ -181,7 +181,8 @@ CONFIG_GPIOLIB_IRQCHIP=y
 CONFIG_GPIO_CDEV=y
 CONFIG_GRACE_PERIOD=y
 CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/bcm27xx/bcm2709/config-6.1 b/target/linux/bcm27xx/bcm2709/config-6.1
index 4d307add54..58d695cff3 100644
--- a/target/linux/bcm27xx/bcm2709/config-6.1
+++ b/target/linux/bcm27xx/bcm2709/config-6.1
@@ -241,7 +241,8 @@ CONFIG_GPIO_BCM_VIRT=y
 CONFIG_GPIO_CDEV=y
 # CONFIG_GPIO_FSM is not set
 CONFIG_GPIO_RASPBERRYPI_EXP=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/imx/cortexa7/config-default b/target/linux/imx/cortexa7/config-default
index 10f23be435..9fd67a79bb 100644
--- a/target/linux/imx/cortexa7/config-default
+++ b/target/linux/imx/cortexa7/config-default
@@ -53,6 +53,8 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
 CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HDMI=y
 CONFIG_HW_CONSOLE=y
 CONFIG_HW_RANDOM_IMX_RNGC=y
diff --git a/target/linux/ipq40xx/config-6.1 b/target/linux/ipq40xx/config-6.1
index f14dd0a474..866d49c66f 100644
--- a/target/linux/ipq40xx/config-6.1
+++ b/target/linux/ipq40xx/config-6.1
@@ -199,7 +199,8 @@ CONFIG_GPIO_CDEV=y
 CONFIG_GPIO_WATCHDOG=y
 CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y
 CONFIG_GRO_CELLS=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/layerscape/armv7/config-6.1 b/target/linux/layerscape/armv7/config-6.1
index d60e5824db..a4744623e4 100644
--- a/target/linux/layerscape/armv7/config-6.1
+++ b/target/linux/layerscape/armv7/config-6.1
@@ -274,7 +274,8 @@ CONFIG_GPIO_GENERIC_PLATFORM=y
 CONFIG_GPIO_MPC8XXX=y
 CONFIG_GPIO_MXC=y
 CONFIG_GPIO_VF610=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/mediatek/mt7623/config-6.1 b/target/linux/mediatek/mt7623/config-6.1
index a083809e34..3f7c1bee16 100644
--- a/target/linux/mediatek/mt7623/config-6.1
+++ b/target/linux/mediatek/mt7623/config-6.1
@@ -262,7 +262,8 @@ CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_VDSO_32=y
 CONFIG_GPIO_CDEV=y
 CONFIG_GRO_CELLS=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/mediatek/mt7623/config-6.6 b/target/linux/mediatek/mt7623/config-6.6
index fad11c8ae8..6e9948c516 100644
--- a/target/linux/mediatek/mt7623/config-6.6
+++ b/target/linux/mediatek/mt7623/config-6.6
@@ -270,6 +270,8 @@ CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_VDSO_32=y
 CONFIG_GPIO_CDEV=y
 CONFIG_GRO_CELLS=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDEN_BRANCH_PREDICTOR=y
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
diff --git a/target/linux/mediatek/mt7629/config-6.1 b/target/linux/mediatek/mt7629/config-6.1
index d8dc50a67a..91d54d595e 100644
--- a/target/linux/mediatek/mt7629/config-6.1
+++ b/target/linux/mediatek/mt7629/config-6.1
@@ -146,7 +146,8 @@ CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_VDSO_32=y
 CONFIG_GPIO_CDEV=y
 CONFIG_GRO_CELLS=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
diff --git a/target/linux/mediatek/mt7629/config-6.6 b/target/linux/mediatek/mt7629/config-6.6
index 31d7401619..3274864ac2 100644
--- a/target/linux/mediatek/mt7629/config-6.6
+++ b/target/linux/mediatek/mt7629/config-6.6
@@ -145,6 +145,8 @@ CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_VDSO_32=y
 CONFIG_GPIO_CDEV=y
 CONFIG_GRO_CELLS=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 CONFIG_HARDEN_BRANCH_PREDICTOR=y
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_HAS_DMA=y
diff --git a/target/linux/sunxi/cortexa7/config-6.1 b/target/linux/sunxi/cortexa7/config-6.1
index e911da4c3d..eaa6b037be 100644
--- a/target/linux/sunxi/cortexa7/config-6.1
+++ b/target/linux/sunxi/cortexa7/config-6.1
@@ -4,6 +4,8 @@ CONFIG_CRYPTO_BLAKE2S_ARM=y
 CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
 CONFIG_DWMAC_SUN8I=y
 CONFIG_GRO_CELLS=y
+# CONFIG_HARDEN_BRANCH_HISTORY is not set
+# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
 # CONFIG_MACH_SUN4I is not set
 # CONFIG_MACH_SUN5I is not set
 CONFIG_MDIO_BUS_MUX=y



From lede-commits at lists.infradead.org  Sat Mar 23 12:03:09 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 15:03:09 -0400
Subject: [openwrt/openwrt]  treewide: disable spectre mitigation on unaffected
 Arm64 targets
In-Reply-To: <171122058849.3374735.1149583354123632926@git-01.infra.openwrt.org>
References: <171122058849.3374735.1149583354123632926@git-01.infra.openwrt.org>
Message-ID: <mailman.18908.1711220593.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6b007d2512ad02d08f7e9fc7ad74801ce1330924

commit 6b007d2512ad02d08f7e9fc7ad74801ce1330924
Author: Qingfang Deng <dqfext at gmail.com>
AuthorDate: Mon Feb 26 16:38:53 2024 +0800

    treewide: disable spectre mitigation on unaffected Arm64 targets
    
    Cortex-A53 is not vulnerable to any Spectre variants.
    
    Ref: https://developer.arm.com/Arm%20Security%20Center/Speculative%20Processor%20Vulnerability
    Signed-off-by: Qingfang Deng <dqfext at gmail.com>
---
 target/linux/bcm27xx/bcm2710/config-6.1  | 1 +
 target/linux/bcm4908/config-5.15         | 1 +
 target/linux/bcm4908/config-6.1          | 1 +
 target/linux/mediatek/filogic/config-6.1 | 1 +
 target/linux/mediatek/filogic/config-6.6 | 1 +
 target/linux/mediatek/mt7622/config-6.1  | 1 +
 target/linux/mediatek/mt7622/config-6.6  | 1 +
 target/linux/mvebu/cortexa53/config-6.1  | 1 +
 target/linux/qualcommax/config-6.1       | 1 +
 target/linux/qualcommax/config-6.6       | 1 +
 target/linux/sunxi/cortexa53/config-6.1  | 1 +
 11 files changed, 11 insertions(+)

diff --git a/target/linux/bcm27xx/bcm2710/config-6.1 b/target/linux/bcm27xx/bcm2710/config-6.1
index f29d8483f8..e5b357f2fa 100644
--- a/target/linux/bcm27xx/bcm2710/config-6.1
+++ b/target/linux/bcm27xx/bcm2710/config-6.1
@@ -303,6 +303,7 @@ CONFIG_MFD_CORE=y
 CONFIG_MFD_SYSCON=y
 CONFIG_MICROCHIP_PHY=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MMC=y
 # CONFIG_MMC_BCM2835 is not set
 CONFIG_MMC_BCM2835_DMA=y
diff --git a/target/linux/bcm4908/config-5.15 b/target/linux/bcm4908/config-5.15
index 892985f7f4..b1594ea8d8 100644
--- a/target/linux/bcm4908/config-5.15
+++ b/target/linux/bcm4908/config-5.15
@@ -135,6 +135,7 @@ CONFIG_MDIO_DEVRES=y
 CONFIG_MEMFD_CREATE=y
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_MTD_BRCM_U_BOOT=y
 CONFIG_MTD_CMDLINE_PARTS=y
diff --git a/target/linux/bcm4908/config-6.1 b/target/linux/bcm4908/config-6.1
index 8311277237..086d387bc7 100644
--- a/target/linux/bcm4908/config-6.1
+++ b/target/linux/bcm4908/config-6.1
@@ -136,6 +136,7 @@ CONFIG_MDIO_DEVRES=y
 CONFIG_MEMFD_CREATE=y
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_MTD_BRCM_U_BOOT=y
 CONFIG_MTD_CMDLINE_PARTS=y
diff --git a/target/linux/mediatek/filogic/config-6.1 b/target/linux/mediatek/filogic/config-6.1
index 34aa2e76b6..276c6fe6c4 100644
--- a/target/linux/mediatek/filogic/config-6.1
+++ b/target/linux/mediatek/filogic/config-6.1
@@ -232,6 +232,7 @@ CONFIG_MEMFD_CREATE=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MMC=y
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_CQHCI=y
diff --git a/target/linux/mediatek/filogic/config-6.6 b/target/linux/mediatek/filogic/config-6.6
index 704c32be8a..e6c2d18c73 100644
--- a/target/linux/mediatek/filogic/config-6.6
+++ b/target/linux/mediatek/filogic/config-6.6
@@ -245,6 +245,7 @@ CONFIG_MEDIATEK_WATCHDOG=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MMC=y
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_CQHCI=y
diff --git a/target/linux/mediatek/mt7622/config-6.1 b/target/linux/mediatek/mt7622/config-6.1
index 84af474e52..f10f1f7204 100644
--- a/target/linux/mediatek/mt7622/config-6.1
+++ b/target/linux/mediatek/mt7622/config-6.1
@@ -234,6 +234,7 @@ CONFIG_MEMFD_CREATE=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MMC=y
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_CQHCI=y
diff --git a/target/linux/mediatek/mt7622/config-6.6 b/target/linux/mediatek/mt7622/config-6.6
index 8eb7158914..0dc30969b0 100644
--- a/target/linux/mediatek/mt7622/config-6.6
+++ b/target/linux/mediatek/mt7622/config-6.6
@@ -248,6 +248,7 @@ CONFIG_MEDIATEK_WATCHDOG=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MMC=y
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_CQHCI=y
diff --git a/target/linux/mvebu/cortexa53/config-6.1 b/target/linux/mvebu/cortexa53/config-6.1
index 3534537b54..d8dd985365 100644
--- a/target/linux/mvebu/cortexa53/config-6.1
+++ b/target/linux/mvebu/cortexa53/config-6.1
@@ -52,6 +52,7 @@ CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
 CONFIG_MAILBOX=y
 # CONFIG_MAILBOX_TEST is not set
 CONFIG_MFD_SYSCON=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MMC_SDHCI_XENON=y
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_MVEBU_GICP=y
diff --git a/target/linux/qualcommax/config-6.1 b/target/linux/qualcommax/config-6.1
index acfdc99b22..55f6a2ba4f 100644
--- a/target/linux/qualcommax/config-6.1
+++ b/target/linux/qualcommax/config-6.1
@@ -227,6 +227,7 @@ CONFIG_MEMFD_CREATE=y
 # CONFIG_MFD_QCOM_RPM is not set
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MMC=y
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_BLOCK_MINORS=32
diff --git a/target/linux/qualcommax/config-6.6 b/target/linux/qualcommax/config-6.6
index f9ab275fb3..71b54041c5 100644
--- a/target/linux/qualcommax/config-6.6
+++ b/target/linux/qualcommax/config-6.6
@@ -230,6 +230,7 @@ CONFIG_MDIO_IPQ4019=y
 # CONFIG_MFD_QCOM_RPM is not set
 CONFIG_MFD_SYSCON=y
 CONFIG_MIGRATION=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MMC=y
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_BLOCK_MINORS=32
diff --git a/target/linux/sunxi/cortexa53/config-6.1 b/target/linux/sunxi/cortexa53/config-6.1
index f57c664540..5331352386 100644
--- a/target/linux/sunxi/cortexa53/config-6.1
+++ b/target/linux/sunxi/cortexa53/config-6.1
@@ -52,6 +52,7 @@ CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
 CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
 CONFIG_MDIO_BUS_MUX=y
 CONFIG_MICREL_PHY=y
+# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_MUSB_PIO_ONLY=y
 CONFIG_NEED_SG_DMA_LENGTH=y



From lede-commits at lists.infradead.org  Sat Mar 23 14:01:08 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 17:01:08 -0400
Subject: [openwrt/openwrt]  uml: restore 6.1 config + patches
In-Reply-To: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
References: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
Message-ID: <mailman.18913.1711227672.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2597dce5f787277a1b9832826331f1d31fe07556

commit 2597dce5f787277a1b9832826331f1d31fe07556
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Sat Mar 23 20:35:28 2024 +0100

    uml: restore 6.1 config + patches
    
    keep the main 6.1 files around until they too will be deleted.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 target/linux/uml/config-6.1                        | 150 +++++++++++++++
 .../linux/uml/patches-6.1/101-mconsole-exec.patch  | 213 +++++++++++++++++++++
 .../uml/patches-6.1/102-pseudo-random-mac.patch    | 151 +++++++++++++++
 3 files changed, 514 insertions(+)

diff --git a/target/linux/uml/config-6.1 b/target/linux/uml/config-6.1
new file mode 100644
index 0000000000..da4eaac3ac
--- /dev/null
+++ b/target/linux/uml/config-6.1
@@ -0,0 +1,150 @@
+CONFIG_3_LEVEL_PGTABLES=y
+CONFIG_64BIT=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_EPHEMERAL_INODES=y
+CONFIG_ARCH_NO_PREEMPT=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_BLK_DEV_COW_COMMON=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_UBD=y
+CONFIG_BLK_DEV_UBD_SYNC=y
+CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_CDROM=y
+# CONFIG_COMMON_CLK is not set
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+# CONFIG_COMPAT_32BIT_TIME is not set
+CONFIG_CON_CHAN="xterm"
+CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR=y
+CONFIG_CPU_SUP_HYGON=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_ZHAOXIN=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_UTILS=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DNOTIFY=y
+# CONFIG_EARLY_PRINTK is not set
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+CONFIG_EXT4_FS=y
+CONFIG_F2FS_FS=y
+CONFIG_FAILOVER=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+# CONFIG_GENERIC_CPU is not set
+CONFIG_GENERIC_CPU_DEVICES=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GPIO_CDEV=y
+CONFIG_HOSTFS=y
+CONFIG_HVC_DRIVER=y
+CONFIG_HW_RANDOM=y
+CONFIG_HZ_PERIODIC=y
+CONFIG_IA32_FEAT_CTL=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_INIT_ENV_ARG_LIMIT=128
+CONFIG_IRQ_WORK=y
+CONFIG_ISO9660_FS=y
+CONFIG_JBD2=y
+# CONFIG_JFFS2_FS is not set
+CONFIG_KALLSYMS=y
+CONFIG_KERNEL_STACK_ORDER=2
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_MATOM is not set
+CONFIG_MAY_HAVE_RUNTIME_DEPS=y
+CONFIG_MCONSOLE=y
+# CONFIG_MCORE2 is not set
+CONFIG_MEMFD_CREATE=y
+CONFIG_MIGRATION=y
+CONFIG_MK8=y
+# CONFIG_MMAPPER is not set
+CONFIG_MODULES_USE_ELF_RELA=y
+# CONFIG_MPSC is not set
+CONFIG_NAMESPACES=y
+CONFIG_NEED_PER_CPU_KM=y
+CONFIG_NET_FAILOVER=y
+# CONFIG_NET_NS is not set
+CONFIG_NLS=y
+CONFIG_NO_DMA=y
+CONFIG_NO_IOMEM=y
+CONFIG_NO_IOPORT_MAP=y
+CONFIG_NR_CPUS=1
+CONFIG_NULL_CHAN=y
+# CONFIG_OF is not set
+CONFIG_PGTABLE_LEVELS=3
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_PORT_CHAN=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_PREEMPT_NONE_BUILD=y
+# CONFIG_PROCESSOR_SELECT is not set
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PTY_CHAN=y
+CONFIG_RANDSTRUCT_NONE=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_GZIP=y
+CONFIG_RELAY=y
+CONFIG_SG_POOL=y
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_SRCU=y
+CONFIG_SSL=y
+CONFIG_SSL_CHAN="pty"
+CONFIG_STACKTRACE=y
+CONFIG_STDERR_CONSOLE=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TINY_SRCU=y
+CONFIG_TTY_CHAN=y
+CONFIG_UML=y
+CONFIG_UML_NET=y
+CONFIG_UML_NET_DAEMON=y
+CONFIG_UML_NET_DAEMON_DEFAULT_SOCK="/tmp/uml.ctl"
+CONFIG_UML_NET_DETERMINISTIC_MAC=y
+CONFIG_UML_NET_ETHERTAP=y
+CONFIG_UML_NET_MCAST=y
+# CONFIG_UML_NET_PCAP is not set
+CONFIG_UML_NET_SLIP=y
+CONFIG_UML_NET_SLIRP=y
+CONFIG_UML_NET_TUNTAP=y
+# CONFIG_UML_NET_VDE is not set
+CONFIG_UML_NET_VECTOR=y
+# CONFIG_UML_PCI_OVER_VIRTIO is not set
+CONFIG_UML_RANDOM=y
+# CONFIG_UML_SOUND is not set
+CONFIG_UML_TIME_TRAVEL_SUPPORT=y
+# CONFIG_UML_WATCHDOG is not set
+CONFIG_UML_X86=y
+# CONFIG_USER_NS is not set
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_ANCHOR=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_VIRTIO_NET=y
+CONFIG_VIRTIO_UML=y
+CONFIG_VMAP_STACK=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_X86_64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_TSC=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_XTERM_CHAN=y
+CONFIG_XTERM_CHAN_DEFAULT_EMULATOR="xterm"
+CONFIG_ZLIB_INFLATE=y
diff --git a/target/linux/uml/patches-6.1/101-mconsole-exec.patch b/target/linux/uml/patches-6.1/101-mconsole-exec.patch
new file mode 100644
index 0000000000..2ff9701eb9
--- /dev/null
+++ b/target/linux/uml/patches-6.1/101-mconsole-exec.patch
@@ -0,0 +1,213 @@
+#
+# Minimalist mconsole exec patch 
+#
+# 3.10 version (with bit more synchronous behavior) by fingon at iki dot fi
+# Adaptation to kernel 3.3.8 made by David Fern?ndez (david at dit.upm.es) for 
+# Starting point: mconsole-exec-2.6.30.patch for kernel 2.6.30
+# Author of original patch: Paolo Giarrusso, aka Blaisorblade 
+#                           (http://www.user-mode-linux.org/~blaisorblade)
+#
+# Known misfeatures:
+#
+# - If output is too long, blocks (and breaks horribly) 
+# (this misfeature from 3.10 patches, when minimalizing the patch;
+#  workaround: redirect to a shared filesystem if long output is expected)
+#
+# - Nothing useful is done with stdin
+#
+--- a/arch/um/drivers/mconsole.h
++++ b/arch/um/drivers/mconsole.h
+@@ -85,6 +85,7 @@ extern void mconsole_cad(struct mc_reque
+ extern void mconsole_stop(struct mc_request *req);
+ extern void mconsole_go(struct mc_request *req);
+ extern void mconsole_log(struct mc_request *req);
++extern void mconsole_exec(struct mc_request *req);
+ extern void mconsole_proc(struct mc_request *req);
+ extern void mconsole_stack(struct mc_request *req);
+ 
+--- a/arch/um/drivers/mconsole_kern.c
++++ b/arch/um/drivers/mconsole_kern.c
+@@ -4,6 +4,7 @@
+  * Copyright (C) 2001 - 2008 Jeff Dike (jdike@{addtoit,linux.intel}.com)
+  */
+ 
++#include <linux/kmod.h>
+ #include <linux/console.h>
+ #include <linux/ctype.h>
+ #include <linux/string.h>
+@@ -27,6 +28,7 @@
+ #include <linux/mount.h>
+ #include <linux/file.h>
+ #include <linux/uaccess.h>
++#include <linux/completion.h>
+ #include <asm/switch_to.h>
+ 
+ #include <init.h>
+@@ -124,6 +126,59 @@ void mconsole_log(struct mc_request *req
+ 	mconsole_reply(req, "", 0, 0);
+ }
+ 
++void mconsole_exec(struct mc_request *req)
++{
++  struct subprocess_info *sub_info;
++  int res, len;
++  struct file *out;
++  char buf[MCONSOLE_MAX_DATA];
++
++  char *envp[] = {
++    "HOME=/", "TERM=linux",
++    "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin",
++    NULL
++  };
++  char *argv[] = {
++    "/bin/sh", "-c",
++    req->request.data + strlen("exec "),
++    NULL
++  };
++
++  sub_info = call_usermodehelper_setup("/bin/sh", argv, envp, GFP_ATOMIC, NULL, NULL, NULL);
++  if (sub_info == NULL) {
++    mconsole_reply(req, "call_usermodehelper_setup failed", 1, 0);
++    return;
++  }
++  res = call_usermodehelper_stdoutpipe(sub_info, &out);
++  if (res < 0) {
++    kfree(sub_info);
++    mconsole_reply(req, "call_usermodehelper_stdoutpipe failed", 1, 0);
++    return;
++  }
++
++  res = call_usermodehelper_exec(sub_info, UMH_WAIT_PROC);
++  if (res < 0) {
++    kfree(sub_info);
++    mconsole_reply(req, "call_usermodehelper_exec failed", 1, 0);
++    return;
++  }
++
++  for (;;) {
++    len = out->f_op->read(out, buf, sizeof(buf), &out->f_pos);
++    if (len < 0) {
++      mconsole_reply(req, "reading output failed", 1, 0);
++      break;
++    }
++    if (len == 0)
++      break;
++    mconsole_reply_len(req, buf, len, 0, 1);
++  }
++  fput(out);
++
++  mconsole_reply_len(req, NULL, 0, 0, 0);
++}
++
++
+ void mconsole_proc(struct mc_request *req)
+ {
+ 	struct vfsmount *mnt = proc_mnt;
+@@ -190,6 +245,7 @@ void mconsole_proc(struct mc_request *re
+     stop - pause the UML; it will do nothing until it receives a 'go' \n\
+     go - continue the UML after a 'stop' \n\
+     log <string> - make UML enter <string> into the kernel log\n\
++    exec <string> - pass <string> to /bin/sh -c synchronously\n\
+     proc <file> - returns the contents of the UML's /proc/<file>\n\
+     stack <pid> - returns the stack of the specified pid\n\
+ "
+--- a/arch/um/drivers/mconsole_user.c
++++ b/arch/um/drivers/mconsole_user.c
+@@ -30,6 +30,7 @@ static struct mconsole_command commands[
+ 	{ "stop", mconsole_stop, MCONSOLE_PROC },
+ 	{ "go", mconsole_go, MCONSOLE_INTR },
+ 	{ "log", mconsole_log, MCONSOLE_INTR },
++	{ "exec", mconsole_exec, MCONSOLE_PROC },
+ 	{ "proc", mconsole_proc, MCONSOLE_PROC },
+ 	{ "stack", mconsole_stack, MCONSOLE_INTR },
+ };
+--- a/arch/um/os-Linux/file.c
++++ b/arch/um/os-Linux/file.c
+@@ -560,6 +560,8 @@ int os_create_unix_socket(const char *fi
+ 
+ 	addr.sun_family = AF_UNIX;
+ 
++	if (len > sizeof(addr.sun_path))
++		len = sizeof(addr.sun_path);
+ 	snprintf(addr.sun_path, len, "%s", file);
+ 
+ 	err = bind(sock, (struct sockaddr *) &addr, sizeof(addr));
+--- a/include/linux/kmod.h
++++ b/include/linux/kmod.h
+@@ -32,4 +32,6 @@ static inline int request_module_nowait(
+ #define try_then_request_module(x, mod...) (x)
+ #endif
+ 
++int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info, struct file **filp);
++
+ #endif /* __LINUX_KMOD_H__ */
+--- a/include/linux/umh.h
++++ b/include/linux/umh.h
+@@ -23,6 +23,7 @@ struct subprocess_info {
+ 	const char *path;
+ 	char **argv;
+ 	char **envp;
++	struct file *stdout;
+ 	int wait;
+ 	int retval;
+ 	int (*init)(struct subprocess_info *info, struct cred *new);
+--- a/kernel/umh.c
++++ b/kernel/umh.c
+@@ -29,6 +29,7 @@
+ #include <linux/uaccess.h>
+ #include <linux/initrd.h>
+ #include <linux/freezer.h>
++#include <linux/pipe_fs_i.h>
+ 
+ #include <trace/events/module.h>
+ 
+@@ -74,6 +75,28 @@ static int call_usermodehelper_exec_asyn
+ 	flush_signal_handlers(current, 1);
+ 	spin_unlock_irq(&current->sighand->siglock);
+ 
++	/* Install output when needed */
++	if (sub_info->stdout) {
++		struct files_struct *f = current->files;
++		struct fdtable *fdt;
++
++		sys_close(1);
++		sys_close(2);
++		get_file(sub_info->stdout);
++		fd_install(1, sub_info->stdout);
++		fd_install(2, sub_info->stdout);
++		spin_lock(&f->file_lock);
++		fdt = files_fdtable(f);
++		__set_bit(1, fdt->open_fds);
++		__clear_bit(1, fdt->close_on_exec);
++		__set_bit(2, fdt->open_fds);
++		__clear_bit(2, fdt->close_on_exec);
++		spin_unlock(&f->file_lock);
++
++		/* disallow core files */
++		current->signal->rlim[RLIMIT_CORE] = (struct rlimit){0, 0};
++	}
++
+ 	/*
+ 	 * Initial kernel threads share ther FS with init, in order to
+ 	 * get the init root directory. But we've now created a new
+@@ -333,6 +356,20 @@ static void helper_unlock(void)
+ 		wake_up(&running_helpers_waitq);
+ }
+ 
++int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info,
++					struct file **filp)
++{
++	struct file *f[2];
++
++	if (create_pipe_files(f, 0) < 0)
++		 return PTR_ERR(f);
++
++	sub_info->stdout = f[1];
++	*filp = f[0];
++	return 0;
++}
++EXPORT_SYMBOL(call_usermodehelper_stdoutpipe);
++
+ /**
+  * call_usermodehelper_setup - prepare to call a usermode helper
+  * @path: path to usermode executable
diff --git a/target/linux/uml/patches-6.1/102-pseudo-random-mac.patch b/target/linux/uml/patches-6.1/102-pseudo-random-mac.patch
new file mode 100644
index 0000000000..d2dc7516e6
--- /dev/null
+++ b/target/linux/uml/patches-6.1/102-pseudo-random-mac.patch
@@ -0,0 +1,151 @@
+===============================================================================
+
+This patch makes MAC addresses of network interfaces predictable. In
+particular, it adds a small routine that computes MAC addresses of based on
+a SHA1 hash of the virtual machine name and interface ID.
+
+TECHNICAL INFORMATION:
+
+Applies to vanilla kernel 3.9.4.
+
+===============================================================================
+--- a/arch/um/drivers/Kconfig
++++ b/arch/um/drivers/Kconfig
+@@ -143,6 +143,20 @@ config UML_NET
+ 	  enable at least one of the following transport options to actually
+ 	  make use of UML networking.
+ 
++config UML_NET_DETERMINISTIC_MAC
++	bool "Use deterministic MAC addresses for network interfaces"
++	default y
++	depends on UML_NET
++	select CRYPTO_SHA1
++	help
++        Virtual network devices inside a User-Mode Linux instance must be
++        assigned a MAC (Ethernet) address. If none is specified on the UML
++        command line, one must be automatically computed. If this option is
++        enabled, a randomly generated address is used. Otherwise, if this
++        option is disabled, the address is generated from a SHA1 hash of
++        the umid of the UML instance and the interface name. The latter choice
++        is useful to make MAC addresses predictable.
++
+ config UML_NET_ETHERTAP
+ 	bool "Ethertap transport (obsolete)"
+ 	depends on UML_NET
+--- a/arch/um/drivers/net_kern.c
++++ b/arch/um/drivers/net_kern.c
+@@ -25,6 +25,14 @@
+ #include <net_kern.h>
+ #include <net_user.h>
+ 
++#include <crypto/sha1.h>
++#include <crypto/hash.h>
++#include <linux/string.h>
++#include <linux/crypto.h>
++#include <linux/err.h>
++#include <linux/scatterlist.h>
++#include "os.h"
++
+ #define DRIVER_NAME "uml-netdev"
+ 
+ static DEFINE_SPINLOCK(opened_lock);
+@@ -274,9 +282,55 @@ static const struct ethtool_ops uml_net_
+ 	.get_ts_info	= ethtool_op_get_ts_info,
+ };
+ 
++#ifdef CONFIG_UML_NET_DETERMINISTIC_MAC
++
++/* Compute a SHA1 hash of the UML instance's id and
++ *  * an interface name. */
++static int compute_hash(const char *umid, const char *ifname, char *hash)
++{
++	struct ahash_request *desc = NULL;
++	struct crypto_ahash *tfm = NULL;
++	struct scatterlist sg;
++	char *vmif = NULL;
++	int ret = -ENOMEM;
++
++	vmif = kmalloc(1024, GFP_KERNEL);
++	if (!vmif)
++		goto out;
++
++	strcpy (vmif, umid);
++	strcat (vmif, ifname);
++
++	tfm = crypto_alloc_ahash("sha1", 0, CRYPTO_ALG_ASYNC);
++	if (IS_ERR(tfm))
++		goto out;
++
++	desc = ahash_request_alloc(tfm, GFP_KERNEL);
++	if (!desc)
++		goto out;
++
++	crypto_ahash_clear_flags(tfm, ~0);
++
++	sg_init_table(&sg, 1);
++	sg_set_buf(&sg, vmif, strlen(vmif));
++
++	ahash_request_set_crypt(desc, &sg, hash, strlen(vmif));
++
++	ret = crypto_ahash_digest(desc);
++out:
++	crypto_free_ahash(tfm);
++	ahash_request_free(desc);
++	kfree(vmif);
++
++	return ret;
++}
++
++#endif
++
+ void uml_net_setup_etheraddr(struct net_device *dev, char *str)
+ {
+ 	u8 addr[ETH_ALEN];
++	u8 hash[SHA1_DIGEST_SIZE];
+ 	char *end;
+ 	int i;
+ 
+@@ -320,9 +374,26 @@ void uml_net_setup_etheraddr(struct net_
+ 	return;
+ 
+ random:
++#ifndef CONFIG_UML_NET_DETERMINISTIC_MAC
+ 	printk(KERN_INFO
+ 	       "Choosing a random ethernet address for device %s\n", dev->name);
+ 	eth_hw_addr_random(dev);
++#else
++	printk(KERN_INFO
++	       "Computing a digest to use as ethernet address for device %s\n", dev->name);
++	if (compute_hash(get_umid(), dev->name, hash) < 0) {
++		printk(KERN_WARNING
++		       "Could not compute digest to use as ethernet address for device %s. "
++		       "Using random address instead.\n", dev->name);
++		eth_random_addr(addr);
++	}
++	else {
++		for (i=0; i < 6; i++)
++			addr[i] = (hash[i] + hash[i+6]) % 0x100;
++	}
++	addr [0] &= 0xfe; /* clear multicast bit */
++	addr [0] |= 0x02; /* set local assignment bit (IEEE802) */
++#endif
+ }
+ 
+ static DEFINE_SPINLOCK(devices_lock);
+--- a/kernel/umh.c
++++ b/kernel/umh.c
+@@ -357,12 +357,12 @@ static void helper_unlock(void)
+ }
+ 
+ int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info,
+-					struct file **filp)
++				   struct file **filp)
+ {
+ 	struct file *f[2];
+ 
+ 	if (create_pipe_files(f, 0) < 0)
+-		 return PTR_ERR(f);
++		return PTR_ERR(f);
+ 
+ 	sub_info->stdout = f[1];
+ 	*filp = f[0];



From lede-commits at lists.infradead.org  Sat Mar 23 14:01:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 17:01:07 -0400
Subject: [openwrt/openwrt]  uml: add 6.6 testing kernel config + patches
In-Reply-To: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
References: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
Message-ID: <mailman.18916.1711227672.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/bfd1fd5da35a420b0c63bc6b47237dd092651cd4

commit bfd1fd5da35a420b0c63bc6b47237dd092651cd4
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Sat Mar 23 20:34:40 2024 +0100

    uml: add 6.6 testing kernel config + patches
    
    apart from refreshes to both config and patches, nothing has changed.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 target/linux/uml/Makefile                            |  1 +
 target/linux/uml/{config-6.1 => config-6.6}          | 20 ++++++++++++++------
 .../101-mconsole-exec.patch                          |  4 ++--
 .../102-pseudo-random-mac.patch                      |  2 +-
 4 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/target/linux/uml/Makefile b/target/linux/uml/Makefile
index d9c2b924b5..307687ffda 100644
--- a/target/linux/uml/Makefile
+++ b/target/linux/uml/Makefile
@@ -14,6 +14,7 @@ BOARDNAME:=User Mode Linux
 FEATURES:=audio ext4 rootfs-part squashfs
 
 KERNEL_PATCHVER:=6.1
+KERNEL_TESTING_PATCHVER:=6.6
 
 include $(INCLUDE_DIR)/target.mk
 
diff --git a/target/linux/uml/config-6.1 b/target/linux/uml/config-6.6
similarity index 89%
rename from target/linux/uml/config-6.1
rename to target/linux/uml/config-6.6
index da4eaac3ac..60d1ce0713 100644
--- a/target/linux/uml/config-6.1
+++ b/target/linux/uml/config-6.6
@@ -1,7 +1,6 @@
 CONFIG_3_LEVEL_PGTABLES=y
 CONFIG_64BIT=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_ARCH_EPHEMERAL_INODES=y
 CONFIG_ARCH_NO_PREEMPT=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_BLK_DEV_COW_COMMON=y
@@ -9,6 +8,7 @@ CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_UBD=y
 CONFIG_BLK_DEV_UBD_SYNC=y
 CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_BUFFER_HEAD=y
 CONFIG_CDROM=y
 # CONFIG_COMMON_CLK is not set
 CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
@@ -24,10 +24,10 @@ CONFIG_CRC16=y
 CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_GF128MUL=y
 CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
 CONFIG_CRYPTO_LIB_SHA1=y
 CONFIG_CRYPTO_LIB_UTILS=y
-CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_SHA1=y
 CONFIG_DCACHE_WORD_ACCESS=y
 CONFIG_DECOMPRESS_BZIP2=y
@@ -40,9 +40,9 @@ CONFIG_F2FS_FS=y
 CONFIG_FAILOVER=y
 CONFIG_FS_IOMAP=y
 CONFIG_FS_MBCACHE=y
+CONFIG_FUNCTION_ALIGNMENT=0
 CONFIG_FW_LOADER_PAGED_BUF=y
 CONFIG_FW_LOADER_SYSFS=y
-CONFIG_GCC11_NO_ARRAY_BOUNDS=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 # CONFIG_GENERIC_CPU is not set
 CONFIG_GENERIC_CPU_DEVICES=y
@@ -66,16 +66,19 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y
 CONFIG_MAY_HAVE_RUNTIME_DEPS=y
 CONFIG_MCONSOLE=y
 # CONFIG_MCORE2 is not set
-CONFIG_MEMFD_CREATE=y
 CONFIG_MIGRATION=y
 CONFIG_MK8=y
 # CONFIG_MMAPPER is not set
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
 CONFIG_MODULES_USE_ELF_RELA=y
 # CONFIG_MPSC is not set
 CONFIG_NAMESPACES=y
 CONFIG_NEED_PER_CPU_KM=y
+CONFIG_NET_EGRESS=y
 CONFIG_NET_FAILOVER=y
+CONFIG_NET_INGRESS=y
 # CONFIG_NET_NS is not set
+CONFIG_NET_XGRESS=y
 CONFIG_NLS=y
 CONFIG_NO_DMA=y
 CONFIG_NO_IOMEM=y
@@ -83,6 +86,10 @@ CONFIG_NO_IOPORT_MAP=y
 CONFIG_NR_CPUS=1
 CONFIG_NULL_CHAN=y
 # CONFIG_OF is not set
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
 CONFIG_PGTABLE_LEVELS=3
 CONFIG_PHYS_ADDR_T_64BIT=y
 CONFIG_PORT_CHAN=y
@@ -99,13 +106,14 @@ CONFIG_RD_GZIP=y
 CONFIG_RELAY=y
 CONFIG_SG_POOL=y
 CONFIG_SOFT_WATCHDOG=m
-CONFIG_SRCU=y
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
 CONFIG_SSL=y
 CONFIG_SSL_CHAN="pty"
 CONFIG_STACKTRACE=y
 CONFIG_STDERR_CONSOLE=y
 CONFIG_TICK_CPU_ACCOUNTING=y
 CONFIG_TINY_SRCU=y
+CONFIG_TOOLS_SUPPORT_RELR=y
 CONFIG_TTY_CHAN=y
 CONFIG_UML=y
 CONFIG_UML_NET=y
@@ -122,7 +130,6 @@ CONFIG_UML_NET_TUNTAP=y
 CONFIG_UML_NET_VECTOR=y
 # CONFIG_UML_PCI_OVER_VIRTIO is not set
 CONFIG_UML_RANDOM=y
-# CONFIG_UML_SOUND is not set
 CONFIG_UML_TIME_TRAVEL_SUPPORT=y
 # CONFIG_UML_WATCHDOG is not set
 CONFIG_UML_X86=y
@@ -145,6 +152,7 @@ CONFIG_X86_L1_CACHE_SHIFT=6
 CONFIG_X86_MINIMUM_CPU_FAMILY=64
 CONFIG_X86_TSC=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_X86_VMX_FEATURE_NAMES=y
 CONFIG_XTERM_CHAN=y
 CONFIG_XTERM_CHAN_DEFAULT_EMULATOR="xterm"
 CONFIG_ZLIB_INFLATE=y
diff --git a/target/linux/uml/patches-6.1/101-mconsole-exec.patch b/target/linux/uml/patches-6.6/101-mconsole-exec.patch
similarity index 98%
rename from target/linux/uml/patches-6.1/101-mconsole-exec.patch
rename to target/linux/uml/patches-6.6/101-mconsole-exec.patch
index 2ff9701eb9..0afd777836 100644
--- a/target/linux/uml/patches-6.1/101-mconsole-exec.patch
+++ b/target/linux/uml/patches-6.6/101-mconsole-exec.patch
@@ -161,7 +161,7 @@
  
  #include <trace/events/module.h>
  
-@@ -74,6 +75,28 @@ static int call_usermodehelper_exec_asyn
+@@ -71,6 +72,28 @@ static int call_usermodehelper_exec_asyn
  	flush_signal_handlers(current, 1);
  	spin_unlock_irq(&current->sighand->siglock);
  
@@ -190,7 +190,7 @@
  	/*
  	 * Initial kernel threads share ther FS with init, in order to
  	 * get the init root directory. But we've now created a new
-@@ -333,6 +356,20 @@ static void helper_unlock(void)
+@@ -330,6 +353,20 @@ static void helper_unlock(void)
  		wake_up(&running_helpers_waitq);
  }
  
diff --git a/target/linux/uml/patches-6.1/102-pseudo-random-mac.patch b/target/linux/uml/patches-6.6/102-pseudo-random-mac.patch
similarity index 98%
rename from target/linux/uml/patches-6.1/102-pseudo-random-mac.patch
rename to target/linux/uml/patches-6.6/102-pseudo-random-mac.patch
index d2dc7516e6..2b42459fe8 100644
--- a/target/linux/uml/patches-6.1/102-pseudo-random-mac.patch
+++ b/target/linux/uml/patches-6.6/102-pseudo-random-mac.patch
@@ -134,7 +134,7 @@ Applies to vanilla kernel 3.9.4.
  static DEFINE_SPINLOCK(devices_lock);
 --- a/kernel/umh.c
 +++ b/kernel/umh.c
-@@ -357,12 +357,12 @@ static void helper_unlock(void)
+@@ -354,12 +354,12 @@ static void helper_unlock(void)
  }
  
  int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info,



From lede-commits at lists.infradead.org  Sat Mar 23 14:01:05 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 17:01:05 -0400
Subject: [openwrt/openwrt]  uml: promote to 6.1 kernel
In-Reply-To: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
References: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
Message-ID: <mailman.18917.1711227675.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/bbaf6b764e3807d0ebe0c07274e9b067c5cfa148

commit bbaf6b764e3807d0ebe0c07274e9b067c5cfa148
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Sat Mar 23 20:32:20 2024 +0100

    uml: promote to 6.1 kernel
    
    there have been no reports of any problems with 6.1.
    let's make it the default kernel.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 target/linux/uml/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/uml/Makefile b/target/linux/uml/Makefile
index ba3c7eae9d..d9c2b924b5 100644
--- a/target/linux/uml/Makefile
+++ b/target/linux/uml/Makefile
@@ -13,8 +13,7 @@ BOARD:=uml
 BOARDNAME:=User Mode Linux
 FEATURES:=audio ext4 rootfs-part squashfs
 
-KERNEL_PATCHVER:=5.15
-KERNEL_TESTING_PATCHVER:=6.1
+KERNEL_PATCHVER:=6.1
 
 include $(INCLUDE_DIR)/target.mk
 



From lede-commits at lists.infradead.org  Sat Mar 23 14:01:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 17:01:04 -0400
Subject: [openwrt/openwrt]  apm821xx: WNDR4700: fix fan-control
In-Reply-To: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
References: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
Message-ID: <mailman.18918.1711227675.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cf6849a6bf8002abf761dd25f74dd0b086b65fa2

commit cf6849a6bf8002abf761dd25f74dd0b086b65fa2
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Sat Mar 23 19:50:22 2024 +0100

    apm821xx: WNDR4700: fix fan-control
    
    This service was unfunctional due to not having its executable bit set.
    Furthermore, sysupgrade complains about the file being present in images.
    
    Also, the tc654 driver doesn't provide pwm1_enable sysfs file, instead its
    now called pwm1_mode.
    
    Please note that the fan was always spinning. It should now turn off, when
    there's enough the thermal headroom.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 target/linux/apm821xx/base-files/etc/init.d/hwmon_fancontrol | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/apm821xx/base-files/etc/init.d/hwmon_fancontrol b/target/linux/apm821xx/base-files/etc/init.d/hwmon_fancontrol
old mode 100644
new mode 100755
index d38964e015..c1f159cafe
--- a/target/linux/apm821xx/base-files/etc/init.d/hwmon_fancontrol
+++ b/target/linux/apm821xx/base-files/etc/init.d/hwmon_fancontrol
@@ -9,7 +9,7 @@ boot() {
 	case $(board_name) in
 	netgear,wndr4700)
 		path_to_hwmon='/sys/devices/platform/plb/plb:opb/4ef600700.i2c/i2c-0/0-001b/hwmon/hwmon1'
-		echo 1 > "$path_to_hwmon/pwm1_enable"
+		echo 1 > "$path_to_hwmon/pwm1_mode"
 		;;
 	esac
 }



From lede-commits at lists.infradead.org  Sat Mar 23 14:01:06 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 17:01:06 -0400
Subject: [openwrt/openwrt]  uml: remove 5.15 config + patches
In-Reply-To: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
References: <171122766480.3539126.16336940824407894092@git-01.infra.openwrt.org>
Message-ID: <mailman.18919.1711227675.1280.lede-commits@lists.infradead.org>

chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7656be978ae57bdff16ff666b85a61b40ed9f277

commit 7656be978ae57bdff16ff666b85a61b40ed9f277
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Sat Mar 23 20:35:59 2024 +0100

    uml: remove 5.15 config + patches
    
    no longer in use as we migrate to 6.6 shortly.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 target/linux/uml/config-5.15                       | 140 --------------
 .../linux/uml/patches-5.15/101-mconsole-exec.patch | 213 ---------------------
 .../uml/patches-5.15/102-pseudo-random-mac.patch   | 151 ---------------
 ...ase-default-virtual-physical-memory-to-64.patch |  40 ----
 4 files changed, 544 deletions(-)

diff --git a/target/linux/uml/config-5.15 b/target/linux/uml/config-5.15
deleted file mode 100644
index ac13cda703..0000000000
--- a/target/linux/uml/config-5.15
+++ /dev/null
@@ -1,140 +0,0 @@
-CONFIG_3_LEVEL_PGTABLES=y
-CONFIG_64BIT=y
-CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_ARCH_EPHEMERAL_INODES=y
-CONFIG_ARCH_NO_PREEMPT=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_BLK_DEV_COW_COMMON=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_UBD=y
-CONFIG_BLK_DEV_UBD_SYNC=y
-CONFIG_BLK_MQ_VIRTIO=y
-CONFIG_CDROM=y
-# CONFIG_COMMON_CLK is not set
-# CONFIG_COMPAT_32BIT_TIME is not set
-CONFIG_CON_CHAN="xterm"
-CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
-CONFIG_CPU_SUP_AMD=y
-CONFIG_CPU_SUP_CENTAUR=y
-CONFIG_CPU_SUP_HYGON=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_ZHAOXIN=y
-CONFIG_CRC16=y
-CONFIG_CRYPTO_CRC32=y
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_SHA1=y
-# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DNOTIFY=y
-# CONFIG_EARLY_PRINTK is not set
-CONFIG_EXT4_FS=y
-CONFIG_F2FS_FS=y
-CONFIG_FAILOVER=y
-CONFIG_FS_IOMAP=y
-CONFIG_FS_MBCACHE=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-# CONFIG_GENERIC_CPU is not set
-CONFIG_GENERIC_CPU_DEVICES=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_HOSTFS=y
-CONFIG_HVC_DRIVER=y
-CONFIG_HW_RANDOM=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_IA32_FEAT_CTL=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_INIT_ENV_ARG_LIMIT=128
-CONFIG_IRQ_WORK=y
-CONFIG_ISO9660_FS=y
-CONFIG_JBD2=y
-# CONFIG_JFFS2_FS is not set
-CONFIG_KALLSYMS=y
-CONFIG_KERNEL_STACK_ORDER=2
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-# CONFIG_MATOM is not set
-CONFIG_MAY_HAVE_RUNTIME_DEPS=y
-CONFIG_MCONSOLE=y
-# CONFIG_MCORE2 is not set
-CONFIG_MEMFD_CREATE=y
-CONFIG_MIGRATION=y
-CONFIG_MK8=y
-# CONFIG_MMAPPER is not set
-CONFIG_MODULES_USE_ELF_RELA=y
-# CONFIG_MPSC is not set
-CONFIG_NAMESPACES=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_FAILOVER=y
-# CONFIG_NET_NS is not set
-CONFIG_NLS=y
-CONFIG_NO_DMA=y
-CONFIG_NO_IOMEM=y
-CONFIG_NO_IOPORT_MAP=y
-CONFIG_NR_CPUS=1
-CONFIG_NULL_CHAN=y
-# CONFIG_OF is not set
-CONFIG_PGTABLE_LEVELS=3
-CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_PORT_CHAN=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_POSIX_MQUEUE_SYSCTL=y
-# CONFIG_PROCESSOR_SELECT is not set
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_PTY_CHAN=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_GZIP=y
-CONFIG_RELAY=y
-CONFIG_SG_POOL=y
-CONFIG_SOFT_WATCHDOG=m
-CONFIG_SRCU=y
-CONFIG_SSL=y
-CONFIG_SSL_CHAN="pty"
-CONFIG_STACKTRACE=y
-CONFIG_STDERR_CONSOLE=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TINY_SRCU=y
-CONFIG_TTY_CHAN=y
-CONFIG_UML=y
-CONFIG_UML_NET=y
-CONFIG_UML_NET_DAEMON=y
-CONFIG_UML_NET_DETERMINISTIC_MAC=y
-CONFIG_UML_NET_ETHERTAP=y
-CONFIG_UML_NET_MCAST=y
-# CONFIG_UML_NET_PCAP is not set
-CONFIG_UML_NET_SLIP=y
-CONFIG_UML_NET_SLIRP=y
-CONFIG_UML_NET_TUNTAP=y
-# CONFIG_UML_NET_VDE is not set
-CONFIG_UML_NET_VECTOR=y
-# CONFIG_UML_PCI_OVER_VIRTIO is not set
-CONFIG_UML_RANDOM=y
-# CONFIG_UML_SOUND is not set
-CONFIG_UML_TIME_TRAVEL_SUPPORT=y
-CONFIG_UML_WATCHDOG=y
-CONFIG_UML_X86=y
-# CONFIG_USER_NS is not set
-CONFIG_VIRTIO=y
-CONFIG_VIRTIO_BLK=y
-CONFIG_VIRTIO_CONSOLE=y
-CONFIG_VIRTIO_NET=y
-CONFIG_VIRTIO_UML=y
-CONFIG_VMAP_STACK=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_X86_64=y
-CONFIG_X86_CMOV=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_INTERNODE_CACHE_SHIFT=6
-CONFIG_X86_L1_CACHE_SHIFT=6
-CONFIG_X86_MINIMUM_CPU_FAMILY=64
-CONFIG_X86_TSC=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_XTERM_CHAN=y
-CONFIG_ZLIB_INFLATE=y
diff --git a/target/linux/uml/patches-5.15/101-mconsole-exec.patch b/target/linux/uml/patches-5.15/101-mconsole-exec.patch
deleted file mode 100644
index ceea41e013..0000000000
--- a/target/linux/uml/patches-5.15/101-mconsole-exec.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-#
-# Minimalist mconsole exec patch 
-#
-# 3.10 version (with bit more synchronous behavior) by fingon at iki dot fi
-# Adaptation to kernel 3.3.8 made by David Fern?ndez (david at dit.upm.es) for 
-# Starting point: mconsole-exec-2.6.30.patch for kernel 2.6.30
-# Author of original patch: Paolo Giarrusso, aka Blaisorblade 
-#                           (http://www.user-mode-linux.org/~blaisorblade)
-#
-# Known misfeatures:
-#
-# - If output is too long, blocks (and breaks horribly) 
-# (this misfeature from 3.10 patches, when minimalizing the patch;
-#  workaround: redirect to a shared filesystem if long output is expected)
-#
-# - Nothing useful is done with stdin
-#
---- a/arch/um/drivers/mconsole.h
-+++ b/arch/um/drivers/mconsole.h
-@@ -85,6 +85,7 @@ extern void mconsole_cad(struct mc_reque
- extern void mconsole_stop(struct mc_request *req);
- extern void mconsole_go(struct mc_request *req);
- extern void mconsole_log(struct mc_request *req);
-+extern void mconsole_exec(struct mc_request *req);
- extern void mconsole_proc(struct mc_request *req);
- extern void mconsole_stack(struct mc_request *req);
- 
---- a/arch/um/drivers/mconsole_kern.c
-+++ b/arch/um/drivers/mconsole_kern.c
-@@ -4,6 +4,7 @@
-  * Copyright (C) 2001 - 2008 Jeff Dike (jdike@{addtoit,linux.intel}.com)
-  */
- 
-+#include <linux/kmod.h>
- #include <linux/console.h>
- #include <linux/ctype.h>
- #include <linux/string.h>
-@@ -27,6 +28,7 @@
- #include <linux/mount.h>
- #include <linux/file.h>
- #include <linux/uaccess.h>
-+#include <linux/completion.h>
- #include <asm/switch_to.h>
- 
- #include <init.h>
-@@ -124,6 +126,59 @@ void mconsole_log(struct mc_request *req
- 	mconsole_reply(req, "", 0, 0);
- }
- 
-+void mconsole_exec(struct mc_request *req)
-+{
-+  struct subprocess_info *sub_info;
-+  int res, len;
-+  struct file *out;
-+  char buf[MCONSOLE_MAX_DATA];
-+
-+  char *envp[] = {
-+    "HOME=/", "TERM=linux",
-+    "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin",
-+    NULL
-+  };
-+  char *argv[] = {
-+    "/bin/sh", "-c",
-+    req->request.data + strlen("exec "),
-+    NULL
-+  };
-+
-+  sub_info = call_usermodehelper_setup("/bin/sh", argv, envp, GFP_ATOMIC, NULL, NULL, NULL);
-+  if (sub_info == NULL) {
-+    mconsole_reply(req, "call_usermodehelper_setup failed", 1, 0);
-+    return;
-+  }
-+  res = call_usermodehelper_stdoutpipe(sub_info, &out);
-+  if (res < 0) {
-+    kfree(sub_info);
-+    mconsole_reply(req, "call_usermodehelper_stdoutpipe failed", 1, 0);
-+    return;
-+  }
-+
-+  res = call_usermodehelper_exec(sub_info, UMH_WAIT_PROC);
-+  if (res < 0) {
-+    kfree(sub_info);
-+    mconsole_reply(req, "call_usermodehelper_exec failed", 1, 0);
-+    return;
-+  }
-+
-+  for (;;) {
-+    len = out->f_op->read(out, buf, sizeof(buf), &out->f_pos);
-+    if (len < 0) {
-+      mconsole_reply(req, "reading output failed", 1, 0);
-+      break;
-+    }
-+    if (len == 0)
-+      break;
-+    mconsole_reply_len(req, buf, len, 0, 1);
-+  }
-+  fput(out);
-+
-+  mconsole_reply_len(req, NULL, 0, 0, 0);
-+}
-+
-+
- void mconsole_proc(struct mc_request *req)
- {
- 	struct vfsmount *mnt = proc_mnt;
-@@ -190,6 +245,7 @@ void mconsole_proc(struct mc_request *re
-     stop - pause the UML; it will do nothing until it receives a 'go' \n\
-     go - continue the UML after a 'stop' \n\
-     log <string> - make UML enter <string> into the kernel log\n\
-+    exec <string> - pass <string> to /bin/sh -c synchronously\n\
-     proc <file> - returns the contents of the UML's /proc/<file>\n\
-     stack <pid> - returns the stack of the specified pid\n\
- "
---- a/arch/um/drivers/mconsole_user.c
-+++ b/arch/um/drivers/mconsole_user.c
-@@ -30,6 +30,7 @@ static struct mconsole_command commands[
- 	{ "stop", mconsole_stop, MCONSOLE_PROC },
- 	{ "go", mconsole_go, MCONSOLE_INTR },
- 	{ "log", mconsole_log, MCONSOLE_INTR },
-+	{ "exec", mconsole_exec, MCONSOLE_PROC },
- 	{ "proc", mconsole_proc, MCONSOLE_PROC },
- 	{ "stack", mconsole_stack, MCONSOLE_INTR },
- };
---- a/arch/um/os-Linux/file.c
-+++ b/arch/um/os-Linux/file.c
-@@ -560,6 +560,8 @@ int os_create_unix_socket(const char *fi
- 
- 	addr.sun_family = AF_UNIX;
- 
-+	if (len > sizeof(addr.sun_path))
-+		len = sizeof(addr.sun_path);
- 	snprintf(addr.sun_path, len, "%s", file);
- 
- 	err = bind(sock, (struct sockaddr *) &addr, sizeof(addr));
---- a/include/linux/kmod.h
-+++ b/include/linux/kmod.h
-@@ -32,4 +32,6 @@ static inline int request_module_nowait(
- #define try_then_request_module(x, mod...) (x)
- #endif
- 
-+int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info, struct file **filp);
-+
- #endif /* __LINUX_KMOD_H__ */
---- a/include/linux/umh.h
-+++ b/include/linux/umh.h
-@@ -22,6 +22,7 @@ struct subprocess_info {
- 	const char *path;
- 	char **argv;
- 	char **envp;
-+	struct file *stdout;
- 	int wait;
- 	int retval;
- 	int (*init)(struct subprocess_info *info, struct cred *new);
---- a/kernel/umh.c
-+++ b/kernel/umh.c
-@@ -28,6 +28,7 @@
- #include <linux/async.h>
- #include <linux/uaccess.h>
- #include <linux/initrd.h>
-+#include <linux/pipe_fs_i.h>
- 
- #include <trace/events/module.h>
- 
-@@ -73,6 +74,28 @@ static int call_usermodehelper_exec_asyn
- 	flush_signal_handlers(current, 1);
- 	spin_unlock_irq(&current->sighand->siglock);
- 
-+	/* Install output when needed */
-+	if (sub_info->stdout) {
-+		struct files_struct *f = current->files;
-+		struct fdtable *fdt;
-+
-+		sys_close(1);
-+		sys_close(2);
-+		get_file(sub_info->stdout);
-+		fd_install(1, sub_info->stdout);
-+		fd_install(2, sub_info->stdout);
-+		spin_lock(&f->file_lock);
-+		fdt = files_fdtable(f);
-+		__set_bit(1, fdt->open_fds);
-+		__clear_bit(1, fdt->close_on_exec);
-+		__set_bit(2, fdt->open_fds);
-+		__clear_bit(2, fdt->close_on_exec);
-+		spin_unlock(&f->file_lock);
-+
-+		/* disallow core files */
-+		current->signal->rlim[RLIMIT_CORE] = (struct rlimit){0, 0};
-+	}
-+
- 	/*
- 	 * Initial kernel threads share ther FS with init, in order to
- 	 * get the init root directory. But we've now created a new
-@@ -332,6 +355,20 @@ static void helper_unlock(void)
- 		wake_up(&running_helpers_waitq);
- }
- 
-+int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info,
-+					struct file **filp)
-+{
-+	struct file *f[2];
-+
-+	if (create_pipe_files(f, 0) < 0)
-+		 return PTR_ERR(f);
-+
-+	sub_info->stdout = f[1];
-+	*filp = f[0];
-+	return 0;
-+}
-+EXPORT_SYMBOL(call_usermodehelper_stdoutpipe);
-+
- /**
-  * call_usermodehelper_setup - prepare to call a usermode helper
-  * @path: path to usermode executable
diff --git a/target/linux/uml/patches-5.15/102-pseudo-random-mac.patch b/target/linux/uml/patches-5.15/102-pseudo-random-mac.patch
deleted file mode 100644
index 6806bb8a8a..0000000000
--- a/target/linux/uml/patches-5.15/102-pseudo-random-mac.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-===============================================================================
-
-This patch makes MAC addresses of network interfaces predictable. In
-particular, it adds a small routine that computes MAC addresses of based on
-a SHA1 hash of the virtual machine name and interface ID.
-
-TECHNICAL INFORMATION:
-
-Applies to vanilla kernel 3.9.4.
-
-===============================================================================
---- a/arch/um/drivers/Kconfig
-+++ b/arch/um/drivers/Kconfig
-@@ -136,6 +136,20 @@ config UML_NET
- 	  enable at least one of the following transport options to actually
- 	  make use of UML networking.
- 
-+config UML_NET_DETERMINISTIC_MAC
-+	bool "Use deterministic MAC addresses for network interfaces"
-+	default y
-+	depends on UML_NET
-+	select CRYPTO_SHA1
-+	help
-+        Virtual network devices inside a User-Mode Linux instance must be
-+        assigned a MAC (Ethernet) address. If none is specified on the UML
-+        command line, one must be automatically computed. If this option is
-+        enabled, a randomly generated address is used. Otherwise, if this
-+        option is disabled, the address is generated from a SHA1 hash of
-+        the umid of the UML instance and the interface name. The latter choice
-+        is useful to make MAC addresses predictable.
-+
- config UML_NET_ETHERTAP
- 	bool "Ethertap transport (obsolete)"
- 	depends on UML_NET
---- a/arch/um/drivers/net_kern.c
-+++ b/arch/um/drivers/net_kern.c
-@@ -25,6 +25,14 @@
- #include <net_kern.h>
- #include <net_user.h>
- 
-+#include <crypto/sha1.h>
-+#include <crypto/hash.h>
-+#include <linux/string.h>
-+#include <linux/crypto.h>
-+#include <linux/err.h>
-+#include <linux/scatterlist.h>
-+#include "os.h"
-+
- #define DRIVER_NAME "uml-netdev"
- 
- static DEFINE_SPINLOCK(opened_lock);
-@@ -274,9 +282,55 @@ static const struct ethtool_ops uml_net_
- 	.get_ts_info	= ethtool_op_get_ts_info,
- };
- 
-+#ifdef CONFIG_UML_NET_DETERMINISTIC_MAC
-+
-+/* Compute a SHA1 hash of the UML instance's id and
-+ *  * an interface name. */
-+static int compute_hash(const char *umid, const char *ifname, char *hash)
-+{
-+	struct ahash_request *desc = NULL;
-+	struct crypto_ahash *tfm = NULL;
-+	struct scatterlist sg;
-+	char *vmif = NULL;
-+	int ret = -ENOMEM;
-+
-+	vmif = kmalloc(1024, GFP_KERNEL);
-+	if (!vmif)
-+		goto out;
-+
-+	strcpy (vmif, umid);
-+	strcat (vmif, ifname);
-+
-+	tfm = crypto_alloc_ahash("sha1", 0, CRYPTO_ALG_ASYNC);
-+	if (IS_ERR(tfm))
-+		goto out;
-+
-+	desc = ahash_request_alloc(tfm, GFP_KERNEL);
-+	if (!desc)
-+		goto out;
-+
-+	crypto_ahash_clear_flags(tfm, ~0);
-+
-+	sg_init_table(&sg, 1);
-+	sg_set_buf(&sg, vmif, strlen(vmif));
-+
-+	ahash_request_set_crypt(desc, &sg, hash, strlen(vmif));
-+
-+	ret = crypto_ahash_digest(desc);
-+out:
-+	crypto_free_ahash(tfm);
-+	ahash_request_free(desc);
-+	kfree(vmif);
-+
-+	return ret;
-+}
-+
-+#endif
-+
- void uml_net_setup_etheraddr(struct net_device *dev, char *str)
- {
- 	unsigned char *addr = dev->dev_addr;
-+	u8 hash[SHA1_DIGEST_SIZE];
- 	char *end;
- 	int i;
- 
-@@ -319,9 +373,26 @@ void uml_net_setup_etheraddr(struct net_
- 	return;
- 
- random:
-+#ifndef CONFIG_UML_NET_DETERMINISTIC_MAC
- 	printk(KERN_INFO
- 	       "Choosing a random ethernet address for device %s\n", dev->name);
- 	eth_hw_addr_random(dev);
-+#else
-+	printk(KERN_INFO
-+	       "Computing a digest to use as ethernet address for device %s\n", dev->name);
-+	if (compute_hash(get_umid(), dev->name, hash) < 0) {
-+		printk(KERN_WARNING
-+		       "Could not compute digest to use as ethernet address for device %s. "
-+		       "Using random address instead.\n", dev->name);
-+		random_ether_addr(addr);
-+	}
-+	else {
-+		for (i=0; i < 6; i++)
-+			addr[i] = (hash[i] + hash[i+6]) % 0x100;
-+	}
-+	addr [0] &= 0xfe; /* clear multicast bit */
-+	addr [0] |= 0x02; /* set local assignment bit (IEEE802) */
-+#endif
- }
- 
- static DEFINE_SPINLOCK(devices_lock);
---- a/kernel/umh.c
-+++ b/kernel/umh.c
-@@ -356,12 +356,12 @@ static void helper_unlock(void)
- }
- 
- int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info,
--					struct file **filp)
-+				   struct file **filp)
- {
- 	struct file *f[2];
- 
- 	if (create_pipe_files(f, 0) < 0)
--		 return PTR_ERR(f);
-+		return PTR_ERR(f);
- 
- 	sub_info->stdout = f[1];
- 	*filp = f[0];
diff --git a/target/linux/uml/patches-5.15/104-um-increase-default-virtual-physical-memory-to-64.patch b/target/linux/uml/patches-5.15/104-um-increase-default-virtual-physical-memory-to-64.patch
deleted file mode 100644
index f19e38d510..0000000000
--- a/target/linux/uml/patches-5.15/104-um-increase-default-virtual-physical-memory-to-64.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From d7936f11aded13f03871c0d6502d611d6a1e2dc5 Mon Sep 17 00:00:00 2001
-Message-Id: <d7936f11aded13f03871c0d6502d611d6a1e2dc5.1659815468.git.chunkeey at gmail.com>
-In-Reply-To: <53b5c5f559cc95fc676cb4cc9e5a8d9f0cb8f58c.1659815468.git.chunkeey at gmail.com>
-References: <53b5c5f559cc95fc676cb4cc9e5a8d9f0cb8f58c.1659815468.git.chunkeey at gmail.com>
-From: Christian Lamparter <chunkeey at gmail.com>
-Date: Sat, 6 Aug 2022 19:27:20 +0200
-Subject: [PATCH v1 2/2] um: increase default virtual physical memory to 64 MiB
-To: linux-um at lists.infradead.org
-Cc: Richard Weinberger <richard at nod.at>,
-    Anton Ivanov <anton.ivanov at cambridgegreys.com>,
-    Johannes Berg <johannes at sipsolutions.net>
-
-The current 32 MiB of RAM causes OOMs to appear shortly after
-booting in a minimal OpenWrt 22.03 configuration with a
-5.10.134 kernel.
-
-Of course, passing a "mem=64M" (from the --help text) parameter
-works too, but it produces the following (info) message:
-
-| [    0.000000] Unknown kernel command line parameters "mem=64M", will be passed to user space.
-
-That's why, I think it would be nicer, if this is working out
-of the box again :).
-
-Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
----
- arch/um/kernel/um_arch.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/um/kernel/um_arch.c
-+++ b/arch/um/kernel/um_arch.c
-@@ -131,7 +131,7 @@ static int have_root __initdata;
- static int have_console __initdata;
- 
- /* Set in uml_mem_setup and modified in linux_main */
--long long physmem_size = 32 * 1024 * 1024;
-+long long physmem_size = 64 * 1024 * 1024;
- EXPORT_SYMBOL(physmem_size);
- 
- static const char *usage_string =



From lede-commits at lists.infradead.org  Sat Mar 23 15:39:35 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 18:39:35 -0400
Subject: [openwrt/openwrt]  ramips: add support for TP-Link RE205 v3
In-Reply-To: <171123357517.3692162.16689914741813309447@git-01.infra.openwrt.org>
References: <171123357517.3692162.16689914741813309447@git-01.infra.openwrt.org>
Message-ID: <mailman.18922.1711233580.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/6e7bc0c24327502b6d0f0eaf8b23d6e4ff9b5a34

commit 6e7bc0c24327502b6d0f0eaf8b23d6e4ff9b5a34
Author: Steffen Loley <slo-src at web.de>
AuthorDate: Sat Feb 10 16:50:50 2024 +0100

    ramips: add support for TP-Link RE205 v3
    
    TP-Link RE205 v3 is a wireless range extender with Ethernet and 2.4G and 5G
    WiFi with external antennas.
    It's based on MediaTek MT7628AN+MT7610EN like the RE200 v3/v4 but with
    external antennas.
    
    Specifications
    --------------
    
    - MediaTek MT7628AN (580 Mhz)
    - 64 MB of RAM
    - 8 MB of FLASH
    - 2T2R 2.4 GHz and 1T1R 5 GHz
    - 1x 10/100 Mbps Ethernet
    - 5x LED (GPIO-controlled), 2x button
    - UART connection holes on PCB (57600 8n1)
    
    There are 2.4G and 5G LEDs in blue which are controlled separately.
    
    Installation
    ------------
    
    Installation is identical to RE200 v3 devices as described at
    https://openwrt.org/toh/tp-link/re200#installation
    
    Web Interface
    -------------
    
    It is possible to upgrade to OpenWrt via the web interface. Simply flash
    the -factory.bin from OEM. In contrast to a stock firmware, this will not
    overwrite U-Boot.
    
    Recovery
    --------
    
    U-Boot seems to be locked on newer versions, if not it can be accessed over
    the UART as described in the link above.
    
    Signed-off-by: Steffen Loley <slo-src at web.de>
---
 .../linux/ramips/dts/mt7628an_tplink_re205-v3.dts  | 44 ++++++++++++++++++++++
 target/linux/ramips/image/mt76x8.mk                | 10 +++++
 .../ramips/mt76x8/base-files/etc/board.d/01_leds   |  3 ++
 .../mt76x8/base-files/etc/board.d/02_network       |  1 +
 4 files changed, 58 insertions(+)

diff --git a/target/linux/ramips/dts/mt7628an_tplink_re205-v3.dts b/target/linux/ramips/dts/mt7628an_tplink_re205-v3.dts
new file mode 100644
index 0000000000..f9390b1540
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_tplink_re205-v3.dts
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an_tplink_re200.dtsi"
+
+/ {
+	compatible = "tplink,re205-v3", "mediatek,mt7628an-soc";
+	model = "TP-Link RE205 v3";
+
+	/delete-node/ leds;
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power: power {
+			function = LED_FUNCTION_POWER;
+			color = <LED_COLOR_ID_BLUE>;
+			gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi5g {
+			function = LED_FUNCTION_WLAN_5GHZ;
+			color = <LED_COLOR_ID_BLUE>;
+			gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+
+		wifi2g {
+			function = LED_FUNCTION_WLAN_2GHZ;
+			color = <LED_COLOR_ID_BLUE>;
+			gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		signal_blue {
+			label = "blue:signal";
+			gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
+		};
+
+		signal_red {
+			label = "red:signal";
+			gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index 656820be14..fc81266da9 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -636,6 +636,16 @@ define Device/tplink_re200-v4
 endef
 TARGET_DEVICES += tplink_re200-v4
 
+define Device/tplink_re205-v3
+  $(Device/tplink-safeloader)
+  IMAGE_SIZE := 7808k
+  DEVICE_MODEL := RE205
+  DEVICE_VARIANT := v3
+  DEVICE_PACKAGES := kmod-mt76x0e
+  TPLINK_BOARD_ID := RE205-V3
+endef
+TARGET_DEVICES += tplink_re205-v3
+
 define Device/tplink_re220-v2
   $(Device/tplink-safeloader)
   IMAGE_SIZE := 7808k
diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
index 5a0e0ab214..da3ef154c0 100644
--- a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
@@ -91,6 +91,9 @@ tplink,tl-mr3020-v3|\
 tplink,tl-wa801nd-v5)
 	ucidef_set_led_netdev "lan" "lan" "green:lan" "eth0"
 	;;
+tplink,re205-v3)
+	ucidef_set_led_netdev "lan" "lan" "blue:signal" "eth0"
+	;;
 tplink,re365-v1)
 	ucidef_set_led_netdev "lan" "lan" "blue:lan" "eth0"
 	;;
diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
index 63abb14d13..fd8c086a85 100644
--- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
@@ -24,6 +24,7 @@ ramips_setup_interfaces()
 	tplink,re200-v2|\
 	tplink,re200-v3|\
 	tplink,re200-v4|\
+	tplink,re205-v3|\
 	tplink,re220-v2|\
 	tplink,re305-v1|\
 	tplink,re305-v3|\



From lede-commits at lists.infradead.org  Sat Mar 23 15:48:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 23 Mar 2024 18:48:52 -0400
Subject: [openwrt/openwrt]  toolchain: gcc: switch default to 13
In-Reply-To: <171123413208.3704698.17088865818155336467@git-01.infra.openwrt.org>
References: <171123413208.3704698.17088865818155336467@git-01.infra.openwrt.org>
Message-ID: <mailman.18927.1711234137.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/8753022aeae14eaee02e0c1e59244c5b36e454db

commit 8753022aeae14eaee02e0c1e59244c5b36e454db
Author: Nick Hainke <vincent at systemli.org>
AuthorDate: Fri May 12 18:11:10 2023 +0200

    toolchain: gcc: switch default to 13
    
    Use GCC 13 instead of GCC 12 by default.
    
    All target kernels are building with GCC 13.
    Most packages from the feed are building fine.
    
    The root file systems is getting a little bit smaller for MIPS 32 BE
    and aarch64.
    
    With GCC 12 I got these sizes for lantiq/xrx200:
    7,005,867 openwrt-lantiq-xrx200-tplink_tdw8970-initramfs-kernel.bin
    
    With GCC 13 I got these sizes for lantiq/xrx200:
    6,989,754 openwrt-lantiq-xrx200-tplink_tdw8970-initramfs-kernel.bin
    
    With GCC 12 I got these sizes for armsr/armv8:
    13,083,836 openwrt-armsr-armv8-generic-ext4-combined.img.gz
     4,900,240 openwrt-armsr-armv8-generic-ext4-rootfs.img.gz
    20,142,592 openwrt-armsr-armv8-generic-kernel.bin
    
    With GCC 13 I got these sizes for armsr/armv8:
    13,068,966 openwrt-armsr-armv8-generic-ext4-combined.img.gz
     4,893,078 openwrt-armsr-armv8-generic-ext4-rootfs.img.gz
    20,142,592 openwrt-armsr-armv8-generic-kernel.bin
    
    Signed-off-by: Nick Hainke <vincent at systemli.org>
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 toolchain/gcc/Config.in      | 2 +-
 toolchain/gcc/Config.version | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in
index 9156f9c263..85abbdabb7 100644
--- a/toolchain/gcc/Config.in
+++ b/toolchain/gcc/Config.in
@@ -2,7 +2,7 @@
 
 choice
 	prompt "GCC compiler Version" if TOOLCHAINOPTS
-	default GCC_USE_VERSION_12
+	default GCC_USE_VERSION_13
 	help
 	  Select the version of gcc you wish to use.
 
diff --git a/toolchain/gcc/Config.version b/toolchain/gcc/Config.version
index a00685ffa3..54bb4445b3 100644
--- a/toolchain/gcc/Config.version
+++ b/toolchain/gcc/Config.version
@@ -2,13 +2,13 @@ config GCC_VERSION_11
 	default y if GCC_USE_VERSION_11
 	bool
 
-config GCC_VERSION_13
-	default y if GCC_USE_VERSION_13
+config GCC_VERSION_12
+	default y if GCC_USE_VERSION_12
 	bool
 
 config GCC_VERSION
 	string
 	default EXTERNAL_GCC_VERSION	if EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
 	default "11.3.0"	if GCC_VERSION_11
-	default "13.2.0"	if GCC_VERSION_13
-	default "12.3.0"
+	default "12.3.0"	if GCC_VERSION_12
+	default "13.2.0"



From lede-commits at lists.infradead.org  Sun Mar 24 13:07:26 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:07:26 -0400
Subject: [openwrt/openwrt]  kirkwood: resize kernel partition for kirkwood
 devices
In-Reply-To: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
References: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
Message-ID: <mailman.18965.1711310850.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f89bdab83280b5a5c795e4cea6823609547b498a

commit f89bdab83280b5a5c795e4cea6823609547b498a
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Thu Mar 14 13:57:25 2024 +0100

    kirkwood: resize kernel partition for kirkwood devices
    
    The 6.1 kernel has caused another increase in kernel size, and now
    it's more than 3MB:
    
    WARNING: Image file iom_ix4-200d-uImage is too big: 3170394 > 3145728
    WARNING: Image file iom_ix2-200-uImage is too big: 3171494 > 3145728
    WARNING: Image file linksys_e4200-v2-uImage is too big: 3171879 > 3145728
    WARNING: Image file linksys_ea4500-uImage is too big: 3171871 > 3145728
    WARNING: Image file linksys_ea3500-uImage is too big: 3171651 > 3145728
    
    This causes problems for 5 devices:
      - Iomega StorCenter ix2/ix4
      - Linksys EA3500/EA4200/EA4500
    
    They have enough resources for proper operation with 6.1, but all of
    them had a 3MB kernel size limit. Let's keep them alive and
    resize kernel partitions to 4MB.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 .../base-files/etc/board.d/05_compat-version       |  6 ++-
 .../files/arch/arm/boot/dts/kirkwood-ea3500.dts    |  8 +--
 .../files/arch/arm/boot/dts/kirkwood-ix4-200d.dts  |  6 +--
 target/linux/kirkwood/image/Makefile               | 60 +++++++++++++++++-----
 .../kirkwood/patches-6.1/103-iomega-ix2-200.patch  | 12 +++--
 .../patches-6.1/105-linksys-viper-dts.patch        |  8 +--
 6 files changed, 72 insertions(+), 28 deletions(-)

diff --git a/target/linux/kirkwood/base-files/etc/board.d/05_compat-version b/target/linux/kirkwood/base-files/etc/board.d/05_compat-version
index c6026c481f..9e9abf1f22 100644
--- a/target/linux/kirkwood/base-files/etc/board.d/05_compat-version
+++ b/target/linux/kirkwood/base-files/etc/board.d/05_compat-version
@@ -8,10 +8,14 @@
 board_config_update
 
 case "$(board_name)" in
+	iom,ix2-200|\
+	iom,ix4-200d)
+		ucidef_set_compat_version "2.0"
+		;;
 	linksys,e4200-v2|\
 	linksys,ea3500|\
 	linksys,ea4500)
-		ucidef_set_compat_version "2.0"
+		ucidef_set_compat_version "3.0"
 		;;
 esac
 
diff --git a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
index 94697866dc..e9f9e30bb4 100644
--- a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
+++ b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
@@ -168,9 +168,9 @@
 			reg = <0x200000 0x1400000>;
 		};
 
-		partition at 500000 {
+		partition at 600000 {
 			label = "rootfs1";
-			reg = <0x500000 0x1100000>;
+			reg = <0x600000 0x1000000>;
 		};
 
 		partition at 1600000 {
@@ -178,9 +178,9 @@
 			reg = <0x1600000 0x1400000>;
 		};
 
-		partition at 1900000 {
+		partition at 1a00000 {
 			label = "rootfs2";
-			reg = <0x1900000 0x1100000>;
+			reg = <0x1a00000 0x1000000>;
 		};
 
 		partition at 2a00000 {
diff --git a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ix4-200d.dts b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ix4-200d.dts
index d57e1f5d5a..6220fbf137 100644
--- a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ix4-200d.dts
+++ b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ix4-200d.dts
@@ -180,12 +180,12 @@
 
 		partition at 100000 {
 			label = "kernel";
-			reg = <0x100000 0x300000>;
+			reg = <0x100000 0x400000>;
 		};
 
-		partition at 400000 {
+		partition at 500000 {
 			label = "ubi";
-			reg = <0x400000 0x1C00000>;
+			reg = <0x500000 0x1B00000>;
 		};
 	};
 };
diff --git a/target/linux/kirkwood/image/Makefile b/target/linux/kirkwood/image/Makefile
index 5ba81cad80..8aa2d69720 100644
--- a/target/linux/kirkwood/image/Makefile
+++ b/target/linux/kirkwood/image/Makefile
@@ -64,12 +64,50 @@ define Build/ctera-firmware
 	rm -rf $@.tmp
 endef
 
-define Device/kernel-size-migration
+define Device/kernel-size-migration-iomega
   DEVICE_COMPAT_VERSION := 2.0
-  DEVICE_COMPAT_MESSAGE := Partition design has changed compared to \
-	older versions (up to 21.02) due to kernel size restrictions. \
+  DEVICE_COMPAT_MESSAGE := \n$\
+   !The partitioning of the router has changed! \n$\
+  Partition design has changed compared to \
+	older versions (up to 23.05) due to kernel size restrictions. \
 	Upgrade via sysupgrade mechanism is not possible, so new \
-	installation via factory style image is required.
+	installation via initramfs image is required.\n$\
+  Please adjust bootcmd in u-boot console:\n$\
+  setenv bootcmd \
+  'setenv bootargs $$$${console} $$$${mtdparts} $$$${bootargs_root}; \
+  nand read.e 0x800000 0x100000 0x400000; bootm 0x00800000'\n$\
+  saveenv\n$\
+  or use OpenWrt shell:\n$\
+  fw_setenv bootcmd \
+  "setenv bootargs $$$${console} $$$${mtdparts} $$$${bootargs_root};\
+  nand read.e 0x800000 0x100000 0x400000; bootm 0x00800000"\n$\
+  and reinstall image with initramfs image. \
+  Please see original instructions for more details.
+endef
+
+define Device/kernel-size-migration-linksys
+  DEVICE_COMPAT_VERSION := 3.0
+  DEVICE_COMPAT_MESSAGE := \n$\
+    !The partitioning of the router has changed! \n$\
+    Partition design has changed compared to \
+	  older versions (up to 23.05) due to kernel size restrictions. \n$\
+	  Upgrade via sysupgrade mechanism is not possible, so u-boot args \
+    adjustment and new installation via factory style image is required. \n$\
+    Upgrade instructions: \n$\
+    2. Run folowing commands in console (ssh or serial): \n$\
+    \t fw_printenv \n$\
+    \t fw_setenv nandboot \
+    "$$$$(fw_printenv nandboot | awk -F= '{sub(/^nandboot=/, "");print}' \
+    | sed 's/0x300000/0x400000/g')"\n$\
+    \t fw_setenv altnandboot \
+    "$$$$(fw_printenv altnandboot | awk -F= '{sub(/^altnandboot=/, "");print}' \
+    | sed 's/0x300000/0x400000/g')"\n$\
+    3. Test if envs are ok by 'fw_printenv'. \
+    It should be the same except last argument of\
+    'nand read.e' in 'nandboot' and 'altnandboot'.\n$\
+    4. If envs are ok, please apply FACTORY image with command:\n$\
+    \t sysupgrade -F -n OPENWRT_FACTORY_IMAGE.bin \n$\
+    5. System should start normally. If not, serial console will be required.
 endef
 
 define Device/Default
@@ -169,6 +207,7 @@ endef
 TARGET_DEVICES += iom_iconnect-1.1
 
 define Device/iom_ix2-200
+  $(Device/kernel-size-migration-iomega)
   DEVICE_VENDOR := Iomega
   DEVICE_MODEL := StorCenter ix2-200
   DEVICE_DTS := kirkwood-iomega_ix2_200
@@ -177,7 +216,7 @@ define Device/iom_ix2-200
   PAGESIZE := 512
   SUBPAGESIZE := 256
   BLOCKSIZE := 16k
-  KERNEL_SIZE := 3072k
+  KERNEL_SIZE := 4096k
   KERNEL_IN_UBI :=
   UBINIZE_OPTS := -E 5
   IMAGE_SIZE := 31744k
@@ -187,6 +226,7 @@ endef
 TARGET_DEVICES += iom_ix2-200
 
 define Device/iom_ix4-200d
+  $(Device/kernel-size-migration-iomega)
   DEVICE_VENDOR := Iomega
   DEVICE_MODEL := StorCenter ix4-200d
   DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
@@ -195,7 +235,7 @@ define Device/iom_ix4-200d
   PAGESIZE := 512
   SUBPAGESIZE := 256
   BLOCKSIZE := 16k
-  KERNEL_SIZE := 3072k
+  KERNEL_SIZE := 4096k
   KERNEL_IN_UBI :=
   UBINIZE_OPTS := -E 5
   IMAGE_SIZE := 31744k
@@ -221,41 +261,37 @@ endef
 TARGET_DEVICES += iptime_nas1
 
 define Device/linksys
+  $(Device/kernel-size-migration-linksys)
   DEVICE_VENDOR := Linksys
   DEVICE_PACKAGES := kmod-mwl8k wpad-basic-mbedtls kmod-gpio-button-hotplug \
 	kmod-rtc-mv
   KERNEL_IN_UBI :=
+  KERNEL_SIZE := 4096k
   UBINIZE_OPTS := -E 5
   IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
 endef
 
 define Device/linksys_e4200-v2
   $(Device/linksys)
-  $(Device/kernel-size-migration)
   DEVICE_MODEL := E4200
   DEVICE_VARIANT := v2
-  KERNEL_SIZE := 3072k
   SUPPORTED_DEVICES += linksys,viper linksys-viper
 endef
 TARGET_DEVICES += linksys_e4200-v2
 
 define Device/linksys_ea3500
   $(Device/linksys)
-  $(Device/kernel-size-migration)
   DEVICE_MODEL := EA3500
   PAGESIZE := 512
   SUBPAGESIZE := 256
   BLOCKSIZE := 16k
-  KERNEL_SIZE := 3072k
   SUPPORTED_DEVICES += linksys,audi linksys-audi
 endef
 TARGET_DEVICES += linksys_ea3500
 
 define Device/linksys_ea4500
   $(Device/linksys)
-  $(Device/kernel-size-migration)
   DEVICE_MODEL := EA4500
-  KERNEL_SIZE := 3072k
   SUPPORTED_DEVICES += linksys,viper linksys-viper
 endef
 TARGET_DEVICES += linksys_ea4500
diff --git a/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch b/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch
index 9313b4bc3e..db04c09f76 100644
--- a/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch
+++ b/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch
@@ -34,7 +34,7 @@
  			label = "status:red:health_led";
  			gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
  		};
-@@ -186,18 +193,18 @@
+@@ -186,19 +193,19 @@
  	};
  
  	partition at a0000 {
@@ -46,16 +46,20 @@
  
  	partition at 100000 {
 -		label = "uImage";
+-		reg = <0x100000 0x300000>;
 +		label = "kernel";
- 		reg = <0x100000 0x300000>;
++		reg = <0x100000 0x400000>;
  	};
  
- 	partition at 400000 {
+-	partition at 400000 {
 -		label = "rootfs";
+-		reg = <0x400000 0x1C00000>;
++	partition at 500000 {
 +		label = "ubi";
- 		reg = <0x400000 0x1C00000>;
++		reg = <0x500000 0x1C00000>;
  	};
  };
+ 
 @@ -211,7 +218,7 @@
  };
  
diff --git a/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch b/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch
index d56a469d94..b1604ec92c 100644
--- a/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch
+++ b/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch
@@ -36,9 +36,9 @@
 -		partition at 4a0000 {
 -			label = "rootfs";
 -			reg = <0x4A0000 0x1760000>;
-+		partition at 500000 {
++		partition at 600000 {
 +			label = "rootfs1";
-+			reg = <0x500000 0x1700000>;
++			reg = <0x600000 0x1600000>;
  		};
  
  		partition at 1c00000 {
@@ -51,9 +51,9 @@
 -		partition at 1ea0000 {
 -			label = "alt_rootfs";
 -			reg = <0x1EA0000 0x1760000>;
-+		partition at 1f00000 {
++		partition at 2000000 {
 +			label = "rootfs2";
-+			reg = <0x1F00000 0x1700000>;
++			reg = <0x2000000 0x1600000>;
  		};
  
  		partition at 3600000 {



From lede-commits at lists.infradead.org  Sun Mar 24 13:07:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:07:21 -0400
Subject: [openwrt/openwrt]  kirkwood: Add missing phy-mode and fixed links
In-Reply-To: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
References: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
Message-ID: <mailman.18966.1711310850.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fff9316268e44d70cd618d32376a085ab8205e89

commit fff9316268e44d70cd618d32376a085ab8205e89
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Mar 5 15:23:31 2024 +0100

    kirkwood: Add missing phy-mode and fixed links
    
    Copied from original Andrew's Lunn commit message:
    
        The DSA framework has got more picky about always having a phy-mode
        for the CPU port. The Kirkwood Ethernet is an RGMII port. Set the
        switch to impose the RGMII delays.
    
        Additionally, the cpu label has never actually been used in the
        binding, so remove it.
    
    This commit backport change from upstream and fix downstream EA3500 dts.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 .../files/arch/arm/boot/dts/kirkwood-ea3500.dts    |   2 +
 ...kwood-Add-missing-phy-mode-and-fixed-link.patch | 108 +++++++++++++++++++++
 2 files changed, 110 insertions(+)

diff --git a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
index d0f2e35343..94697866dc 100644
--- a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
+++ b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
@@ -125,6 +125,7 @@
 
 			port at 5 {
 				reg = <5>;
+				phy-mode = "rgmii-id";
 				ethernet = <&eth0port>;
 				fixed-link {
 					speed = <1000>;
@@ -223,6 +224,7 @@
 	ethernet0-port at 0 {
 		speed = <1000>;
 		duplex = <1>;
+		phy-mode = "rgmii";
 	};
 };
 
diff --git a/target/linux/kirkwood/patches-6.1/004-6.4-ARM-dts-kirkwood-Add-missing-phy-mode-and-fixed-link.patch b/target/linux/kirkwood/patches-6.1/004-6.4-ARM-dts-kirkwood-Add-missing-phy-mode-and-fixed-link.patch
new file mode 100644
index 0000000000..fd7adc3584
--- /dev/null
+++ b/target/linux/kirkwood/patches-6.1/004-6.4-ARM-dts-kirkwood-Add-missing-phy-mode-and-fixed-link.patch
@@ -0,0 +1,108 @@
+From 8aea8659a5f3ae8dc63c9f632ce1f676a1483556 Mon Sep 17 00:00:00 2001
+From: Andrew Lunn <andrew at lunn.ch>
+Date: Fri, 7 Apr 2023 17:17:20 +0200
+Subject: [PATCH] ARM: dts: kirkwood: Add missing phy-mode and fixed links
+
+The DSA framework has got more picky about always having a phy-mode
+for the CPU port. The Kirkwood Ethernet is an RGMII port. Set the
+switch to impose the RGMII delays.
+
+Additionally, the cpu label has never actually been used in the
+binding, so remove it.
+
+Signed-off-by: Andrew Lunn <andrew at lunn.ch>
+Signed-off-by: Gregory CLEMENT <gregory.clement at bootlin.com>
+---
+ arch/arm/boot/dts/kirkwood-dir665.dts          | 3 ++-
+ arch/arm/boot/dts/kirkwood-l-50.dts            | 2 +-
+ arch/arm/boot/dts/kirkwood-linksys-viper.dts   | 3 ++-
+ arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts | 3 ++-
+ arch/arm/boot/dts/kirkwood-rd88f6281.dtsi      | 2 +-
+ 5 files changed, 8 insertions(+), 5 deletions(-)
+
+--- a/arch/arm/boot/dts/kirkwood-dir665.dts
++++ b/arch/arm/boot/dts/kirkwood-dir665.dts
+@@ -232,7 +232,7 @@
+ 
+ 			port at 6 {
+ 				reg = <6>;
+-				label = "cpu";
++				phy-mode = "rgmii-id";
+ 				ethernet = <&eth0port>;
+ 				fixed-link {
+ 					speed = <1000>;
+@@ -251,6 +251,7 @@
+ 	ethernet0-port at 0 {
+ 		speed = <1000>;
+ 		duplex = <1>;
++		phy-mode = "rgmii";
+ 	};
+ };
+ 
+--- a/arch/arm/boot/dts/kirkwood-l-50.dts
++++ b/arch/arm/boot/dts/kirkwood-l-50.dts
+@@ -254,7 +254,6 @@
+ 
+ 			port at 6 {
+ 				reg = <6>;
+-				label = "cpu";
+ 				phy-mode = "rgmii-id";
+ 				ethernet = <&eth1port>;
+ 				fixed-link {
+@@ -330,6 +329,7 @@
+ 	ethernet1-port at 0 {
+ 		speed = <1000>;
+ 		duplex = <1>;
++		phy-mode = "rgmii";
+ 	};
+ };
+ 
+--- a/arch/arm/boot/dts/kirkwood-linksys-viper.dts
++++ b/arch/arm/boot/dts/kirkwood-linksys-viper.dts
+@@ -198,7 +198,7 @@
+ 
+ 			port at 5 {
+ 				reg = <5>;
+-				label = "cpu";
++				phy-mode = "rgmii-id";
+ 				ethernet = <&eth0port>;
+ 				fixed-link {
+ 					speed = <1000>;
+@@ -221,6 +221,7 @@
+ 	ethernet0-port at 0 {
+ 		speed = <1000>;
+ 		duplex = <1>;
++		phy-mode = "rgmii";
+ 	};
+ };
+ 
+--- a/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
++++ b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
+@@ -149,7 +149,7 @@
+ 
+ 			port at 5 {
+ 				reg = <5>;
+-				label = "cpu";
++				phy-mode = "rgmii-id";
+ 				ethernet = <&eth0port>;
+ 				fixed-link {
+ 					speed = <1000>;
+@@ -166,6 +166,7 @@
+ 	ethernet0-port at 0 {
+ 		speed = <1000>;
+ 		duplex = <1>;
++		phy-mode = "rgmii";
+ 	};
+ };
+ 
+--- a/arch/arm/boot/dts/kirkwood-rd88f6281.dtsi
++++ b/arch/arm/boot/dts/kirkwood-rd88f6281.dtsi
+@@ -105,7 +105,7 @@
+ 
+ 			port at 5 {
+ 				reg = <5>;
+-				label = "cpu";
++				phy-mode = "rgmii-id";
+ 				ethernet = <&eth0port>;
+ 				fixed-link {
+ 					speed = <1000>;



From lede-commits at lists.infradead.org  Sun Mar 24 13:07:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:07:22 -0400
Subject: [openwrt/openwrt]  kirkwood: 6.1: backport Marvell 88E6171 init fix
 patch
In-Reply-To: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
References: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
Message-ID: <mailman.18967.1711310850.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/03ffebb6ddfd683be8fc2679f94bbe6cf5bd6f7e

commit 03ffebb6ddfd683be8fc2679f94bbe6cf5bd6f7e
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Mar 5 21:52:52 2024 +0100

    kirkwood: 6.1: backport Marvell 88E6171 init fix patch
    
    After commit de5c9bf40c45 ("net: phylink: require supported_interfaces to
    be filled") Marvell 88e6171 switches fail to be probed:
    
    [    1.263852] mv88e6085 f1072004.mdio-bus-mii:10: switch 0x1710 detected: Marvell 88E6171, revision 2
    [    2.177654] mv88e6085 f1072004.mdio-bus-mii:10: OF node /ocp at f1000000/mdio-bus at 72004/switch at 10/ports/port at 5 of CPU port 5 lacks the required "phy-mode" property
    [    2.194230] mv88e6085 f1072004.mdio-bus-mii:10: phylink: error: empty supported_interfaces
    [    2.202554] error creating PHYLINK: -22
    [    2.214109] mv88e6085: probe of f1072004.mdio-bus-mii:10 failed with error -22
    
    Upstream handled it. Lets backport patch.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 ...mv88e6xxx-fix-marvell-6350-switch-probing.patch | 89 ++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/target/linux/kirkwood/patches-6.1/005-6.7-net-dsa-mv88e6xxx-fix-marvell-6350-switch-probing.patch b/target/linux/kirkwood/patches-6.1/005-6.7-net-dsa-mv88e6xxx-fix-marvell-6350-switch-probing.patch
new file mode 100644
index 0000000000..cd838394d9
--- /dev/null
+++ b/target/linux/kirkwood/patches-6.1/005-6.7-net-dsa-mv88e6xxx-fix-marvell-6350-switch-probing.patch
@@ -0,0 +1,89 @@
+From b3f1a164c7f742503dc7159011f7ad6b092b660e Mon Sep 17 00:00:00 2001
+From: Greg Ungerer <gerg at kernel.org>
+Date: Fri, 24 Nov 2023 14:15:28 +1000
+Subject: [PATCH] net: dsa: mv88e6xxx: fix marvell 6350 switch probing
+
+As of commit de5c9bf40c45 ("net: phylink: require supported_interfaces to
+be filled") Marvell 88e6350 switches fail to be probed:
+
+    ...
+    mv88e6085 d0072004.mdio-mii:11: switch 0x3710 detected: Marvell 88E6350, revision 2
+    mv88e6085 d0072004.mdio-mii:11: phylink: error: empty supported_interfaces
+    error creating PHYLINK: -22
+    mv88e6085: probe of d0072004.mdio-mii:11 failed with error -22
+    ...
+
+The problem stems from the use of mv88e6185_phylink_get_caps() to get
+the device capabilities. Create a new dedicated phylink_get_caps for the
+6351 family (which the 6350 is one of) to properly support their set of
+capabilities.
+
+According to chip.h the 6351 switch family includes the 6171, 6175, 6350
+and 6351 switches, so update each of these to use the correct
+phylink_get_caps.
+
+Fixes: de5c9bf40c45 ("net: phylink: require supported_interfaces to be filled")
+Signed-off-by: Greg Ungerer <gerg at kernel.org>
+Reviewed-by: Andrew Lunn <andrew at lunn.ch>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ drivers/net/dsa/mv88e6xxx/chip.c | 20 ++++++++++++++++----
+ 1 file changed, 16 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/dsa/mv88e6xxx/chip.c
++++ b/drivers/net/dsa/mv88e6xxx/chip.c
+@@ -652,6 +652,18 @@ static void mv88e6250_phylink_get_caps(s
+ 	config->mac_capabilities = MAC_SYM_PAUSE | MAC_10 | MAC_100;
+ }
+ 
++static void mv88e6351_phylink_get_caps(struct mv88e6xxx_chip *chip, int port,
++				       struct phylink_config *config)
++{
++	unsigned long *supported = config->supported_interfaces;
++
++	/* Translate the default cmode */
++	mv88e6xxx_translate_cmode(chip->ports[port].cmode, supported);
++
++	config->mac_capabilities = MAC_SYM_PAUSE | MAC_10 | MAC_100 |
++				   MAC_1000FD;
++}
++
+ static int mv88e6352_get_port4_serdes_cmode(struct mv88e6xxx_chip *chip)
+ {
+ 	u16 reg, val;
+@@ -4498,7 +4510,7 @@ static const struct mv88e6xxx_ops mv88e6
+ 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
+ 	.stu_getnext = mv88e6352_g1_stu_getnext,
+ 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+-	.phylink_get_caps = mv88e6185_phylink_get_caps,
++	.phylink_get_caps = mv88e6351_phylink_get_caps,
+ };
+ 
+ static const struct mv88e6xxx_ops mv88e6172_ops = {
+@@ -4599,7 +4611,7 @@ static const struct mv88e6xxx_ops mv88e6
+ 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
+ 	.stu_getnext = mv88e6352_g1_stu_getnext,
+ 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+-	.phylink_get_caps = mv88e6185_phylink_get_caps,
++	.phylink_get_caps = mv88e6351_phylink_get_caps,
+ };
+ 
+ static const struct mv88e6xxx_ops mv88e6176_ops = {
+@@ -5256,7 +5268,7 @@ static const struct mv88e6xxx_ops mv88e6
+ 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
+ 	.stu_getnext = mv88e6352_g1_stu_getnext,
+ 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+-	.phylink_get_caps = mv88e6185_phylink_get_caps,
++	.phylink_get_caps = mv88e6351_phylink_get_caps,
+ };
+ 
+ static const struct mv88e6xxx_ops mv88e6351_ops = {
+@@ -5302,7 +5314,7 @@ static const struct mv88e6xxx_ops mv88e6
+ 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+ 	.avb_ops = &mv88e6352_avb_ops,
+ 	.ptp_ops = &mv88e6352_ptp_ops,
+-	.phylink_get_caps = mv88e6185_phylink_get_caps,
++	.phylink_get_caps = mv88e6351_phylink_get_caps,
+ };
+ 
+ static const struct mv88e6xxx_ops mv88e6352_ops = {



From lede-commits at lists.infradead.org  Sun Mar 24 13:07:23 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:07:23 -0400
Subject: [openwrt/openwrt]  kirkwood: Add missing package dependency
In-Reply-To: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
References: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
Message-ID: <mailman.18968.1711310856.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ccbdb212f36f6db25062c5b50c9729842e60fa24

commit ccbdb212f36f6db25062c5b50c9729842e60fa24
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 6 10:50:08 2024 +0100

    kirkwood: Add missing package dependency
    
    When build images with the 6.1 kernel for all devices and all kmods,
    there is one dependancy error:
    
      pkg_hash_check_unresolved: cannot find dependency kmod-thermal
      for kmod-hwmon-gpiofan
    
    This commit fix that issue.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/kirkwood/image/Makefile   |   3 +-
 target/linux/kirkwood/image/generic.mk | 177 +++++++++++++++++++++++++++++++++
 2 files changed, 179 insertions(+), 1 deletion(-)

diff --git a/target/linux/kirkwood/image/Makefile b/target/linux/kirkwood/image/Makefile
index 70c11628f0..5ba81cad80 100644
--- a/target/linux/kirkwood/image/Makefile
+++ b/target/linux/kirkwood/image/Makefile
@@ -209,7 +209,8 @@ define Device/iptime_nas1
   DEVICE_MODEL := NAS1
   DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
 	kmod-gpio-button-hotplug kmod-gpio-pca953x kmod-hwmon-drivetemp \
-	kmod-hwmon-gpiofan kmod-usb-ledtrig-usbport kmod-rtc-mv -uboot-envtools
+	kmod-hwmon-gpiofan kmod-usb-ledtrig-usbport kmod-rtc-mv kmod-thermal \
+  -uboot-envtools
   KERNEL := $$(KERNEL) | iptime-naspkg nas1
   BLOCKSIZE := 256k
   IMAGE_SIZE := 15872k
diff --git a/target/linux/kirkwood/image/generic.mk b/target/linux/kirkwood/image/generic.mk
new file mode 100644
index 0000000000..fff46be172
--- /dev/null
+++ b/target/linux/kirkwood/image/generic.mk
@@ -0,0 +1,177 @@
+define Device/checkpoint_l-50
+  DEVICE_VENDOR := Check Point
+  DEVICE_MODEL := L-50
+  DEVICE_PACKAGES := kmod-ath9k kmod-gpio-button-hotplug kmod-mvsdio \
+	kmod-rtc-s35390a kmod-usb-ledtrig-usbport wpad-basic-mbedtls
+  IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += checkpoint_l-50
+
+define Device/cisco_on100
+  DEVICE_VENDOR := Cisco Systems
+  DEVICE_MODEL := ON100
+  KERNEL_SIZE := 5376k
+  KERNEL_IN_UBI :=
+  UBINIZE_OPTS := -E 5
+  IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
+  DEVICE_PACKAGES := kmod-mvsdio kmod-rtc-mv
+  SUPPORTED_DEVICES += on100
+endef
+TARGET_DEVICES += cisco_on100
+
+define Device/cloudengines_pogoe02
+  DEVICE_VENDOR := Cloud Engines
+  DEVICE_MODEL := Pogoplug E02
+  DEVICE_DTS := kirkwood-pogo_e02
+  DEVICE_PACKAGES := kmod-rtc-mv
+  SUPPORTED_DEVICES += pogo_e02
+endef
+TARGET_DEVICES += cloudengines_pogoe02
+
+define Device/cloudengines_pogoplugv4
+  DEVICE_VENDOR := Cloud Engines
+  DEVICE_MODEL := Pogoplug V4
+  DEVICE_DTS := kirkwood-pogoplug-series-4
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-mvsdio kmod-usb3 \
+	kmod-gpio-button-hotplug kmod-rtc-mv
+endef
+TARGET_DEVICES += cloudengines_pogoplugv4
+
+define Device/ctera_c200-v1
+  DEVICE_VENDOR := Ctera
+  DEVICE_MODEL := C200
+  DEVICE_VARIANT := V1
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-gpio-button-hotplug \
+	kmod-hwmon-lm63 kmod-rtc-s35390a kmod-usb-ledtrig-usbport
+  KERNEL := kernel-bin | append-dtb | uImage none | ctera-firmware
+  KERNEL_IN_UBI :=
+  KERNEL_SUFFIX := -factory.firm
+  IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += ctera_c200-v1
+
+define Device/endian_4i-edge-200
+  DEVICE_VENDOR := Endian
+  DEVICE_MODEL := 4i Edge 200
+  DEVICE_ALT0_VENDOR := Endian
+  DEVICE_ALT0_MODEL := UTM Mini Firewall
+  DEVICE_PACKAGES := kmod-ath9k kmod-mvsdio wpad-basic-mbedtls kmod-rtc-mv
+  KERNEL_SIZE := 4096k
+  IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += endian_4i-edge-200
+
+define Device/globalscale_sheevaplug
+  DEVICE_VENDOR := Globalscale
+  DEVICE_MODEL := Sheevaplug
+  DEVICE_PACKAGES := kmod-mvsdio kmod-rtc-mv
+endef
+TARGET_DEVICES += globalscale_sheevaplug
+
+define Device/iom_iconnect-1.1
+  DEVICE_VENDOR := Iomega
+  DEVICE_MODEL := Iconnect
+  DEVICE_PACKAGES := kmod-rtc-mv
+  DEVICE_DTS := kirkwood-iconnect
+  SUPPORTED_DEVICES += iconnect
+endef
+TARGET_DEVICES += iom_iconnect-1.1
+
+define Device/iptime_nas1
+  DEVICE_VENDOR := ipTIME
+  DEVICE_MODEL := NAS1
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
+	kmod-gpio-button-hotplug kmod-gpio-pca953x kmod-hwmon-drivetemp \
+	kmod-hwmon-gpiofan kmod-usb-ledtrig-usbport kmod-rtc-mv kmod-thermal \
+  -uboot-envtools
+  KERNEL := $$(KERNEL) | iptime-naspkg nas1
+  BLOCKSIZE := 256k
+  IMAGE_SIZE := 15872k
+  IMAGES := sysupgrade.bin
+  IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | \
+	check-size | append-metadata
+endef
+TARGET_DEVICES += iptime_nas1
+
+define Device/netgear_readynas-duo-v2
+  DEVICE_VENDOR := NETGEAR
+  DEVICE_MODEL := ReadyNAS Duo
+  DEVICE_VARIANT := v2
+  DEVICE_DTS := kirkwood-netgear_readynas_duo_v2
+  KERNEL_IN_UBI :=
+  IMAGES := sysupgrade.bin
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
+	kmod-gpio-button-hotplug kmod-hwmon-g762 kmod-rtc-rs5c372a kmod-usb3
+endef
+TARGET_DEVICES += netgear_readynas-duo-v2
+
+define Device/raidsonic_ib-nas62x0
+  DEVICE_VENDOR := RaidSonic
+  DEVICE_MODEL := ICY BOX IB-NAS62x0
+  DEVICE_DTS := kirkwood-ib62x0
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-rtc-mv
+  SUPPORTED_DEVICES += ib62x0
+endef
+TARGET_DEVICES += raidsonic_ib-nas62x0
+
+define Device/seagate_blackarmor-nas220
+  DEVICE_VENDOR := Seagate
+  DEVICE_MODEL := Blackarmor NAS220
+  DEVICE_PACKAGES := kmod-hwmon-adt7475 kmod-fs-ext4 kmod-ata-marvell-sata \
+	mdadm kmod-gpio-button-hotplug kmod-rtc-mv
+  PAGESIZE := 512
+  SUBPAGESIZE := 256
+  BLOCKSIZE := 16k
+  UBINIZE_OPTS := -e 1
+endef
+TARGET_DEVICES += seagate_blackarmor-nas220
+
+define Device/seagate_dockstar
+  DEVICE_VENDOR := Seagate
+  DEVICE_MODEL := FreeAgent Dockstar
+  DEVICE_PACKAGES := kmod-rtc-mv
+  SUPPORTED_DEVICES += dockstar
+endef
+TARGET_DEVICES += seagate_dockstar
+
+define Device/seagate_goflexnet
+  DEVICE_VENDOR := Seagate
+  DEVICE_MODEL := GoFlexNet
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-rtc-mv
+  SUPPORTED_DEVICES += goflexnet
+endef
+TARGET_DEVICES += seagate_goflexnet
+
+define Device/seagate_goflexhome
+  DEVICE_VENDOR := Seagate
+  DEVICE_MODEL := GoFlexHome
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-rtc-mv
+  SUPPORTED_DEVICES += goflexhome
+endef
+TARGET_DEVICES += seagate_goflexhome
+
+define Device/zyxel_nsa310b
+  DEVICE_VENDOR := ZyXEL
+  DEVICE_MODEL := NSA310b
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-r8169 kmod-fs-ext4 \
+	kmod-gpio-button-hotplug kmod-hwmon-lm85 kmod-rtc-mv
+  SUPPORTED_DEVICES += nsa310b
+endef
+TARGET_DEVICES += zyxel_nsa310b
+
+define Device/zyxel_nsa310s
+  DEVICE_VENDOR := ZyXEL
+  DEVICE_MODEL := NSA310S
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-gpio-button-hotplug
+endef
+TARGET_DEVICES += zyxel_nsa310s
+
+define Device/zyxel_nsa325
+  DEVICE_VENDOR := ZyXEL
+  DEVICE_MODEL := NSA325
+  DEVICE_VARIANT := v1/v2
+  DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
+	kmod-gpio-button-hotplug kmod-rtc-pcf8563 kmod-usb3
+  SUPPORTED_DEVICES += nsa325
+endef
+TARGET_DEVICES += zyxel_nsa325



From lede-commits at lists.infradead.org  Sun Mar 24 13:07:24 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:07:24 -0400
Subject: [openwrt/openwrt]  kirkwood: switch kernel version to 6.1
In-Reply-To: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
References: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
Message-ID: <mailman.18971.1711310856.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/48f108d46b1c2f16fb72b3158b41828a2a5e13ec

commit 48f108d46b1c2f16fb72b3158b41828a2a5e13ec
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Mar 5 22:26:56 2024 +0100

    kirkwood: switch kernel version to 6.1
    
    6.1 testing version was introduced some time ago. Kernel size issues
    are resolved now. Time to bump kernel version.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/kirkwood/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/kirkwood/Makefile b/target/linux/kirkwood/Makefile
index 424e699157..241fc614c4 100644
--- a/target/linux/kirkwood/Makefile
+++ b/target/linux/kirkwood/Makefile
@@ -11,8 +11,7 @@ FEATURES:=rtc usb nand squashfs ramdisk
 CPU_TYPE:=xscale
 SUBTARGETS:=generic
 
-KERNEL_PATCHVER:=5.15
-KERNEL_TESTING_PATCHVER:=6.1
+KERNEL_PATCHVER:=6.1
 
 include $(INCLUDE_DIR)/target.mk
 



From lede-commits at lists.infradead.org  Sun Mar 24 13:07:25 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:07:25 -0400
Subject: [openwrt/openwrt]  kirkwood: remove 5.15 kernel support
In-Reply-To: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
References: <171131084175.1432083.6108165716628208980@git-01.infra.openwrt.org>
Message-ID: <mailman.18972.1711310856.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/93b3334a3514a7f10801103e5da98ce75c9f916e

commit 93b3334a3514a7f10801103e5da98ce75c9f916e
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Tue Mar 5 22:34:58 2024 +0100

    kirkwood: remove 5.15 kernel support
    
    Kernel was switched to 6.1. Lets drop 5.15 support.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/kirkwood/config-5.15                  | 293 -----------------
 .../001-5.18-Add-Ctera-C-200-V1-board.patch        | 350 ---------------------
 ...-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch | 301 ------------------
 ...dts-kirkwood-Add-Endian-4i-Edge-200-board.patch | 249 ---------------
 .../linux/kirkwood/patches-5.15/100-ib62x0.patch   |  53 ----
 .../linux/kirkwood/patches-5.15/101-iconnect.patch |  80 -----
 .../linux/kirkwood/patches-5.15/102-dockstar.patch |  62 ----
 .../kirkwood/patches-5.15/103-iomega-ix2-200.patch |  67 ----
 .../patches-5.15/105-linksys-viper-dts.patch       |  59 ----
 .../kirkwood/patches-5.15/106-goflexnet.patch      |  53 ----
 ...07-01-zyxel-nsa3x0-common-nand-partitions.patch |  48 ---
 .../kirkwood/patches-5.15/107-03-nsa325.patch      |  54 ----
 .../kirkwood/patches-5.15/109-pogoplug_v4.patch    |  87 -----
 .../linux/kirkwood/patches-5.15/110-pogo_e02.patch |  68 ----
 target/linux/kirkwood/patches-5.15/111-l-50.patch  |  47 ---
 .../kirkwood/patches-5.15/112-sheevaplug.patch     |  47 ---
 .../patches-5.15/113-readynas_duo_v2.patch         |  76 -----
 .../kirkwood/patches-5.15/114-ctera-c-200-v1.patch |  60 ----
 .../linux/kirkwood/patches-5.15/115-nsa310s.patch  |  35 ---
 .../kirkwood/patches-5.15/116-4i-edge-200.patch    |  34 --
 .../kirkwood/patches-5.15/117-netgear_stora.patch  |  10 -
 ...01-enable-sata-port-specific-led-triggers.patch |  10 -
 .../202-linksys-find-active-root.patch             |  62 ----
 .../patches-5.15/203-blackarmor-nas220.patch       |  99 ------
 24 files changed, 2304 deletions(-)

diff --git a/target/linux/kirkwood/config-5.15 b/target/linux/kirkwood/config-5.15
deleted file mode 100644
index ce19fce6ee..0000000000
--- a/target/linux/kirkwood/config-5.15
+++ /dev/null
@@ -1,293 +0,0 @@
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-CONFIG_ARCH_MULTIPLATFORM=y
-CONFIG_ARCH_MULTI_CPU_AUTO=y
-# CONFIG_ARCH_MULTI_V4 is not set
-# CONFIG_ARCH_MULTI_V4T is not set
-CONFIG_ARCH_MULTI_V4_V5=y
-CONFIG_ARCH_MULTI_V5=y
-CONFIG_ARCH_MVEBU=y
-CONFIG_ARCH_NR_GPIO=0
-CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM=y
-# CONFIG_ARMADA_37XX_WATCHDOG is not set
-# CONFIG_ARMADA_THERMAL is not set
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_ARM_ATAG_DTB_COMPAT=y
-CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
-CONFIG_ARM_CRYPTO=y
-CONFIG_ARM_HAS_SG_CHAIN=y
-# CONFIG_ARM_KIRKWOOD_CPUIDLE is not set
-CONFIG_ARM_L1_CACHE_SHIFT=5
-# CONFIG_ARM_MVEBU_V7_CPUIDLE is not set
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-# CONFIG_ARM_THUMB is not set
-CONFIG_ARM_UNWIND=y
-CONFIG_ATA=y
-CONFIG_ATAGS=y
-CONFIG_ATA_LEDS=y
-CONFIG_AUTO_ZRELADDR=y
-CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_CACHE_FEROCEON_L2=y
-# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
-CONFIG_CLKSRC_MMIO=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_FEROCEON=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-CONFIG_CPU_FEROCEON=y
-# CONFIG_CPU_FEROCEON_OLD_ID is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_PABRT_LEGACY=y
-CONFIG_CPU_PM=y
-CONFIG_CPU_THERMAL=y
-CONFIG_CPU_THUMB_CAPABLE=y
-CONFIG_CPU_TLB_FEROCEON=y
-CONFIG_CPU_USE_DOMAINS=y
-CONFIG_CRC16=y
-# CONFIG_CRC32_SARWATE is not set
-CONFIG_CRC32_SLICEBY8=y
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_DEV_MARVELL=y
-CONFIG_CRYPTO_DEV_MARVELL_CESA=y
-CONFIG_CRYPTO_HASH_INFO=y
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_DES=y
-CONFIG_CRYPTO_LZO=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_ZSTD=y
-CONFIG_DEBUG_LL=y
-CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
-CONFIG_DEBUG_MVEBU_UART0_ALTERNATE=y
-# CONFIG_DEBUG_MVEBU_UART1_ALTERNATE is not set
-CONFIG_DEBUG_UART_8250=y
-CONFIG_DEBUG_UART_8250_SHIFT=2
-CONFIG_DEBUG_UART_PHYS=0xf1012000
-CONFIG_DEBUG_UART_VIRT=0xfed12000
-CONFIG_DEBUG_UNCOMPRESS=y
-CONFIG_DMA_OPS=y
-CONFIG_DMA_REMAP=y
-CONFIG_DNOTIFY=y
-CONFIG_DTC=y
-# CONFIG_EARLY_PRINTK is not set
-CONFIG_EDAC_ATOMIC_SCRUB=y
-CONFIG_EDAC_SUPPORT=y
-CONFIG_FIXED_PHY=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_FORCE_PCI=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_EARLY_IOREMAP=y
-CONFIG_GENERIC_IDLE_POLL_SETUP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
-CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PHY=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_STRNCPY_FROM_USER=y
-CONFIG_GENERIC_STRNLEN_USER=y
-CONFIG_GLOB=y
-CONFIG_GPIOLIB_IRQCHIP=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_MVEBU=y
-CONFIG_GRO_CELLS=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HWMON=y
-CONFIG_HW_RANDOM=y
-CONFIG_HW_RANDOM_OMAP=y
-CONFIG_HZ_FIXED=0
-CONFIG_HZ_PERIODIC=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_MV64XXX=y
-# CONFIG_I2C_PXA is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_WORK=y
-CONFIG_KIRKWOOD_CLK=y
-CONFIG_KIRKWOOD_THERMAL=y
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_NETXBIG=y
-CONFIG_LEDS_NS2=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_MACH_KIRKWOOD=y
-CONFIG_MACH_MVEBU_ANY=y
-CONFIG_MANGLE_BOOTARGS=y
-CONFIG_MARVELL_PHY=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MIGRATION=y
-CONFIG_MODULES_USE_ELF_REL=y
-# CONFIG_MTD_CFI is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_NAND_CORE=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_ECC_SW_HAMMING=y
-# CONFIG_MTD_NAND_MARVELL is not set
-CONFIG_MTD_NAND_ORION=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPLIT_FIRMWARE=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_BEB_LIMIT=20
-CONFIG_MTD_UBI_BLOCK=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MV643XX_ETH=y
-CONFIG_MVEBU_CLK_COMMON=y
-CONFIG_MVEBU_MBUS=y
-CONFIG_MVMDIO=y
-# CONFIG_MVNETA is not set
-# CONFIG_MVPP2 is not set
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_KUSER_HELPERS=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_DEVLINK=y
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_TAG_DSA=y
-CONFIG_NET_DSA_TAG_DSA_COMMON=y
-CONFIG_NET_DSA_TAG_EDSA=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NET_SWITCHDEV=y
-CONFIG_NLS=y
-CONFIG_NVMEM=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_OLD_SIGACTION=y
-CONFIG_OLD_SIGSUSPEND3=y
-CONFIG_ORION_IRQCHIP=y
-CONFIG_ORION_TIMER=y
-CONFIG_ORION_WATCHDOG=y
-CONFIG_OUTER_CACHE=y
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PCI=y
-CONFIG_PCI_BRIDGE_EMUL=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DOMAINS_GENERIC=y
-CONFIG_PCI_MVEBU=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_PHYLINK=y
-# CONFIG_PHY_MVEBU_A3700_UTMI is not set
-# CONFIG_PHY_MVEBU_A38X_COMPHY is not set
-CONFIG_PHY_MVEBU_SATA=y
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_KIRKWOOD=y
-CONFIG_PINCTRL_MVEBU=y
-# CONFIG_PINCTRL_SINGLE is not set
-CONFIG_PINCTRL_SX150X=y
-CONFIG_PLAT_ORION=y
-CONFIG_POWER_RESET=y
-CONFIG_POWER_RESET_GPIO=y
-CONFIG_POWER_RESET_LINKSTATION=y
-CONFIG_POWER_SUPPLY=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_MV=y
-CONFIG_RTC_I2C_AND_SPI=y
-CONFIG_RTC_MC146818_LIB=y
-CONFIG_SCSI=y
-CONFIG_SCSI_COMMON=y
-CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
-CONFIG_SERIAL_8250_FSL=y
-CONFIG_SERIAL_MCTRL_GPIO=y
-# CONFIG_SERIAL_MVEBU_UART is not set
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SGL_ALLOC=y
-CONFIG_SG_POOL=y
-CONFIG_SOC_BUS=y
-CONFIG_SPARSE_IRQ=y
-CONFIG_SPI=y
-# CONFIG_SPI_ARMADA_3700 is not set
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-CONFIG_SPI_ORION=y
-CONFIG_SPLIT_PTLOCK_CPUS=999999
-CONFIG_SRAM=y
-CONFIG_SRAM_EXEC=y
-CONFIG_SRCU=y
-CONFIG_SWPHY=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_THERMAL=y
-CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
-CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
-CONFIG_THERMAL_GOV_STEP_WISE=y
-CONFIG_THERMAL_HWMON=y
-CONFIG_THERMAL_OF=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TINY_SRCU=y
-CONFIG_UBIFS_FS=y
-CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-CONFIG_UNWINDER_ARM=y
-CONFIG_USB=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_LED_TRIG=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USE_OF=y
-# CONFIG_VFP is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_WAN=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_XXHASH=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_BCJ=y
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZSTD_COMPRESS=y
-CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/kirkwood/patches-5.15/001-5.18-Add-Ctera-C-200-V1-board.patch b/target/linux/kirkwood/patches-5.15/001-5.18-Add-Ctera-C-200-V1-board.patch
deleted file mode 100644
index 453915e8cf..0000000000
--- a/target/linux/kirkwood/patches-5.15/001-5.18-Add-Ctera-C-200-V1-board.patch
+++ /dev/null
@@ -1,350 +0,0 @@
-From 5fc74dbdf8f640a7ca7fb92345ac6fbeaa078d65 Mon Sep 17 00:00:00 2001
-From: Pawel Dembicki <paweldembicki at gmail.com>
-Date: Tue, 15 Feb 2022 17:39:22 +0100
-Subject: [PATCH] ARM: dts: kirkwood: Add Ctera C-200 V1 board
-
-Ctera C200 V1 is kirkwood-based 2-Bay NAS.
-
-Hardware:
-  - SoC: Marvell 88F6281-A1 ARMv5TE Processor 1.2GHz
-  - Ram: 512MB (4x Nanya NT5TU128M8GE-AC)
-  - NAND Flash: 256MB (Samsung 216 K9F2G08U0C)
-  - Lan: 1x GBE (Marvell 88E1116R-NNC1)
-  - Storage: 2x SATA HDD 3.5" Slot
-  - USB: 2x USB 2.0 port
-  - Console: Internal J3 connector (1: Vcc, 2: Rx, 3: Tx, 4: GND)
-  - LEDs: 13x GPIO controlled
-  - Buttons: 2x GPIO controlled
-
-Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at bootlin.com>
----
- arch/arm/boot/dts/Makefile             |   1 +
- arch/arm/boot/dts/kirkwood-c200-v1.dts | 310 +++++++++++++++++++++++++
- 2 files changed, 311 insertions(+)
- create mode 100644 arch/arm/boot/dts/kirkwood-c200-v1.dts
-
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -267,6 +267,7 @@ dtb-$(CONFIG_ARCH_KEYSTONE) += \
- dtb-$(CONFIG_MACH_KIRKWOOD) += \
- 	kirkwood-b3.dtb \
- 	kirkwood-blackarmor-nas220.dtb \
-+	kirkwood-c200-v1.dtb \
- 	kirkwood-cloudbox.dtb \
- 	kirkwood-d2net.dtb \
- 	kirkwood-db-88f6281.dtb \
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-c200-v1.dts
-@@ -0,0 +1,310 @@
-+// SPDX-License-Identifier: GPL-2.0-or-later
-+/*
-+ * Ctera C200 V1 Board Description
-+ * Copyright 2021-2022 Pawel Dembicki <paweldembicki at gmail.com>
-+ */
-+
-+/dts-v1/;
-+
-+#include "kirkwood.dtsi"
-+#include "kirkwood-6281.dtsi"
-+#include <dt-bindings/leds/common.h>
-+
-+/ {
-+	model = "Ctera C200 V1";
-+	compatible = "ctera,c200-v1", "marvell,kirkwood-88f6281", "marvell,kirkwood";
-+
-+	chosen {
-+		bootargs = "console=ttyS0,115200";
-+		stdout-path = &uart0;
-+	};
-+
-+	memory at 0 {
-+		device_type = "memory";
-+		reg = <0x00000000 0x20000000>;
-+	};
-+
-+	keys {
-+		compatible = "gpio-keys";
-+		pinctrl-0 = <&pmx_buttons>;
-+		pinctrl-names = "default";
-+
-+		power {
-+			label = "Power Button";
-+			linux,code = <KEY_POWER>;
-+			gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
-+		};
-+
-+		reset {
-+			label = "Reset Button";
-+			linux,code = <KEY_RESTART>;
-+			gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		usb1 {
-+			label = "USB1 Button";
-+			linux,code = <BTN_0>;
-+			gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		usb2 {
-+			label = "USB2 Button";
-+			linux,code = <BTN_1>;
-+			gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
-+		};
-+	};
-+
-+	gpio-poweroff {
-+		compatible = "gpio-poweroff";
-+		pinctrl-0 = <&pmx_poweroff>;
-+		pinctrl-names = "default";
-+		gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
-+	};
-+
-+	leds {
-+		compatible = "gpio-leds";
-+		pinctrl-0 = <&pmx_leds>;
-+		pinctrl-names = "default";
-+
-+		led-0 {
-+			function = LED_FUNCTION_DISK;
-+			function-enumerator = <2>;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-1 {
-+			function = LED_FUNCTION_DISK;
-+			function-enumerator = <1>;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-2 {
-+			function = LED_FUNCTION_DISK;
-+			function-enumerator = <2>;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-3 {
-+			function = LED_FUNCTION_DISK;
-+			function-enumerator = <1>;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-4 {
-+			function = LED_FUNCTION_STATUS;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-5 {
-+			function = LED_FUNCTION_STATUS;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-6 {
-+			function = LED_FUNCTION_INDICATOR;
-+			color = <LED_COLOR_ID_BLUE>;
-+			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-7 {
-+			function = LED_FUNCTION_DISK_ERR;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-8 {
-+			function = LED_FUNCTION_DISK_ERR;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-9 {
-+			function = LED_FUNCTION_USB;
-+			function-enumerator = <1>;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-10 {
-+			function = LED_FUNCTION_USB;
-+			function-enumerator = <1>;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
-+			linux,default-trigger = "usbport";
-+			trigger-sources = <&hub_port2>;
-+		};
-+
-+		led-11 {
-+			function = LED_FUNCTION_USB;
-+			function-enumerator = <2>;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		led-12 {
-+			function = LED_FUNCTION_USB;
-+			function-enumerator = <2>;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
-+			linux,default-trigger = "usbport";
-+			trigger-sources = <&hub_port1>;
-+		};
-+	};
-+};
-+
-+&eth0 {
-+	status = "okay";
-+};
-+
-+&eth0port {
-+	phy-handle = <&ethphy9>;
-+};
-+
-+&i2c0 {
-+	status = "okay";
-+
-+	rtc at 30 {
-+		compatible = "s35390a";
-+		reg = <0x30>;
-+	};
-+
-+	lm63 at 4c {
-+		compatible = "national,lm63";
-+		reg = <0x4c>;
-+	};
-+};
-+
-+&mdio {
-+	status = "okay";
-+
-+	ethphy9: ethernet-phy at 9 {
-+		reg = <9>;
-+	};
-+};
-+
-+&nand {
-+	status = "okay";
-+	chip-delay = <40>;
-+
-+	partition at 0 {
-+		label = "uboot";
-+		reg = <0x0000000 0x200000>;
-+	};
-+
-+	partition at 200000 {
-+		label = "certificate";
-+		reg = <0x0200000 0x100000>;
-+	};
-+
-+	partition at 300000 {
-+		label = "preset_cfg";
-+		reg = <0x0300000 0x100000>;
-+	};
-+
-+	partition at 400000 {
-+		label = "dev_params";
-+		reg = <0x0400000 0x100000>;
-+	};
-+
-+	partition at 500000 {
-+		label = "active_bank";
-+		reg = <0x0500000 0x0100000>;
-+	};
-+
-+	partition at 600000 {
-+		label = "magic";
-+		reg = <0x0600000 0x0100000>;
-+	};
-+
-+	partition at 700000 {
-+		label = "bank1";
-+		reg = <0x0700000 0x2800000>;
-+	};
-+
-+	partition at 2f00000 {
-+		label = "bank2";
-+		reg = <0x2f00000 0x2800000>;
-+	};
-+
-+	/* 0x5700000-0x5a00000 undefined in vendor firmware */
-+
-+	partition at 5a00000 {
-+		label = "reserved";
-+		reg = <0x5a00000 0x2000000>;
-+	};
-+
-+	partition at 7a00000 {
-+		label = "rootfs";
-+		reg = <0x7a00000 0x8600000>;
-+	};
-+};
-+
-+&pinctrl {
-+	/* Buzzer gpios are connected to two pins of buzzer.
-+	 * This buzzer require a modulated signal from gpio.
-+	 * Leave it as is due lack of proper driver.
-+	 */
-+	pmx_buzzer: pmx-buzzer {
-+		marvell,pins = "mpp12", "mpp13";
-+		marvell,function = "gpio";
-+	};
-+
-+	pmx_leds: pmx-leds {
-+		marvell,pins = "mpp14", "mpp15", "mpp16", "mpp17", "mpp38",
-+			       "mpp39", "mpp40", "mpp42", "mpp43", "mpp44",
-+			       "mpp45", "mpp46", "mpp47";
-+		marvell,function = "gpio";
-+	};
-+
-+	pmx_buttons: pmx-buttons {
-+		marvell,pins = "mpp28", "mpp29", "mpp48", "mpp49";
-+		marvell,function = "gpio";
-+	};
-+
-+	pmx_poweroff: pmx-poweroff {
-+		marvell,pins = "mpp34";
-+		marvell,function = "gpio";
-+	};
-+};
-+
-+&rtc {
-+	status = "disabled";
-+};
-+
-+&sata {
-+	status = "okay";
-+	nr-ports = <2>;
-+};
-+
-+&uart0 {
-+	status = "okay";
-+};
-+
-+&usb0 {
-+	#address-cells = <1>;
-+	#size-cells = <0>;
-+	status = "okay";
-+
-+	port at 1 {
-+		#address-cells = <1>;
-+		#size-cells = <0>;
-+		reg = <1>;
-+		#trigger-source-cells = <0>;
-+
-+		hub_port1: port at 1 {
-+			reg = <1>;
-+			#trigger-source-cells = <0>;
-+		};
-+
-+		hub_port2: port at 2 {
-+			reg = <2>;
-+			#trigger-source-cells = <0>;
-+		};
-+	};
-+};
diff --git a/target/linux/kirkwood/patches-5.15/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch b/target/linux/kirkwood/patches-5.15/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch
deleted file mode 100644
index b745ea104f..0000000000
--- a/target/linux/kirkwood/patches-5.15/002-6.2-ARM-dts-kirkwood-Add-Zyxel-NSA310S-board.patch
+++ /dev/null
@@ -1,301 +0,0 @@
-From e977a103840c57d72b52cbc8c17f87f86ef9aa8d Mon Sep 17 00:00:00 2001
-From: Pawel Dembicki <paweldembicki at gmail.com>
-Date: Sat, 29 Oct 2022 22:57:38 +0200
-Subject: [PATCH] ARM: dts: kirkwood: Add Zyxel NSA310S board
-
-Zyxel NSA310S is a NAS based on Marvell kirkwood SoC.
-
-Specification:
- - Processor Marvell 88F6702 1 GHz
- - 256MB RAM
- - 128MB NAND
- - 1x GBE LAN port (PHY: Marvell 88E1318)
- - 2x USB 2.0
- - 1x SATA
- - 3x button
- - 7x leds
- - serial on J1 connector (115200 8N1) (GND-NOPIN-RX-TX-VCC)
-
-Tested-by: Tony Dinh <mibodhi at gmail.com>
-Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
-Acked-by: Adam Baker <linux at baker-net.org.uk>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at bootlin.com>
----
- arch/arm/boot/dts/Makefile             |   1 +
- arch/arm/boot/dts/kirkwood-nsa310s.dts | 259 +++++++++++++++++++++++++
- 2 files changed, 260 insertions(+)
- create mode 100644 arch/arm/boot/dts/kirkwood-nsa310s.dts
-
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -320,6 +320,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
- 	kirkwood-ns2mini.dtb \
- 	kirkwood-nsa310.dtb \
- 	kirkwood-nsa310a.dtb \
-+	kirkwood-nsa310s.dtb \
- 	kirkwood-nsa320.dtb \
- 	kirkwood-nsa325.dtb \
- 	kirkwood-openblocks_a6.dtb \
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-nsa310s.dts
-@@ -0,0 +1,259 @@
-+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-+/*
-+ * ZyXEL NSA310S Board Description
-+ * Copyright 2020-2022 Pawel Dembicki <paweldembicki at gmail.com>
-+ * Copyright (c) 2015-2021, Tony Dinh <mibodhi at gmail.com>
-+ * Copyright (c) 2014, Adam Baker <linux at baker-net.org.uk>
-+ * Based upon the board setup file created by Peter Schildmann
-+ */
-+/dts-v1/;
-+
-+#include "kirkwood.dtsi"
-+#include "kirkwood-6281.dtsi"
-+#include <dt-bindings/leds/common.h>
-+
-+/ {
-+	model = "ZyXEL NSA310S";
-+	compatible = "zyxel,nsa310s", "marvell,kirkwood-88f6702", "marvell,kirkwood";
-+
-+	memory {
-+		device_type = "memory";
-+		reg = <0x00000000 0x10000000>;
-+	};
-+
-+	chosen {
-+		bootargs = "console=ttyS0,115200n8 earlyprintk";
-+		stdout-path = &uart0;
-+	};
-+
-+	gpio_poweroff {
-+		compatible = "gpio-poweroff";
-+		pinctrl-0 = <&pmx_pwr_off>;
-+		pinctrl-names = "default";
-+		gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
-+	};
-+
-+	keys {
-+		compatible = "gpio-keys";
-+		#address-cells = <1>;
-+		#size-cells = <0>;
-+		pinctrl-0 = <&pmx_buttons>;
-+		pinctrl-names = "default";
-+
-+		power {
-+			label = "Power Button";
-+			linux,code = <KEY_POWER>;
-+			gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
-+		};
-+
-+		copy {
-+			label = "Copy Button";
-+			linux,code = <KEY_COPY>;
-+			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
-+		};
-+
-+		reset {
-+			label = "Reset Button";
-+			linux,code = <KEY_RESTART>;
-+			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
-+		};
-+	};
-+
-+	leds {
-+		compatible = "gpio-leds";
-+		pinctrl-0 = <&pmx_leds>;
-+		pinctrl-names = "default";
-+
-+		led-1 {
-+			function = LED_FUNCTION_DISK_ERR;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
-+		};
-+
-+		led-2 {
-+			function = LED_FUNCTION_USB;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "usb-host";
-+		};
-+
-+		led-3 {
-+			function = LED_FUNCTION_DISK;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "ata1";
-+		};
-+
-+		led-4 {
-+			function = LED_FUNCTION_INDICATOR;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
-+		};
-+
-+		led-5 {
-+			function = LED_FUNCTION_INDICATOR;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
-+		};
-+
-+		led-6 {
-+			function = LED_FUNCTION_STATUS;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "default-on";
-+		};
-+
-+		led-7 {
-+			function = LED_FUNCTION_STATUS;
-+			color = <LED_COLOR_ID_RED>;
-+			gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
-+		};
-+	};
-+
-+	usb0_power: regulator at 1 {
-+		compatible = "regulator-fixed";
-+		regulator-name = "USB Power";
-+
-+		regulator-min-microvolt = <5000000>;
-+		regulator-max-microvolt = <5000000>;
-+		regulator-always-on;
-+		regulator-boot-on;
-+		gpio = <&gpio0 21 GPIO_ACTIVE_HIGH>;
-+	};
-+
-+	sata1_power: regulator at 2 {
-+		compatible = "regulator-fixed";
-+		regulator-name = "SATA1 Power";
-+
-+		regulator-min-microvolt = <5000000>;
-+		regulator-max-microvolt = <5000000>;
-+		regulator-always-on;
-+		regulator-boot-on;
-+		gpio = <&gpio1 1 GPIO_ACTIVE_HIGH>;
-+	};
-+
-+	thermal-zones {
-+		disk-thermal {
-+			polling-delay = <20000>;
-+			polling-delay-passive = <2000>;
-+
-+			thermal-sensors = <&hdd_temp>;
-+
-+			trips {
-+				disk_alert: disk-alert {
-+					temperature = <40000>;
-+					hysteresis = <5000>;
-+					type = "active";
-+				};
-+				disk_crit: disk-crit {
-+					temperature = <60000>;
-+					hysteresis = <2000>;
-+					type = "critical";
-+				};
-+			};
-+		};
-+	};
-+};
-+
-+
-+&eth0 {
-+	status = "okay";
-+
-+	ethernet0-port at 0 {
-+		phy-handle = <&ethphy0>;
-+	};
-+};
-+
-+&i2c0 {
-+	status = "okay";
-+
-+	rtc at 68 {
-+		compatible = "htk,ht1382";
-+		reg = <0x68>;
-+	};
-+};
-+
-+&mdio {
-+	status = "okay";
-+
-+	ethphy0: ethernet-phy at 1 {
-+		reg = <1>;
-+		phy-mode = "rgmii-id";
-+		marvell,reg-init = <0x1 0x16 0x0 0x3>,
-+				   <0x1 0x10 0x0 0x1017>,
-+				   <0x1 0x11 0x0 0x4408>,
-+				   <0x1 0x16 0x0 0x0>;
-+	};
-+};
-+
-+&nand {
-+	status = "okay";
-+	chip-delay = <35>;
-+
-+	partition at 0 {
-+		label = "uboot";
-+		reg = <0x0000000 0x00c0000>;
-+		read-only;
-+	};
-+	partition at c0000 {
-+		label = "uboot_env";
-+		reg = <0x00c0000 0x0080000>;
-+	};
-+	partition at 140000 {
-+		label = "ubi";
-+		reg = <0x0140000 0x7ec0000>;
-+	};
-+};
-+
-+&pciec {
-+	status = "okay";
-+};
-+
-+&pcie0 {
-+	status = "okay";
-+};
-+
-+&pinctrl {
-+	pinctrl-names = "default";
-+
-+	pmx_buttons: pmx-buttons {
-+		marvell,pins = "mpp24", "mpp25", "mpp26";
-+		marvell,function = "gpio";
-+	};
-+
-+	pmx_leds: pmx-leds {
-+		marvell,pins = "mpp13", "mpp15", "mpp16", "mpp22", "mpp23",
-+						"mpp28", "mpp29";
-+		marvell,function = "gpio";
-+	};
-+
-+	pmx_power: pmx-power {
-+		marvell,pins = "mpp21", "mpp33";
-+		marvell,function = "gpio";
-+	};
-+
-+	pmx_pwr_off: pmx-pwr-off {
-+		marvell,pins = "mpp27";
-+		marvell,function = "gpio";
-+	};
-+};
-+
-+&rtc {
-+	status = "disabled";
-+};
-+
-+&sata {
-+	status = "okay";
-+	nr-ports = <1>;
-+	#address-cells = <1>;
-+	#size-cells = <0>;
-+
-+	hdd_temp: sata-port at 0 {
-+		reg = <0>;
-+		#thermal-sensor-cells = <0>;
-+	};
-+};
-+
-+&uart0 {
-+	status = "okay";
-+};
diff --git a/target/linux/kirkwood/patches-5.15/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch b/target/linux/kirkwood/patches-5.15/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch
deleted file mode 100644
index 4b0f46bb6d..0000000000
--- a/target/linux/kirkwood/patches-5.15/003-6.5-ARM-dts-kirkwood-Add-Endian-4i-Edge-200-board.patch
+++ /dev/null
@@ -1,249 +0,0 @@
-From 5668d088ee4ea05db9daaae0645d1d1f579b20f9 Mon Sep 17 00:00:00 2001
-From: Pawel Dembicki <paweldembicki at gmail.com>
-Date: Mon, 3 Oct 2022 09:34:43 +0200
-Subject: ARM: dts: kirkwood: Add Endian 4i Edge 200 board
-
-Add Endian 4i Edge 200 is 5-port firewall.
-It have also clone: Endian UTM Mini (The same hardware, with added WLAN
-card).
-
-Hardware:
-  - SoC: Marvell 88F6281-A1 ARMv5TE Processor 1.2GHz
-  - Ram: 512MB (4x Nanya NT5TU128M8GE-AC)
-  - NAND Flash: 512MB (Micron 29F4G08AAC)
-  - Lan 1-4: 4x GBE (Marvell 88E6171R-TFJ2)
-  - Lan 5: 1x GBE (Marvell 88E1116R-NNC1)
-  - Storage: MicroSD Slot
-  - MCPIE: MiniPCIe Slot present [fitted with SparkLan WPEA-110N/E
-          (Atheros AR9280 chipset) in Endian UTM Mini WLAN only]
-  - USB: 1x USB 2.0 port
-  - Console: RJ-45 port
-  - LEDs: 3x GPIO controlled
-
-Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at bootlin.com>
----
- arch/arm/boot/dts/Makefile                 |   1 +
- arch/arm/boot/dts/kirkwood-4i-edge-200.dts | 205 +++++++++++++++++++++++++++++
- 2 files changed, 206 insertions(+)
- create mode 100644 arch/arm/boot/dts/kirkwood-4i-edge-200.dts
-
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -265,6 +265,7 @@ dtb-$(CONFIG_ARCH_KEYSTONE) += \
- 	keystone-k2g-evm.dtb \
- 	keystone-k2g-ice.dtb
- dtb-$(CONFIG_MACH_KIRKWOOD) += \
-+	kirkwood-4i-edge-200.dtb \
- 	kirkwood-b3.dtb \
- 	kirkwood-blackarmor-nas220.dtb \
- 	kirkwood-c200-v1.dtb \
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-4i-edge-200.dts
-@@ -0,0 +1,205 @@
-+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-+/*
-+ * Endian 4i Edge 200 Board Description
-+ * Note: Endian UTM Mini is hardware clone of Endian Edge 200
-+ * Copyright 2021-2022 Pawel Dembicki <paweldembicki at gmail.com>
-+ */
-+
-+/dts-v1/;
-+
-+#include "kirkwood.dtsi"
-+#include "kirkwood-6281.dtsi"
-+#include <dt-bindings/leds/common.h>
-+
-+/ {
-+	model = "Endian 4i Edge 200";
-+	compatible = "endian,4i-edge-200", "marvell,kirkwood-88f6281", "marvell,kirkwood";
-+
-+	memory {
-+		device_type = "memory";
-+		reg = <0x00000000 0x20000000>;
-+	};
-+
-+	chosen {
-+		bootargs = "console=ttyS0,115200n8";
-+		stdout-path = &uart0;
-+	};
-+
-+	leds {
-+		compatible = "gpio-leds";
-+		pinctrl-0 = <&pmx_led>;
-+		pinctrl-names = "default";
-+
-+		led-1 {
-+			function = LED_FUNCTION_SD;
-+			color = <LED_COLOR_ID_AMBER>;
-+			gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "mmc0";
-+		};
-+
-+		led-2 {
-+			function = LED_FUNCTION_STATUS;
-+			color = <LED_COLOR_ID_AMBER>;
-+			gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
-+		};
-+
-+		led-3 {
-+			function = LED_FUNCTION_STATUS;
-+			color = <LED_COLOR_ID_GREEN>;
-+			gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
-+		};
-+	};
-+};
-+
-+&eth0 {
-+	status = "okay";
-+};
-+
-+&eth0port {
-+	speed = <1000>;
-+	duplex = <1>;
-+};
-+
-+&eth1 {
-+	status = "okay";
-+};
-+
-+&eth1port {
-+	phy-handle = <&ethphyb>;
-+};
-+
-+&mdio {
-+	status = "okay";
-+
-+	ethphyb: ethernet-phy at b {
-+		reg = <0x0b>;
-+
-+		marvell,reg-init =
-+			/* link-activity, bi-color mode 4 */
-+			<3 0x10 0xfff0 0xf>; /* Reg 3,16 <- 0xzzzf */
-+	};
-+
-+	switch0: switch at 11 {
-+		compatible = "marvell,mv88e6085";
-+		reg = <0x11>;
-+
-+		ports {
-+			#address-cells = <1>;
-+			#size-cells = <0>;
-+
-+			port at 0 {
-+				reg = <0>;
-+				label = "port1";
-+			};
-+
-+			port at 1 {
-+				reg = <1>;
-+				label = "port2";
-+			};
-+
-+			port at 2 {
-+				reg = <2>;
-+				label = "port3";
-+			};
-+
-+			port at 3 {
-+				reg = <3>;
-+				label = "port4";
-+			};
-+
-+			port at 5 {
-+				reg = <5>;
-+				phy-mode = "rgmii-id";
-+				ethernet = <&eth0port>;
-+
-+				fixed-link {
-+					speed = <1000>;
-+					full-duplex;
-+				};
-+			};
-+		};
-+	};
-+};
-+
-+&nand {
-+	status = "okay";
-+	pinctrl-0 = <&pmx_nand>;
-+	pinctrl-names = "default";
-+
-+	partition at 0 {
-+		label = "u-boot";
-+		reg = <0x00000000 0x000a0000>;
-+		read-only;
-+	};
-+
-+	partition at a0000 {
-+		label = "u-boot-env";
-+		reg = <0x000a0000 0x00060000>;
-+		read-only;
-+	};
-+
-+	partition at 100000 {
-+		label = "kernel";
-+		reg = <0x00100000 0x00400000>;
-+	};
-+
-+	partition at 500000 {
-+		label = "ubi";
-+		reg = <0x00500000 0x1fb00000>;
-+	};
-+};
-+
-+&pciec {
-+	status = "okay";
-+};
-+
-+&pcie0 {
-+	status = "okay";
-+};
-+
-+&pinctrl {
-+	pinctrl-0 = <&pmx_sysrst>;
-+	pinctrl-names = "default";
-+
-+	pmx_sysrst: pmx-sysrst {
-+		marvell,pins = "mpp6";
-+		marvell,function = "sysrst";
-+	};
-+
-+	pmx_sdio_cd: pmx-sdio-cd {
-+		marvell,pins = "mpp28";
-+		marvell,function = "gpio";
-+	};
-+
-+	pmx_led: pmx-led {
-+		marvell,pins = "mpp34", "mpp35", "mpp49";
-+		marvell,function = "gpio";
-+	};
-+};
-+
-+&rtc {
-+	status = "okay";
-+};
-+
-+&sata_phy0 {
-+	status = "disabled";
-+};
-+
-+&sata_phy1 {
-+	status = "disabled";
-+};
-+
-+&sdio {
-+	pinctrl-0 = <&pmx_sdio_cd>;
-+	pinctrl-names = "default";
-+	status = "okay";
-+	cd-gpios = <&gpio0 28 9>;
-+};
-+
-+&uart0 {
-+	status = "okay";
-+};
-+
-+&usb0 {
-+	status = "okay";
-+};
diff --git a/target/linux/kirkwood/patches-5.15/100-ib62x0.patch b/target/linux/kirkwood/patches-5.15/100-ib62x0.patch
deleted file mode 100644
index 0637c24b63..0000000000
--- a/target/linux/kirkwood/patches-5.15/100-ib62x0.patch
+++ /dev/null
@@ -1,53 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-ib62x0.dts
-+++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts
-@@ -6,7 +6,14 @@
- 
- / {
- 	model = "RaidSonic ICY BOX IB-NAS62x0 (Rev B)";
--	compatible = "raidsonic,ib-nas6210-b", "raidsonic,ib-nas6220-b", "raidsonic,ib-nas6210", "raidsonic,ib-nas6220", "raidsonic,ib-nas62x0", "marvell,kirkwood-88f6281", "marvell,kirkwood";
-+	compatible = "raidsonic,ib-nas62x0", "marvell,kirkwood-88f6281", "marvell,kirkwood";
-+
-+	aliases {
-+		led-boot = &led_green_os;
-+		led-failsafe = &led_red_os;
-+		led-running = &led_green_os;
-+		led-upgrade = &led_red_os;
-+	};
- 
- 	memory {
- 		device_type = "memory";
-@@ -81,12 +88,12 @@
- 			     &pmx_led_usb_transfer>;
- 		pinctrl-names = "default";
- 
--		green-os {
-+		led_green_os: green-os {
- 			label = "ib62x0:green:os";
- 			gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;
--			default-state = "keep";
-+			default-state = "on";
- 		};
--		red-os {
-+		led_red_os: red-os {
- 			label = "ib62x0:red:os";
- 			gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
- 		};
-@@ -118,13 +125,13 @@
- 	};
- 
- 	partition at 100000 {
--		label = "uImage";
--		reg = <0x0100000 0x600000>;
-+		label = "second stage u-boot";
-+		reg = <0x100000 0x200000>;
- 	};
- 
--	partition at 700000 {
--		label = "root";
--		reg = <0x0700000 0xf900000>;
-+	partition at 200000 {
-+		label = "ubi";
-+		reg = <0x200000 0xfe00000>;
- 	};
- 
- };
diff --git a/target/linux/kirkwood/patches-5.15/101-iconnect.patch b/target/linux/kirkwood/patches-5.15/101-iconnect.patch
deleted file mode 100644
index 935e2dfcf5..0000000000
--- a/target/linux/kirkwood/patches-5.15/101-iconnect.patch
+++ /dev/null
@@ -1,80 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-iconnect.dts
-+++ b/arch/arm/boot/dts/kirkwood-iconnect.dts
-@@ -8,6 +8,13 @@
- 	model = "Iomega Iconnect";
- 	compatible = "iom,iconnect-1.1", "iom,iconnect", "marvell,kirkwood-88f6281", "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_power_blue;
-+		led-failsafe = &led_power_red;
-+		led-running = &led_power_blue;
-+		led-upgrade = &led_power_red;
-+	};
-+
- 	memory {
- 		device_type = "memory";
- 		reg = <0x00000000 0x10000000>;
-@@ -16,8 +23,6 @@
- 	chosen {
- 		bootargs = "console=ttyS0,115200n8 earlyprintk";
- 		stdout-path = &uart0;
--		linux,initrd-start = <0x4500040>;
--		linux,initrd-end   = <0x4800000>;
- 	};
- 
- 	ocp at f1000000 {
-@@ -89,12 +94,12 @@
- 			gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
- 			default-state = "on";
- 		};
--		power-blue {
-+		led_power_blue: power-blue {
- 			label = "power:blue";
- 			gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
--			default-state = "keep";
-+			default-state = "on";
- 		};
--		power-red {
-+		led_power_red: power-red {
- 			label = "power:red";
- 			gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
- 		};
-@@ -146,28 +151,23 @@
- 	status = "okay";
- 
- 	partition at 0 {
--		label = "uboot";
--		reg = <0x0000000 0xc0000>;
-+		label = "u-boot";
-+		reg = <0x0000000 0xe0000>;
- 	};
- 
--	partition at a0000 {
--		label = "env";
--		reg = <0xa0000 0x20000>;
-+	partition at e0000 {
-+		label = "u-boot environment";
-+		reg = <0xe0000 0x100000>;
- 	};
- 
- 	partition at 100000 {
--		label = "zImage";
--		reg = <0x100000 0x300000>;
--	};
--
--	partition at 540000 {
--		label = "initrd";
--		reg = <0x540000 0x300000>;
-+		label = "second stage u-boot";
-+		reg = <0x100000 0x200000>;
- 	};
- 
--	partition at 980000 {
--		label = "boot";
--		reg = <0x980000 0x1f400000>;
-+	partition at 200000 {
-+		label = "ubi";
-+		reg = <0x200000 0x1fe00000>;
- 	};
- };
- 
diff --git a/target/linux/kirkwood/patches-5.15/102-dockstar.patch b/target/linux/kirkwood/patches-5.15/102-dockstar.patch
deleted file mode 100644
index 127f84962c..0000000000
--- a/target/linux/kirkwood/patches-5.15/102-dockstar.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-dockstar.dts
-+++ b/arch/arm/boot/dts/kirkwood-dockstar.dts
-@@ -8,6 +8,13 @@
- 	model = "Seagate FreeAgent Dockstar";
- 	compatible = "seagate,dockstar", "marvell,kirkwood-88f6281", "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_health;
-+		led-failsafe = &led_fault;
-+		led-running = &led_health;
-+		led-upgrade = &led_fault;
-+	};
-+
- 	memory {
- 		device_type = "memory";
- 		reg = <0x00000000 0x8000000>;
-@@ -42,12 +49,12 @@
- 		pinctrl-0 = <&pmx_led_green &pmx_led_orange>;
- 		pinctrl-names = "default";
- 
--		health {
-+		led_health: health {
- 			label = "status:green:health";
- 			gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
--			default-state = "keep";
-+			default-state = "on";
- 		};
--		fault {
-+		led_fault: fault {
- 			label = "status:orange:fault";
- 			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
- 		};
-@@ -78,18 +85,22 @@
- 
- 	partition at 0 {
- 		label = "u-boot";
--		reg = <0x0000000 0x100000>;
--		read-only;
-+		reg = <0x0000000 0xe0000>;
-+	};
-+
-+	partition at e0000 {
-+		label = "u-boot environment";
-+		reg = <0xe0000 0x100000>;
- 	};
- 
- 	partition at 100000 {
--		label = "uImage";
--		reg = <0x0100000 0x400000>;
-+		label = "second stage u-boot";
-+		reg = <0x100000 0x200000>;
- 	};
- 
--	partition at 500000 {
--		label = "data";
--		reg = <0x0500000 0xfb00000>;
-+	partition at 200000 {
-+		label = "ubi";
-+		reg = <0x200000 0xfe00000>;
- 	};
- };
- 
diff --git a/target/linux/kirkwood/patches-5.15/103-iomega-ix2-200.patch b/target/linux/kirkwood/patches-5.15/103-iomega-ix2-200.patch
deleted file mode 100644
index 9313b4bc3e..0000000000
--- a/target/linux/kirkwood/patches-5.15/103-iomega-ix2-200.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
-+++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
-@@ -8,6 +8,13 @@
- 	model = "Iomega StorCenter ix2-200";
- 	compatible = "iom,ix2-200", "marvell,kirkwood-88f6281", "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_power;
-+		led-failsafe = &led_health;
-+		led-running = &led_power;
-+		led-upgrade = &led_health;
-+	};
-+
- 	memory {
- 		device_type = "memory";
- 		reg = <0x00000000 0x10000000>;
-@@ -127,16 +134,16 @@
- 			      &pmx_led_rebuild &pmx_led_health >;
- 		pinctrl-names = "default";
- 
--		power_led {
-+		led_power: power_led {
- 			label = "status:white:power_led";
- 			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
--			default-state = "keep";
-+			default-state = "on";
- 		};
- 		rebuild_led {
- 			label = "status:white:rebuild_led";
- 			gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
- 		};
--		health_led {
-+		led_health: health_led {
- 			label = "status:red:health_led";
- 			gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
- 		};
-@@ -186,18 +193,18 @@
- 	};
- 
- 	partition at a0000 {
--		label = "env";
-+		label = "u-boot environment";
- 		reg = <0xa0000 0x20000>;
- 		read-only;
- 	};
- 
- 	partition at 100000 {
--		label = "uImage";
-+		label = "kernel";
- 		reg = <0x100000 0x300000>;
- 	};
- 
- 	partition at 400000 {
--		label = "rootfs";
-+		label = "ubi";
- 		reg = <0x400000 0x1C00000>;
- 	};
- };
-@@ -211,7 +218,7 @@
- };
- 
- &eth0 {
--	status = "okay";
-+	status = "disabled";
- 	ethernet0-port at 0 {
- 		speed = <1000>;
- 		duplex = <1>;
diff --git a/target/linux/kirkwood/patches-5.15/105-linksys-viper-dts.patch b/target/linux/kirkwood/patches-5.15/105-linksys-viper-dts.patch
deleted file mode 100644
index d56a469d94..0000000000
--- a/target/linux/kirkwood/patches-5.15/105-linksys-viper-dts.patch
+++ /dev/null
@@ -1,59 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-linksys-viper.dts
-+++ b/arch/arm/boot/dts/kirkwood-linksys-viper.dts
-@@ -24,6 +24,10 @@
- 	};
- 
- 	aliases {
-+		led-boot = &led_white_health;
-+		led-failsafe = &led_white_health;
-+		led-running = &led_white_health;
-+		led-upgrade = &led_white_health;
- 		serial0 = &uart0;
- 	};
- 
-@@ -56,9 +60,10 @@
- 		pinctrl-0 = < &pmx_led_white_health &pmx_led_white_pulse >;
- 		pinctrl-names = "default";
- 
--		white-health {
-+		led_white_health: white-health {
- 			label = "viper:white:health";
- 			gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
-+			default-state = "on";
- 		};
- 
- 		white-pulse {
-@@ -114,23 +119,23 @@
- 		};
- 
- 		partition at 200000 {
--			label = "kernel";
--			reg = <0x200000 0x2A0000>;
-+			label = "kernel1";
-+			reg = <0x200000 0x1A00000>;
- 		};
- 
--		partition at 4a0000 {
--			label = "rootfs";
--			reg = <0x4A0000 0x1760000>;
-+		partition at 500000 {
-+			label = "rootfs1";
-+			reg = <0x500000 0x1700000>;
- 		};
- 
- 		partition at 1c00000 {
--			label = "alt_kernel";
--			reg = <0x1C00000 0x2A0000>;
-+			label = "kernel2";
-+			reg = <0x1C00000 0x1A00000>;
- 		};
- 
--		partition at 1ea0000 {
--			label = "alt_rootfs";
--			reg = <0x1EA0000 0x1760000>;
-+		partition at 1f00000 {
-+			label = "rootfs2";
-+			reg = <0x1F00000 0x1700000>;
- 		};
- 
- 		partition at 3600000 {
diff --git a/target/linux/kirkwood/patches-5.15/106-goflexnet.patch b/target/linux/kirkwood/patches-5.15/106-goflexnet.patch
deleted file mode 100644
index 82cf90841e..0000000000
--- a/target/linux/kirkwood/patches-5.15/106-goflexnet.patch
+++ /dev/null
@@ -1,53 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-goflexnet.dts
-+++ b/arch/arm/boot/dts/kirkwood-goflexnet.dts
-@@ -8,6 +8,13 @@
- 	model = "Seagate GoFlex Net";
- 	compatible = "seagate,goflexnet", "marvell,kirkwood-88f6281", "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_health;
-+		led-failsafe = &led_fault;
-+		led-running = &led_health;
-+		led-upgrade = &led_fault;
-+	};
-+
- 	memory {
- 		device_type = "memory";
- 		reg = <0x00000000 0x8000000>;
-@@ -85,12 +92,12 @@
- 			    >;
- 		pinctrl-names = "default";
- 
--		health {
-+		led_health: health {
- 			label = "status:green:health";
- 			gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
--			default-state = "keep";
-+			default-state = "on";
- 		};
--		fault {
-+		led_fault: fault {
- 			label = "status:orange:fault";
- 			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
- 		};
-@@ -159,18 +166,8 @@
- 	};
- 
- 	partition at 100000 {
--		label = "uImage";
--		reg = <0x0100000 0x400000>;
--	};
--
--	partition at 500000 {
--		label = "pogoplug";
--		reg = <0x0500000 0x2000000>;
--	};
--
--	partition at 2500000 {
--		label = "root";
--		reg = <0x02500000 0xd800000>;
-+		label = "ubi";
-+		reg = <0x0100000 0x0ff00000>;
- 	};
- };
- 
diff --git a/target/linux/kirkwood/patches-5.15/107-01-zyxel-nsa3x0-common-nand-partitions.patch b/target/linux/kirkwood/patches-5.15/107-01-zyxel-nsa3x0-common-nand-partitions.patch
deleted file mode 100644
index df654033fd..0000000000
--- a/target/linux/kirkwood/patches-5.15/107-01-zyxel-nsa3x0-common-nand-partitions.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi
-+++ b/arch/arm/boot/dts/kirkwood-nsa3x0-common.dtsi
-@@ -112,40 +112,16 @@
- 
- 	partition at 0 {
- 		label = "uboot";
--		reg = <0x0000000 0x0100000>;
-+		reg = <0x0000000 0x00c0000>;
- 		read-only;
- 	};
- 	partition at 100000 {
- 		label = "uboot_env";
--		reg = <0x0100000 0x0080000>;
-+		reg = <0x00c0000 0x0080000>;
- 	};
--	partition at 180000 {
--		label = "key_store";
--		reg = <0x0180000 0x0080000>;
--	};
--	partition at 200000 {
--		label = "info";
--		reg = <0x0200000 0x0080000>;
--	};
--	partition at 280000 {
--		label = "etc";
--		reg = <0x0280000 0x0a00000>;
--	};
--	partition at c80000 {
--		label = "kernel_1";
--		reg = <0x0c80000 0x0a00000>;
--	};
--	partition at 1680000 {
--		label = "rootfs1";
--		reg = <0x1680000 0x2fc0000>;
--	};
--	partition at 4640000 {
--		label = "kernel_2";
--		reg = <0x4640000 0x0a00000>;
--	};
--	partition at 5040000 {
--		label = "rootfs2";
--		reg = <0x5040000 0x2fc0000>;
-+	partition at 140000 {
-+		label = "ubi";
-+		reg = <0x0140000 0x7ec0000>;
- 	};
- };
- 
diff --git a/target/linux/kirkwood/patches-5.15/107-03-nsa325.patch b/target/linux/kirkwood/patches-5.15/107-03-nsa325.patch
deleted file mode 100644
index 374c0895a9..0000000000
--- a/target/linux/kirkwood/patches-5.15/107-03-nsa325.patch
+++ /dev/null
@@ -1,54 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-nsa325.dts
-+++ b/arch/arm/boot/dts/kirkwood-nsa325.dts
-@@ -15,6 +15,13 @@
- 	model = "ZyXEL NSA325";
- 	compatible = "zyxel,nsa325", "marvell,kirkwood-88f6282", "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_green_sys;
-+		led-failsafe = &led_orange_sys;
-+		led-running = &led_green_sys;
-+		led-upgrade = &led_orange_sys;
-+	};
-+
- 	memory {
- 		device_type = "memory";
- 		reg = <0x00000000 0x20000000>;
-@@ -162,17 +169,19 @@
- 			     &pmx_led_hdd1_green &pmx_led_hdd1_red>;
- 		pinctrl-names = "default";
- 
--		green-sys {
-+		led_green_sys: green-sys {
- 			label = "nsa325:green:sys";
- 			gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
-+			default-state = "on";
- 		};
--		orange-sys {
-+		led_orange_sys: orange-sys {
- 			label = "nsa325:orange:sys";
- 			gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
- 		};
- 		green-hdd1 {
- 			label = "nsa325:green:hdd1";
- 			gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "ata1";
- 		};
- 		red-hdd1 {
- 			label = "nsa325:red:hdd1";
-@@ -181,6 +190,7 @@
- 		green-hdd2 {
- 			label = "nsa325:green:hdd2";
- 			gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "ata2";
- 		};
- 		red-hdd2 {
- 			label = "nsa325:red:hdd2";
-@@ -189,6 +199,7 @@
- 		green-usb {
- 			label = "nsa325:green:usb";
- 			gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
-+			linux,default-trigger = "usb-host";
- 		};
- 		green-copy {
- 			label = "nsa325:green:copy";
diff --git a/target/linux/kirkwood/patches-5.15/109-pogoplug_v4.patch b/target/linux/kirkwood/patches-5.15/109-pogoplug_v4.patch
deleted file mode 100644
index 4273eb9af1..0000000000
--- a/target/linux/kirkwood/patches-5.15/109-pogoplug_v4.patch
+++ /dev/null
@@ -1,87 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts
-+++ b/arch/arm/boot/dts/kirkwood-pogoplug-series-4.dts
-@@ -18,12 +18,20 @@
- 	compatible = "cloudengines,pogoplugv4", "marvell,kirkwood-88f6192",
- 		     "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_health;
-+		led-failsafe = &led_fault;
-+		led-running = &led_health;
-+		led-upgrade = &led_fault;
-+	};
-+
- 	memory {
- 		device_type = "memory";
- 		reg = <0x00000000 0x08000000>;
- 	};
- 
- 	chosen {
-+		bootargs = "console=ttyS0,115200";
- 		stdout-path = "uart0:115200n8";
- 	};
- 
-@@ -37,8 +45,8 @@
- 		eject {
- 			debounce-interval = <50>;
- 			wakeup-source;
--			linux,code = <KEY_EJECTCD>;
--			label = "Eject Button";
-+			linux,code = <KEY_RESTART>;
-+			label = "Reset";
- 			gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
- 		};
- 	};
-@@ -48,12 +56,12 @@
- 		pinctrl-0 = <&pmx_led_green &pmx_led_red>;
- 		pinctrl-names = "default";
- 
--		health {
-+		led_health: health {
- 			label = "pogoplugv4:green:health";
- 			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
- 			default-state = "on";
- 		};
--		fault {
-+		led_fault: fault {
- 			label = "pogoplugv4:red:fault";
- 			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
- 		};
-@@ -137,29 +145,19 @@
- 		#size-cells = <1>;
- 
- 		partition at 0 {
--			label = "u-boot";
--			reg = <0x00000000 0x200000>;
-+			label = "uboot";
-+			reg = <0x00000000 0x1c0000>;
- 			read-only;
- 		};
- 
--		partition at 200000 {
--			label = "uImage";
--			reg = <0x00200000 0x300000>;
--		};
--
--		partition at 500000 {
--			label = "uImage2";
--			reg = <0x00500000 0x300000>;
--		};
--
--		partition at 800000 {
--			label = "failsafe";
--			reg = <0x00800000 0x800000>;
-+		partition at 1c0000 {
-+			label = "uboot_env";
-+			reg = <0x001c0000 0x40000>;
- 		};
- 
--		partition at 1000000 {
--			label = "root";
--			reg = <0x01000000 0x7000000>;
-+		partition at 200000 {
-+			label = "ubi";
-+			reg = <0x00200000 0x7e00000>;
- 		};
- 	};
- };
diff --git a/target/linux/kirkwood/patches-5.15/110-pogo_e02.patch b/target/linux/kirkwood/patches-5.15/110-pogo_e02.patch
deleted file mode 100644
index fc384d3521..0000000000
--- a/target/linux/kirkwood/patches-5.15/110-pogo_e02.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-pogo_e02.dts
-+++ b/arch/arm/boot/dts/kirkwood-pogo_e02.dts
-@@ -20,6 +20,13 @@
- 	compatible = "cloudengines,pogoe02", "marvell,kirkwood-88f6281",
- 		     "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_health;
-+		led-failsafe = &led_fault;
-+		led-running = &led_health;
-+		led-upgrade = &led_fault;
-+	};
-+
- 	memory {
- 		device_type = "memory";
- 		reg = <0x00000000 0x10000000>;
-@@ -33,12 +40,12 @@
- 	gpio-leds {
- 		compatible = "gpio-leds";
- 
--		health {
-+		led_health: health {
- 			label = "pogo_e02:green:health";
- 			gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
--			default-state = "keep";
-+			default-state = "on";
- 		};
--		fault {
-+		led_fault: fault {
- 			label = "pogo_e02:orange:fault";
- 			gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
- 		};
-@@ -95,24 +102,24 @@
- 	status = "okay";
- 
- 	partition at 0 {
--		label = "u-boot";
--		reg = <0x0000000 0x100000>;
-+		label = "uboot";
-+		reg = <0x0 0xe0000>;
- 		read-only;
- 	};
- 
--	partition at 100000 {
--		label = "uImage";
--		reg = <0x0100000 0x400000>;
-+	partition at e0000 {
-+		label = "uboot_env";
-+		reg = <0xe0000 0x20000>;
- 	};
- 
--	partition at 500000 {
--		label = "pogoplug";
--		reg = <0x0500000 0x2000000>;
-+	partition at 100000 {
-+		label = "second_stage_uboot";
-+		reg = <0x100000 0x100000>;
- 	};
- 
--	partition at 2500000 {
--		label = "root";
--		reg = <0x02500000 0x5b00000>;
-+	partition at 200000 {
-+		label = "ubi";
-+		reg = <0x200000 0x7e00000>;
- 	};
- };
- 
diff --git a/target/linux/kirkwood/patches-5.15/111-l-50.patch b/target/linux/kirkwood/patches-5.15/111-l-50.patch
deleted file mode 100644
index bc933cb610..0000000000
--- a/target/linux/kirkwood/patches-5.15/111-l-50.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-l-50.dts
-+++ b/arch/arm/boot/dts/kirkwood-l-50.dts
-@@ -18,6 +18,13 @@
- 		reg = <0x00000000 0x20000000>;
- 	};
- 
-+	aliases {
-+		led-boot = &led_status_green;
-+		led-failsafe = &led_status_red;
-+		led-running = &led_status_green;
-+		led-upgrade = &led_status_red;
-+	};
-+
- 	chosen {
- 		bootargs = "console=ttyS0,115200n8";
- 		stdout-path = &uart0;
-@@ -95,12 +102,12 @@
- 	leds {
- 		compatible = "gpio-leds";
- 
--		status_green {
-+		led_status_green: status_green {
- 			label = "l-50:green:status";
- 			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
- 		};
- 
--		status_red {
-+		led_status_red: status_red {
- 			label = "l-50:red:status";
- 			gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
- 		};
-@@ -349,13 +356,8 @@
- 	};
- 
- 	partition at 100000 {
--		label = "kernel-1";
--		reg = <0x00100000 0x00800000>;
--	};
--
--	partition at 900000 {
--		label = "rootfs-1";
--		reg = <0x00900000 0x07100000>;
-+		label = "ubi";
-+		reg = <0x00100000 0x07900000>;
- 	};
- 
- 	partition at 7a00000 {
diff --git a/target/linux/kirkwood/patches-5.15/112-sheevaplug.patch b/target/linux/kirkwood/patches-5.15/112-sheevaplug.patch
deleted file mode 100644
index d1ff9884a0..0000000000
--- a/target/linux/kirkwood/patches-5.15/112-sheevaplug.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
-+++ b/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
-@@ -78,13 +78,8 @@
- 	};
- 
- 	partition at 100000 {
--		label = "uImage";
--		reg = <0x0100000 0x400000>;
--	};
--
--	partition at 500000 {
--		label = "root";
--		reg = <0x0500000 0x1fb00000>;
-+		label = "ubi";
-+		reg = <0x0100000 0x1ff00000>;
- 	};
- };
- 
---- a/arch/arm/boot/dts/kirkwood-sheevaplug.dts
-+++ b/arch/arm/boot/dts/kirkwood-sheevaplug.dts
-@@ -13,6 +13,13 @@
- 	model = "Globalscale Technologies SheevaPlug";
- 	compatible = "globalscale,sheevaplug", "marvell,kirkwood-88f6281", "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_health;
-+		led-failsafe = &led_health;
-+		led-running = &led_health;
-+		led-upgrade = &led_health;
-+	};
-+
- 	ocp at f1000000 {
- 		mvsdio at 90000 {
- 			pinctrl-0 = <&pmx_sdio>;
-@@ -28,10 +35,10 @@
- 		pinctrl-0 = <&pmx_led_blue &pmx_led_red>;
- 		pinctrl-names = "default";
- 
--		health {
-+		led_health: health {
- 			label = "sheevaplug:blue:health";
- 			gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
--			default-state = "keep";
-+			default-state = "on";
- 		};
- 
- 		misc {
diff --git a/target/linux/kirkwood/patches-5.15/113-readynas_duo_v2.patch b/target/linux/kirkwood/patches-5.15/113-readynas_duo_v2.patch
deleted file mode 100644
index c6452c55a3..0000000000
--- a/target/linux/kirkwood/patches-5.15/113-readynas_duo_v2.patch
+++ /dev/null
@@ -1,76 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
-+++ b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
-@@ -19,6 +19,13 @@
- 		reg = <0x00000000 0x10000000>;
- 	};
- 
-+	aliases {
-+		led-boot = &led_power;
-+		led-failsafe = &led_power;
-+		led-running = &led_power;
-+		led-upgrade = &led_power;
-+	};
-+
- 	chosen {
- 		bootargs = "console=ttyS0,115200n8 earlyprintk";
- 		stdout-path = &uart0;
-@@ -115,7 +122,7 @@
- 			      &pmx_led_blue_backup >;
- 		pinctrl-names = "default";
- 
--		power_led {
-+		led_power: power_led {
- 			label = "status:blue:power_led";
- 			gpios = <&gpio0 31 GPIO_ACTIVE_LOW>;
- 			default-state = "keep";
-@@ -129,11 +136,13 @@
- 		disk1_led {
- 			label = "status:blue:disk1_led";
- 			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
-+			linux,default-trigger = "ata1";
- 		};
- 
- 		disk2_led {
- 			label = "status:blue:disk2_led";
- 			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
-+			linux,default-trigger = "ata2";
- 		};
- 
- 		backup_led {
-@@ -150,7 +159,13 @@
- 
- 		power-button {
- 			label = "Power Button";
--			linux,code = <KEY_POWER>;
-+			/* Power button and INT pin from PHY are both connected
-+			 * to this GPIO. Every network restart causes PHY restart
-+			 * and button is pressed. It's difficult to use it as
-+			 * KEY_POWER without changes in kernel (or netifd) so
-+			 * the button is configured as regular one.
-+			 */
-+			linux,code = <BTN_1>;
- 			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
- 		};
- 
-@@ -208,18 +223,13 @@
- 	};
- 
- 	partition at 200000 {
--		label = "uImage";
-+		label = "kernel";
- 		reg = <0x0200000 0x600000>;
- 	};
- 
- 	partition at 800000 {
--		label = "minirootfs";
--		reg = <0x0800000 0x1000000>;
--	};
--
--	partition at 1800000 {
--		label = "jffs2";
--		reg = <0x1800000 0x6800000>;
-+		label = "ubi";
-+		reg = <0x0800000 0x7800000>;
- 	};
- };
- 
diff --git a/target/linux/kirkwood/patches-5.15/114-ctera-c-200-v1.patch b/target/linux/kirkwood/patches-5.15/114-ctera-c-200-v1.patch
deleted file mode 100644
index aed79d5dd5..0000000000
--- a/target/linux/kirkwood/patches-5.15/114-ctera-c-200-v1.patch
+++ /dev/null
@@ -1,60 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-c200-v1.dts
-+++ b/arch/arm/boot/dts/kirkwood-c200-v1.dts
-@@ -14,6 +14,14 @@
- 	model = "Ctera C200 V1";
- 	compatible = "ctera,c200-v1", "marvell,kirkwood-88f6281", "marvell,kirkwood";
- 
-+
-+	aliases {
-+		led-boot = &led_status_green;
-+		led-failsafe = &led_status_red;
-+		led-running = &led_status_green;
-+		led-upgrade = &led_status_red;
-+	};
-+
- 	chosen {
- 		bootargs = "console=ttyS0,115200";
- 		stdout-path = &uart0;
-@@ -78,6 +86,7 @@
- 			function-enumerator = <1>;
- 			color = <LED_COLOR_ID_GREEN>;
- 			gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
-+			linux,default-trigger = "ata1";
- 		};
- 
- 		led-2 {
-@@ -85,6 +94,7 @@
- 			function-enumerator = <2>;
- 			color = <LED_COLOR_ID_GREEN>;
- 			gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
-+			linux,default-trigger = "ata2";
- 		};
- 
- 		led-3 {
-@@ -94,13 +104,15 @@
- 			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
- 		};
- 
--		led-4 {
-+		led_status_red: led-4 {
-+			label = "red:status";
- 			function = LED_FUNCTION_STATUS;
- 			color = <LED_COLOR_ID_RED>;
- 			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
- 		};
- 
--		led-5 {
-+		led_status_green: led-5 {
-+			label = "green:status";
- 			function = LED_FUNCTION_STATUS;
- 			color = <LED_COLOR_ID_GREEN>;
- 			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
-@@ -240,7 +252,7 @@
- 	};
- 
- 	partition at 7a00000 {
--		label = "rootfs";
-+		label = "ubi";
- 		reg = <0x7a00000 0x8600000>;
- 	};
- };
diff --git a/target/linux/kirkwood/patches-5.15/115-nsa310s.patch b/target/linux/kirkwood/patches-5.15/115-nsa310s.patch
deleted file mode 100644
index 4c6e08f49c..0000000000
--- a/target/linux/kirkwood/patches-5.15/115-nsa310s.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-nsa310s.dts
-+++ b/arch/arm/boot/dts/kirkwood-nsa310s.dts
-@@ -16,6 +16,13 @@
- 	model = "ZyXEL NSA310S";
- 	compatible = "zyxel,nsa310s", "marvell,kirkwood-88f6702", "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_green_sys;
-+		led-failsafe = &led_red_sys;
-+		led-running = &led_green_sys;
-+		led-upgrade = &led_red_sys;
-+	};
-+
- 	memory {
- 		device_type = "memory";
- 		reg = <0x00000000 0x10000000>;
-@@ -96,14 +103,16 @@
- 			gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
- 		};
- 
--		led-6 {
-+		led_green_sys: led-6 {
-+			label = "nsa310s:green:sys";
- 			function = LED_FUNCTION_STATUS;
- 			color = <LED_COLOR_ID_GREEN>;
- 			gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
- 			linux,default-trigger = "default-on";
- 		};
- 
--		led-7 {
-+		led_red_sys: led-7 {
-+			label = "nsa310s:red:sys";
- 			function = LED_FUNCTION_STATUS;
- 			color = <LED_COLOR_ID_RED>;
- 			gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
diff --git a/target/linux/kirkwood/patches-5.15/116-4i-edge-200.patch b/target/linux/kirkwood/patches-5.15/116-4i-edge-200.patch
deleted file mode 100644
index ffc46c29dc..0000000000
--- a/target/linux/kirkwood/patches-5.15/116-4i-edge-200.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-4i-edge-200.dts
-+++ b/arch/arm/boot/dts/kirkwood-4i-edge-200.dts
-@@ -20,6 +20,13 @@
- 		reg = <0x00000000 0x20000000>;
- 	};
- 
-+	aliases {
-+		led-boot = &led_status_green;
-+		led-failsafe = &led_status_orange;
-+		led-running = &led_status_green;
-+		led-upgrade = &led_status_orange;
-+	};
-+
- 	chosen {
- 		bootargs = "console=ttyS0,115200n8";
- 		stdout-path = &uart0;
-@@ -37,13 +44,15 @@
- 			linux,default-trigger = "mmc0";
- 		};
- 
--		led-2 {
-+		led_status_orange: led-2 {
-+			label = "orange:status";
- 			function = LED_FUNCTION_STATUS;
- 			color = <LED_COLOR_ID_AMBER>;
- 			gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
- 		};
- 
--		led-3 {
-+		led_status_green: led-3 {
-+			label = "green:status";
- 			function = LED_FUNCTION_STATUS;
- 			color = <LED_COLOR_ID_GREEN>;
- 			gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
diff --git a/target/linux/kirkwood/patches-5.15/117-netgear_stora.patch b/target/linux/kirkwood/patches-5.15/117-netgear_stora.patch
deleted file mode 100644
index 3ebef23ac4..0000000000
--- a/target/linux/kirkwood/patches-5.15/117-netgear_stora.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -339,6 +339,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
- 	kirkwood-rs411.dtb \
- 	kirkwood-sheevaplug.dtb \
- 	kirkwood-sheevaplug-esata.dtb \
-+	kirkwood-stora.dtb \
- 	kirkwood-t5325.dtb \
- 	kirkwood-topkick.dtb \
- 	kirkwood-ts219-6281.dtb \
diff --git a/target/linux/kirkwood/patches-5.15/201-enable-sata-port-specific-led-triggers.patch b/target/linux/kirkwood/patches-5.15/201-enable-sata-port-specific-led-triggers.patch
deleted file mode 100644
index 35db065727..0000000000
--- a/target/linux/kirkwood/patches-5.15/201-enable-sata-port-specific-led-triggers.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/arm/mach-mvebu/Kconfig
-+++ b/arch/arm/mach-mvebu/Kconfig
-@@ -116,6 +116,7 @@ config MACH_DOVE
- config MACH_KIRKWOOD
- 	bool "Marvell Kirkwood boards"
- 	depends on ARCH_MULTI_V5
-+	select ARCH_WANT_LIBATA_LEDS
- 	select CPU_FEROCEON
- 	select GPIOLIB
- 	select KIRKWOOD_CLK
diff --git a/target/linux/kirkwood/patches-5.15/202-linksys-find-active-root.patch b/target/linux/kirkwood/patches-5.15/202-linksys-find-active-root.patch
deleted file mode 100644
index 515bb21707..0000000000
--- a/target/linux/kirkwood/patches-5.15/202-linksys-find-active-root.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-The WRT1900AC among other Linksys routers uses a dual-firmware layout.
-Dynamically rename the active partition to "ubi".
-
-Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
----
---- a/drivers/mtd/parsers/ofpart_core.c
-+++ b/drivers/mtd/parsers/ofpart_core.c
-@@ -38,6 +38,8 @@ static bool node_has_compatible(struct d
- 	return of_get_property(pp, "compatible", NULL);
- }
- 
-+static int mangled_rootblock;
-+
- static int parse_fixed_partitions(struct mtd_info *master,
- 				  const struct mtd_partition **pparts,
- 				  struct mtd_part_parser_data *data)
-@@ -47,6 +49,7 @@ static int parse_fixed_partitions(struct
- 	struct mtd_partition *parts;
- 	struct device_node *mtd_node;
- 	struct device_node *ofpart_node;
-+	const char *owrtpart = "ubi";
- 	const char *partname;
- 	struct device_node *pp;
- 	int nr_parts, i, ret = 0;
-@@ -133,9 +136,15 @@ static int parse_fixed_partitions(struct
- 		parts[i].size = of_read_number(reg + a_cells, s_cells);
- 		parts[i].of_node = pp;
- 
--		partname = of_get_property(pp, "label", &len);
--		if (!partname)
--			partname = of_get_property(pp, "name", &len);
-+		if (mangled_rootblock && (i == mangled_rootblock)) {
-+			partname = owrtpart;
-+		} else {
-+			partname = of_get_property(pp, "label", &len);
-+
-+			if (!partname)
-+				partname = of_get_property(pp, "name", &len);
-+		}
-+
- 		parts[i].name = partname;
- 
- 		if (of_get_property(pp, "read-only", &len))
-@@ -252,6 +261,18 @@ static int __init ofpart_parser_init(voi
- 	return 0;
- }
- 
-+static int __init active_root(char *str)
-+{
-+	get_option(&str, &mangled_rootblock);
-+
-+	if (!mangled_rootblock)
-+		return 1;
-+
-+	return 1;
-+}
-+
-+__setup("mangled_rootblock=", active_root);
-+
- static void __exit ofpart_parser_exit(void)
- {
- 	deregister_mtd_parser(&ofpart_parser);
diff --git a/target/linux/kirkwood/patches-5.15/203-blackarmor-nas220.patch b/target/linux/kirkwood/patches-5.15/203-blackarmor-nas220.patch
deleted file mode 100644
index e04a28206a..0000000000
--- a/target/linux/kirkwood/patches-5.15/203-blackarmor-nas220.patch
+++ /dev/null
@@ -1,99 +0,0 @@
---- a/arch/arm/boot/dts/kirkwood-blackarmor-nas220.dts
-+++ b/arch/arm/boot/dts/kirkwood-blackarmor-nas220.dts
-@@ -17,6 +17,13 @@
- 	compatible = "seagate,blackarmor-nas220","marvell,kirkwood-88f6192",
- 		     "marvell,kirkwood";
- 
-+	aliases {
-+		led-boot = &led_status_amber;
-+		led-failsafe = &led_status_amber;
-+		led-running = &led_status_blue;
-+		led-upgrade = &led_status_amber;
-+	};
-+
- 	memory { /* 128 MB */
- 		device_type = "memory";
- 		reg = <0x00000000 0x8000000>;
-@@ -36,14 +43,14 @@
- 		compatible = "gpio-keys";
- 
- 		reset {
--			label = "Reset";
--			linux,code = <KEY_POWER>;
-+			label = "Reset Button";
-+			linux,code = <KEY_RESTART>;
- 			gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
- 		};
- 
--		button {
--			label = "Power";
--			linux,code = <KEY_SLEEP>;
-+		power {
-+			label = "Power Button";
-+			linux,code = <KEY_POWER>;
- 			gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
- 		};
- 	};
-@@ -51,11 +58,27 @@
- 	gpio-leds {
- 		compatible = "gpio-leds";
- 
--		blue-power {
-+		led_power_blue: power_blue {
- 			label = "nas220:blue:power";
- 			gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
- 			linux,default-trigger = "default-on";
- 		};
-+
-+		disk_blue {
-+			label = "nas220:blue:disk";
-+			gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
-+			linux,default-trigger = "disk-activity";
-+		};
-+
-+		led_status_blue: status_blue {
-+			label = "nas220:blue:status";
-+			gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
-+		};
-+
-+		led_status_amber: status_amber {
-+			label = "nas220:amber:status";
-+			gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
-+		};
- 	};
- 
- 	regulators {
-@@ -153,6 +176,33 @@
- 
- &nand {
- 	status = "okay";
-+
-+	partitions {
-+		compatible = "fixed-partitions";
-+
-+		partition at 0 {
-+			label = "uboot";
-+			reg = <0x0 0xa0000>;
-+			read-only;
-+		};
-+
-+		partition at a0000 {
-+			label = "uboot-env";
-+			reg = <0xa0000 0x10000>;
-+			read-only;
-+		};
-+
-+		partition at b0000 {
-+			label = "reserved";
-+			reg = <0xb0000 0x10000>;
-+			read-only;
-+		};
-+
-+		partition at c0000 {
-+			label = "ubi";
-+			reg = <0xc0000 0x1e80000>;
-+		};
-+	};
- };
- 
- &mdio {



From lede-commits at lists.infradead.org  Sun Mar 24 13:11:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:11:03 -0400
Subject: [openwrt/openwrt]  ath79: register all ttys as Linux console for
 ELECOM WAB-I1750-PS
In-Reply-To: <171131106366.1435683.5652198902205669264@git-01.infra.openwrt.org>
References: <171131106366.1435683.5652198902205669264@git-01.infra.openwrt.org>
Message-ID: <mailman.18975.1711311067.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/342f55eeb3fda03b9aef9238f4d3bf6e4258192d

commit 342f55eeb3fda03b9aef9238f4d3bf6e4258192d
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Tue Mar 12 18:16:12 2024 +0900

    ath79: register all ttys as Linux console for ELECOM WAB-I1750-PS
    
    Register ttyS0 and ttyATH1 as Linux console on ELECOM WAB-I1750-PS.
    ttyS0 provides "SERVICE" port and internal pin header for debugging and
    recoverying by maker, ttyATH1 provides "SERIAL" port for configuration
    by users.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts b/target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts
index 668f0ceadd..2d94f0c827 100644
--- a/target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts
+++ b/target/linux/ath79/dts/qca9558_elecom_wab-i1750-ps.dts
@@ -5,6 +5,10 @@
 / {
 	compatible = "elecom,wab-i1750-ps", "qca,qca9558";
 	model = "ELECOM WAB-I1750-PS";
+
+	chosen {
+		bootargs = "console=ttyATH1,115200n8 console=ttyS0,115200n8";
+	};
 };
 
 &gpio {



From lede-commits at lists.infradead.org  Sun Mar 24 13:11:04 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:11:04 -0400
Subject: [openwrt/openwrt]  ath79: register ttyATH1 as OpenWrt console for
 ELECOM WAB-I1750-PS
In-Reply-To: <171131106366.1435683.5652198902205669264@git-01.infra.openwrt.org>
References: <171131106366.1435683.5652198902205669264@git-01.infra.openwrt.org>
Message-ID: <mailman.18976.1711311067.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a5259c237ef5cc20792668fac3221474ce61683b

commit a5259c237ef5cc20792668fac3221474ce61683b
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Mon Mar 11 23:30:26 2024 +0900

    ath79: register ttyATH1 as OpenWrt console for ELECOM WAB-I1750-PS
    
    Add a hotplug script and add ttyATH1 on ELECOM WAB-I1750-PS to
    /etc/inittab while booting for using that console as an OpenWrt console.
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
---
 .../etc/hotplug.d/tty/10-inittab-add-console       | 29 ++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/tty/10-inittab-add-console b/target/linux/ath79/generic/base-files/etc/hotplug.d/tty/10-inittab-add-console
new file mode 100644
index 0000000000..118430b154
--- /dev/null
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/tty/10-inittab-add-console
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. /lib/functions.sh
+
+inittab_add_console() {
+	local console
+
+	case $(board_name) in
+	elecom,wab-i1750-ps)
+		console="ttyATH1"
+		;;
+	*)
+		return
+		;;
+	esac
+
+	[ "$DEVNAME" != "$console" ] && \
+		return
+
+	# check existing (commented out) entry
+	grep -q "^#\{0,1\}${console}::askfirst" "/etc/inittab" && \
+		return
+
+	# append entry
+	echo -e "\n${console}::askfirst:/usr/libexec/login.sh" \
+		>> /etc/inittab
+}
+
+[ "${ACTION}" = "add" ] && inittab_add_console



From lede-commits at lists.infradead.org  Sun Mar 24 13:12:17 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:12:17 -0400
Subject: [openwrt/openwrt]  linux-firmware: package Intel AX201 firmware
In-Reply-To: <171131113733.1437791.8425984002753924887@git-01.infra.openwrt.org>
References: <171131113733.1437791.8425984002753924887@git-01.infra.openwrt.org>
Message-ID: <mailman.18977.1711311141.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/8db83d4cc0fb4544ddec5fb50de73b8b4f64fb3d

commit 8db83d4cc0fb4544ddec5fb50de73b8b4f64fb3d
Author: Petr ?tetiar <ynezz at true.cz>
AuthorDate: Mon Mar 4 07:16:19 2024 +0000

    linux-firmware: package Intel AX201 firmware
    
    Alexander reported following:
    
     iwlwifi 0000:00:14.3: Detected crf-id 0x3617, cnv-id 0x20000302 wfpm id 0x80000000
     iwlwifi 0000:00:14.3: PCI dev a0f0/0074, rev=0x351, rfid=0x10a100
     iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-77.ucode failed with error -2
    
    It seems, that as of the current date, the highest firmware API version
    supported by Linux 6.8-rc7 is still 77.
    
    Closes: #14771
    Signed-off-by: Petr ?tetiar <ynezz at true.cz>
---
 package/firmware/linux-firmware/intel.mk | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/package/firmware/linux-firmware/intel.mk b/package/firmware/linux-firmware/intel.mk
index 0719e2b28c..f6acb45d48 100644
--- a/package/firmware/linux-firmware/intel.mk
+++ b/package/firmware/linux-firmware/intel.mk
@@ -184,6 +184,13 @@ define Package/iwlwifi-firmware-ax200/install
 endef
 $(eval $(call BuildPackage,iwlwifi-firmware-ax200))
 
+Package/iwlwifi-firmware-ax201 = $(call Package/firmware-default,Intel AX201 firmware)
+define Package/iwlwifi-firmware-ax201/install
+	$(INSTALL_DIR) $(1)/lib/firmware
+	$(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-QuZ-a0-hr-b0-77.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-ax201))
+
 Package/iwlwifi-firmware-ax210 = $(call Package/firmware-default,Intel AX210 firmware)
 define Package/iwlwifi-firmware-ax210/install
 	$(INSTALL_DIR) $(1)/lib/firmware



From lede-commits at lists.infradead.org  Sun Mar 24 13:19:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:19:42 -0400
Subject: [openwrt/openwrt]  imx: add imx8m support
In-Reply-To: <171131158232.1447868.9975622440399992208@git-01.infra.openwrt.org>
References: <171131158232.1447868.9975622440399992208@git-01.infra.openwrt.org>
Message-ID: <mailman.18978.1711311586.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ae8bf1a26e15f89d17deca031253c3261b3a6c36

commit ae8bf1a26e15f89d17deca031253c3261b3a6c36
Author: Tim Harvey <tharvey at gateworks.com>
AuthorDate: Mon Jan 8 14:04:15 2024 -0800

    imx: add imx8m support
    
    Add imx8m support:
     - add a cortexa53 subtarget to imx
     - move ARCH and KERNELNAME to subtargets
     - account for kernel modules that are not used for cortexa53
    
    No device-specific targets or firmware images are created yet but all
    imx8m* dtbs will be built.
    
    enabling CONFIG_TARGET_ROOTFS_INITRAMFS results in
    openwrt-imx-cortexa53-imx8m-initramfs-kernel.bin which has been
    successfully booted on an imx8mm-evk using the following:
    
    u-boot=> tftpboot $fdt_addr_r image-imx8mm-evk.dtb && \
    tftpboot $kernel_addr_r openwrt-imx-cortexa53-imx8m-initramfs-kernel.bin && \
    booti $kernel_addr_r - $fdt_addr_r
    
    Signed-off-by: Tim Harvey <tharvey at gateworks.com>
---
 package/kernel/linux/modules/crypto.mk    |   9 +-
 package/kernel/linux/modules/video.mk     |   4 +-
 target/linux/imx/Makefile                 |   5 +-
 target/linux/imx/cortexa53/config-default | 164 ++++++++++++++++++++++++++++++
 target/linux/imx/cortexa53/target.mk      |   8 ++
 target/linux/imx/cortexa7/target.mk       |   2 +
 target/linux/imx/cortexa9/target.mk       |   2 +
 target/linux/imx/image/cortexa53.mk       |  15 +++
 8 files changed, 200 insertions(+), 9 deletions(-)

diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 21b7aa51bd..be9893d453 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -319,7 +319,8 @@ define KernelPackage/crypto-ghash/arm-ce
   AUTOLOAD+=$(call AutoLoad,09,ghash-arm-ce)
 endef
 
-KernelPackage/crypto-ghash/imx=$(KernelPackage/crypto-ghash/arm-ce)
+KernelPackage/crypto-ghash/imx/cortexa7=$(KernelPackage/crypto-ghash/arm-ce)
+KernelPackage/crypto-ghash/imx/cortexa9=$(KernelPackage/crypto-ghash/arm-ce)
 KernelPackage/crypto-ghash/ipq40xx=$(KernelPackage/crypto-ghash/arm-ce)
 KernelPackage/crypto-ghash/mvebu/cortexa9=$(KernelPackage/crypto-ghash/arm-ce)
 
@@ -952,7 +953,8 @@ define KernelPackage/crypto-sha1/aarch64-ce
   AUTOLOAD+=$(call AutoLoad,09,sha1-ce)
 endef
 
-KernelPackage/crypto-sha1/imx=$(KernelPackage/crypto-sha1/arm-neon)
+KernelPackage/crypto-sha1/imx/cortexa7=$(KernelPackage/crypto-sha1/arm-neon)
+KernelPackage/crypto-sha1/imx/cortexa9=$(KernelPackage/crypto-sha1/arm-neon)
 KernelPackage/crypto-sha1/ipq40xx=$(KernelPackage/crypto-sha1/arm-neon)
 KernelPackage/crypto-sha1/mediatek/filogic=$(KernelPackage/crypto-sha1/aarch64-ce)
 KernelPackage/crypto-sha1/mediatek/mt7622=$(KernelPackage/crypto-sha1/aarch64-ce)
@@ -1085,7 +1087,8 @@ define KernelPackage/crypto-sha512/aarch64
   AUTOLOAD+=$(call AutoLoad,09,sha512-arm64)
 endef
 
-KernelPackage/crypto-sha512/imx=$(KernelPackage/crypto-sha512/arm)
+KernelPackage/crypto-sha512/imx/cortexa7=$(KernelPackage/crypto-sha512/arm)
+KernelPackage/crypto-sha512/imx/cortexa9=$(KernelPackage/crypto-sha512/arm)
 KernelPackage/crypto-sha512/ipq40xx=$(KernelPackage/crypto-sha512/arm)
 KernelPackage/crypto-sha512/mvebu/cortexa9=$(KernelPackage/crypto-sha512/arm)
 
diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
index 16c4f51f5b..b282d7695c 100644
--- a/package/kernel/linux/modules/video.mk
+++ b/package/kernel/linux/modules/video.mk
@@ -448,7 +448,7 @@ $(eval $(call KernelPackage,drm-imx-hdmi))
 define KernelPackage/drm-imx-ldb
   SUBMENU:=$(VIDEO_MENU)
   TITLE:=Freescale i.MX LVDS DRM support
-  DEPENDS:=+kmod-backlight kmod-drm-imx
+  DEPENDS:=@(TARGET_imx&&!TARGET_imx_cortexa53) +kmod-backlight kmod-drm-imx
   KCONFIG:=CONFIG_DRM_IMX_LDB \
 	CONFIG_DRM_PANEL_SIMPLE \
 	CONFIG_DRM_PANEL=y \
@@ -1182,7 +1182,7 @@ $(eval $(call KernelPackage,video-dma))
 
 define KernelPackage/video-coda
   TITLE:=i.MX VPU support
-  DEPENDS:=@(TARGET_imx&&!TARGET_imx_cortexa7) +kmod-video-mem2mem +kmod-video-dma
+  DEPENDS:=@(TARGET_imx&&TARGET_imx_cortexa9) +kmod-video-mem2mem +kmod-video-dma
   KCONFIG:= \
   	CONFIG_VIDEO_CODA \
   	CONFIG_VIDEO_IMX_VDOA
diff --git a/target/linux/imx/Makefile b/target/linux/imx/Makefile
index 8fd6f23950..4f70933d18 100644
--- a/target/linux/imx/Makefile
+++ b/target/linux/imx/Makefile
@@ -4,18 +4,15 @@
 
 include $(TOPDIR)/rules.mk
 
-ARCH:=arm
 BOARD:=imx
 BOARDNAME:=NXP i.MX
 FEATURES:=audio display fpu gpio pcie rtc usb usbgadget squashfs targz nand ubifs boot-part rootfs-part
-SUBTARGETS:=cortexa7 cortexa9
+SUBTARGETS:=cortexa7 cortexa9 cortexa53
 
 KERNEL_PATCHVER:=6.1
 
 include $(INCLUDE_DIR)/target.mk
 
-KERNELNAME:=zImage dtbs
-
 DEFAULT_PACKAGES += uboot-envtools mkf2fs e2fsprogs blkid
 
 $(eval $(call BuildTarget))
diff --git a/target/linux/imx/cortexa53/config-default b/target/linux/imx/cortexa53/config-default
new file mode 100644
index 0000000000..2076395ee8
--- /dev/null
+++ b/target/linux/imx/cortexa53/config-default
@@ -0,0 +1,164 @@
+CONFIG_64BIT=y
+CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
+CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
+CONFIG_ARCH_MMAP_RND_BITS=18
+CONFIG_ARCH_MMAP_RND_BITS_MAX=24
+CONFIG_ARCH_MMAP_RND_BITS_MIN=18
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
+CONFIG_ARCH_NXP=y
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_WANTS_NO_INSTR=y
+CONFIG_ARCH_WANTS_THP_SWAP=y
+CONFIG_ARM64=y
+CONFIG_ARM64_4K_PAGES=y
+CONFIG_ARM64_ERRATUM_843419=y
+CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
+CONFIG_ARM64_PAGE_SHIFT=12
+CONFIG_ARM64_PA_BITS=48
+CONFIG_ARM64_PA_BITS_48=y
+CONFIG_ARM64_TAGGED_ADDR_ABI=y
+CONFIG_ARM64_VA_BITS=39
+CONFIG_ARM64_VA_BITS_39=y
+CONFIG_ARM_AMBA=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_V2M=y
+CONFIG_ARM_GIC_V3=y
+CONFIG_ARM_GIC_V3_ITS=y
+CONFIG_ARM_GIC_V3_ITS_PCI=y
+# CONFIG_ARM_IMX8M_DDRC_DEVFREQ is not set
+CONFIG_ARM_IMX_BUS_DEVFREQ=y
+CONFIG_ARM_IMX_CPUFREQ_DT=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_CC_HAVE_SHADOW_CALL_STACK=y
+CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
+CONFIG_CLK_IMX8MM=y
+CONFIG_CLK_IMX8MN=y
+CONFIG_CLK_IMX8MP=y
+CONFIG_CLK_IMX8MQ=y
+CONFIG_CMA=y
+CONFIG_CMA_AREAS=7
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_CMA_DEBUGFS is not set
+# CONFIG_CMA_SYSFS is not set
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_CONTIG_ALLOC=y
+CONFIG_CRYPTO_AES_ARM64=y
+CONFIG_CRYPTO_AES_ARM64_CE=y
+CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
+CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
+CONFIG_CRYPTO_GHASH_ARM64_CE=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_SHA1_ARM64_CE=y
+CONFIG_CRYPTO_SHA256_ARM64=y
+CONFIG_CRYPTO_SHA2_ARM64_CE=y
+CONFIG_CRYPTO_SHA512_ARM64=y
+CONFIG_CRYPTO_SHA512_ARM64_CE=y
+# CONFIG_DRM_IMX_DCSS is not set
+# CONFIG_DEVFREQ_GOV_PASSIVE is not set
+# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
+# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
+# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+# CONFIG_DEVFREQ_THERMAL is not set
+# CONFIG_DMA_CMA is not set
+CONFIG_DMA_DIRECT_REMAP=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_DWMAC_DWC_QOS_ETH=y
+CONFIG_DWMAC_GENERIC=y
+CONFIG_DWMAC_IMX8=y
+CONFIG_EXTCON_USB_GPIO=y
+CONFIG_EXTRA_FIRMWARE="imx/sdma/sdma-imx7d.bin"
+CONFIG_EXTRA_FIRMWARE_DIR="firmware"
+CONFIG_FRAME_POINTER=y
+CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_GENERIC_IOREMAP=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_HW_CONSOLE=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_IMX8MM_THERMAL=y
+CONFIG_IMX_GPCV2=y
+CONFIG_IMX_GPCV2_PM_DOMAINS=y
+CONFIG_INPUT=y
+CONFIG_INTERCONNECT=y
+CONFIG_INTERCONNECT_IMX=y
+CONFIG_INTERCONNECT_IMX8MM=y
+CONFIG_INTERCONNECT_IMX8MN=y
+CONFIG_INTERCONNECT_IMX8MP=y
+CONFIG_INTERCONNECT_IMX8MQ=y
+CONFIG_MEMORY_ISOLATION=y
+# CONFIG_MMC_SDHCI_PCI is not set
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_PARTITION_PERCPU=y
+CONFIG_PCI=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_DW=y
+CONFIG_PCIE_DW_HOST=y
+CONFIG_PCIE_PME=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_IMX6=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCS_XPCS=y
+CONFIG_PGTABLE_LEVELS=3
+CONFIG_PHYLIB_LEDS=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_PHY_FSL_IMX8MQ_USB=y
+CONFIG_PHY_FSL_IMX8M_PCIE=y
+# CONFIG_PHY_MIXEL_LVDS_PHY is not set
+CONFIG_PINCTRL_IMX=y
+CONFIG_PINCTRL_IMX8MM=y
+CONFIG_PINCTRL_IMX8MN=y
+CONFIG_PINCTRL_IMX8MP=y
+CONFIG_PINCTRL_IMX8MQ=y
+CONFIG_PM_DEVFREQ=y
+# CONFIG_PM_DEVFREQ_EVENT is not set
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_REGULATOR_MP5416=y
+CONFIG_REGULATOR_PCA9450=y
+CONFIG_RESET_IMX7=y
+CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
+CONFIG_SOC_IMX8M=y
+CONFIG_SPARSEMEM=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_STMMAC_ETH=y
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_SWIOTLB=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_TIMER_IMX_SYS_CTR=y
+CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
+CONFIG_UNMAP_KERNEL_AT_EL0=y
+CONFIG_USB_CONN_GPIO=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_DUAL_ROLE=y
+# CONFIG_USB_DWC3_GADGET is not set
+# CONFIG_USB_DWC3_HOST is not set
+CONFIG_USB_DWC3_IMX8MP=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PLATFORM=y
+CONFIG_VMAP_STACK=y
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_ZONE_DMA32=y
diff --git a/target/linux/imx/cortexa53/target.mk b/target/linux/imx/cortexa53/target.mk
new file mode 100644
index 0000000000..b9b32d1829
--- /dev/null
+++ b/target/linux/imx/cortexa53/target.mk
@@ -0,0 +1,8 @@
+ARCH:=aarch64
+BOARDNAME:=NXP i.MX with Cortex-A53 (ARM64)
+CPU_TYPE:=cortex-a53
+KERNELNAME:=Image dtbs
+
+define Target/Description
+	Build firmware images for NXP i.MX (Cortex-A53) based boards.
+endef
diff --git a/target/linux/imx/cortexa7/target.mk b/target/linux/imx/cortexa7/target.mk
index 11de87507d..1fec64b00c 100644
--- a/target/linux/imx/cortexa7/target.mk
+++ b/target/linux/imx/cortexa7/target.mk
@@ -1,6 +1,8 @@
+ARCH:=arm
 BOARDNAME:=NXP i.MX with Cortex-A7
 CPU_TYPE:=cortex-a7
 CPU_SUBTYPE:=neon-vfpv4
+KERNELNAME:=zImage dtbs
 
 define Target/Description
 	Build firmware images for NXP i.MX (Cortex-A7) based boards.
diff --git a/target/linux/imx/cortexa9/target.mk b/target/linux/imx/cortexa9/target.mk
index 9bd63c7be1..cc48a8dbd0 100644
--- a/target/linux/imx/cortexa9/target.mk
+++ b/target/linux/imx/cortexa9/target.mk
@@ -1,6 +1,8 @@
+ARCH:=arm
 BOARDNAME:=NXP i.MX with Cortex-A9
 CPU_TYPE:=cortex-a9
 CPU_SUBTYPE:=neon
+KERNELNAME:=zImage dtbs
 
 define Target/Description
 	Build firmware images for NXP i.MX (Cortex-A9) based boards.
diff --git a/target/linux/imx/image/cortexa53.mk b/target/linux/imx/image/cortexa53.mk
new file mode 100644
index 0000000000..d8bf33407b
--- /dev/null
+++ b/target/linux/imx/image/cortexa53.mk
@@ -0,0 +1,15 @@
+define Device/Default
+  PROFILES := Default
+  FILESYSTEMS := squashfs ubifs ext4
+  DEVICE_DTS_DIR := $(DTS_DIR)/freescale
+  KERNEL_INSTALL := 1
+  KERNEL_NAME := Image
+  KERNEL := kernel-bin
+endef
+
+define Device/imx8m
+  DEVICE_VENDOR := NXP
+  DEVICE_MODEL := i.MX8M
+  DEVICE_DTS := $(basename $(notdir $(wildcard $(DTS_DIR)/freescale/imx8m*.dts)))
+endef
+TARGET_DEVICES += imx8m



From lede-commits at lists.infradead.org  Sun Mar 24 13:19:43 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:19:43 -0400
Subject: [openwrt/openwrt]  imx: add Gateworks Venice support
In-Reply-To: <171131158232.1447868.9975622440399992208@git-01.infra.openwrt.org>
References: <171131158232.1447868.9975622440399992208@git-01.infra.openwrt.org>
Message-ID: <mailman.18979.1711311588.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/bd512e368fb488c441ef4c81fd61c89459043f2c

commit bd512e368fb488c441ef4c81fd61c89459043f2c
Author: Tim Harvey <tharvey at gateworks.com>
AuthorDate: Fri Jan 12 11:34:28 2024 -0800

    imx: add Gateworks Venice support
    
    Add support for Gateworks Venice imx8m family of boards:
     - required kernel modules for on-board devices
     - image generation
     - initial network config
     - sysupgrade support
    
    The resulting compressed disk image
    (bin/targets/imx/cortexa53/openwrt-imx-cortexa53-gateworks_venice-squashfs-img.gz)
    can be installed on a Gateworks venice board via U-Boot:
    
    u-boot=> tftpboot $loadaddr openwrt-imx-cortexa53-gateworks_venice-squashfs-img.gz && \
             gzwrite mmc $dev $loadaddr $filesize
    
    WARNING: this will overwrite any boot firmware on the eMMC user hardware
    partition which if being used will brick your board requiring JTAG to
    re-program boot firmware and recover
    
    The compressed disk image contains the partition table and filesystems only
    and that it is expected that boot firmware is installed properly on the
    eMMC boot0 hardware partition. The easiest way to ensure this is to
    use the Gateworks JTAG adapter/process to install the latest boot firmware
    as follows from a Linux host:
      wget http://dev.gateworks.com/jtag/jtag_usbv4
      chmod +x jtag_usbv4
      wget http://dev.gateworks.com/venice/images/firmware-venice-imx8mm.bin
      sudo ./jtag_usbv4 -p firmware-venice-imx8mm.bin
    
    Signed-off-by: Tim Harvey <tharvey at gateworks.com>
---
 .../cortexa53/base-files/etc/board.d/02_network    | 27 +++++++++++
 .../base-files/lib/preinit/79_move_config          | 17 +++++++
 .../cortexa53/base-files/lib/upgrade/platform.sh   | 53 ++++++++++++++++++++++
 target/linux/imx/cortexa53/config-default          | 11 +++++
 target/linux/imx/image/bootscript-gateworks_venice | 41 +++++++++++++++++
 target/linux/imx/image/cortexa53.mk                | 45 ++++++++++++++++++
 6 files changed, 194 insertions(+)

diff --git a/target/linux/imx/cortexa53/base-files/etc/board.d/02_network b/target/linux/imx/cortexa53/base-files/etc/board.d/02_network
new file mode 100644
index 0000000000..c6049824e0
--- /dev/null
+++ b/target/linux/imx/cortexa53/base-files/etc/board.d/02_network
@@ -0,0 +1,27 @@
+. /lib/functions/uci-defaults.sh
+
+board=$(board_name)
+
+board_config_update
+
+case "$board" in
+gw,imx8mm-gw72xx-0x|\
+gw,imx8mp-gw72xx-2x|\
+gw,imx8mm-gw73xx-0x|\
+gw,imx8mp-gw73xx-2x|\
+gw,imx8mm-gw7902-0x)
+	ucidef_set_interfaces_lan_wan 'eth1' 'eth0'
+	;;
+gw,imx8mm-gw7901)
+	ucidef_set_interfaces_lan_wan 'lan2 lan3 lan4' 'lan1'
+	;;
+gateworks,imx8mp-gw74xx)
+	ucidef_set_network_device_path "eth0" "platform/soc at 0/30800000.bus/30bf0000.ethernet"
+	ucidef_set_network_device_path "eth1" "platform/soc at 0/30800000.bus/30be0000.ethernet"
+	ucidef_set_interfaces_lan_wan 'lan1 lan2 lan3 lan4' 'eth1'
+	;;
+esac
+
+board_config_flush
+
+exit 0
diff --git a/target/linux/imx/cortexa53/base-files/lib/preinit/79_move_config b/target/linux/imx/cortexa53/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000000..a9b9a0f458
--- /dev/null
+++ b/target/linux/imx/cortexa53/base-files/lib/preinit/79_move_config
@@ -0,0 +1,17 @@
+. /lib/functions.sh
+. /lib/upgrade/common.sh
+
+move_config() {
+	local board=$(board_name)
+	local partdev
+
+	export_bootdevice && export_partdevice partdev 1 && {
+		mount -o rw,noatime "/dev/$partdev" /mnt
+		[ -f "/mnt/$BACKUP_FILE" ] && {
+			mv -f "/mnt/$BACKUP_FILE" /
+		}
+		umount /mnt
+	}
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/imx/cortexa53/base-files/lib/upgrade/platform.sh b/target/linux/imx/cortexa53/base-files/lib/upgrade/platform.sh
new file mode 100755
index 0000000000..c59a69421a
--- /dev/null
+++ b/target/linux/imx/cortexa53/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,53 @@
+
+enable_image_metadata_check() {
+	case "$(board_name)" in
+	gw,imx8m*)
+		REQUIRE_IMAGE_METADATA=1
+		;;
+	esac
+}
+enable_image_metadata_check
+
+platform_check_image() {
+	local board=$(board_name)
+
+	case "$board" in
+	gw,imx8m*)
+		return 0
+		;;
+	esac
+
+	echo "Sysupgrade is not yet supported on $board."
+	return 1
+}
+
+platform_do_upgrade() {
+	local board=$(board_name)
+
+	case "$board" in
+	gw,imx8m*)
+		export_bootdevice && export_partdevice diskdev 0 || {
+			echo "Unable to find root device."
+			return 1
+		}
+		v "Updating /dev/$diskdev..."
+		get_image "$@" | dd of="/dev/$diskdev" bs=4096 conv=fsync
+		;;
+	esac
+}
+
+platform_copy_config() {
+	local board=$(board_name)
+	local partdev
+
+	case "$board" in
+	gw,imx8m*)
+		export_partdevice partdev 1 && {
+			v "Storing $UPGRADE_BACKUP on /dev/$partdev..."
+			mount -o rw,noatime "/dev/$partdev" /mnt
+			cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
+			umount /mnt
+		}
+		;;
+	esac
+}
diff --git a/target/linux/imx/cortexa53/config-default b/target/linux/imx/cortexa53/config-default
index 2076395ee8..026ddf6708 100644
--- a/target/linux/imx/cortexa53/config-default
+++ b/target/linux/imx/cortexa53/config-default
@@ -45,6 +45,7 @@ CONFIG_CMA_AREAS=7
 # CONFIG_CMA_DEBUG is not set
 # CONFIG_CMA_DEBUGFS is not set
 # CONFIG_CMA_SYSFS is not set
+# CONFIG_COMMON_CLK_BD718XX is not set
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_CONTIG_ALLOC=y
 CONFIG_CRYPTO_AES_ARM64=y
@@ -96,9 +97,16 @@ CONFIG_INTERCONNECT_IMX8MN=y
 CONFIG_INTERCONNECT_IMX8MP=y
 CONFIG_INTERCONNECT_IMX8MQ=y
 CONFIG_MEMORY_ISOLATION=y
+CONFIG_MFD_CORE=y
+CONFIG_MFD_ROHM_BD718XX=y
 # CONFIG_MMC_SDHCI_PCI is not set
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_NEED_SG_DMA_LENGTH=y
+# CONFIG_NET_DSA_MICROCHIP_KSZ8863_SMI is not set
+CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=y
+CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=y
+# CONFIG_NET_DSA_MICROCHIP_KSZ_SPI is not set
+CONFIG_NET_DSA_TAG_KSZ=y
 CONFIG_NOP_USB_XCEIV=y
 CONFIG_PARTITION_PERCPU=y
 CONFIG_PCI=y
@@ -133,8 +141,11 @@ CONFIG_POWER_RESET=y
 CONFIG_POWER_SUPPLY=y
 CONFIG_QUEUED_RWLOCKS=y
 CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_REGULATOR_BD718XX=y
 CONFIG_REGULATOR_MP5416=y
 CONFIG_REGULATOR_PCA9450=y
+CONFIG_REGULATOR_ROHM=y
 CONFIG_RESET_IMX7=y
 CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
 CONFIG_SOC_IMX8M=y
diff --git a/target/linux/imx/image/bootscript-gateworks_venice b/target/linux/imx/image/bootscript-gateworks_venice
new file mode 100644
index 0000000000..062947f27b
--- /dev/null
+++ b/target/linux/imx/image/bootscript-gateworks_venice
@@ -0,0 +1,41 @@
+# distro-config bootscript
+#  - use only well-known variable names provided by U-Boot Distro boot
+#    - devtype - device type script run from (mmc|usb|scsi)
+#    - devnum - device number script run from (0 based int)
+#    - distro_bootpart - partition script run from (0 based int)
+#    - prefix - directory boot script was found in
+#    - kernel_addr_r - address to load kernel image to
+#    - fdt_addr_r - address to load dtb to
+#    - ftdcontroladdr - address dtb is at
+#    - fdt_file{1,2,3,4,5} name of fdt to load
+#    - fdt_overlays - list of fdt overlay files to load and apply
+echo "Gateworks Venice OpenWrt Boot script v1.0"
+
+# determine root device using PARTUUID:
+#  - this avoids any difference beteween uboot's device names/numbers
+#    not matching Linux as device enumeration is not a set API.
+#  - PARTUUID is disk UUID concatenated with partition number
+#    - for MBR disk UUID is unique disk id at offset 440
+#    - for GPT disk UUID is GPT UUID
+#  - for OpenWrt the squasfs rootfs is not readable by U-Boot so we have
+#    a 'boot' partition containing bootscript kernel dtbs followed by the rootfs
+#    partition, therefore we add 1 to the current partition
+setexpr rootpart ${distro_bootpart} + 1 # root on 'next' partition
+part uuid ${devtype} ${devnum}:${rootpart} uuid
+setenv bootargs ${bootargs} console=${console} root=PARTUUID=${uuid} rootfstype=squashfs,ext4,f2fs rootwait
+
+# load dtb (we try fdt_file and then fdt_file{1,2,3,4,5})
+echo "loading DTB..."
+setenv fdt_addr
+setenv fdt_list $fdt_file $fdt_file1 $fdt_file2 $fdt_file3 $fdt_file4 $fdt_file5
+setenv load_fdt 'echo Loading $fdt...; load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${fdt} && setenv fdt_addr ${fdt_addr_r}'
+setenv apply_overlays 'fdt addr $fdt_addr_r && fdt resize && for fdt in "$fdt_overlays"; do load ${devtype} ${devnum}:${distro_bootpart} $loadaddr $prefix/$fdt && fdt apply $loadaddr && echo applied $prefix/$fdt; done'
+for fdt in ${fdt_list}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${fdt}; then run load_fdt; fi; done
+if test -z "$fdt_addr"; then echo "Warning: Using bootloader DTB"; setenv fdt_addr $fdtcontroladdr; fi
+if test -n "$fdt_overlays"; then echo "Applying overlays"; run apply_overlays; fi
+if test -n "$fixfdt"; then echo "Adjusting FDT"; run fixfdt; fi
+
+# load and boot kernel
+echo "loading kernel..."
+load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ${prefix}Image &&
+booti ${kernel_addr_r} - ${fdt_addr}
diff --git a/target/linux/imx/image/cortexa53.mk b/target/linux/imx/image/cortexa53.mk
index d8bf33407b..7458162da3 100644
--- a/target/linux/imx/image/cortexa53.mk
+++ b/target/linux/imx/image/cortexa53.mk
@@ -1,3 +1,30 @@
+define Build/boot-scr
+	rm -f $@-boot.scr
+	mkimage -A arm64 -O linux -T script -C none -a 0 -e 0 \
+		-d bootscript-$(BOOT_SCRIPT) $@-boot.scr
+endef
+
+define Build/boot-img-ext4
+	rm -fR $@.boot
+	mkdir -p $@.boot
+	$(foreach dts,$(DEVICE_DTS), $(CP) $(KDIR)/image-$(dts).dtb $@.boot/$(dts).dtb;)
+	$(CP) $(IMAGE_KERNEL) $@.boot/$(KERNEL_NAME)
+	-$(CP) $@-boot.scr $@.boot/boot.scr
+	make_ext4fs -J -L kernel -l $(CONFIG_TARGET_KERNEL_PARTSIZE)M \
+		$(if $(SOURCE_DATE_EPOCH),-T $(SOURCE_DATE_EPOCH)) \
+		$@.bootimg $@.boot
+endef
+
+define Build/sdcard-img-ext4
+	SIGNATURE="$(IMG_PART_SIGNATURE)" \
+	PARTOFFSET="$(PARTITION_OFFSET)" PADDING=1 \
+		$(if $(filter $(1),efi),GUID="$(IMG_PART_DISKGUID)") $(SCRIPT_DIR)/gen_image_generic.sh \
+		$@ \
+		$(CONFIG_TARGET_KERNEL_PARTSIZE) $@.boot \
+		$(CONFIG_TARGET_ROOTFS_PARTSIZE) $(IMAGE_ROOTFS) \
+		256
+endef
+
 define Device/Default
   PROFILES := Default
   FILESYSTEMS := squashfs ubifs ext4
@@ -13,3 +40,21 @@ define Device/imx8m
   DEVICE_DTS := $(basename $(notdir $(wildcard $(DTS_DIR)/freescale/imx8m*.dts)))
 endef
 TARGET_DEVICES += imx8m
+
+define Device/gateworks_venice
+  $(call Device/Default)
+  FILESYSTEMS := squashfs ext4
+  DEVICE_VENDOR := Gateworks
+  DEVICE_MODEL := i.MX8M Venice
+  BOOT_SCRIPT := gateworks_venice
+  PARTITION_OFFSET := 16M
+  DEVICE_DTS := $(basename $(notdir $(wildcard $(DTS_DIR)/freescale/imx8m*-venice*.dts)))
+  DEVICE_PACKAGES := \
+	kmod-hwmon-gsc kmod-rtc-ds1672 kmod-eeprom-at24 \
+	kmod-gpio-button-hotplug kmod-leds-gpio kmod-pps-gpio \
+	kmod-lan743x kmod-sky2 kmod-iio-st_accel-i2c \
+	kmod-can kmod-can-flexcan kmod-can-mcp251x
+  IMAGES := img.gz
+  IMAGE/img.gz := boot-scr | boot-img-ext4 | sdcard-img-ext4 | gzip | append-metadata
+endef
+TARGET_DEVICES += gateworks_venice



From lede-commits at lists.infradead.org  Sun Mar 24 13:19:44 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:19:44 -0400
Subject: [openwrt/openwrt]  imx: kernel: add imx8mp PCI support
In-Reply-To: <171131158232.1447868.9975622440399992208@git-01.infra.openwrt.org>
References: <171131158232.1447868.9975622440399992208@git-01.infra.openwrt.org>
Message-ID: <mailman.18982.1711311588.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/041fd1c835cc7bfe6e77fc9cb6669dec322f99c9

commit 041fd1c835cc7bfe6e77fc9cb6669dec322f99c9
Author: Tim Harvey <tharvey at gateworks.com>
AuthorDate: Mon Jan 22 15:30:18 2024 -0800

    imx: kernel: add imx8mp PCI support
    
    IMX8MP PCI support requires a few patches backported from Linux 6.2.
    
    Signed-off-by: Tim Harvey <tharvey at gateworks.com>
---
 ...le-imx8m-pcie-Refine-register-definitions.patch |  49 +++++
 ...le-imx8m-pcie-Refine-i.MX8MM-PCIe-PHY-dri.patch | 197 +++++++++++++++++++++
 ...le-imx8m-pcie-Add-i.MX8MP-PCIe-PHY-suppor.patch |  99 +++++++++++
 3 files changed, 345 insertions(+)

diff --git a/target/linux/imx/patches-6.1/001-6.2-phy-freescale-imx8m-pcie-Refine-register-definitions.patch b/target/linux/imx/patches-6.1/001-6.2-phy-freescale-imx8m-pcie-Refine-register-definitions.patch
new file mode 100644
index 0000000000..0af479aae9
--- /dev/null
+++ b/target/linux/imx/patches-6.1/001-6.2-phy-freescale-imx8m-pcie-Refine-register-definitions.patch
@@ -0,0 +1,49 @@
+From ffcbb4ccd357eeb649036e379a34bf5fb8d4f47c Mon Sep 17 00:00:00 2001
+From: Richard Zhu <hongxing.zhu at nxp.com>
+Date: Thu, 13 Oct 2022 09:47:00 +0800
+Subject: [PATCH 1/3] phy: freescale: imx8m-pcie: Refine register definitions
+
+No function changes, refine PHY register definitions.
+- Keep align with other CMN PHY registers, refine the definitions of
+  PHY_CMN_REG75.
+- Remove two BIT definitions that are not used at all.
+
+Signed-off-by: Richard Zhu <hongxing.zhu at nxp.com>
+Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
+Tested-by: Marek Vasut <marex at denx.de>
+Tested-by: Richard Leitner <richard.leitner at skidata.com>
+Tested-by: Alexander Stein <alexander.stein at ew.tq-group.com>
+Reviewed-by: Lucas Stach <l.stach at pengutronix.de>
+---
+ drivers/phy/freescale/phy-fsl-imx8m-pcie.c | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+--- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
++++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
+@@ -31,12 +31,10 @@
+ #define IMX8MM_PCIE_PHY_CMN_REG065	0x194
+ #define  ANA_AUX_RX_TERM		(BIT(7) | BIT(4))
+ #define  ANA_AUX_TX_LVL			GENMASK(3, 0)
+-#define IMX8MM_PCIE_PHY_CMN_REG75	0x1D4
+-#define  PCIE_PHY_CMN_REG75_PLL_DONE	0x3
++#define IMX8MM_PCIE_PHY_CMN_REG075	0x1D4
++#define  ANA_PLL_DONE			0x3
+ #define PCIE_PHY_TRSV_REG5		0x414
+-#define  PCIE_PHY_TRSV_REG5_GEN1_DEEMP	0x2D
+ #define PCIE_PHY_TRSV_REG6		0x418
+-#define  PCIE_PHY_TRSV_REG6_GEN2_DEEMP	0xF
+ 
+ #define IMX8MM_GPR_PCIE_REF_CLK_SEL	GENMASK(25, 24)
+ #define IMX8MM_GPR_PCIE_REF_CLK_PLL	FIELD_PREP(IMX8MM_GPR_PCIE_REF_CLK_SEL, 0x3)
+@@ -131,9 +129,8 @@ static int imx8_pcie_phy_power_on(struct
+ 	reset_control_deassert(imx8_phy->reset);
+ 
+ 	/* Polling to check the phy is ready or not. */
+-	ret = readl_poll_timeout(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG75,
+-				 val, val == PCIE_PHY_CMN_REG75_PLL_DONE,
+-				 10, 20000);
++	ret = readl_poll_timeout(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG075,
++				 val, val == ANA_PLL_DONE, 10, 20000);
+ 	return ret;
+ }
+ 
diff --git a/target/linux/imx/patches-6.1/002-6.2-phy-freescale-imx8m-pcie-Refine-i.MX8MM-PCIe-PHY-dri.patch b/target/linux/imx/patches-6.1/002-6.2-phy-freescale-imx8m-pcie-Refine-i.MX8MM-PCIe-PHY-dri.patch
new file mode 100644
index 0000000000..c2264c0bb4
--- /dev/null
+++ b/target/linux/imx/patches-6.1/002-6.2-phy-freescale-imx8m-pcie-Refine-i.MX8MM-PCIe-PHY-dri.patch
@@ -0,0 +1,197 @@
+From fb681544808b85c0cdf41a627401e5d470633914 Mon Sep 17 00:00:00 2001
+From: Richard Zhu <hongxing.zhu at nxp.com>
+Date: Thu, 13 Oct 2022 09:47:01 +0800
+Subject: [PATCH 2/3] phy: freescale: imx8m-pcie: Refine i.MX8MM PCIe PHY
+ driver
+
+To make it more flexible and easy to expand. Refine i.MX8MM PCIe PHY
+driver.
+- Use gpr compatible string to avoid the codes duplications when add
+  another platform PCIe PHY support.
+- Re-arrange the codes to let it more flexible and easy to expand.
+No functional change. Re-arrange the TX tuning, since internal registers
+can be wrote through APB interface before assertion of CMN_RST.
+
+Signed-off-by: Richard Zhu <hongxing.zhu at nxp.com>
+Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
+Tested-by: Marek Vasut <marex at denx.de>
+Tested-by: Richard Leitner <richard.leitner at skidata.com>
+Tested-by: Alexander Stein <alexander.stein at ew.tq-group.com>
+Reviewed-by: Lucas Stach <l.stach at pengutronix.de>
+Reviewed-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
+---
+ drivers/phy/freescale/phy-fsl-imx8m-pcie.c | 106 +++++++++++++--------
+ 1 file changed, 66 insertions(+), 40 deletions(-)
+
+--- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
++++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
+@@ -11,6 +11,7 @@
+ #include <linux/mfd/syscon.h>
+ #include <linux/mfd/syscon/imx7-iomuxc-gpr.h>
+ #include <linux/module.h>
++#include <linux/of_device.h>
+ #include <linux/phy/phy.h>
+ #include <linux/platform_device.h>
+ #include <linux/regmap.h>
+@@ -45,6 +46,15 @@
+ #define IMX8MM_GPR_PCIE_SSC_EN		BIT(16)
+ #define IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE	BIT(9)
+ 
++enum imx8_pcie_phy_type {
++	IMX8MM,
++};
++
++struct imx8_pcie_phy_drvdata {
++	const	char			*gpr;
++	enum	imx8_pcie_phy_type	variant;
++};
++
+ struct imx8_pcie_phy {
+ 	void __iomem		*base;
+ 	struct clk		*clk;
+@@ -55,6 +65,7 @@ struct imx8_pcie_phy {
+ 	u32			tx_deemph_gen1;
+ 	u32			tx_deemph_gen2;
+ 	bool			clkreq_unused;
++	const struct imx8_pcie_phy_drvdata	*drvdata;
+ };
+ 
+ static int imx8_pcie_phy_power_on(struct phy *phy)
+@@ -66,31 +77,17 @@ static int imx8_pcie_phy_power_on(struct
+ 	reset_control_assert(imx8_phy->reset);
+ 
+ 	pad_mode = imx8_phy->refclk_pad_mode;
+-	/* Set AUX_EN_OVERRIDE 1'b0, when the CLKREQ# isn't hooked */
+-	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
+-			   IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE,
+-			   imx8_phy->clkreq_unused ?
+-			   0 : IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE);
+-	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
+-			   IMX8MM_GPR_PCIE_AUX_EN,
+-			   IMX8MM_GPR_PCIE_AUX_EN);
+-	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
+-			   IMX8MM_GPR_PCIE_POWER_OFF, 0);
+-	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
+-			   IMX8MM_GPR_PCIE_SSC_EN, 0);
+-
+-	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
+-			   IMX8MM_GPR_PCIE_REF_CLK_SEL,
+-			   pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ?
+-			   IMX8MM_GPR_PCIE_REF_CLK_EXT :
+-			   IMX8MM_GPR_PCIE_REF_CLK_PLL);
+-	usleep_range(100, 200);
+-
+-	/* Do the PHY common block reset */
+-	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
+-			   IMX8MM_GPR_PCIE_CMN_RST,
+-			   IMX8MM_GPR_PCIE_CMN_RST);
+-	usleep_range(200, 500);
++	switch (imx8_phy->drvdata->variant) {
++	case IMX8MM:
++		/* Tune PHY de-emphasis setting to pass PCIe compliance. */
++		if (imx8_phy->tx_deemph_gen1)
++			writel(imx8_phy->tx_deemph_gen1,
++			       imx8_phy->base + PCIE_PHY_TRSV_REG5);
++		if (imx8_phy->tx_deemph_gen2)
++			writel(imx8_phy->tx_deemph_gen2,
++			       imx8_phy->base + PCIE_PHY_TRSV_REG6);
++		break;
++	}
+ 
+ 	if (pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ||
+ 	    pad_mode == IMX8_PCIE_REFCLK_PAD_UNUSED) {
+@@ -118,15 +115,37 @@ static int imx8_pcie_phy_power_on(struct
+ 		       imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG065);
+ 	}
+ 
+-	/* Tune PHY de-emphasis setting to pass PCIe compliance. */
+-	if (imx8_phy->tx_deemph_gen1)
+-		writel(imx8_phy->tx_deemph_gen1,
+-		       imx8_phy->base + PCIE_PHY_TRSV_REG5);
+-	if (imx8_phy->tx_deemph_gen2)
+-		writel(imx8_phy->tx_deemph_gen2,
+-		       imx8_phy->base + PCIE_PHY_TRSV_REG6);
++	/* Set AUX_EN_OVERRIDE 1'b0, when the CLKREQ# isn't hooked */
++	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
++			   IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE,
++			   imx8_phy->clkreq_unused ?
++			   0 : IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE);
++	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
++			   IMX8MM_GPR_PCIE_AUX_EN,
++			   IMX8MM_GPR_PCIE_AUX_EN);
++	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
++			   IMX8MM_GPR_PCIE_POWER_OFF, 0);
++	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
++			   IMX8MM_GPR_PCIE_SSC_EN, 0);
+ 
+-	reset_control_deassert(imx8_phy->reset);
++	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
++			   IMX8MM_GPR_PCIE_REF_CLK_SEL,
++			   pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ?
++			   IMX8MM_GPR_PCIE_REF_CLK_EXT :
++			   IMX8MM_GPR_PCIE_REF_CLK_PLL);
++	usleep_range(100, 200);
++
++	/* Do the PHY common block reset */
++	regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
++			   IMX8MM_GPR_PCIE_CMN_RST,
++			   IMX8MM_GPR_PCIE_CMN_RST);
++
++	switch (imx8_phy->drvdata->variant) {
++	case IMX8MM:
++		reset_control_deassert(imx8_phy->reset);
++		usleep_range(200, 500);
++		break;
++	}
+ 
+ 	/* Polling to check the phy is ready or not. */
+ 	ret = readl_poll_timeout(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG075,
+@@ -157,6 +176,17 @@ static const struct phy_ops imx8_pcie_ph
+ 	.owner		= THIS_MODULE,
+ };
+ 
++static const struct imx8_pcie_phy_drvdata imx8mm_drvdata = {
++	.gpr = "fsl,imx8mm-iomuxc-gpr",
++	.variant = IMX8MM,
++};
++
++static const struct of_device_id imx8_pcie_phy_of_match[] = {
++	{.compatible = "fsl,imx8mm-pcie-phy", .data = &imx8mm_drvdata, },
++	{ },
++};
++MODULE_DEVICE_TABLE(of, imx8_pcie_phy_of_match);
++
+ static int imx8_pcie_phy_probe(struct platform_device *pdev)
+ {
+ 	struct phy_provider *phy_provider;
+@@ -169,6 +199,8 @@ static int imx8_pcie_phy_probe(struct pl
+ 	if (!imx8_phy)
+ 		return -ENOMEM;
+ 
++	imx8_phy->drvdata = of_device_get_match_data(dev);
++
+ 	/* get PHY refclk pad mode */
+ 	of_property_read_u32(np, "fsl,refclk-pad-mode",
+ 			     &imx8_phy->refclk_pad_mode);
+@@ -194,7 +226,7 @@ static int imx8_pcie_phy_probe(struct pl
+ 
+ 	/* Grab GPR config register range */
+ 	imx8_phy->iomuxc_gpr =
+-		 syscon_regmap_lookup_by_compatible("fsl,imx6q-iomuxc-gpr");
++		 syscon_regmap_lookup_by_compatible(imx8_phy->drvdata->gpr);
+ 	if (IS_ERR(imx8_phy->iomuxc_gpr)) {
+ 		dev_err(dev, "unable to find iomuxc registers\n");
+ 		return PTR_ERR(imx8_phy->iomuxc_gpr);
+@@ -222,12 +254,6 @@ static int imx8_pcie_phy_probe(struct pl
+ 	return PTR_ERR_OR_ZERO(phy_provider);
+ }
+ 
+-static const struct of_device_id imx8_pcie_phy_of_match[] = {
+-	{.compatible = "fsl,imx8mm-pcie-phy",},
+-	{ },
+-};
+-MODULE_DEVICE_TABLE(of, imx8_pcie_phy_of_match);
+-
+ static struct platform_driver imx8_pcie_phy_driver = {
+ 	.probe	= imx8_pcie_phy_probe,
+ 	.driver = {
diff --git a/target/linux/imx/patches-6.1/003-6.3-phy-freescale-imx8m-pcie-Add-i.MX8MP-PCIe-PHY-suppor.patch b/target/linux/imx/patches-6.1/003-6.3-phy-freescale-imx8m-pcie-Add-i.MX8MP-PCIe-PHY-suppor.patch
new file mode 100644
index 0000000000..03b41e4153
--- /dev/null
+++ b/target/linux/imx/patches-6.1/003-6.3-phy-freescale-imx8m-pcie-Add-i.MX8MP-PCIe-PHY-suppor.patch
@@ -0,0 +1,99 @@
+From bf03b9281b119bcdc167b2dd6ac98294587eb5ff Mon Sep 17 00:00:00 2001
+From: Richard Zhu <hongxing.zhu at nxp.com>
+Date: Thu, 13 Oct 2022 09:47:02 +0800
+Subject: [PATCH 3/3] phy: freescale: imx8m-pcie: Add i.MX8MP PCIe PHY support
+
+Add i.MX8MP PCIe PHY support.
+
+Signed-off-by: Richard Zhu <hongxing.zhu at nxp.com>
+Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
+Tested-by: Marek Vasut <marex at denx.de>
+Tested-by: Richard Leitner <richard.leitner at skidata.com>
+Tested-by: Alexander Stein <alexander.stein at ew.tq-group.com>
+Reviewed-by: Lucas Stach <l.stach at pengutronix.de>
+Reviewed-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
+---
+ drivers/phy/freescale/phy-fsl-imx8m-pcie.c | 25 ++++++++++++++++++++--
+ 1 file changed, 23 insertions(+), 2 deletions(-)
+
+--- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
++++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
+@@ -48,6 +48,7 @@
+ 
+ enum imx8_pcie_phy_type {
+ 	IMX8MM,
++	IMX8MP,
+ };
+ 
+ struct imx8_pcie_phy_drvdata {
+@@ -60,6 +61,7 @@ struct imx8_pcie_phy {
+ 	struct clk		*clk;
+ 	struct phy		*phy;
+ 	struct regmap		*iomuxc_gpr;
++	struct reset_control	*perst;
+ 	struct reset_control	*reset;
+ 	u32			refclk_pad_mode;
+ 	u32			tx_deemph_gen1;
+@@ -74,11 +76,11 @@ static int imx8_pcie_phy_power_on(struct
+ 	u32 val, pad_mode;
+ 	struct imx8_pcie_phy *imx8_phy = phy_get_drvdata(phy);
+ 
+-	reset_control_assert(imx8_phy->reset);
+-
+ 	pad_mode = imx8_phy->refclk_pad_mode;
+ 	switch (imx8_phy->drvdata->variant) {
+ 	case IMX8MM:
++		reset_control_assert(imx8_phy->reset);
++
+ 		/* Tune PHY de-emphasis setting to pass PCIe compliance. */
+ 		if (imx8_phy->tx_deemph_gen1)
+ 			writel(imx8_phy->tx_deemph_gen1,
+@@ -87,6 +89,8 @@ static int imx8_pcie_phy_power_on(struct
+ 			writel(imx8_phy->tx_deemph_gen2,
+ 			       imx8_phy->base + PCIE_PHY_TRSV_REG6);
+ 		break;
++	case IMX8MP: /* Do nothing. */
++		break;
+ 	}
+ 
+ 	if (pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ||
+@@ -141,6 +145,9 @@ static int imx8_pcie_phy_power_on(struct
+ 			   IMX8MM_GPR_PCIE_CMN_RST);
+ 
+ 	switch (imx8_phy->drvdata->variant) {
++	case IMX8MP:
++		reset_control_deassert(imx8_phy->perst);
++		fallthrough;
+ 	case IMX8MM:
+ 		reset_control_deassert(imx8_phy->reset);
+ 		usleep_range(200, 500);
+@@ -181,8 +188,14 @@ static const struct imx8_pcie_phy_drvdat
+ 	.variant = IMX8MM,
+ };
+ 
++static const struct imx8_pcie_phy_drvdata imx8mp_drvdata = {
++	.gpr = "fsl,imx8mp-iomuxc-gpr",
++	.variant = IMX8MP,
++};
++
+ static const struct of_device_id imx8_pcie_phy_of_match[] = {
+ 	{.compatible = "fsl,imx8mm-pcie-phy", .data = &imx8mm_drvdata, },
++	{.compatible = "fsl,imx8mp-pcie-phy", .data = &imx8mp_drvdata, },
+ 	{ },
+ };
+ MODULE_DEVICE_TABLE(of, imx8_pcie_phy_of_match);
+@@ -238,6 +251,14 @@ static int imx8_pcie_phy_probe(struct pl
+ 		return PTR_ERR(imx8_phy->reset);
+ 	}
+ 
++	if (imx8_phy->drvdata->variant == IMX8MP) {
++		imx8_phy->perst =
++			devm_reset_control_get_exclusive(dev, "perst");
++		if (IS_ERR(imx8_phy->perst))
++			dev_err_probe(dev, PTR_ERR(imx8_phy->perst),
++				      "Failed to get PCIE PHY PERST control\n");
++	}
++
+ 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ 	imx8_phy->base = devm_ioremap_resource(dev, res);
+ 	if (IS_ERR(imx8_phy->base))



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:51 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:51 -0400
Subject: [openwrt/openwrt]  mpc85xx: copy missing patch from 5.15 to 6.1
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18983.1711311657.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7dbe27e3f7f6732a72ca823857317b1789881c59

commit 7dbe27e3f7f6732a72ca823857317b1789881c59
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 13:13:51 2024 +0100

    mpc85xx: copy missing patch from 5.15 to 6.1
    
    patch 150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
    was missed durring copy from 5.15 to 6.1.
    
    This patch restore it.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 ...c-simpleboot-prevent-overwrite-of-CPU1-sp.patch | 41 ++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/target/linux/mpc85xx/patches-6.1/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch b/target/linux/mpc85xx/patches-6.1/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
new file mode 100644
index 0000000000..1ff80a5016
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
@@ -0,0 +1,41 @@
+From 5f856ccc34df25060d36a5a81b7b45b574d86e35 Mon Sep 17 00:00:00 2001
+From: David Bauer <mail at david-bauer.net>
+Date: Sun, 3 Dec 2023 20:09:24 +0100
+Subject: [PATCH] arch: powerpc: simpleboot: prevent overwrite of CPU1
+ spin-table
+
+Don't overwrite the spin-table of additional CPU cores with loader-heap.
+
+U-Boot places the spin-table for CPU1 on P1020 SoCs in the top 1MB of
+system-memory. Instead of parsing reserved-memory (which would be
+considerable more work), reduce the available system-memory for the
+loader by 1MB.
+
+This prevents the loader from overwriting the spin-table of
+additional CPU cores on these platforms.
+
+Linux itself needs to be made aware by this using reserved-memory
+definitions.
+
+This patch is required for using CPU1 on the Extreme Networks
+WS-AP3825i.
+
+Signed-off-by: David Bauer <mail at david-bauer.net>
+---
+ arch/powerpc/boot/simpleboot.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/arch/powerpc/boot/simpleboot.c
++++ b/arch/powerpc/boot/simpleboot.c
+@@ -65,6 +65,11 @@ void platform_init(unsigned long r3, uns
+ 	if (sizeof(void *) == 4 && memsize64 >= 0x100000000ULL)
+ 		memsize64 = 0xffffffff;
+ 
++	/* Reserve upper 1 MB of memory for CPU1 spin-table */
++	if (memsize64 > 0x100000) {
++		memsize64 = memsize64 - 0x100000;
++	}
++
+ 	/* finally, setup the timebase */
+ 	node = fdt_node_offset_by_prop_value(_dtb_start, -1, "device_type",
+ 					     "cpu", sizeof("cpu"));



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:55 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:55 -0400
Subject: [openwrt/openwrt]  mpc85xx: refresh kernel config
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18984.1711311657.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/40abd9555b43694332e4e7efc56f86ecf49dd543

commit 40abd9555b43694332e4e7efc56f86ecf49dd543
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 10:38:08 2024 +0100

    mpc85xx: refresh kernel config
    
    Done by 'make kernel_oldconfig'.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/config-6.1 | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/target/linux/mpc85xx/config-6.1 b/target/linux/mpc85xx/config-6.1
index 149518971f..c3e0414a78 100644
--- a/target/linux/mpc85xx/config-6.1
+++ b/target/linux/mpc85xx/config-6.1
@@ -71,7 +71,6 @@ CONFIG_EDAC_SUPPORT=y
 CONFIG_EXCLUSIVE_SYSTEM_RAM=y
 # CONFIG_FIREBOX_T10 is not set
 CONFIG_FIXED_PHY=y
-# CONFIG_FSL_DPAA2_SWITCH is not set
 CONFIG_FSL_EMB_PERFMON=y
 # CONFIG_FSL_FMAN is not set
 CONFIG_FSL_LBC=y
@@ -83,6 +82,7 @@ CONFIG_FWNODE_MDIO=y
 CONFIG_FW_LOADER_PAGED_BUF=y
 CONFIG_FW_LOADER_SYSFS=y
 CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_GENERIC_ATOMIC64=y
 CONFIG_GENERIC_BUG=y
@@ -164,6 +164,7 @@ CONFIG_NLS=y
 CONFIG_NR_CPUS=1
 CONFIG_NR_IRQS=512
 CONFIG_NVMEM=y
+CONFIG_NVMEM_LAYOUTS=y
 # CONFIG_NVMEM_QORIQ_EFUSE is not set
 CONFIG_OF=y
 CONFIG_OF_ADDRESS=y
@@ -196,6 +197,7 @@ CONFIG_PCIEPORTBUS=y
 CONFIG_PCI_DOMAINS=y
 CONFIG_PGTABLE_LEVELS=2
 CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
 CONFIG_PHYSICAL_ALIGN=0x04000000
 CONFIG_PHYSICAL_START=0x00000000
 # CONFIG_PHYS_64BIT is not set



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:54 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:54 -0400
Subject: [openwrt/openwrt]  kernel: generic: add missing symbol
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18985.1711311658.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ceee14ea3a1584cb9e402d8b36f4e788d24c2b65

commit ceee14ea3a1584cb9e402d8b36f4e788d24c2b65
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 10:35:47 2024 +0100

    kernel: generic: add missing symbol
    
    Found durring 'make kernel_oldconfig'.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/generic/config-5.15 | 1 +
 target/linux/generic/config-6.1  | 1 +
 target/linux/generic/config-6.6  | 1 +
 3 files changed, 3 insertions(+)

diff --git a/target/linux/generic/config-5.15 b/target/linux/generic/config-5.15
index 8f6ccad216..5b9a3176b1 100644
--- a/target/linux/generic/config-5.15
+++ b/target/linux/generic/config-5.15
@@ -2092,6 +2092,7 @@ CONFIG_FORTIFY_SOURCE=y
 # CONFIG_FRONTSWAP is not set
 # CONFIG_FSCACHE is not set
 # CONFIG_FSI is not set
+# CONFIG_FSL_DPAA2_SWITCH is not set
 # CONFIG_FSL_EDMA is not set
 # CONFIG_FSL_ENETC is not set
 # CONFIG_FSL_ENETC_IERB is not set
diff --git a/target/linux/generic/config-6.1 b/target/linux/generic/config-6.1
index 5bac0ee57a..7487ade308 100644
--- a/target/linux/generic/config-6.1
+++ b/target/linux/generic/config-6.1
@@ -2191,6 +2191,7 @@ CONFIG_FORTIFY_SOURCE=y
 # CONFIG_FRONTSWAP is not set
 # CONFIG_FSCACHE is not set
 # CONFIG_FSI is not set
+# CONFIG_FSL_DPAA2_SWITCH is not set
 # CONFIG_FSL_EDMA is not set
 # CONFIG_FSL_ENETC is not set
 # CONFIG_FSL_ENETC_IERB is not set
diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 4e26f2af9b..3322aafc2c 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -2234,6 +2234,7 @@ CONFIG_FORTIFY_SOURCE=y
 # CONFIG_FRONTSWAP is not set
 # CONFIG_FSCACHE is not set
 # CONFIG_FSI is not set
+# CONFIG_FSL_DPAA2_SWITCH is not set
 # CONFIG_FSL_EDMA is not set
 # CONFIG_FSL_ENETC is not set
 # CONFIG_FSL_ENETC_IERB is not set



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:52 -0400
Subject: [openwrt/openwrt]  mpc85xx: switch to 6.1 kernel
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18986.1711311658.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2733831e1cdf0e37e2ba353b2dcd8f4c014c2831

commit 2733831e1cdf0e37e2ba353b2dcd8f4c014c2831
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 08:48:39 2024 +0100

    mpc85xx: switch to 6.1 kernel
    
    We need to prepare for 6.6. Switch to 6.1 for wider testing.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/mpc85xx/Makefile b/target/linux/mpc85xx/Makefile
index 7d90e1cbb3..bcbd430a65 100644
--- a/target/linux/mpc85xx/Makefile
+++ b/target/linux/mpc85xx/Makefile
@@ -11,8 +11,7 @@ CPU_TYPE:=8548
 FEATURES:=squashfs ramdisk nand
 SUBTARGETS:=p1010 p1020 p2020
 
-KERNEL_PATCHVER:=5.15
-KERNEL_TESTING_PATCHVER:=6.1
+KERNEL_PATCHVER:=6.1
 
 KERNELNAME:=zImage
 



From lede-commits at lists.infradead.org  Sun Mar 24 13:21:00 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:21:00 -0400
Subject: [openwrt/openwrt]  mpc85xx: add 6.6 testing kernel
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18989.1711311660.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/004eac14ab5418cd72f5dfb365e0e04a73eca03e

commit 004eac14ab5418cd72f5dfb365e0e04a73eca03e
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 12:35:04 2024 +0100

    mpc85xx: add 6.6 testing kernel
    
    This commit adds 6.6 kernel as testing verion.
    
    Run tested:
    p2020/p2020-rdb
    p1010/TL-WDR4900-V1
    p1010/BR200-WP
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/mpc85xx/Makefile b/target/linux/mpc85xx/Makefile
index bcbd430a65..b9bf0eaff0 100644
--- a/target/linux/mpc85xx/Makefile
+++ b/target/linux/mpc85xx/Makefile
@@ -12,6 +12,7 @@ FEATURES:=squashfs ramdisk nand
 SUBTARGETS:=p1010 p1020 p2020
 
 KERNEL_PATCHVER:=6.1
+KERNEL_TESTING_PATCHVER:=6.6
 
 KERNELNAME:=zImage
 



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:59 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:59 -0400
Subject: [openwrt/openwrt]  mpc85xx: kernel: 6.6: refresh config
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18990.1711311660.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/7a43f185c9ecab4a07dbf1a7613e14215355c38f

commit 7a43f185c9ecab4a07dbf1a7613e14215355c38f
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 11:07:13 2024 +0100

    mpc85xx: kernel: 6.6: refresh config
    
    config-6.6 refreshed by 'make kernel_oldconfig'
    p2020 config-default refreshed manually
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/config-6.6           | 19 ++++++++++++++++---
 target/linux/mpc85xx/p2020/config-default |  1 +
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/target/linux/mpc85xx/config-6.6 b/target/linux/mpc85xx/config-6.6
index c3e0414a78..34ff126851 100644
--- a/target/linux/mpc85xx/config-6.6
+++ b/target/linux/mpc85xx/config-6.6
@@ -2,6 +2,7 @@
 # CONFIG_44x is not set
 # CONFIG_ADVANCED_OPTIONS is not set
 CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARCH_DMA_DEFAULT_COHERENT=y
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_KEEP_MEMBLOCK=y
 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
@@ -45,6 +46,7 @@ CONFIG_CPU_BIG_ENDIAN=y
 CONFIG_CRYPTO_AUTHENC=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_GF128MUL=y
 CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
 CONFIG_CRYPTO_LIB_SHA1=y
 CONFIG_CRYPTO_LIB_UTILS=y
@@ -78,6 +80,9 @@ CONFIG_FSL_PCI=y
 CONFIG_FSL_PQ_MDIO=y
 CONFIG_FSL_SOC=y
 CONFIG_FSL_SOC_BOOKE=y
+# CONFIG_FSL_ULI1575 is not set
+CONFIG_FS_IOMAP=y
+CONFIG_FUNCTION_ALIGNMENT=0
 CONFIG_FWNODE_MDIO=y
 CONFIG_FW_LOADER_PAGED_BUF=y
 CONFIG_FW_LOADER_SYSFS=y
@@ -93,6 +98,8 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_GENERIC_CPU_VULNERABILITIES=y
 CONFIG_GENERIC_EARLY_IOREMAP=y
 CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IOREMAP=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
 CONFIG_GENERIC_ISA_DMA=y
@@ -109,6 +116,7 @@ CONFIG_GPIO_GENERIC=y
 CONFIG_GPIO_MPC8XXX=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
 CONFIG_HAS_IOPORT_MAP=y
 # CONFIG_HIVEAP_330 is not set
 CONFIG_HW_RANDOM=y
@@ -134,10 +142,10 @@ CONFIG_LXT_PHY=y
 CONFIG_MDIO_BUS=y
 CONFIG_MDIO_DEVICE=y
 CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
 CONFIG_MIGRATION=y
 CONFIG_MMU_GATHER_MERGE_VMAS=y
 CONFIG_MMU_GATHER_PAGE_SIZE=y
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
 CONFIG_MODULES_USE_ELF_RELA=y
 # CONFIG_MPC8536_DS is not set
 # CONFIG_MPC8540_ADS is not set
@@ -159,7 +167,10 @@ CONFIG_MTD_SPI_NOR=y
 # CONFIG_MVME2500 is not set
 CONFIG_NEED_PER_CPU_KM=y
 CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NET_EGRESS=y
+CONFIG_NET_INGRESS=y
 CONFIG_NET_SELFTESTS=y
+CONFIG_NET_XGRESS=y
 CONFIG_NLS=y
 CONFIG_NR_CPUS=1
 CONFIG_NR_IRQS=512
@@ -168,10 +179,10 @@ CONFIG_NVMEM_LAYOUTS=y
 # CONFIG_NVMEM_QORIQ_EFUSE is not set
 CONFIG_OF=y
 CONFIG_OF_ADDRESS=y
-CONFIG_OF_DMA_DEFAULT_COHERENT=y
 CONFIG_OF_EARLY_FLATTREE=y
 CONFIG_OF_FLATTREE=y
 CONFIG_OF_GPIO=y
+CONFIG_OF_GPIO_MM_GPIOCHIP=y
 CONFIG_OF_IRQ=y
 CONFIG_OF_KOBJ=y
 CONFIG_OF_MDIO=y
@@ -223,6 +234,7 @@ CONFIG_PPC_KUAP=y
 # CONFIG_PPC_KUAP_DEBUG is not set
 CONFIG_PPC_KUEP=y
 CONFIG_PPC_MMU_NOHASH=y
+# CONFIG_PPC_P2020 is not set
 CONFIG_PPC_PAGE_SHIFT=12
 # CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT is not set
 # CONFIG_PPC_QEMU_E500 is not set
@@ -247,6 +259,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
 CONFIG_SERIAL_MCTRL_GPIO=y
 CONFIG_SERIAL_OF_PLATFORM=y
 # CONFIG_SERIAL_QE is not set
+CONFIG_SMT_NUM_THREADS_DYNAMIC=y
 # CONFIG_SOCRATES is not set
 CONFIG_SOFTIRQ_ON_OWN_STACK=y
 CONFIG_SPARSE_IRQ=y
@@ -256,7 +269,7 @@ CONFIG_SPI=y
 CONFIG_SPI_FSL_ESPI=y
 CONFIG_SPI_MASTER=y
 CONFIG_SPI_MEM=y
-CONFIG_SRCU=y
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
 # CONFIG_STATIC_CALL_SELFTEST is not set
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_STX_GP3 is not set
diff --git a/target/linux/mpc85xx/p2020/config-default b/target/linux/mpc85xx/p2020/config-default
index 6d0ecc5b9e..01774cd6d6 100644
--- a/target/linux/mpc85xx/p2020/config-default
+++ b/target/linux/mpc85xx/p2020/config-default
@@ -29,6 +29,7 @@ CONFIG_PCI_MSI_ARCH_FALLBACKS=y
 CONFIG_PCI_MSI_IRQ_DOMAIN=y
 CONFIG_PPC_I8259=y
 CONFIG_PPC_MSI_BITMAP=y
+CONFIG_PPC_P2020=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
 CONFIG_RFS_ACCEL=y



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:56 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:56 -0400
Subject: [openwrt/openwrt]  kernel/mpc85xx: Create kernel files for v6.6 (from
 v6.1)
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18991.1711311660.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/25abc8f4adbb85a58d6a95fa24fdb20650533e24

commit 25abc8f4adbb85a58d6a95fa24fdb20650533e24
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 10:38:57 2024 +0100

    kernel/mpc85xx: Create kernel files for v6.6 (from v6.1)
    
    This is an automatically generated commit.
    
    During a `git bisect` session, `git bisect --skip` is recommended.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/{config-6.1 => config-6.6}                           | 0
 .../001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch                | 0
 .../100-powerpc-85xx-tl-wdr4900-v1-support.patch                          | 0
 .../101-powerpc-85xx-hiveap-330-support.patch                             | 0
 .../{patches-6.1 => patches-6.6}/102-powerpc-add-cmdline-override.patch   | 0
 .../{patches-6.1 => patches-6.6}/103-powerpc-85xx-red-15w-rev1.patch      | 0
 .../104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch        | 0
 .../{patches-6.1 => patches-6.6}/105-powerpc-85xx-panda-support.patch     | 0
 .../106-powerpc-85xx-ws-ap3710i-support.patch                             | 0
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch                         | 0
 .../108-powerpc-85xx-firebox-t10-support.patch.patch                      | 0
 .../109-powerpc-85xx-add-ws-ap3715i-support.patch                         | 0
 .../{patches-6.1 => patches-6.6}/110-powerpc-85xx-br200-wp-support.patch  | 0
 .../150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch        | 0
 .../900-powerpc-bootwrapper-disable-uImage-generation.patch               | 0
 15 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/target/linux/mpc85xx/config-6.1 b/target/linux/mpc85xx/config-6.6
similarity index 100%
rename from target/linux/mpc85xx/config-6.1
rename to target/linux/mpc85xx/config-6.6
diff --git a/target/linux/mpc85xx/patches-6.1/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch b/target/linux/mpc85xx/patches-6.6/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
rename to target/linux/mpc85xx/patches-6.6/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
diff --git a/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
rename to target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch
diff --git a/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
rename to target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch
diff --git a/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-6.6/102-powerpc-add-cmdline-override.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch
rename to target/linux/mpc85xx/patches-6.6/102-powerpc-add-cmdline-override.patch
diff --git a/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch b/target/linux/mpc85xx/patches-6.6/103-powerpc-85xx-red-15w-rev1.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch
rename to target/linux/mpc85xx/patches-6.6/103-powerpc-85xx-red-15w-rev1.patch
diff --git a/target/linux/mpc85xx/patches-6.1/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch b/target/linux/mpc85xx/patches-6.6/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
rename to target/linux/mpc85xx/patches-6.6/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
diff --git a/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch b/target/linux/mpc85xx/patches-6.6/105-powerpc-85xx-panda-support.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch
rename to target/linux/mpc85xx/patches-6.6/105-powerpc-85xx-panda-support.patch
diff --git a/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch b/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch
rename to target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch
diff --git a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
rename to target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch
diff --git a/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch b/target/linux/mpc85xx/patches-6.6/108-powerpc-85xx-firebox-t10-support.patch.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch
rename to target/linux/mpc85xx/patches-6.6/108-powerpc-85xx-firebox-t10-support.patch.patch
diff --git a/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-6.6/109-powerpc-85xx-add-ws-ap3715i-support.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
rename to target/linux/mpc85xx/patches-6.6/109-powerpc-85xx-add-ws-ap3715i-support.patch
diff --git a/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
rename to target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch
diff --git a/target/linux/mpc85xx/patches-6.1/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch b/target/linux/mpc85xx/patches-6.6/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
rename to target/linux/mpc85xx/patches-6.6/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
diff --git a/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-6.6/900-powerpc-bootwrapper-disable-uImage-generation.patch
similarity index 100%
rename from target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
rename to target/linux/mpc85xx/patches-6.6/900-powerpc-bootwrapper-disable-uImage-generation.patch



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:58 -0400
Subject: [openwrt/openwrt]  mpc85xx: kernel: 6.6: refresh patches
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18992.1711311660.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/affdd9eee873e5c406290316b376be2794bee94b

commit affdd9eee873e5c406290316b376be2794bee94b
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 11:01:01 2024 +0100

    mpc85xx: kernel: 6.6: refresh patches
    
    Manualy refreshed:
    101-powerpc-85xx-hiveap-330-support.patch
    105-powerpc-85xx-panda-support.patch
    
    Rest done by 'make target/linux/refresh'
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 .../001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch   |  2 +-
 .../patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch | 10 +++++-----
 .../patches-6.6/101-powerpc-85xx-hiveap-330-support.patch    | 12 ++++++------
 .../patches-6.6/102-powerpc-add-cmdline-override.patch       |  4 ++--
 .../mpc85xx/patches-6.6/103-powerpc-85xx-red-15w-rev1.patch  |  4 ++--
 .../mpc85xx/patches-6.6/105-powerpc-85xx-panda-support.patch |  4 ++--
 .../patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch    |  4 ++--
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch            | 10 +++++-----
 .../108-powerpc-85xx-firebox-t10-support.patch.patch         |  2 +-
 .../109-powerpc-85xx-add-ws-ap3715i-support.patch            |  8 ++++----
 .../patches-6.6/110-powerpc-85xx-br200-wp-support.patch      | 10 +++++-----
 .../900-powerpc-bootwrapper-disable-uImage-generation.patch  |  4 ++--
 12 files changed, 37 insertions(+), 37 deletions(-)

diff --git a/target/linux/mpc85xx/patches-6.6/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch b/target/linux/mpc85xx/patches-6.6/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
index 5e5ab10daf..42ab234d90 100644
--- a/target/linux/mpc85xx/patches-6.6/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
+++ b/target/linux/mpc85xx/patches-6.6/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/common.c
 +++ b/arch/powerpc/platforms/85xx/common.c
-@@ -30,6 +30,7 @@ static const struct of_device_id mpc85xx
+@@ -31,6 +31,7 @@ static const struct of_device_id mpc85xx
  	{ .compatible = "fsl,mpc8548-guts", },
  	/* Probably unnecessary? */
  	{ .compatible = "gpio-leds", },
diff --git a/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch
index a7253a9794..800341c6e1 100644
--- a/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch
+++ b/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch
@@ -19,7 +19,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
 
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+@@ -181,6 +181,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
  src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
@@ -27,7 +27,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
  
  src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
  
-@@ -359,7 +360,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+@@ -351,7 +352,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
  image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
@@ -38,7 +38,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
  
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -341,6 +341,11 @@ adder875-redboot)
+@@ -345,6 +345,11 @@ adder875-redboot)
      platformo="$object/fixed-head.o $object/redboot-8xx.o"
      binary=y
      ;;
@@ -52,7 +52,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
      binary=y
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -163,6 +163,18 @@ config STX_GP3
+@@ -176,6 +176,18 @@ config STX_GP3
  	select CPM2
  	select DEFAULT_UIMAGE
  
@@ -73,7 +73,7 @@ Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
  	help
 --- a/arch/powerpc/platforms/85xx/Makefile
 +++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+@@ -26,6 +26,7 @@ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
  obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
  obj-$(CONFIG_STX_GP3)	  += stx_gp3.o
diff --git a/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch
index e8b6632f2b..952df5e8a6 100644
--- a/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch
+++ b/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch
@@ -25,12 +25,12 @@
  obj-$(CONFIG_BSC9132_QDS) += bsc913x_qds.o
  obj-$(CONFIG_C293_PCIE)   += c293pcie.o
 +obj-$(CONFIG_HIVEAP_330) += hiveap-330.o
- obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
- obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
- obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
+ obj-$(CONFIG_MPC8536_DS)  += mpc8536_ds.o
+ obj8259-$(CONFIG_PPC_I8259)   += mpc85xx_8259.o
+ obj-$(CONFIG_MPC85xx_DS)  += mpc85xx_ds.o $(obj8259-y)
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+@@ -181,6 +181,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
  src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
@@ -38,7 +38,7 @@
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
  
  src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
-@@ -360,6 +361,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+@@ -352,6 +353,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
  image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
@@ -48,7 +48,7 @@
  image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -341,6 +341,7 @@ adder875-redboot)
+@@ -345,6 +345,7 @@ adder875-redboot)
      platformo="$object/fixed-head.o $object/redboot-8xx.o"
      binary=y
      ;;
diff --git a/target/linux/mpc85xx/patches-6.6/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-6.6/102-powerpc-add-cmdline-override.patch
index b83e5f86d2..17aee6dafe 100644
--- a/target/linux/mpc85xx/patches-6.6/102-powerpc-add-cmdline-override.patch
+++ b/target/linux/mpc85xx/patches-6.6/102-powerpc-add-cmdline-override.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/Kconfig
 +++ b/arch/powerpc/Kconfig
-@@ -954,6 +954,14 @@ config CMDLINE_FORCE
+@@ -1005,6 +1005,14 @@ config CMDLINE_FORCE
  
  endchoice
  
@@ -17,7 +17,7 @@
  	help
 --- a/drivers/of/fdt.c
 +++ b/drivers/of/fdt.c
-@@ -1187,6 +1187,17 @@ int __init early_init_dt_scan_chosen(cha
+@@ -1189,6 +1189,17 @@ int __init early_init_dt_scan_chosen(cha
  	if (p != NULL && l > 0)
  		strlcat(cmdline, p, min_t(int, strlen(cmdline) + (int)l, COMMAND_LINE_SIZE));
  
diff --git a/target/linux/mpc85xx/patches-6.6/103-powerpc-85xx-red-15w-rev1.patch b/target/linux/mpc85xx/patches-6.6/103-powerpc-85xx-red-15w-rev1.patch
index 711d98abe7..551f306e56 100644
--- a/target/linux/mpc85xx/patches-6.6/103-powerpc-85xx-red-15w-rev1.patch
+++ b/target/linux/mpc85xx/patches-6.6/103-powerpc-85xx-red-15w-rev1.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/platforms/85xx/Kconfig
 +++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -166,6 +166,16 @@ config XES_MPC85xx
+@@ -179,6 +179,16 @@ config XES_MPC85xx
  	  Manufacturer: Extreme Engineering Solutions, Inc.
  	  URL: <https://www.xes-inc.com/>
  
@@ -19,7 +19,7 @@
  	help
 --- a/arch/powerpc/platforms/85xx/Makefile
 +++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+@@ -26,6 +26,7 @@ obj-$(CONFIG_PPC_P2020)   += p2020.o $(o
  obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
  obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
diff --git a/target/linux/mpc85xx/patches-6.6/105-powerpc-85xx-panda-support.patch b/target/linux/mpc85xx/patches-6.6/105-powerpc-85xx-panda-support.patch
index 3c24a373ab..e463c49539 100644
--- a/target/linux/mpc85xx/patches-6.6/105-powerpc-85xx-panda-support.patch
+++ b/target/linux/mpc85xx/patches-6.6/105-powerpc-85xx-panda-support.patch
@@ -20,11 +20,11 @@
  	select DEFAULT_UIMAGE
 --- a/arch/powerpc/platforms/85xx/Makefile
 +++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -24,6 +24,7 @@ obj-$(CONFIG_P1010_RDB)   += p1010rdb.o
+@@ -22,6 +22,7 @@ obj-$(CONFIG_P1010_RDB)   += p1010rdb.o
  obj-$(CONFIG_P1022_DS)    += p1022_ds.o
  obj-$(CONFIG_P1022_RDK)   += p1022_rdk.o
  obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
 +obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_PPC_P2020)   += p2020.o $(obj8259-y)
  obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
- obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
diff --git a/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch b/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch
index 5ac3f2f2d9..469b696833 100644
--- a/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch
+++ b/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch
@@ -20,9 +20,9 @@
  	select DEFAULT_UIMAGE
 --- a/arch/powerpc/platforms/85xx/Makefile
 +++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -26,6 +26,7 @@ obj-$(CONFIG_P1022_RDK)   += p1022_rdk.o
- obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+@@ -25,6 +25,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
  obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_PPC_P2020)   += p2020.o $(obj8259-y)
  obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
 +obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
diff --git a/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch
index 63e7e46bbc..8a42064570 100644
--- a/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch
+++ b/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -27,8 +27,8 @@ WS-AP3825i AP.
  	select DEFAULT_UIMAGE
 --- a/arch/powerpc/platforms/85xx/Makefile
 +++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
- obj-$(CONFIG_PANDA)       += panda.o
+@@ -26,6 +26,7 @@ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_PPC_P2020)   += p2020.o $(obj8259-y)
  obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
  obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
 +obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
@@ -37,7 +37,7 @@ WS-AP3825i AP.
  obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -181,6 +181,7 @@ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) +=
+@@ -183,6 +183,7 @@ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) +=
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
  src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
@@ -45,7 +45,7 @@ WS-AP3825i AP.
  
  src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
  
-@@ -363,6 +364,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
+@@ -355,6 +356,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
  image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
@@ -55,7 +55,7 @@ WS-AP3825i AP.
  
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -342,6 +342,7 @@ adder875-redboot)
+@@ -346,6 +346,7 @@ adder875-redboot)
      binary=y
      ;;
  simpleboot-hiveap-330|\
diff --git a/target/linux/mpc85xx/patches-6.6/108-powerpc-85xx-firebox-t10-support.patch.patch b/target/linux/mpc85xx/patches-6.6/108-powerpc-85xx-firebox-t10-support.patch.patch
index 0b3a93b848..2c722e4d9b 100644
--- a/target/linux/mpc85xx/patches-6.6/108-powerpc-85xx-firebox-t10-support.patch.patch
+++ b/target/linux/mpc85xx/patches-6.6/108-powerpc-85xx-firebox-t10-support.patch.patch
@@ -19,7 +19,7 @@
  	select DEFAULT_UIMAGE
 --- a/arch/powerpc/platforms/85xx/Makefile
 +++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -28,6 +28,7 @@ obj-$(CONFIG_PANDA)       += panda.o
+@@ -27,6 +27,7 @@ obj-$(CONFIG_PPC_P2020)   += p2020.o $(o
  obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
  obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
  obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
diff --git a/target/linux/mpc85xx/patches-6.6/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-6.6/109-powerpc-85xx-add-ws-ap3715i-support.patch
index f8e33ae637..d6c59e8f72 100644
--- a/target/linux/mpc85xx/patches-6.6/109-powerpc-85xx-add-ws-ap3715i-support.patch
+++ b/target/linux/mpc85xx/patches-6.6/109-powerpc-85xx-add-ws-ap3715i-support.patch
@@ -20,8 +20,8 @@
  	select DEFAULT_UIMAGE
 --- a/arch/powerpc/platforms/85xx/Makefile
 +++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
- obj-$(CONFIG_PANDA)       += panda.o
+@@ -26,6 +26,7 @@ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_PPC_P2020)   += p2020.o $(obj8259-y)
  obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
  obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
 +obj-$(CONFIG_WS_AP3715I)  += ws-ap3715i.o
@@ -30,7 +30,7 @@
  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -364,6 +364,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
+@@ -356,6 +356,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
  image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
  image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
@@ -40,7 +40,7 @@
  image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -342,6 +342,7 @@ adder875-redboot)
+@@ -346,6 +346,7 @@ adder875-redboot)
      binary=y
      ;;
  simpleboot-hiveap-330|\
diff --git a/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch
index b063b3dab7..f3ec26ec99 100644
--- a/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch
+++ b/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch
@@ -25,11 +25,11 @@
  obj-$(CONFIG_C293_PCIE)   += c293pcie.o
 +obj-$(CONFIG_BR200_WP) += br200-wp.o
  obj-$(CONFIG_HIVEAP_330) += hiveap-330.o
- obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
- obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
+ obj-$(CONFIG_MPC8536_DS)  += mpc8536_ds.o
+ obj8259-$(CONFIG_PPC_I8259)   += mpc85xx_8259.o
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+@@ -181,6 +181,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
  src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
@@ -37,7 +37,7 @@
  src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
  src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
-@@ -362,6 +363,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+@@ -354,6 +355,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
  image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
  image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
  image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
@@ -47,7 +47,7 @@
  image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
 --- a/arch/powerpc/boot/wrapper
 +++ b/arch/powerpc/boot/wrapper
-@@ -341,6 +341,7 @@ adder875-redboot)
+@@ -345,6 +345,7 @@ adder875-redboot)
      platformo="$object/fixed-head.o $object/redboot-8xx.o"
      binary=y
      ;;
diff --git a/target/linux/mpc85xx/patches-6.6/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-6.6/900-powerpc-bootwrapper-disable-uImage-generation.patch
index 648aa0421d..d5bef03387 100644
--- a/target/linux/mpc85xx/patches-6.6/900-powerpc-bootwrapper-disable-uImage-generation.patch
+++ b/target/linux/mpc85xx/patches-6.6/900-powerpc-bootwrapper-disable-uImage-generation.patch
@@ -16,7 +16,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 
 --- a/arch/powerpc/boot/Makefile
 +++ b/arch/powerpc/boot/Makefile
-@@ -291,7 +291,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
+@@ -293,7 +293,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
  image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
  image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
  image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
@@ -24,7 +24,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
  
  #
-@@ -427,15 +426,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+@@ -418,15 +417,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
  $(obj)/vmlinux.strip: vmlinux
  	$(STRIP) -s -R .comment $< -o $@
  



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:53 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:53 -0400
Subject: [openwrt/openwrt]  mpc85xx: remove 5.15 support
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18995.1711311666.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2cda7e0e2d8d5821d05265511ea1d0dd7e2f87fb

commit 2cda7e0e2d8d5821d05265511ea1d0dd7e2f87fb
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 08:50:06 2024 +0100

    mpc85xx: remove 5.15 support
    
    Kernel is switched to 6.1. Lets remove 5.15 support.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/config-5.15                   | 270 ---------------------
 ...erpc-85xx-add-gpio-keys-to-of-match-table.patch |  10 -
 .../100-powerpc-85xx-tl-wdr4900-v1-support.patch   |  83 -------
 .../101-powerpc-85xx-hiveap-330-support.patch      |  58 -----
 .../102-powerpc-add-cmdline-override.patch         |  37 ---
 .../103-powerpc-85xx-red-15w-rev1.patch            |  29 ---
 ...85xx-change-P2020RDB-dts-file-for-OpenWRT.patch | 170 -------------
 .../105-powerpc-85xx-panda-support.patch           |  30 ---
 .../106-powerpc-85xx-ws-ap3710i-support.patch      |  30 ---
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch  |  65 -----
 ...08-powerpc-85xx-firebox-t10-support.patch.patch |  29 ---
 .../109-powerpc-85xx-add-ws-ap3715i-support.patch  |  50 ----
 .../110-powerpc-85xx-br200-wp-support.patch        |  57 -----
 ...c-simpleboot-prevent-overwrite-of-CPU1-sp.patch |  41 ----
 ...rpc-bootwrapper-disable-uImage-generation.patch |  42 ----
 15 files changed, 1001 deletions(-)

diff --git a/target/linux/mpc85xx/config-5.15 b/target/linux/mpc85xx/config-5.15
deleted file mode 100644
index 86b300ffc3..0000000000
--- a/target/linux/mpc85xx/config-5.15
+++ /dev/null
@@ -1,270 +0,0 @@
-# CONFIG_40x is not set
-# CONFIG_44x is not set
-# CONFIG_ADVANCED_OPTIONS is not set
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
-CONFIG_ARCH_MMAP_RND_BITS=11
-CONFIG_ARCH_MMAP_RND_BITS_MAX=17
-CONFIG_ARCH_MMAP_RND_BITS_MIN=11
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
-CONFIG_ARCH_STACKWALK=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
-CONFIG_ASN1=y
-CONFIG_AUDIT_ARCH=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_BOOKE=y
-CONFIG_BOOKE_WDT=y
-# CONFIG_BR200_WP is not set
-# CONFIG_BSC9131_RDB is not set
-# CONFIG_BSC9132_QDS is not set
-# CONFIG_C293_PCIE is not set
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CLZ_TAB=y
-CONFIG_CMDLINE="console=ttyS0,115200"
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-# CONFIG_COMMON_CLK is not set
-CONFIG_COMPAT_32BIT_TIME=y
-# CONFIG_CORENET_GENERIC is not set
-# CONFIG_CPM2 is not set
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CRYPTO_AES_PPC_SPE is not set
-CONFIG_CRYPTO_AUTHENC=y
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
-# CONFIG_CRYPTO_MD5_PPC is not set
-CONFIG_CRYPTO_RNG=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_RSA=y
-# CONFIG_CRYPTO_SHA1_PPC is not set
-# CONFIG_CRYPTO_SHA1_PPC_SPE is not set
-# CONFIG_CRYPTO_SHA256_PPC_SPE is not set
-CONFIG_DATA_SHIFT=12
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DNOTIFY=y
-CONFIG_DTC=y
-CONFIG_E500=y
-CONFIG_E500_CPU=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_EDAC=y
-CONFIG_EDAC_ATOMIC_SCRUB=y
-# CONFIG_EDAC_DEBUG is not set
-CONFIG_EDAC_LEGACY_SYSFS=y
-CONFIG_EDAC_MPC85XX=y
-CONFIG_EDAC_SUPPORT=y
-# CONFIG_FIREBOX_T10 is not set
-CONFIG_FIXED_PHY=y
-CONFIG_FSL_BOOKE=y
-# CONFIG_FSL_DPAA2_SWITCH is not set
-CONFIG_FSL_EMB_PERFMON=y
-# CONFIG_FSL_FMAN is not set
-CONFIG_FSL_LBC=y
-CONFIG_FSL_PCI=y
-CONFIG_FSL_PQ_MDIO=y
-CONFIG_FSL_SOC=y
-CONFIG_FSL_SOC_BOOKE=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_CPU_VULNERABILITIES=y
-CONFIG_GENERIC_EARLY_IOREMAP=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_STRNCPY_FROM_USER=y
-CONFIG_GENERIC_STRNLEN_USER=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GEN_RTC=y
-# CONFIG_GE_IMP3A is not set
-CONFIG_GIANFAR=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_GENERIC=y
-CONFIG_GPIO_MPC8XXX=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-# CONFIG_HIVEAP_330 is not set
-CONFIG_HW_RANDOM=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_MPC=y
-CONFIG_ILLEGAL_POINTER_VALUE=0
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_WORK=y
-CONFIG_ISA_DMA_API=y
-CONFIG_KERNEL_START=0xc0000000
-# CONFIG_KSI8560 is not set
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_LOWMEM_CAM_NUM=3
-CONFIG_LOWMEM_SIZE=0x30000000
-CONFIG_LXT_PHY=y
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MIGRATION=y
-CONFIG_MMU_GATHER_PAGE_SIZE=y
-CONFIG_MODULES_USE_ELF_RELA=y
-# CONFIG_MPC8536_DS is not set
-# CONFIG_MPC8540_ADS is not set
-# CONFIG_MPC8560_ADS is not set
-# CONFIG_MPC85xx_CDS is not set
-# CONFIG_MPC85xx_DS is not set
-# CONFIG_MPC85xx_MDS is not set
-# CONFIG_MPC85xx_RDB is not set
-CONFIG_MPIC=y
-# CONFIG_MPIC_MSGR is not set
-CONFIG_MPIC_TIMER=y
-CONFIG_MPILIB=y
-# CONFIG_MTD_CFI is not set
-CONFIG_MTD_NAND_CORE=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_ECC_SW_HAMMING=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_MTD_SPI_NOR=y
-# CONFIG_MVME2500 is not set
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NEED_SG_DMA_LENGTH=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NLS=y
-CONFIG_NR_CPUS=1
-CONFIG_NR_IRQS=512
-CONFIG_NVMEM=y
-# CONFIG_NVMEM_QORIQ_EFUSE is not set
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_DMA_DEFAULT_COHERENT=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_OLD_SIGACTION=y
-CONFIG_OLD_SIGSUSPEND=y
-# CONFIG_P1010_RDB is not set
-# CONFIG_P1022_DS is not set
-# CONFIG_P1022_RDK is not set
-# CONFIG_P1023_RDB is not set
-CONFIG_PAGE_OFFSET=0xc0000000
-# CONFIG_PANDA is not set
-CONFIG_PCI=y
-CONFIG_PCIEAER=y
-CONFIG_PCIEASPM=y
-CONFIG_PCIEASPM_DEFAULT=y
-# CONFIG_PCIEASPM_PERFORMANCE is not set
-# CONFIG_PCIEASPM_POWERSAVE is not set
-# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
-CONFIG_PCIEPORTBUS=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_PHYSICAL_ALIGN=0x04000000
-CONFIG_PHYSICAL_START=0x00000000
-# CONFIG_PHYS_64BIT is not set
-# CONFIG_PMU_SYSFS is not set
-# CONFIG_PPA8548 is not set
-CONFIG_PPC=y
-CONFIG_PPC32=y
-# CONFIG_PPC64 is not set
-CONFIG_PPC_85xx=y
-# CONFIG_PPC_8xx is not set
-CONFIG_PPC_ADV_DEBUG_DACS=2
-CONFIG_PPC_ADV_DEBUG_DVCS=0
-CONFIG_PPC_ADV_DEBUG_IACS=2
-CONFIG_PPC_ADV_DEBUG_REGS=y
-CONFIG_PPC_BARRIER_NOSPEC=y
-CONFIG_PPC_BOOK3E_MMU=y
-# CONFIG_PPC_BOOK3S_32 is not set
-CONFIG_PPC_DOORBELL=y
-# CONFIG_PPC_E500MC is not set
-# CONFIG_PPC_EARLY_DEBUG is not set
-CONFIG_PPC_FSL_BOOK3E=y
-CONFIG_PPC_INDIRECT_PCI=y
-CONFIG_PPC_MMU_NOHASH=y
-CONFIG_PPC_PAGE_SHIFT=12
-# CONFIG_PPC_QEMU_E500 is not set
-CONFIG_PPC_SMP_MUXED_IPI=y
-CONFIG_PPC_UDBG_16550=y
-CONFIG_PPC_WERROR=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_QE_GPIO=y
-CONFIG_QUICC_ENGINE=y
-CONFIG_RAS=y
-# CONFIG_RED_15W_REV1 is not set
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_GENERIC=y
-CONFIG_RTC_I2C_AND_SPI=y
-CONFIG_RTC_MC146818_LIB=y
-# CONFIG_SCOM_DEBUGFS is not set
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_FSL=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-# CONFIG_SERIAL_QE is not set
-# CONFIG_SOCRATES is not set
-CONFIG_SPARSE_IRQ=y
-CONFIG_SPE=y
-CONFIG_SPE_POSSIBLE=y
-CONFIG_SPI=y
-CONFIG_SPI_FSL_ESPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-CONFIG_SRCU=y
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_STX_GP3 is not set
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_TARGET_CPU="8540"
-CONFIG_TARGET_CPU_BOOL=y
-CONFIG_TASK_SIZE=0xc0000000
-CONFIG_THREAD_INFO_IN_TASK=y
-CONFIG_THREAD_SHIFT=13
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TINY_SRCU=y
-# CONFIG_TL_WDR4900_V1 is not set
-# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
-# CONFIG_TQM8540 is not set
-# CONFIG_TQM8541 is not set
-# CONFIG_TQM8548 is not set
-# CONFIG_TQM8555 is not set
-# CONFIG_TQM8560 is not set
-# CONFIG_TWR_P102x is not set
-CONFIG_UCC=y
-CONFIG_UCC_FAST=y
-CONFIG_UCC_GETH=y
-# CONFIG_UGETH_TX_ON_DEMAND is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_VDSO32=y
-# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_WATCHDOG_CORE=y
-# CONFIG_WS_AP3710I is not set
-# CONFIG_WS_AP3715I is not set
-# CONFIG_WS_AP3825I is not set
-# CONFIG_XES_MPC85xx is not set
-CONFIG_XZ_DEC_BCJ=y
-CONFIG_XZ_DEC_POWERPC=y
diff --git a/target/linux/mpc85xx/patches-5.15/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch b/target/linux/mpc85xx/patches-5.15/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
deleted file mode 100644
index 5e5ab10daf..0000000000
--- a/target/linux/mpc85xx/patches-5.15/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/powerpc/platforms/85xx/common.c
-+++ b/arch/powerpc/platforms/85xx/common.c
-@@ -30,6 +30,7 @@ static const struct of_device_id mpc85xx
- 	{ .compatible = "fsl,mpc8548-guts", },
- 	/* Probably unnecessary? */
- 	{ .compatible = "gpio-leds", },
-+	{ .compatible = "gpio-keys", },
- 	/* For all PCI controllers */
- 	{ .compatible = "fsl,mpc8540-pci", },
- 	{ .compatible = "fsl,mpc8548-pcie", },
diff --git a/target/linux/mpc85xx/patches-5.15/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-5.15/100-powerpc-85xx-tl-wdr4900-v1-support.patch
deleted file mode 100644
index fa27e9665d..0000000000
--- a/target/linux/mpc85xx/patches-5.15/100-powerpc-85xx-tl-wdr4900-v1-support.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 1d9f596e572917772b87a2a37e1680902964782f Mon Sep 17 00:00:00 2001
-From: Gabor Juhos <juhosg at openwrt.org>
-Date: Wed, 20 Feb 2013 08:40:33 +0100
-Subject: [PATCH] powerpc: 85xx: add support for the TP-Link TL-WDR4900 v1
- board
-
-This patch adds support for the TP-Link TL-WDR4900 v1
-concurrent dual-band wireless router. The devices uses
-the Freescale P1014 SoC.
-
-Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
-Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
----
- arch/powerpc/boot/Makefile           |  3 ++-
- arch/powerpc/boot/wrapper            |  5 +++++
- arch/powerpc/platforms/85xx/Kconfig  | 12 ++++++++++++
- arch/powerpc/platforms/85xx/Makefile |  1 +
- 4 files changed, 20 insertions(+), 1 deletion(-)
-
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -163,6 +163,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
- src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
- src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
- src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
-+src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
- 
- src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
- 
-@@ -343,7 +344,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
- image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
- image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
- image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
--
-+image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
- # Board ports in arch/powerpc/platform/86xx/Kconfig
- image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
- 
---- a/arch/powerpc/boot/wrapper
-+++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,11 @@ adder875-redboot)
-     platformo="$object/fixed-head.o $object/redboot-8xx.o"
-     binary=y
-     ;;
-+simpleboot-tl-wdr4900-v1)
-+    platformo="$object/fixed-head.o $object/simpleboot.o"
-+    link_address='0x1500000'
-+    binary=y
-+    ;;
- simpleboot-*)
-     platformo="$object/fixed-head.o $object/simpleboot.o"
-     binary=y
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -170,6 +170,18 @@ config STX_GP3
- 	select CPM2
- 	select DEFAULT_UIMAGE
- 
-+config TL_WDR4900_V1
-+    bool "TP-Link TL-WDR4900 v1"
-+    select DEFAULT_UIMAGE
-+    select ARCH_REQUIRE_GPIOLIB
-+    select GPIO_MPC8XXX
-+    select SWIOTLB
-+    help
-+      This option enables support for the TP-Link TL-WDR4900 v1 board.
-+
-+      This board is a Concurrent Dual-Band wireless router with a
-+      Freescale P1014 SoC.
-+
- config TQM8540
- 	bool "TQ Components TQM8540"
- 	help
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
- obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
- obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
- obj-$(CONFIG_STX_GP3)	  += stx_gp3.o
-+obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o
- obj-$(CONFIG_TQM85xx)	  += tqm85xx.o
- obj-$(CONFIG_PPA8548)     += ppa8548.o
- obj-$(CONFIG_SOCRATES)    += socrates.o socrates_fpga_pic.o
diff --git a/target/linux/mpc85xx/patches-5.15/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-5.15/101-powerpc-85xx-hiveap-330-support.patch
deleted file mode 100644
index 7d531e4ffc..0000000000
--- a/target/linux/mpc85xx/patches-5.15/101-powerpc-85xx-hiveap-330-support.patch
+++ /dev/null
@@ -1,58 +0,0 @@
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -49,6 +49,17 @@ config BSC9132_QDS
- 	  and dual StarCore SC3850 DSP cores.
- 	  Manufacturer : Freescale Semiconductor, Inc
- 
-+config HIVEAP_330
-+    bool "Aerohive HiveAP-330"
-+    select DEFAULT_UIMAGE
-+    select ARCH_REQUIRE_GPIOLIB
-+    select GPIO_MPC8XXX
-+    help
-+      This option enables support for the Aerohive HiveAP-330 board.
-+
-+      This board is a Concurrent Dual-Band wireless access point with a
-+      Freescale P1020 SoC.
-+
- config MPC8540_ADS
- 	bool "Freescale MPC8540 ADS"
- 	select DEFAULT_UIMAGE
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -12,6 +12,7 @@ obj-y += common.o
- obj-$(CONFIG_BSC9131_RDB) += bsc913x_rdb.o
- obj-$(CONFIG_BSC9132_QDS) += bsc913x_qds.o
- obj-$(CONFIG_C293_PCIE)   += c293pcie.o
-+obj-$(CONFIG_HIVEAP_330) += hiveap-330.o
- obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
- obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
- obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -163,6 +163,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
- src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
- src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
- src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
-+src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
- src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
- 
- src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
-@@ -344,6 +345,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
- image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
- image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
- image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
-+image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
- image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
- # Board ports in arch/powerpc/platform/86xx/Kconfig
- image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
---- a/arch/powerpc/boot/wrapper
-+++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,7 @@ adder875-redboot)
-     platformo="$object/fixed-head.o $object/redboot-8xx.o"
-     binary=y
-     ;;
-+simpleboot-hiveap-330|\
- simpleboot-tl-wdr4900-v1)
-     platformo="$object/fixed-head.o $object/simpleboot.o"
-     link_address='0x1500000'
diff --git a/target/linux/mpc85xx/patches-5.15/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-5.15/102-powerpc-add-cmdline-override.patch
deleted file mode 100644
index 0d26dc8501..0000000000
--- a/target/linux/mpc85xx/patches-5.15/102-powerpc-add-cmdline-override.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- a/arch/powerpc/Kconfig
-+++ b/arch/powerpc/Kconfig
-@@ -915,6 +915,14 @@ config CMDLINE_FORCE
- 
- endchoice
- 
-+config CMDLINE_OVERRIDE
-+    bool "Use alternative cmdline from device tree"
-+    help
-+      Some bootloaders may have uneditable bootargs. While CMDLINE_FORCE can
-+      be used, this is not a good option for kernels that are shared across
-+      devices. This setting enables using "chosen/cmdline-override" as the
-+      cmdline if it exists in the device tree.
-+
- config EXTRA_TARGETS
- 	string "Additional default image types"
- 	help
---- a/drivers/of/fdt.c
-+++ b/drivers/of/fdt.c
-@@ -1162,6 +1162,17 @@ int __init early_init_dt_scan_chosen(uns
- 	if (p != NULL && l > 0)
- 		strlcat(data, p, min_t(int, strlen(data) + (int)l, COMMAND_LINE_SIZE));
- 
-+    /* CONFIG_CMDLINE_OVERRIDE is used to fallback to a different
-+     * device tree option of chosen/bootargs-override. This is
-+     * helpful on boards where u-boot sets bootargs, and is unable
-+     * to be modified.
-+     */
-+#ifdef CONFIG_CMDLINE_OVERRIDE
-+	p = of_get_flat_dt_prop(node, "bootargs-override", &l);
-+	if (p != NULL && l > 0)
-+		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
-+#endif
-+
- 	/*
- 	 * CONFIG_CMDLINE is meant to be a default in case nothing else
- 	 * managed to set the command line, unless CONFIG_CMDLINE_FORCE
diff --git a/target/linux/mpc85xx/patches-5.15/103-powerpc-85xx-red-15w-rev1.patch b/target/linux/mpc85xx/patches-5.15/103-powerpc-85xx-red-15w-rev1.patch
deleted file mode 100644
index 66044878eb..0000000000
--- a/target/linux/mpc85xx/patches-5.15/103-powerpc-85xx-red-15w-rev1.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -173,6 +173,16 @@ config XES_MPC85xx
- 	  Manufacturer: Extreme Engineering Solutions, Inc.
- 	  URL: <https://www.xes-inc.com/>
- 
-+config RED_15W_REV1
-+	bool "Sophos RED 15w Rev.1"
-+	select DEFAULT_UIMAGE
-+	select ARCH_REQUIRE_GPIOLIB
-+	select GPIO_MPC8XXX
-+	help
-+	  This option enables support for the Sophos RED 15w Rev.1 board.
-+
-+	  This board is a wireless VPN router with a Freescale P1010 SoC.
-+
- config STX_GP3
- 	bool "Silicon Turnkey Express GP3"
- 	help
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
- obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
- obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
- obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
-+obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
- obj-$(CONFIG_STX_GP3)	  += stx_gp3.o
- obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o
- obj-$(CONFIG_TQM85xx)	  += tqm85xx.o
diff --git a/target/linux/mpc85xx/patches-5.15/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch b/target/linux/mpc85xx/patches-5.15/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
deleted file mode 100644
index 94ed26c3df..0000000000
--- a/target/linux/mpc85xx/patches-5.15/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-From 93514afd769c305182beeed1f9c4c46235879ef8 Mon Sep 17 00:00:00 2001
-From: Pawel Dembicki <paweldembicki at gmail.com>
-Date: Sun, 30 Dec 2018 23:24:41 +0100
-Subject: [PATCH] powerpc: mpc85xx: change P2020RDB dts file for OpenWRT
-
-This patch apply chages for OpenWRT in P2020RDB
-dts file.
-
-Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
----
- arch/powerpc/boot/dts/fsl/p2020rdb.dts | 98 +++++++++++++++++---------
- 1 file changed, 63 insertions(+), 35 deletions(-)
-
---- a/arch/powerpc/boot/dts/fsl/p2020rdb.dts
-+++ b/arch/powerpc/boot/dts/fsl/p2020rdb.dts
-@@ -5,10 +5,15 @@
-  * Copyright 2009-2012 Freescale Semiconductor Inc.
-  */
- 
-+/dts-v1/;
-+
- /include/ "p2020si-pre.dtsi"
- 
-+#include <dt-bindings/gpio/gpio.h>
-+#include <dt-bindings/input/input.h>
-+
- / {
--	model = "fsl,P2020RDB";
-+	model = "Freescale P2020RDB";
- 	compatible = "fsl,P2020RDB";
- 
- 	aliases {
-@@ -34,48 +39,38 @@
- 			  0x2 0x0 0x0 0xffb00000 0x00020000>;
- 
- 		nor at 0,0 {
--			#address-cells = <1>;
--			#size-cells = <1>;
- 			compatible = "cfi-flash";
- 			reg = <0x0 0x0 0x1000000>;
- 			bank-width = <2>;
- 			device-width = <1>;
- 
--			partition at 0 {
--				/* This location must not be altered  */
--				/* 256KB for Vitesse 7385 Switch firmware */
--				reg = <0x0 0x00040000>;
--				label = "NOR (RO) Vitesse-7385 Firmware";
--				read-only;
--			};
--
--			partition at 40000 {
--				/* 256KB for DTB Image */
--				reg = <0x00040000 0x00040000>;
--				label = "NOR (RO) DTB Image";
--				read-only;
--			};
-+			partitions {
-+				compatible = "fixed-partitions";
-+				#address-cells = <1>;
-+				#size-cells = <1>;
- 
--			partition at 80000 {
--				/* 3.5 MB for Linux Kernel Image */
--				reg = <0x00080000 0x00380000>;
--				label = "NOR (RO) Linux Kernel Image";
--				read-only;
--			};
-+				partition at 0 {
-+					/* This location must not be altered  */
-+					/* 256KB for Vitesse 7385 Switch firmware */
-+					reg = <0x0 0x00040000>;
-+					label = "NOR (RO) Vitesse-7385 Firmware";
-+					read-only;
-+				};
- 
--			partition at 400000 {
--				/* 11MB for JFFS2 based Root file System */
--				reg = <0x00400000 0x00b00000>;
--				label = "NOR (RW) JFFS2 Root File System";
--			};
-+				partition at 40000 {
-+					compatible = "denx,fit";
-+					reg = <0x00040000 0x00ec0000>;
-+					label = "firmware";
-+				};
- 
--			partition at f00000 {
--				/* This location must not be altered  */
--				/* 512KB for u-boot Bootloader Image */
--				/* 512KB for u-boot Environment Variables */
--				reg = <0x00f00000 0x00100000>;
--				label = "NOR (RO) U-Boot Image";
--				read-only;
-+				partition at f00000 {
-+					/* This location must not be altered  */
-+					/* 512KB for u-boot Bootloader Image */
-+					/* 512KB for u-boot Environment Variables */
-+					reg = <0x00f00000 0x00100000>;
-+					label = "u-boot";
-+					read-only;
-+				};
- 			};
- 		};
- 
-@@ -85,6 +80,7 @@
- 			compatible = "fsl,p2020-fcm-nand",
- 				     "fsl,elbc-fcm-nand";
- 			reg = <0x1 0x0 0x40000>;
-+			nand-ecc-mode = "none";
- 
- 			partition at 0 {
- 				/* This location must not be altered  */
-@@ -140,13 +136,43 @@
- 	soc: soc at ffe00000 {
- 		ranges = <0x0 0x0 0xffe00000 0x100000>;
- 
-+		gpio0: gpio-controller at fc00 {
-+		};
-+
- 		i2c at 3000 {
-+			temperature-sensor at 4c {
-+				compatible = "adi,adt7461";
-+				reg = <0x4c>;
-+			};
-+
-+			eeprom at 50 {
-+				compatible = "atmel,24c256";
-+				reg = <0x50>;
-+			};
-+
- 			rtc at 68 {
- 				compatible = "dallas,ds1339";
- 				reg = <0x68>;
- 			};
- 		};
- 
-+		i2c at 3100 {
-+			pmic at 11 {
-+				compatible = "zl2006";
-+				reg = <0x11>;
-+			};
-+
-+			gpio at 18 {
-+				compatible = "nxp,pca9557";
-+				reg = <0x18>;
-+			};
-+
-+			eeprom at 52 {
-+				compatible = "atmel,24c01";
-+				reg = <0x52>;
-+			};
-+		};
-+
- 		spi at 7000 {
- 			flash at 0 {
- 				#address-cells = <1>;
-@@ -200,10 +226,12 @@
- 			phy0: ethernet-phy at 0 {
- 				interrupts = <3 1 0 0>;
- 				reg = <0x0>;
-+				reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
- 			};
- 			phy1: ethernet-phy at 1 {
- 				interrupts = <3 1 0 0>;
- 				reg = <0x1>;
-+				reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
- 			};
- 			tbi-phy at 2 {
- 				device_type = "tbi-phy";
diff --git a/target/linux/mpc85xx/patches-5.15/105-powerpc-85xx-panda-support.patch b/target/linux/mpc85xx/patches-5.15/105-powerpc-85xx-panda-support.patch
deleted file mode 100644
index 4913c614a8..0000000000
--- a/target/linux/mpc85xx/patches-5.15/105-powerpc-85xx-panda-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -60,6 +60,17 @@ config HIVEAP_330
-       This board is a Concurrent Dual-Band wireless access point with a
-       Freescale P1020 SoC.
- 
-+config PANDA
-+	bool "OCEDO PANDA"
-+	select DEFAULT_UIMAGE
-+	select ARCH_REQUIRE_GPIOLIB
-+	select GPIO_MPC8XXX
-+	help
-+	  This option enables support for the OCEDO PANDA board.
-+
-+	  This board is a Concurrent Dual-Band wireless access point with a
-+	  Freescale P1020 SoC.
-+
- config MPC8540_ADS
- 	bool "Freescale MPC8540 ADS"
- 	select DEFAULT_UIMAGE
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -24,6 +24,7 @@ obj-$(CONFIG_P1010_RDB)   += p1010rdb.o
- obj-$(CONFIG_P1022_DS)    += p1022_ds.o
- obj-$(CONFIG_P1022_RDK)   += p1022_rdk.o
- obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
-+obj-$(CONFIG_PANDA)       += panda.o
- obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
- obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
- obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
diff --git a/target/linux/mpc85xx/patches-5.15/106-powerpc-85xx-ws-ap3710i-support.patch b/target/linux/mpc85xx/patches-5.15/106-powerpc-85xx-ws-ap3710i-support.patch
deleted file mode 100644
index 124376ffd9..0000000000
--- a/target/linux/mpc85xx/patches-5.15/106-powerpc-85xx-ws-ap3710i-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -71,6 +71,17 @@ config PANDA
- 	  This board is a Concurrent Dual-Band wireless access point with a
- 	  Freescale P1020 SoC.
- 
-+config WS_AP3710I
-+	bool "Enterasys WS-AP3710i"
-+	select DEFAULT_UIMAGE
-+	select ARCH_REQUIRE_GPIOLIB
-+	select GPIO_MPC8XXX
-+	help
-+	  This option enables support for the Enterasys WS-AP3710i board.
-+
-+	  This board is a Concurrent Dual-Band wireless access point with a
-+	  Freescale P1020 SoC.
-+
- config MPC8540_ADS
- 	bool "Freescale MPC8540 ADS"
- 	select DEFAULT_UIMAGE
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -26,6 +26,7 @@ obj-$(CONFIG_P1022_RDK)   += p1022_rdk.o
- obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
- obj-$(CONFIG_PANDA)       += panda.o
- obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
-+obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
- obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
- obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
- obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
diff --git a/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch
deleted file mode 100644
index 9ccd9e877f..0000000000
--- a/target/linux/mpc85xx/patches-5.15/107-powerpc-85xx-add-ws-ap3825i-support.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 2fa1a7983ef30f3c7486f9b07c001bee87d1f6d6 Mon Sep 17 00:00:00 2001
-From: Martin Kennedy <hurricos at gmail.com>
-Date: Sat, 1 Jan 2022 11:01:37 -0500
-Subject: [PATCH] PowerPC 85xx: Add WS-AP3825i support
-
-This patch adds support for building Linux for the Extreme Networks
-WS-AP3825i AP.
-
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -82,6 +82,16 @@ config WS_AP3710I
- 	  This board is a Concurrent Dual-Band wireless access point with a
- 	  Freescale P1020 SoC.
- 
-+config WS_AP3825I
-+	bool "Extreme Networks WS-AP3825i"
-+	select DEFAULT_UIMAGE
-+	select ARCH_REQUIRE_GPIOLIB
-+	select GPIO_MPC8XXX
-+	help
-+	  This option enables support for the Extreme Networks WS-AP3825i board.
-+	  This board is a Concurrent Dual-Band wireless access point with a
-+	  Freescale P1020 SoC.
-+
- config MPC8540_ADS
- 	bool "Freescale MPC8540 ADS"
- 	select DEFAULT_UIMAGE
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
- obj-$(CONFIG_PANDA)       += panda.o
- obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
- obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
-+obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
- obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
- obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
- obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -165,6 +165,7 @@ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) +=
- src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
- src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
- src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
-+src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
- 
- src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
- 
-@@ -347,6 +348,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
- image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
- image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
- image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
-+image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
- # Board ports in arch/powerpc/platform/86xx/Kconfig
- image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
- 
---- a/arch/powerpc/boot/wrapper
-+++ b/arch/powerpc/boot/wrapper
-@@ -340,6 +340,7 @@ adder875-redboot)
-     binary=y
-     ;;
- simpleboot-hiveap-330|\
-+simpleboot-ws-ap3825i|\
- simpleboot-tl-wdr4900-v1)
-     platformo="$object/fixed-head.o $object/simpleboot.o"
-     link_address='0x1500000'
diff --git a/target/linux/mpc85xx/patches-5.15/108-powerpc-85xx-firebox-t10-support.patch.patch b/target/linux/mpc85xx/patches-5.15/108-powerpc-85xx-firebox-t10-support.patch.patch
deleted file mode 100644
index b074113eaa..0000000000
--- a/target/linux/mpc85xx/patches-5.15/108-powerpc-85xx-firebox-t10-support.patch.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -92,6 +92,16 @@ config WS_AP3825I
- 	  This board is a Concurrent Dual-Band wireless access point with a
- 	  Freescale P1020 SoC.
- 
-+config FIREBOX_T10
-+	bool "Watchguard Firebox T10"
-+	select DEFAULT_UIMAGE
-+	select ARCH_REQUIRE_GPIOLIB
-+	select GPIO_MPC8XXX
-+	help
-+	  This option enables support for the Watchguard Firebox T10 board.
-+	  This board is a VPN Gateway-Router with a
-+	  Freescale P1010 SoC.
-+
- config MPC8540_ADS
- 	bool "Freescale MPC8540 ADS"
- 	select DEFAULT_UIMAGE
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -28,6 +28,7 @@ obj-$(CONFIG_PANDA)       += panda.o
- obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
- obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
- obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
-+obj-$(CONFIG_FIREBOX_T10) += firebox_t10.o
- obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
- obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
- obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
diff --git a/target/linux/mpc85xx/patches-5.15/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-5.15/109-powerpc-85xx-add-ws-ap3715i-support.patch
deleted file mode 100644
index 59f3184295..0000000000
--- a/target/linux/mpc85xx/patches-5.15/109-powerpc-85xx-add-ws-ap3715i-support.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -82,6 +82,17 @@ config WS_AP3710I
- 	  This board is a Concurrent Dual-Band wireless access point with a
- 	  Freescale P1020 SoC.
- 
-+config WS_AP3715I
-+	bool "Enterasys WS-AP3715i"
-+	select DEFAULT_UIMAGE
-+	select ARCH_REQUIRE_GPIOLIB
-+	select GPIO_MPC8XXX
-+	help
-+	  This option enables support for the Enterasys WS-AP3715i board.
-+
-+	  This board is a Concurrent Dual-Band wireless access point with a
-+	  Freescale P1010 SoC.
-+
- config WS_AP3825I
- 	bool "Extreme Networks WS-AP3825i"
- 	select DEFAULT_UIMAGE
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
- obj-$(CONFIG_PANDA)       += panda.o
- obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
- obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
-+obj-$(CONFIG_WS_AP3715I)  += ws-ap3715i.o
- obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
- obj-$(CONFIG_FIREBOX_T10) += firebox_t10.o
- obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -348,6 +348,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
- image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
- image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
- image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
-+image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
- image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
- # Board ports in arch/powerpc/platform/86xx/Kconfig
- image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
---- a/arch/powerpc/boot/wrapper
-+++ b/arch/powerpc/boot/wrapper
-@@ -340,6 +340,7 @@ adder875-redboot)
-     binary=y
-     ;;
- simpleboot-hiveap-330|\
-+simpleboot-ws-ap3715i|\
- simpleboot-ws-ap3825i|\
- simpleboot-tl-wdr4900-v1)
-     platformo="$object/fixed-head.o $object/simpleboot.o"
diff --git a/target/linux/mpc85xx/patches-5.15/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-5.15/110-powerpc-85xx-br200-wp-support.patch
deleted file mode 100644
index 21a26f1a73..0000000000
--- a/target/linux/mpc85xx/patches-5.15/110-powerpc-85xx-br200-wp-support.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- a/arch/powerpc/platforms/85xx/Kconfig
-+++ b/arch/powerpc/platforms/85xx/Kconfig
-@@ -49,6 +49,16 @@ config BSC9132_QDS
- 	  and dual StarCore SC3850 DSP cores.
- 	  Manufacturer : Freescale Semiconductor, Inc
- 
-+config BR200_WP
-+    bool "Aerohive BR200-WP"
-+    select DEFAULT_UIMAGE
-+    select ARCH_REQUIRE_GPIOLIB
-+    select GPIO_MPC8XXX
-+    help
-+      This option enables support for the Aerohive BR200-WP board.
-+
-+      This board is a wireless router with a Freescale P1011 SoC.
-+
- config HIVEAP_330
-     bool "Aerohive HiveAP-330"
-     select DEFAULT_UIMAGE
---- a/arch/powerpc/platforms/85xx/Makefile
-+++ b/arch/powerpc/platforms/85xx/Makefile
-@@ -12,6 +12,7 @@ obj-y += common.o
- obj-$(CONFIG_BSC9131_RDB) += bsc913x_rdb.o
- obj-$(CONFIG_BSC9132_QDS) += bsc913x_qds.o
- obj-$(CONFIG_C293_PCIE)   += c293pcie.o
-+obj-$(CONFIG_BR200_WP) += br200-wp.o
- obj-$(CONFIG_HIVEAP_330) += hiveap-330.o
- obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
- obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -163,6 +163,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
- src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
- src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
- src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
-+src-plat-$(CONFIG_BR200_WP) += simpleboot.c fixed-head.S
- src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
- src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
- src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
-@@ -346,6 +347,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
- image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
- image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
- image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
-+image-$(CONFIG_BR200_WP)		+= simpleImage.br200-wp
- image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
- image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
- image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
---- a/arch/powerpc/boot/wrapper
-+++ b/arch/powerpc/boot/wrapper
-@@ -339,6 +339,7 @@ adder875-redboot)
-     platformo="$object/fixed-head.o $object/redboot-8xx.o"
-     binary=y
-     ;;
-+simpleboot-br200-wp|\
- simpleboot-hiveap-330|\
- simpleboot-ws-ap3715i|\
- simpleboot-ws-ap3825i|\
diff --git a/target/linux/mpc85xx/patches-5.15/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch b/target/linux/mpc85xx/patches-5.15/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
deleted file mode 100644
index 1ff80a5016..0000000000
--- a/target/linux/mpc85xx/patches-5.15/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5f856ccc34df25060d36a5a81b7b45b574d86e35 Mon Sep 17 00:00:00 2001
-From: David Bauer <mail at david-bauer.net>
-Date: Sun, 3 Dec 2023 20:09:24 +0100
-Subject: [PATCH] arch: powerpc: simpleboot: prevent overwrite of CPU1
- spin-table
-
-Don't overwrite the spin-table of additional CPU cores with loader-heap.
-
-U-Boot places the spin-table for CPU1 on P1020 SoCs in the top 1MB of
-system-memory. Instead of parsing reserved-memory (which would be
-considerable more work), reduce the available system-memory for the
-loader by 1MB.
-
-This prevents the loader from overwriting the spin-table of
-additional CPU cores on these platforms.
-
-Linux itself needs to be made aware by this using reserved-memory
-definitions.
-
-This patch is required for using CPU1 on the Extreme Networks
-WS-AP3825i.
-
-Signed-off-by: David Bauer <mail at david-bauer.net>
----
- arch/powerpc/boot/simpleboot.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
---- a/arch/powerpc/boot/simpleboot.c
-+++ b/arch/powerpc/boot/simpleboot.c
-@@ -65,6 +65,11 @@ void platform_init(unsigned long r3, uns
- 	if (sizeof(void *) == 4 && memsize64 >= 0x100000000ULL)
- 		memsize64 = 0xffffffff;
- 
-+	/* Reserve upper 1 MB of memory for CPU1 spin-table */
-+	if (memsize64 > 0x100000) {
-+		memsize64 = memsize64 - 0x100000;
-+	}
-+
- 	/* finally, setup the timebase */
- 	node = fdt_node_offset_by_prop_value(_dtb_start, -1, "device_type",
- 					     "cpu", sizeof("cpu"));
diff --git a/target/linux/mpc85xx/patches-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch
deleted file mode 100644
index 7f99bd5211..0000000000
--- a/target/linux/mpc85xx/patches-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d43ab14605510d9d2bd257a8cd70f24ada4621b0 Mon Sep 17 00:00:00 2001
-From: David Bauer <mail at david-bauer.net>
-Date: Sat, 29 Feb 2020 14:27:04 +0100
-Subject: [PATCH] powerpc: bootwrapper: disable uImage generation
-
-Due to CONFIG_KERNEL_XZ symbol, the bootwrapper code tries to
-instruct the mkimage to use the xz compression, which isn't
-supported. This disables the uImage generation, as OpenWrt
-generates individual uImages for each board using it's own
-toolchain.
-
-Signed-off-by: David Bauer <mail at david-bauer.net>
----
- arch/powerpc/boot/Makefile | 9 ---------
- 1 file changed, 9 deletions(-)
-
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -275,7 +275,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
- image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
- image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
- image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
--image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
- image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
- 
- #
-@@ -411,15 +410,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
- $(obj)/vmlinux.strip: vmlinux
- 	$(STRIP) -s -R .comment $< -o $@
- 
--$(obj)/uImage: vmlinux $(wrapperbits) FORCE
--	$(call if_changed,wrap,uboot)
--
--$(obj)/uImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
--	$(call if_changed,wrap,uboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
--
--$(obj)/uImage.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
--	$(call if_changed,wrap,uboot-$*,,$(obj)/dts/$*.dtb)
--
- $(obj)/cuImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
- 	$(call if_changed,wrap,cuboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
- 



From lede-commits at lists.infradead.org  Sun Mar 24 13:20:57 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 24 Mar 2024 16:20:57 -0400
Subject: [openwrt/openwrt]  kernel/mpc85xx: Restore kernel files for v6.1
In-Reply-To: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
References: <171131165124.1450181.11866505465603128527@git-01.infra.openwrt.org>
Message-ID: <mailman.18998.1711311667.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/3146fdfd71db6f8deda5b3127686e1705971d38f

commit 3146fdfd71db6f8deda5b3127686e1705971d38f
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Wed Mar 13 10:38:57 2024 +0100

    kernel/mpc85xx: Restore kernel files for v6.1
    
    This is an automatically generated commit which aids following Kernel patch history,
    as git will see the move and copy as a rename thus defeating the purpose.
    
    See: https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
    for the original discussion.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 target/linux/mpc85xx/config-6.1                    | 294 +++++++++++++++++++++
 ...erpc-85xx-add-gpio-keys-to-of-match-table.patch |  10 +
 .../100-powerpc-85xx-tl-wdr4900-v1-support.patch   |  83 ++++++
 .../101-powerpc-85xx-hiveap-330-support.patch      |  58 ++++
 .../102-powerpc-add-cmdline-override.patch         |  37 +++
 .../103-powerpc-85xx-red-15w-rev1.patch            |  29 ++
 ...85xx-change-P2020RDB-dts-file-for-OpenWRT.patch | 170 ++++++++++++
 .../105-powerpc-85xx-panda-support.patch           |  30 +++
 .../106-powerpc-85xx-ws-ap3710i-support.patch      |  30 +++
 .../107-powerpc-85xx-add-ws-ap3825i-support.patch  |  65 +++++
 ...08-powerpc-85xx-firebox-t10-support.patch.patch |  29 ++
 .../109-powerpc-85xx-add-ws-ap3715i-support.patch  |  50 ++++
 .../110-powerpc-85xx-br200-wp-support.patch        |  57 ++++
 ...c-simpleboot-prevent-overwrite-of-CPU1-sp.patch |  41 +++
 ...rpc-bootwrapper-disable-uImage-generation.patch |  42 +++
 15 files changed, 1025 insertions(+)

diff --git a/target/linux/mpc85xx/config-6.1 b/target/linux/mpc85xx/config-6.1
new file mode 100644
index 0000000000..c3e0414a78
--- /dev/null
+++ b/target/linux/mpc85xx/config-6.1
@@ -0,0 +1,294 @@
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_ADVANCED_OPTIONS is not set
+CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
+CONFIG_ARCH_MMAP_RND_BITS=11
+CONFIG_ARCH_MMAP_RND_BITS_MAX=17
+CONFIG_ARCH_MMAP_RND_BITS_MIN=11
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_SPLIT_ARG64=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
+CONFIG_ASN1=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BOOKE=y
+CONFIG_BOOKE_OR_40x=y
+CONFIG_BOOKE_WDT=y
+# CONFIG_BR200_WP is not set
+# CONFIG_BSC9131_RDB is not set
+# CONFIG_BSC9132_QDS is not set
+# CONFIG_C293_PCIE is not set
+CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
+CONFIG_CC_NO_ARRAY_BOUNDS=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CLZ_TAB=y
+CONFIG_CMDLINE="console=ttyS0,115200"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_OVERRIDE is not set
+# CONFIG_COMMON_CLK is not set
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+CONFIG_COMPAT_32BIT_TIME=y
+# CONFIG_CORENET_GENERIC is not set
+# CONFIG_CPM2 is not set
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CRYPTO_AES_PPC_SPE is not set
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_UTILS=y
+# CONFIG_CRYPTO_MD5_PPC is not set
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RSA=y
+# CONFIG_CRYPTO_SHA1_PPC is not set
+# CONFIG_CRYPTO_SHA1_PPC_SPE is not set
+# CONFIG_CRYPTO_SHA256_PPC_SPE is not set
+CONFIG_DATA_SHIFT=24
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DNOTIFY=y
+CONFIG_DTC=y
+CONFIG_E500_CPU=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_EDAC=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_LEGACY_SYSFS=y
+CONFIG_EDAC_MPC85XX=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+# CONFIG_FIREBOX_T10 is not set
+CONFIG_FIXED_PHY=y
+CONFIG_FSL_EMB_PERFMON=y
+# CONFIG_FSL_FMAN is not set
+CONFIG_FSL_LBC=y
+CONFIG_FSL_PCI=y
+CONFIG_FSL_PQ_MDIO=y
+CONFIG_FSL_SOC=y
+CONFIG_FSL_SOC_BOOKE=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FW_LOADER_SYSFS=y
+CONFIG_GCC11_NO_ARRAY_BOUNDS=y
+CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ATOMIC64=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GEN_RTC=y
+# CONFIG_GE_IMP3A is not set
+CONFIG_GIANFAR=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_MPC8XXX=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+# CONFIG_HIVEAP_330 is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HZ_PERIODIC=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_MPC=y
+CONFIG_ILLEGAL_POINTER_VALUE=0
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_WORK=y
+CONFIG_ISA_DMA_API=y
+CONFIG_KERNEL_START=0xc0000000
+# CONFIG_KSI8560 is not set
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOWMEM_CAM_NUM=9
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_LXT_PHY=y
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_MIGRATION=y
+CONFIG_MMU_GATHER_MERGE_VMAS=y
+CONFIG_MMU_GATHER_PAGE_SIZE=y
+CONFIG_MODULES_USE_ELF_RELA=y
+# CONFIG_MPC8536_DS is not set
+# CONFIG_MPC8540_ADS is not set
+# CONFIG_MPC8560_ADS is not set
+# CONFIG_MPC85xx_CDS is not set
+# CONFIG_MPC85xx_DS is not set
+# CONFIG_MPC85xx_MDS is not set
+# CONFIG_MPC85xx_RDB is not set
+CONFIG_MPIC=y
+# CONFIG_MPIC_MSGR is not set
+CONFIG_MPIC_TIMER=y
+CONFIG_MPILIB=y
+# CONFIG_MTD_CFI is not set
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MVME2500 is not set
+CONFIG_NEED_PER_CPU_KM=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NLS=y
+CONFIG_NR_CPUS=1
+CONFIG_NR_IRQS=512
+CONFIG_NVMEM=y
+CONFIG_NVMEM_LAYOUTS=y
+# CONFIG_NVMEM_QORIQ_EFUSE is not set
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_DMA_DEFAULT_COHERENT=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_OLD_SIGSUSPEND=y
+# CONFIG_P1010_RDB is not set
+# CONFIG_P1022_DS is not set
+# CONFIG_P1022_RDK is not set
+# CONFIG_P1023_RDB is not set
+CONFIG_PAGE_OFFSET=0xc0000000
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+# CONFIG_PANDA is not set
+CONFIG_PCI=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_PHYLIB=y
+CONFIG_PHYLIB_LEDS=y
+CONFIG_PHYSICAL_ALIGN=0x04000000
+CONFIG_PHYSICAL_START=0x00000000
+# CONFIG_PHYS_64BIT is not set
+# CONFIG_PMU_SYSFS is not set
+# CONFIG_PPA8548 is not set
+CONFIG_PPC=y
+CONFIG_PPC32=y
+# CONFIG_PPC64 is not set
+CONFIG_PPC_85xx=y
+# CONFIG_PPC_8xx is not set
+CONFIG_PPC_ADV_DEBUG_DACS=2
+CONFIG_PPC_ADV_DEBUG_DVCS=0
+CONFIG_PPC_ADV_DEBUG_IACS=2
+CONFIG_PPC_ADV_DEBUG_REGS=y
+CONFIG_PPC_BARRIER_NOSPEC=y
+# CONFIG_PPC_BOOK3S_32 is not set
+CONFIG_PPC_DOORBELL=y
+CONFIG_PPC_E500=y
+# CONFIG_PPC_E500MC is not set
+# CONFIG_PPC_EARLY_DEBUG is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PPC_KUAP=y
+# CONFIG_PPC_KUAP_DEBUG is not set
+CONFIG_PPC_KUEP=y
+CONFIG_PPC_MMU_NOHASH=y
+CONFIG_PPC_PAGE_SHIFT=12
+# CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT is not set
+# CONFIG_PPC_QEMU_E500 is not set
+CONFIG_PPC_SMP_MUXED_IPI=y
+CONFIG_PPC_UDBG_16550=y
+CONFIG_PPC_WERROR=y
+CONFIG_PREEMPT_NONE_BUILD=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_QE_GPIO=y
+CONFIG_QUICC_ENGINE=y
+CONFIG_RANDSTRUCT_NONE=y
+CONFIG_RAS=y
+# CONFIG_RED_15W_REV1 is not set
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_GENERIC=y
+CONFIG_RTC_I2C_AND_SPI=y
+CONFIG_RTC_MC146818_LIB=y
+# CONFIG_SCOM_DEBUGFS is not set
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_OF_PLATFORM=y
+# CONFIG_SERIAL_QE is not set
+# CONFIG_SOCRATES is not set
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPE=y
+CONFIG_SPE_POSSIBLE=y
+CONFIG_SPI=y
+CONFIG_SPI_FSL_ESPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SRCU=y
+# CONFIG_STATIC_CALL_SELFTEST is not set
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_STX_GP3 is not set
+CONFIG_SWPHY=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_TARGET_CPU="8540"
+CONFIG_TARGET_CPU_BOOL=y
+CONFIG_TASK_SIZE=0xc0000000
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_THREAD_SHIFT=13
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TINY_SRCU=y
+# CONFIG_TL_WDR4900_V1 is not set
+# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
+# CONFIG_TQM8540 is not set
+# CONFIG_TQM8541 is not set
+# CONFIG_TQM8548 is not set
+# CONFIG_TQM8555 is not set
+# CONFIG_TQM8560 is not set
+# CONFIG_TWR_P102x is not set
+CONFIG_UCC=y
+CONFIG_UCC_FAST=y
+CONFIG_UCC_GETH=y
+# CONFIG_UGETH_TX_ON_DEMAND is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_VDSO32=y
+# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WS_AP3710I is not set
+# CONFIG_WS_AP3715I is not set
+# CONFIG_WS_AP3825I is not set
+# CONFIG_XES_MPC85xx is not set
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_XZ_DEC_POWERPC=y
diff --git a/target/linux/mpc85xx/patches-6.1/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch b/target/linux/mpc85xx/patches-6.1/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
new file mode 100644
index 0000000000..5e5ab10daf
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/001-powerpc-85xx-add-gpio-keys-to-of-match-table.patch
@@ -0,0 +1,10 @@
+--- a/arch/powerpc/platforms/85xx/common.c
++++ b/arch/powerpc/platforms/85xx/common.c
+@@ -30,6 +30,7 @@ static const struct of_device_id mpc85xx
+ 	{ .compatible = "fsl,mpc8548-guts", },
+ 	/* Probably unnecessary? */
+ 	{ .compatible = "gpio-leds", },
++	{ .compatible = "gpio-keys", },
+ 	/* For all PCI controllers */
+ 	{ .compatible = "fsl,mpc8540-pci", },
+ 	{ .compatible = "fsl,mpc8548-pcie", },
diff --git a/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
new file mode 100644
index 0000000000..a7253a9794
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/100-powerpc-85xx-tl-wdr4900-v1-support.patch
@@ -0,0 +1,83 @@
+From 1d9f596e572917772b87a2a37e1680902964782f Mon Sep 17 00:00:00 2001
+From: Gabor Juhos <juhosg at openwrt.org>
+Date: Wed, 20 Feb 2013 08:40:33 +0100
+Subject: [PATCH] powerpc: 85xx: add support for the TP-Link TL-WDR4900 v1
+ board
+
+This patch adds support for the TP-Link TL-WDR4900 v1
+concurrent dual-band wireless router. The devices uses
+the Freescale P1014 SoC.
+
+Signed-off-by: Gabor Juhos <juhosg at openwrt.org>
+Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
+---
+ arch/powerpc/boot/Makefile           |  3 ++-
+ arch/powerpc/boot/wrapper            |  5 +++++
+ arch/powerpc/platforms/85xx/Kconfig  | 12 ++++++++++++
+ arch/powerpc/platforms/85xx/Makefile |  1 +
+ 4 files changed, 20 insertions(+), 1 deletion(-)
+
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+ src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
+ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
++src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+ 
+ src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
+ 
+@@ -359,7 +360,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+ image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+-
++image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+ 
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -341,6 +341,11 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-tl-wdr4900-v1)
++    platformo="$object/fixed-head.o $object/simpleboot.o"
++    link_address='0x1500000'
++    binary=y
++    ;;
+ simpleboot-*)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
+     binary=y
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -163,6 +163,18 @@ config STX_GP3
+ 	select CPM2
+ 	select DEFAULT_UIMAGE
+ 
++config TL_WDR4900_V1
++    bool "TP-Link TL-WDR4900 v1"
++    select DEFAULT_UIMAGE
++    select ARCH_REQUIRE_GPIOLIB
++    select GPIO_MPC8XXX
++    select SWIOTLB
++    help
++      This option enables support for the TP-Link TL-WDR4900 v1 board.
++
++      This board is a Concurrent Dual-Band wireless router with a
++      Freescale P1014 SoC.
++
+ config TQM8540
+ 	bool "TQ Components TQM8540"
+ 	help
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
+ obj-$(CONFIG_STX_GP3)	  += stx_gp3.o
++obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o
+ obj-$(CONFIG_TQM85xx)	  += tqm85xx.o
+ obj-$(CONFIG_PPA8548)     += ppa8548.o
+ obj-$(CONFIG_SOCRATES)    += socrates.o socrates_fpga_pic.o
diff --git a/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
new file mode 100644
index 0000000000..e8b6632f2b
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/101-powerpc-85xx-hiveap-330-support.patch
@@ -0,0 +1,58 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -40,6 +40,17 @@ config BSC9132_QDS
+ 	  and dual StarCore SC3850 DSP cores.
+ 	  Manufacturer : Freescale Semiconductor, Inc
+ 
++config HIVEAP_330
++    bool "Aerohive HiveAP-330"
++    select DEFAULT_UIMAGE
++    select ARCH_REQUIRE_GPIOLIB
++    select GPIO_MPC8XXX
++    help
++      This option enables support for the Aerohive HiveAP-330 board.
++
++      This board is a Concurrent Dual-Band wireless access point with a
++      Freescale P1020 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -12,6 +12,7 @@ obj-y += common.o
+ obj-$(CONFIG_BSC9131_RDB) += bsc913x_rdb.o
+ obj-$(CONFIG_BSC9132_QDS) += bsc913x_qds.o
+ obj-$(CONFIG_C293_PCIE)   += c293pcie.o
++obj-$(CONFIG_HIVEAP_330) += hiveap-330.o
+ obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
+ obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
+ obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+ src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
+ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
++src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+ 
+ src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
+@@ -360,6 +361,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+ image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
++image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -341,6 +341,7 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-hiveap-330|\
+ simpleboot-tl-wdr4900-v1)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
+     link_address='0x1500000'
diff --git a/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch
new file mode 100644
index 0000000000..b83e5f86d2
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/102-powerpc-add-cmdline-override.patch
@@ -0,0 +1,37 @@
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
+@@ -954,6 +954,14 @@ config CMDLINE_FORCE
+ 
+ endchoice
+ 
++config CMDLINE_OVERRIDE
++    bool "Use alternative cmdline from device tree"
++    help
++      Some bootloaders may have uneditable bootargs. While CMDLINE_FORCE can
++      be used, this is not a good option for kernels that are shared across
++      devices. This setting enables using "chosen/cmdline-override" as the
++      cmdline if it exists in the device tree.
++
+ config EXTRA_TARGETS
+ 	string "Additional default image types"
+ 	help
+--- a/drivers/of/fdt.c
++++ b/drivers/of/fdt.c
+@@ -1187,6 +1187,17 @@ int __init early_init_dt_scan_chosen(cha
+ 	if (p != NULL && l > 0)
+ 		strlcat(cmdline, p, min_t(int, strlen(cmdline) + (int)l, COMMAND_LINE_SIZE));
+ 
++    /* CONFIG_CMDLINE_OVERRIDE is used to fallback to a different
++     * device tree option of chosen/bootargs-override. This is
++     * helpful on boards where u-boot sets bootargs, and is unable
++     * to be modified.
++     */
++#ifdef CONFIG_CMDLINE_OVERRIDE
++	p = of_get_flat_dt_prop(node, "bootargs-override", &l);
++	if (p != NULL && l > 0)
++		strlcpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE));
++#endif
++
+ handle_cmdline:
+ 	/*
+ 	 * CONFIG_CMDLINE is meant to be a default in case nothing else
diff --git a/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch b/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch
new file mode 100644
index 0000000000..711d98abe7
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/103-powerpc-85xx-red-15w-rev1.patch
@@ -0,0 +1,29 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -166,6 +166,16 @@ config XES_MPC85xx
+ 	  Manufacturer: Extreme Engineering Solutions, Inc.
+ 	  URL: <https://www.xes-inc.com/>
+ 
++config RED_15W_REV1
++	bool "Sophos RED 15w Rev.1"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Sophos RED 15w Rev.1 board.
++
++	  This board is a wireless VPN router with a Freescale P1010 SoC.
++
+ config STX_GP3
+ 	bool "Silicon Turnkey Express GP3"
+ 	help
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
++obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
+ obj-$(CONFIG_STX_GP3)	  += stx_gp3.o
+ obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o
+ obj-$(CONFIG_TQM85xx)	  += tqm85xx.o
diff --git a/target/linux/mpc85xx/patches-6.1/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch b/target/linux/mpc85xx/patches-6.1/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
new file mode 100644
index 0000000000..94ed26c3df
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/104-powerpc-mpc85xx-change-P2020RDB-dts-file-for-OpenWRT.patch
@@ -0,0 +1,170 @@
+From 93514afd769c305182beeed1f9c4c46235879ef8 Mon Sep 17 00:00:00 2001
+From: Pawel Dembicki <paweldembicki at gmail.com>
+Date: Sun, 30 Dec 2018 23:24:41 +0100
+Subject: [PATCH] powerpc: mpc85xx: change P2020RDB dts file for OpenWRT
+
+This patch apply chages for OpenWRT in P2020RDB
+dts file.
+
+Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
+---
+ arch/powerpc/boot/dts/fsl/p2020rdb.dts | 98 +++++++++++++++++---------
+ 1 file changed, 63 insertions(+), 35 deletions(-)
+
+--- a/arch/powerpc/boot/dts/fsl/p2020rdb.dts
++++ b/arch/powerpc/boot/dts/fsl/p2020rdb.dts
+@@ -5,10 +5,15 @@
+  * Copyright 2009-2012 Freescale Semiconductor Inc.
+  */
+ 
++/dts-v1/;
++
+ /include/ "p2020si-pre.dtsi"
+ 
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/input.h>
++
+ / {
+-	model = "fsl,P2020RDB";
++	model = "Freescale P2020RDB";
+ 	compatible = "fsl,P2020RDB";
+ 
+ 	aliases {
+@@ -34,48 +39,38 @@
+ 			  0x2 0x0 0x0 0xffb00000 0x00020000>;
+ 
+ 		nor at 0,0 {
+-			#address-cells = <1>;
+-			#size-cells = <1>;
+ 			compatible = "cfi-flash";
+ 			reg = <0x0 0x0 0x1000000>;
+ 			bank-width = <2>;
+ 			device-width = <1>;
+ 
+-			partition at 0 {
+-				/* This location must not be altered  */
+-				/* 256KB for Vitesse 7385 Switch firmware */
+-				reg = <0x0 0x00040000>;
+-				label = "NOR (RO) Vitesse-7385 Firmware";
+-				read-only;
+-			};
+-
+-			partition at 40000 {
+-				/* 256KB for DTB Image */
+-				reg = <0x00040000 0x00040000>;
+-				label = "NOR (RO) DTB Image";
+-				read-only;
+-			};
++			partitions {
++				compatible = "fixed-partitions";
++				#address-cells = <1>;
++				#size-cells = <1>;
+ 
+-			partition at 80000 {
+-				/* 3.5 MB for Linux Kernel Image */
+-				reg = <0x00080000 0x00380000>;
+-				label = "NOR (RO) Linux Kernel Image";
+-				read-only;
+-			};
++				partition at 0 {
++					/* This location must not be altered  */
++					/* 256KB for Vitesse 7385 Switch firmware */
++					reg = <0x0 0x00040000>;
++					label = "NOR (RO) Vitesse-7385 Firmware";
++					read-only;
++				};
+ 
+-			partition at 400000 {
+-				/* 11MB for JFFS2 based Root file System */
+-				reg = <0x00400000 0x00b00000>;
+-				label = "NOR (RW) JFFS2 Root File System";
+-			};
++				partition at 40000 {
++					compatible = "denx,fit";
++					reg = <0x00040000 0x00ec0000>;
++					label = "firmware";
++				};
+ 
+-			partition at f00000 {
+-				/* This location must not be altered  */
+-				/* 512KB for u-boot Bootloader Image */
+-				/* 512KB for u-boot Environment Variables */
+-				reg = <0x00f00000 0x00100000>;
+-				label = "NOR (RO) U-Boot Image";
+-				read-only;
++				partition at f00000 {
++					/* This location must not be altered  */
++					/* 512KB for u-boot Bootloader Image */
++					/* 512KB for u-boot Environment Variables */
++					reg = <0x00f00000 0x00100000>;
++					label = "u-boot";
++					read-only;
++				};
+ 			};
+ 		};
+ 
+@@ -85,6 +80,7 @@
+ 			compatible = "fsl,p2020-fcm-nand",
+ 				     "fsl,elbc-fcm-nand";
+ 			reg = <0x1 0x0 0x40000>;
++			nand-ecc-mode = "none";
+ 
+ 			partition at 0 {
+ 				/* This location must not be altered  */
+@@ -140,13 +136,43 @@
+ 	soc: soc at ffe00000 {
+ 		ranges = <0x0 0x0 0xffe00000 0x100000>;
+ 
++		gpio0: gpio-controller at fc00 {
++		};
++
+ 		i2c at 3000 {
++			temperature-sensor at 4c {
++				compatible = "adi,adt7461";
++				reg = <0x4c>;
++			};
++
++			eeprom at 50 {
++				compatible = "atmel,24c256";
++				reg = <0x50>;
++			};
++
+ 			rtc at 68 {
+ 				compatible = "dallas,ds1339";
+ 				reg = <0x68>;
+ 			};
+ 		};
+ 
++		i2c at 3100 {
++			pmic at 11 {
++				compatible = "zl2006";
++				reg = <0x11>;
++			};
++
++			gpio at 18 {
++				compatible = "nxp,pca9557";
++				reg = <0x18>;
++			};
++
++			eeprom at 52 {
++				compatible = "atmel,24c01";
++				reg = <0x52>;
++			};
++		};
++
+ 		spi at 7000 {
+ 			flash at 0 {
+ 				#address-cells = <1>;
+@@ -200,10 +226,12 @@
+ 			phy0: ethernet-phy at 0 {
+ 				interrupts = <3 1 0 0>;
+ 				reg = <0x0>;
++				reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+ 			};
+ 			phy1: ethernet-phy at 1 {
+ 				interrupts = <3 1 0 0>;
+ 				reg = <0x1>;
++				reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
+ 			};
+ 			tbi-phy at 2 {
+ 				device_type = "tbi-phy";
diff --git a/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch b/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch
new file mode 100644
index 0000000000..3c24a373ab
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/105-powerpc-85xx-panda-support.patch
@@ -0,0 +1,30 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -51,6 +51,17 @@ config HIVEAP_330
+       This board is a Concurrent Dual-Band wireless access point with a
+       Freescale P1020 SoC.
+ 
++config PANDA
++	bool "OCEDO PANDA"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the OCEDO PANDA board.
++
++	  This board is a Concurrent Dual-Band wireless access point with a
++	  Freescale P1020 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -24,6 +24,7 @@ obj-$(CONFIG_P1010_RDB)   += p1010rdb.o
+ obj-$(CONFIG_P1022_DS)    += p1022_ds.o
+ obj-$(CONFIG_P1022_RDK)   += p1022_rdk.o
+ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
++obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
diff --git a/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch b/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch
new file mode 100644
index 0000000000..5ac3f2f2d9
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/106-powerpc-85xx-ws-ap3710i-support.patch
@@ -0,0 +1,30 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -62,6 +62,17 @@ config PANDA
+ 	  This board is a Concurrent Dual-Band wireless access point with a
+ 	  Freescale P1020 SoC.
+ 
++config WS_AP3710I
++	bool "Enterasys WS-AP3710i"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Enterasys WS-AP3710i board.
++
++	  This board is a Concurrent Dual-Band wireless access point with a
++	  Freescale P1020 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -26,6 +26,7 @@ obj-$(CONFIG_P1022_RDK)   += p1022_rdk.o
+ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
++obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
+ obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
diff --git a/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
new file mode 100644
index 0000000000..63e7e46bbc
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -0,0 +1,65 @@
+From 2fa1a7983ef30f3c7486f9b07c001bee87d1f6d6 Mon Sep 17 00:00:00 2001
+From: Martin Kennedy <hurricos at gmail.com>
+Date: Sat, 1 Jan 2022 11:01:37 -0500
+Subject: [PATCH] PowerPC 85xx: Add WS-AP3825i support
+
+This patch adds support for building Linux for the Extreme Networks
+WS-AP3825i AP.
+
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -73,6 +73,16 @@ config WS_AP3710I
+ 	  This board is a Concurrent Dual-Band wireless access point with a
+ 	  Freescale P1020 SoC.
+ 
++config WS_AP3825I
++	bool "Extreme Networks WS-AP3825i"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Extreme Networks WS-AP3825i board.
++	  This board is a Concurrent Dual-Band wireless access point with a
++	  Freescale P1020 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
++obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
+ obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -181,6 +181,7 @@ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) +=
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
+ src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
++src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
+ 
+ src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
+ 
+@@ -363,6 +364,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
++image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+ 
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -342,6 +342,7 @@ adder875-redboot)
+     binary=y
+     ;;
+ simpleboot-hiveap-330|\
++simpleboot-ws-ap3825i|\
+ simpleboot-tl-wdr4900-v1)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
+     link_address='0x1500000'
diff --git a/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch b/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch
new file mode 100644
index 0000000000..0b3a93b848
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/108-powerpc-85xx-firebox-t10-support.patch.patch
@@ -0,0 +1,29 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -83,6 +83,16 @@ config WS_AP3825I
+ 	  This board is a Concurrent Dual-Band wireless access point with a
+ 	  Freescale P1020 SoC.
+ 
++config FIREBOX_T10
++	bool "Watchguard Firebox T10"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Watchguard Firebox T10 board.
++	  This board is a VPN Gateway-Router with a
++	  Freescale P1010 SoC.
++
+ config MPC8540_ADS
+ 	bool "Freescale MPC8540 ADS"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -28,6 +28,7 @@ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
+ obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
++obj-$(CONFIG_FIREBOX_T10) += firebox_t10.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+ obj-$(CONFIG_FB_FSL_DIU)	+= t1042rdb_diu.o
+ obj-$(CONFIG_RED_15W_REV1)	+= red15w_rev1.o
diff --git a/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
new file mode 100644
index 0000000000..f8e33ae637
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/109-powerpc-85xx-add-ws-ap3715i-support.patch
@@ -0,0 +1,50 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -73,6 +73,17 @@ config WS_AP3710I
+ 	  This board is a Concurrent Dual-Band wireless access point with a
+ 	  Freescale P1020 SoC.
+ 
++config WS_AP3715I
++	bool "Enterasys WS-AP3715i"
++	select DEFAULT_UIMAGE
++	select ARCH_REQUIRE_GPIOLIB
++	select GPIO_MPC8XXX
++	help
++	  This option enables support for the Enterasys WS-AP3715i board.
++
++	  This board is a Concurrent Dual-Band wireless access point with a
++	  Freescale P1010 SoC.
++
+ config WS_AP3825I
+ 	bool "Extreme Networks WS-AP3825i"
+ 	select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_P1023_RDB)   += p1023_rdb.o
+ obj-$(CONFIG_PANDA)       += panda.o
+ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o
+ obj-$(CONFIG_WS_AP3710I)  += ws-ap3710i.o
++obj-$(CONFIG_WS_AP3715I)  += ws-ap3715i.o
+ obj-$(CONFIG_WS_AP3825I)  += ws-ap3825i.o
+ obj-$(CONFIG_FIREBOX_T10) += firebox_t10.o
+ obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -364,6 +364,7 @@ image-$(CONFIG_TQM8560)			+= cuImage.tqm
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
++image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
+ image-$(CONFIG_WS_AP3825I)		+= simpleImage.ws-ap3825i
+ # Board ports in arch/powerpc/platform/86xx/Kconfig
+ image-$(CONFIG_MVME7100)                += dtbImage.mvme7100
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -342,6 +342,7 @@ adder875-redboot)
+     binary=y
+     ;;
+ simpleboot-hiveap-330|\
++simpleboot-ws-ap3715i|\
+ simpleboot-ws-ap3825i|\
+ simpleboot-tl-wdr4900-v1)
+     platformo="$object/fixed-head.o $object/simpleboot.o"
diff --git a/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
new file mode 100644
index 0000000000..b063b3dab7
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/110-powerpc-85xx-br200-wp-support.patch
@@ -0,0 +1,57 @@
+--- a/arch/powerpc/platforms/85xx/Kconfig
++++ b/arch/powerpc/platforms/85xx/Kconfig
+@@ -40,6 +40,16 @@ config BSC9132_QDS
+ 	  and dual StarCore SC3850 DSP cores.
+ 	  Manufacturer : Freescale Semiconductor, Inc
+ 
++config BR200_WP
++    bool "Aerohive BR200-WP"
++    select DEFAULT_UIMAGE
++    select ARCH_REQUIRE_GPIOLIB
++    select GPIO_MPC8XXX
++    help
++      This option enables support for the Aerohive BR200-WP board.
++
++      This board is a wireless router with a Freescale P1011 SoC.
++
+ config HIVEAP_330
+     bool "Aerohive HiveAP-330"
+     select DEFAULT_UIMAGE
+--- a/arch/powerpc/platforms/85xx/Makefile
++++ b/arch/powerpc/platforms/85xx/Makefile
+@@ -12,6 +12,7 @@ obj-y += common.o
+ obj-$(CONFIG_BSC9131_RDB) += bsc913x_rdb.o
+ obj-$(CONFIG_BSC9132_QDS) += bsc913x_qds.o
+ obj-$(CONFIG_C293_PCIE)   += c293pcie.o
++obj-$(CONFIG_BR200_WP) += br200-wp.o
+ obj-$(CONFIG_HIVEAP_330) += hiveap-330.o
+ obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
+ obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -179,6 +179,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
+ src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
+ src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
+ src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
++src-plat-$(CONFIG_BR200_WP) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_HIVEAP_330) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+ src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
+@@ -362,6 +363,7 @@ image-$(CONFIG_TQM8548)			+= cuImage.tqm
+ image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
+ image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
+ image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
++image-$(CONFIG_BR200_WP)		+= simpleImage.br200-wp
+ image-$(CONFIG_HIVEAP_330)		+= simpleImage.hiveap-330
+ image-$(CONFIG_TL_WDR4900_V1)		+= simpleImage.tl-wdr4900-v1
+ image-$(CONFIG_WS_AP3715I)		+= simpleImage.ws-ap3715i
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -341,6 +341,7 @@ adder875-redboot)
+     platformo="$object/fixed-head.o $object/redboot-8xx.o"
+     binary=y
+     ;;
++simpleboot-br200-wp|\
+ simpleboot-hiveap-330|\
+ simpleboot-ws-ap3715i|\
+ simpleboot-ws-ap3825i|\
diff --git a/target/linux/mpc85xx/patches-6.1/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch b/target/linux/mpc85xx/patches-6.1/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
new file mode 100644
index 0000000000..1ff80a5016
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/150-arch-powerpc-simpleboot-prevent-overwrite-of-CPU1-sp.patch
@@ -0,0 +1,41 @@
+From 5f856ccc34df25060d36a5a81b7b45b574d86e35 Mon Sep 17 00:00:00 2001
+From: David Bauer <mail at david-bauer.net>
+Date: Sun, 3 Dec 2023 20:09:24 +0100
+Subject: [PATCH] arch: powerpc: simpleboot: prevent overwrite of CPU1
+ spin-table
+
+Don't overwrite the spin-table of additional CPU cores with loader-heap.
+
+U-Boot places the spin-table for CPU1 on P1020 SoCs in the top 1MB of
+system-memory. Instead of parsing reserved-memory (which would be
+considerable more work), reduce the available system-memory for the
+loader by 1MB.
+
+This prevents the loader from overwriting the spin-table of
+additional CPU cores on these platforms.
+
+Linux itself needs to be made aware by this using reserved-memory
+definitions.
+
+This patch is required for using CPU1 on the Extreme Networks
+WS-AP3825i.
+
+Signed-off-by: David Bauer <mail at david-bauer.net>
+---
+ arch/powerpc/boot/simpleboot.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/arch/powerpc/boot/simpleboot.c
++++ b/arch/powerpc/boot/simpleboot.c
+@@ -65,6 +65,11 @@ void platform_init(unsigned long r3, uns
+ 	if (sizeof(void *) == 4 && memsize64 >= 0x100000000ULL)
+ 		memsize64 = 0xffffffff;
+ 
++	/* Reserve upper 1 MB of memory for CPU1 spin-table */
++	if (memsize64 > 0x100000) {
++		memsize64 = memsize64 - 0x100000;
++	}
++
+ 	/* finally, setup the timebase */
+ 	node = fdt_node_offset_by_prop_value(_dtb_start, -1, "device_type",
+ 					     "cpu", sizeof("cpu"));
diff --git a/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
new file mode 100644
index 0000000000..648aa0421d
--- /dev/null
+++ b/target/linux/mpc85xx/patches-6.1/900-powerpc-bootwrapper-disable-uImage-generation.patch
@@ -0,0 +1,42 @@
+From d43ab14605510d9d2bd257a8cd70f24ada4621b0 Mon Sep 17 00:00:00 2001
+From: David Bauer <mail at david-bauer.net>
+Date: Sat, 29 Feb 2020 14:27:04 +0100
+Subject: [PATCH] powerpc: bootwrapper: disable uImage generation
+
+Due to CONFIG_KERNEL_XZ symbol, the bootwrapper code tries to
+instruct the mkimage to use the xz compression, which isn't
+supported. This disables the uImage generation, as OpenWrt
+generates individual uImages for each board using it's own
+toolchain.
+
+Signed-off-by: David Bauer <mail at david-bauer.net>
+---
+ arch/powerpc/boot/Makefile | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -291,7 +291,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
+ image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
+ image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
+ image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
+-image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
+ image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
+ 
+ #
+@@ -427,15 +426,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+ $(obj)/vmlinux.strip: vmlinux
+ 	$(STRIP) -s -R .comment $< -o $@
+ 
+-$(obj)/uImage: vmlinux $(wrapperbits) FORCE
+-	$(call if_changed,wrap,uboot)
+-
+-$(obj)/uImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
+-	$(call if_changed,wrap,uboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
+-
+-$(obj)/uImage.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
+-	$(call if_changed,wrap,uboot-$*,,$(obj)/dts/$*.dtb)
+-
+ $(obj)/cuImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
+ 	$(call if_changed,wrap,cuboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
+ 



From lede-commits at lists.infradead.org  Mon Mar 25 01:32:55 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 25 Mar 2024 04:32:55 -0400
Subject: [openwrt/openwrt]  treewide: update PKG_MIRROR_HASH after APK version
 schema
In-Reply-To: <171135557508.2778683.11824665804882129435@git-01.infra.openwrt.org>
References: <171135557508.2778683.11824665804882129435@git-01.infra.openwrt.org>
Message-ID: <mailman.19167.1711355583.1280.lede-commits@lists.infradead.org>

aparcar pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/c02a2db05e941c49ba3d073f537c2d101c7e48b0

commit c02a2db05e941c49ba3d073f537c2d101c7e48b0
Author: Paul Spooren <mail at aparcar.org>
AuthorDate: Sat Mar 23 13:07:25 2024 +0100

    treewide: update PKG_MIRROR_HASH after APK version schema
    
    With the change in version schema the downloaded files changed, too,
    mostly the hash is now prefixed with a tilde `~` instead of a dash `-`.
    
    Since each downloaded archive contains folder with the same name as the
    archive, the checksum changed.
    
    Signed-off-by: Paul Spooren <mail at aparcar.org>
---
 package/boot/arm-trusted-firmware-mediatek/Makefile | 2 +-
 package/boot/opensbi/Makefile                       | 2 +-
 package/boot/rkbin/Makefile                         | 2 +-
 package/boot/uboot-bcm4908/Makefile                 | 2 +-
 package/boot/uboot-fritz4040/Makefile               | 2 +-
 package/firmware/ipq-wifi/Makefile                  | 2 +-
 package/kernel/bcm63xx-cfe/Makefile                 | 2 +-
 package/kernel/mwlwifi/Makefile                     | 2 +-
 package/kernel/qca-nss-dp/Makefile                  | 2 +-
 package/kernel/qca-ssdk/Makefile                    | 2 +-
 package/utils/yafut/Makefile                        | 2 +-
 11 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/package/boot/arm-trusted-firmware-mediatek/Makefile b/package/boot/arm-trusted-firmware-mediatek/Makefile
index abdd6e7e4a..70190b7618 100644
--- a/package/boot/arm-trusted-firmware-mediatek/Makefile
+++ b/package/boot/arm-trusted-firmware-mediatek/Makefile
@@ -15,7 +15,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/mtk-openwrt/arm-trusted-firmware.git
 PKG_SOURCE_DATE:=2023-10-13
 PKG_SOURCE_VERSION:=0ea67d76ae8be127c91caa3fcdf449b1fe533175
-PKG_MIRROR_HASH:=b102f6ffaa7cd2202161c44cab4d27f426d9d74c311ea9eb4d2f371ea2af4a2e
+PKG_MIRROR_HASH:=ad538e7304f8fae280491104b2128d9b7626c5da49216149a25921905590cb62
 
 PKG_MAINTAINER:=Daniel Golle <daniel at makrotopia.org>
 
diff --git a/package/boot/opensbi/Makefile b/package/boot/opensbi/Makefile
index 6bb33ad2aa..c9f104845f 100644
--- a/package/boot/opensbi/Makefile
+++ b/package/boot/opensbi/Makefile
@@ -12,7 +12,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/riscv/opensbi
 PKG_SOURCE_DATE:=2022-12-24
 PKG_SOURCE_VERSION:=6b5188ca14e59ce7bf71afe4e7d3d557c3d31bf8
-PKG_MIRROR_HASH:=edcdd99da6c62975171981c0aa2b73a27091067da11ccd49816b5ad27d000858
+PKG_MIRROR_HASH:=72096b51297b0fa9375500dab2e85e42fe32127b041dee073ecd14eb13906465
 
 PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 
diff --git a/package/boot/rkbin/Makefile b/package/boot/rkbin/Makefile
index bb116bdcd2..253d8f52b9 100644
--- a/package/boot/rkbin/Makefile
+++ b/package/boot/rkbin/Makefile
@@ -11,7 +11,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/rockchip-linux/rkbin.git
 PKG_SOURCE_DATE:=2023-07-26
 PKG_SOURCE_VERSION:=b4558da0860ca48bf1a571dd33ccba580b9abe23
-PKG_MIRROR_HASH:=5842fbcb7e217c336235573e431e427f2f745390d989f6765a6c258a5bdf1b6e
+PKG_MIRROR_HASH:=8c6259c64ee53f596ac15dbedd0541ca9af40cdf3951d40f030ea00b94379009
 
 PKG_LICENSE_FILES:=LICENSE
 PKG_MAINTAINER:=Tianling Shen <cnsztl at immortalwrt.org>
diff --git a/package/boot/uboot-bcm4908/Makefile b/package/boot/uboot-bcm4908/Makefile
index f3051aaf81..1e6e04c287 100644
--- a/package/boot/uboot-bcm4908/Makefile
+++ b/package/boot/uboot-bcm4908/Makefile
@@ -9,7 +9,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://git.openwrt.org/project/bcm63xx/u-boot.git
 PKG_SOURCE_DATE:=2022-12-08
 PKG_SOURCE_VERSION:=4435700d18a791dca0d8d767e5414dfac9df4451
-PKG_MIRROR_HASH:=6062ce611d7222eb3b9768bb4944ff1c7bcf26b997280adf5ea8d7afe83f28a8
+PKG_MIRROR_HASH:=a05c13451cd311f3b32c734cfc341e76007c8c6ed1eeb27aee7b0651609b7be3
 
 include $(INCLUDE_DIR)/u-boot.mk
 include $(INCLUDE_DIR)/package.mk
diff --git a/package/boot/uboot-fritz4040/Makefile b/package/boot/uboot-fritz4040/Makefile
index d19db162d7..29130fc596 100644
--- a/package/boot/uboot-fritz4040/Makefile
+++ b/package/boot/uboot-fritz4040/Makefile
@@ -12,7 +12,7 @@ PKG_SOURCE_URL:=https://github.com/chunkeey/FritzBox-4040-UBOOT
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_VERSION:=9d89013f9cc963eca25856c61fa066091d35f8de
 PKG_SOURCE_DATE:=2022-05-01
-PKG_MIRROR_HASH:=4f2a3782ba359e6d901b536d1d685026913c14426f8e58ba9673281f20675050
+PKG_MIRROR_HASH:=7c60ca967b607c9b43f54dd75e6126f63935e21e330bbf80f07d210889bb6c2d
 
 PKG_RELEASE:=5
 
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index ed4b26af3a..a34e368a5d 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -8,7 +8,7 @@ PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git
 PKG_SOURCE_DATE:=2024-03-04
 PKG_SOURCE_VERSION:=38c02ae4302f9cb73f6914574239fe84799caa84
-PKG_MIRROR_HASH:=0f6a2dea8466ea0e8df3262bff643d60b1725f2218589c41d9f87fb37843c362
+PKG_MIRROR_HASH:=1e84f576d4161ea932b45a651abebdc05ff3c261ef25fc13d3d68cf9b624abb3
 
 PKG_FLAGS:=nonshared
 
diff --git a/package/kernel/bcm63xx-cfe/Makefile b/package/kernel/bcm63xx-cfe/Makefile
index a8399ce112..dbd82403e9 100644
--- a/package/kernel/bcm63xx-cfe/Makefile
+++ b/package/kernel/bcm63xx-cfe/Makefile
@@ -8,7 +8,7 @@ PKG_SOURCE_URL:=https://github.com/openwrt/bcm63xx-cfe.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2021-06-22
 PKG_SOURCE_VERSION:=e5050f37150b34deb547b50feccd0e7439cb5bd7
-PKG_MIRROR_HASH:=85fed9f4bdf23cf7d33a02f549ffe9073666890f786d5ffa484c0368552b75ae
+PKG_MIRROR_HASH:=a3e255903e398aa5627ab3a4b5fb2576f07e130a236e74f19d8b9830fe0d58f0
 
 PKG_FLAGS:=nonshared
 
diff --git a/package/kernel/mwlwifi/Makefile b/package/kernel/mwlwifi/Makefile
index 2e6cd3a31e..e316869075 100644
--- a/package/kernel/mwlwifi/Makefile
+++ b/package/kernel/mwlwifi/Makefile
@@ -17,7 +17,7 @@ PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-11-29
 PKG_SOURCE_VERSION:=ebf3167445f108346dcff9a31a708534c0bd7cc5
-PKG_MIRROR_HASH:=1d39ad25f4ad1fafff03a70341c2dabde8db4075f56163d40f8ae8aef2e2bb2d
+PKG_MIRROR_HASH:=402ca0023f03c631b1dcefb15345cdc0eb92a3359912bc0ee46e06f0c9ebbac1
 
 PKG_MAINTAINER:=Imre Kaloz <kaloz at openwrt.org>
 PKG_BUILD_PARALLEL:=1
diff --git a/package/kernel/qca-nss-dp/Makefile b/package/kernel/qca-nss-dp/Makefile
index f9e992f246..e17446d236 100644
--- a/package/kernel/qca-nss-dp/Makefile
+++ b/package/kernel/qca-nss-dp/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-dp.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-06-06
 PKG_SOURCE_VERSION:=fa67464466f69f00967cc373d1bdd6025f57eb89
-PKG_MIRROR_HASH:=51bf524382a5cb542c2c80d12a91f87b9736de3ac3c1d4a351c97b3502d68574
+PKG_MIRROR_HASH:=48a3c3c6af426bf8a14dc4c2c68c4af70117acf31269024792b3a455181b7d31
 
 PKG_BUILD_PARALLEL:=1
 PKG_FLAGS:=nonshared
diff --git a/package/kernel/qca-ssdk/Makefile b/package/kernel/qca-ssdk/Makefile
index f1fb09c52a..6a7bab7a9a 100644
--- a/package/kernel/qca-ssdk/Makefile
+++ b/package/kernel/qca-ssdk/Makefile
@@ -7,7 +7,7 @@ PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk.git
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_DATE:=2023-10-04
 PKG_SOURCE_VERSION:=23a5aa4a4d5834da7a07efb58baebfbee91786b0
-PKG_MIRROR_HASH:=9d169ce924a46a4e530031061d3183b92f23c7f46b3106f0b9ba3587846a73ee
+PKG_MIRROR_HASH:=2310cdad1ebc424c534aa3a2c71e72e0ab3635295653a88d17dfc64c402cd151
 
 PKG_FLAGS:=nonshared
 PKG_BUILD_FLAGS:=no-lto
diff --git a/package/utils/yafut/Makefile b/package/utils/yafut/Makefile
index ef16404c33..225b53852b 100644
--- a/package/utils/yafut/Makefile
+++ b/package/utils/yafut/Makefile
@@ -5,7 +5,7 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/kempniu/yafut.git
-PKG_MIRROR_HASH:=6eece622d1df99ffee1a18d162d36292f32bf2d5e514663a6b61fd82c2ecbcba
+PKG_MIRROR_HASH:=281da69ba77c1b7556b76f8ee907e012dc9c6b15916bf5e2027980014b25d401
 PKG_SOURCE_DATE:=2023-03-31
 PKG_SOURCE_VERSION:=16435e89d449f953712983315e1a89cdb678620d
 



From lede-commits at lists.infradead.org  Mon Mar 25 03:02:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 25 Mar 2024 06:02:22 -0400
Subject: [openwrt/openwrt]  hostapd: fix Argument list too long build error
In-Reply-To: <171136094255.3013423.8237808679026634095@git-01.infra.openwrt.org>
References: <171136094255.3013423.8237808679026634095@git-01.infra.openwrt.org>
Message-ID: <mailman.19202.1711360950.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/bf4c04a4d08376bb611a748a102dbf974d089336

commit bf4c04a4d08376bb611a748a102dbf974d089336
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Sun Mar 24 20:54:26 2024 +0100

    hostapd: fix Argument list too long build error
    
    Currently, both CI and local builds of wpa-supplicant will fail with:
    /bin/sh: Argument list too long
    
    Its happening as the argument list for mkdir in build.rules is too large
    and over the MAX_ARG_STRLEN limit.
    
    It seems that recent introduction of APK compatible version schema has
    increased the argument size and thus pushed it over the limit uncovering
    the issue.
    
    Fixes: e8725a932e16 ("treewide: use APK compatible version schema")
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 ..._make_dirs-robust-against-too-long-argume.patch | 27 ++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/package/network/services/hostapd/patches/999-build-make-_make_dirs-robust-against-too-long-argume.patch b/package/network/services/hostapd/patches/999-build-make-_make_dirs-robust-against-too-long-argume.patch
new file mode 100644
index 0000000000..cb8171551d
--- /dev/null
+++ b/package/network/services/hostapd/patches/999-build-make-_make_dirs-robust-against-too-long-argume.patch
@@ -0,0 +1,27 @@
+From beeef79701082a82b2581a674e702ea60a358ce7 Mon Sep 17 00:00:00 2001
+From: Robert Marko <robimarko at gmail.com>
+Date: Sun, 24 Mar 2024 20:47:06 +0100
+Subject: [PATCH] build: make _make_dirs robust against too long argument error
+
+_make_dirs currently can fail as _DIRS can be really long and thus go over
+the MAX_ARG_STRLEN limit so it will fail with:
+/bin/sh: Argument list too long
+
+Lets avoid this by stripping the $(BUILDDIR) prefix and then restoring it.
+
+Signed-off-by: Robert Marko <robimarko at gmail.com>
+---
+ src/build.rules | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/build.rules
++++ b/src/build.rules
+@@ -80,7 +80,7 @@ endif
+ _DIRS := $(BUILDDIR)/$(PROJ)
+ .PHONY: _make_dirs
+ _make_dirs:
+-	@mkdir -p $(_DIRS)
++	@printf '$(BUILDDIR)/%s ' $(patsubst $(BUILDDIR)/%,%,$(_DIRS)) | xargs mkdir -p
+ 
+ $(BUILDDIR)/$(PROJ)/src/%.o: $(ROOTDIR)src/%.c $(CONFIG_FILE) | _make_dirs
+ 	$(Q)$(CC) -c -o $@ $(CFLAGS) $<



From lede-commits at lists.infradead.org  Mon Mar 25 09:10:17 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 25 Mar 2024 12:10:17 -0400
Subject: [openwrt/openwrt]  procd: update to Git HEAD (2024-03-25)
In-Reply-To: <171138301735.3817430.6369617099209743070@git-01.infra.openwrt.org>
References: <171138301735.3817430.6369617099209743070@git-01.infra.openwrt.org>
Message-ID: <mailman.19336.1711383024.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ff064b68d415ad425a156dc82735b5b66f109bd0

commit ff064b68d415ad425a156dc82735b5b66f109bd0
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Mon Mar 25 11:50:06 2024 +0100

    procd: update to Git HEAD (2024-03-25)
    
    79f8cfa58ee7 ci: add github test workflow
    428f40e7984f test commit fixing warnings
    63058d1f81a5 ci: enable ujail builds
    49ea930a862c utils: add key-value offset support to get_cmdline_val()
    ca8c30208d5e inittab: fallback when multiple "console=" is detected
    
    Required for the recent Elecom multiple console commits.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/system/procd/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile
index 537a1ff718..662b03f2f0 100644
--- a/package/system/procd/Makefile
+++ b/package/system/procd/Makefile
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git
-PKG_MIRROR_HASH:=90dc0593b8db32e8645e82cc36f18438ccd2103d56fae68c44320f7633aa0eec
-PKG_SOURCE_DATE:=2024-02-24
-PKG_SOURCE_VERSION:=1901aba90b6841ec1a99a25224a92d2519c603fd
+PKG_MIRROR_HASH:=b324cca5b9870c73f3b1c21547ca061acef6e7acb2488244c2f5be129d3a2e6c
+PKG_SOURCE_DATE:=2024-03-25
+PKG_SOURCE_VERSION:=ca8c30208d5e1aaa2c0e3f732c4c9944735e9850
 CMAKE_INSTALL:=1
 
 PKG_LICENSE:=GPL-2.0



From lede-commits at lists.infradead.org  Mon Mar 25 11:18:49 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 25 Mar 2024 14:18:49 -0400
Subject: [openwrt/openwrt]  mediatek: filogic: add Unielec U7981-01 support
In-Reply-To: <171139072930.4068767.16288082607976796643@git-01.infra.openwrt.org>
References: <171139072930.4068767.16288082607976796643@git-01.infra.openwrt.org>
Message-ID: <mailman.19372.1711390739.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/640b0b79ff05c42991e99a49ed81efb3fac25045

commit 640b0b79ff05c42991e99a49ed81efb3fac25045
Author: Allen Zhao <allenzhao at unielecinc.com>
AuthorDate: Sat Mar 9 10:44:58 2024 +0800

    mediatek: filogic: add Unielec U7981-01 support
    
    Hardware specification:
      SoC: MediaTek MT7981B 2x A53
      Flash: 8GB eMMC or 128 MB SPI-NAND
      RAM: 256MB
      Ethernet: 5x 10/100/1000 Mbps
      Switch: MediaTek MT7531AE
      WiFi: MediaTek MT7976C
      Button: Reset
      USB: M.2(B-key) for 4G/5G Module
      Power: DC 12V 1A
      UART: 3.3v, 115200n8
      --------------------------
      |         Layout         |
      |   -----------------    |
      | 4 | VCC RX TX GND | <= |
      |   -----------------    |
      --------------------------
    
    The U-boot menu will automatically appear at startup, and then select
    the required options through UP/DOWN Key.
    
    NAND Flash and eMMC Flash instructions:
    1. Set your computers IP adress to 192.168.1.2.
    2. Run a TFTP server providing the sysupgrade.bin image.
    3. Power on the router, into the U-Boot menu.
    4. Select "2. Upgrade firmware"
    5. Update sysupgrade.bin file name, input server IP and input device
       IP (if they deviate from the defaults)
    6. Wait for automatic startup after burning
    
    Signed-off-by: Allen Zhao <allenzhao at unielecinc.com>
---
 .../mediatek/dts/mt7981b-unielec-u7981-01-emmc.dts |  99 ++++++++++++++++
 .../mediatek/dts/mt7981b-unielec-u7981-01-nand.dts | 116 +++++++++++++++++++
 .../mediatek/dts/mt7981b-unielec-u7981-01.dtsi     | 124 +++++++++++++++++++++
 .../filogic/base-files/etc/board.d/02_network      |   1 +
 .../filogic/base-files/lib/upgrade/platform.sh     |  17 +++
 target/linux/mediatek/image/filogic.mk             |  22 ++++
 6 files changed, 379 insertions(+)

diff --git a/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-emmc.dts b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-emmc.dts
new file mode 100644
index 0000000000..abd4d4e59d
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-emmc.dts
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2023 Allen Zhao <allenzhao at unielecinc.com>
+ */
+
+/dts-v1/;
+#include "mt7981b-unielec-u7981-01.dtsi"
+/ {
+	model = "Unielec U7981-01 (EMMC)";
+	compatible = "unielec,u7981-01-emmc", "mediatek,mt7981";
+};
+
+&mmc0 {
+	pinctrl-names = "default", "state_uhs";
+	pinctrl-0 = <&mmc0_pins_default>;
+	pinctrl-1 = <&mmc0_pins_uhs>;
+	bus-width = <8>;
+	max-frequency = <52000000>;
+	cap-mmc-highspeed;
+	vmmc-supply = <&reg_3p3v>;
+	non-removable;
+	status = "okay";
+
+	card at 0 {
+		compatible = "mmc-card";
+		reg = <0>;
+
+		block {
+			compatible = "block-device";
+			partitions {
+				block-partition-env {
+					partname = "u-boot-env";
+
+					nvmem-layout {
+						compatible = "u-boot,env-layout";
+					};
+				};
+
+				block-partition-factory {
+					partname = "factory";
+
+					nvmem-layout {
+						compatible = "fixed-layout";
+						#address-cells = <1>;
+						#size-cells = <1>;
+
+						eeprom_factory_0: eeprom at 0 {
+							reg = <0x0 0x1000>;
+						};
+
+						macaddr_factory_4: macaddr at 4 {
+							compatible = "mac-base";
+							reg = <0x4 0x6>;
+							#nvmem-cell-cells = <1>;
+						};
+
+						macaddr_factory_1000: macaddr at 1000 {
+							compatible = "mac-base";
+							reg = <0x1000 0x6>;
+							#nvmem-cell-cells = <1>;
+						};
+					};
+				};
+			};
+		};
+	};
+};
+
+&pio {
+	mmc0_pins_default: mmc0-pins-default {
+		mux {
+			function = "flash";
+			groups = "emmc_45";
+		};
+	};
+
+	mmc0_pins_uhs: mmc0-pins-uhs {
+		mux {
+			function = "flash";
+			groups = "emmc_45";
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_1000 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	nvmem-cells = <&macaddr_factory_1000 1>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wifi {
+	nvmem-cells = <&eeprom_factory_0>;
+	nvmem-cell-names = "eeprom";
+	status = "okay";
+};
diff --git a/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-nand.dts b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-nand.dts
new file mode 100644
index 0000000000..230a612a34
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-nand.dts
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2023 Allen Zhao <allenzhao at unielecinc.com>
+ */
+
+/dts-v1/;
+#include "mt7981b-unielec-u7981-01.dtsi"
+/ {
+	model = "Unielec U7981-01 (NAND)";
+	compatible = "unielec,u7981-01-nand", "mediatek,mt7981";
+};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi0_flash_pins>;
+	status = "okay";
+	spi_nand: spi_nand at 0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "spi-nand";
+		reg = <0>;
+		spi-max-frequency = <52000000>;
+		spi-tx-buswidth = <4>;
+		spi-rx-buswidth = <4>;
+
+		mediatek,nmbm;
+		mediatek,bmt-max-ratio = <1>;
+		mediatek,bmt-max-reserved-blocks = <64>;
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "bl2";
+				reg = <0x00000 0x0100000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "u-boot-env";
+				reg = <0x0100000 0x0080000>;
+			};
+
+			factory: partition at 180000 {
+				label = "factory";
+				reg = <0x180000 0x200000>;
+				read-only;
+
+				compatible = "nvmem-cells";
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0x1000>;
+					};
+
+					macaddr_factory_1000: macaddr at 1000 {
+						compatible = "mac-base";
+						reg = <0x1000 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
+			};
+
+			partition at 380000 {
+				label = "fip";
+				reg = <0x380000 0x0200000>;
+			};
+
+			partition at 580000 {
+				label = "ubi";
+				reg = <0x580000 0x4000000>;
+			};
+		};
+	};
+};
+
+&pio {
+	spi0_flash_pins: spi0-pins {
+		mux {
+			function = "spi";
+			groups = "spi0", "spi0_wp_hold";
+		};
+
+		conf-pu {
+			pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
+			drive-strength = <8>;
+			mediatek,pull-up-adv = <0>; /* bias-disable */
+		};
+
+		conf-pd {
+			pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
+			drive-strength = <8>;
+			mediatek,pull-up-adv = <0>; /* bias-disable */
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_1000 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	nvmem-cells = <&macaddr_factory_1000 1>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wifi {
+	nvmem-cells = <&eeprom_factory_0>;
+	nvmem-cell-names = "eeprom";
+	status = "okay";
+};
diff --git a/target/linux/mediatek/dts/mt7981b-unielec-u7981-01.dtsi b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01.dtsi
new file mode 100644
index 0000000000..6e6150ba21
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01.dtsi
@@ -0,0 +1,124 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2023 Allen Zhao <allenzhao at unielecinc.com>
+ */
+
+/dts-v1/;
+#include "mt7981.dtsi"
+/ {
+	model = "Unielec U7981-01 (EMMC)";
+	compatible = "unielec,u7981-01-emmc", "mediatek,mt7981";
+
+	chosen {
+		bootargs = "console=ttyS0,115200n1 loglevel=8  \
+				earlycon=uart8250,mmio32,0x11002000 \
+				";
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio_pins &gbe_led0_pins &gbe_led1_pins>;
+	status = "okay";
+
+	gmac0: mac at 0 {
+		/* LAN */
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+
+		fixed-link {
+			speed = <2500>;
+			full-duplex;
+			pause;
+		};
+	};
+
+	gmac1: mac at 1 {
+		/* WAN */
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&int_gbe_phy>;
+	};
+};
+
+&mdio_bus {
+	switch: switch at 1f {
+		compatible = "mediatek,mt7531";
+		reg = <31>;
+		reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
+		interrupt-controller;
+		#interrupt-cells = <1>;
+		interrupt-parent = <&pio>;
+		interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
+	};
+};
+
+&switch {
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		port at 0 {
+			reg = <0>;
+			label = "lan1";
+		};
+
+		port at 1 {
+			reg = <1>;
+			label = "lan2";
+		};
+
+		port at 2 {
+			reg = <2>;
+			label = "lan3";
+		};
+
+		port at 3 {
+			reg = <3>;
+			label = "lan4";
+		};
+
+		port at 6 {
+			reg = <6>;
+			label = "cpu";
+			ethernet = <&gmac0>;
+			phy-mode = "2500base-x";
+
+			fixed-link {
+				speed = <2500>;
+				full-duplex;
+				pause;
+			};
+		};
+	};
+};
+
+&usb_phy {
+	status = "okay";
+};
+
+&xhci {
+	mediatek,u3p-dis-msk = <0x0>;
+	phys = <&u2port0 PHY_TYPE_USB2>,
+	       <&u3port0 PHY_TYPE_USB3>;
+	status = "okay";
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index 8e4fd8003c..5b8b910f62 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -26,6 +26,7 @@ mediatek_setup_interfaces()
 	asus,tuf-ax4200|\
 	jdcloud,re-cp-03|\
 	mediatek,mt7981-rfb|\
+	unielec,u7981-01*|\
 	zbtlink,zbt-z8102ax)
 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" eth1
 		;;
diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
index 4df4370f0f..389c177fb9 100755
--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
@@ -164,6 +164,23 @@ platform_do_upgrade() {
 		CI_ROOTPART="ubi_rootfs"
                 nand_do_upgrade "$1"
                 ;;
+	unielec,u7981-01*)
+		local rootdev="$(cmdline_get_var root)"
+		rootdev="${rootdev##*/}"
+		rootdev="${rootdev%p[0-9]*}"
+		case "$rootdev" in
+		mmc*)
+			CI_ROOTDEV="$rootdev"
+			CI_KERNPART="kernel"
+			CI_ROOTPART="rootfs"
+			emmc_do_upgrade "$1"
+			;;
+		*)
+			CI_KERNPART="fit"
+			nand_do_upgrade "$1"
+			;;
+		esac
+		;;
 	*)
 		nand_do_upgrade "$1"
 		;;
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index 7d2fac56b6..e3b588c861 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -913,6 +913,28 @@ define Device/ubnt_unifi-6-plus
 endef
 TARGET_DEVICES += ubnt_unifi-6-plus
 
+define Device/unielec_u7981-01
+  DEVICE_VENDOR := Unielec
+  DEVICE_MODEL := U7981-01
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware kmod-usb3 e2fsprogs f2fsck mkf2fs fdisk partx-utils
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+endef
+
+define Device/unielec_u7981-01-emmc
+  DEVICE_DTS := mt7981b-unielec-u7981-01-emmc
+  DEVICE_VARIANT := (EMMC)
+  $(call Device/unielec_u7981-01)
+endef
+TARGET_DEVICES += unielec_u7981-01-emmc
+
+define Device/unielec_u7981-01-nand
+  DEVICE_DTS := mt7981b-unielec-u7981-01-nand
+  DEVICE_VARIANT := (NAND)
+  $(call Device/unielec_u7981-01)
+endef
+TARGET_DEVICES += unielec_u7981-01-nand
+
 define Device/xiaomi_mi-router-ax3000t
   DEVICE_VENDOR := Xiaomi
   DEVICE_MODEL := Mi Router AX3000T



From lede-commits at lists.infradead.org  Mon Mar 25 13:28:58 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 25 Mar 2024 16:28:58 -0400
Subject: [openwrt/openwrt]  realtek: add Zyxel GS1900-8 v2
In-Reply-To: <171139853834.117798.6456261964908173702@git-01.infra.openwrt.org>
References: <171139853834.117798.6456261964908173702@git-01.infra.openwrt.org>
Message-ID: <mailman.19416.1711398552.1280.lede-commits@lists.infradead.org>

svanheule pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/71ccb35017ada8211c62b1d02819ad9a7a0fa14a

commit 71ccb35017ada8211c62b1d02819ad9a7a0fa14a
Author: Goetz Goerisch <ggoerisch at gmail.com>
AuthorDate: Sun Mar 24 18:31:06 2024 +0100

    realtek: add Zyxel GS1900-8 v2
    
    The Zyxel GS1900-8 v2 or Rev.B1 is a newer variant of the GS1900-8, but
    otherwise similar to the other GS1900 switches.
    
    Differences
    ------------
    * Front Button labeled RESTORE
    * NO Power Switch on rear
    * Serial Header next to the barrel power connector
    * Part Number ends 0102F
    
    Signed-off-by: Goetz Goerisch <ggoerisch at gmail.com>
---
 target/linux/realtek/dts-5.15/rtl8380_zyxel_gs1900-8.dts | 2 +-
 target/linux/realtek/image/rtl838x.mk                    | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/target/linux/realtek/dts-5.15/rtl8380_zyxel_gs1900-8.dts b/target/linux/realtek/dts-5.15/rtl8380_zyxel_gs1900-8.dts
index e9c5efe603..7aa1cc274c 100644
--- a/target/linux/realtek/dts-5.15/rtl8380_zyxel_gs1900-8.dts
+++ b/target/linux/realtek/dts-5.15/rtl8380_zyxel_gs1900-8.dts
@@ -4,7 +4,7 @@
 
 / {
 	compatible = "zyxel,gs1900-8", "realtek,rtl838x-soc";
-	model = "ZyXEL GS1900-8 Switch";
+	model = "ZyXEL GS1900-8v1/v2 Switch";
 };
 
 &gpio1 {
diff --git a/target/linux/realtek/image/rtl838x.mk b/target/linux/realtek/image/rtl838x.mk
index 19a40f1f61..dc4ddc6d1d 100644
--- a/target/linux/realtek/image/rtl838x.mk
+++ b/target/linux/realtek/image/rtl838x.mk
@@ -313,6 +313,10 @@ define Device/zyxel_gs1900-8
   $(Device/zyxel_gs1900)
   SOC := rtl8380
   DEVICE_MODEL := GS1900-8
+  DEVICE_VARIANT := v1
+  DEVICE_ALT0_VENDOR := ZyXEL
+  DEVICE_ALT0_MODEL := GS1900-8
+  DEVICE_ALT0_VARIANT := v2
   ZYXEL_VERS := AAHH
 endef
 TARGET_DEVICES += zyxel_gs1900-8



From lede-commits at lists.infradead.org  Mon Mar 25 15:01:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Mon, 25 Mar 2024 18:01:27 -0400
Subject: [openwrt/openwrt]  generic: phy-mediatek-xfi-tphy: fix SGMII issue
In-Reply-To: <171140408710.308925.14255497236388008127@git-01.infra.openwrt.org>
References: <171140408710.308925.14255497236388008127@git-01.infra.openwrt.org>
Message-ID: <mailman.19435.1711404093.1280.lede-commits@lists.infradead.org>

dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/79e9ce354efc03859fea288d4131b8fa0cca1b3a

commit 79e9ce354efc03859fea288d4131b8fa0cca1b3a
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Mon Mar 25 21:58:49 2024 +0000

    generic: phy-mediatek-xfi-tphy: fix SGMII issue
    
    Fix issue of transmitting abnormal data which leads to link problems
    in 1G and 2.5G SerDes modes (SGMII, 1000Base-X, 2500Base-X) on the
    MediaTek MT7988 SoC.
    
    Link: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b72d6cba92bf9e29fb035c03052fa1e86664a25b
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../pending-6.1/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch     | 3 ++-
 .../pending-6.6/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch     | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/target/linux/generic/pending-6.1/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch b/target/linux/generic/pending-6.1/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch
index d7424020a7..1aa36fcd3d 100644
--- a/target/linux/generic/pending-6.1/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch
+++ b/target/linux/generic/pending-6.1/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch
@@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  phy-mtk-hdmi-drv-y			+= phy-mtk-hdmi-mt2701.o
 --- /dev/null
 +++ b/drivers/phy/mediatek/phy-mtk-xfi-tphy.c
-@@ -0,0 +1,392 @@
+@@ -0,0 +1,393 @@
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +/* MediaTek 10GE SerDes PHY driver
 + *
@@ -272,6 +272,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +			   XTP_PCS_PWD_ASYNC(2));
 +
 +	usleep_range(1, 5);
++	writel(XTP_LN_FRC_TX_DATA_EN, xfi_tphy->base + REG_DIG_LN_TRX_40);
 +
 +	/* Setup TX DA default value */
 +	mtk_xfi_tphy_rmw(xfi_tphy, 0x30b0, 0x30, 0x20);
diff --git a/target/linux/generic/pending-6.6/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch b/target/linux/generic/pending-6.6/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch
index d7424020a7..1aa36fcd3d 100644
--- a/target/linux/generic/pending-6.6/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch
+++ b/target/linux/generic/pending-6.6/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch
@@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  phy-mtk-hdmi-drv-y			+= phy-mtk-hdmi-mt2701.o
 --- /dev/null
 +++ b/drivers/phy/mediatek/phy-mtk-xfi-tphy.c
-@@ -0,0 +1,392 @@
+@@ -0,0 +1,393 @@
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +/* MediaTek 10GE SerDes PHY driver
 + *
@@ -272,6 +272,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 +			   XTP_PCS_PWD_ASYNC(2));
 +
 +	usleep_range(1, 5);
++	writel(XTP_LN_FRC_TX_DATA_EN, xfi_tphy->base + REG_DIG_LN_TRX_40);
 +
 +	/* Setup TX DA default value */
 +	mtk_xfi_tphy_rmw(xfi_tphy, 0x30b0, 0x30, 0x20);



From lede-commits at lists.infradead.org  Tue Mar 26 08:05:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 26 Mar 2024 11:05:03 -0400
Subject: [openwrt/openwrt]  tools/expat: update to version 2.6.2
In-Reply-To: <171146550389.1562291.16792553710137121881@git-01.infra.openwrt.org>
References: <171146550389.1562291.16792553710137121881@git-01.infra.openwrt.org>
Message-ID: <mailman.19714.1711465511.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/80b2288ea3234958e78761cc4720c03d4072d830

commit 80b2288ea3234958e78761cc4720c03d4072d830
Author: Josef Schlehofer <pepe.schlehofer at gmail.com>
AuthorDate: Tue Mar 26 10:37:37 2024 +0100

    tools/expat: update to version 2.6.2
    
    Release notes:
    https://github.com/libexpat/libexpat/blob/R_2_6_2/expat/Changes
    
    Fixes:
    CVE-2024-28757
    
    Signed-off-by: Josef Schlehofer <pepe.schlehofer at gmail.com>
---
 tools/expat/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/expat/Makefile b/tools/expat/Makefile
index 1df6f8ec96..95e631716c 100644
--- a/tools/expat/Makefile
+++ b/tools/expat/Makefile
@@ -9,10 +9,10 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=expat
 PKG_CPE_ID:=cpe:/a:libexpat:expat
-PKG_VERSION:=2.6.0
+PKG_VERSION:=2.6.2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=cb5f5a8ea211e1cabd59be0a933a52e3c02cc326e86a4d387d8d218e7ee47a3e
+PKG_HASH:=ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364
 PKG_SOURCE_URL:=https://github.com/libexpat/libexpat/releases/download/R_$(subst .,_,$(PKG_VERSION))
 
 HOST_BUILD_PARALLEL:=1



From lede-commits at lists.infradead.org  Tue Mar 26 10:10:54 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 26 Mar 2024 13:10:54 -0400
Subject: [openwrt/openwrt]  kernel: qca-ssdk: fix C45 MDIO support on kernel
 6.6
In-Reply-To: <171147305422.1729784.12231513257252212746@git-01.infra.openwrt.org>
References: <171147305422.1729784.12231513257252212746@git-01.infra.openwrt.org>
Message-ID: <mailman.19843.1711473059.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1d33ee019f62021dfd4911ce8b5a7537a545ede8

commit 1d33ee019f62021dfd4911ce8b5a7537a545ede8
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 26 12:36:27 2024 +0100

    kernel: qca-ssdk: fix C45 MDIO support on kernel 6.6
    
    Kernel 6.3 has introduced separate C45 read/write operations, and thus
    split them out of the C22 operations completely so the old way of marking
    C45 reads and writes via the register value does not work anymore.
    
    This is causing SSDK to fail and find C45 only PHY-s such as Aquantia ones:
    [   22.187877] ssdk_phy_driver_init[371]:INFO:dev_id = 0, phy_adress = 8, phy_id = 0x0 phytype doesn't match
    [   22.209924] ssdk_phy_driver_init[371]:INFO:dev_id = 0, phy_adress = 0, phy_id = 0x0 phytype doesn't match
    
    This in turn causes USXGMII MAC autoneg bit to not get set and then UNIPHY
    autoneg will time out, causing the 10G ports not to work:
    [   37.292784] uniphy autoneg time out!
    
    So, lets detect C45 reads and writes by the magic BIT(30) in the register
    argument and if so call separate C45 mdiobus read/write functions.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 package/kernel/qca-ssdk/Makefile                   |  2 +-
 ...dio-adapt-to-C22-and-C45-read-write-split.patch | 98 ++++++++++++++++++++++
 2 files changed, 99 insertions(+), 1 deletion(-)

diff --git a/package/kernel/qca-ssdk/Makefile b/package/kernel/qca-ssdk/Makefile
index 6a7bab7a9a..cd81aeb61c 100644
--- a/package/kernel/qca-ssdk/Makefile
+++ b/package/kernel/qca-ssdk/Makefile
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=qca-ssdk
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk.git
 PKG_SOURCE_PROTO:=git
diff --git a/package/kernel/qca-ssdk/patches/103-mdio-adapt-to-C22-and-C45-read-write-split.patch b/package/kernel/qca-ssdk/patches/103-mdio-adapt-to-C22-and-C45-read-write-split.patch
new file mode 100644
index 0000000000..7ddca554ec
--- /dev/null
+++ b/package/kernel/qca-ssdk/patches/103-mdio-adapt-to-C22-and-C45-read-write-split.patch
@@ -0,0 +1,98 @@
+From bdae481e89cbe551068a99028bb57119b59f5ff4 Mon Sep 17 00:00:00 2001
+From: Robert Marko <robimarko at gmail.com>
+Date: Tue, 26 Mar 2024 12:19:49 +0100
+Subject: [PATCH] mdio: adapt to C22 and C45 read/write split
+
+Kernel 6.3 has introduced separate C45 read/write operations, and thus
+split them out of the C22 operations completely so the old way of marking
+C45 reads and writes via the register value does not work anymore.
+
+This is causing SSDK to fail and find C45 only PHY-s such as Aquantia ones:
+[   22.187877] ssdk_phy_driver_init[371]:INFO:dev_id = 0, phy_adress = 8, phy_id = 0x0 phytype doesn't match
+[   22.209924] ssdk_phy_driver_init[371]:INFO:dev_id = 0, phy_adress = 0, phy_id = 0x0 phytype doesn't match
+
+This in turn causes USXGMII MAC autoneg bit to not get set and then UNIPHY
+autoneg will time out, causing the 10G ports not to work:
+[   37.292784] uniphy autoneg time out!
+
+So, lets detect C45 reads and writes by the magic BIT(30) in the register
+argument and if so call separate C45 mdiobus read/write functions.
+
+Signed-off-by: Robert Marko <robimarko at gmail.com>
+---
+ include/init/ssdk_plat.h |  7 +++++++
+ src/init/ssdk_plat.c     | 30 ++++++++++++++++++++++++++++++
+ 2 files changed, 37 insertions(+)
+
+--- a/include/init/ssdk_plat.h
++++ b/include/init/ssdk_plat.h
+@@ -505,3 +505,10 @@ void ssdk_plat_exit(a_uint32_t dev_id);
+ 
+ #endif
+ /*qca808x_end*/
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,3,0))
++#define MII_ADDR_C45		(1<<30)
++#define MII_DEVADDR_C45_SHIFT	16
++#define MII_DEVADDR_C45_MASK	GENMASK(20, 16)
++#define MII_REGADDR_C45_MASK	GENMASK(15, 0)
++#endif
+--- a/src/init/ssdk_plat.c
++++ b/src/init/ssdk_plat.c
+@@ -356,6 +356,18 @@ phy_addr_validation_check(a_uint32_t phy
+ 		return A_TRUE;
+ }
+ 
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,3,0))
++static inline u16 mdiobus_c45_regad(u32 regnum)
++{
++	return FIELD_GET(MII_REGADDR_C45_MASK, regnum);
++}
++
++static inline u16 mdiobus_c45_devad(u32 regnum)
++{
++	return FIELD_GET(MII_DEVADDR_C45_MASK, regnum);
++}
++#endif
++
+ sw_error_t
+ qca_ar8327_phy_read(a_uint32_t dev_id, a_uint32_t phy_addr,
+                            a_uint32_t reg, a_uint16_t* data)
+@@ -371,9 +383,18 @@ qca_ar8327_phy_read(a_uint32_t dev_id, a
+ 	if (!bus)
+ 		return SW_NOT_SUPPORTED;
+ 	phy_addr = TO_PHY_ADDR(phy_addr);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,3,0))
++	mutex_lock(&bus->mdio_lock);
++	if (reg & MII_ADDR_C45)
++		*data = __mdiobus_c45_read(bus, phy_addr, mdiobus_c45_devad(reg), mdiobus_c45_regad(reg));
++	else
++		*data = __mdiobus_read(bus, phy_addr, reg);
++	mutex_unlock(&bus->mdio_lock);
++#else
+ 	mutex_lock(&bus->mdio_lock);
+ 	*data = __mdiobus_read(bus, phy_addr, reg);
+ 	mutex_unlock(&bus->mdio_lock);
++#endif
+ 
+ 	return 0;
+ }
+@@ -393,9 +414,18 @@ qca_ar8327_phy_write(a_uint32_t dev_id,
+ 	if (!bus)
+ 		return SW_NOT_SUPPORTED;
+ 	phy_addr = TO_PHY_ADDR(phy_addr);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,3,0))
++	mutex_lock(&bus->mdio_lock);
++	if (reg & MII_ADDR_C45)
++		__mdiobus_c45_write(bus, phy_addr, mdiobus_c45_devad(reg), mdiobus_c45_regad(reg), data);
++	else
++		__mdiobus_write(bus, phy_addr, reg, data);
++	mutex_unlock(&bus->mdio_lock);
++#else
+ 	mutex_lock(&bus->mdio_lock);
+ 	__mdiobus_write(bus, phy_addr, reg, data);
+ 	mutex_unlock(&bus->mdio_lock);
++#endif
+ 
+ 	return 0;
+ }



From lede-commits at lists.infradead.org  Tue Mar 26 14:06:00 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 26 Mar 2024 17:06:00 -0400
Subject: [openwrt/openwrt]  uboot-sunxi: bump to 2024.01
In-Reply-To: <171148716008.1952195.3567333252723638072@git-01.infra.openwrt.org>
References: <171148716008.1952195.3567333252723638072@git-01.infra.openwrt.org>
Message-ID: <mailman.19952.1711487168.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9a19ec79f9483cc26b91a59291bd8548bed58c67

commit 9a19ec79f9483cc26b91a59291bd8548bed58c67
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Fri Jan 5 23:16:16 2024 +0800

    uboot-sunxi: bump to 2024.01
    
    This version supports LPDDR4 DRAM of H618 SoC.
    
    Runtime-tested:
      Olimex Olinuxino Micro (A20)
      Orange Pi Zero 3 (H618)
      Pine64 SoPine (A64)
    
    Tested-by: Zoltan HERPAI <wigyori at uid0.hu>
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
---
 package/boot/uboot-sunxi/Makefile                                     | 4 ++--
 package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch    | 2 +-
 .../200-mkimage-check-environment-for-dtc-binary-location.patch       | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/package/boot/uboot-sunxi/Makefile b/package/boot/uboot-sunxi/Makefile
index 7f50992e69..de07dbdec2 100644
--- a/package/boot/uboot-sunxi/Makefile
+++ b/package/boot/uboot-sunxi/Makefile
@@ -9,9 +9,9 @@
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
-PKG_VERSION:=2023.04
+PKG_VERSION:=2024.01
 
-PKG_HASH:=e31cac91545ff41b71cec5d8c22afd695645cd6e2a442ccdacacd60534069341
+PKG_HASH:=b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3
 
 PKG_MAINTAINER:=Zoltan HERPAI <wigyori at uid0.hu>
 
diff --git a/package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch b/package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch
index 13a703f307..a1caf18a18 100644
--- a/package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch
+++ b/package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch
@@ -2,7 +2,7 @@
 
 --- a/configs/A20-OLinuXino-Lime2_defconfig
 +++ b/configs/A20-OLinuXino-Lime2_defconfig
-@@ -26,6 +26,7 @@ CONFIG_ETH_DESIGNWARE=y
+@@ -25,6 +25,7 @@ CONFIG_ETH_DESIGNWARE=y
  CONFIG_RGMII=y
  CONFIG_MII=y
  CONFIG_SUN7I_GMAC=y
diff --git a/package/boot/uboot-sunxi/patches/200-mkimage-check-environment-for-dtc-binary-location.patch b/package/boot/uboot-sunxi/patches/200-mkimage-check-environment-for-dtc-binary-location.patch
index fcc30ce35c..0307d6b99b 100644
--- a/package/boot/uboot-sunxi/patches/200-mkimage-check-environment-for-dtc-binary-location.patch
+++ b/package/boot/uboot-sunxi/patches/200-mkimage-check-environment-for-dtc-binary-location.patch
@@ -17,7 +17,7 @@ Cc: Simon Glass <sjg at chromium.org>
 
 --- a/tools/fit_image.c
 +++ b/tools/fit_image.c
-@@ -754,9 +754,14 @@ static int fit_handle_file(struct image_
+@@ -774,9 +774,14 @@ static int fit_handle_file(struct image_
  		}
  		*cmd = '\0';
  	} else if (params->datafile) {



From lede-commits at lists.infradead.org  Tue Mar 26 14:06:02 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 26 Mar 2024 17:06:02 -0400
Subject: [openwrt/openwrt]  sunxi: add support for Orange Pi Zero 3
In-Reply-To: <171148716008.1952195.3567333252723638072@git-01.infra.openwrt.org>
References: <171148716008.1952195.3567333252723638072@git-01.infra.openwrt.org>
Message-ID: <mailman.19953.1711487171.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/29b8ba75fa52d2a9db98521644dfcc61fcd6b6a1

commit 29b8ba75fa52d2a9db98521644dfcc61fcd6b6a1
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Sat Nov 18 23:10:25 2023 +0800

    sunxi: add support for Orange Pi Zero 3
    
    Key features:
      Allwinner H618 SoC (Quad core Cortex-A53)
      1/1.5/2/4 GiB LPDDR4 DRAM
      1 USB 2.0 type C port (Power + OTG)
      1 USB 2.0 host port
      1Gbps Ethernet port
      Micro-HDMI port
      MicroSD slot
    
    Installation:
      Write the image to SD Card with dd.
    
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
---
 package/boot/uboot-sunxi/Makefile                  |  10 +
 target/linux/sunxi/cortexa53/config-6.1            |   1 +
 target/linux/sunxi/image/cortexa53.mk              |  12 +
 ...-allwinner-h616-Split-Orange-Pi-Zero-2-DT.patch | 305 +++++++++++++++++++++
 ...-allwinner-h616-Add-OrangePi-Zero-3-board.patch | 140 ++++++++++
 ...-allwinner-h616-update-emac-for-Orange-Pi.patch |  57 ++++
 6 files changed, 525 insertions(+)

diff --git a/package/boot/uboot-sunxi/Makefile b/package/boot/uboot-sunxi/Makefile
index de07dbdec2..112ea47d21 100644
--- a/package/boot/uboot-sunxi/Makefile
+++ b/package/boot/uboot-sunxi/Makefile
@@ -339,6 +339,15 @@ define U-Boot/orangepi_zero2
   ATF:=h616
 endef
 
+define U-Boot/orangepi_zero3
+  BUILD_SUBTARGET:=cortexa53
+  NAME:=Xunlong Orange Pi Zero3
+  BUILD_DEVICES:=xunlong_orangepi-zero3
+  DEPENDS:=+PACKAGE_u-boot-orangepi_zero3:trusted-firmware-a-sunxi-h616
+  UENV:=h616
+  ATF:=h616
+endef
+
 define U-Boot/Bananapi_M2_Ultra
   BUILD_SUBTARGET:=cortexa7
   NAME:=Bananapi M2 Ultra
@@ -402,6 +411,7 @@ UBOOT_TARGETS := \
 	orangepi_2 \
 	orangepi_pc2 \
 	orangepi_zero2 \
+	orangepi_zero3 \
 	pangolin \
 	pine64_plus \
 	Sinovoip_BPI_M3 \
diff --git a/target/linux/sunxi/cortexa53/config-6.1 b/target/linux/sunxi/cortexa53/config-6.1
index 5331352386..55bcd4e8e5 100644
--- a/target/linux/sunxi/cortexa53/config-6.1
+++ b/target/linux/sunxi/cortexa53/config-6.1
@@ -54,6 +54,7 @@ CONFIG_MDIO_BUS_MUX=y
 CONFIG_MICREL_PHY=y
 # CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
 CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_MOTORCOMM_PHY=y
 CONFIG_MUSB_PIO_ONLY=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_NOP_USB_XCEIV=y
diff --git a/target/linux/sunxi/image/cortexa53.mk b/target/linux/sunxi/image/cortexa53.mk
index 80718b34bf..63ada59f85 100644
--- a/target/linux/sunxi/image/cortexa53.mk
+++ b/target/linux/sunxi/image/cortexa53.mk
@@ -29,6 +29,11 @@ define Device/sun50i-h616
   $(Device/sun50i)
 endef
 
+define Device/sun50i-h618
+  SOC := sun50i-h618
+  $(Device/sun50i)
+endef
+
 define Device/friendlyarm_nanopi-neo-plus2
   DEVICE_VENDOR := FriendlyARM
   DEVICE_MODEL := NanoPi NEO Plus2
@@ -120,6 +125,13 @@ define Device/xunlong_orangepi-zero2
 endef
 TARGET_DEVICES += xunlong_orangepi-zero2
 
+define Device/xunlong_orangepi-zero3
+  DEVICE_VENDOR := Xunlong
+  DEVICE_MODEL := Orange Pi Zero 3
+  $(Device/sun50i-h618)
+endef
+TARGET_DEVICES += xunlong_orangepi-zero3
+
 define Device/xunlong_orangepi-zero-plus
   DEVICE_VENDOR := Xunlong
   DEVICE_MODEL := Orange Pi Zero Plus
diff --git a/target/linux/sunxi/patches-6.1/005-v6.6-arm64-dts-allwinner-h616-Split-Orange-Pi-Zero-2-DT.patch b/target/linux/sunxi/patches-6.1/005-v6.6-arm64-dts-allwinner-h616-Split-Orange-Pi-Zero-2-DT.patch
new file mode 100644
index 0000000000..0747e6a8e0
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/005-v6.6-arm64-dts-allwinner-h616-Split-Orange-Pi-Zero-2-DT.patch
@@ -0,0 +1,305 @@
+From 322bf103204b8f786547acbeed85569254e7088f Mon Sep 17 00:00:00 2001
+From: Andre Przywara <andre.przywara at arm.com>
+Date: Fri, 4 Aug 2023 18:08:54 +0100
+Subject: [PATCH] arm64: dts: allwinner: h616: Split Orange Pi Zero 2 DT
+
+The Orange Pi Zero 2 got a successor (Zero 3), which shares quite some
+DT nodes with the Zero 2, but comes with a different PMIC.
+
+Move the common parts (except the PMIC) into a new shared file, and
+include that from the existing board .dts file.
+
+No functional change, the generated DTB is the same, except for some
+phandle numbering differences.
+
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Acked-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Link: https://lore.kernel.org/r/20230804170856.1237202-2-andre.przywara at arm.com
+Signed-off-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+---
+ .../allwinner/sun50i-h616-orangepi-zero.dtsi  | 134 ++++++++++++++++++
+ .../allwinner/sun50i-h616-orangepi-zero2.dts  | 119 +---------------
+ 2 files changed, 135 insertions(+), 118 deletions(-)
+ create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
+
+--- /dev/null
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
+@@ -0,0 +1,134 @@
++// SPDX-License-Identifier: (GPL-2.0+ or MIT)
++/*
++ * Copyright (C) 2020 Arm Ltd.
++ *
++ * DT nodes common between Orange Pi Zero 2 and Orange Pi Zero 3.
++ * Excludes PMIC nodes and properties, since they are different between the two.
++ */
++
++#include "sun50i-h616.dtsi"
++
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/interrupt-controller/arm-gic.h>
++#include <dt-bindings/leds/common.h>
++
++/ {
++	aliases {
++		ethernet0 = &emac0;
++		serial0 = &uart0;
++	};
++
++	chosen {
++		stdout-path = "serial0:115200n8";
++	};
++
++	leds {
++		compatible = "gpio-leds";
++
++		led-0 {
++			function = LED_FUNCTION_POWER;
++			color = <LED_COLOR_ID_RED>;
++			gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 */
++			default-state = "on";
++		};
++
++		led-1 {
++			function = LED_FUNCTION_STATUS;
++			color = <LED_COLOR_ID_GREEN>;
++			gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */
++		};
++	};
++
++	reg_vcc5v: vcc5v {
++		/* board wide 5V supply directly from the USB-C socket */
++		compatible = "regulator-fixed";
++		regulator-name = "vcc-5v";
++		regulator-min-microvolt = <5000000>;
++		regulator-max-microvolt = <5000000>;
++		regulator-always-on;
++	};
++
++	reg_usb1_vbus: regulator-usb1-vbus {
++		compatible = "regulator-fixed";
++		regulator-name = "usb1-vbus";
++		regulator-min-microvolt = <5000000>;
++		regulator-max-microvolt = <5000000>;
++		vin-supply = <&reg_vcc5v>;
++		enable-active-high;
++		gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */
++	};
++};
++
++&ehci1 {
++	status = "okay";
++};
++
++/* USB 2 & 3 are on headers only. */
++
++&emac0 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&ext_rgmii_pins>;
++	phy-mode = "rgmii";
++	phy-handle = <&ext_rgmii_phy>;
++	allwinner,rx-delay-ps = <3100>;
++	allwinner,tx-delay-ps = <700>;
++	status = "okay";
++};
++
++&mdio0 {
++	ext_rgmii_phy: ethernet-phy at 1 {
++		compatible = "ethernet-phy-ieee802.3-c22";
++		reg = <1>;
++	};
++};
++
++&mmc0 {
++	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;	/* PF6 */
++	bus-width = <4>;
++	status = "okay";
++};
++
++&ohci1 {
++	status = "okay";
++};
++
++&spi0  {
++	status = "okay";
++	pinctrl-names = "default";
++	pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>;
++
++	flash at 0 {
++		#address-cells = <1>;
++		#size-cells = <1>;
++		compatible = "jedec,spi-nor";
++		reg = <0>;
++		spi-max-frequency = <40000000>;
++	};
++};
++
++&uart0 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&uart0_ph_pins>;
++	status = "okay";
++};
++
++&usbotg {
++	/*
++	 * PHY0 pins are connected to a USB-C socket, but a role switch
++	 * is not implemented: both CC pins are pulled to GND.
++	 * The VBUS pins power the device, so a fixed peripheral mode
++	 * is the best choice.
++	 * The board can be powered via GPIOs, in this case port0 *can*
++	 * act as a host (with a cable/adapter ignoring CC), as VBUS is
++	 * then provided by the GPIOs. Any user of this setup would
++	 * need to adjust the DT accordingly: dr_mode set to "host",
++	 * enabling OHCI0 and EHCI0.
++	 */
++	dr_mode = "peripheral";
++	status = "okay";
++};
++
++&usbphy {
++	usb1_vbus-supply = <&reg_usb1_vbus>;
++	status = "okay";
++};
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
+@@ -5,95 +5,19 @@
+ 
+ /dts-v1/;
+ 
+-#include "sun50i-h616.dtsi"
+-
+-#include <dt-bindings/gpio/gpio.h>
+-#include <dt-bindings/interrupt-controller/arm-gic.h>
+-#include <dt-bindings/leds/common.h>
++#include "sun50i-h616-orangepi-zero.dtsi"
+ 
+ / {
+ 	model = "OrangePi Zero2";
+ 	compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616";
+-
+-	aliases {
+-		ethernet0 = &emac0;
+-		serial0 = &uart0;
+-	};
+-
+-	chosen {
+-		stdout-path = "serial0:115200n8";
+-	};
+-
+-	leds {
+-		compatible = "gpio-leds";
+-
+-		led-0 {
+-			function = LED_FUNCTION_POWER;
+-			color = <LED_COLOR_ID_RED>;
+-			gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 */
+-			default-state = "on";
+-		};
+-
+-		led-1 {
+-			function = LED_FUNCTION_STATUS;
+-			color = <LED_COLOR_ID_GREEN>;
+-			gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */
+-		};
+-	};
+-
+-	reg_vcc5v: vcc5v {
+-		/* board wide 5V supply directly from the USB-C socket */
+-		compatible = "regulator-fixed";
+-		regulator-name = "vcc-5v";
+-		regulator-min-microvolt = <5000000>;
+-		regulator-max-microvolt = <5000000>;
+-		regulator-always-on;
+-	};
+-
+-	reg_usb1_vbus: regulator-usb1-vbus {
+-		compatible = "regulator-fixed";
+-		regulator-name = "usb1-vbus";
+-		regulator-min-microvolt = <5000000>;
+-		regulator-max-microvolt = <5000000>;
+-		vin-supply = <&reg_vcc5v>;
+-		enable-active-high;
+-		gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */
+-	};
+-};
+-
+-&ehci1 {
+-	status = "okay";
+ };
+ 
+-/* USB 2 & 3 are on headers only. */
+-
+ &emac0 {
+-	pinctrl-names = "default";
+-	pinctrl-0 = <&ext_rgmii_pins>;
+-	phy-mode = "rgmii";
+-	phy-handle = <&ext_rgmii_phy>;
+ 	phy-supply = <&reg_dcdce>;
+-	allwinner,rx-delay-ps = <3100>;
+-	allwinner,tx-delay-ps = <700>;
+-	status = "okay";
+-};
+-
+-&mdio0 {
+-	ext_rgmii_phy: ethernet-phy at 1 {
+-		compatible = "ethernet-phy-ieee802.3-c22";
+-		reg = <1>;
+-	};
+ };
+ 
+ &mmc0 {
+ 	vmmc-supply = <&reg_dcdce>;
+-	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;	/* PF6 */
+-	bus-width = <4>;
+-	status = "okay";
+-};
+-
+-&ohci1 {
+-	status = "okay";
+ };
+ 
+ &r_rsb {
+@@ -211,44 +135,3 @@
+ 	vcc-ph-supply = <&reg_aldo1>;
+ 	vcc-pi-supply = <&reg_aldo1>;
+ };
+-
+-&spi0  {
+-	status = "okay";
+-	pinctrl-names = "default";
+-	pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>;
+-
+-	flash at 0 {
+-		#address-cells = <1>;
+-		#size-cells = <1>;
+-		compatible = "jedec,spi-nor";
+-		reg = <0>;
+-		spi-max-frequency = <40000000>;
+-	};
+-};
+-
+-&uart0 {
+-	pinctrl-names = "default";
+-	pinctrl-0 = <&uart0_ph_pins>;
+-	status = "okay";
+-};
+-
+-&usbotg {
+-	/*
+-	 * PHY0 pins are connected to a USB-C socket, but a role switch
+-	 * is not implemented: both CC pins are pulled to GND.
+-	 * The VBUS pins power the device, so a fixed peripheral mode
+-	 * is the best choice.
+-	 * The board can be powered via GPIOs, in this case port0 *can*
+-	 * act as a host (with a cable/adapter ignoring CC), as VBUS is
+-	 * then provided by the GPIOs. Any user of this setup would
+-	 * need to adjust the DT accordingly: dr_mode set to "host",
+-	 * enabling OHCI0 and EHCI0.
+-	 */
+-	dr_mode = "peripheral";
+-	status = "okay";
+-};
+-
+-&usbphy {
+-	usb1_vbus-supply = <&reg_usb1_vbus>;
+-	status = "okay";
+-};
diff --git a/target/linux/sunxi/patches-6.1/006-v6.6-arm64-dts-allwinner-h616-Add-OrangePi-Zero-3-board.patch b/target/linux/sunxi/patches-6.1/006-v6.6-arm64-dts-allwinner-h616-Add-OrangePi-Zero-3-board.patch
new file mode 100644
index 0000000000..4081a82d52
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/006-v6.6-arm64-dts-allwinner-h616-Add-OrangePi-Zero-3-board.patch
@@ -0,0 +1,140 @@
+From f1b3ddb3ecc2eec1f912383e01156c226daacfab Mon Sep 17 00:00:00 2001
+From: Andre Przywara <andre.przywara at arm.com>
+Date: Fri, 4 Aug 2023 18:08:56 +0100
+Subject: [PATCH] arm64: dts: allwinner: h616: Add OrangePi Zero 3 board
+ support
+
+The OrangePi Zero 3 is a development board based on the Allwinner H618 SoC,
+which seems to be just an H616 with more L2 cache. The board itself is a
+slightly updated version of the Orange Pi Zero 2. It features:
+- Four ARM Cortex-A53 cores, Mali-G31 MP2 GPU
+- 1/1.5/2/4 GiB LPDDR4 DRAM SKUs (only up to 1GB on the Zero2)
+- AXP313a PMIC (more capable AXP305 on the Zero2)
+- Raspberry-Pi-1 compatible GPIO header
+- extra 13 pin expansion header, exposing pins for 2x USB 2.0 ports
+- 1 USB 2.0 host port
+- 1 USB 2.0 type C port (power supply + OTG)
+- MicroSD slot
+- on-board 16MiB bootable SPI NOR flash (only 2MB on the Zero2)
+- 1Gbps Ethernet port (via Motorcomm YT8531 PHY) (RTL8211 on the Zero2)
+- micro-HDMI port
+- (yet) unsupported Allwinner WiFi/BT chip
+
+Add the devicetree file describing the currently supported features,
+namely LEDs, SD card, PMIC, SPI flash, USB. Ethernet seems unstable at
+the moment, though the basic functionality works.
+
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Reviewed-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Link: https://lore.kernel.org/r/20230804170856.1237202-4-andre.przywara at arm.com
+Signed-off-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+---
+ arch/arm64/boot/dts/allwinner/Makefile        |  1 +
+ .../allwinner/sun50i-h618-orangepi-zero3.dts  | 94 +++++++++++++++++++
+ 2 files changed, 95 insertions(+)
+ create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
+
+--- a/arch/arm64/boot/dts/allwinner/Makefile
++++ b/arch/arm64/boot/dts/allwinner/Makefile
+@@ -40,3 +40,4 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-ta
+ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
+ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
+ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-orangepi-zero3.dtb
+--- /dev/null
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
+@@ -0,0 +1,94 @@
++// SPDX-License-Identifier: (GPL-2.0+ or MIT)
++/*
++ * Copyright (C) 2023 Arm Ltd.
++ */
++
++/dts-v1/;
++
++#include "sun50i-h616-orangepi-zero.dtsi"
++
++/ {
++	model = "OrangePi Zero3";
++	compatible = "xunlong,orangepi-zero3", "allwinner,sun50i-h618";
++};
++
++&emac0 {
++	phy-supply = <&reg_dldo1>;
++};
++
++&ext_rgmii_phy {
++	motorcomm,clk-out-frequency-hz = <125000000>;
++};
++
++&mmc0 {
++	/*
++	 * The schematic shows the card detect pin wired up to PF6, via an
++	 * inverter, but it just doesn't work.
++	 */
++	broken-cd;
++	vmmc-supply = <&reg_dldo1>;
++};
++
++&r_i2c {
++	status = "okay";
++
++	axp313: pmic at 36 {
++		compatible = "x-powers,axp313a";
++		reg = <0x36>;
++		#interrupt-cells = <1>;
++		interrupt-controller;
++		interrupt-parent = <&pio>;
++		interrupts = <2 9 IRQ_TYPE_LEVEL_LOW>;	/* PC9 */
++
++		vin1-supply = <&reg_vcc5v>;
++		vin2-supply = <&reg_vcc5v>;
++		vin3-supply = <&reg_vcc5v>;
++
++		regulators {
++			/* Supplies VCC-PLL, so needs to be always on. */
++			reg_aldo1: aldo1 {
++				regulator-always-on;
++				regulator-min-microvolt = <1800000>;
++				regulator-max-microvolt = <1800000>;
++				regulator-name = "vcc1v8";
++			};
++
++			/* Supplies VCC-IO, so needs to be always on. */
++			reg_dldo1: dldo1 {
++				regulator-always-on;
++				regulator-min-microvolt = <3300000>;
++				regulator-max-microvolt = <3300000>;
++				regulator-name = "vcc3v3";
++			};
++
++			reg_dcdc1: dcdc1 {
++				regulator-always-on;
++				regulator-min-microvolt = <810000>;
++				regulator-max-microvolt = <990000>;
++				regulator-name = "vdd-gpu-sys";
++			};
++
++			reg_dcdc2: dcdc2 {
++				regulator-always-on;
++				regulator-min-microvolt = <810000>;
++				regulator-max-microvolt = <1100000>;
++				regulator-name = "vdd-cpu";
++			};
++
++			reg_dcdc3: dcdc3 {
++				regulator-always-on;
++				regulator-min-microvolt = <1100000>;
++				regulator-max-microvolt = <1100000>;
++				regulator-name = "vdd-dram";
++			};
++		};
++	};
++};
++
++&pio {
++	vcc-pc-supply = <&reg_dldo1>;
++	vcc-pf-supply = <&reg_dldo1>;
++	vcc-pg-supply = <&reg_aldo1>;
++	vcc-ph-supply = <&reg_dldo1>;
++	vcc-pi-supply = <&reg_dldo1>;
++};
diff --git a/target/linux/sunxi/patches-6.1/007-v6.7-arm64-dts-allwinner-h616-update-emac-for-Orange-Pi.patch b/target/linux/sunxi/patches-6.1/007-v6.7-arm64-dts-allwinner-h616-update-emac-for-Orange-Pi.patch
new file mode 100644
index 0000000000..a492eed551
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/007-v6.7-arm64-dts-allwinner-h616-update-emac-for-Orange-Pi.patch
@@ -0,0 +1,57 @@
+From b9622937d95809ef89904583191571a9fa326402 Mon Sep 17 00:00:00 2001
+From: Chukun Pan <amadeus at jmu.edu.cn>
+Date: Sun, 29 Oct 2023 15:40:09 +0800
+Subject: [PATCH] arm64: dts: allwinner: h616: update emac for Orange Pi Zero 3
+
+The current emac setting is not suitable for Orange Pi Zero 3,
+move it back to Orange Pi Zero 2 DT. Also update phy mode and
+delay values for emac on Orange Pi Zero 3.
+With these changes, Ethernet now looks stable.
+
+Fixes: 322bf103204b ("arm64: dts: allwinner: h616: Split Orange Pi Zero 2 DT")
+Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
+Reviewed-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Link: https://lore.kernel.org/r/20231029074009.7820-2-amadeus at jmu.edu.cn
+Signed-off-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+---
+ arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 3 ---
+ arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts | 3 +++
+ arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts | 2 ++
+ 3 files changed, 5 insertions(+), 3 deletions(-)
+
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
+@@ -68,10 +68,7 @@
+ &emac0 {
+ 	pinctrl-names = "default";
+ 	pinctrl-0 = <&ext_rgmii_pins>;
+-	phy-mode = "rgmii";
+ 	phy-handle = <&ext_rgmii_phy>;
+-	allwinner,rx-delay-ps = <3100>;
+-	allwinner,tx-delay-ps = <700>;
+ 	status = "okay";
+ };
+ 
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
+@@ -13,6 +13,9 @@
+ };
+ 
+ &emac0 {
++	allwinner,rx-delay-ps = <3100>;
++	allwinner,tx-delay-ps = <700>;
++	phy-mode = "rgmii";
+ 	phy-supply = <&reg_dcdce>;
+ };
+ 
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
+@@ -13,6 +13,8 @@
+ };
+ 
+ &emac0 {
++	allwinner,tx-delay-ps = <700>;
++	phy-mode = "rgmii-rxid";
+ 	phy-supply = <&reg_dldo1>;
+ };
+ 



From lede-commits at lists.infradead.org  Tue Mar 26 14:06:03 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 26 Mar 2024 17:06:03 -0400
Subject: [openwrt/openwrt]  sunxi: backport h616 thermal sensor support
In-Reply-To: <171148716008.1952195.3567333252723638072@git-01.infra.openwrt.org>
References: <171148716008.1952195.3567333252723638072@git-01.infra.openwrt.org>
Message-ID: <mailman.19954.1711487171.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/29515862ac704506e1c7d567703a9d6247c69715

commit 29515862ac704506e1c7d567703a9d6247c69715
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Sat Mar 9 23:16:25 2024 +0800

    sunxi: backport h616 thermal sensor support
    
    Backport H616 thermal sensor support from linux-next.
    Tested on the Orange Pi Zero 3 (H618 SoC).
    
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
---
 ...ts-allwinner-h616-Add-SID-controller-node.patch |  31 +++++
 ...xi-sram-export-register-0-for-THS-on-H616.patch |  98 +++++++++++++++
 ...sun8i-Add-D1-T113s-THS-controller-support.patch |  47 +++++++
 ...s-sun8i-Explain-unknown-H6-register-value.patch |  79 ++++++++++++
 ...-sun8i-Extend-H6-calibration-to-support-4.patch |  74 +++++++++++
 ...ivers-sun8i-Add-SRAM-register-access-code.patch | 126 +++++++++++++++++++
 ...sun8i-Add-support-for-H616-THS-controller.patch |  50 ++++++++
 ...un8i-Dont-fail-probe-due-to-zone-registra.patch |  68 ++++++++++
 ...lwinner-h616-Add-thermal-sensor-and-zones.patch | 138 +++++++++++++++++++++
 9 files changed, 711 insertions(+)

diff --git a/target/linux/sunxi/patches-6.1/008-v6.7-arm64-dts-allwinner-h616-Add-SID-controller-node.patch b/target/linux/sunxi/patches-6.1/008-v6.7-arm64-dts-allwinner-h616-Add-SID-controller-node.patch
new file mode 100644
index 0000000000..ce8add18ab
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/008-v6.7-arm64-dts-allwinner-h616-Add-SID-controller-node.patch
@@ -0,0 +1,31 @@
+From 951992797378a2177946400438f4d23c9fceae5b Mon Sep 17 00:00:00 2001
+From: Martin Botka <martin.botka at somainline.org>
+Date: Tue, 12 Sep 2023 14:25:13 +0200
+Subject: [PATCH] arm64: dts: allwinner: h616: Add SID controller node
+
+Add node for the H616 SID controller
+
+Signed-off-by: Martin Botka <martin.botka at somainline.org>
+Acked-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Link: https://lore.kernel.org/r/20230912-sid-h616-v3-2-ee18e1c5bbb5 at somainline.org
+Signed-off-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+---
+ arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
+@@ -133,6 +133,13 @@
+ 			#reset-cells = <1>;
+ 		};
+ 
++		sid: efuse at 3006000 {
++			compatible = "allwinner,sun50i-h616-sid", "allwinner,sun50i-a64-sid";
++			reg = <0x03006000 0x1000>;
++			#address-cells = <1>;
++			#size-cells = <1>;
++		};
++
+ 		watchdog: watchdog at 30090a0 {
+ 			compatible = "allwinner,sun50i-h616-wdt",
+ 				     "allwinner,sun6i-a31-wdt";
diff --git a/target/linux/sunxi/patches-6.1/009-v6.9-soc-sunxi-sram-export-register-0-for-THS-on-H616.patch b/target/linux/sunxi/patches-6.1/009-v6.9-soc-sunxi-sram-export-register-0-for-THS-on-H616.patch
new file mode 100644
index 0000000000..3453e2aa53
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/009-v6.9-soc-sunxi-sram-export-register-0-for-THS-on-H616.patch
@@ -0,0 +1,98 @@
+From 898d96c5464b69af44f6407c5de81ebc349d574b Mon Sep 17 00:00:00 2001
+From: Andre Przywara <andre.przywara at arm.com>
+Date: Mon, 19 Feb 2024 15:36:33 +0000
+Subject: [PATCH] soc: sunxi: sram: export register 0 for THS on H616
+
+The Allwinner H616 SoC contains a mysterious bit at register offset 0x0
+in the SRAM control block. If bit 16 is set (the reset value), the
+temperature readings of the THS are way off, leading to reports about
+200C, at normal ambient temperatures. Clearing this bits brings the
+reported values down to the expected values.
+The BSP code clears this bit in firmware (U-Boot), and has an explicit
+comment about this, but offers no real explanation.
+
+Experiments in U-Boot show that register 0x0 has no effect on the SRAM C
+visibility: all tested bit settings still allow full read and write
+access by the CPU to the whole of SRAM C. Only bit 24 of the register at
+offset 0x4 makes all of SRAM C inaccessible by the CPU. So modelling
+the THS switch functionality as an SRAM region would not reflect reality.
+
+Since we should not rely on firmware settings, allow other code (the THS
+driver) to access this register, by exporting it through the already
+existing regmap. This mimics what we already do for the LDO control and
+the EMAC register.
+
+To avoid concurrent accesses to the same register at the same time, by
+the SRAM switch code and the regmap code, use the same lock to protect
+the access. The regmap subsystem allows to use an existing lock, so we
+just need to hook in there.
+
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Reviewed-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
+Link: https://lore.kernel.org/r/20240219153639.179814-2-andre.przywara at arm.com
+---
+ drivers/soc/sunxi/sunxi_sram.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+--- a/drivers/soc/sunxi/sunxi_sram.c
++++ b/drivers/soc/sunxi/sunxi_sram.c
+@@ -284,6 +284,7 @@ EXPORT_SYMBOL(sunxi_sram_release);
+ struct sunxi_sramc_variant {
+ 	int num_emac_clocks;
+ 	bool has_ldo_ctrl;
++	bool has_ths_offset;
+ };
+ 
+ static const struct sunxi_sramc_variant sun4i_a10_sramc_variant = {
+@@ -305,8 +306,10 @@ static const struct sunxi_sramc_variant
+ 
+ static const struct sunxi_sramc_variant sun50i_h616_sramc_variant = {
+ 	.num_emac_clocks = 2,
++	.has_ths_offset = true,
+ };
+ 
++#define SUNXI_SRAM_THS_OFFSET_REG	0x0
+ #define SUNXI_SRAM_EMAC_CLOCK_REG	0x30
+ #define SUNXI_SYS_LDO_CTRL_REG		0x150
+ 
+@@ -315,6 +318,8 @@ static bool sunxi_sram_regmap_accessible
+ {
+ 	const struct sunxi_sramc_variant *variant = dev_get_drvdata(dev);
+ 
++	if (reg == SUNXI_SRAM_THS_OFFSET_REG && variant->has_ths_offset)
++		return true;
+ 	if (reg >= SUNXI_SRAM_EMAC_CLOCK_REG &&
+ 	    reg <  SUNXI_SRAM_EMAC_CLOCK_REG + variant->num_emac_clocks * 4)
+ 		return true;
+@@ -324,6 +329,20 @@ static bool sunxi_sram_regmap_accessible
+ 	return false;
+ }
+ 
++static void sunxi_sram_lock(void *_lock)
++{
++	spinlock_t *lock = _lock;
++
++	spin_lock(lock);
++}
++
++static void sunxi_sram_unlock(void *_lock)
++{
++	spinlock_t *lock = _lock;
++
++	spin_unlock(lock);
++}
++
+ static struct regmap_config sunxi_sram_regmap_config = {
+ 	.reg_bits       = 32,
+ 	.val_bits       = 32,
+@@ -333,6 +352,9 @@ static struct regmap_config sunxi_sram_r
+ 	/* other devices have no business accessing other registers */
+ 	.readable_reg	= sunxi_sram_regmap_accessible_reg,
+ 	.writeable_reg	= sunxi_sram_regmap_accessible_reg,
++	.lock		= sunxi_sram_lock,
++	.unlock		= sunxi_sram_unlock,
++	.lock_arg	= &sram_lock,
+ };
+ 
+ static int __init sunxi_sram_probe(struct platform_device *pdev)
diff --git a/target/linux/sunxi/patches-6.1/010-v6.8-thermal-drivers-sun8i-Add-D1-T113s-THS-controller-support.patch b/target/linux/sunxi/patches-6.1/010-v6.8-thermal-drivers-sun8i-Add-D1-T113s-THS-controller-support.patch
new file mode 100644
index 0000000000..8b19989118
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/010-v6.8-thermal-drivers-sun8i-Add-D1-T113s-THS-controller-support.patch
@@ -0,0 +1,47 @@
+From ebbf19e36d021f253425344b4d4b987f3b7d9be5 Mon Sep 17 00:00:00 2001
+From: Maxim Kiselev <bigunclemax at gmail.com>
+Date: Mon, 18 Dec 2023 00:06:23 +0300
+Subject: [PATCH] thermal/drivers/sun8i: Add D1/T113s THS controller support
+
+This patch adds a thermal sensor controller support for the D1/T113s,
+which is similar to the one on H6, but with only one sensor and
+different scale and offset values.
+
+Signed-off-by: Maxim Kiselev <bigunclemax at gmail.com>
+Acked-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Reviewed-by: Andre Przywara <andre.przywara at arm.com>
+Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
+Link: https://lore.kernel.org/r/20231217210629.131486-3-bigunclemax at gmail.com
+---
+ drivers/thermal/sun8i_thermal.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/drivers/thermal/sun8i_thermal.c
++++ b/drivers/thermal/sun8i_thermal.c
+@@ -610,6 +610,18 @@ static const struct ths_thermal_chip sun
+ 	.calc_temp = sun8i_ths_calc_temp,
+ };
+ 
++static const struct ths_thermal_chip sun20i_d1_ths = {
++	.sensor_num = 1,
++	.has_bus_clk_reset = true,
++	.offset = 188552,
++	.scale = 673,
++	.temp_data_base = SUN50I_H6_THS_TEMP_DATA,
++	.calibrate = sun50i_h6_ths_calibrate,
++	.init = sun50i_h6_thermal_init,
++	.irq_ack = sun50i_h6_irq_ack,
++	.calc_temp = sun8i_ths_calc_temp,
++};
++
+ static const struct of_device_id of_ths_match[] = {
+ 	{ .compatible = "allwinner,sun8i-a83t-ths", .data = &sun8i_a83t_ths },
+ 	{ .compatible = "allwinner,sun8i-h3-ths", .data = &sun8i_h3_ths },
+@@ -618,6 +630,7 @@ static const struct of_device_id of_ths_
+ 	{ .compatible = "allwinner,sun50i-a100-ths", .data = &sun50i_a100_ths },
+ 	{ .compatible = "allwinner,sun50i-h5-ths", .data = &sun50i_h5_ths },
+ 	{ .compatible = "allwinner,sun50i-h6-ths", .data = &sun50i_h6_ths },
++	{ .compatible = "allwinner,sun20i-d1-ths", .data = &sun20i_d1_ths },
+ 	{ /* sentinel */ },
+ };
+ MODULE_DEVICE_TABLE(of, of_ths_match);
diff --git a/target/linux/sunxi/patches-6.1/011-v6.9-thermal-drivers-sun8i-Explain-unknown-H6-register-value.patch b/target/linux/sunxi/patches-6.1/011-v6.9-thermal-drivers-sun8i-Explain-unknown-H6-register-value.patch
new file mode 100644
index 0000000000..b8138a3870
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/011-v6.9-thermal-drivers-sun8i-Explain-unknown-H6-register-value.patch
@@ -0,0 +1,79 @@
+From 14f118aa50fe7c7c7330f56d007ecacca487cea8 Mon Sep 17 00:00:00 2001
+From: Andre Przywara <andre.przywara at arm.com>
+Date: Mon, 19 Feb 2024 15:36:35 +0000
+Subject: [PATCH] thermal/drivers/sun8i: Explain unknown H6 register value
+
+So far we were ORing in some "unknown" value into the THS control
+register on the Allwinner H6. This part of the register is not explained
+in the H6 manual, but the H616 manual details those bits, and on closer
+inspection the THS IP blocks in both SoCs seem very close:
+- The BSP code for both SoCs writes the same values into THS_CTRL.
+- The reset values of at least the first three registers are the same.
+
+Replace the "unknown" value with its proper meaning: "acquire time",
+most probably the sample part of the sample & hold circuit of the ADC,
+according to its explanation in the H616 manual.
+
+No functional change, just a macro rename and adjustment.
+
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Reviewed-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Acked-by: Vasily Khoruzhick <anarsoul at gmail.com>
+Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
+Link: https://lore.kernel.org/r/20240219153639.179814-4-andre.przywara at arm.com
+---
+ drivers/thermal/sun8i_thermal.c | 29 ++++++++++++++++-------------
+ 1 file changed, 16 insertions(+), 13 deletions(-)
+
+--- a/drivers/thermal/sun8i_thermal.c
++++ b/drivers/thermal/sun8i_thermal.c
+@@ -50,7 +50,8 @@
+ #define SUN8I_THS_CTRL2_T_ACQ1(x)		((GENMASK(15, 0) & (x)) << 16)
+ #define SUN8I_THS_DATA_IRQ_STS(x)		BIT(x + 8)
+ 
+-#define SUN50I_THS_CTRL0_T_ACQ(x)		((GENMASK(15, 0) & (x)) << 16)
++#define SUN50I_THS_CTRL0_T_ACQ(x)		(GENMASK(15, 0) & ((x) - 1))
++#define SUN50I_THS_CTRL0_T_SAMPLE_PER(x)	((GENMASK(15, 0) & ((x) - 1)) << 16)
+ #define SUN50I_THS_FILTER_EN			BIT(2)
+ #define SUN50I_THS_FILTER_TYPE(x)		(GENMASK(1, 0) & (x))
+ #define SUN50I_H6_THS_PC_TEMP_PERIOD(x)		((GENMASK(19, 0) & (x)) << 12)
+@@ -410,25 +411,27 @@ static int sun8i_h3_thermal_init(struct
+ 	return 0;
+ }
+ 
+-/*
+- * Without this undocumented value, the returned temperatures would
+- * be higher than real ones by about 20C.
+- */
+-#define SUN50I_H6_CTRL0_UNK 0x0000002f
+-
+ static int sun50i_h6_thermal_init(struct ths_device *tmdev)
+ {
+ 	int val;
+ 
+ 	/*
+-	 * T_acq = 20us
+-	 * clkin = 24MHz
+-	 *
+-	 * x = T_acq * clkin - 1
+-	 *   = 479
++	 * The manual recommends an overall sample frequency of 50 KHz (20us,
++	 * 480 cycles at 24 MHz), which provides plenty of time for both the
++	 * acquisition time (>24 cycles) and the actual conversion time
++	 * (>14 cycles).
++	 * The lower half of the CTRL register holds the "acquire time", in
++	 * clock cycles, which the manual recommends to be 2us:
++	 * 24MHz * 2us = 48 cycles.
++	 * The high half of THS_CTRL encodes the sample frequency, in clock
++	 * cycles: 24MHz * 20us = 480 cycles.
++	 * This is explained in the H616 manual, but apparently wrongly
++	 * described in the H6 manual, although the BSP code does the same
++	 * for both SoCs.
+ 	 */
+ 	regmap_write(tmdev->regmap, SUN50I_THS_CTRL0,
+-		     SUN50I_H6_CTRL0_UNK | SUN50I_THS_CTRL0_T_ACQ(479));
++		     SUN50I_THS_CTRL0_T_ACQ(48) |
++		     SUN50I_THS_CTRL0_T_SAMPLE_PER(480));
+ 	/* average over 4 samples */
+ 	regmap_write(tmdev->regmap, SUN50I_H6_THS_MFC,
+ 		     SUN50I_THS_FILTER_EN |
diff --git a/target/linux/sunxi/patches-6.1/012-v6.9-thermal-drivers-sun8i-Extend-H6-calibration-to-support-4.patch b/target/linux/sunxi/patches-6.1/012-v6.9-thermal-drivers-sun8i-Extend-H6-calibration-to-support-4.patch
new file mode 100644
index 0000000000..3d01a507fa
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/012-v6.9-thermal-drivers-sun8i-Extend-H6-calibration-to-support-4.patch
@@ -0,0 +1,74 @@
+From 6c04a419a4c5fb18edefc44dd676fb95c7f6c55d Mon Sep 17 00:00:00 2001
+From: Maksim Kiselev <bigunclemax at gmail.com>
+Date: Mon, 19 Feb 2024 15:36:36 +0000
+Subject: [PATCH] thermal/drivers/sun8i: Extend H6 calibration to support 4
+ sensors
+
+The H616 SoC resembles the H6 thermal sensor controller, with a few
+changes like four sensors.
+
+Extend sun50i_h6_ths_calibrate() function to support calibration of
+these sensors.
+
+Co-developed-by: Martin Botka <martin.botka at somainline.org>
+Signed-off-by: Martin Botka <martin.botka at somainline.org>
+Signed-off-by: Maksim Kiselev <bigunclemax at gmail.com>
+Reviewed-by: Andre Przywara <andre.przywara at arm.com>
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Reviewed-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Acked-by: Vasily Khoruzhick <anarsoul at gmail.com>
+Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
+Link: https://lore.kernel.org/r/20240219153639.179814-5-andre.przywara at arm.com
+---
+ drivers/thermal/sun8i_thermal.c | 28 ++++++++++++++++++++--------
+ 1 file changed, 20 insertions(+), 8 deletions(-)
+
+--- a/drivers/thermal/sun8i_thermal.c
++++ b/drivers/thermal/sun8i_thermal.c
+@@ -224,16 +224,21 @@ static int sun50i_h6_ths_calibrate(struc
+ 	struct device *dev = tmdev->dev;
+ 	int i, ft_temp;
+ 
+-	if (!caldata[0] || callen < 2 + 2 * tmdev->chip->sensor_num)
++	if (!caldata[0])
+ 		return -EINVAL;
+ 
+ 	/*
+ 	 * efuse layout:
+ 	 *
+-	 *	0   11  16	 32
+-	 *	+-------+-------+-------+
+-	 *	|temp|  |sensor0|sensor1|
+-	 *	+-------+-------+-------+
++	 * 0      11  16     27   32     43   48    57
++	 * +----------+-----------+-----------+-----------+
++	 * |  temp |  |sensor0|   |sensor1|   |sensor2|   |
++	 * +----------+-----------+-----------+-----------+
++	 *                      ^           ^           ^
++	 *                      |           |           |
++	 *                      |           |           sensor3[11:8]
++	 *                      |           sensor3[7:4]
++	 *                      sensor3[3:0]
+ 	 *
+ 	 * The calibration data on the H6 is the ambient temperature and
+ 	 * sensor values that are filled during the factory test stage.
+@@ -246,9 +251,16 @@ static int sun50i_h6_ths_calibrate(struc
+ 	ft_temp = (caldata[0] & FT_TEMP_MASK) * 100;
+ 
+ 	for (i = 0; i < tmdev->chip->sensor_num; i++) {
+-		int sensor_reg = caldata[i + 1] & TEMP_CALIB_MASK;
+-		int cdata, offset;
+-		int sensor_temp = tmdev->chip->calc_temp(tmdev, i, sensor_reg);
++		int sensor_reg, sensor_temp, cdata, offset;
++
++		if (i == 3)
++			sensor_reg = (caldata[1] >> 12)
++				     | ((caldata[2] >> 12) << 4)
++				     | ((caldata[3] >> 12) << 8);
++		else
++			sensor_reg = caldata[i + 1] & TEMP_CALIB_MASK;
++
++		sensor_temp = tmdev->chip->calc_temp(tmdev, i, sensor_reg);
+ 
+ 		/*
+ 		 * Calibration data is CALIBRATE_DEFAULT - (calculated
diff --git a/target/linux/sunxi/patches-6.1/013-v6.9-thermal-drivers-sun8i-Add-SRAM-register-access-code.patch b/target/linux/sunxi/patches-6.1/013-v6.9-thermal-drivers-sun8i-Add-SRAM-register-access-code.patch
new file mode 100644
index 0000000000..6db1e32cfb
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/013-v6.9-thermal-drivers-sun8i-Add-SRAM-register-access-code.patch
@@ -0,0 +1,126 @@
+From f8b54d1120b81ed57bed96cc8e814ba08886d1e5 Mon Sep 17 00:00:00 2001
+From: Andre Przywara <andre.przywara at arm.com>
+Date: Mon, 19 Feb 2024 15:36:37 +0000
+Subject: [PATCH] thermal/drivers/sun8i: Add SRAM register access code
+
+The Allwinner H616 SoC needs to clear a bit in one register in the SRAM
+controller, to report reasonable temperature values. On reset, bit 16 in
+register 0x3000000 is set, which leads to the driver reporting
+temperatures around 200C. Clearing this bit brings the values down to the
+expected range. The BSP code does a one-time write in U-Boot, with a
+comment just mentioning the effect on the THS, but offering no further
+explanation.
+
+To not rely on firmware to set things up for us, add code that queries
+the SRAM controller device via a DT phandle link, then clear just this
+single bit.
+
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Acked-by: Vasily Khoruzhick <anarsoul at gmail.com>
+Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
+Link: https://lore.kernel.org/r/20240219153639.179814-6-andre.przywara at arm.com
+---
+ drivers/thermal/sun8i_thermal.c | 51 +++++++++++++++++++++++++++++++++
+ 1 file changed, 51 insertions(+)
+
+--- a/drivers/thermal/sun8i_thermal.c
++++ b/drivers/thermal/sun8i_thermal.c
+@@ -15,6 +15,7 @@
+ #include <linux/module.h>
+ #include <linux/nvmem-consumer.h>
+ #include <linux/of_device.h>
++#include <linux/of_platform.h>
+ #include <linux/platform_device.h>
+ #include <linux/regmap.h>
+ #include <linux/reset.h>
+@@ -68,6 +69,7 @@ struct tsensor {
+ struct ths_thermal_chip {
+ 	bool            has_mod_clk;
+ 	bool            has_bus_clk_reset;
++	bool		needs_sram;
+ 	int		sensor_num;
+ 	int		offset;
+ 	int		scale;
+@@ -85,12 +87,16 @@ struct ths_device {
+ 	const struct ths_thermal_chip		*chip;
+ 	struct device				*dev;
+ 	struct regmap				*regmap;
++	struct regmap_field			*sram_regmap_field;
+ 	struct reset_control			*reset;
+ 	struct clk				*bus_clk;
+ 	struct clk                              *mod_clk;
+ 	struct tsensor				sensor[MAX_SENSOR_NUM];
+ };
+ 
++/* The H616 needs to have a bit 16 in the SRAM control register cleared. */
++static const struct reg_field sun8i_ths_sram_reg_field = REG_FIELD(0x0, 16, 16);
++
+ /* Temp Unit: millidegree Celsius */
+ static int sun8i_ths_calc_temp(struct ths_device *tmdev,
+ 			       int id, int reg)
+@@ -337,6 +343,34 @@ static void sun8i_ths_reset_control_asse
+ 	reset_control_assert(data);
+ }
+ 
++static struct regmap *sun8i_ths_get_sram_regmap(struct device_node *node)
++{
++	struct device_node *sram_node;
++	struct platform_device *sram_pdev;
++	struct regmap *regmap = NULL;
++
++	sram_node = of_parse_phandle(node, "allwinner,sram", 0);
++	if (!sram_node)
++		return ERR_PTR(-ENODEV);
++
++	sram_pdev = of_find_device_by_node(sram_node);
++	if (!sram_pdev) {
++		/* platform device might not be probed yet */
++		regmap = ERR_PTR(-EPROBE_DEFER);
++		goto out_put_node;
++	}
++
++	/* If no regmap is found then the other device driver is at fault */
++	regmap = dev_get_regmap(&sram_pdev->dev, NULL);
++	if (!regmap)
++		regmap = ERR_PTR(-EINVAL);
++
++	platform_device_put(sram_pdev);
++out_put_node:
++	of_node_put(sram_node);
++	return regmap;
++}
++
+ static int sun8i_ths_resource_init(struct ths_device *tmdev)
+ {
+ 	struct device *dev = tmdev->dev;
+@@ -381,6 +415,19 @@ static int sun8i_ths_resource_init(struc
+ 	if (ret)
+ 		return ret;
+ 
++	if (tmdev->chip->needs_sram) {
++		struct regmap *regmap;
++
++		regmap = sun8i_ths_get_sram_regmap(dev->of_node);
++		if (IS_ERR(regmap))
++			return PTR_ERR(regmap);
++		tmdev->sram_regmap_field = devm_regmap_field_alloc(dev,
++						      regmap,
++						      sun8i_ths_sram_reg_field);
++		if (IS_ERR(tmdev->sram_regmap_field))
++			return PTR_ERR(tmdev->sram_regmap_field);
++	}
++
+ 	ret = sun8i_ths_calibrate(tmdev);
+ 	if (ret)
+ 		return ret;
+@@ -427,6 +474,10 @@ static int sun50i_h6_thermal_init(struct
+ {
+ 	int val;
+ 
++	/* The H616 needs to have a bit in the SRAM control register cleared. */
++	if (tmdev->sram_regmap_field)
++		regmap_field_write(tmdev->sram_regmap_field, 0);
++
+ 	/*
+ 	 * The manual recommends an overall sample frequency of 50 KHz (20us,
+ 	 * 480 cycles at 24 MHz), which provides plenty of time for both the
diff --git a/target/linux/sunxi/patches-6.1/014-v6.9-thermal-drivers-sun8i-Add-support-for-H616-THS-controller.patch b/target/linux/sunxi/patches-6.1/014-v6.9-thermal-drivers-sun8i-Add-support-for-H616-THS-controller.patch
new file mode 100644
index 0000000000..e743d344c6
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/014-v6.9-thermal-drivers-sun8i-Add-support-for-H616-THS-controller.patch
@@ -0,0 +1,50 @@
+From e7dbfa19572a1440a2e67ef70f94ff204849a0a8 Mon Sep 17 00:00:00 2001
+From: Martin Botka <martin.botka at somainline.org>
+Date: Mon, 19 Feb 2024 15:36:38 +0000
+Subject: [PATCH] thermal/drivers/sun8i: Add support for H616 THS controller
+
+Add support for the thermal sensor found in H616 SoCs, is the same as
+the H6 thermal sensor controller, but with four sensors.
+Also the registers readings are wrong, unless a bit in the first SYS_CFG
+register cleared, so set exercise the SRAM regmap to take care of that.
+
+Signed-off-by: Martin Botka <martin.botka at somainline.org>
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Acked-by: Vasily Khoruzhick <anarsoul at gmail.com>
+Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
+Link: https://lore.kernel.org/r/20240219153639.179814-7-andre.przywara at arm.com
+---
+ drivers/thermal/sun8i_thermal.c | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+--- a/drivers/thermal/sun8i_thermal.c
++++ b/drivers/thermal/sun8i_thermal.c
+@@ -688,6 +688,20 @@ static const struct ths_thermal_chip sun
+ 	.calc_temp = sun8i_ths_calc_temp,
+ };
+ 
++static const struct ths_thermal_chip sun50i_h616_ths = {
++	.sensor_num = 4,
++	.has_bus_clk_reset = true,
++	.needs_sram = true,
++	.ft_deviation = 8000,
++	.offset = 263655,
++	.scale = 810,
++	.temp_data_base = SUN50I_H6_THS_TEMP_DATA,
++	.calibrate = sun50i_h6_ths_calibrate,
++	.init = sun50i_h6_thermal_init,
++	.irq_ack = sun50i_h6_irq_ack,
++	.calc_temp = sun8i_ths_calc_temp,
++};
++
+ static const struct of_device_id of_ths_match[] = {
+ 	{ .compatible = "allwinner,sun8i-a83t-ths", .data = &sun8i_a83t_ths },
+ 	{ .compatible = "allwinner,sun8i-h3-ths", .data = &sun8i_h3_ths },
+@@ -697,6 +711,7 @@ static const struct of_device_id of_ths_
+ 	{ .compatible = "allwinner,sun50i-h5-ths", .data = &sun50i_h5_ths },
+ 	{ .compatible = "allwinner,sun50i-h6-ths", .data = &sun50i_h6_ths },
+ 	{ .compatible = "allwinner,sun20i-d1-ths", .data = &sun20i_d1_ths },
++	{ .compatible = "allwinner,sun50i-h616-ths", .data = &sun50i_h616_ths },
+ 	{ /* sentinel */ },
+ };
+ MODULE_DEVICE_TABLE(of, of_ths_match);
diff --git a/target/linux/sunxi/patches-6.1/015-v6.9-thermal-drivers-sun8i-Dont-fail-probe-due-to-zone-registra.patch b/target/linux/sunxi/patches-6.1/015-v6.9-thermal-drivers-sun8i-Dont-fail-probe-due-to-zone-registra.patch
new file mode 100644
index 0000000000..384bf55084
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/015-v6.9-thermal-drivers-sun8i-Dont-fail-probe-due-to-zone-registra.patch
@@ -0,0 +1,68 @@
+From 9ac53d5532cc4bb595bbee86ccba2172ccc336c3 Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie at kernel.org>
+Date: Tue, 23 Jan 2024 23:33:07 +0000
+Subject: [PATCH] thermal/drivers/sun8i: Don't fail probe due to zone
+ registration failure
+
+Currently the sun8i thermal driver will fail to probe if any of the
+thermal zones it is registering fails to register with the thermal core.
+Since we currently do not define any trip points for the GPU thermal
+zones on at least A64 or H5 this means that we have no thermal support
+on these platforms:
+
+[    1.698703] thermal_sys: Failed to find 'trips' node
+[    1.698707] thermal_sys: Failed to find trip points for thermal-sensor id=1
+
+even though the main CPU thermal zone on both SoCs is fully configured.
+This does not seem ideal, while we may not be able to use all the zones
+it seems better to have those zones which are usable be operational.
+Instead just carry on registering zones if we get any non-deferral
+error, allowing use of those zones which are usable.
+
+This means that we also need to update the interrupt handler to not
+attempt to notify the core for events on zones which we have not
+registered, I didn't see an ability to mask individual interrupts and
+I would expect that interrupts would still be indicated in the ISR even
+if they were masked.
+
+Reviewed-by: Vasily Khoruzhick <anarsoul at gmail.com>
+Acked-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Signed-off-by: Mark Brown <broonie at kernel.org>
+Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
+Link: https://lore.kernel.org/r/20240123-thermal-sun8i-registration-v3-1-3e5771b1bbdd at kernel.org
+---
+ drivers/thermal/sun8i_thermal.c | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+--- a/drivers/thermal/sun8i_thermal.c
++++ b/drivers/thermal/sun8i_thermal.c
+@@ -197,6 +197,9 @@ static irqreturn_t sun8i_irq_thread(int
+ 	int i;
+ 
+ 	for_each_set_bit(i, &irq_bitmap, tmdev->chip->sensor_num) {
++		/* We allow some zones to not register. */
++		if (IS_ERR(tmdev->sensor[i].tzd))
++			continue;
+ 		thermal_zone_device_update(tmdev->sensor[i].tzd,
+ 					   THERMAL_EVENT_UNSPECIFIED);
+ 	}
+@@ -531,8 +534,17 @@ static int sun8i_ths_register(struct ths
+ 						      i,
+ 						      &tmdev->sensor[i],
+ 						      &ths_ops);
+-		if (IS_ERR(tmdev->sensor[i].tzd))
+-			return PTR_ERR(tmdev->sensor[i].tzd);
++
++		/*
++		 * If an individual zone fails to register for reasons
++		 * other than probe deferral (eg, a bad DT) then carry
++		 * on, other zones might register successfully.
++		 */
++		if (IS_ERR(tmdev->sensor[i].tzd)) {
++			if (PTR_ERR(tmdev->sensor[i].tzd) == -EPROBE_DEFER)
++				return PTR_ERR(tmdev->sensor[i].tzd);
++			continue;
++		}
+ 
+ 		if (devm_thermal_add_hwmon_sysfs(tmdev->sensor[i].tzd))
+ 			dev_warn(tmdev->dev,
diff --git a/target/linux/sunxi/patches-6.1/016-v6.9-arm64-dts-allwinner-h616-Add-thermal-sensor-and-zones.patch b/target/linux/sunxi/patches-6.1/016-v6.9-arm64-dts-allwinner-h616-Add-thermal-sensor-and-zones.patch
new file mode 100644
index 0000000000..cd6542bf14
--- /dev/null
+++ b/target/linux/sunxi/patches-6.1/016-v6.9-arm64-dts-allwinner-h616-Add-thermal-sensor-and-zones.patch
@@ -0,0 +1,138 @@
+From f4318af40544b8e7ff5a6b667ede60e6cf808262 Mon Sep 17 00:00:00 2001
+From: Martin Botka <martin.botka at somainline.org>
+Date: Mon, 19 Feb 2024 15:36:39 +0000
+Subject: [PATCH] arm64: dts: allwinner: h616: Add thermal sensor and zones
+
+There are four thermal sensors:
+- CPU
+- GPU
+- VE
+- DRAM
+
+Add the thermal sensor configuration and the thermal zones.
+
+Signed-off-by: Martin Botka <martin.botka at somainline.org>
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Reviewed-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Link: https://lore.kernel.org/r/20240219153639.179814-8-andre.przywara at arm.com
+Signed-off-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+---
+ .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 88 +++++++++++++++++++
+ 1 file changed, 88 insertions(+)
+
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
+@@ -9,6 +9,7 @@
+ #include <dt-bindings/clock/sun6i-rtc.h>
+ #include <dt-bindings/reset/sun50i-h616-ccu.h>
+ #include <dt-bindings/reset/sun50i-h6-r-ccu.h>
++#include <dt-bindings/thermal/thermal.h>
+ 
+ / {
+ 	interrupt-parent = <&gic>;
+@@ -138,6 +139,10 @@
+ 			reg = <0x03006000 0x1000>;
+ 			#address-cells = <1>;
+ 			#size-cells = <1>;
++
++			ths_calibration: thermal-sensor-calibration at 14 {
++				reg = <0x14 0x8>;
++			};
+ 		};
+ 
+ 		watchdog: watchdog at 30090a0 {
+@@ -511,6 +516,19 @@
+ 			};
+ 		};
+ 
++		ths: thermal-sensor at 5070400 {
++			compatible = "allwinner,sun50i-h616-ths";
++			reg = <0x05070400 0x400>;
++			interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
++			clocks = <&ccu CLK_BUS_THS>;
++			clock-names = "bus";
++			resets = <&ccu RST_BUS_THS>;
++			nvmem-cells = <&ths_calibration>;
++			nvmem-cell-names = "calibration";
++			allwinner,sram = <&syscon>;
++			#thermal-sensor-cells = <1>;
++		};
++
+ 		usbotg: usb at 5100000 {
+ 			compatible = "allwinner,sun50i-h616-musb",
+ 				     "allwinner,sun8i-h3-musb";
+@@ -755,4 +773,74 @@
+ 			#size-cells = <0>;
+ 		};
+ 	};
++
++	thermal-zones {
++		cpu-thermal {
++			polling-delay-passive = <500>;
++			polling-delay = <1000>;
++			thermal-sensors = <&ths 2>;
++			sustainable-power = <1000>;
++
++			trips {
++				cpu_threshold: cpu-trip-0 {
++					temperature = <60000>;
++					type = "passive";
++					hysteresis = <0>;
++				};
++				cpu_target: cpu-trip-1 {
++					temperature = <70000>;
++					type = "passive";
++					hysteresis = <0>;
++				};
++				cpu_critical: cpu-trip-2 {
++					temperature = <110000>;
++					type = "critical";
++					hysteresis = <0>;
++				};
++			};
++		};
++
++		gpu-thermal {
++			polling-delay-passive = <500>;
++			polling-delay = <1000>;
++			thermal-sensors = <&ths 0>;
++			sustainable-power = <1100>;
++
++			trips {
++				gpu_temp_critical: gpu-trip-0 {
++					temperature = <110000>;
++					type = "critical";
++					hysteresis = <0>;
++				};
++			};
++		};
++
++		ve-thermal {
++			polling-delay-passive = <0>;
++			polling-delay = <0>;
++			thermal-sensors = <&ths 1>;
++
++			trips {
++				ve_temp_critical: ve-trip-0 {
++					temperature = <110000>;
++					type = "critical";
++					hysteresis = <0>;
++				};
++			};
++		};
++
++		ddr-thermal {
++			polling-delay-passive = <0>;
++			polling-delay = <0>;
++			thermal-sensors = <&ths 3>;
++
++			trips {
++				ddr_temp_critical: ddr-trip-0 {
++					temperature = <110000>;
++					type = "critical";
++					hysteresis = <0>;
++				};
++			};
++		};
++	};
+ };



From lede-commits at lists.infradead.org  Tue Mar 26 14:06:01 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Tue, 26 Mar 2024 17:06:01 -0400
Subject: [openwrt/openwrt]  generic: 6.1: backport AXP PMIC support
In-Reply-To: <171148716008.1952195.3567333252723638072@git-01.infra.openwrt.org>
References: <171148716008.1952195.3567333252723638072@git-01.infra.openwrt.org>
Message-ID: <mailman.19957.1711487175.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/85b156c11318005fe56dcfbc47adf86a947be497

commit 85b156c11318005fe56dcfbc47adf86a947be497
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Fri Dec 8 23:10:21 2023 +0800

    generic: 6.1: backport AXP PMIC support
    
    Backport AXP15060, AXP313a and AXP192 support.
    The AXP15060 PMIC is used for starfive boards,
    and the AXP313a PMIC is used for sunxi boards.
    Remove conflicting patches from starfive target.
    
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
---
 ...20x-Fix-order-of-pek-rise-and-fall-events.patch |   80 ++
 ...-axp20x-Switch-to-the-sys-off-handler-API.patch |   82 ++
 ...6.3-mfd-axp20x-Fix-axp288-writable-ranges.patch |   28 +
 ...-mfd-axp20x-Add-support-for-AXP15060-PMIC.patch |  343 +++++++
 ...5-mfd-axp20x-Add-support-for-AXP313a-PMIC.patch |  256 +++++
 ...or-axp20x-Add-support-for-AXP313a-variant.patch |  129 +++
 ....5-regulator-axp20x-Add-AXP15060-support.patch} |  159 +--
 ...87-v6.5-mfd-axp20x-Add-support-for-AXP192.patch |  383 ++++++++
 ...river-mfd-axp20x-Add-support-for-AXP15060.patch | 1014 --------------------
 9 files changed, 1347 insertions(+), 1127 deletions(-)

diff --git a/target/linux/generic/backport-6.1/880-v6.3-mfd-axp20x-Fix-order-of-pek-rise-and-fall-events.patch b/target/linux/generic/backport-6.1/880-v6.3-mfd-axp20x-Fix-order-of-pek-rise-and-fall-events.patch
new file mode 100644
index 0000000000..23681ba937
--- /dev/null
+++ b/target/linux/generic/backport-6.1/880-v6.3-mfd-axp20x-Fix-order-of-pek-rise-and-fall-events.patch
@@ -0,0 +1,80 @@
+From 8781ba7f45695af3ab8e8d1b55a31f527c9201a3 Mon Sep 17 00:00:00 2001
+From: Aren Moynihan <aren at peacevolution.org>
+Date: Thu, 8 Dec 2022 17:02:26 -0500
+Subject: [PATCH] mfd: axp20x: Fix order of pek rise and fall events
+
+The power button can get "stuck" if the rising edge and falling edge irq
+are read in the same pass. This can often be triggered when resuming
+from suspend if the power button is released before the kernel handles
+the interrupt.
+
+Swapping the order of the rise and fall events makes sure that the press
+event is handled first, which prevents this situation.
+
+Signed-off-by: Aren Moynihan <aren at peacevolution.org>
+Reviewed-by: Samuel Holland <samuel at sholland.org>
+Tested-by: Samuel Holland <samuel at sholland.org>
+Acked-by: Chen-Yu Tsai <wens at csie.org>
+Signed-off-by: Lee Jones <lee at kernel.org>
+Link: https://lore.kernel.org/r/20221208220225.635414-1-aren at peacevolution.org
+---
+ include/linux/mfd/axp20x.h | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+--- a/include/linux/mfd/axp20x.h
++++ b/include/linux/mfd/axp20x.h
+@@ -432,8 +432,9 @@ enum {
+ 	AXP152_IRQ_PEK_SHORT,
+ 	AXP152_IRQ_PEK_LONG,
+ 	AXP152_IRQ_TIMER,
+-	AXP152_IRQ_PEK_RIS_EDGE,
++	/* out of bit order to make sure the press event is handled first */
+ 	AXP152_IRQ_PEK_FAL_EDGE,
++	AXP152_IRQ_PEK_RIS_EDGE,
+ 	AXP152_IRQ_GPIO3_INPUT,
+ 	AXP152_IRQ_GPIO2_INPUT,
+ 	AXP152_IRQ_GPIO1_INPUT,
+@@ -472,8 +473,9 @@ enum {
+ 	AXP20X_IRQ_LOW_PWR_LVL1,
+ 	AXP20X_IRQ_LOW_PWR_LVL2,
+ 	AXP20X_IRQ_TIMER,
+-	AXP20X_IRQ_PEK_RIS_EDGE,
++	/* out of bit order to make sure the press event is handled first */
+ 	AXP20X_IRQ_PEK_FAL_EDGE,
++	AXP20X_IRQ_PEK_RIS_EDGE,
+ 	AXP20X_IRQ_GPIO3_INPUT,
+ 	AXP20X_IRQ_GPIO2_INPUT,
+ 	AXP20X_IRQ_GPIO1_INPUT,
+@@ -502,8 +504,9 @@ enum axp22x_irqs {
+ 	AXP22X_IRQ_LOW_PWR_LVL1,
+ 	AXP22X_IRQ_LOW_PWR_LVL2,
+ 	AXP22X_IRQ_TIMER,
+-	AXP22X_IRQ_PEK_RIS_EDGE,
++	/* out of bit order to make sure the press event is handled first */
+ 	AXP22X_IRQ_PEK_FAL_EDGE,
++	AXP22X_IRQ_PEK_RIS_EDGE,
+ 	AXP22X_IRQ_GPIO1_INPUT,
+ 	AXP22X_IRQ_GPIO0_INPUT,
+ };
+@@ -571,8 +574,9 @@ enum axp803_irqs {
+ 	AXP803_IRQ_LOW_PWR_LVL1,
+ 	AXP803_IRQ_LOW_PWR_LVL2,
+ 	AXP803_IRQ_TIMER,
+-	AXP803_IRQ_PEK_RIS_EDGE,
++	/* out of bit order to make sure the press event is handled first */
+ 	AXP803_IRQ_PEK_FAL_EDGE,
++	AXP803_IRQ_PEK_RIS_EDGE,
+ 	AXP803_IRQ_PEK_SHORT,
+ 	AXP803_IRQ_PEK_LONG,
+ 	AXP803_IRQ_PEK_OVER_OFF,
+@@ -623,8 +627,9 @@ enum axp809_irqs {
+ 	AXP809_IRQ_LOW_PWR_LVL1,
+ 	AXP809_IRQ_LOW_PWR_LVL2,
+ 	AXP809_IRQ_TIMER,
+-	AXP809_IRQ_PEK_RIS_EDGE,
++	/* out of bit order to make sure the press event is handled first */
+ 	AXP809_IRQ_PEK_FAL_EDGE,
++	AXP809_IRQ_PEK_RIS_EDGE,
+ 	AXP809_IRQ_PEK_SHORT,
+ 	AXP809_IRQ_PEK_LONG,
+ 	AXP809_IRQ_PEK_OVER_OFF,
diff --git a/target/linux/generic/backport-6.1/881-v6.3-mfd-axp20x-Switch-to-the-sys-off-handler-API.patch b/target/linux/generic/backport-6.1/881-v6.3-mfd-axp20x-Switch-to-the-sys-off-handler-API.patch
new file mode 100644
index 0000000000..b742276c8a
--- /dev/null
+++ b/target/linux/generic/backport-6.1/881-v6.3-mfd-axp20x-Switch-to-the-sys-off-handler-API.patch
@@ -0,0 +1,82 @@
+From 1b1305e95e85624f538ec56db9acf88e2d3d7397 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel at sholland.org>
+Date: Wed, 28 Dec 2022 10:27:52 -0600
+Subject: [PATCH] mfd: axp20x: Switch to the sys-off handler API
+
+This removes a layer of indirection through pm_power_off() and allows
+the PMIC handler to be used as a fallback when firmware power off fails.
+This happens on boards like the Clockwork DevTerm R-01 where OpenSBI
+does not know how to use the PMIC to power off the board.
+
+Move the check for AXP288 to avoid registering a dummy handler.
+
+Signed-off-by: Samuel Holland <samuel at sholland.org>
+[Lee: Removed superfluous new line]
+Signed-off-by: Lee Jones <lee at kernel.org>
+Link: https://lore.kernel.org/r/20221228162752.14204-1-samuel at sholland.org
+---
+ drivers/mfd/axp20x.c | 27 +++++++++++----------------
+ 1 file changed, 11 insertions(+), 16 deletions(-)
+
+--- a/drivers/mfd/axp20x.c
++++ b/drivers/mfd/axp20x.c
+@@ -23,7 +23,7 @@
+ #include <linux/mfd/core.h>
+ #include <linux/module.h>
+ #include <linux/of_device.h>
+-#include <linux/pm_runtime.h>
++#include <linux/reboot.h>
+ #include <linux/regmap.h>
+ #include <linux/regulator/consumer.h>
+ 
+@@ -832,17 +832,16 @@ static const struct mfd_cell axp813_cell
+ 	},
+ };
+ 
+-static struct axp20x_dev *axp20x_pm_power_off;
+-static void axp20x_power_off(void)
++static int axp20x_power_off(struct sys_off_data *data)
+ {
+-	if (axp20x_pm_power_off->variant == AXP288_ID)
+-		return;
++	struct axp20x_dev *axp20x = data->cb_data;
+ 
+-	regmap_write(axp20x_pm_power_off->regmap, AXP20X_OFF_CTRL,
+-		     AXP20X_OFF);
++	regmap_write(axp20x->regmap, AXP20X_OFF_CTRL, AXP20X_OFF);
+ 
+ 	/* Give capacitors etc. time to drain to avoid kernel panic msg. */
+ 	mdelay(500);
++
++	return NOTIFY_DONE;
+ }
+ 
+ int axp20x_match_device(struct axp20x_dev *axp20x)
+@@ -1009,10 +1008,11 @@ int axp20x_device_probe(struct axp20x_de
+ 		return ret;
+ 	}
+ 
+-	if (!pm_power_off) {
+-		axp20x_pm_power_off = axp20x;
+-		pm_power_off = axp20x_power_off;
+-	}
++	if (axp20x->variant != AXP288_ID)
++		devm_register_sys_off_handler(axp20x->dev,
++					      SYS_OFF_MODE_POWER_OFF,
++					      SYS_OFF_PRIO_DEFAULT,
++					      axp20x_power_off, axp20x);
+ 
+ 	dev_info(axp20x->dev, "AXP20X driver loaded\n");
+ 
+@@ -1022,11 +1022,6 @@ EXPORT_SYMBOL(axp20x_device_probe);
+ 
+ void axp20x_device_remove(struct axp20x_dev *axp20x)
+ {
+-	if (axp20x == axp20x_pm_power_off) {
+-		axp20x_pm_power_off = NULL;
+-		pm_power_off = NULL;
+-	}
+-
+ 	mfd_remove_devices(axp20x->dev);
+ 	regmap_del_irq_chip(axp20x->irq, axp20x->regmap_irqc);
+ }
diff --git a/target/linux/generic/backport-6.1/882-v6.3-mfd-axp20x-Fix-axp288-writable-ranges.patch b/target/linux/generic/backport-6.1/882-v6.3-mfd-axp20x-Fix-axp288-writable-ranges.patch
new file mode 100644
index 0000000000..b84815e1a8
--- /dev/null
+++ b/target/linux/generic/backport-6.1/882-v6.3-mfd-axp20x-Fix-axp288-writable-ranges.patch
@@ -0,0 +1,28 @@
+From 2405fbfb384ef39e9560d76d3f6e4c90519f90aa Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Wed, 29 Mar 2023 22:55:44 +0200
+Subject: [PATCH] mfd: axp20x: Fix axp288 writable-ranges
+
+Register AXP288_POWER_REASON is writable and needs to be written
+to reset the reset- / power-on-reason bits.
+
+Add it to the axp288 writable-ranges so that the extcon-axp288
+driver can properly clear the reset- / power-on-reason bits.
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+Signed-off-by: Lee Jones <lee at kernel.org>
+Link: https://lore.kernel.org/r/20230329205544.1051393-1-hdegoede at redhat.com
+---
+ drivers/mfd/axp20x.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/mfd/axp20x.c
++++ b/drivers/mfd/axp20x.c
+@@ -119,6 +119,7 @@ static const struct regmap_access_table
+ 
+ /* AXP288 ranges are shared with the AXP803, as they cover the same range */
+ static const struct regmap_range axp288_writeable_ranges[] = {
++	regmap_reg_range(AXP288_POWER_REASON, AXP288_POWER_REASON),
+ 	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ6_STATE),
+ 	regmap_reg_range(AXP20X_DCDC_MODE, AXP288_FG_TUNE5),
+ };
diff --git a/target/linux/generic/backport-6.1/883-v6.4-mfd-axp20x-Add-support-for-AXP15060-PMIC.patch b/target/linux/generic/backport-6.1/883-v6.4-mfd-axp20x-Add-support-for-AXP15060-PMIC.patch
new file mode 100644
index 0000000000..83ef60aecd
--- /dev/null
+++ b/target/linux/generic/backport-6.1/883-v6.4-mfd-axp20x-Add-support-for-AXP15060-PMIC.patch
@@ -0,0 +1,343 @@
+From e0f8ad2a705367518b5c56bf9d6da89681467c02 Mon Sep 17 00:00:00 2001
+From: Shengyu Qu <wiagn233 at outlook.com>
+Date: Fri, 21 Apr 2023 23:08:15 +0800
+Subject: [PATCH] mfd: axp20x: Add support for AXP15060 PMIC
+
+The AXP15060 is a PMIC chip produced by X-Powers, and could be connected
+via an I2C bus.
+
+Describe the regmap and the MFD bits, along with the registers exposed
+via I2C. Eventually advertise the device using a new compatible string
+and add support for power off the system.
+
+The driver would disable PEK function if IRQ is not configured in device
+tree, since some boards (For example, Starfive Visionfive 2) didn't
+connect IRQ line of PMIC to SOC.
+
+GPIO function isn't enabled in this commit, since its configuration
+operation is different from any existing AXP PMICs and needs
+logic modification on existing driver. GPIO support might come in later
+patches.
+
+Signed-off-by: Shengyu Qu <wiagn233 at outlook.com>
+Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org>
+Signed-off-by: Lee Jones <lee at kernel.org>
+Link: https://lore.kernel.org/r/TY3P286MB261162D57695AC8164ED50E298609 at TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM
+---
+ drivers/mfd/axp20x-i2c.c   |   2 +
+ drivers/mfd/axp20x.c       | 107 +++++++++++++++++++++++++++++++++++++
+ include/linux/mfd/axp20x.h |  85 +++++++++++++++++++++++++++++
+ 3 files changed, 194 insertions(+)
+
+--- a/drivers/mfd/axp20x-i2c.c
++++ b/drivers/mfd/axp20x-i2c.c
+@@ -66,6 +66,7 @@ static const struct of_device_id axp20x_
+ 	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
+ 	{ .compatible = "x-powers,axp803", .data = (void *)AXP803_ID },
+ 	{ .compatible = "x-powers,axp806", .data = (void *)AXP806_ID },
++	{ .compatible = "x-powers,axp15060", .data = (void *)AXP15060_ID },
+ 	{ },
+ };
+ MODULE_DEVICE_TABLE(of, axp20x_i2c_of_match);
+@@ -79,6 +80,7 @@ static const struct i2c_device_id axp20x
+ 	{ "axp223", 0 },
+ 	{ "axp803", 0 },
+ 	{ "axp806", 0 },
++	{ "axp15060", 0 },
+ 	{ },
+ };
+ MODULE_DEVICE_TABLE(i2c, axp20x_i2c_id);
+--- a/drivers/mfd/axp20x.c
++++ b/drivers/mfd/axp20x.c
+@@ -43,6 +43,7 @@ static const char * const axp20x_model_n
+ 	"AXP806",
+ 	"AXP809",
+ 	"AXP813",
++	"AXP15060",
+ };
+ 
+ static const struct regmap_range axp152_writeable_ranges[] = {
+@@ -169,6 +170,31 @@ static const struct regmap_access_table
+ 	.n_yes_ranges	= ARRAY_SIZE(axp806_volatile_ranges),
+ };
+ 
++static const struct regmap_range axp15060_writeable_ranges[] = {
++	regmap_reg_range(AXP15060_PWR_OUT_CTRL1, AXP15060_DCDC_MODE_CTRL2),
++	regmap_reg_range(AXP15060_OUTPUT_MONITOR_DISCHARGE, AXP15060_CPUSLDO_V_CTRL),
++	regmap_reg_range(AXP15060_PWR_WAKEUP_CTRL, AXP15060_PWR_DISABLE_DOWN_SEQ),
++	regmap_reg_range(AXP15060_PEK_KEY, AXP15060_PEK_KEY),
++	regmap_reg_range(AXP15060_IRQ1_EN, AXP15060_IRQ2_EN),
++	regmap_reg_range(AXP15060_IRQ1_STATE, AXP15060_IRQ2_STATE),
++};
++
++static const struct regmap_range axp15060_volatile_ranges[] = {
++	regmap_reg_range(AXP15060_STARTUP_SRC, AXP15060_STARTUP_SRC),
++	regmap_reg_range(AXP15060_PWR_WAKEUP_CTRL, AXP15060_PWR_DISABLE_DOWN_SEQ),
++	regmap_reg_range(AXP15060_IRQ1_STATE, AXP15060_IRQ2_STATE),
++};
++
++static const struct regmap_access_table axp15060_writeable_table = {
++	.yes_ranges	= axp15060_writeable_ranges,
++	.n_yes_ranges	= ARRAY_SIZE(axp15060_writeable_ranges),
++};
++
++static const struct regmap_access_table axp15060_volatile_table = {
++	.yes_ranges	= axp15060_volatile_ranges,
++	.n_yes_ranges	= ARRAY_SIZE(axp15060_volatile_ranges),
++};
++
+ static const struct resource axp152_pek_resources[] = {
+ 	DEFINE_RES_IRQ_NAMED(AXP152_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
+ 	DEFINE_RES_IRQ_NAMED(AXP152_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
+@@ -237,6 +263,11 @@ static const struct resource axp809_pek_
+ 	DEFINE_RES_IRQ_NAMED(AXP809_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
+ };
+ 
++static const struct resource axp15060_pek_resources[] = {
++	DEFINE_RES_IRQ_NAMED(AXP15060_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
++	DEFINE_RES_IRQ_NAMED(AXP15060_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
++};
++
+ static const struct regmap_config axp152_regmap_config = {
+ 	.reg_bits	= 8,
+ 	.val_bits	= 8,
+@@ -282,6 +313,15 @@ static const struct regmap_config axp806
+ 	.cache_type	= REGCACHE_RBTREE,
+ };
+ 
++static const struct regmap_config axp15060_regmap_config = {
++	.reg_bits	= 8,
++	.val_bits	= 8,
++	.wr_table	= &axp15060_writeable_table,
++	.volatile_table	= &axp15060_volatile_table,
++	.max_register	= AXP15060_IRQ2_STATE,
++	.cache_type	= REGCACHE_RBTREE,
++};
++
+ #define INIT_REGMAP_IRQ(_variant, _irq, _off, _mask)			\
+ 	[_variant##_IRQ_##_irq] = { .reg_offset = (_off), .mask = BIT(_mask) }
+ 
+@@ -503,6 +543,23 @@ static const struct regmap_irq axp809_re
+ 	INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,		4, 0),
+ };
+ 
++static const struct regmap_irq axp15060_regmap_irqs[] = {
++	INIT_REGMAP_IRQ(AXP15060, DIE_TEMP_HIGH_LV1,	0, 0),
++	INIT_REGMAP_IRQ(AXP15060, DIE_TEMP_HIGH_LV2,	0, 1),
++	INIT_REGMAP_IRQ(AXP15060, DCDC1_V_LOW,		0, 2),
++	INIT_REGMAP_IRQ(AXP15060, DCDC2_V_LOW,		0, 3),
++	INIT_REGMAP_IRQ(AXP15060, DCDC3_V_LOW,		0, 4),
++	INIT_REGMAP_IRQ(AXP15060, DCDC4_V_LOW,		0, 5),
++	INIT_REGMAP_IRQ(AXP15060, DCDC5_V_LOW,		0, 6),
++	INIT_REGMAP_IRQ(AXP15060, DCDC6_V_LOW,		0, 7),
++	INIT_REGMAP_IRQ(AXP15060, PEK_LONG,			1, 0),
++	INIT_REGMAP_IRQ(AXP15060, PEK_SHORT,			1, 1),
++	INIT_REGMAP_IRQ(AXP15060, GPIO1_INPUT,		1, 2),
++	INIT_REGMAP_IRQ(AXP15060, PEK_FAL_EDGE,			1, 3),
++	INIT_REGMAP_IRQ(AXP15060, PEK_RIS_EDGE,			1, 4),
++	INIT_REGMAP_IRQ(AXP15060, GPIO2_INPUT,		1, 5),
++};
++
+ static const struct regmap_irq_chip axp152_regmap_irq_chip = {
+ 	.name			= "axp152_irq_chip",
+ 	.status_base		= AXP152_IRQ1_STATE,
+@@ -589,6 +646,17 @@ static const struct regmap_irq_chip axp8
+ 	.num_regs		= 5,
+ };
+ 
++static const struct regmap_irq_chip axp15060_regmap_irq_chip = {
++	.name			= "axp15060",
++	.status_base		= AXP15060_IRQ1_STATE,
++	.ack_base		= AXP15060_IRQ1_STATE,
++	.unmask_base		= AXP15060_IRQ1_EN,
++	.init_ack_masked	= true,
++	.irqs			= axp15060_regmap_irqs,
++	.num_irqs		= ARRAY_SIZE(axp15060_regmap_irqs),
++	.num_regs		= 2,
++};
++
+ static const struct mfd_cell axp20x_cells[] = {
+ 	{
+ 		.name		= "axp20x-gpio",
+@@ -833,6 +901,23 @@ static const struct mfd_cell axp813_cell
+ 	},
+ };
+ 
++static const struct mfd_cell axp15060_cells[] = {
++	{
++		.name		= "axp221-pek",
++		.num_resources	= ARRAY_SIZE(axp15060_pek_resources),
++		.resources	= axp15060_pek_resources,
++	}, {
++		.name		= "axp20x-regulator",
++	},
++};
++
++/* For boards that don't have IRQ line connected to SOC. */
++static const struct mfd_cell axp_regulator_only_cells[] = {
++	{
++		.name		= "axp20x-regulator",
++	},
++};
++
+ static int axp20x_power_off(struct sys_off_data *data)
+ {
+ 	struct axp20x_dev *axp20x = data->cb_data;
+@@ -942,6 +1027,28 @@ int axp20x_match_device(struct axp20x_de
+ 		 */
+ 		axp20x->regmap_irq_chip = &axp803_regmap_irq_chip;
+ 		break;
++	case AXP15060_ID:
++		/*
++		 * Don't register the power key part if there is no interrupt
++		 * line.
++		 *
++		 * Since most use cases of AXP PMICs are Allwinner SOCs, board
++		 * designers follow Allwinner's reference design and connects
++		 * IRQ line to SOC, there's no need for those variants to deal
++		 * with cases that IRQ isn't connected. However, AXP15660 is
++		 * used by some other vendors' SOCs that didn't connect IRQ
++		 * line, we need to deal with this case.
++		 */
++		if (axp20x->irq > 0) {
++			axp20x->nr_cells = ARRAY_SIZE(axp15060_cells);
++			axp20x->cells = axp15060_cells;
++		} else {
++			axp20x->nr_cells = ARRAY_SIZE(axp_regulator_only_cells);
++			axp20x->cells = axp_regulator_only_cells;
++		}
++		axp20x->regmap_cfg = &axp15060_regmap_config;
++		axp20x->regmap_irq_chip = &axp15060_regmap_irq_chip;
++		break;
+ 	default:
+ 		dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
+ 		return -EINVAL;
+--- a/include/linux/mfd/axp20x.h
++++ b/include/linux/mfd/axp20x.h
+@@ -21,6 +21,7 @@ enum axp20x_variants {
+ 	AXP806_ID,
+ 	AXP809_ID,
+ 	AXP813_ID,
++	AXP15060_ID,
+ 	NR_AXP20X_VARIANTS,
+ };
+ 
+@@ -131,6 +132,39 @@ enum axp20x_variants {
+ /* Other DCDC regulator control registers are the same as AXP803 */
+ #define AXP813_DCDC7_V_OUT		0x26
+ 
++#define AXP15060_STARTUP_SRC		0x00
++#define AXP15060_PWR_OUT_CTRL1		0x10
++#define AXP15060_PWR_OUT_CTRL2		0x11
++#define AXP15060_PWR_OUT_CTRL3		0x12
++#define AXP15060_DCDC1_V_CTRL		0x13
++#define AXP15060_DCDC2_V_CTRL		0x14
++#define AXP15060_DCDC3_V_CTRL		0x15
++#define AXP15060_DCDC4_V_CTRL		0x16
++#define AXP15060_DCDC5_V_CTRL		0x17
++#define AXP15060_DCDC6_V_CTRL		0x18
++#define AXP15060_ALDO1_V_CTRL		0x19
++#define AXP15060_DCDC_MODE_CTRL1		0x1a
++#define AXP15060_DCDC_MODE_CTRL2		0x1b
++#define AXP15060_OUTPUT_MONITOR_DISCHARGE		0x1e
++#define AXP15060_IRQ_PWROK_VOFF		0x1f
++#define AXP15060_ALDO2_V_CTRL		0x20
++#define AXP15060_ALDO3_V_CTRL		0x21
++#define AXP15060_ALDO4_V_CTRL		0x22
++#define AXP15060_ALDO5_V_CTRL		0x23
++#define AXP15060_BLDO1_V_CTRL		0x24
++#define AXP15060_BLDO2_V_CTRL		0x25
++#define AXP15060_BLDO3_V_CTRL		0x26
++#define AXP15060_BLDO4_V_CTRL		0x27
++#define AXP15060_BLDO5_V_CTRL		0x28
++#define AXP15060_CLDO1_V_CTRL		0x29
++#define AXP15060_CLDO2_V_CTRL		0x2a
++#define AXP15060_CLDO3_V_CTRL		0x2b
++#define AXP15060_CLDO4_V_CTRL		0x2d
++#define AXP15060_CPUSLDO_V_CTRL		0x2e
++#define AXP15060_PWR_WAKEUP_CTRL		0x31
++#define AXP15060_PWR_DISABLE_DOWN_SEQ		0x32
++#define AXP15060_PEK_KEY		0x36
++
+ /* Interrupt */
+ #define AXP152_IRQ1_EN			0x40
+ #define AXP152_IRQ2_EN			0x41
+@@ -152,6 +186,11 @@ enum axp20x_variants {
+ #define AXP20X_IRQ5_STATE		0x4c
+ #define AXP20X_IRQ6_STATE		0x4d
+ 
++#define AXP15060_IRQ1_EN		0x40
++#define AXP15060_IRQ2_EN		0x41
++#define AXP15060_IRQ1_STATE		0x48
++#define AXP15060_IRQ2_STATE		0x49
++
+ /* ADC */
+ #define AXP20X_ACIN_V_ADC_H		0x56
+ #define AXP20X_ACIN_V_ADC_L		0x57
+@@ -222,6 +261,8 @@ enum axp20x_variants {
+ #define AXP22X_GPIO_STATE		0x94
+ #define AXP22X_GPIO_PULL_DOWN		0x95
+ 
++#define AXP15060_CLDO4_GPIO2_MODESET		0x2c
++
+ /* Battery */
+ #define AXP20X_CHRG_CC_31_24		0xb0
+ #define AXP20X_CHRG_CC_23_16		0xb1
+@@ -419,6 +460,33 @@ enum {
+ 	AXP813_REG_ID_MAX,
+ };
+ 
++enum {
++	AXP15060_DCDC1 = 0,
++	AXP15060_DCDC2,
++	AXP15060_DCDC3,
++	AXP15060_DCDC4,
++	AXP15060_DCDC5,
++	AXP15060_DCDC6,
++	AXP15060_ALDO1,
++	AXP15060_ALDO2,
++	AXP15060_ALDO3,
++	AXP15060_ALDO4,
++	AXP15060_ALDO5,
++	AXP15060_BLDO1,
++	AXP15060_BLDO2,
++	AXP15060_BLDO3,
++	AXP15060_BLDO4,
++	AXP15060_BLDO5,
++	AXP15060_CLDO1,
++	AXP15060_CLDO2,
++	AXP15060_CLDO3,
++	AXP15060_CLDO4,
++	AXP15060_CPUSLDO,
++	AXP15060_SW,
++	AXP15060_RTC_LDO,
++	AXP15060_REG_ID_MAX,
++};
++
+ /* IRQs */
+ enum {
+ 	AXP152_IRQ_LDO0IN_CONNECT = 1,
+@@ -637,6 +705,23 @@ enum axp809_irqs {
+ 	AXP809_IRQ_GPIO0_INPUT,
+ };
+ 
++enum axp15060_irqs {
++	AXP15060_IRQ_DIE_TEMP_HIGH_LV1 = 1,
++	AXP15060_IRQ_DIE_TEMP_HIGH_LV2,
++	AXP15060_IRQ_DCDC1_V_LOW,
++	AXP15060_IRQ_DCDC2_V_LOW,
++	AXP15060_IRQ_DCDC3_V_LOW,
++	AXP15060_IRQ_DCDC4_V_LOW,
++	AXP15060_IRQ_DCDC5_V_LOW,
++	AXP15060_IRQ_DCDC6_V_LOW,
++	AXP15060_IRQ_PEK_LONG,
++	AXP15060_IRQ_PEK_SHORT,
++	AXP15060_IRQ_GPIO1_INPUT,
++	AXP15060_IRQ_PEK_FAL_EDGE,
++	AXP15060_IRQ_PEK_RIS_EDGE,
++	AXP15060_IRQ_GPIO2_INPUT,
++};
++
+ struct axp20x_dev {
+ 	struct device			*dev;
+ 	int				irq;
diff --git a/target/linux/generic/backport-6.1/884-v6.5-mfd-axp20x-Add-support-for-AXP313a-PMIC.patch b/target/linux/generic/backport-6.1/884-v6.5-mfd-axp20x-Add-support-for-AXP313a-PMIC.patch
new file mode 100644
index 0000000000..c9470eacec
--- /dev/null
+++ b/target/linux/generic/backport-6.1/884-v6.5-mfd-axp20x-Add-support-for-AXP313a-PMIC.patch
@@ -0,0 +1,256 @@
+From 75c8cb2f4cb218aaf4ea68cab08d6dbc96eeae15 Mon Sep 17 00:00:00 2001
+From: Martin Botka <martin.botka at somainline.org>
+Date: Wed, 24 May 2023 01:00:10 +0100
+Subject: [PATCH] mfd: axp20x: Add support for AXP313a PMIC
+
+The AXP313a is a PMIC chip produced by X-Powers, it can be connected via
+an I2C bus.
+The name AXP1530 seems to appear as well, and this is what is used in
+the BSP driver. From all we know it's the same chip, just a different
+name. However we have only seen AXP313a chips in the wild, so go with
+this name.
+
+Compared to the other AXP PMICs it's a rather simple affair: just three
+DCDC converters, three LDOs, and no battery charging support.
+
+Describe the regmap and the MFD bits, along with the registers exposed
+via I2C. Aside from the various regulators, also describe the power key
+interrupts, and adjust the shutdown handler routine to use a different
+register than the other PMICs.
+Eventually advertise the device using the new compatible string.
+
+Signed-off-by: Martin Botka <martin.botka at somainline.org>
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Reviewed-by: Chen-Yu Tsai <wens at csie.org>
+Link: https://lore.kernel.org/r/20230524000012.15028-2-andre.przywara at arm.com
+Signed-off-by: Lee Jones <lee at kernel.org>
+---
+ drivers/mfd/axp20x-i2c.c   |  2 +
+ drivers/mfd/axp20x.c       | 78 +++++++++++++++++++++++++++++++++++++-
+ include/linux/mfd/axp20x.h | 32 ++++++++++++++++
+ 3 files changed, 111 insertions(+), 1 deletion(-)
+
+--- a/drivers/mfd/axp20x-i2c.c
++++ b/drivers/mfd/axp20x-i2c.c
+@@ -64,6 +64,7 @@ static const struct of_device_id axp20x_
+ 	{ .compatible = "x-powers,axp209", .data = (void *)AXP209_ID },
+ 	{ .compatible = "x-powers,axp221", .data = (void *)AXP221_ID },
+ 	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
++	{ .compatible = "x-powers,axp313a", .data = (void *)AXP313A_ID },
+ 	{ .compatible = "x-powers,axp803", .data = (void *)AXP803_ID },
+ 	{ .compatible = "x-powers,axp806", .data = (void *)AXP806_ID },
+ 	{ .compatible = "x-powers,axp15060", .data = (void *)AXP15060_ID },
+@@ -78,6 +79,7 @@ static const struct i2c_device_id axp20x
+ 	{ "axp209", 0 },
+ 	{ "axp221", 0 },
+ 	{ "axp223", 0 },
++	{ "axp313a", 0 },
+ 	{ "axp803", 0 },
+ 	{ "axp806", 0 },
+ 	{ "axp15060", 0 },
+--- a/drivers/mfd/axp20x.c
++++ b/drivers/mfd/axp20x.c
+@@ -39,6 +39,7 @@ static const char * const axp20x_model_n
+ 	"AXP221",
+ 	"AXP223",
+ 	"AXP288",
++	"AXP313a",
+ 	"AXP803",
+ 	"AXP806",
+ 	"AXP809",
+@@ -156,6 +157,25 @@ static const struct regmap_range axp806_
+ 	regmap_reg_range(AXP806_REG_ADDR_EXT, AXP806_REG_ADDR_EXT),
+ };
+ 
++static const struct regmap_range axp313a_writeable_ranges[] = {
++	regmap_reg_range(AXP313A_ON_INDICATE, AXP313A_IRQ_STATE),
++};
++
++static const struct regmap_range axp313a_volatile_ranges[] = {
++	regmap_reg_range(AXP313A_SHUTDOWN_CTRL, AXP313A_SHUTDOWN_CTRL),
++	regmap_reg_range(AXP313A_IRQ_STATE, AXP313A_IRQ_STATE),
++};
++
++static const struct regmap_access_table axp313a_writeable_table = {
++	.yes_ranges = axp313a_writeable_ranges,
++	.n_yes_ranges = ARRAY_SIZE(axp313a_writeable_ranges),
++};
++
++static const struct regmap_access_table axp313a_volatile_table = {
++	.yes_ranges = axp313a_volatile_ranges,
++	.n_yes_ranges = ARRAY_SIZE(axp313a_volatile_ranges),
++};
++
+ static const struct regmap_range axp806_volatile_ranges[] = {
+ 	regmap_reg_range(AXP20X_IRQ1_STATE, AXP20X_IRQ2_STATE),
+ };
+@@ -248,6 +268,11 @@ static const struct resource axp288_fuel
+ 	DEFINE_RES_IRQ(AXP288_IRQ_WL1),
+ };
+ 
++static const struct resource axp313a_pek_resources[] = {
++	DEFINE_RES_IRQ_NAMED(AXP313A_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
++	DEFINE_RES_IRQ_NAMED(AXP313A_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
++};
++
+ static const struct resource axp803_pek_resources[] = {
+ 	DEFINE_RES_IRQ_NAMED(AXP803_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
+ 	DEFINE_RES_IRQ_NAMED(AXP803_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
+@@ -304,6 +329,15 @@ static const struct regmap_config axp288
+ 	.cache_type	= REGCACHE_RBTREE,
+ };
+ 
++static const struct regmap_config axp313a_regmap_config = {
++	.reg_bits = 8,
++	.val_bits = 8,
++	.wr_table = &axp313a_writeable_table,
++	.volatile_table = &axp313a_volatile_table,
++	.max_register = AXP313A_IRQ_STATE,
++	.cache_type = REGCACHE_RBTREE,
++};
++
+ static const struct regmap_config axp806_regmap_config = {
+ 	.reg_bits	= 8,
+ 	.val_bits	= 8,
+@@ -456,6 +490,16 @@ static const struct regmap_irq axp288_re
+ 	INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
+ };
+ 
++static const struct regmap_irq axp313a_regmap_irqs[] = {
++	INIT_REGMAP_IRQ(AXP313A, PEK_RIS_EDGE,		0, 7),
++	INIT_REGMAP_IRQ(AXP313A, PEK_FAL_EDGE,		0, 6),
++	INIT_REGMAP_IRQ(AXP313A, PEK_SHORT,		0, 5),
++	INIT_REGMAP_IRQ(AXP313A, PEK_LONG,		0, 4),
++	INIT_REGMAP_IRQ(AXP313A, DCDC3_V_LOW,		0, 3),
++	INIT_REGMAP_IRQ(AXP313A, DCDC2_V_LOW,		0, 2),
++	INIT_REGMAP_IRQ(AXP313A, DIE_TEMP_HIGH,		0, 0),
++};
++
+ static const struct regmap_irq axp803_regmap_irqs[] = {
+ 	INIT_REGMAP_IRQ(AXP803, ACIN_OVER_V,		0, 7),
+ 	INIT_REGMAP_IRQ(AXP803, ACIN_PLUGIN,		0, 6),
+@@ -610,6 +654,17 @@ static const struct regmap_irq_chip axp2
+ 
+ };
+ 
++static const struct regmap_irq_chip axp313a_regmap_irq_chip = {
++	.name			= "axp313a_irq_chip",
++	.status_base		= AXP313A_IRQ_STATE,
++	.ack_base		= AXP313A_IRQ_STATE,
++	.unmask_base		= AXP313A_IRQ_EN,
++	.init_ack_masked	= true,
++	.irqs			= axp313a_regmap_irqs,
++	.num_irqs		= ARRAY_SIZE(axp313a_regmap_irqs),
++	.num_regs		= 1,
++};
++
+ static const struct regmap_irq_chip axp803_regmap_irq_chip = {
+ 	.name			= "axp803",
+ 	.status_base		= AXP20X_IRQ1_STATE,
+@@ -752,6 +807,11 @@ static const struct mfd_cell axp152_cell
+ 	},
+ };
+ 
++static struct mfd_cell axp313a_cells[] = {
++	MFD_CELL_NAME("axp20x-regulator"),
++	MFD_CELL_RES("axp313a-pek", axp313a_pek_resources),
++};
++
+ static const struct resource axp288_adc_resources[] = {
+ 	DEFINE_RES_IRQ_NAMED(AXP288_IRQ_GPADC, "GPADC"),
+ };
+@@ -921,8 +981,18 @@ static const struct mfd_cell axp_regulat
+ static int axp20x_power_off(struct sys_off_data *data)
+ {
+ 	struct axp20x_dev *axp20x = data->cb_data;
++	unsigned int shutdown_reg;
+ 
+-	regmap_write(axp20x->regmap, AXP20X_OFF_CTRL, AXP20X_OFF);
++	switch (axp20x->variant) {
++	case AXP313A_ID:
++		shutdown_reg = AXP313A_SHUTDOWN_CTRL;
++		break;
++	default:
++		shutdown_reg = AXP20X_OFF_CTRL;
++		break;
++	}
++
++	regmap_write(axp20x->regmap, shutdown_reg, AXP20X_OFF);
+ 
+ 	/* Give capacitors etc. time to drain to avoid kernel panic msg. */
+ 	mdelay(500);
+@@ -985,6 +1055,12 @@ int axp20x_match_device(struct axp20x_de
+ 		axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
+ 		axp20x->irq_flags = IRQF_TRIGGER_LOW;
+ 		break;
++	case AXP313A_ID:
++		axp20x->nr_cells = ARRAY_SIZE(axp313a_cells);
++		axp20x->cells = axp313a_cells;
++		axp20x->regmap_cfg = &axp313a_regmap_config;
++		axp20x->regmap_irq_chip = &axp313a_regmap_irq_chip;
++		break;
+ 	case AXP803_ID:
+ 		axp20x->nr_cells = ARRAY_SIZE(axp803_cells);
+ 		axp20x->cells = axp803_cells;
+--- a/include/linux/mfd/axp20x.h
++++ b/include/linux/mfd/axp20x.h
+@@ -17,6 +17,7 @@ enum axp20x_variants {
+ 	AXP221_ID,
+ 	AXP223_ID,
+ 	AXP288_ID,
++	AXP313A_ID,
+ 	AXP803_ID,
+ 	AXP806_ID,
+ 	AXP809_ID,
+@@ -92,6 +93,17 @@ enum axp20x_variants {
+ #define AXP22X_ALDO3_V_OUT		0x2a
+ #define AXP22X_CHRG_CTRL3		0x35
+ 
++#define AXP313A_ON_INDICATE		0x00
++#define AXP313A_OUTPUT_CONTROL		0x10
++#define AXP313A_DCDC1_CONRTOL		0x13
++#define AXP313A_DCDC2_CONRTOL		0x14
++#define AXP313A_DCDC3_CONRTOL		0x15
++#define AXP313A_ALDO1_CONRTOL		0x16
++#define AXP313A_DLDO1_CONRTOL		0x17
++#define AXP313A_SHUTDOWN_CTRL		0x1a
++#define AXP313A_IRQ_EN			0x20
++#define AXP313A_IRQ_STATE		0x21
++
+ #define AXP806_STARTUP_SRC		0x00
+ #define AXP806_CHIP_ID			0x03
+ #define AXP806_PWR_OUT_CTRL1		0x10
+@@ -364,6 +376,16 @@ enum {
+ };
+ 
+ enum {
++	AXP313A_DCDC1 = 0,
++	AXP313A_DCDC2,
++	AXP313A_DCDC3,
++	AXP313A_ALDO1,
++	AXP313A_DLDO1,
++	AXP313A_RTC_LDO,
++	AXP313A_REG_ID_MAX,
++};
++
++enum {
+ 	AXP806_DCDCA = 0,
+ 	AXP806_DCDCB,
+ 	AXP806_DCDCC,
+@@ -616,6 +638,16 @@ enum axp288_irqs {
+ 	AXP288_IRQ_BC_USB_CHNG,
+ };
+ 
++enum axp313a_irqs {
++	AXP313A_IRQ_DIE_TEMP_HIGH,
++	AXP313A_IRQ_DCDC2_V_LOW = 2,
++	AXP313A_IRQ_DCDC3_V_LOW,
++	AXP313A_IRQ_PEK_LONG,
++	AXP313A_IRQ_PEK_SHORT,
++	AXP313A_IRQ_PEK_FAL_EDGE,
++	AXP313A_IRQ_PEK_RIS_EDGE,
++};
++
+ enum axp803_irqs {
+ 	AXP803_IRQ_ACIN_OVER_V = 1,
+ 	AXP803_IRQ_ACIN_PLUGIN,
diff --git a/target/linux/generic/backport-6.1/885-v6.5-regulator-axp20x-Add-support-for-AXP313a-variant.patch b/target/linux/generic/backport-6.1/885-v6.5-regulator-axp20x-Add-support-for-AXP313a-variant.patch
new file mode 100644
index 0000000000..91f1b39824
--- /dev/null
+++ b/target/linux/generic/backport-6.1/885-v6.5-regulator-axp20x-Add-support-for-AXP313a-variant.patch
@@ -0,0 +1,129 @@
+From 60fd7eb89670d2636ac3156881acbd103c6eba6a Mon Sep 17 00:00:00 2001
+From: Martin Botka <martin.botka at somainline.org>
+Date: Wed, 24 May 2023 01:00:11 +0100
+Subject: [PATCH] regulator: axp20x: Add support for AXP313a variant
+
+The AXP313a is your typical I2C controlled PMIC, although in a lighter
+fashion compared to the other X-Powers PMICs: it has only three DCDC
+rails, three LDOs, and no battery charging support.
+
+The AXP313a datasheet does not describe a register to change the DCDC
+switching frequency, and talks of it being fixed at 3 MHz. Check that
+the property allowing to change that frequency is absent from the DT,
+and bail out otherwise.
+
+The third LDO, RTCLDO, is fixed, and cannot even be turned on or off,
+programmatically. On top of that, its voltage is customisable (either
+1.8V or 3.3V), which we cannot describe easily using the existing
+regulator wrapper functions. This should be fixed properly, using
+regulator-{min,max}-microvolt in the DT, but this requires more changes
+to the code. As some other PMICs (AXP2xx, AXP803) seem to paper over the
+same problem as well, we follow suit here and pretend it's a fixed 1.8V
+regulator. A proper fix can follow later. The BSP code seems to ignore
+this regulator altogether.
+
+Describe the AXP313A's voltage settings and switch registers, how the
+voltages are encoded, and connect this to the MFD device via its
+regulator ID.
+
+Signed-off-by: Martin Botka <martin.botka at somainline.org>
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Reviewed-by: Chen-Yu Tsai <wens at csie.org>
+Reviewed-by: Mark Brown <broonie at kernel.org>
+Tested-by: Shengyu Qu <wiagn233 at outlook.com>
+Link: https://lore.kernel.org/r/20230524000012.15028-3-andre.przywara at arm.com
+Signed-off-by: Mark Brown <broonie at kernel.org>
+---
+ drivers/regulator/axp20x-regulator.c | 60 ++++++++++++++++++++++++++++
+ 1 file changed, 60 insertions(+)
+
+--- a/drivers/regulator/axp20x-regulator.c
++++ b/drivers/regulator/axp20x-regulator.c
+@@ -134,6 +134,11 @@
+ #define AXP22X_PWR_OUT_DLDO4_MASK	BIT_MASK(6)
+ #define AXP22X_PWR_OUT_ALDO3_MASK	BIT_MASK(7)
+ 
++#define AXP313A_DCDC1_NUM_VOLTAGES	107
++#define AXP313A_DCDC23_NUM_VOLTAGES	88
++#define AXP313A_DCDC_V_OUT_MASK		GENMASK(6, 0)
++#define AXP313A_LDO_V_OUT_MASK		GENMASK(4, 0)
++
+ #define AXP803_PWR_OUT_DCDC1_MASK	BIT_MASK(0)
+ #define AXP803_PWR_OUT_DCDC2_MASK	BIT_MASK(1)
+ #define AXP803_PWR_OUT_DCDC3_MASK	BIT_MASK(2)
+@@ -638,6 +643,48 @@ static const struct regulator_desc axp22
+ 	.ops		= &axp20x_ops_sw,
+ };
+ 
++static const struct linear_range axp313a_dcdc1_ranges[] = {
++	REGULATOR_LINEAR_RANGE(500000,   0,  70,  10000),
++	REGULATOR_LINEAR_RANGE(1220000, 71,  87,  20000),
++	REGULATOR_LINEAR_RANGE(1600000, 88, 106, 100000),
++};
++
++static const struct linear_range axp313a_dcdc2_ranges[] = {
++	REGULATOR_LINEAR_RANGE(500000,   0, 70, 10000),
++	REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
++};
++
++/*
++ * This is deviating from the datasheet. The values here are taken from the
++ * BSP driver and have been confirmed by measurements.
++ */
++static const struct linear_range axp313a_dcdc3_ranges[] = {
++	REGULATOR_LINEAR_RANGE(500000,   0,  70, 10000),
++	REGULATOR_LINEAR_RANGE(1220000, 71, 102, 20000),
++};
++
++static const struct regulator_desc axp313a_regulators[] = {
++	AXP_DESC_RANGES(AXP313A, DCDC1, "dcdc1", "vin1",
++			axp313a_dcdc1_ranges, AXP313A_DCDC1_NUM_VOLTAGES,
++			AXP313A_DCDC1_CONRTOL, AXP313A_DCDC_V_OUT_MASK,
++			AXP313A_OUTPUT_CONTROL, BIT(0)),
++	AXP_DESC_RANGES(AXP313A, DCDC2, "dcdc2", "vin2",
++			axp313a_dcdc2_ranges, AXP313A_DCDC23_NUM_VOLTAGES,
++			AXP313A_DCDC2_CONRTOL, AXP313A_DCDC_V_OUT_MASK,
++			AXP313A_OUTPUT_CONTROL, BIT(1)),
++	AXP_DESC_RANGES(AXP313A, DCDC3, "dcdc3", "vin3",
++			axp313a_dcdc3_ranges, AXP313A_DCDC23_NUM_VOLTAGES,
++			AXP313A_DCDC3_CONRTOL, AXP313A_DCDC_V_OUT_MASK,
++			AXP313A_OUTPUT_CONTROL, BIT(2)),
++	AXP_DESC(AXP313A, ALDO1, "aldo1", "vin1", 500, 3500, 100,
++		 AXP313A_ALDO1_CONRTOL, AXP313A_LDO_V_OUT_MASK,
++		 AXP313A_OUTPUT_CONTROL, BIT(3)),
++	AXP_DESC(AXP313A, DLDO1, "dldo1", "vin1", 500, 3500, 100,
++		 AXP313A_DLDO1_CONRTOL, AXP313A_LDO_V_OUT_MASK,
++		 AXP313A_OUTPUT_CONTROL, BIT(4)),
++	AXP_DESC_FIXED(AXP313A, RTC_LDO, "rtc-ldo", "vin1", 1800),
++};
++
+ /* DCDC ranges shared with AXP813 */
+ static const struct linear_range axp803_dcdc234_ranges[] = {
+ 	REGULATOR_LINEAR_RANGE(500000,
+@@ -1040,6 +1087,15 @@ static int axp20x_set_dcdc_freq(struct p
+ 		def = 3000;
+ 		step = 150;
+ 		break;
++	case AXP313A_ID:
++		/* The DCDC PWM frequency seems to be fixed to 3 MHz. */
++		if (dcdcfreq != 0) {
++			dev_err(&pdev->dev,
++				"DCDC frequency on AXP313a is fixed to 3 MHz.\n");
++			return -EINVAL;
++		}
++
++		return 0;
+ 	default:
+ 		dev_err(&pdev->dev,
+ 			"Setting DCDC frequency for unsupported AXP variant\n");
+@@ -1232,6 +1288,10 @@ static int axp20x_regulator_probe(struct
+ 		drivevbus = of_property_read_bool(pdev->dev.parent->of_node,
+ 						  "x-powers,drive-vbus-en");
+ 		break;
++	case AXP313A_ID:
++		regulators = axp313a_regulators;
++		nregulators = AXP313A_REG_ID_MAX;
++		break;
+ 	case AXP803_ID:
+ 		regulators = axp803_regulators;
+ 		nregulators = AXP803_REG_ID_MAX;
diff --git a/target/linux/starfive/patches-6.1/0118-driver-regulator-axp20x-Support-AXP15060-variant.patch b/target/linux/generic/backport-6.1/886-v6.5-regulator-axp20x-Add-AXP15060-support.patch
similarity index 74%
rename from target/linux/starfive/patches-6.1/0118-driver-regulator-axp20x-Support-AXP15060-variant.patch
rename to target/linux/generic/backport-6.1/886-v6.5-regulator-axp20x-Add-AXP15060-support.patch
index ccb277b3a0..6af09204af 100644
--- a/target/linux/starfive/patches-6.1/0118-driver-regulator-axp20x-Support-AXP15060-variant.patch
+++ b/target/linux/generic/backport-6.1/886-v6.5-regulator-axp20x-Add-AXP15060-support.patch
@@ -1,30 +1,35 @@
-From 1b017f3376a5df4a2cd5a120c16723e777fc9a36 Mon Sep 17 00:00:00 2001
-From: "ziv.xu" <ziv.xu at starfive.com>
-Date: Fri, 4 Aug 2023 13:55:23 +0800
-Subject: [PATCH 118/122] driver: regulator: axp20x: Support AXP15060 variant.
+From 9e72869d0fe12aba8cd489e485d93912b3f5c248 Mon Sep 17 00:00:00 2001
+From: Shengyu Qu <wiagn233 at outlook.com>
+Date: Wed, 24 May 2023 01:00:12 +0100
+Subject: [PATCH] regulator: axp20x: Add AXP15060 support
 
-Add axp15060 variant support to axp20x
+The AXP15060 is a typical I2C-controlled PMIC, seen on multiple boards
+with different default register value. Current driver is tested on
+Starfive Visionfive 2.
 
-Signed-off-by: ziv.xu <ziv.xu at starfive.com>
+The RTCLDO is fixed, and cannot even be turned on or off. On top of
+that, its voltage is customisable (either 1.8V or 3.3V). We pretend it's
+a fixed 1.8V regulator since other AXP driver also do like this. Also,
+BSP code ignores this regulator and it's not used according to VF2
+schematic.
+
+Describe the AXP15060's voltage settings and switch registers, how the
+voltages are encoded, and connect this to the MFD device via its
+regulator ID.
+
+Signed-off-by: Shengyu Qu <wiagn233 at outlook.com>
+Signed-off-by: Andre Przywara <andre.przywara at arm.com>
+Reviewed-by: Mark Brown <broonie at kernel.org>
+Tested-by: Shengyu Qu <wiagn233 at outlook.com>
+Link: https://lore.kernel.org/r/20230524000012.15028-4-andre.przywara at arm.com
+Signed-off-by: Mark Brown <broonie at kernel.org>
 ---
- drivers/regulator/axp20x-regulator.c | 291 ++++++++++++++++++++++++++-
- 1 file changed, 283 insertions(+), 8 deletions(-)
+ drivers/regulator/axp20x-regulator.c | 232 +++++++++++++++++++++++++--
+ 1 file changed, 223 insertions(+), 9 deletions(-)
 
 --- a/drivers/regulator/axp20x-regulator.c
 +++ b/drivers/regulator/axp20x-regulator.c
-@@ -134,6 +134,11 @@
- #define AXP22X_PWR_OUT_DLDO4_MASK	BIT_MASK(6)
- #define AXP22X_PWR_OUT_ALDO3_MASK	BIT_MASK(7)
- 
-+#define AXP313A_DCDC1_NUM_VOLTAGES	107
-+#define AXP313A_DCDC23_NUM_VOLTAGES	88
-+#define AXP313A_DCDC_V_OUT_MASK		GENMASK(6, 0)
-+#define AXP313A_LDO_V_OUT_MASK		GENMASK(4, 0)
-+
- #define AXP803_PWR_OUT_DCDC1_MASK	BIT_MASK(0)
- #define AXP803_PWR_OUT_DCDC2_MASK	BIT_MASK(1)
- #define AXP803_PWR_OUT_DCDC3_MASK	BIT_MASK(2)
-@@ -270,6 +275,74 @@
+@@ -275,6 +275,74 @@
  
  #define AXP813_PWR_OUT_DCDC7_MASK	BIT_MASK(6)
  
@@ -99,56 +104,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  #define AXP_DESC_IO(_family, _id, _match, _supply, _min, _max, _step, _vreg,	\
  		    _vmask, _ereg, _emask, _enable_val, _disable_val)		\
  	[_family##_##_id] = {							\
-@@ -638,6 +711,48 @@ static const struct regulator_desc axp22
- 	.ops		= &axp20x_ops_sw,
- };
- 
-+static const struct linear_range axp313a_dcdc1_ranges[] = {
-+	REGULATOR_LINEAR_RANGE(500000,   0,  70,  10000),
-+	REGULATOR_LINEAR_RANGE(1220000, 71,  87,  20000),
-+	REGULATOR_LINEAR_RANGE(1600000, 88, 106, 100000),
-+};
-+
-+static const struct linear_range axp313a_dcdc2_ranges[] = {
-+	REGULATOR_LINEAR_RANGE(500000,   0, 70, 10000),
-+	REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
-+};
-+
-+/*
-+ * This is deviating from the datasheet. The values here are taken from the
-+ * BSP driver and have been confirmed by measurements.
-+ */
-+static const struct linear_range axp313a_dcdc3_ranges[] = {
-+	REGULATOR_LINEAR_RANGE(500000,   0,  70, 10000),
-+	REGULATOR_LINEAR_RANGE(1220000, 71, 102, 20000),
-+};
-+
-+static const struct regulator_desc axp313a_regulators[] = {
-+	AXP_DESC_RANGES(AXP313A, DCDC1, "dcdc1", "vin1",
-+			axp313a_dcdc1_ranges, AXP313A_DCDC1_NUM_VOLTAGES,
-+			AXP313A_DCDC1_CONRTOL, AXP313A_DCDC_V_OUT_MASK,
-+			AXP313A_OUTPUT_CONTROL, BIT(0)),
-+	AXP_DESC_RANGES(AXP313A, DCDC2, "dcdc2", "vin2",
-+			axp313a_dcdc2_ranges, AXP313A_DCDC23_NUM_VOLTAGES,
-+			AXP313A_DCDC2_CONRTOL, AXP313A_DCDC_V_OUT_MASK,
-+			AXP313A_OUTPUT_CONTROL, BIT(1)),
-+	AXP_DESC_RANGES(AXP313A, DCDC3, "dcdc3", "vin3",
-+			axp313a_dcdc3_ranges, AXP313A_DCDC23_NUM_VOLTAGES,
-+			AXP313A_DCDC3_CONRTOL, AXP313A_DCDC_V_OUT_MASK,
-+			AXP313A_OUTPUT_CONTROL, BIT(2)),
-+	AXP_DESC(AXP313A, ALDO1, "aldo1", "vin1", 500, 3500, 100,
-+		 AXP313A_ALDO1_CONRTOL, AXP313A_LDO_V_OUT_MASK,
-+		 AXP313A_OUTPUT_CONTROL, BIT(3)),
-+	AXP_DESC(AXP313A, DLDO1, "dldo1", "vin1", 500, 3500, 100,
-+		 AXP313A_DLDO1_CONRTOL, AXP313A_LDO_V_OUT_MASK,
-+		 AXP313A_OUTPUT_CONTROL, BIT(4)),
-+	AXP_DESC_FIXED(AXP313A, RTC_LDO, "rtc-ldo", "vin1", 1800),
-+};
-+
- /* DCDC ranges shared with AXP813 */
- static const struct linear_range axp803_dcdc234_ranges[] = {
- 	REGULATOR_LINEAR_RANGE(500000,
-@@ -1001,6 +1116,104 @@ static const struct regulator_desc axp81
+@@ -1048,6 +1116,104 @@ static const struct regulator_desc axp81
  		    AXP22X_PWR_OUT_CTRL2, AXP22X_PWR_OUT_DC1SW_MASK),
  };
  
@@ -253,24 +209,20 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
  {
  	struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
-@@ -1040,6 +1253,16 @@ static int axp20x_set_dcdc_freq(struct p
- 		def = 3000;
+@@ -1088,10 +1254,11 @@ static int axp20x_set_dcdc_freq(struct p
  		step = 150;
  		break;
-+	case AXP313A_ID:
+ 	case AXP313A_ID:
 +	case AXP15060_ID:
-+		/* The DCDC PWM frequency seems to be fixed to 3 MHz. */
-+		if (dcdcfreq != 0) {
-+			dev_err(&pdev->dev,
+ 		/* The DCDC PWM frequency seems to be fixed to 3 MHz. */
+ 		if (dcdcfreq != 0) {
+ 			dev_err(&pdev->dev,
+-				"DCDC frequency on AXP313a is fixed to 3 MHz.\n");
 +				"DCDC frequency on this PMIC is fixed to 3 MHz.\n");
-+			return -EINVAL;
-+		}
-+
-+		return 0;
- 	default:
- 		dev_err(&pdev->dev,
- 			"Setting DCDC frequency for unsupported AXP variant\n");
-@@ -1145,6 +1368,15 @@ static int axp20x_set_dcdc_workmode(stru
+ 			return -EINVAL;
+ 		}
+ 
+@@ -1201,6 +1368,15 @@ static int axp20x_set_dcdc_workmode(stru
  		workmode <<= id - AXP813_DCDC1;
  		break;
  
@@ -286,7 +238,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  	default:
  		/* should not happen */
  		WARN_ON(1);
-@@ -1164,7 +1396,7 @@ static bool axp20x_is_polyphase_slave(st
+@@ -1220,7 +1396,7 @@ static bool axp20x_is_polyphase_slave(st
  
  	/*
  	 * Currently in our supported AXP variants, only AXP803, AXP806,
@@ -295,7 +247,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  	 */
  	switch (axp20x->variant) {
  	case AXP803_ID:
-@@ -1196,6 +1428,17 @@ static bool axp20x_is_polyphase_slave(st
+@@ -1252,6 +1428,17 @@ static bool axp20x_is_polyphase_slave(st
  		}
  		break;
  
@@ -313,7 +265,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  	default:
  		return false;
  	}
-@@ -1217,6 +1460,7 @@ static int axp20x_regulator_probe(struct
+@@ -1273,6 +1460,7 @@ static int axp20x_regulator_probe(struct
  	u32 workmode;
  	const char *dcdc1_name = axp22x_regulators[AXP22X_DCDC1].name;
  	const char *dcdc5_name = axp22x_regulators[AXP22X_DCDC5].name;
@@ -321,18 +273,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  	bool drivevbus = false;
  
  	switch (axp20x->variant) {
-@@ -1232,6 +1476,10 @@ static int axp20x_regulator_probe(struct
- 		drivevbus = of_property_read_bool(pdev->dev.parent->of_node,
- 						  "x-powers,drive-vbus-en");
- 		break;
-+	case AXP313A_ID:
-+		regulators = axp313a_regulators;
-+		nregulators = AXP313A_REG_ID_MAX;
-+		break;
- 	case AXP803_ID:
- 		regulators = axp803_regulators;
- 		nregulators = AXP803_REG_ID_MAX;
-@@ -1252,6 +1500,10 @@ static int axp20x_regulator_probe(struct
+@@ -1312,6 +1500,10 @@ static int axp20x_regulator_probe(struct
  		drivevbus = of_property_read_bool(pdev->dev.parent->of_node,
  						  "x-powers,drive-vbus-en");
  		break;
@@ -343,7 +284,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  	default:
  		dev_err(&pdev->dev, "Unsupported AXP variant: %ld\n",
  			axp20x->variant);
-@@ -1278,8 +1530,9 @@ static int axp20x_regulator_probe(struct
+@@ -1338,8 +1530,9 @@ static int axp20x_regulator_probe(struct
  			continue;
  
  		/*
@@ -355,7 +296,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  		 *
  		 * We always register the regulators in proper sequence,
  		 * so the supply names are correctly read. See the last
-@@ -1288,7 +1541,8 @@ static int axp20x_regulator_probe(struct
+@@ -1348,7 +1541,8 @@ static int axp20x_regulator_probe(struct
  		 */
  		if ((regulators == axp22x_regulators && i == AXP22X_DC1SW) ||
  		    (regulators == axp803_regulators && i == AXP803_DC1SW) ||
@@ -365,7 +306,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  			new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
  						GFP_KERNEL);
  			if (!new_desc)
-@@ -1300,7 +1554,8 @@ static int axp20x_regulator_probe(struct
+@@ -1360,7 +1554,8 @@ static int axp20x_regulator_probe(struct
  		}
  
  		if ((regulators == axp22x_regulators && i == AXP22X_DC5LDO) ||
@@ -375,7 +316,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  			new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
  						GFP_KERNEL);
  			if (!new_desc)
-@@ -1311,6 +1566,18 @@ static int axp20x_regulator_probe(struct
+@@ -1371,6 +1566,18 @@ static int axp20x_regulator_probe(struct
  			desc = new_desc;
  		}
  
@@ -394,7 +335,7 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  		rdev = devm_regulator_register(&pdev->dev, desc, &config);
  		if (IS_ERR(rdev)) {
  			dev_err(&pdev->dev, "Failed to register %s\n",
-@@ -1329,19 +1596,26 @@ static int axp20x_regulator_probe(struct
+@@ -1389,19 +1596,26 @@ static int axp20x_regulator_probe(struct
  		}
  
  		/*
@@ -424,11 +365,3 @@ Signed-off-by: ziv.xu <ziv.xu at starfive.com>
  	}
  
  	if (drivevbus) {
-@@ -1364,6 +1638,7 @@ static struct platform_driver axp20x_reg
- 	.probe	= axp20x_regulator_probe,
- 	.driver	= {
- 		.name		= "axp20x-regulator",
-+		.probe_type	= PROBE_PREFER_ASYNCHRONOUS,
- 	},
- };
- 
diff --git a/target/linux/generic/backport-6.1/887-v6.5-mfd-axp20x-Add-support-for-AXP192.patch b/target/linux/generic/backport-6.1/887-v6.5-mfd-axp20x-Add-support-for-AXP192.patch
new file mode 100644
index 0000000000..d75b4e7453
--- /dev/null
+++ b/target/linux/generic/backport-6.1/887-v6.5-mfd-axp20x-Add-support-for-AXP192.patch
@@ -0,0 +1,383 @@
+From 63eeabbc9dbddd7381409feccd9082e5ffabfe59 Mon Sep 17 00:00:00 2001
+From: Aidan MacDonald <aidanmacdonald.0x0 at gmail.com>
+Date: Thu, 11 May 2023 10:26:08 +0100
+Subject: [PATCH] mfd: axp20x: Add support for AXP192
+
+The AXP192 PMIC is similar to the AXP202/AXP209, but with different
+regulators, additional GPIOs, and a different IRQ register layout.
+
+Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0 at gmail.com>
+Link: https://lore.kernel.org/r/20230511092609.76183-1-aidanmacdonald.0x0 at gmail.com
+Signed-off-by: Lee Jones <lee at kernel.org>
+---
+ drivers/mfd/axp20x-i2c.c   |   2 +
+ drivers/mfd/axp20x.c       | 141 +++++++++++++++++++++++++++++++++++++
+ include/linux/mfd/axp20x.h |  84 ++++++++++++++++++++++
+ 3 files changed, 227 insertions(+)
+
+--- a/drivers/mfd/axp20x-i2c.c
++++ b/drivers/mfd/axp20x-i2c.c
+@@ -60,6 +60,7 @@ static void axp20x_i2c_remove(struct i2c
+ #ifdef CONFIG_OF
+ static const struct of_device_id axp20x_i2c_of_match[] = {
+ 	{ .compatible = "x-powers,axp152", .data = (void *)AXP152_ID },
++	{ .compatible = "x-powers,axp192", .data = (void *)AXP192_ID },
+ 	{ .compatible = "x-powers,axp202", .data = (void *)AXP202_ID },
+ 	{ .compatible = "x-powers,axp209", .data = (void *)AXP209_ID },
+ 	{ .compatible = "x-powers,axp221", .data = (void *)AXP221_ID },
+@@ -75,6 +76,7 @@ MODULE_DEVICE_TABLE(of, axp20x_i2c_of_ma
+ 
+ static const struct i2c_device_id axp20x_i2c_id[] = {
+ 	{ "axp152", 0 },
++	{ "axp192", 0 },
+ 	{ "axp202", 0 },
+ 	{ "axp209", 0 },
+ 	{ "axp221", 0 },
+--- a/drivers/mfd/axp20x.c
++++ b/drivers/mfd/axp20x.c
+@@ -34,6 +34,7 @@
+ 
+ static const char * const axp20x_model_names[] = {
+ 	"AXP152",
++	"AXP192",
+ 	"AXP202",
+ 	"AXP209",
+ 	"AXP221",
+@@ -94,6 +95,35 @@ static const struct regmap_access_table
+ 	.n_yes_ranges	= ARRAY_SIZE(axp20x_volatile_ranges),
+ };
+ 
++static const struct regmap_range axp192_writeable_ranges[] = {
++	regmap_reg_range(AXP192_DATACACHE(0), AXP192_DATACACHE(5)),
++	regmap_reg_range(AXP192_PWR_OUT_CTRL, AXP192_IRQ5_STATE),
++	regmap_reg_range(AXP20X_DCDC_MODE, AXP192_N_RSTO_CTRL),
++	regmap_reg_range(AXP20X_CC_CTRL, AXP20X_CC_CTRL),
++};
++
++static const struct regmap_range axp192_volatile_ranges[] = {
++	regmap_reg_range(AXP20X_PWR_INPUT_STATUS, AXP192_USB_OTG_STATUS),
++	regmap_reg_range(AXP192_IRQ1_STATE, AXP192_IRQ4_STATE),
++	regmap_reg_range(AXP192_IRQ5_STATE, AXP192_IRQ5_STATE),
++	regmap_reg_range(AXP20X_ACIN_V_ADC_H, AXP20X_IPSOUT_V_HIGH_L),
++	regmap_reg_range(AXP20X_TIMER_CTRL, AXP20X_TIMER_CTRL),
++	regmap_reg_range(AXP192_GPIO2_0_STATE, AXP192_GPIO2_0_STATE),
++	regmap_reg_range(AXP192_GPIO4_3_STATE, AXP192_GPIO4_3_STATE),
++	regmap_reg_range(AXP192_N_RSTO_CTRL, AXP192_N_RSTO_CTRL),
++	regmap_reg_range(AXP20X_CHRG_CC_31_24, AXP20X_CC_CTRL),
++};
++
++static const struct regmap_access_table axp192_writeable_table = {
++	.yes_ranges	= axp192_writeable_ranges,
++	.n_yes_ranges	= ARRAY_SIZE(axp192_writeable_ranges),
++};
++
++static const struct regmap_access_table axp192_volatile_table = {
++	.yes_ranges	= axp192_volatile_ranges,
++	.n_yes_ranges	= ARRAY_SIZE(axp192_volatile_ranges),
++};
++
+ /* AXP22x ranges are shared with the AXP809, as they cover the same range */
+ static const struct regmap_range axp22x_writeable_ranges[] = {
+ 	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
+@@ -220,6 +250,19 @@ static const struct resource axp152_pek_
+ 	DEFINE_RES_IRQ_NAMED(AXP152_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
+ };
+ 
++static const struct resource axp192_ac_power_supply_resources[] = {
++	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_ACIN_PLUGIN, "ACIN_PLUGIN"),
++	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_ACIN_REMOVAL, "ACIN_REMOVAL"),
++	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_ACIN_OVER_V, "ACIN_OVER_V"),
++};
++
++static const struct resource axp192_usb_power_supply_resources[] = {
++	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_VBUS_PLUGIN, "VBUS_PLUGIN"),
++	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_VBUS_REMOVAL, "VBUS_REMOVAL"),
++	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_VBUS_VALID, "VBUS_VALID"),
++	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_VBUS_NOT_VALID, "VBUS_NOT_VALID"),
++};
++
+ static const struct resource axp20x_ac_power_supply_resources[] = {
+ 	DEFINE_RES_IRQ_NAMED(AXP20X_IRQ_ACIN_PLUGIN, "ACIN_PLUGIN"),
+ 	DEFINE_RES_IRQ_NAMED(AXP20X_IRQ_ACIN_REMOVAL, "ACIN_REMOVAL"),
+@@ -302,6 +345,15 @@ static const struct regmap_config axp152
+ 	.cache_type	= REGCACHE_RBTREE,
+ };
+ 
++static const struct regmap_config axp192_regmap_config = {
++	.reg_bits	= 8,
++	.val_bits	= 8,
++	.wr_table	= &axp192_writeable_table,
++	.volatile_table	= &axp192_volatile_table,
++	.max_register	= AXP20X_CC_CTRL,
++	.cache_type	= REGCACHE_RBTREE,
++};
++
+ static const struct regmap_config axp20x_regmap_config = {
+ 	.reg_bits	= 8,
+ 	.val_bits	= 8,
+@@ -379,6 +431,42 @@ static const struct regmap_irq axp152_re
+ 	INIT_REGMAP_IRQ(AXP152, GPIO0_INPUT,		2, 0),
+ };
+ 
++static const struct regmap_irq axp192_regmap_irqs[] = {
++	INIT_REGMAP_IRQ(AXP192, ACIN_OVER_V,		0, 7),
++	INIT_REGMAP_IRQ(AXP192, ACIN_PLUGIN,		0, 6),
++	INIT_REGMAP_IRQ(AXP192, ACIN_REMOVAL,		0, 5),
++	INIT_REGMAP_IRQ(AXP192, VBUS_OVER_V,		0, 4),
++	INIT_REGMAP_IRQ(AXP192, VBUS_PLUGIN,		0, 3),
++	INIT_REGMAP_IRQ(AXP192, VBUS_REMOVAL,		0, 2),
++	INIT_REGMAP_IRQ(AXP192, VBUS_V_LOW,		0, 1),
++	INIT_REGMAP_IRQ(AXP192, BATT_PLUGIN,		1, 7),
++	INIT_REGMAP_IRQ(AXP192, BATT_REMOVAL,	        1, 6),
++	INIT_REGMAP_IRQ(AXP192, BATT_ENT_ACT_MODE,	1, 5),
++	INIT_REGMAP_IRQ(AXP192, BATT_EXIT_ACT_MODE,	1, 4),
++	INIT_REGMAP_IRQ(AXP192, CHARG,		        1, 3),
++	INIT_REGMAP_IRQ(AXP192, CHARG_DONE,		1, 2),
++	INIT_REGMAP_IRQ(AXP192, BATT_TEMP_HIGH,	        1, 1),
++	INIT_REGMAP_IRQ(AXP192, BATT_TEMP_LOW,	        1, 0),
++	INIT_REGMAP_IRQ(AXP192, DIE_TEMP_HIGH,	        2, 7),
++	INIT_REGMAP_IRQ(AXP192, CHARG_I_LOW,		2, 6),
++	INIT_REGMAP_IRQ(AXP192, DCDC1_V_LONG,	        2, 5),
++	INIT_REGMAP_IRQ(AXP192, DCDC2_V_LONG,	        2, 4),
++	INIT_REGMAP_IRQ(AXP192, DCDC3_V_LONG,	        2, 3),
++	INIT_REGMAP_IRQ(AXP192, PEK_SHORT,		2, 1),
++	INIT_REGMAP_IRQ(AXP192, PEK_LONG,		2, 0),
++	INIT_REGMAP_IRQ(AXP192, N_OE_PWR_ON,		3, 7),
++	INIT_REGMAP_IRQ(AXP192, N_OE_PWR_OFF,	        3, 6),
++	INIT_REGMAP_IRQ(AXP192, VBUS_VALID,		3, 5),
++	INIT_REGMAP_IRQ(AXP192, VBUS_NOT_VALID,	        3, 4),
++	INIT_REGMAP_IRQ(AXP192, VBUS_SESS_VALID,	3, 3),
++	INIT_REGMAP_IRQ(AXP192, VBUS_SESS_END,	        3, 2),
++	INIT_REGMAP_IRQ(AXP192, LOW_PWR_LVL,	        3, 0),
++	INIT_REGMAP_IRQ(AXP192, TIMER,			4, 7),
++	INIT_REGMAP_IRQ(AXP192, GPIO2_INPUT,		4, 2),
++	INIT_REGMAP_IRQ(AXP192, GPIO1_INPUT,		4, 1),
++	INIT_REGMAP_IRQ(AXP192, GPIO0_INPUT,		4, 0),
++};
++
+ static const struct regmap_irq axp20x_regmap_irqs[] = {
+ 	INIT_REGMAP_IRQ(AXP20X, ACIN_OVER_V,		0, 7),
+ 	INIT_REGMAP_IRQ(AXP20X, ACIN_PLUGIN,		0, 6),
+@@ -616,6 +704,32 @@ static const struct regmap_irq_chip axp1
+ 	.num_regs		= 3,
+ };
+ 
++static unsigned int axp192_get_irq_reg(struct regmap_irq_chip_data *data,
++				       unsigned int base, int index)
++{
++	/* linear mapping for IRQ1 to IRQ4 */
++	if (index < 4)
++		return base + index;
++
++	/* handle IRQ5 separately */
++	if (base == AXP192_IRQ1_EN)
++		return AXP192_IRQ5_EN;
++
++	return AXP192_IRQ5_STATE;
++}
++
++static const struct regmap_irq_chip axp192_regmap_irq_chip = {
++	.name			= "axp192_irq_chip",
++	.status_base		= AXP192_IRQ1_STATE,
++	.ack_base		= AXP192_IRQ1_STATE,
++	.unmask_base		= AXP192_IRQ1_EN,
++	.init_ack_masked	= true,
++	.irqs			= axp192_regmap_irqs,
++	.num_irqs		= ARRAY_SIZE(axp192_regmap_irqs),
++	.num_regs		= 5,
++	.get_irq_reg		= axp192_get_irq_reg,
++};
++
+ static const struct regmap_irq_chip axp20x_regmap_irq_chip = {
+ 	.name			= "axp20x_irq_chip",
+ 	.status_base		= AXP20X_IRQ1_STATE,
+@@ -712,6 +826,27 @@ static const struct regmap_irq_chip axp1
+ 	.num_regs		= 2,
+ };
+ 
++static const struct mfd_cell axp192_cells[] = {
++	{
++		.name		= "axp192-adc",
++		.of_compatible	= "x-powers,axp192-adc",
++	}, {
++		.name		= "axp20x-battery-power-supply",
++		.of_compatible	= "x-powers,axp192-battery-power-supply",
++	}, {
++		.name		= "axp20x-ac-power-supply",
++		.of_compatible	= "x-powers,axp202-ac-power-supply",
++		.num_resources	= ARRAY_SIZE(axp192_ac_power_supply_resources),
++		.resources	= axp192_ac_power_supply_resources,
++	}, {
++		.name		= "axp20x-usb-power-supply",
++		.of_compatible	= "x-powers,axp192-usb-power-supply",
++		.num_resources	= ARRAY_SIZE(axp192_usb_power_supply_resources),
++		.resources	= axp192_usb_power_supply_resources,
++	},
++	{	.name		= "axp20x-regulator" },
++};
++
+ static const struct mfd_cell axp20x_cells[] = {
+ 	{
+ 		.name		= "axp20x-gpio",
+@@ -1029,6 +1164,12 @@ int axp20x_match_device(struct axp20x_de
+ 		axp20x->regmap_cfg = &axp152_regmap_config;
+ 		axp20x->regmap_irq_chip = &axp152_regmap_irq_chip;
+ 		break;
++	case AXP192_ID:
++		axp20x->nr_cells = ARRAY_SIZE(axp192_cells);
++		axp20x->cells = axp192_cells;
++		axp20x->regmap_cfg = &axp192_regmap_config;
++		axp20x->regmap_irq_chip = &axp192_regmap_irq_chip;
++		break;
+ 	case AXP202_ID:
+ 	case AXP209_ID:
+ 		axp20x->nr_cells = ARRAY_SIZE(axp20x_cells);
+--- a/include/linux/mfd/axp20x.h
++++ b/include/linux/mfd/axp20x.h
+@@ -12,6 +12,7 @@
+ 
+ enum axp20x_variants {
+ 	AXP152_ID = 0,
++	AXP192_ID,
+ 	AXP202_ID,
+ 	AXP209_ID,
+ 	AXP221_ID,
+@@ -26,6 +27,7 @@ enum axp20x_variants {
+ 	NR_AXP20X_VARIANTS,
+ };
+ 
++#define AXP192_DATACACHE(m)		(0x06 + (m))
+ #define AXP20X_DATACACHE(m)		(0x04 + (m))
+ 
+ /* Power supply */
+@@ -47,6 +49,13 @@ enum axp20x_variants {
+ #define AXP152_DCDC_FREQ		0x37
+ #define AXP152_DCDC_MODE		0x80
+ 
++#define AXP192_USB_OTG_STATUS		0x04
++#define AXP192_PWR_OUT_CTRL		0x12
++#define AXP192_DCDC2_V_OUT		0x23
++#define AXP192_DCDC1_V_OUT		0x26
++#define AXP192_DCDC3_V_OUT		0x27
++#define AXP192_LDO2_3_V_OUT		0x28
++
+ #define AXP20X_PWR_INPUT_STATUS		0x00
+ #define AXP20X_PWR_OP_MODE		0x01
+ #define AXP20X_USB_OTG_STATUS		0x02
+@@ -185,6 +194,17 @@ enum axp20x_variants {
+ #define AXP152_IRQ2_STATE		0x49
+ #define AXP152_IRQ3_STATE		0x4a
+ 
++#define AXP192_IRQ1_EN			0x40
++#define AXP192_IRQ2_EN			0x41
++#define AXP192_IRQ3_EN			0x42
++#define AXP192_IRQ4_EN			0x43
++#define AXP192_IRQ1_STATE		0x44
++#define AXP192_IRQ2_STATE		0x45
++#define AXP192_IRQ3_STATE		0x46
++#define AXP192_IRQ4_STATE		0x47
++#define AXP192_IRQ5_EN			0x4a
++#define AXP192_IRQ5_STATE		0x4d
++
+ #define AXP20X_IRQ1_EN			0x40
+ #define AXP20X_IRQ2_EN			0x41
+ #define AXP20X_IRQ3_EN			0x42
+@@ -204,6 +224,11 @@ enum axp20x_variants {
+ #define AXP15060_IRQ2_STATE		0x49
+ 
+ /* ADC */
++#define AXP192_GPIO2_V_ADC_H		0x68
++#define AXP192_GPIO2_V_ADC_L		0x69
++#define AXP192_GPIO3_V_ADC_H		0x6a
++#define AXP192_GPIO3_V_ADC_L		0x6b
++
+ #define AXP20X_ACIN_V_ADC_H		0x56
+ #define AXP20X_ACIN_V_ADC_L		0x57
+ #define AXP20X_ACIN_I_ADC_H		0x58
+@@ -233,6 +258,8 @@ enum axp20x_variants {
+ #define AXP20X_IPSOUT_V_HIGH_L		0x7f
+ 
+ /* Power supply */
++#define AXP192_GPIO30_IN_RANGE		0x85
++
+ #define AXP20X_DCDC_MODE		0x80
+ #define AXP20X_ADC_EN1			0x82
+ #define AXP20X_ADC_EN2			0x83
+@@ -261,6 +288,16 @@ enum axp20x_variants {
+ #define AXP152_PWM1_FREQ_Y		0x9c
+ #define AXP152_PWM1_DUTY_CYCLE		0x9d
+ 
++#define AXP192_GPIO0_CTRL		0x90
++#define AXP192_LDO_IO0_V_OUT		0x91
++#define AXP192_GPIO1_CTRL		0x92
++#define AXP192_GPIO2_CTRL		0x93
++#define AXP192_GPIO2_0_STATE		0x94
++#define AXP192_GPIO4_3_CTRL		0x95
++#define AXP192_GPIO4_3_STATE		0x96
++#define AXP192_GPIO2_0_PULL		0x97
++#define AXP192_N_RSTO_CTRL		0x9e
++
+ #define AXP20X_GPIO0_CTRL		0x90
+ #define AXP20X_LDO5_V_OUT		0x91
+ #define AXP20X_GPIO1_CTRL		0x92
+@@ -341,6 +378,17 @@ enum axp20x_variants {
+ 
+ /* Regulators IDs */
+ enum {
++	AXP192_DCDC1 = 0,
++	AXP192_DCDC2,
++	AXP192_DCDC3,
++	AXP192_LDO1,
++	AXP192_LDO2,
++	AXP192_LDO3,
++	AXP192_LDO_IO0,
++	AXP192_REG_ID_MAX
++};
++
++enum {
+ 	AXP20X_LDO1 = 0,
+ 	AXP20X_LDO2,
+ 	AXP20X_LDO3,
+@@ -531,6 +579,42 @@ enum {
+ 	AXP152_IRQ_GPIO0_INPUT,
+ };
+ 
++enum axp192_irqs {
++	AXP192_IRQ_ACIN_OVER_V = 1,
++	AXP192_IRQ_ACIN_PLUGIN,
++	AXP192_IRQ_ACIN_REMOVAL,
++	AXP192_IRQ_VBUS_OVER_V,
++	AXP192_IRQ_VBUS_PLUGIN,
++	AXP192_IRQ_VBUS_REMOVAL,
++	AXP192_IRQ_VBUS_V_LOW,
++	AXP192_IRQ_BATT_PLUGIN,
++	AXP192_IRQ_BATT_REMOVAL,
++	AXP192_IRQ_BATT_ENT_ACT_MODE,
++	AXP192_IRQ_BATT_EXIT_ACT_MODE,
++	AXP192_IRQ_CHARG,
++	AXP192_IRQ_CHARG_DONE,
++	AXP192_IRQ_BATT_TEMP_HIGH,
++	AXP192_IRQ_BATT_TEMP_LOW,
++	AXP192_IRQ_DIE_TEMP_HIGH,
++	AXP192_IRQ_CHARG_I_LOW,
++	AXP192_IRQ_DCDC1_V_LONG,
++	AXP192_IRQ_DCDC2_V_LONG,
++	AXP192_IRQ_DCDC3_V_LONG,
++	AXP192_IRQ_PEK_SHORT = 22,
++	AXP192_IRQ_PEK_LONG,
++	AXP192_IRQ_N_OE_PWR_ON,
++	AXP192_IRQ_N_OE_PWR_OFF,
++	AXP192_IRQ_VBUS_VALID,
++	AXP192_IRQ_VBUS_NOT_VALID,
++	AXP192_IRQ_VBUS_SESS_VALID,
++	AXP192_IRQ_VBUS_SESS_END,
++	AXP192_IRQ_LOW_PWR_LVL = 31,
++	AXP192_IRQ_TIMER,
++	AXP192_IRQ_GPIO2_INPUT = 37,
++	AXP192_IRQ_GPIO1_INPUT,
++	AXP192_IRQ_GPIO0_INPUT,
++};
++
+ enum {
+ 	AXP20X_IRQ_ACIN_OVER_V = 1,
+ 	AXP20X_IRQ_ACIN_PLUGIN,
diff --git a/target/linux/starfive/patches-6.1/0117-driver-mfd-axp20x-Add-support-for-AXP15060.patch b/target/linux/starfive/patches-6.1/0117-driver-mfd-axp20x-Add-support-for-AXP15060.patch
deleted file mode 100644
index 18ad298065..0000000000
--- a/target/linux/starfive/patches-6.1/0117-driver-mfd-axp20x-Add-support-for-AXP15060.patch
+++ /dev/null
@@ -1,1014 +0,0 @@
-From e62161318f2fe3e396fc31c50d210e99bec83021 Mon Sep 17 00:00:00 2001
-From: "ziv.xu" <ziv.xu at starfive.com>
-Date: Fri, 4 Aug 2023 13:53:10 +0800
-Subject: [PATCH 117/122] driver: mfd: axp20x: Add support for AXP15060
-
-axp20x add support for AXP15060
-
-Signed-off-by: ziv.xu <ziv.xu at starfive.com>
----
- drivers/mfd/axp20x-i2c.c   |   2 +
- drivers/mfd/axp20x.c       | 373 ++++++++++++++++++++++++++++++++++---
- include/linux/mfd/axp20x.h | 218 +++++++++++++++++++++-
- 3 files changed, 557 insertions(+), 36 deletions(-)
-
---- a/drivers/mfd/axp20x-i2c.c
-+++ b/drivers/mfd/axp20x-i2c.c
-@@ -66,6 +66,7 @@ static const struct of_device_id axp20x_
- 	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
- 	{ .compatible = "x-powers,axp803", .data = (void *)AXP803_ID },
- 	{ .compatible = "x-powers,axp806", .data = (void *)AXP806_ID },
-+	{ .compatible = "x-powers,axp15060", .data = (void *)AXP15060_ID },
- 	{ },
- };
- MODULE_DEVICE_TABLE(of, axp20x_i2c_of_match);
-@@ -79,6 +80,7 @@ static const struct i2c_device_id axp20x
- 	{ "axp223", 0 },
- 	{ "axp803", 0 },
- 	{ "axp806", 0 },
-+	{ "axp15060", 0 },
- 	{ },
- };
- MODULE_DEVICE_TABLE(i2c, axp20x_i2c_id);
---- a/drivers/mfd/axp20x.c
-+++ b/drivers/mfd/axp20x.c
-@@ -23,7 +23,7 @@
- #include <linux/mfd/core.h>
- #include <linux/module.h>
- #include <linux/of_device.h>
--#include <linux/pm_runtime.h>
-+#include <linux/reboot.h>
- #include <linux/regmap.h>
- #include <linux/regulator/consumer.h>
- 
-@@ -34,15 +34,18 @@
- 
- static const char * const axp20x_model_names[] = {
- 	"AXP152",
-+	"AXP192",
- 	"AXP202",
- 	"AXP209",
- 	"AXP221",
- 	"AXP223",
- 	"AXP288",
-+	"AXP313a",
- 	"AXP803",
- 	"AXP806",
- 	"AXP809",
- 	"AXP813",
-+	"AXP15060",
- };
- 
- static const struct regmap_range axp152_writeable_ranges[] = {
-@@ -92,6 +95,35 @@ static const struct regmap_access_table
- 	.n_yes_ranges	= ARRAY_SIZE(axp20x_volatile_ranges),
- };
- 
-+static const struct regmap_range axp192_writeable_ranges[] = {
-+	regmap_reg_range(AXP192_DATACACHE(0), AXP192_DATACACHE(5)),
-+	regmap_reg_range(AXP192_PWR_OUT_CTRL, AXP192_IRQ5_STATE),
-+	regmap_reg_range(AXP20X_DCDC_MODE, AXP192_N_RSTO_CTRL),
-+	regmap_reg_range(AXP20X_CC_CTRL, AXP20X_CC_CTRL),
-+};
-+
-+static const struct regmap_range axp192_volatile_ranges[] = {
-+	regmap_reg_range(AXP20X_PWR_INPUT_STATUS, AXP192_USB_OTG_STATUS),
-+	regmap_reg_range(AXP192_IRQ1_STATE, AXP192_IRQ4_STATE),
-+	regmap_reg_range(AXP192_IRQ5_STATE, AXP192_IRQ5_STATE),
-+	regmap_reg_range(AXP20X_ACIN_V_ADC_H, AXP20X_IPSOUT_V_HIGH_L),
-+	regmap_reg_range(AXP20X_TIMER_CTRL, AXP20X_TIMER_CTRL),
-+	regmap_reg_range(AXP192_GPIO2_0_STATE, AXP192_GPIO2_0_STATE),
-+	regmap_reg_range(AXP192_GPIO4_3_STATE, AXP192_GPIO4_3_STATE),
-+	regmap_reg_range(AXP192_N_RSTO_CTRL, AXP192_N_RSTO_CTRL),
-+	regmap_reg_range(AXP20X_CHRG_CC_31_24, AXP20X_CC_CTRL),
-+};
-+
-+static const struct regmap_access_table axp192_writeable_table = {
-+	.yes_ranges	= axp192_writeable_ranges,
-+	.n_yes_ranges	= ARRAY_SIZE(axp192_writeable_ranges),
-+};
-+
-+static const struct regmap_access_table axp192_volatile_table = {
-+	.yes_ranges	= axp192_volatile_ranges,
-+	.n_yes_ranges	= ARRAY_SIZE(axp192_volatile_ranges),
-+};
-+
- /* AXP22x ranges are shared with the AXP809, as they cover the same range */
- static const struct regmap_range axp22x_writeable_ranges[] = {
- 	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
-@@ -119,6 +151,7 @@ static const struct regmap_access_table
- 
- /* AXP288 ranges are shared with the AXP803, as they cover the same range */
- static const struct regmap_range axp288_writeable_ranges[] = {
-+	regmap_reg_range(AXP288_POWER_REASON, AXP288_POWER_REASON),
- 	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ6_STATE),
- 	regmap_reg_range(AXP20X_DCDC_MODE, AXP288_FG_TUNE5),
- };
-@@ -154,6 +187,25 @@ static const struct regmap_range axp806_
- 	regmap_reg_range(AXP806_REG_ADDR_EXT, AXP806_REG_ADDR_EXT),
- };
- 
-+static const struct regmap_range axp313a_writeable_ranges[] = {
-+	regmap_reg_range(AXP313A_ON_INDICATE, AXP313A_IRQ_STATE),
-+};
-+
-+static const struct regmap_range axp313a_volatile_ranges[] = {
-+	regmap_reg_range(AXP313A_SHUTDOWN_CTRL, AXP313A_SHUTDOWN_CTRL),
-+	regmap_reg_range(AXP313A_IRQ_STATE, AXP313A_IRQ_STATE),
-+};
-+
-+static const struct regmap_access_table axp313a_writeable_table = {
-+	.yes_ranges = axp313a_writeable_ranges,
-+	.n_yes_ranges = ARRAY_SIZE(axp313a_writeable_ranges),
-+};
-+
-+static const struct regmap_access_table axp313a_volatile_table = {
-+	.yes_ranges = axp313a_volatile_ranges,
-+	.n_yes_ranges = ARRAY_SIZE(axp313a_volatile_ranges),
-+};
-+
- static const struct regmap_range axp806_volatile_ranges[] = {
- 	regmap_reg_range(AXP20X_IRQ1_STATE, AXP20X_IRQ2_STATE),
- };
-@@ -168,11 +220,49 @@ static const struct regmap_access_table
- 	.n_yes_ranges	= ARRAY_SIZE(axp806_volatile_ranges),
- };
- 
-+static const struct regmap_range axp15060_writeable_ranges[] = {
-+	regmap_reg_range(AXP15060_PWR_OUT_CTRL1, AXP15060_DCDC_MODE_CTRL2),
-+	regmap_reg_range(AXP15060_OUTPUT_MONITOR_DISCHARGE, AXP15060_CPUSLDO_V_CTRL),
-+	regmap_reg_range(AXP15060_PWR_WAKEUP_CTRL, AXP15060_PWR_DISABLE_DOWN_SEQ),
-+	regmap_reg_range(AXP15060_PEK_KEY, AXP15060_PEK_KEY),
-+	regmap_reg_range(AXP15060_IRQ1_EN, AXP15060_IRQ2_EN),
-+	regmap_reg_range(AXP15060_IRQ1_STATE, AXP15060_IRQ2_STATE),
-+};
-+
-+static const struct regmap_range axp15060_volatile_ranges[] = {
-+	regmap_reg_range(AXP15060_STARTUP_SRC, AXP15060_STARTUP_SRC),
-+	regmap_reg_range(AXP15060_PWR_WAKEUP_CTRL, AXP15060_PWR_DISABLE_DOWN_SEQ),
-+	regmap_reg_range(AXP15060_IRQ1_STATE, AXP15060_IRQ2_STATE),
-+};
-+
-+static const struct regmap_access_table axp15060_writeable_table = {
-+	.yes_ranges	= axp15060_writeable_ranges,
-+	.n_yes_ranges	= ARRAY_SIZE(axp15060_writeable_ranges),
-+};
-+
-+static const struct regmap_access_table axp15060_volatile_table = {
-+	.yes_ranges	= axp15060_volatile_ranges,
-+	.n_yes_ranges	= ARRAY_SIZE(axp15060_volatile_ranges),
-+};
-+
- static const struct resource axp152_pek_resources[] = {
- 	DEFINE_RES_IRQ_NAMED(AXP152_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
- 	DEFINE_RES_IRQ_NAMED(AXP152_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
- };
- 
-+static const struct resource axp192_ac_power_supply_resources[] = {
-+	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_ACIN_PLUGIN, "ACIN_PLUGIN"),
-+	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_ACIN_REMOVAL, "ACIN_REMOVAL"),
-+	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_ACIN_OVER_V, "ACIN_OVER_V"),
-+};
-+
-+static const struct resource axp192_usb_power_supply_resources[] = {
-+	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_VBUS_PLUGIN, "VBUS_PLUGIN"),
-+	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_VBUS_REMOVAL, "VBUS_REMOVAL"),
-+	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_VBUS_VALID, "VBUS_VALID"),
-+	DEFINE_RES_IRQ_NAMED(AXP192_IRQ_VBUS_NOT_VALID, "VBUS_NOT_VALID"),
-+};
-+
- static const struct resource axp20x_ac_power_supply_resources[] = {
- 	DEFINE_RES_IRQ_NAMED(AXP20X_IRQ_ACIN_PLUGIN, "ACIN_PLUGIN"),
- 	DEFINE_RES_IRQ_NAMED(AXP20X_IRQ_ACIN_REMOVAL, "ACIN_REMOVAL"),
-@@ -221,6 +311,11 @@ static const struct resource axp288_fuel
- 	DEFINE_RES_IRQ(AXP288_IRQ_WL1),
- };
- 
-+static const struct resource axp313a_pek_resources[] = {
-+	DEFINE_RES_IRQ_NAMED(AXP313A_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
-+	DEFINE_RES_IRQ_NAMED(AXP313A_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
-+};
-+
- static const struct resource axp803_pek_resources[] = {
- 	DEFINE_RES_IRQ_NAMED(AXP803_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
- 	DEFINE_RES_IRQ_NAMED(AXP803_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
-@@ -236,6 +331,11 @@ static const struct resource axp809_pek_
- 	DEFINE_RES_IRQ_NAMED(AXP809_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
- };
- 
-+static const struct resource axp15060_pek_resources[] = {
-+	DEFINE_RES_IRQ_NAMED(AXP15060_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
-+	DEFINE_RES_IRQ_NAMED(AXP15060_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
-+};
-+
- static const struct regmap_config axp152_regmap_config = {
- 	.reg_bits	= 8,
- 	.val_bits	= 8,
-@@ -245,6 +345,15 @@ static const struct regmap_config axp152
- 	.cache_type	= REGCACHE_RBTREE,
- };
- 
-+static const struct regmap_config axp192_regmap_config = {
-+	.reg_bits	= 8,
-+	.val_bits	= 8,
-+	.wr_table	= &axp192_writeable_table,
-+	.volatile_table	= &axp192_volatile_table,
-+	.max_register	= AXP20X_CC_CTRL,
-+	.cache_type	= REGCACHE_RBTREE,
-+};
-+
- static const struct regmap_config axp20x_regmap_config = {
- 	.reg_bits	= 8,
- 	.val_bits	= 8,
-@@ -272,6 +381,15 @@ static const struct regmap_config axp288
- 	.cache_type	= REGCACHE_RBTREE,
- };
- 
-+static const struct regmap_config axp313a_regmap_config = {
-+	.reg_bits = 8,
-+	.val_bits = 8,
-+	.wr_table = &axp313a_writeable_table,
-+	.volatile_table = &axp313a_volatile_table,
-+	.max_register = AXP313A_IRQ_STATE,
-+	.cache_type = REGCACHE_RBTREE,
-+};
-+
- static const struct regmap_config axp806_regmap_config = {
- 	.reg_bits	= 8,
- 	.val_bits	= 8,
-@@ -281,6 +399,15 @@ static const struct regmap_config axp806
- 	.cache_type	= REGCACHE_RBTREE,
- };
- 
-+static const struct regmap_config axp15060_regmap_config = {
-+	.reg_bits	= 8,
-+	.val_bits	= 8,
-+	.wr_table	= &axp15060_writeable_table,
-+	.volatile_table	= &axp15060_volatile_table,
-+	.max_register	= AXP15060_IRQ2_STATE,
-+	.cache_type	= REGCACHE_RBTREE,
-+};
-+
- #define INIT_REGMAP_IRQ(_variant, _irq, _off, _mask)			\
- 	[_variant##_IRQ_##_irq] = { .reg_offset = (_off), .mask = BIT(_mask) }
- 
-@@ -304,6 +431,42 @@ static const struct regmap_irq axp152_re
- 	INIT_REGMAP_IRQ(AXP152, GPIO0_INPUT,		2, 0),
- };
- 
-+static const struct regmap_irq axp192_regmap_irqs[] = {
-+	INIT_REGMAP_IRQ(AXP192, ACIN_OVER_V,		0, 7),
-+	INIT_REGMAP_IRQ(AXP192, ACIN_PLUGIN,		0, 6),
-+	INIT_REGMAP_IRQ(AXP192, ACIN_REMOVAL,		0, 5),
-+	INIT_REGMAP_IRQ(AXP192, VBUS_OVER_V,		0, 4),
-+	INIT_REGMAP_IRQ(AXP192, VBUS_PLUGIN,		0, 3),
-+	INIT_REGMAP_IRQ(AXP192, VBUS_REMOVAL,		0, 2),
-+	INIT_REGMAP_IRQ(AXP192, VBUS_V_LOW,		0, 1),
-+	INIT_REGMAP_IRQ(AXP192, BATT_PLUGIN,		1, 7),
-+	INIT_REGMAP_IRQ(AXP192, BATT_REMOVAL,	        1, 6),
-+	INIT_REGMAP_IRQ(AXP192, BATT_ENT_ACT_MODE,	1, 5),
-+	INIT_REGMAP_IRQ(AXP192, BATT_EXIT_ACT_MODE,	1, 4),
-+	INIT_REGMAP_IRQ(AXP192, CHARG,		        1, 3),
-+	INIT_REGMAP_IRQ(AXP192, CHARG_DONE,		1, 2),
-+	INIT_REGMAP_IRQ(AXP192, BATT_TEMP_HIGH,	        1, 1),
-+	INIT_REGMAP_IRQ(AXP192, BATT_TEMP_LOW,	        1, 0),
-+	INIT_REGMAP_IRQ(AXP192, DIE_TEMP_HIGH,	        2, 7),
-+	INIT_REGMAP_IRQ(AXP192, CHARG_I_LOW,		2, 6),
-+	INIT_REGMAP_IRQ(AXP192, DCDC1_V_LONG,	        2, 5),
-+	INIT_REGMAP_IRQ(AXP192, DCDC2_V_LONG,	        2, 4),
-+	INIT_REGMAP_IRQ(AXP192, DCDC3_V_LONG,	        2, 3),
-+	INIT_REGMAP_IRQ(AXP192, PEK_SHORT,		2, 1),
-+	INIT_REGMAP_IRQ(AXP192, PEK_LONG,		2, 0),
-+	INIT_REGMAP_IRQ(AXP192, N_OE_PWR_ON,		3, 7),
-+	INIT_REGMAP_IRQ(AXP192, N_OE_PWR_OFF,	        3, 6),
-+	INIT_REGMAP_IRQ(AXP192, VBUS_VALID,		3, 5),
-+	INIT_REGMAP_IRQ(AXP192, VBUS_NOT_VALID,	        3, 4),
-+	INIT_REGMAP_IRQ(AXP192, VBUS_SESS_VALID,	3, 3),
-+	INIT_REGMAP_IRQ(AXP192, VBUS_SESS_END,	        3, 2),
-+	INIT_REGMAP_IRQ(AXP192, LOW_PWR_LVL,	        3, 0),
-+	INIT_REGMAP_IRQ(AXP192, TIMER,			4, 7),
-+	INIT_REGMAP_IRQ(AXP192, GPIO2_INPUT,		4, 2),
-+	INIT_REGMAP_IRQ(AXP192, GPIO1_INPUT,		4, 1),
-+	INIT_REGMAP_IRQ(AXP192, GPIO0_INPUT,		4, 0),
-+};
-+
- static const struct regmap_irq axp20x_regmap_irqs[] = {
- 	INIT_REGMAP_IRQ(AXP20X, ACIN_OVER_V,		0, 7),
- 	INIT_REGMAP_IRQ(AXP20X, ACIN_PLUGIN,		0, 6),
-@@ -415,6 +578,16 @@ static const struct regmap_irq axp288_re
- 	INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
- };
- 
-+static const struct regmap_irq axp313a_regmap_irqs[] = {
-+	INIT_REGMAP_IRQ(AXP313A, PEK_RIS_EDGE,		0, 7),
-+	INIT_REGMAP_IRQ(AXP313A, PEK_FAL_EDGE,		0, 6),
-+	INIT_REGMAP_IRQ(AXP313A, PEK_SHORT,		0, 5),
-+	INIT_REGMAP_IRQ(AXP313A, PEK_LONG,		0, 4),
-+	INIT_REGMAP_IRQ(AXP313A, DCDC3_V_LOW,		0, 3),
-+	INIT_REGMAP_IRQ(AXP313A, DCDC2_V_LOW,		0, 2),
-+	INIT_REGMAP_IRQ(AXP313A, DIE_TEMP_HIGH,		0, 0),
-+};
-+
- static const struct regmap_irq axp803_regmap_irqs[] = {
- 	INIT_REGMAP_IRQ(AXP803, ACIN_OVER_V,		0, 7),
- 	INIT_REGMAP_IRQ(AXP803, ACIN_PLUGIN,		0, 6),
-@@ -502,24 +675,65 @@ static const struct regmap_irq axp809_re
- 	INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,		4, 0),
- };
- 
-+static const struct regmap_irq axp15060_regmap_irqs[] = {
-+	INIT_REGMAP_IRQ(AXP15060, DIE_TEMP_HIGH_LV1,	0, 0),
-+	INIT_REGMAP_IRQ(AXP15060, DIE_TEMP_HIGH_LV2,	0, 1),
-+	INIT_REGMAP_IRQ(AXP15060, DCDC1_V_LOW,		0, 2),
-+	INIT_REGMAP_IRQ(AXP15060, DCDC2_V_LOW,		0, 3),
-+	INIT_REGMAP_IRQ(AXP15060, DCDC3_V_LOW,		0, 4),
-+	INIT_REGMAP_IRQ(AXP15060, DCDC4_V_LOW,		0, 5),
-+	INIT_REGMAP_IRQ(AXP15060, DCDC5_V_LOW,		0, 6),
-+	INIT_REGMAP_IRQ(AXP15060, DCDC6_V_LOW,		0, 7),
-+	INIT_REGMAP_IRQ(AXP15060, PEK_LONG,			1, 0),
-+	INIT_REGMAP_IRQ(AXP15060, PEK_SHORT,			1, 1),
-+	INIT_REGMAP_IRQ(AXP15060, GPIO1_INPUT,		1, 2),
-+	INIT_REGMAP_IRQ(AXP15060, PEK_FAL_EDGE,			1, 3),
-+	INIT_REGMAP_IRQ(AXP15060, PEK_RIS_EDGE,			1, 4),
-+	INIT_REGMAP_IRQ(AXP15060, GPIO2_INPUT,		1, 5),
-+};
-+
- static const struct regmap_irq_chip axp152_regmap_irq_chip = {
- 	.name			= "axp152_irq_chip",
- 	.status_base		= AXP152_IRQ1_STATE,
- 	.ack_base		= AXP152_IRQ1_STATE,
--	.mask_base		= AXP152_IRQ1_EN,
--	.mask_invert		= true,
-+	.unmask_base		= AXP152_IRQ1_EN,
- 	.init_ack_masked	= true,
- 	.irqs			= axp152_regmap_irqs,
- 	.num_irqs		= ARRAY_SIZE(axp152_regmap_irqs),
- 	.num_regs		= 3,
- };
- 
-+static unsigned int axp192_get_irq_reg(struct regmap_irq_chip_data *data,
-+				       unsigned int base, int index)
-+{
-+	/* linear mapping for IRQ1 to IRQ4 */
-+	if (index < 4)
-+		return base + index;
-+
-+	/* handle IRQ5 separately */
-+	if (base == AXP192_IRQ1_EN)
-+		return AXP192_IRQ5_EN;
-+
-+	return AXP192_IRQ5_STATE;
-+}
-+
-+static const struct regmap_irq_chip axp192_regmap_irq_chip = {
-+	.name			= "axp192_irq_chip",
-+	.status_base		= AXP192_IRQ1_STATE,
-+	.ack_base		= AXP192_IRQ1_STATE,
-+	.unmask_base		= AXP192_IRQ1_EN,
-+	.init_ack_masked	= true,
-+	.irqs			= axp192_regmap_irqs,
-+	.num_irqs		= ARRAY_SIZE(axp192_regmap_irqs),
-+	.num_regs		= 5,
-+	.get_irq_reg		= axp192_get_irq_reg,
-+};
-+
- static const struct regmap_irq_chip axp20x_regmap_irq_chip = {
- 	.name			= "axp20x_irq_chip",
- 	.status_base		= AXP20X_IRQ1_STATE,
- 	.ack_base		= AXP20X_IRQ1_STATE,
--	.mask_base		= AXP20X_IRQ1_EN,
--	.mask_invert		= true,
-+	.unmask_base		= AXP20X_IRQ1_EN,
- 	.init_ack_masked	= true,
- 	.irqs			= axp20x_regmap_irqs,
- 	.num_irqs		= ARRAY_SIZE(axp20x_regmap_irqs),
-@@ -531,8 +745,7 @@ static const struct regmap_irq_chip axp2
- 	.name			= "axp22x_irq_chip",
- 	.status_base		= AXP20X_IRQ1_STATE,
- 	.ack_base		= AXP20X_IRQ1_STATE,
--	.mask_base		= AXP20X_IRQ1_EN,
--	.mask_invert		= true,
-+	.unmask_base		= AXP20X_IRQ1_EN,
- 	.init_ack_masked	= true,
- 	.irqs			= axp22x_regmap_irqs,
- 	.num_irqs		= ARRAY_SIZE(axp22x_regmap_irqs),
-@@ -543,8 +756,7 @@ static const struct regmap_irq_chip axp2
- 	.name			= "axp288_irq_chip",
- 	.status_base		= AXP20X_IRQ1_STATE,
- 	.ack_base		= AXP20X_IRQ1_STATE,
--	.mask_base		= AXP20X_IRQ1_EN,
--	.mask_invert		= true,
-+	.unmask_base		= AXP20X_IRQ1_EN,
- 	.init_ack_masked	= true,
- 	.irqs			= axp288_regmap_irqs,
- 	.num_irqs		= ARRAY_SIZE(axp288_regmap_irqs),
-@@ -552,12 +764,22 @@ static const struct regmap_irq_chip axp2
- 
- };
- 
-+static const struct regmap_irq_chip axp313a_regmap_irq_chip = {
-+	.name			= "axp313a_irq_chip",
-+	.status_base		= AXP313A_IRQ_STATE,
-+	.ack_base		= AXP313A_IRQ_STATE,
-+	.unmask_base		= AXP313A_IRQ_EN,
-+	.init_ack_masked	= true,
-+	.irqs			= axp313a_regmap_irqs,
-+	.num_irqs		= ARRAY_SIZE(axp313a_regmap_irqs),
-+	.num_regs		= 1,
-+};
-+
- static const struct regmap_irq_chip axp803_regmap_irq_chip = {
- 	.name			= "axp803",
- 	.status_base		= AXP20X_IRQ1_STATE,
- 	.ack_base		= AXP20X_IRQ1_STATE,
--	.mask_base		= AXP20X_IRQ1_EN,
--	.mask_invert		= true,
-+	.unmask_base		= AXP20X_IRQ1_EN,
- 	.init_ack_masked	= true,
- 	.irqs			= axp803_regmap_irqs,
- 	.num_irqs		= ARRAY_SIZE(axp803_regmap_irqs),
-@@ -568,8 +790,7 @@ static const struct regmap_irq_chip axp8
- 	.name			= "axp806",
- 	.status_base		= AXP20X_IRQ1_STATE,
- 	.ack_base		= AXP20X_IRQ1_STATE,
--	.mask_base		= AXP20X_IRQ1_EN,
--	.mask_invert		= true,
-+	.unmask_base		= AXP20X_IRQ1_EN,
- 	.init_ack_masked	= true,
- 	.irqs			= axp806_regmap_irqs,
- 	.num_irqs		= ARRAY_SIZE(axp806_regmap_irqs),
-@@ -580,14 +801,45 @@ static const struct regmap_irq_chip axp8
- 	.name			= "axp809",
- 	.status_base		= AXP20X_IRQ1_STATE,
- 	.ack_base		= AXP20X_IRQ1_STATE,
--	.mask_base		= AXP20X_IRQ1_EN,
--	.mask_invert		= true,
-+	.unmask_base		= AXP20X_IRQ1_EN,
- 	.init_ack_masked	= true,
- 	.irqs			= axp809_regmap_irqs,
- 	.num_irqs		= ARRAY_SIZE(axp809_regmap_irqs),
- 	.num_regs		= 5,
- };
- 
-+static const struct regmap_irq_chip axp15060_regmap_irq_chip = {
-+	.name			= "axp15060",
-+	.status_base		= AXP15060_IRQ1_STATE,
-+	.ack_base		= AXP15060_IRQ1_STATE,
-+	.unmask_base		= AXP15060_IRQ1_EN,
-+	.init_ack_masked	= true,
-+	.irqs			= axp15060_regmap_irqs,
-+	.num_irqs		= ARRAY_SIZE(axp15060_regmap_irqs),
-+	.num_regs		= 2,
-+};
-+
-+static const struct mfd_cell axp192_cells[] = {
-+	{
-+		.name		= "axp192-adc",
-+		.of_compatible	= "x-powers,axp192-adc",
-+	}, {
-+		.name		= "axp20x-battery-power-supply",
-+		.of_compatible	= "x-powers,axp192-battery-power-supply",
-+	}, {
-+		.name		= "axp20x-ac-power-supply",
-+		.of_compatible	= "x-powers,axp202-ac-power-supply",
-+		.num_resources	= ARRAY_SIZE(axp192_ac_power_supply_resources),
-+		.resources	= axp192_ac_power_supply_resources,
-+	}, {
-+		.name		= "axp20x-usb-power-supply",
-+		.of_compatible	= "x-powers,axp192-usb-power-supply",
-+		.num_resources	= ARRAY_SIZE(axp192_usb_power_supply_resources),
-+		.resources	= axp192_usb_power_supply_resources,
-+	},
-+	{	.name		= "axp20x-regulator" },
-+};
-+
- static const struct mfd_cell axp20x_cells[] = {
- 	{
- 		.name		= "axp20x-gpio",
-@@ -683,6 +935,11 @@ static const struct mfd_cell axp152_cell
- 	},
- };
- 
-+static struct mfd_cell axp313a_cells[] = {
-+	MFD_CELL_NAME("axp20x-regulator"),
-+	MFD_CELL_RES("axp313a-pek", axp313a_pek_resources),
-+};
-+
- static const struct resource axp288_adc_resources[] = {
- 	DEFINE_RES_IRQ_NAMED(AXP288_IRQ_GPADC, "GPADC"),
- };
-@@ -832,17 +1089,43 @@ static const struct mfd_cell axp813_cell
- 	},
- };
- 
--static struct axp20x_dev *axp20x_pm_power_off;
--static void axp20x_power_off(void)
-+static const struct mfd_cell axp15060_cells[] = {
-+	{
-+		.name		= "axp221-pek",
-+		.num_resources	= ARRAY_SIZE(axp15060_pek_resources),
-+		.resources	= axp15060_pek_resources,
-+	}, {
-+		.name		= "axp20x-regulator",
-+	},
-+};
-+
-+/* For boards that don't have IRQ line connected to SOC. */
-+static const struct mfd_cell axp_regulator_only_cells[] = {
-+	{
-+		.name		= "axp20x-regulator",
-+	},
-+};
-+
-+static int axp20x_power_off(struct sys_off_data *data)
- {
--	if (axp20x_pm_power_off->variant == AXP288_ID)
--		return;
-+	struct axp20x_dev *axp20x = data->cb_data;
-+	unsigned int shutdown_reg;
- 
--	regmap_write(axp20x_pm_power_off->regmap, AXP20X_OFF_CTRL,
--		     AXP20X_OFF);
-+	switch (axp20x->variant) {
-+	case AXP313A_ID:
-+		shutdown_reg = AXP313A_SHUTDOWN_CTRL;
-+		break;
-+	default:
-+		shutdown_reg = AXP20X_OFF_CTRL;
-+		break;
-+	}
-+
-+	regmap_write(axp20x->regmap, shutdown_reg, AXP20X_OFF);
- 
- 	/* Give capacitors etc. time to drain to avoid kernel panic msg. */
- 	mdelay(500);
-+
-+	return NOTIFY_DONE;
- }
- 
- int axp20x_match_device(struct axp20x_dev *axp20x)
-@@ -874,6 +1157,12 @@ int axp20x_match_device(struct axp20x_de
- 		axp20x->regmap_cfg = &axp152_regmap_config;
- 		axp20x->regmap_irq_chip = &axp152_regmap_irq_chip;
- 		break;
-+	case AXP192_ID:
-+		axp20x->nr_cells = ARRAY_SIZE(axp192_cells);
-+		axp20x->cells = axp192_cells;
-+		axp20x->regmap_cfg = &axp192_regmap_config;
-+		axp20x->regmap_irq_chip = &axp192_regmap_irq_chip;
-+		break;
- 	case AXP202_ID:
- 	case AXP209_ID:
- 		axp20x->nr_cells = ARRAY_SIZE(axp20x_cells);
-@@ -900,6 +1189,12 @@ int axp20x_match_device(struct axp20x_de
- 		axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
- 		axp20x->irq_flags = IRQF_TRIGGER_LOW;
- 		break;
-+	case AXP313A_ID:
-+		axp20x->nr_cells = ARRAY_SIZE(axp313a_cells);
-+		axp20x->cells = axp313a_cells;
-+		axp20x->regmap_cfg = &axp313a_regmap_config;
-+		axp20x->regmap_irq_chip = &axp313a_regmap_irq_chip;
-+		break;
- 	case AXP803_ID:
- 		axp20x->nr_cells = ARRAY_SIZE(axp803_cells);
- 		axp20x->cells = axp803_cells;
-@@ -942,6 +1237,28 @@ int axp20x_match_device(struct axp20x_de
- 		 */
- 		axp20x->regmap_irq_chip = &axp803_regmap_irq_chip;
- 		break;
-+	case AXP15060_ID:
-+		/*
-+		 * Don't register the power key part if there is no interrupt
-+		 * line.
-+		 *
-+		 * Since most use cases of AXP PMICs are Allwinner SOCs, board
-+		 * designers follow Allwinner's reference design and connects
-+		 * IRQ line to SOC, there's no need for those variants to deal
-+		 * with cases that IRQ isn't connected. However, AXP15660 is
-+		 * used by some other vendors' SOCs that didn't connect IRQ
-+		 * line, we need to deal with this case.
-+		 */
-+		if (axp20x->irq > 0) {
-+			axp20x->nr_cells = ARRAY_SIZE(axp15060_cells);
-+			axp20x->cells = axp15060_cells;
-+		} else {
-+			axp20x->nr_cells = ARRAY_SIZE(axp_regulator_only_cells);
-+			axp20x->cells = axp_regulator_only_cells;
-+		}
-+		axp20x->regmap_cfg = &axp15060_regmap_config;
-+		axp20x->regmap_irq_chip = &axp15060_regmap_irq_chip;
-+		break;
- 	default:
- 		dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
- 		return -EINVAL;
-@@ -1009,10 +1326,11 @@ int axp20x_device_probe(struct axp20x_de
- 		return ret;
- 	}
- 
--	if (!pm_power_off) {
--		axp20x_pm_power_off = axp20x;
--		pm_power_off = axp20x_power_off;
--	}
-+	if (axp20x->variant != AXP288_ID)
-+		devm_register_sys_off_handler(axp20x->dev,
-+					      SYS_OFF_MODE_POWER_OFF,
-+					      SYS_OFF_PRIO_DEFAULT,
-+					      axp20x_power_off, axp20x);
- 
- 	dev_info(axp20x->dev, "AXP20X driver loaded\n");
- 
-@@ -1022,11 +1340,6 @@ EXPORT_SYMBOL(axp20x_device_probe);
- 
- void axp20x_device_remove(struct axp20x_dev *axp20x)
- {
--	if (axp20x == axp20x_pm_power_off) {
--		axp20x_pm_power_off = NULL;
--		pm_power_off = NULL;
--	}
--
- 	mfd_remove_devices(axp20x->dev);
- 	regmap_del_irq_chip(axp20x->irq, axp20x->regmap_irqc);
- }
---- a/include/linux/mfd/axp20x.h
-+++ b/include/linux/mfd/axp20x.h
-@@ -12,18 +12,22 @@
- 
- enum axp20x_variants {
- 	AXP152_ID = 0,
-+	AXP192_ID,
- 	AXP202_ID,
- 	AXP209_ID,
- 	AXP221_ID,
- 	AXP223_ID,
- 	AXP288_ID,
-+	AXP313A_ID,
- 	AXP803_ID,
- 	AXP806_ID,
- 	AXP809_ID,
- 	AXP813_ID,
-+	AXP15060_ID,
- 	NR_AXP20X_VARIANTS,
- };
- 
-+#define AXP192_DATACACHE(m)		(0x06 + (m))
- #define AXP20X_DATACACHE(m)		(0x04 + (m))
- 
- /* Power supply */
-@@ -45,6 +49,13 @@ enum axp20x_variants {
- #define AXP152_DCDC_FREQ		0x37
- #define AXP152_DCDC_MODE		0x80
- 
-+#define AXP192_USB_OTG_STATUS		0x04
-+#define AXP192_PWR_OUT_CTRL		0x12
-+#define AXP192_DCDC2_V_OUT		0x23
-+#define AXP192_DCDC1_V_OUT		0x26
-+#define AXP192_DCDC3_V_OUT		0x27
-+#define AXP192_LDO2_3_V_OUT		0x28
-+
- #define AXP20X_PWR_INPUT_STATUS		0x00
- #define AXP20X_PWR_OP_MODE		0x01
- #define AXP20X_USB_OTG_STATUS		0x02
-@@ -91,6 +102,17 @@ enum axp20x_variants {
- #define AXP22X_ALDO3_V_OUT		0x2a
- #define AXP22X_CHRG_CTRL3		0x35
- 
-+#define AXP313A_ON_INDICATE		0x00
-+#define AXP313A_OUTPUT_CONTROL		0x10
-+#define AXP313A_DCDC1_CONRTOL		0x13
-+#define AXP313A_DCDC2_CONRTOL		0x14
-+#define AXP313A_DCDC3_CONRTOL		0x15
-+#define AXP313A_ALDO1_CONRTOL		0x16
-+#define AXP313A_DLDO1_CONRTOL		0x17
-+#define AXP313A_SHUTDOWN_CTRL		0x1a
-+#define AXP313A_IRQ_EN			0x20
-+#define AXP313A_IRQ_STATE		0x21
-+
- #define AXP806_STARTUP_SRC		0x00
- #define AXP806_CHIP_ID			0x03
- #define AXP806_PWR_OUT_CTRL1		0x10
-@@ -131,6 +153,39 @@ enum axp20x_variants {
- /* Other DCDC regulator control registers are the same as AXP803 */
- #define AXP813_DCDC7_V_OUT		0x26
- 
-+#define AXP15060_STARTUP_SRC		0x00
-+#define AXP15060_PWR_OUT_CTRL1		0x10
-+#define AXP15060_PWR_OUT_CTRL2		0x11
-+#define AXP15060_PWR_OUT_CTRL3		0x12
-+#define AXP15060_DCDC1_V_CTRL		0x13
-+#define AXP15060_DCDC2_V_CTRL		0x14
-+#define AXP15060_DCDC3_V_CTRL		0x15
-+#define AXP15060_DCDC4_V_CTRL		0x16
-+#define AXP15060_DCDC5_V_CTRL		0x17
-+#define AXP15060_DCDC6_V_CTRL		0x18
-+#define AXP15060_ALDO1_V_CTRL		0x19
-+#define AXP15060_DCDC_MODE_CTRL1		0x1a
-+#define AXP15060_DCDC_MODE_CTRL2		0x1b
-+#define AXP15060_OUTPUT_MONITOR_DISCHARGE		0x1e
-+#define AXP15060_IRQ_PWROK_VOFF		0x1f
-+#define AXP15060_ALDO2_V_CTRL		0x20
-+#define AXP15060_ALDO3_V_CTRL		0x21
-+#define AXP15060_ALDO4_V_CTRL		0x22
-+#define AXP15060_ALDO5_V_CTRL		0x23
-+#define AXP15060_BLDO1_V_CTRL		0x24
-+#define AXP15060_BLDO2_V_CTRL		0x25
-+#define AXP15060_BLDO3_V_CTRL		0x26
-+#define AXP15060_BLDO4_V_CTRL		0x27
-+#define AXP15060_BLDO5_V_CTRL		0x28
-+#define AXP15060_CLDO1_V_CTRL		0x29
-+#define AXP15060_CLDO2_V_CTRL		0x2a
-+#define AXP15060_CLDO3_V_CTRL		0x2b
-+#define AXP15060_CLDO4_V_CTRL		0x2d
-+#define AXP15060_CPUSLDO_V_CTRL		0x2e
-+#define AXP15060_PWR_WAKEUP_CTRL		0x31
-+#define AXP15060_PWR_DISABLE_DOWN_SEQ		0x32
-+#define AXP15060_PEK_KEY		0x36
-+
- /* Interrupt */
- #define AXP152_IRQ1_EN			0x40
- #define AXP152_IRQ2_EN			0x41
-@@ -139,6 +194,17 @@ enum axp20x_variants {
- #define AXP152_IRQ2_STATE		0x49
- #define AXP152_IRQ3_STATE		0x4a
- 
-+#define AXP192_IRQ1_EN			0x40
-+#define AXP192_IRQ2_EN			0x41
-+#define AXP192_IRQ3_EN			0x42
-+#define AXP192_IRQ4_EN			0x43
-+#define AXP192_IRQ1_STATE		0x44
-+#define AXP192_IRQ2_STATE		0x45
-+#define AXP192_IRQ3_STATE		0x46
-+#define AXP192_IRQ4_STATE		0x47
-+#define AXP192_IRQ5_EN			0x4a
-+#define AXP192_IRQ5_STATE		0x4d
-+
- #define AXP20X_IRQ1_EN			0x40
- #define AXP20X_IRQ2_EN			0x41
- #define AXP20X_IRQ3_EN			0x42
-@@ -152,7 +218,17 @@ enum axp20x_variants {
- #define AXP20X_IRQ5_STATE		0x4c
- #define AXP20X_IRQ6_STATE		0x4d
- 
-+#define AXP15060_IRQ1_EN		0x40
-+#define AXP15060_IRQ2_EN		0x41
-+#define AXP15060_IRQ1_STATE		0x48
-+#define AXP15060_IRQ2_STATE		0x49
-+
- /* ADC */
-+#define AXP192_GPIO2_V_ADC_H		0x68
-+#define AXP192_GPIO2_V_ADC_L		0x69
-+#define AXP192_GPIO3_V_ADC_H		0x6a
-+#define AXP192_GPIO3_V_ADC_L		0x6b
-+
- #define AXP20X_ACIN_V_ADC_H		0x56
- #define AXP20X_ACIN_V_ADC_L		0x57
- #define AXP20X_ACIN_I_ADC_H		0x58
-@@ -182,6 +258,8 @@ enum axp20x_variants {
- #define AXP20X_IPSOUT_V_HIGH_L		0x7f
- 
- /* Power supply */
-+#define AXP192_GPIO30_IN_RANGE		0x85
-+
- #define AXP20X_DCDC_MODE		0x80
- #define AXP20X_ADC_EN1			0x82
- #define AXP20X_ADC_EN2			0x83
-@@ -210,6 +288,16 @@ enum axp20x_variants {
- #define AXP152_PWM1_FREQ_Y		0x9c
- #define AXP152_PWM1_DUTY_CYCLE		0x9d
- 
-+#define AXP192_GPIO0_CTRL		0x90
-+#define AXP192_LDO_IO0_V_OUT		0x91
-+#define AXP192_GPIO1_CTRL		0x92
-+#define AXP192_GPIO2_CTRL		0x93
-+#define AXP192_GPIO2_0_STATE		0x94
-+#define AXP192_GPIO4_3_CTRL		0x95
-+#define AXP192_GPIO4_3_STATE		0x96
-+#define AXP192_GPIO2_0_PULL		0x97
-+#define AXP192_N_RSTO_CTRL		0x9e
-+
- #define AXP20X_GPIO0_CTRL		0x90
- #define AXP20X_LDO5_V_OUT		0x91
- #define AXP20X_GPIO1_CTRL		0x92
-@@ -222,6 +310,8 @@ enum axp20x_variants {
- #define AXP22X_GPIO_STATE		0x94
- #define AXP22X_GPIO_PULL_DOWN		0x95
- 
-+#define AXP15060_CLDO4_GPIO2_MODESET		0x2c
-+
- /* Battery */
- #define AXP20X_CHRG_CC_31_24		0xb0
- #define AXP20X_CHRG_CC_23_16		0xb1
-@@ -288,6 +378,17 @@ enum axp20x_variants {
- 
- /* Regulators IDs */
- enum {
-+	AXP192_DCDC1 = 0,
-+	AXP192_DCDC2,
-+	AXP192_DCDC3,
-+	AXP192_LDO1,
-+	AXP192_LDO2,
-+	AXP192_LDO3,
-+	AXP192_LDO_IO0,
-+	AXP192_REG_ID_MAX
-+};
-+
-+enum {
- 	AXP20X_LDO1 = 0,
- 	AXP20X_LDO2,
- 	AXP20X_LDO3,
-@@ -323,6 +424,16 @@ enum {
- };
- 
- enum {
-+	AXP313A_DCDC1 = 0,
-+	AXP313A_DCDC2,
-+	AXP313A_DCDC3,
-+	AXP313A_ALDO1,
-+	AXP313A_DLDO1,
-+	AXP313A_RTC_LDO,
-+	AXP313A_REG_ID_MAX,
-+};
-+
-+enum {
- 	AXP806_DCDCA = 0,
- 	AXP806_DCDCB,
- 	AXP806_DCDCC,
-@@ -419,6 +530,33 @@ enum {
- 	AXP813_REG_ID_MAX,
- };
- 
-+enum {
-+	AXP15060_DCDC1 = 0,
-+	AXP15060_DCDC2,
-+	AXP15060_DCDC3,
-+	AXP15060_DCDC4,
-+	AXP15060_DCDC5,
-+	AXP15060_DCDC6,
-+	AXP15060_ALDO1,
-+	AXP15060_ALDO2,
-+	AXP15060_ALDO3,
-+	AXP15060_ALDO4,
-+	AXP15060_ALDO5,
-+	AXP15060_BLDO1,
-+	AXP15060_BLDO2,
-+	AXP15060_BLDO3,
-+	AXP15060_BLDO4,
-+	AXP15060_BLDO5,
-+	AXP15060_CLDO1,
-+	AXP15060_CLDO2,
-+	AXP15060_CLDO3,
-+	AXP15060_CLDO4,
-+	AXP15060_CPUSLDO,
-+	AXP15060_SW,
-+	AXP15060_RTC_LDO,
-+	AXP15060_REG_ID_MAX,
-+};
-+
- /* IRQs */
- enum {
- 	AXP152_IRQ_LDO0IN_CONNECT = 1,
-@@ -432,14 +570,51 @@ enum {
- 	AXP152_IRQ_PEK_SHORT,
- 	AXP152_IRQ_PEK_LONG,
- 	AXP152_IRQ_TIMER,
--	AXP152_IRQ_PEK_RIS_EDGE,
-+	/* out of bit order to make sure the press event is handled first */
- 	AXP152_IRQ_PEK_FAL_EDGE,
-+	AXP152_IRQ_PEK_RIS_EDGE,
- 	AXP152_IRQ_GPIO3_INPUT,
- 	AXP152_IRQ_GPIO2_INPUT,
- 	AXP152_IRQ_GPIO1_INPUT,
- 	AXP152_IRQ_GPIO0_INPUT,
- };
- 
-+enum axp192_irqs {
-+	AXP192_IRQ_ACIN_OVER_V = 1,
-+	AXP192_IRQ_ACIN_PLUGIN,
-+	AXP192_IRQ_ACIN_REMOVAL,
-+	AXP192_IRQ_VBUS_OVER_V,
-+	AXP192_IRQ_VBUS_PLUGIN,
-+	AXP192_IRQ_VBUS_REMOVAL,
-+	AXP192_IRQ_VBUS_V_LOW,
-+	AXP192_IRQ_BATT_PLUGIN,
-+	AXP192_IRQ_BATT_REMOVAL,
-+	AXP192_IRQ_BATT_ENT_ACT_MODE,
-+	AXP192_IRQ_BATT_EXIT_ACT_MODE,
-+	AXP192_IRQ_CHARG,
-+	AXP192_IRQ_CHARG_DONE,
-+	AXP192_IRQ_BATT_TEMP_HIGH,
-+	AXP192_IRQ_BATT_TEMP_LOW,
-+	AXP192_IRQ_DIE_TEMP_HIGH,
-+	AXP192_IRQ_CHARG_I_LOW,
-+	AXP192_IRQ_DCDC1_V_LONG,
-+	AXP192_IRQ_DCDC2_V_LONG,
-+	AXP192_IRQ_DCDC3_V_LONG,
-+	AXP192_IRQ_PEK_SHORT = 22,
-+	AXP192_IRQ_PEK_LONG,
-+	AXP192_IRQ_N_OE_PWR_ON,
-+	AXP192_IRQ_N_OE_PWR_OFF,
-+	AXP192_IRQ_VBUS_VALID,
-+	AXP192_IRQ_VBUS_NOT_VALID,
-+	AXP192_IRQ_VBUS_SESS_VALID,
-+	AXP192_IRQ_VBUS_SESS_END,
-+	AXP192_IRQ_LOW_PWR_LVL = 31,
-+	AXP192_IRQ_TIMER,
-+	AXP192_IRQ_GPIO2_INPUT = 37,
-+	AXP192_IRQ_GPIO1_INPUT,
-+	AXP192_IRQ_GPIO0_INPUT,
-+};
-+
- enum {
- 	AXP20X_IRQ_ACIN_OVER_V = 1,
- 	AXP20X_IRQ_ACIN_PLUGIN,
-@@ -472,8 +647,9 @@ enum {
- 	AXP20X_IRQ_LOW_PWR_LVL1,
- 	AXP20X_IRQ_LOW_PWR_LVL2,
- 	AXP20X_IRQ_TIMER,
--	AXP20X_IRQ_PEK_RIS_EDGE,
-+	/* out of bit order to make sure the press event is handled first */
- 	AXP20X_IRQ_PEK_FAL_EDGE,
-+	AXP20X_IRQ_PEK_RIS_EDGE,
- 	AXP20X_IRQ_GPIO3_INPUT,
- 	AXP20X_IRQ_GPIO2_INPUT,
- 	AXP20X_IRQ_GPIO1_INPUT,
-@@ -502,8 +678,9 @@ enum axp22x_irqs {
- 	AXP22X_IRQ_LOW_PWR_LVL1,
- 	AXP22X_IRQ_LOW_PWR_LVL2,
- 	AXP22X_IRQ_TIMER,
--	AXP22X_IRQ_PEK_RIS_EDGE,
-+	/* out of bit order to make sure the press event is handled first */
- 	AXP22X_IRQ_PEK_FAL_EDGE,
-+	AXP22X_IRQ_PEK_RIS_EDGE,
- 	AXP22X_IRQ_GPIO1_INPUT,
- 	AXP22X_IRQ_GPIO0_INPUT,
- };
-@@ -545,6 +722,16 @@ enum axp288_irqs {
- 	AXP288_IRQ_BC_USB_CHNG,
- };
- 
-+enum axp313a_irqs {
-+	AXP313A_IRQ_DIE_TEMP_HIGH,
-+	AXP313A_IRQ_DCDC2_V_LOW = 2,
-+	AXP313A_IRQ_DCDC3_V_LOW,
-+	AXP313A_IRQ_PEK_LONG,
-+	AXP313A_IRQ_PEK_SHORT,
-+	AXP313A_IRQ_PEK_FAL_EDGE,
-+	AXP313A_IRQ_PEK_RIS_EDGE,
-+};
-+
- enum axp803_irqs {
- 	AXP803_IRQ_ACIN_OVER_V = 1,
- 	AXP803_IRQ_ACIN_PLUGIN,
-@@ -571,8 +758,9 @@ enum axp803_irqs {
- 	AXP803_IRQ_LOW_PWR_LVL1,
- 	AXP803_IRQ_LOW_PWR_LVL2,
- 	AXP803_IRQ_TIMER,
--	AXP803_IRQ_PEK_RIS_EDGE,
-+	/* out of bit order to make sure the press event is handled first */
- 	AXP803_IRQ_PEK_FAL_EDGE,
-+	AXP803_IRQ_PEK_RIS_EDGE,
- 	AXP803_IRQ_PEK_SHORT,
- 	AXP803_IRQ_PEK_LONG,
- 	AXP803_IRQ_PEK_OVER_OFF,
-@@ -623,8 +811,9 @@ enum axp809_irqs {
- 	AXP809_IRQ_LOW_PWR_LVL1,
- 	AXP809_IRQ_LOW_PWR_LVL2,
- 	AXP809_IRQ_TIMER,
--	AXP809_IRQ_PEK_RIS_EDGE,
-+	/* out of bit order to make sure the press event is handled first */
- 	AXP809_IRQ_PEK_FAL_EDGE,
-+	AXP809_IRQ_PEK_RIS_EDGE,
- 	AXP809_IRQ_PEK_SHORT,
- 	AXP809_IRQ_PEK_LONG,
- 	AXP809_IRQ_PEK_OVER_OFF,
-@@ -632,6 +821,23 @@ enum axp809_irqs {
- 	AXP809_IRQ_GPIO0_INPUT,
- };
- 
-+enum axp15060_irqs {
-+	AXP15060_IRQ_DIE_TEMP_HIGH_LV1 = 1,
-+	AXP15060_IRQ_DIE_TEMP_HIGH_LV2,
-+	AXP15060_IRQ_DCDC1_V_LOW,
-+	AXP15060_IRQ_DCDC2_V_LOW,
-+	AXP15060_IRQ_DCDC3_V_LOW,
-+	AXP15060_IRQ_DCDC4_V_LOW,
-+	AXP15060_IRQ_DCDC5_V_LOW,
-+	AXP15060_IRQ_DCDC6_V_LOW,
-+	AXP15060_IRQ_PEK_LONG,
-+	AXP15060_IRQ_PEK_SHORT,
-+	AXP15060_IRQ_GPIO1_INPUT,
-+	AXP15060_IRQ_PEK_FAL_EDGE,
-+	AXP15060_IRQ_PEK_RIS_EDGE,
-+	AXP15060_IRQ_GPIO2_INPUT,
-+};
-+
- struct axp20x_dev {
- 	struct device			*dev;
- 	int				irq;
-@@ -698,4 +904,4 @@ int axp20x_device_probe(struct axp20x_de
-  */
- void axp20x_device_remove(struct axp20x_dev *axp20x);
- 
--#endif /* __LINUX_MFD_AXP20X_H */
-+#endif /* __LINUX_MFD_AXP20X_H */
-\ No newline at end of file



From lede-commits at lists.infradead.org  Thu Mar 28 05:06:47 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 28 Mar 2024 08:06:47 -0400
Subject: [openwrt/openwrt]  airoha: default to kernel 6.1
In-Reply-To: <171162760772.813595.5697911381982477707@git-01.infra.openwrt.org>
References: <171162760772.813595.5697911381982477707@git-01.infra.openwrt.org>
Message-ID: <mailman.20930.1711627616.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cbc2664d1d33d33760516516b49915787d33470d

commit cbc2664d1d33d33760516516b49915787d33470d
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 26 12:56:34 2024 +0100

    airoha: default to kernel 6.1
    
    6.1 has been present as testing for a while now, so default to it.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/airoha/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/airoha/Makefile b/target/linux/airoha/Makefile
index 5906a1307e..0a66ef839c 100644
--- a/target/linux/airoha/Makefile
+++ b/target/linux/airoha/Makefile
@@ -6,8 +6,7 @@ BOARDNAME:=Airoha ARM
 CPU_TYPE:=cortex-a7
 FEATURES:=dt squashfs nand ramdisk gpio source-only
 
-KERNEL_PATCHVER:=5.15
-KERNEL_TESTING_PATCHVER:=6.1
+KERNEL_PATCHVER:=6.1
 
 include $(INCLUDE_DIR)/target.mk
 



From lede-commits at lists.infradead.org  Thu Mar 28 05:06:48 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Thu, 28 Mar 2024 08:06:48 -0400
Subject: [openwrt/openwrt]  airoha: remove 5.15 support
In-Reply-To: <171162760772.813595.5697911381982477707@git-01.infra.openwrt.org>
References: <171162760772.813595.5697911381982477707@git-01.infra.openwrt.org>
Message-ID: <mailman.20931.1711627618.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fd58b1a8bcbd240b930db96f94e37ddf1b284827

commit fd58b1a8bcbd240b930db96f94e37ddf1b284827
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Tue Mar 26 12:57:30 2024 +0100

    airoha: remove 5.15 support
    
    Now that 6.1 is default, remove 5.15 support.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/airoha/config-5.15                    | 271 ----------------
 .../files-5.15/arch/arm/mach-airoha/Makefile       |   2 -
 .../files-5.15/arch/arm/mach-airoha/airoha.c       |  16 -
 .../airoha/files-5.15/drivers/clk/clk-en7523.c     | 351 ---------------------
 .../airoha/files-5.15/drivers/gpio/gpio-en7523.c   | 137 --------
 .../include/dt-bindings/clock/en7523-clk.h         |  17 -
 .../patches-5.15/0001-add-airoha-platform.patch    |  31 --
 .../0002-add-airoha-en7523-clk-driver.patch        |  28 --
 .../0003-add-airoha-en7523-gpio-driver.patch       |  29 --
 ...uncompress-Parse-linux-usable-memory-rang.patch | 107 -------
 ...port-for-the-Airoha-EN7523-SoC-SPI-contro.patch | 341 --------------------
 ...I-mediatek-Allow-building-for-ARCH_AIROHA.patch |  31 --
 12 files changed, 1361 deletions(-)

diff --git a/target/linux/airoha/config-5.15 b/target/linux/airoha/config-5.15
deleted file mode 100644
index 259ab03521..0000000000
--- a/target/linux/airoha/config-5.15
+++ /dev/null
@@ -1,271 +0,0 @@
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_AIROHA=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-CONFIG_ARCH_MULTIPLATFORM=y
-CONFIG_ARCH_MULTI_V6_V7=y
-CONFIG_ARCH_MULTI_V7=y
-CONFIG_ARCH_NR_GPIO=0
-CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
-CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM=y
-CONFIG_ARM_AMBA=y
-CONFIG_ARM_ARCH_TIMER=y
-CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_ARM_CRYPTO=y
-CONFIG_ARM_GIC=y
-CONFIG_ARM_GIC_V3=y
-CONFIG_ARM_GIC_V3_ITS=y
-CONFIG_ARM_GIC_V3_ITS_PCI=y
-CONFIG_ARM_HAS_SG_CHAIN=y
-CONFIG_ARM_HEAVY_MB=y
-# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_PATCH_IDIV=y
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_ARM_PSCI=y
-CONFIG_ARM_PSCI_FW=y
-# CONFIG_ARM_SMMU is not set
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_UNWIND=y
-CONFIG_ARM_VIRT_EXT=y
-CONFIG_ATAGS=y
-CONFIG_AUTO_ZRELADDR=y
-CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_BLK_MQ_PCI=y
-CONFIG_BLK_PM=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-CONFIG_CACHE_L2X0=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-CONFIG_COMMON_CLK=y
-CONFIG_COMMON_CLK_EN7523=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_PM=y
-CONFIG_CPU_RMAP=y
-CONFIG_CPU_SPECTRE=y
-CONFIG_CPU_THUMB_CAPABLE=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_V7=y
-CONFIG_CRC16=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_HASH_INFO=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LZO=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_ZSTD=y
-CONFIG_DCACHE_WORD_ACCESS=y
-CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
-CONFIG_DEBUG_MISC=y
-CONFIG_DMA_OPS=y
-CONFIG_DMA_REMAP=y
-CONFIG_DTC=y
-CONFIG_EDAC_ATOMIC_SCRUB=y
-CONFIG_EDAC_SUPPORT=y
-CONFIG_FIXED_PHY=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_GENERIC_ARCH_TOPOLOGY=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_CPU_VULNERABILITIES=y
-CONFIG_GENERIC_EARLY_IOREMAP=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IDLE_POLL_SETUP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
-CONFIG_GENERIC_IRQ_MIGRATION=y
-CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
-CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
-CONFIG_GENERIC_MSI_IRQ=y
-CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PHY=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_PINCTRL_GROUPS=y
-CONFIG_GENERIC_PINMUX_FUNCTIONS=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_STRNCPY_FROM_USER=y
-CONFIG_GENERIC_STRNLEN_USER=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GENERIC_VDSO_32=y
-CONFIG_GPIOLIB_IRQCHIP=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_EN7523=y
-CONFIG_GPIO_GENERIC=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-# CONFIG_HARDEN_BRANCH_HISTORY is not set
-# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HAVE_SMP=y
-CONFIG_HOTPLUG_CPU=y
-CONFIG_HW_RANDOM=y
-CONFIG_HZ_FIXED=0
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_IOMMU_DEBUGFS is not set
-# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
-# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
-CONFIG_IOMMU_SUPPORT=y
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_DOMAIN_HIERARCHY=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_TIME_ACCOUNTING=y
-CONFIG_IRQ_WORK=y
-# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_LOCK_SPIN_ON_OWNER=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGHT_HAVE_CACHE_L2X0=y
-CONFIG_MIGRATION=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_MTD_NAND_CORE=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_ECC_SW_HAMMING=y
-CONFIG_MTD_SPI_NAND=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPLIT_FIRMWARE=y
-CONFIG_MTD_SPLIT_FIT_FW=y
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_BEB_LIMIT=20
-CONFIG_MTD_UBI_BLOCK=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MUTEX_SPIN_ON_OWNER=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NET_FLOW_LIMIT=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NLS=y
-CONFIG_NO_HZ_COMMON=y
-CONFIG_NO_HZ_IDLE=y
-CONFIG_NR_CPUS=2
-CONFIG_NVMEM=y
-CONFIG_NVMEM_SYSFS=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_OLD_SIGACTION=y
-CONFIG_OLD_SIGSUSPEND3=y
-CONFIG_OUTER_CACHE=y
-CONFIG_OUTER_CACHE_SYNC=y
-CONFIG_PADATA=y
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_PARTITION_PERCPU=y
-CONFIG_PCI=y
-CONFIG_PCIEAER=y
-CONFIG_PCIEPORTBUS=y
-CONFIG_PCIE_MEDIATEK=y
-CONFIG_PCIE_PME=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_DOMAINS_GENERIC=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_MSI_IRQ_DOMAIN=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_PINCTRL=y
-CONFIG_PM=y
-CONFIG_PM_CLK=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_PWM=y
-CONFIG_PWM_SYSFS=y
-CONFIG_RAS=y
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RFS_ACCEL=y
-CONFIG_RPS=y
-CONFIG_RWSEM_SPIN_ON_OWNER=y
-CONFIG_SCSI=y
-CONFIG_SCSI_COMMON=y
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_FSL=y
-# CONFIG_SERIAL_8250_SHARE_IRQ is not set
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SGL_ALLOC=y
-CONFIG_SG_POOL=y
-CONFIG_SMP=y
-CONFIG_SMP_ON_UP=y
-CONFIG_SOCK_RX_QUEUE_MAPPING=y
-CONFIG_SPARSE_IRQ=y
-CONFIG_SPI=y
-CONFIG_SPI_AIROHA_EN7523=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-CONFIG_SRCU=y
-CONFIG_STACKTRACE=y
-# CONFIG_SWAP is not set
-CONFIG_SWPHY=y
-CONFIG_SWP_EMULATE=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TREE_RCU=y
-CONFIG_TREE_SRCU=y
-CONFIG_UBIFS_FS=y
-CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-CONFIG_UNWINDER_ARM=y
-CONFIG_USB=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_XHCI_HCD=y
-# CONFIG_USB_XHCI_PLATFORM is not set
-CONFIG_USE_OF=y
-# CONFIG_VFP is not set
-CONFIG_WATCHDOG_CORE=y
-# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
-CONFIG_XPS=y
-CONFIG_XXHASH=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_BCJ=y
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZSTD_COMPRESS=y
-CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/airoha/files-5.15/arch/arm/mach-airoha/Makefile b/target/linux/airoha/files-5.15/arch/arm/mach-airoha/Makefile
deleted file mode 100644
index a5857d0d02..0000000000
--- a/target/linux/airoha/files-5.15/arch/arm/mach-airoha/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-obj-y			+= airoha.o
diff --git a/target/linux/airoha/files-5.15/arch/arm/mach-airoha/airoha.c b/target/linux/airoha/files-5.15/arch/arm/mach-airoha/airoha.c
deleted file mode 100644
index ea23b5abb4..0000000000
--- a/target/linux/airoha/files-5.15/arch/arm/mach-airoha/airoha.c
+++ /dev/null
@@ -1,16 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Device Tree support for Airoha SoCs
- *
- * Copyright (c) 2022 Felix Fietkau <nbd at nbd.name>
- */
-#include <asm/mach/arch.h>
-
-static const char * const airoha_board_dt_compat[] = {
-	"airoha,en7523",
-	NULL,
-};
-
-DT_MACHINE_START(MEDIATEK_DT, "Airoha Cortex-A53 (Device Tree)")
-	.dt_compat	= airoha_board_dt_compat,
-MACHINE_END
diff --git a/target/linux/airoha/files-5.15/drivers/clk/clk-en7523.c b/target/linux/airoha/files-5.15/drivers/clk/clk-en7523.c
deleted file mode 100644
index 29f0126cbd..0000000000
--- a/target/linux/airoha/files-5.15/drivers/clk/clk-en7523.c
+++ /dev/null
@@ -1,351 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-
-#include <linux/delay.h>
-#include <linux/clk-provider.h>
-#include <linux/of.h>
-#include <linux/of_address.h>
-#include <linux/of_device.h>
-#include <linux/platform_device.h>
-#include <dt-bindings/clock/en7523-clk.h>
-
-#define REG_PCI_CONTROL			0x88
-#define   REG_PCI_CONTROL_PERSTOUT	BIT(29)
-#define   REG_PCI_CONTROL_PERSTOUT1	BIT(26)
-#define   REG_PCI_CONTROL_REFCLK_EN1	BIT(22)
-#define REG_GSW_CLK_DIV_SEL		0x1b4
-#define REG_EMI_CLK_DIV_SEL		0x1b8
-#define REG_BUS_CLK_DIV_SEL		0x1bc
-#define REG_SPI_CLK_DIV_SEL		0x1c4
-#define REG_SPI_CLK_FREQ_SEL		0x1c8
-#define REG_NPU_CLK_DIV_SEL		0x1fc
-#define REG_CRYPTO_CLKSRC		0x200
-#define REG_RESET_CONTROL		0x834
-#define   REG_RESET_CONTROL_PCIEHB	BIT(29)
-#define   REG_RESET_CONTROL_PCIE1	BIT(27)
-#define   REG_RESET_CONTROL_PCIE2	BIT(26)
-
-struct en_clk_desc {
-	int id;
-	const char *name;
-	u32 base_reg;
-	u8 base_bits;
-	u8 base_shift;
-	union {
-		const unsigned int *base_values;
-		unsigned int base_value;
-	};
-	size_t n_base_values;
-
-	u16 div_reg;
-	u8 div_bits;
-	u8 div_shift;
-	u16 div_val0;
-	u8 div_step;
-};
-
-struct en_clk_gate {
-	void __iomem *base;
-	struct clk_hw hw;
-};
-
-static const u32 gsw_base[] = { 400000000, 500000000 };
-static const u32 emi_base[] = { 333000000, 400000000 };
-static const u32 bus_base[] = { 500000000, 540000000 };
-static const u32 slic_base[] = { 100000000, 3125000 };
-static const u32 npu_base[] = { 333000000, 400000000, 500000000 };
-
-static const struct en_clk_desc en7523_base_clks[] = {
-	{
-		.id = EN7523_CLK_GSW,
-		.name = "gsw",
-
-		.base_reg = REG_GSW_CLK_DIV_SEL,
-		.base_bits = 1,
-		.base_shift = 8,
-		.base_values = gsw_base,
-		.n_base_values = ARRAY_SIZE(gsw_base),
-
-		.div_bits = 3,
-		.div_shift = 0,
-		.div_step = 1,
-	}, {
-		.id = EN7523_CLK_EMI,
-		.name = "emi",
-
-		.base_reg = REG_EMI_CLK_DIV_SEL,
-		.base_bits = 1,
-		.base_shift = 8,
-		.base_values = emi_base,
-		.n_base_values = ARRAY_SIZE(emi_base),
-
-		.div_bits = 3,
-		.div_shift = 0,
-		.div_step = 1,
-	}, {
-		.id = EN7523_CLK_BUS,
-		.name = "bus",
-
-		.base_reg = REG_BUS_CLK_DIV_SEL,
-		.base_bits = 1,
-		.base_shift = 8,
-		.base_values = bus_base,
-		.n_base_values = ARRAY_SIZE(bus_base),
-
-		.div_bits = 3,
-		.div_shift = 0,
-		.div_step = 1,
-	}, {
-		.id = EN7523_CLK_SLIC,
-		.name = "slic",
-
-		.base_reg = REG_SPI_CLK_FREQ_SEL,
-		.base_bits = 1,
-		.base_shift = 0,
-		.base_values = slic_base,
-		.n_base_values = ARRAY_SIZE(slic_base),
-
-		.div_reg = REG_SPI_CLK_DIV_SEL,
-		.div_bits = 5,
-		.div_shift = 24,
-		.div_val0 = 20,
-		.div_step = 2,
-	}, {
-		.id = EN7523_CLK_SPI,
-		.name = "spi",
-
-		.base_reg = REG_SPI_CLK_DIV_SEL,
-
-		.base_value = 400000000,
-
-		.div_bits = 5,
-		.div_shift = 8,
-		.div_val0 = 40,
-		.div_step = 2,
-	}, {
-		.id = EN7523_CLK_NPU,
-		.name = "npu",
-
-		.base_reg = REG_NPU_CLK_DIV_SEL,
-		.base_bits = 2,
-		.base_shift = 8,
-		.base_values = npu_base,
-		.n_base_values = ARRAY_SIZE(npu_base),
-
-		.div_bits = 3,
-		.div_shift = 0,
-		.div_step = 1,
-	}, {
-		.id = EN7523_CLK_CRYPTO,
-		.name = "crypto",
-
-		.base_reg = REG_CRYPTO_CLKSRC,
-		.base_bits = 1,
-		.base_shift = 8,
-		.base_values = emi_base,
-		.n_base_values = ARRAY_SIZE(emi_base),
-	}
-};
-
-static const struct of_device_id of_match_clk_en7523[] = {
-	{ .compatible = "airoha,en7523-scu", },
-	{ /* sentinel */ }
-};
-
-static unsigned int en7523_get_base_rate(void __iomem *base, unsigned int i)
-{
-	const struct en_clk_desc *desc = &en7523_base_clks[i];
-	u32 val;
-
-	if (!desc->base_bits)
-		return desc->base_value;
-
-	val = readl(base + desc->base_reg);
-	val >>= desc->base_shift;
-	val &= (1 << desc->base_bits) - 1;
-
-	if (val >= desc->n_base_values)
-		return 0;
-
-	return desc->base_values[val];
-}
-
-static u32 en7523_get_div(void __iomem *base, int i)
-{
-	const struct en_clk_desc *desc = &en7523_base_clks[i];
-	u32 reg, val;
-
-	if (!desc->div_bits)
-		return 1;
-
-	reg = desc->div_reg ? desc->div_reg : desc->base_reg;
-	val = readl(base + reg);
-	val >>= desc->div_shift;
-	val &= (1 << desc->div_bits) - 1;
-
-	if (!val && desc->div_val0)
-		return desc->div_val0;
-
-	return (val + 1) * desc->div_step;
-}
-
-static int en7523_pci_is_enabled(struct clk_hw *hw)
-{
-	struct en_clk_gate *cg = container_of(hw, struct en_clk_gate, hw);
-
-	return !!(readl(cg->base + REG_PCI_CONTROL) & REG_PCI_CONTROL_REFCLK_EN1);
-}
-
-static int en7523_pci_prepare(struct clk_hw *hw)
-{
-	struct en_clk_gate *cg = container_of(hw, struct en_clk_gate, hw);
-	void __iomem *np_base = cg->base;
-	u32 val, mask;
-
-	/* Need to pull device low before reset */
-	val = readl(np_base + REG_PCI_CONTROL);
-	val &= ~(REG_PCI_CONTROL_PERSTOUT1 | REG_PCI_CONTROL_PERSTOUT);
-	writel(val, np_base + REG_PCI_CONTROL);
-	usleep_range(1000, 2000);
-
-	/* Enable PCIe port 1 */
-	val |= REG_PCI_CONTROL_REFCLK_EN1;
-	writel(val, np_base + REG_PCI_CONTROL);
-	usleep_range(1000, 2000);
-
-	/* Reset to default */
-	val = readl(np_base + REG_RESET_CONTROL);
-	mask = REG_RESET_CONTROL_PCIE1 | REG_RESET_CONTROL_PCIE2 |
-	       REG_RESET_CONTROL_PCIEHB;
-	writel(val & ~mask, np_base + REG_RESET_CONTROL);
-	usleep_range(1000, 2000);
-	writel(val | mask, np_base + REG_RESET_CONTROL);
-	msleep(100);
-	writel(val & ~mask, np_base + REG_RESET_CONTROL);
-	usleep_range(5000, 10000);
-
-	/* Release device */
-	mask = REG_PCI_CONTROL_PERSTOUT1 | REG_PCI_CONTROL_PERSTOUT;
-	val = readl(np_base + REG_PCI_CONTROL);
-	writel(val & ~mask, np_base + REG_PCI_CONTROL);
-	usleep_range(1000, 2000);
-	writel(val | mask, np_base + REG_PCI_CONTROL);
-	msleep(250);
-
-	return 0;
-}
-
-static void en7523_pci_unprepare(struct clk_hw *hw)
-{
-	struct en_clk_gate *cg = container_of(hw, struct en_clk_gate, hw);
-	void __iomem *np_base = cg->base;
-	u32 val;
-
-	val = readl(np_base + REG_PCI_CONTROL);
-	val &= ~REG_PCI_CONTROL_REFCLK_EN1;
-	writel(val, np_base + REG_PCI_CONTROL);
-}
-
-static struct clk_hw *en7523_register_pcie_clk(struct device *dev,
-					       void __iomem *np_base)
-{
-	static const struct clk_ops pcie_gate_ops = {
-		.is_enabled = en7523_pci_is_enabled,
-		.prepare = en7523_pci_prepare,
-		.unprepare = en7523_pci_unprepare,
-	};
-	struct clk_init_data init = {
-		.name = "pcie",
-		.ops = &pcie_gate_ops,
-	};
-	struct en_clk_gate *cg;
-
-	cg = devm_kzalloc(dev, sizeof(*cg), GFP_KERNEL);
-	if (!cg)
-		return NULL;
-
-	cg->base = np_base;
-	cg->hw.init = &init;
-	en7523_pci_unprepare(&cg->hw);
-
-	if (clk_hw_register(dev, &cg->hw))
-		return NULL;
-
-	return &cg->hw;
-}
-
-static void en7523_register_clocks(struct device *dev, struct clk_hw_onecell_data *clk_data,
-				   void __iomem *base, void __iomem *np_base)
-{
-	struct clk_hw *hw;
-	u32 rate;
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(en7523_base_clks); i++) {
-		const struct en_clk_desc *desc = &en7523_base_clks[i];
-
-		rate = en7523_get_base_rate(base, i);
-		rate /= en7523_get_div(base, i);
-
-		hw = clk_hw_register_fixed_rate(dev, desc->name, NULL, 0, rate);
-		if (IS_ERR(hw)) {
-			pr_err("Failed to register clk %s: %ld\n",
-			       desc->name, PTR_ERR(hw));
-			continue;
-		}
-
-		clk_data->hws[desc->id] = hw;
-	}
-
-	hw = en7523_register_pcie_clk(dev, np_base);
-	clk_data->hws[EN7523_CLK_PCIE] = hw;
-
-	clk_data->num = EN7523_NUM_CLOCKS;
-}
-
-static int en7523_clk_probe(struct platform_device *pdev)
-{
-	struct device_node *node = pdev->dev.of_node;
-	struct clk_hw_onecell_data *clk_data;
-	void __iomem *base, *np_base;
-	int r;
-
-	base = devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(base))
-		return PTR_ERR(base);
-
-	np_base = devm_platform_ioremap_resource(pdev, 1);
-	if (IS_ERR(np_base))
-		return PTR_ERR(np_base);
-
-	clk_data = devm_kzalloc(&pdev->dev,
-				struct_size(clk_data, hws, EN7523_NUM_CLOCKS),
-				GFP_KERNEL);
-	if (!clk_data)
-		return -ENOMEM;
-
-	en7523_register_clocks(&pdev->dev, clk_data, base, np_base);
-
-	r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
-	if (r)
-		dev_err(&pdev->dev,
-			"could not register clock provider: %s: %d\n",
-			pdev->name, r);
-
-	return r;
-}
-
-static struct platform_driver clk_en7523_drv = {
-	.probe = en7523_clk_probe,
-	.driver = {
-		.name = "clk-en7523",
-		.of_match_table = of_match_clk_en7523,
-		.suppress_bind_attrs = true,
-	},
-};
-
-static int __init clk_en7523_init(void)
-{
-	return platform_driver_register(&clk_en7523_drv);
-}
-
-arch_initcall(clk_en7523_init);
diff --git a/target/linux/airoha/files-5.15/drivers/gpio/gpio-en7523.c b/target/linux/airoha/files-5.15/drivers/gpio/gpio-en7523.c
deleted file mode 100644
index f836a8db4c..0000000000
--- a/target/linux/airoha/files-5.15/drivers/gpio/gpio-en7523.c
+++ /dev/null
@@ -1,137 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-
-#include <linux/types.h>
-#include <linux/io.h>
-#include <linux/bits.h>
-#include <linux/gpio/driver.h>
-#include <linux/mod_devicetable.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/property.h>
-
-#define AIROHA_GPIO_MAX		32
-
-/**
- * airoha_gpio_ctrl - Airoha GPIO driver data
- * @gc: Associated gpio_chip instance.
- * @data: The data register.
- * @dir0: The direction register for the lower 16 pins.
- * @dir1: The direction register for the higher 16 pins.
- * @output: The output enable register.
- */
-struct airoha_gpio_ctrl {
-	struct gpio_chip gc;
-	void __iomem *data;
-	void __iomem *dir[2];
-	void __iomem *output;
-};
-
-static struct airoha_gpio_ctrl *gc_to_ctrl(struct gpio_chip *gc)
-{
-	return container_of(gc, struct airoha_gpio_ctrl, gc);
-}
-
-static int airoha_dir_set(struct gpio_chip *gc, unsigned int gpio,
-			  int val, int out)
-{
-	struct airoha_gpio_ctrl *ctrl = gc_to_ctrl(gc);
-	u32 dir = ioread32(ctrl->dir[gpio / 16]);
-	u32 output = ioread32(ctrl->output);
-	u32 mask = BIT((gpio % 16) * 2);
-
-	if (out) {
-		dir |= mask;
-		output |= BIT(gpio);
-	} else {
-		dir &= ~mask;
-		output &= ~BIT(gpio);
-	}
-
-	iowrite32(dir, ctrl->dir[gpio / 16]);
-
-	if (out)
-		gc->set(gc, gpio, val);
-
-	iowrite32(output, ctrl->output);
-
-	return 0;
-}
-
-static int airoha_dir_out(struct gpio_chip *gc, unsigned int gpio,
-			  int val)
-{
-	return airoha_dir_set(gc, gpio, val, 1);
-}
-
-static int airoha_dir_in(struct gpio_chip *gc, unsigned int gpio)
-{
-	return airoha_dir_set(gc, gpio, 0, 0);
-}
-
-static int airoha_get_dir(struct gpio_chip *gc, unsigned int gpio)
-{
-	struct airoha_gpio_ctrl *ctrl = gc_to_ctrl(gc);
-	u32 dir = ioread32(ctrl->dir[gpio / 16]);
-	u32 mask = BIT((gpio % 16) * 2);
-
-	return (dir & mask) ? GPIO_LINE_DIRECTION_OUT : GPIO_LINE_DIRECTION_IN;
-}
-
-static int airoha_gpio_probe(struct platform_device *pdev)
-{
-	struct device *dev = &pdev->dev;
-	struct airoha_gpio_ctrl *ctrl;
-	int err;
-
-	ctrl = devm_kzalloc(dev, sizeof(*ctrl), GFP_KERNEL);
-	if (!ctrl)
-		return -ENOMEM;
-
-	ctrl->data = devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(ctrl->data))
-		return PTR_ERR(ctrl->data);
-
-	ctrl->dir[0] = devm_platform_ioremap_resource(pdev, 1);
-	if (IS_ERR(ctrl->dir[0]))
-		return PTR_ERR(ctrl->dir[0]);
-
-	ctrl->dir[1] = devm_platform_ioremap_resource(pdev, 2);
-	if (IS_ERR(ctrl->dir[1]))
-		return PTR_ERR(ctrl->dir[1]);
-
-	ctrl->output = devm_platform_ioremap_resource(pdev, 3);
-	if (IS_ERR(ctrl->output))
-		return PTR_ERR(ctrl->output);
-
-	err = bgpio_init(&ctrl->gc, dev, 4, ctrl->data, NULL,
-			 NULL, NULL, NULL, 0);
-	if (err)
-		return dev_err_probe(dev, err, "unable to init generic GPIO");
-
-	ctrl->gc.ngpio = AIROHA_GPIO_MAX;
-	ctrl->gc.owner = THIS_MODULE;
-	ctrl->gc.direction_output = airoha_dir_out;
-	ctrl->gc.direction_input = airoha_dir_in;
-	ctrl->gc.get_direction = airoha_get_dir;
-
-	return devm_gpiochip_add_data(dev, &ctrl->gc, ctrl);
-}
-
-static const struct of_device_id airoha_gpio_of_match[] = {
-	{ .compatible = "airoha,en7523-gpio" },
-	{ }
-};
-MODULE_DEVICE_TABLE(of, airoha_gpio_of_match);
-
-static struct platform_driver airoha_gpio_driver = {
-	.driver = {
-		.name = "airoha-gpio",
-		.of_match_table	= airoha_gpio_of_match,
-	},
-	.probe = airoha_gpio_probe,
-};
-module_platform_driver(airoha_gpio_driver);
-
-MODULE_DESCRIPTION("Airoha GPIO support");
-MODULE_AUTHOR("John Crispin <john at phrozen.org>");
-MODULE_LICENSE("GPL v2");
diff --git a/target/linux/airoha/files-5.15/include/dt-bindings/clock/en7523-clk.h b/target/linux/airoha/files-5.15/include/dt-bindings/clock/en7523-clk.h
deleted file mode 100644
index 717d23a5e5..0000000000
--- a/target/linux/airoha/files-5.15/include/dt-bindings/clock/en7523-clk.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
-
-#ifndef _DT_BINDINGS_CLOCK_AIROHA_EN7523_H_
-#define _DT_BINDINGS_CLOCK_AIROHA_EN7523_H_
-
-#define EN7523_CLK_GSW		0
-#define EN7523_CLK_EMI		1
-#define EN7523_CLK_BUS		2
-#define EN7523_CLK_SLIC		3
-#define EN7523_CLK_SPI		4
-#define EN7523_CLK_NPU		5
-#define EN7523_CLK_CRYPTO	6
-#define EN7523_CLK_PCIE		7
-
-#define EN7523_NUM_CLOCKS	8
-
-#endif /* _DT_BINDINGS_CLOCK_AIROHA_EN7523_H_ */
diff --git a/target/linux/airoha/patches-5.15/0001-add-airoha-platform.patch b/target/linux/airoha/patches-5.15/0001-add-airoha-platform.patch
deleted file mode 100644
index 5b356ea23e..0000000000
--- a/target/linux/airoha/patches-5.15/0001-add-airoha-platform.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- a/arch/arm/Kconfig
-+++ b/arch/arm/Kconfig
-@@ -572,6 +572,18 @@ config ARCH_VIRT
- 	select HAVE_ARM_ARCH_TIMER
- 	select ARCH_SUPPORTS_BIG_ENDIAN
- 
-+config ARCH_AIROHA
-+	bool "Airoha SoC Support"
-+	depends on ARCH_MULTI_V7
-+	select ARM_AMBA
-+	select ARM_GIC
-+	select ARM_GIC_V3
-+	select ARM_PSCI
-+	select HAVE_ARM_ARCH_TIMER
-+	select COMMON_CLK
-+	help
-+	  Support for Airoha EN7523 SoCs
-+
- #
- # This is sorted alphabetically by mach-* pathname.  However, plat-*
- # Kconfigs may be included either alphabetically (according to the
---- a/arch/arm/Makefile
-+++ b/arch/arm/Makefile
-@@ -156,6 +156,7 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x003080
- # Machine directory name.  This list is sorted alphanumerically
- # by CONFIG_* macro name.
- machine-$(CONFIG_ARCH_ACTIONS)		+= actions
-+machine-$(CONFIG_ARCH_AIROHA)		+= airoha
- machine-$(CONFIG_ARCH_ALPINE)		+= alpine
- machine-$(CONFIG_ARCH_ARTPEC)		+= artpec
- machine-$(CONFIG_ARCH_ASPEED)           += aspeed
diff --git a/target/linux/airoha/patches-5.15/0002-add-airoha-en7523-clk-driver.patch b/target/linux/airoha/patches-5.15/0002-add-airoha-en7523-clk-driver.patch
deleted file mode 100644
index bae5cacc5e..0000000000
--- a/target/linux/airoha/patches-5.15/0002-add-airoha-en7523-clk-driver.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- a/drivers/clk/Kconfig
-+++ b/drivers/clk/Kconfig
-@@ -192,6 +192,15 @@ config COMMON_CLK_CS2000_CP
- 	help
- 	  If you say yes here you get support for the CS2000 clock multiplier.
- 
-+config COMMON_CLK_EN7523
-+	bool "Clock driver for Airoha EN7523 SoC system clocks"
-+	depends on OF
-+	depends on ARCH_AIROHA || COMPILE_TEST
-+	default ARCH_AIROHA
-+	help
-+	  This driver provides the fixed clocks and gates present on Airoha
-+	  ARM silicon.
-+
- config COMMON_CLK_FSL_FLEXSPI
- 	tristate "Clock driver for FlexSPI on Layerscape SoCs"
- 	depends on ARCH_LAYERSCAPE || COMPILE_TEST
---- a/drivers/clk/Makefile
-+++ b/drivers/clk/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_COMMON_CLK_CDCE925)	+= clk-
- obj-$(CONFIG_ARCH_CLPS711X)		+= clk-clps711x.o
- obj-$(CONFIG_COMMON_CLK_CS2000_CP)	+= clk-cs2000-cp.o
- obj-$(CONFIG_ARCH_SPARX5)		+= clk-sparx5.o
-+obj-$(CONFIG_COMMON_CLK_EN7523)		+= clk-en7523.o
- obj-$(CONFIG_COMMON_CLK_FIXED_MMIO)	+= clk-fixed-mmio.o
- obj-$(CONFIG_COMMON_CLK_FSL_FLEXSPI)	+= clk-fsl-flexspi.o
- obj-$(CONFIG_COMMON_CLK_FSL_SAI)	+= clk-fsl-sai.o
diff --git a/target/linux/airoha/patches-5.15/0003-add-airoha-en7523-gpio-driver.patch b/target/linux/airoha/patches-5.15/0003-add-airoha-en7523-gpio-driver.patch
deleted file mode 100644
index 319336257b..0000000000
--- a/target/linux/airoha/patches-5.15/0003-add-airoha-en7523-gpio-driver.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/drivers/gpio/Kconfig
-+++ b/drivers/gpio/Kconfig
-@@ -247,6 +247,16 @@ config GPIO_EM
- 	help
- 	  Say yes here to support GPIO on Renesas Emma Mobile SoCs.
- 
-+config GPIO_EN7523
-+	tristate "Airoha GPIO support"
-+	depends on ARCH_AIROHA
-+	default ARCH_AIROHA
-+	select GPIO_GENERIC
-+	select GPIOLIB_IRQCHIP
-+	help
-+	  Say Y or M here to support the GPIO controller block on the
-+	  Airoha EN7523 SoC. It supports two banks of 32 GPIOs.
-+
- config GPIO_EP93XX
- 	def_bool y
- 	depends on ARCH_EP93XX
---- a/drivers/gpio/Makefile
-+++ b/drivers/gpio/Makefile
-@@ -57,6 +57,7 @@ obj-$(CONFIG_GPIO_DLN2)			+= gpio-dln2.o
- obj-$(CONFIG_GPIO_DWAPB)		+= gpio-dwapb.o
- obj-$(CONFIG_GPIO_EIC_SPRD)		+= gpio-eic-sprd.o
- obj-$(CONFIG_GPIO_EM)			+= gpio-em.o
-+obj-$(CONFIG_GPIO_EN7523)		+= gpio-en7523.o
- obj-$(CONFIG_GPIO_EP93XX)		+= gpio-ep93xx.o
- obj-$(CONFIG_GPIO_EXAR)			+= gpio-exar.o
- obj-$(CONFIG_GPIO_F7188X)		+= gpio-f7188x.o
diff --git a/target/linux/airoha/patches-5.15/0004-ARM-9124-1-uncompress-Parse-linux-usable-memory-rang.patch b/target/linux/airoha/patches-5.15/0004-ARM-9124-1-uncompress-Parse-linux-usable-memory-rang.patch
deleted file mode 100644
index 0f0cbaa10f..0000000000
--- a/target/linux/airoha/patches-5.15/0004-ARM-9124-1-uncompress-Parse-linux-usable-memory-rang.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 48342ae751c797ac73ac9c894b3f312df18ffd21 Mon Sep 17 00:00:00 2001
-From: Geert Uytterhoeven <geert+renesas at glider.be>
-Date: Wed, 15 Sep 2021 13:46:20 +0100
-Subject: [PATCH] ARM: 9124/1: uncompress: Parse "linux,usable-memory-range" DT
- property
-
-Add support for parsing the "linux,usable-memory-range" DT property.
-This property is used to describe the usable memory reserved for the
-crash dump kernel, and thus makes the memory reservation explicit.
-If present, Linux no longer needs to mask the program counter, and rely
-on the "mem=" kernel parameter to obtain the start and size of usable
-memory.
-
-For backwards compatibility, the traditional method to derive the start
-of memory is still used if "linux,usable-memory-range" is absent.
-
-Signed-off-by: Geert Uytterhoeven <geert+renesas at glider.be>
-Signed-off-by: Russell King (Oracle) <rmk+kernel at armlinux.org.uk>
-Signed-off-by: Daniel Danzberger <daniel at dd-wrt.com>
----
- .../arm/boot/compressed/fdt_check_mem_start.c | 48 ++++++++++++++++---
- 1 file changed, 42 insertions(+), 6 deletions(-)
-
---- a/arch/arm/boot/compressed/fdt_check_mem_start.c
-+++ b/arch/arm/boot/compressed/fdt_check_mem_start.c
-@@ -55,16 +55,17 @@ static uint64_t get_val(const fdt32_t *c
-  * DTB, and, if out-of-range, replace it by the real start address.
-  * To preserve backwards compatibility (systems reserving a block of memory
-  * at the start of physical memory, kdump, ...), the traditional method is
-- * always used if it yields a valid address.
-+ * used if it yields a valid address, unless the "linux,usable-memory-range"
-+ * property is present.
-  *
-  * Return value: start address of physical memory to use
-  */
- uint32_t fdt_check_mem_start(uint32_t mem_start, const void *fdt)
- {
--	uint32_t addr_cells, size_cells, base;
-+	uint32_t addr_cells, size_cells, usable_base, base;
- 	uint32_t fdt_mem_start = 0xffffffff;
--	const fdt32_t *reg, *endp;
--	uint64_t size, end;
-+	const fdt32_t *usable, *reg, *endp;
-+	uint64_t size, usable_end, end;
- 	const char *type;
- 	int offset, len;
- 
-@@ -80,6 +81,27 @@ uint32_t fdt_check_mem_start(uint32_t me
- 	if (addr_cells > 2 || size_cells > 2)
- 		return mem_start;
- 
-+	/*
-+	 * Usable memory in case of a crash dump kernel
-+	 * This property describes a limitation: memory within this range is
-+	 * only valid when also described through another mechanism
-+	 */
-+	usable = get_prop(fdt, "/chosen", "linux,usable-memory-range",
-+			  (addr_cells + size_cells) * sizeof(fdt32_t));
-+	if (usable) {
-+		size = get_val(usable + addr_cells, size_cells);
-+		if (!size)
-+			return mem_start;
-+
-+		if (addr_cells > 1 && fdt32_ld(usable)) {
-+			/* Outside 32-bit address space */
-+			return mem_start;
-+		}
-+
-+		usable_base = fdt32_ld(usable + addr_cells - 1);
-+		usable_end = usable_base + size;
-+	}
-+
- 	/* Walk all memory nodes and regions */
- 	for (offset = fdt_next_node(fdt, -1, NULL); offset >= 0;
- 	     offset = fdt_next_node(fdt, offset, NULL)) {
-@@ -107,7 +129,20 @@ uint32_t fdt_check_mem_start(uint32_t me
- 
- 			base = fdt32_ld(reg + addr_cells - 1);
- 			end = base + size;
--			if (mem_start >= base && mem_start < end) {
-+			if (usable) {
-+				/*
-+				 * Clip to usable range, which takes precedence
-+				 * over mem_start
-+				 */
-+				if (base < usable_base)
-+					base = usable_base;
-+
-+				if (end > usable_end)
-+					end = usable_end;
-+
-+				if (end <= base)
-+					continue;
-+			} else if (mem_start >= base && mem_start < end) {
- 				/* Calculated address is valid, use it */
- 				return mem_start;
- 			}
-@@ -123,7 +158,8 @@ uint32_t fdt_check_mem_start(uint32_t me
- 	}
- 
- 	/*
--	 * The calculated address is not usable.
-+	 * The calculated address is not usable, or was overridden by the
-+	 * "linux,usable-memory-range" property.
- 	 * Use the lowest usable physical memory address from the DTB instead,
- 	 * and make sure this is a multiple of 2 MiB for phys/virt patching.
- 	 */
diff --git a/target/linux/airoha/patches-5.15/0005-spi-Add-support-for-the-Airoha-EN7523-SoC-SPI-contro.patch b/target/linux/airoha/patches-5.15/0005-spi-Add-support-for-the-Airoha-EN7523-SoC-SPI-contro.patch
deleted file mode 100644
index 6c21666ed1..0000000000
--- a/target/linux/airoha/patches-5.15/0005-spi-Add-support-for-the-Airoha-EN7523-SoC-SPI-contro.patch
+++ /dev/null
@@ -1,341 +0,0 @@
---- a/drivers/spi/Kconfig
-+++ b/drivers/spi/Kconfig
-@@ -307,6 +307,12 @@ config SPI_DLN2
- 	 This driver can also be built as a module.  If so, the module
- 	 will be called spi-dln2.
- 
-+config SPI_AIROHA_EN7523
-+	bool "Airoha EN7523 SPI controller support"
-+	depends on ARCH_AIROHA
-+	help
-+	  This enables SPI controller support for the Airoha EN7523 SoC.
-+
- config SPI_EP93XX
- 	tristate "Cirrus Logic EP93xx SPI controller"
- 	depends on ARCH_EP93XX || COMPILE_TEST
---- a/drivers/spi/Makefile
-+++ b/drivers/spi/Makefile
-@@ -45,6 +45,7 @@ obj-$(CONFIG_SPI_DW_BT1)		+= spi-dw-bt1.
- obj-$(CONFIG_SPI_DW_MMIO)		+= spi-dw-mmio.o
- obj-$(CONFIG_SPI_DW_PCI)		+= spi-dw-pci.o
- obj-$(CONFIG_SPI_EP93XX)		+= spi-ep93xx.o
-+obj-$(CONFIG_SPI_AIROHA_EN7523)		+= spi-en7523.o
- obj-$(CONFIG_SPI_FALCON)		+= spi-falcon.o
- obj-$(CONFIG_SPI_FSI)			+= spi-fsi.o
- obj-$(CONFIG_SPI_FSL_CPM)		+= spi-fsl-cpm.o
---- /dev/null
-+++ b/drivers/spi/spi-en7523.c
-@@ -0,0 +1,313 @@
-+// SPDX-License-Identifier: GPL-2.0
-+
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/mod_devicetable.h>
-+#include <linux/spi/spi.h>
-+
-+
-+#define ENSPI_READ_IDLE_EN			0x0004
-+#define ENSPI_MTX_MODE_TOG			0x0014
-+#define ENSPI_RDCTL_FSM				0x0018
-+#define ENSPI_MANUAL_EN				0x0020
-+#define ENSPI_MANUAL_OPFIFO_EMPTY		0x0024
-+#define ENSPI_MANUAL_OPFIFO_WDATA		0x0028
-+#define ENSPI_MANUAL_OPFIFO_FULL		0x002C
-+#define ENSPI_MANUAL_OPFIFO_WR			0x0030
-+#define ENSPI_MANUAL_DFIFO_FULL			0x0034
-+#define ENSPI_MANUAL_DFIFO_WDATA		0x0038
-+#define ENSPI_MANUAL_DFIFO_EMPTY		0x003C
-+#define ENSPI_MANUAL_DFIFO_RD			0x0040
-+#define ENSPI_MANUAL_DFIFO_RDATA		0x0044
-+#define ENSPI_IER				0x0090
-+#define ENSPI_NFI2SPI_EN			0x0130
-+
-+// TODO not in spi block
-+#define ENSPI_CLOCK_DIVIDER			((void __iomem *)0x1fa201c4)
-+
-+#define	OP_CSH					0x00
-+#define	OP_CSL					0x01
-+#define	OP_CK					0x02
-+#define	OP_OUTS					0x08
-+#define	OP_OUTD					0x09
-+#define	OP_OUTQ					0x0A
-+#define	OP_INS					0x0C
-+#define	OP_INS0					0x0D
-+#define	OP_IND					0x0E
-+#define	OP_INQ					0x0F
-+#define	OP_OS2IS				0x10
-+#define	OP_OS2ID				0x11
-+#define	OP_OS2IQ				0x12
-+#define	OP_OD2IS				0x13
-+#define	OP_OD2ID				0x14
-+#define	OP_OD2IQ				0x15
-+#define	OP_OQ2IS				0x16
-+#define	OP_OQ2ID				0x17
-+#define	OP_OQ2IQ				0x18
-+#define	OP_OSNIS				0x19
-+#define	OP_ODNID				0x1A
-+
-+#define MATRIX_MODE_AUTO		1
-+#define   CONF_MTX_MODE_AUTO		0
-+#define   MANUALEN_AUTO			0
-+#define MATRIX_MODE_MANUAL		0
-+#define   CONF_MTX_MODE_MANUAL		9
-+#define   MANUALEN_MANUAL		1
-+
-+#define _ENSPI_MAX_XFER			0x1ff
-+
-+#define REG(x)			(iobase + x)
-+
-+
-+static void __iomem *iobase;
-+
-+
-+static void opfifo_write(u32 cmd, u32 len)
-+{
-+	u32 tmp = ((cmd & 0x1f) << 9) | (len & 0x1ff);
-+
-+	writel(tmp, REG(ENSPI_MANUAL_OPFIFO_WDATA));
-+
-+	/* Wait for room in OPFIFO */
-+	while (readl(REG(ENSPI_MANUAL_OPFIFO_FULL)))
-+		;
-+
-+	/* Shift command into OPFIFO */
-+	writel(1, REG(ENSPI_MANUAL_OPFIFO_WR));
-+
-+	/* Wait for command to finish */
-+	while (!readl(REG(ENSPI_MANUAL_OPFIFO_EMPTY)))
-+		;
-+}
-+
-+static void set_cs(int state)
-+{
-+	if (state)
-+		opfifo_write(OP_CSH, 1);
-+	else
-+		opfifo_write(OP_CSL, 1);
-+}
-+
-+static void manual_begin_cmd(void)
-+{
-+	/* Disable read idle state */
-+	writel(0, REG(ENSPI_READ_IDLE_EN));
-+
-+	/* Wait for FSM to reach idle state */
-+	while (readl(REG(ENSPI_RDCTL_FSM)))
-+		;
-+
-+	/* Set SPI core to manual mode */
-+	writel(CONF_MTX_MODE_MANUAL, REG(ENSPI_MTX_MODE_TOG));
-+	writel(MANUALEN_MANUAL, REG(ENSPI_MANUAL_EN));
-+}
-+
-+static void manual_end_cmd(void)
-+{
-+	/* Set SPI core to auto mode */
-+	writel(CONF_MTX_MODE_AUTO, REG(ENSPI_MTX_MODE_TOG));
-+	writel(MANUALEN_AUTO, REG(ENSPI_MANUAL_EN));
-+
-+	/* Enable read idle state */
-+	writel(1, REG(ENSPI_READ_IDLE_EN));
-+}
-+
-+static void dfifo_read(u8 *buf, int len)
-+{
-+	int i;
-+
-+	for (i = 0; i < len; i++) {
-+		/* Wait for requested data to show up in DFIFO */
-+		while (readl(REG(ENSPI_MANUAL_DFIFO_EMPTY)))
-+			;
-+		buf[i] = readl(REG(ENSPI_MANUAL_DFIFO_RDATA));
-+		/* Queue up next byte */
-+		writel(1, REG(ENSPI_MANUAL_DFIFO_RD));
-+	}
-+}
-+
-+static void dfifo_write(const u8 *buf, int len)
-+{
-+	int i;
-+
-+	for (i = 0; i < len; i++) {
-+		/* Wait for room in DFIFO */
-+		while (readl(REG(ENSPI_MANUAL_DFIFO_FULL)))
-+			;
-+		writel(buf[i], REG(ENSPI_MANUAL_DFIFO_WDATA));
-+	}
-+}
-+
-+#if 0
-+static void set_spi_clock_speed(int freq_mhz)
-+{
-+	u32 tmp, val;
-+
-+	tmp = readl(ENSPI_CLOCK_DIVIDER);
-+	tmp &= 0xffff0000;
-+	writel(tmp, ENSPI_CLOCK_DIVIDER);
-+
-+	val = (400 / (freq_mhz * 2));
-+	tmp |= (val << 8) | 1;
-+	writel(tmp, ENSPI_CLOCK_DIVIDER);
-+}
-+#endif
-+
-+static void init_hw(void)
-+{
-+	/* Disable manual/auto mode clash interrupt */
-+	writel(0, REG(ENSPI_IER));
-+
-+	// TODO via clk framework
-+	// set_spi_clock_speed(50);
-+
-+	/* Disable DMA */
-+	writel(0, REG(ENSPI_NFI2SPI_EN));
-+}
-+
-+static int xfer_read(struct spi_transfer *xfer)
-+{
-+	int opcode;
-+	uint8_t *buf = xfer->rx_buf;
-+
-+	switch (xfer->rx_nbits) {
-+	case SPI_NBITS_SINGLE:
-+		opcode = OP_INS;
-+		break;
-+	case SPI_NBITS_DUAL:
-+		opcode = OP_IND;
-+		break;
-+	case SPI_NBITS_QUAD:
-+		opcode = OP_INQ;
-+		break;
-+	}
-+
-+	opfifo_write(opcode, xfer->len);
-+	dfifo_read(buf, xfer->len);
-+
-+	return xfer->len;
-+}
-+
-+static int xfer_write(struct spi_transfer *xfer, int next_xfer_is_rx)
-+{
-+	int opcode;
-+	const uint8_t *buf = xfer->tx_buf;
-+
-+	if (next_xfer_is_rx) {
-+		/* need to use Ox2Ix opcode to set the core to input afterwards */
-+		switch (xfer->tx_nbits) {
-+		case SPI_NBITS_SINGLE:
-+			opcode = OP_OS2IS;
-+			break;
-+		case SPI_NBITS_DUAL:
-+			opcode = OP_OS2ID;
-+			break;
-+		case SPI_NBITS_QUAD:
-+			opcode = OP_OS2IQ;
-+			break;
-+		}
-+	} else {
-+		switch (xfer->tx_nbits) {
-+		case SPI_NBITS_SINGLE:
-+			opcode = OP_OUTS;
-+			break;
-+		case SPI_NBITS_DUAL:
-+			opcode = OP_OUTD;
-+			break;
-+		case SPI_NBITS_QUAD:
-+			opcode = OP_OUTQ;
-+			break;
-+		}
-+	}
-+
-+	opfifo_write(opcode, xfer->len);
-+	dfifo_write(buf, xfer->len);
-+
-+	return xfer->len;
-+}
-+
-+size_t max_transfer_size(struct spi_device *spi)
-+{
-+	return _ENSPI_MAX_XFER;
-+}
-+
-+int transfer_one_message(struct spi_controller *ctrl, struct spi_message *msg)
-+{
-+	struct spi_transfer *xfer;
-+	int next_xfer_is_rx = 0;
-+
-+	manual_begin_cmd();
-+	set_cs(0);
-+	list_for_each_entry(xfer, &msg->transfers, transfer_list) {
-+		if (xfer->tx_buf) {
-+			if (!list_is_last(&xfer->transfer_list, &msg->transfers)
-+			    && list_next_entry(xfer, transfer_list)->rx_buf != NULL)
-+				next_xfer_is_rx = 1;
-+			else
-+				next_xfer_is_rx = 0;
-+			msg->actual_length += xfer_write(xfer, next_xfer_is_rx);
-+		} else if (xfer->rx_buf) {
-+			msg->actual_length += xfer_read(xfer);
-+		}
-+	}
-+	set_cs(1);
-+	manual_end_cmd();
-+
-+	msg->status = 0;
-+	spi_finalize_current_message(ctrl);
-+
-+	return 0;
-+}
-+
-+static int spi_probe(struct platform_device *pdev)
-+{
-+	struct spi_controller *ctrl;
-+	int err;
-+
-+	ctrl = devm_spi_alloc_master(&pdev->dev, 0);
-+	if (!ctrl) {
-+		dev_err(&pdev->dev, "Error allocating SPI controller\n");
-+		return -ENOMEM;
-+	}
-+
-+	iobase = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
-+	if (IS_ERR(iobase)) {
-+		dev_err(&pdev->dev, "Could not map SPI register address");
-+		return -ENOMEM;
-+	}
-+
-+	init_hw();
-+
-+	ctrl->dev.of_node = pdev->dev.of_node;
-+	ctrl->flags = SPI_CONTROLLER_HALF_DUPLEX;
-+	ctrl->mode_bits = SPI_RX_DUAL | SPI_TX_DUAL;
-+	ctrl->max_transfer_size = max_transfer_size;
-+	ctrl->transfer_one_message = transfer_one_message;
-+	err = devm_spi_register_controller(&pdev->dev, ctrl);
-+	if (err) {
-+		dev_err(&pdev->dev, "Could not register SPI controller\n");
-+		return -ENODEV;
-+	}
-+
-+	return 0;
-+}
-+
-+static const struct of_device_id spi_of_ids[] = {
-+	{ .compatible = "airoha,en7523-spi" },
-+	{ /* sentinel */ }
-+};
-+MODULE_DEVICE_TABLE(of, spi_of_ids);
-+
-+static struct platform_driver spi_driver = {
-+	.probe = spi_probe,
-+	.driver = {
-+		.name = "airoha-en7523-spi",
-+		.of_match_table = spi_of_ids,
-+	},
-+};
-+
-+module_platform_driver(spi_driver);
-+
-+MODULE_LICENSE("GPL v2");
-+MODULE_AUTHOR("Bert Vermeulen <bert at biot.com>");
-+MODULE_DESCRIPTION("Airoha EN7523 SPI driver");
diff --git a/target/linux/airoha/patches-5.15/0006-PCI-mediatek-Allow-building-for-ARCH_AIROHA.patch b/target/linux/airoha/patches-5.15/0006-PCI-mediatek-Allow-building-for-ARCH_AIROHA.patch
deleted file mode 100644
index 4659809074..0000000000
--- a/target/linux/airoha/patches-5.15/0006-PCI-mediatek-Allow-building-for-ARCH_AIROHA.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b3b76fc86f0fb4d98918f48c784138bfa950dff6 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd at nbd.name>
-Date: Wed, 15 Jun 2022 14:53:34 +0200
-Subject: [PATCH] PCI: mediatek: Allow building for ARCH_AIROHA
-
-Allow selecting the pcie-mediatek driver if ARCH_AIROHA is set, because the
-Airoha EN7523 SoC uses the same controller as MT7622.
-
-The driver itself is not modified. The PCIe controller DT node should use
-mediatek,mt7622-pcie after airoha,en7523-pcie.
-
-Link: https://lore.kernel.org/r/20220615125335.96089-2-nbd at nbd.name
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
-Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
-Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi at arm.com>
-Signed-off-by: Daniel Danzberger <daniel at dd-wrt.com>
----
- drivers/pci/controller/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/pci/controller/Kconfig
-+++ b/drivers/pci/controller/Kconfig
-@@ -233,7 +233,7 @@ config PCIE_ROCKCHIP_EP
- 
- config PCIE_MEDIATEK
- 	tristate "MediaTek PCIe controller"
--	depends on ARCH_MEDIATEK || COMPILE_TEST
-+	depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
- 	depends on OF
- 	depends on PCI_MSI_IRQ_DOMAIN
- 	help



From lede-commits at lists.infradead.org  Thu Mar 28 22:57:01 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 01:57:01 -0400
Subject: [openwrt/openwrt]  tools/xz: update to 5.6.1
In-Reply-To: <171169182184.2445533.1681907997616741053@git-01.infra.openwrt.org>
References: <171169182184.2445533.1681907997616741053@git-01.infra.openwrt.org>
Message-ID: <mailman.21455.1711691831.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/714c91d1a63f29650abaa9cf69ffa47cf2c70297

commit 714c91d1a63f29650abaa9cf69ffa47cf2c70297
Author: Nick Hainke <vincent at systemli.org>
AuthorDate: Thu Mar 28 21:36:29 2024 +0100

    tools/xz: update to 5.6.1
    
    Change mirror to github.
    
    Signed-off-by: Nick Hainke <vincent at systemli.org>
---
 tools/xz/Makefile | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/tools/xz/Makefile b/tools/xz/Makefile
index a90cec86bf..b7b9429244 100644
--- a/tools/xz/Makefile
+++ b/tools/xz/Makefile
@@ -7,12 +7,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=xz
-PKG_VERSION:=5.4.6
+PKG_VERSION:=5.6.1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=@SF/lzmautils \
-		http://tukaani.org/xz
-PKG_HASH:=913851b274e8e1d31781ec949f1c23e8dbcf0ecf6e73a2436dc21769dd3e6f49
+PKG_SOURCE_URL:=https://github.com/tukaani-project/xz/releases/download/v$(PKG_VERSION)
+PKG_HASH:=d300422649a0124b1121630be559c890ceedf32667d7064b8128933166c217c8
 PKG_CPE_ID:=cpe:/a:tukaani:xz
 
 HOST_BUILD_PARALLEL:=1



From lede-commits at lists.infradead.org  Fri Mar 29 01:57:15 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 04:57:15 -0400
Subject: [openwrt/openwrt]  tools/cmake: update to 3.29.0
In-Reply-To: <171170263557.164029.1055701014945125577@git-01.infra.openwrt.org>
References: <171170263557.164029.1055701014945125577@git-01.infra.openwrt.org>
Message-ID: <mailman.21482.1711702642.1280.lede-commits@lists.infradead.org>

nick pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b05aad58e810181967bf85884ae351a7f433e3a6

commit b05aad58e810181967bf85884ae351a7f433e3a6
Author: Nick Hainke <vincent at systemli.org>
AuthorDate: Fri Mar 29 07:18:07 2024 +0100

    tools/cmake: update to 3.29.0
    
    Changelog:
    - https://www.kitware.com/cmake-3-29-0-available-for-download/
    
    Refresh patches:
    - 120-curl-fix-libressl-linking.patch
    - 130-bootstrap_parallel_make_flag.patch
    - 150-zstd-libarchive.patch
    
    Signed-off-by: Nick Hainke <vincent at systemli.org>
---
 tools/cmake/Makefile                                       | 4 ++--
 tools/cmake/patches/120-curl-fix-libressl-linking.patch    | 2 +-
 tools/cmake/patches/130-bootstrap_parallel_make_flag.patch | 2 +-
 tools/cmake/patches/150-zstd-libarchive.patch              | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/tools/cmake/Makefile b/tools/cmake/Makefile
index d73f3fba62..1027b671bd 100644
--- a/tools/cmake/Makefile
+++ b/tools/cmake/Makefile
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cmake
-PKG_VERSION:=3.28.3
+PKG_VERSION:=3.29.0
 PKG_VERSION_MAJOR:=$(word 1,$(subst ., ,$(PKG_VERSION))).$(word 2,$(subst ., ,$(PKG_VERSION)))
 PKG_RELEASE:=1
 PKG_CPE_ID:=cpe:/a:kitware:cmake
@@ -15,7 +15,7 @@ PKG_CPE_ID:=cpe:/a:kitware:cmake
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/Kitware/CMake/releases/download/v$(PKG_VERSION)/ \
 		https://cmake.org/files/v$(PKG_VERSION_MAJOR)/
-PKG_HASH:=72b7570e5c8593de6ac4ab433b73eab18c5fb328880460c86ce32608141ad5c1
+PKG_HASH:=a0669630aae7baa4a8228048bf30b622f9e9fd8ee8cedb941754e9e38686c778
 
 HOST_BUILD_PARALLEL:=1
 HOST_CONFIGURE_PARALLEL:=1
diff --git a/tools/cmake/patches/120-curl-fix-libressl-linking.patch b/tools/cmake/patches/120-curl-fix-libressl-linking.patch
index 9d1d86c325..a46acd63da 100644
--- a/tools/cmake/patches/120-curl-fix-libressl-linking.patch
+++ b/tools/cmake/patches/120-curl-fix-libressl-linking.patch
@@ -20,7 +20,7 @@ Signed-off-by: Jo-Philipp Wich <jo at mein.io>
 ---
 --- a/Utilities/cmcurl/CMakeLists.txt
 +++ b/Utilities/cmcurl/CMakeLists.txt
-@@ -650,6 +650,14 @@ if(CURL_USE_OPENSSL)
+@@ -647,6 +647,14 @@ if(CURL_USE_OPENSSL)
    endif()
    set(SSL_ENABLED ON)
    set(USE_OPENSSL ON)
diff --git a/tools/cmake/patches/130-bootstrap_parallel_make_flag.patch b/tools/cmake/patches/130-bootstrap_parallel_make_flag.patch
index 557e27a612..ffe47f9901 100644
--- a/tools/cmake/patches/130-bootstrap_parallel_make_flag.patch
+++ b/tools/cmake/patches/130-bootstrap_parallel_make_flag.patch
@@ -1,6 +1,6 @@
 --- a/bootstrap
 +++ b/bootstrap
-@@ -1491,7 +1491,10 @@ int main(){ printf("1%c", (char)0x0a); r
+@@ -1493,7 +1493,10 @@ int main(){ printf("1%c", (char)0x0a); r
  ' > "test.c"
  cmake_original_make_flags="${cmake_make_flags}"
  if test "x${cmake_parallel_make}" != "x"; then
diff --git a/tools/cmake/patches/150-zstd-libarchive.patch b/tools/cmake/patches/150-zstd-libarchive.patch
index 4ed099fbfe..a6f8e35e6b 100644
--- a/tools/cmake/patches/150-zstd-libarchive.patch
+++ b/tools/cmake/patches/150-zstd-libarchive.patch
@@ -1,6 +1,6 @@
 --- a/Utilities/cmlibarchive/CMakeLists.txt
 +++ b/Utilities/cmlibarchive/CMakeLists.txt
-@@ -636,7 +636,7 @@ IF(ENABLE_ZSTD)
+@@ -656,7 +656,7 @@ IF(ENABLE_ZSTD)
      SET(ZSTD_FIND_QUIETLY TRUE)
    ENDIF (ZSTD_INCLUDE_DIR)
  



From lede-commits at lists.infradead.org  Fri Mar 29 01:58:22 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 04:58:22 -0400
Subject: [openwrt/openwrt]  generic: 6.6: add kernel missing symbol
In-Reply-To: <171170270203.202282.17003826993766169845@git-01.infra.openwrt.org>
References: <171170270203.202282.17003826993766169845@git-01.infra.openwrt.org>
Message-ID: <mailman.21483.1711702706.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/de8a6ce5ea1fc328bae6b82296e342ab0697dd3b

commit de8a6ce5ea1fc328bae6b82296e342ab0697dd3b
Author: Mieczyslaw Nalewaj <namiltd at yahoo.com>
AuthorDate: Thu Mar 28 16:11:31 2024 +0100

    generic: 6.6: add kernel missing symbol
    
    Add missing symbol CONFIG_SSIF_IPMI_BMC causing bcm53xx compilation errors.
    
    Signed-off-by: Mieczyslaw Nalewaj <namiltd at yahoo.com>
---
 target/linux/generic/config-6.6 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index 3322aafc2c..28baaf518e 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -6759,6 +6759,7 @@ CONFIG_SSB_POSSIBLE=y
 # CONFIG_SSB_SDIOHOST is not set
 # CONFIG_SSB_SILENT is not set
 # CONFIG_SSFDC is not set
+# CONFIG_SSIF_IPMI_BMC is not set
 # CONFIG_STACKPROTECTOR is not set
 # CONFIG_STACKPROTECTOR_PER_TASK is not set
 # CONFIG_STACKPROTECTOR_STRONG is not set



From lede-commits at lists.infradead.org  Fri Mar 29 01:58:48 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 04:58:48 -0400
Subject: [openwrt/openwrt]  archs38: default to kernel 6.1
In-Reply-To: <171170272855.217492.3688482806366016939@git-01.infra.openwrt.org>
References: <171170272855.217492.3688482806366016939@git-01.infra.openwrt.org>
Message-ID: <mailman.21484.1711702737.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/00c26f472811f6fc722f202a9fb1a23edb66efcd

commit 00c26f472811f6fc722f202a9fb1a23edb66efcd
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Mar 28 13:24:36 2024 +0100

    archs38: default to kernel 6.1
    
    Default to kernel 6.1 on archs38.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/archs38/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/archs38/Makefile b/target/linux/archs38/Makefile
index 5d69da9a4b..e352c58957 100644
--- a/target/linux/archs38/Makefile
+++ b/target/linux/archs38/Makefile
@@ -11,8 +11,7 @@ BOARDNAME:=Synopsys DesignWare ARC HS38
 FEATURES:=source-only
 SUBTARGETS:=generic
 
-KERNEL_PATCHVER:=5.15
-KERNEL_TESTING_PATCHVER:=6.1
+KERNEL_PATCHVER:=6.1
 
 DEVICE_TYPE:=basic
 



From lede-commits at lists.infradead.org  Fri Mar 29 01:58:49 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 04:58:49 -0400
Subject: [openwrt/openwrt]  archs38: remove 5.15 support
In-Reply-To: <171170272855.217492.3688482806366016939@git-01.infra.openwrt.org>
References: <171170272855.217492.3688482806366016939@git-01.infra.openwrt.org>
Message-ID: <mailman.21485.1711702737.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b1d579f174186b58e9b7694e4c2e673acfe13b55

commit b1d579f174186b58e9b7694e4c2e673acfe13b55
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Thu Mar 28 13:25:09 2024 +0100

    archs38: remove 5.15 support
    
    Since 6.1 is now default, drop 5.15 support.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/archs38/config-5.15 | 256 ---------------------------------------
 1 file changed, 256 deletions(-)

diff --git a/target/linux/archs38/config-5.15 b/target/linux/archs38/config-5.15
deleted file mode 100644
index d4b1c5ab60..0000000000
--- a/target/linux/archs38/config-5.15
+++ /dev/null
@@ -1,256 +0,0 @@
-# CONFIG_16KSTACKS is not set
-CONFIG_ARC=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARC_BUILTIN_DTB_NAME=""
-CONFIG_ARC_CACHE=y
-CONFIG_ARC_CACHE_LINE_SHIFT=6
-CONFIG_ARC_CACHE_PAGES=y
-CONFIG_ARC_CPU_HS=y
-CONFIG_ARC_CURR_IN_REG=y
-CONFIG_ARC_DBG=y
-# CONFIG_ARC_DSP_AGU_USERSPACE is not set
-# CONFIG_ARC_DSP_KERNEL is not set
-CONFIG_ARC_DSP_NONE=y
-# CONFIG_ARC_DSP_USERSPACE is not set
-CONFIG_ARC_DW2_UNWIND=y
-CONFIG_ARC_FPU_SAVE_RESTORE=y
-CONFIG_ARC_HAS_ACCL_REGS=y
-CONFIG_ARC_HAS_DCACHE=y
-# CONFIG_ARC_HAS_DCCM is not set
-CONFIG_ARC_HAS_DIV_REM=y
-CONFIG_ARC_HAS_ICACHE=y
-# CONFIG_ARC_HAS_ICCM is not set
-CONFIG_ARC_HAS_LL64=y
-CONFIG_ARC_HAS_LLSC=y
-# CONFIG_ARC_HAS_PAE40 is not set
-CONFIG_ARC_HAS_SWAPE=y
-CONFIG_ARC_IRQ_NO_AUTOSAVE=y
-CONFIG_ARC_KVADDR_SIZE=256
-# CONFIG_ARC_LPB_DISABLE is not set
-CONFIG_ARC_MCIP=y
-# CONFIG_ARC_METAWARE_HLINK is not set
-CONFIG_ARC_MMU_V4=y
-# CONFIG_ARC_PAGE_SIZE_16K is not set
-# CONFIG_ARC_PAGE_SIZE_4K is not set
-CONFIG_ARC_PAGE_SIZE_8K=y
-CONFIG_ARC_PLAT_AXS10X=y
-# CONFIG_ARC_PLAT_TB10X is not set
-# CONFIG_ARC_SMP_HALT_ON_RESET is not set
-CONFIG_ARC_SOC_HSDK=y
-CONFIG_ARC_TIMERS=y
-CONFIG_ARC_TIMERS_64BIT=y
-CONFIG_ARC_TUNE_MCPU=""
-CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS=y
-CONFIG_AXS103=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_SD=y
-CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
-# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y
-CONFIG_CLK_HSDK=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPU_RMAP=y
-CONFIG_CRC16=y
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_DRBG=y
-CONFIG_CRYPTO_DRBG_HMAC=y
-CONFIG_CRYPTO_DRBG_MENU=y
-CONFIG_CRYPTO_ECHAINIV=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_JITTERENTROPY=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
-CONFIG_CRYPTO_LIB_SHA256=y
-CONFIG_CRYPTO_RNG=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_RNG_DEFAULT=y
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=y
-CONFIG_DMADEVICES=y
-CONFIG_DMA_DIRECT_REMAP=y
-CONFIG_DMA_ENGINE=y
-CONFIG_DMA_OF=y
-CONFIG_DMA_REMAP=y
-CONFIG_DMA_VIRTUAL_CHANNELS=y
-CONFIG_DTC=y
-CONFIG_DWMAC_ANARION=y
-CONFIG_DWMAC_GENERIC=y
-CONFIG_DW_APB_ICTL=y
-CONFIG_DW_AXI_DMAC=y
-CONFIG_EXT4_FS=y
-CONFIG_FAT_FS=y
-CONFIG_FB=y
-CONFIG_FB_CMDLINE=y
-CONFIG_FIXED_PHY=y
-CONFIG_FS_IOMAP=y
-CONFIG_FS_MBCACHE=y
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CSUM=y
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_STRNCPY_FROM_USER=y
-CONFIG_GENERIC_STRNLEN_USER=y
-CONFIG_GPIOLIB_IRQCHIP=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_DWAPB=y
-CONFIG_GPIO_GENERIC=y
-CONFIG_GPIO_SNPS_CREG=y
-CONFIG_GRACE_PERIOD=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_IIO=y
-CONFIG_IIO_BUFFER=y
-CONFIG_IIO_KFIFO_BUF=y
-CONFIG_IIO_ST_PRESS=y
-CONFIG_IIO_ST_PRESS_I2C=y
-CONFIG_IIO_ST_PRESS_SPI=y
-CONFIG_IIO_ST_SENSORS_CORE=y
-CONFIG_IIO_ST_SENSORS_I2C=y
-CONFIG_IIO_ST_SENSORS_SPI=y
-CONFIG_IIO_TRIGGER=y
-CONFIG_IIO_TRIGGERED_BUFFER=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_DOMAIN_HIERARCHY=y
-CONFIG_IRQ_WORK=y
-# CONFIG_ISA_ARCOMPACT is not set
-CONFIG_ISA_ARCV2=y
-CONFIG_JBD2=y
-CONFIG_KALLSYMS=y
-CONFIG_KERNEL_GZIP=y
-CONFIG_LIBFDT=y
-CONFIG_LINUX_LINK_BASE=0x90000000
-CONFIG_LINUX_RAM_BASE=0x80000000
-CONFIG_LOCKD=y
-CONFIG_LOCKUP_DETECTOR=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_LOCK_SPIN_ON_OWNER=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MICREL_PHY=y
-CONFIG_MIGRATION=y
-CONFIG_MMC=y
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_DW=y
-# CONFIG_MMC_DW_BLUEFIELD is not set
-# CONFIG_MMC_DW_EXYNOS is not set
-# CONFIG_MMC_DW_HI3798CV200 is not set
-# CONFIG_MMC_DW_K3 is not set
-CONFIG_MMC_DW_PLTFM=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_PLTFM=y
-CONFIG_MODULES_USE_ELF_RELA=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MUTEX_SPIN_ON_OWNER=y
-CONFIG_NAMESPACES=y
-CONFIG_NATIONAL_PHY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NET_FLOW_LIMIT=y
-CONFIG_NET_NS=y
-CONFIG_NET_PTP_CLASSIFY=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NFS_ACL_SUPPORT=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NLS=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NO_IOPORT_MAP=y
-CONFIG_NR_CPUS=4
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_PADATA=y
-CONFIG_PAGE_POOL=y
-CONFIG_PCS_XPCS=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_PHYLINK=y
-CONFIG_PPS=y
-CONFIG_PREEMPT=y
-CONFIG_PREEMPTION=y
-CONFIG_PREEMPT_COUNT=y
-# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT_RCU=y
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_PTP_1588_CLOCK=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_RATIONAL=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_REGMAP_SPI=y
-CONFIG_RESET_AXS10X=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RESET_HSDK=y
-CONFIG_RESET_SIMPLE=y
-CONFIG_RFS_ACCEL=y
-CONFIG_RPS=y
-CONFIG_RWSEM_SPIN_ON_OWNER=y
-CONFIG_SCSI=y
-CONFIG_SCSI_COMMON=y
-CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
-CONFIG_SERIAL_8250_DW=y
-CONFIG_SERIAL_8250_DWLIB=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_ARC=y
-CONFIG_SERIAL_ARC_CONSOLE=y
-CONFIG_SERIAL_ARC_NR_PORTS=1
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SG_POOL=y
-CONFIG_SMP=y
-CONFIG_SOCK_RX_QUEUE_MAPPING=y
-CONFIG_SOFTLOCKUP_DETECTOR=y
-CONFIG_SPI=y
-CONFIG_SPI_DESIGNWARE=y
-# CONFIG_SPI_DW_DMA is not set
-CONFIG_SPI_DW_MMIO=y
-CONFIG_SPI_MASTER=y
-CONFIG_SPI_MEM=y
-CONFIG_SRCU=y
-CONFIG_STACKTRACE=y
-# CONFIG_STANDALONE is not set
-CONFIG_STMMAC_ETH=y
-CONFIG_STMMAC_PLATFORM=y
-CONFIG_SUNRPC=y
-CONFIG_SWPHY=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TI_ADC108S102=y
-CONFIG_TREE_RCU=y
-CONFIG_TREE_SRCU=y
-CONFIG_UNINLINE_SPIN_UNLOCK=y
-CONFIG_USB_SUPPORT=y
-# CONFIG_USER_NS is not set
-CONFIG_VFAT_FS=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_XPS=y



From lede-commits at lists.infradead.org  Fri Mar 29 05:24:13 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 08:24:13 -0400
Subject: [openwrt/openwrt]  linux-firmware: add LICENSE_FILES and LICENSE file
 handling
In-Reply-To: <171171505346.2985281.7033542051224748815@git-01.infra.openwrt.org>
References: <171171505346.2985281.7033542051224748815@git-01.infra.openwrt.org>
Message-ID: <mailman.21553.1711715063.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5c14de1d7e715ef882f34925ee6702b847efcbbd

commit 5c14de1d7e715ef882f34925ee6702b847efcbbd
Author: Florian Eckert <fe at dev.tdt.de>
AuthorDate: Wed Mar 13 13:21:34 2024 +0100

    linux-firmware: add LICENSE_FILES and LICENSE file handling
    
    The firmware blobs have all different licenses from the different
    manufacturers of the binary blobs. This information is contained in the
    upstream 'linux-firmware' repositroy.
    
    This commit extends the package handling so that this information can be
    added as an additional argument during packages generation.
    
    Signed-off-by: Florian Eckert <fe at dev.tdt.de>
---
 package/firmware/linux-firmware/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/package/firmware/linux-firmware/Makefile b/package/firmware/linux-firmware/Makefile
index d056140f45..b86177b91a 100644
--- a/package/firmware/linux-firmware/Makefile
+++ b/package/firmware/linux-firmware/Makefile
@@ -30,6 +30,8 @@ define Package/firmware-default
   URL:=http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git
   TITLE:=$(1)
   DEPENDS:=$(2)
+  LICENSE_FILES:=$(3)
+  LICENSE:=$(4)
 endef
 
 define Build/Compile



From lede-commits at lists.infradead.org  Fri Mar 29 05:24:14 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 08:24:14 -0400
Subject: [openwrt/openwrt]  linux-firmware: add missing LICENSE_FILES info
In-Reply-To: <171171505346.2985281.7033542051224748815@git-01.infra.openwrt.org>
References: <171171505346.2985281.7033542051224748815@git-01.infra.openwrt.org>
Message-ID: <mailman.21554.1711715065.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/535d487c41fa09b02c215799449fcd571d1dacac

commit 535d487c41fa09b02c215799449fcd571d1dacac
Author: Florian Eckert <fe at dev.tdt.de>
AuthorDate: Wed Mar 13 13:22:20 2024 +0100

    linux-firmware: add missing LICENSE_FILES info
    
    Where it is clear which lincense the firmware package has, the missing
    information are added.
    
    Signed-off-by: Florian Eckert <fe at dev.tdt.de>
---
 package/firmware/linux-firmware/airoha.mk     |  2 +-
 package/firmware/linux-firmware/amd.mk        |  6 +++---
 package/firmware/linux-firmware/broadcom.mk   | 22 ++++++++++----------
 package/firmware/linux-firmware/marvell.mk    | 12 +++++------
 package/firmware/linux-firmware/mediatek.mk   | 14 ++++++-------
 package/firmware/linux-firmware/qca.mk        |  6 +++---
 package/firmware/linux-firmware/qca_ath10k.mk | 30 +++++++++++++--------------
 package/firmware/linux-firmware/qca_ath11k.mk |  6 +++---
 package/firmware/linux-firmware/realtek.mk    | 20 +++++++++---------
 package/firmware/linux-firmware/ti.mk         |  4 ++--
 10 files changed, 61 insertions(+), 61 deletions(-)

diff --git a/package/firmware/linux-firmware/airoha.mk b/package/firmware/linux-firmware/airoha.mk
index ac64d11e41..4d46ac5447 100644
--- a/package/firmware/linux-firmware/airoha.mk
+++ b/package/firmware/linux-firmware/airoha.mk
@@ -1,4 +1,4 @@
-Package/airoha-en8811h-firmware = $(call Package/firmware-default,Airoha EN8811H 2.5G Ethernet PHY firmware)
+Package/airoha-en8811h-firmware = $(call Package/firmware-default,Airoha EN8811H 2.5G Ethernet PHY firmware,,LICENSE.airoha)
 define Package/airoha-en8811h-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/airoha
 	$(CP) \
diff --git a/package/firmware/linux-firmware/amd.mk b/package/firmware/linux-firmware/amd.mk
index 68b305e862..b669cf1b35 100644
--- a/package/firmware/linux-firmware/amd.mk
+++ b/package/firmware/linux-firmware/amd.mk
@@ -1,4 +1,4 @@
-Package/amd64-microcode = $(call Package/firmware-default,AMD64 CPU microcode, at TARGET_x86)
+Package/amd64-microcode = $(call Package/firmware-default,AMD64 CPU microcode, at TARGET_x86,LICENSE.amd-ucode)
 define Package/amd64-microcode/install
 	$(INSTALL_DIR) $(1)/lib/firmware/amd-ucode
 	$(CP) \
@@ -8,7 +8,7 @@ endef
 
 $(eval $(call BuildPackage,amd64-microcode))
 
-Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware)
+Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware,,LICENSE.amdgpura)
 define Package/amdgpu-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/amdgpu
 	$(CP) \
@@ -18,7 +18,7 @@ endef
 
 $(eval $(call BuildPackage,amdgpu-firmware))
 
-Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware)
+Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware,,LICENSE.radeon)
 define Package/radeon-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/radeon
 	$(CP) \
diff --git a/package/firmware/linux-firmware/broadcom.mk b/package/firmware/linux-firmware/broadcom.mk
index 088a2665cc..c4e5885f77 100644
--- a/package/firmware/linux-firmware/broadcom.mk
+++ b/package/firmware/linux-firmware/broadcom.mk
@@ -1,4 +1,4 @@
-Package/brcmfmac-firmware-4339-sdio = $(call Package/firmware-default,Broadcom 4339 FullMAC SDIO firmware)
+Package/brcmfmac-firmware-4339-sdio = $(call Package/firmware-default,Broadcom 4339 FullMAC SDIO firmware,,LICENCE.cypressb)
 define Package/brcmfmac-firmware-4339-sdio/install
 	$(INSTALL_DIR) $(1)/lib/firmware/cypress
 	$(INSTALL_DATA) \
@@ -11,7 +11,7 @@ define Package/brcmfmac-firmware-4339-sdio/install
 endef
 $(eval $(call BuildPackage,brcmfmac-firmware-4339-sdio))
 
-Package/brcmfmac-firmware-43602a1-pcie = $(call Package/firmware-default,Broadcom 43602a1 FullMAC PCIe firmware)
+Package/brcmfmac-firmware-43602a1-pcie = $(call Package/firmware-default,Broadcom 43602a1 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-firmware-43602a1-pcie/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -20,7 +20,7 @@ define Package/brcmfmac-firmware-43602a1-pcie/install
 endef
 $(eval $(call BuildPackage,brcmfmac-firmware-43602a1-pcie))
 
-Package/brcmfmac-firmware-4366b1-pcie = $(call Package/firmware-default,Broadcom 4366b1 FullMAC PCIe firmware)
+Package/brcmfmac-firmware-4366b1-pcie = $(call Package/firmware-default,Broadcom 4366b1 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-firmware-4366b1-pcie/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -29,7 +29,7 @@ define Package/brcmfmac-firmware-4366b1-pcie/install
 endef
 $(eval $(call BuildPackage,brcmfmac-firmware-4366b1-pcie))
 
-Package/brcmfmac-firmware-4366c0-pcie = $(call Package/firmware-default,Broadcom 4366c0 FullMAC PCIe firmware)
+Package/brcmfmac-firmware-4366c0-pcie = $(call Package/firmware-default,Broadcom 4366c0 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-firmware-4366c0-pcie/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -38,7 +38,7 @@ define Package/brcmfmac-firmware-4366c0-pcie/install
 endef
 $(eval $(call BuildPackage,brcmfmac-firmware-4366c0-pcie))
 
-Package/brcmfmac-firmware-4329-sdio = $(call Package/firmware-default,Broadcom BCM4329 FullMac SDIO firmware)
+Package/brcmfmac-firmware-4329-sdio = $(call Package/firmware-default,Broadcom BCM4329 FullMac SDIO firmware,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-firmware-4329-sdio/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -47,7 +47,7 @@ define Package/brcmfmac-firmware-4329-sdio/install
 endef
 $(eval $(call BuildPackage,brcmfmac-firmware-4329-sdio))
 
-Package/brcmfmac-nvram-43430-sdio = $(call Package/firmware-default,Broadcom BCM43430 SDIO NVRAM)
+Package/brcmfmac-nvram-43430-sdio = $(call Package/firmware-default,Broadcom BCM43430 SDIO NVRAM,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-nvram-43430-sdio/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -95,7 +95,7 @@ define Package/brcmfmac-nvram-43430-sdio/install
 endef
 $(eval $(call BuildPackage,brcmfmac-nvram-43430-sdio))
 
-Package/brcmfmac-firmware-43430a0-sdio = $(call Package/firmware-default,Broadcom BCM43430a0 FullMac SDIO firmware)
+Package/brcmfmac-firmware-43430a0-sdio = $(call Package/firmware-default,Broadcom BCM43430a0 FullMac SDIO firmware,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-firmware-43430a0-sdio/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -104,7 +104,7 @@ define Package/brcmfmac-firmware-43430a0-sdio/install
 endef
 $(eval $(call BuildPackage,brcmfmac-firmware-43430a0-sdio))
 
-Package/brcmfmac-nvram-43455-sdio = $(call Package/firmware-default,Broadcom BCM43455 SDIO NVRAM)
+Package/brcmfmac-nvram-43455-sdio = $(call Package/firmware-default,Broadcom BCM43455 SDIO NVRAM,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-nvram-43455-sdio/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -155,7 +155,7 @@ define Package/brcmfmac-nvram-43455-sdio/install
 endef
 $(eval $(call BuildPackage,brcmfmac-nvram-43455-sdio))
 
-Package/brcmfmac-nvram-4356-sdio = $(call Package/firmware-default,Broadcom BCM4356 SDIO NVRAM)
+Package/brcmfmac-nvram-4356-sdio = $(call Package/firmware-default,Broadcom BCM4356 SDIO NVRAM,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-nvram-4356-sdio/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -167,7 +167,7 @@ define Package/brcmfmac-nvram-4356-sdio/install
 endef
 $(eval $(call BuildPackage,brcmfmac-nvram-4356-sdio))
 
-Package/brcmfmac-firmware-usb = $(call Package/firmware-default,Broadcom BCM43xx fullmac USB firmware)
+Package/brcmfmac-firmware-usb = $(call Package/firmware-default,Broadcom BCM43xx fullmac USB firmware,,LICENCE.broadcom_bcm43xx)
 define Package/brcmfmac-firmware-usb/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
@@ -179,7 +179,7 @@ define Package/brcmfmac-firmware-usb/install
 endef
 $(eval $(call BuildPackage,brcmfmac-firmware-usb))
 
-Package/brcmsmac-firmware = $(call Package/firmware-default,Broadcom BCM43xx softmac PCIe firmware)
+Package/brcmsmac-firmware = $(call Package/firmware-default,Broadcom BCM43xx softmac PCIe firmware,,LICENCE.broadcom_bcm43xx)
 define Package/brcmsmac-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/brcm
 	$(INSTALL_DATA) \
diff --git a/package/firmware/linux-firmware/marvell.mk b/package/firmware/linux-firmware/marvell.mk
index 78edac0ff3..17d85a3f11 100644
--- a/package/firmware/linux-firmware/marvell.mk
+++ b/package/firmware/linux-firmware/marvell.mk
@@ -1,4 +1,4 @@
-Package/mwl8k-firmware = $(call Package/firmware-default,Marvell 8366/8687 firmware)
+Package/mwl8k-firmware = $(call Package/firmware-default,Marvell 8366/8687 firmware,,LICENCE.Marvell)
 define Package/mwl8k-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mwl8k
 	$(INSTALL_DATA) \
@@ -11,7 +11,7 @@ define Package/mwl8k-firmware/install
 endef
 $(eval $(call BuildPackage,mwl8k-firmware))
 
-Package/mwifiex-pcie-firmware = $(call Package/firmware-default,Marvell 8897 firmware)
+Package/mwifiex-pcie-firmware = $(call Package/firmware-default,Marvell 8897 firmware,,LICENCE.Marvell)
 define Package/mwifiex-pcie-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mrvl
 	$(INSTALL_DATA) \
@@ -20,7 +20,7 @@ define Package/mwifiex-pcie-firmware/install
 endef
 $(eval $(call BuildPackage,mwifiex-pcie-firmware))
 
-Package/mwifiex-sdio-firmware = $(call Package/firmware-default,Marvell 8887/8997 firmware)
+Package/mwifiex-sdio-firmware = $(call Package/firmware-default,Marvell 8887/8997 firmware,,LICENCE.Marvell)
 define Package/mwifiex-sdio-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mrvl
 	$(INSTALL_DATA) \
@@ -31,7 +31,7 @@ define Package/mwifiex-sdio-firmware/install
 endef
 $(eval $(call BuildPackage,mwifiex-sdio-firmware))
 
-Package/libertas-usb-firmware = $(call Package/firmware-default,Marvell 8388/8682 USB firmware)
+Package/libertas-usb-firmware = $(call Package/firmware-default,Marvell 8388/8682 USB firmware,,LICENCE.Marvell)
 define Package/libertas-usb-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/libertas
 	$(INSTALL_DATA) \
@@ -41,7 +41,7 @@ define Package/libertas-usb-firmware/install
 endef
 $(eval $(call BuildPackage,libertas-usb-firmware))
 
-Package/libertas-sdio-firmware = $(call Package/firmware-default,Marvell 8385/8686/8688 SDIO firmware)
+Package/libertas-sdio-firmware = $(call Package/firmware-default,Marvell 8385/8686/8688 SDIO firmware,,LICENCE.Marvell)
 define Package/libertas-sdio-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/libertas
 	$(INSTALL_DATA) \
@@ -60,7 +60,7 @@ define Package/libertas-sdio-firmware/install
 endef
 $(eval $(call BuildPackage,libertas-sdio-firmware))
 
-Package/libertas-spi-firmware = $(call Package/firmware-default,Marvell 8686 SPI firmware)
+Package/libertas-spi-firmware = $(call Package/firmware-default,Marvell 8686 SPI firmware,,LICENCE.Marvell)
 define Package/libertas-spi-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/libertas
 	$(INSTALL_DATA) \
diff --git a/package/firmware/linux-firmware/mediatek.mk b/package/firmware/linux-firmware/mediatek.mk
index bf6bef22a6..5c448e1033 100644
--- a/package/firmware/linux-firmware/mediatek.mk
+++ b/package/firmware/linux-firmware/mediatek.mk
@@ -1,4 +1,4 @@
-Package/mt7601u-firmware = $(call Package/firmware-default,MediaTek MT7601U firmware)
+Package/mt7601u-firmware = $(call Package/firmware-default,MediaTek MT7601U firmware,,LICENCE.mediatek)
 define Package/mt7601u-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mediatek
 	$(INSTALL_DATA) \
@@ -42,7 +42,7 @@ define Package/rt73-usb-firmware/install
 endef
 $(eval $(call BuildPackage,rt73-usb-firmware))
 
-Package/mt7622bt-firmware = $(call Package/firmware-default,mt7622bt firmware)
+Package/mt7622bt-firmware = $(call Package/firmware-default,mt7622bt firmware,,LICENCE.mediatek)
 define Package/mt7622bt-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mediatek
 	$(INSTALL_DATA) \
@@ -51,7 +51,7 @@ define Package/mt7622bt-firmware/install
 endef
 $(eval $(call BuildPackage,mt7622bt-firmware))
 
-Package/mt7921bt-firmware = $(call Package/firmware-default,mt7921bt firmware)
+Package/mt7921bt-firmware = $(call Package/firmware-default,mt7921bt firmware,,LICENCE.mediatek)
 define Package/mt7921bt-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mediatek
 	$(INSTALL_DATA) \
@@ -60,7 +60,7 @@ define Package/mt7921bt-firmware/install
 endef
 $(eval $(call BuildPackage,mt7921bt-firmware))
 
-Package/mt7922bt-firmware = $(call Package/firmware-default,mt7922bt firmware)
+Package/mt7922bt-firmware = $(call Package/firmware-default,mt7922bt firmware,,LICENCE.mediatek)
 define Package/mt7922bt-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mediatek
 	$(INSTALL_DATA) \
@@ -69,7 +69,7 @@ define Package/mt7922bt-firmware/install
 endef
 $(eval $(call BuildPackage,mt7922bt-firmware))
 
-Package/mt7981-wo-firmware = $(call Package/firmware-default,MT7981 offload firmware)
+Package/mt7981-wo-firmware = $(call Package/firmware-default,MT7981 offload firmware,,LICENCE.mediatek)
 define Package/mt7981-wo-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mediatek
 	$(INSTALL_DATA) \
@@ -78,7 +78,7 @@ define Package/mt7981-wo-firmware/install
 endef
 $(eval $(call BuildPackage,mt7981-wo-firmware))
 
-Package/mt7986-wo-firmware = $(call Package/firmware-default,MT7986 offload firmware)
+Package/mt7986-wo-firmware = $(call Package/firmware-default,MT7986 offload firmware,,LICENCE.mediatek)
 define Package/mt7986-wo-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mediatek
 	$(INSTALL_DATA) \
@@ -88,7 +88,7 @@ define Package/mt7986-wo-firmware/install
 endef
 $(eval $(call BuildPackage,mt7986-wo-firmware))
 
-Package/mt7988-2p5g-phy-firmware = $(call Package/firmware-default,MT7988 built-in 2.5G Ethernet PHY firmware)
+Package/mt7988-2p5g-phy-firmware = $(call Package/firmware-default,MT7988 built-in 2.5G Ethernet PHY firmware,,LICENCE.mediatek)
 define Package/mt7988-2p5g-phy-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/mediatek/mt7988
 	$(INSTALL_DATA) \
diff --git a/package/firmware/linux-firmware/qca.mk b/package/firmware/linux-firmware/qca.mk
index 71b484d5c7..5f44fe45e3 100644
--- a/package/firmware/linux-firmware/qca.mk
+++ b/package/firmware/linux-firmware/qca.mk
@@ -1,4 +1,4 @@
-Package/ar3k-firmware = $(call Package/firmware-default,ath3k firmware)
+Package/ar3k-firmware = $(call Package/firmware-default,ath3k firmware,,LICENSE.QualcommAtheros_ar3k)
 define Package/ar3k-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ar3k
 	$(CP) \
@@ -21,7 +21,7 @@ define Package/ath6k-firmware/install
 endef
 $(eval $(call BuildPackage,ath6k-firmware))
 
-Package/ath9k-htc-firmware = $(call Package/firmware-default,AR9271/AR7010 firmware)
+Package/ath9k-htc-firmware = $(call Package/firmware-default,AR9271/AR7010 firmware,,LICENCE.open-ath9k-htc-firmware)
 define Package/ath9k-htc-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath9k_htc
 	$(INSTALL_DATA) \
@@ -31,7 +31,7 @@ define Package/ath9k-htc-firmware/install
 endef
 $(eval $(call BuildPackage,ath9k-htc-firmware))
 
-Package/carl9170-firmware = $(call Package/firmware-default,AR9170 firmware)
+Package/carl9170-firmware = $(call Package/firmware-default,AR9170 firmware,,carl9170fw/GPL)
 define Package/carl9170-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/carl9170-1.fw $(1)/lib/firmware
diff --git a/package/firmware/linux-firmware/qca_ath10k.mk b/package/firmware/linux-firmware/qca_ath10k.mk
index 25a1571ad6..b3bfe8a391 100644
--- a/package/firmware/linux-firmware/qca_ath10k.mk
+++ b/package/firmware/linux-firmware/qca_ath10k.mk
@@ -1,4 +1,4 @@
-Package/ath10k-board-qca4019 = $(call Package/firmware-default,ath10k qca4019 board firmware)
+Package/ath10k-board-qca4019 = $(call Package/firmware-default,ath10k qca4019 board firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-board-qca4019/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0
 	$(INSTALL_DATA) \
@@ -6,7 +6,7 @@ define Package/ath10k-board-qca4019/install
 		$(1)/lib/firmware/ath10k/QCA4019/hw1.0/
 endef
 $(eval $(call BuildPackage,ath10k-board-qca4019))
-Package/ath10k-firmware-qca4019 = $(call Package/firmware-default,ath10k qca4019 firmware)
+Package/ath10k-firmware-qca4019 = $(call Package/firmware-default,ath10k qca4019 firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-firmware-qca4019/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0
 	$(INSTALL_DATA) \
@@ -15,7 +15,7 @@ define Package/ath10k-firmware-qca4019/install
 endef
 $(eval $(call BuildPackage,ath10k-firmware-qca4019))
 
-Package/ath10k-board-qca9377 = $(call Package/firmware-default,ath10k qca9377 board firmware)
+Package/ath10k-board-qca9377 = $(call Package/firmware-default,ath10k qca9377 board firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-board-qca9377/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9377/hw1.0
 	$(INSTALL_DATA) \
@@ -23,7 +23,7 @@ define Package/ath10k-board-qca9377/install
 		$(1)/lib/firmware/ath10k/QCA9377/hw1.0/
 endef
 $(eval $(call BuildPackage,ath10k-board-qca9377))
-Package/ath10k-firmware-qca9377 = $(call Package/firmware-default,ath10k qca9377 firmware,+ath10k-board-qca9377)
+Package/ath10k-firmware-qca9377 = $(call Package/firmware-default,ath10k qca9377 firmware,+ath10k-board-qca9377,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-firmware-qca9377/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9377/hw1.0
 	$(INSTALL_DATA) \
@@ -32,7 +32,7 @@ define Package/ath10k-firmware-qca9377/install
 endef
 $(eval $(call BuildPackage,ath10k-firmware-qca9377))
 
-Package/ath10k-board-qca9887 = $(call Package/firmware-default,ath10k qca9887 board firmware)
+Package/ath10k-board-qca9887 = $(call Package/firmware-default,ath10k qca9887 board firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-board-qca9887/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9887/hw1.0
 	$(INSTALL_DATA) \
@@ -40,7 +40,7 @@ define Package/ath10k-board-qca9887/install
 		$(1)/lib/firmware/ath10k/QCA9887/hw1.0/board.bin
 endef
 $(eval $(call BuildPackage,ath10k-board-qca9887))
-Package/ath10k-firmware-qca9887 = $(call Package/firmware-default,ath10k qca9887 firmware,+ath10k-board-qca9887)
+Package/ath10k-firmware-qca9887 = $(call Package/firmware-default,ath10k qca9887 firmware,+ath10k-board-qca9887,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-firmware-qca9887/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9887/hw1.0
 	$(INSTALL_DATA) \
@@ -49,7 +49,7 @@ define Package/ath10k-firmware-qca9887/install
 endef
 $(eval $(call BuildPackage,ath10k-firmware-qca9887))
 
-Package/ath10k-board-qca9888 = $(call Package/firmware-default,ath10k qca9888 board firmware)
+Package/ath10k-board-qca9888 = $(call Package/firmware-default,ath10k qca9888 board firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-board-qca9888/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
 	$(INSTALL_DATA) \
@@ -57,7 +57,7 @@ define Package/ath10k-board-qca9888/install
 		$(1)/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
 endef
 $(eval $(call BuildPackage,ath10k-board-qca9888))
-Package/ath10k-firmware-qca9888 = $(call Package/firmware-default,ath10k qca9888 firmware,+ath10k-board-qca9888)
+Package/ath10k-firmware-qca9888 = $(call Package/firmware-default,ath10k qca9888 firmware,+ath10k-board-qca9888,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-firmware-qca9888/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
 	$(INSTALL_DATA) \
@@ -66,7 +66,7 @@ define Package/ath10k-firmware-qca9888/install
 endef
 $(eval $(call BuildPackage,ath10k-firmware-qca9888))
 
-Package/ath10k-board-qca988x = $(call Package/firmware-default,ath10k qca988x board firmware)
+Package/ath10k-board-qca988x = $(call Package/firmware-default,ath10k qca988x board firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-board-qca988x/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
 	$(INSTALL_DATA) \
@@ -74,7 +74,7 @@ define Package/ath10k-board-qca988x/install
 		$(1)/lib/firmware/ath10k/QCA988X/hw2.0/
 endef
 $(eval $(call BuildPackage,ath10k-board-qca988x))
-Package/ath10k-firmware-qca988x = $(call Package/firmware-default,ath10k qca988x firmware,+ath10k-board-qca988x)
+Package/ath10k-firmware-qca988x = $(call Package/firmware-default,ath10k qca988x firmware,+ath10k-board-qca988x,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-firmware-qca988x/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
 	$(INSTALL_DATA) \
@@ -83,7 +83,7 @@ define Package/ath10k-firmware-qca988x/install
 endef
 $(eval $(call BuildPackage,ath10k-firmware-qca988x))
 
-Package/ath10k-firmware-qca6174 = $(call Package/firmware-default,ath10k qca6174 firmware)
+Package/ath10k-firmware-qca6174 = $(call Package/firmware-default,ath10k qca6174 firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-firmware-qca6174/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA6174/hw2.1
 	$(INSTALL_DATA) \
@@ -102,7 +102,7 @@ define Package/ath10k-firmware-qca6174/install
 endef
 $(eval $(call BuildPackage,ath10k-firmware-qca6174))
 
-Package/ath10k-board-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 board firmware)
+Package/ath10k-board-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 board firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-board-qca99x0/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA99X0/hw2.0
 	$(INSTALL_DATA) \
@@ -111,7 +111,7 @@ define Package/ath10k-board-qca99x0/install
 endef
 $(eval $(call BuildPackage,ath10k-board-qca99x0))
 
-Package/ath10k-firmware-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 firmware,+ath10k-board-qca99x0)
+Package/ath10k-firmware-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 firmware,+ath10k-board-qca99x0,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-firmware-qca99x0/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA99X0/hw2.0
 	$(INSTALL_DATA) \
@@ -120,7 +120,7 @@ define Package/ath10k-firmware-qca99x0/install
 endef
 $(eval $(call BuildPackage,ath10k-firmware-qca99x0))
 
-Package/ath10k-board-qca9984 = $(call Package/firmware-default,ath10k qca9984 board firmware)
+Package/ath10k-board-qca9984 = $(call Package/firmware-default,ath10k qca9984 board firmware,,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-board-qca9984/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
 	$(INSTALL_DATA) \
@@ -128,7 +128,7 @@ define Package/ath10k-board-qca9984/install
 		$(1)/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
 endef
 $(eval $(call BuildPackage,ath10k-board-qca9984))
-Package/ath10k-firmware-qca9984 = $(call Package/firmware-default,ath10k qca9984 firmware,+ath10k-board-qca9984)
+Package/ath10k-firmware-qca9984 = $(call Package/firmware-default,ath10k qca9984 firmware,+ath10k-board-qca9984,LICENSE.QualcommAtheros_ath10k)
 define Package/ath10k-firmware-qca9984/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
 	$(INSTALL_DATA) \
diff --git a/package/firmware/linux-firmware/qca_ath11k.mk b/package/firmware/linux-firmware/qca_ath11k.mk
index b8f6ab8605..3571198d1b 100644
--- a/package/firmware/linux-firmware/qca_ath11k.mk
+++ b/package/firmware/linux-firmware/qca_ath11k.mk
@@ -1,4 +1,4 @@
-Package/ath11k-firmware-qca6390 = $(call Package/firmware-default,QCA6390 ath11k firmware)
+Package/ath11k-firmware-qca6390 = $(call Package/firmware-default,QCA6390 ath11k firmware,,LICENCE.atheros_firmware)
 define Package/ath11k-firmware-qca6390/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCA6390/hw2.0
 	$(INSTALL_DATA) \
@@ -6,7 +6,7 @@ define Package/ath11k-firmware-qca6390/install
 endef
 $(eval $(call BuildPackage,ath11k-firmware-qca6390))
 
-Package/ath11k-firmware-wcn6750 = $(call Package/firmware-default,WCN6750 ath11k firmware)
+Package/ath11k-firmware-wcn6750 = $(call Package/firmware-default,WCN6750 ath11k firmware,,LICENCE.atheros_firmware)
 define Package/ath11k-firmware-wcn6750/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath11k/WCN6750/hw1.0
 	$(INSTALL_DATA) \
@@ -14,7 +14,7 @@ define Package/ath11k-firmware-wcn6750/install
 endef
 $(eval $(call BuildPackage,ath11k-firmware-wcn6750))
 
-Package/ath11k-firmware-wcn6855 = $(call Package/firmware-default,WCN6855 ath11k firmware)
+Package/ath11k-firmware-wcn6855 = $(call Package/firmware-default,WCN6855 ath11k firmware,,LICENCE.atheros_firmware)
 define Package/ath11k-firmware-wcn6855/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath11k/WCN6855/hw2.0
 	$(INSTALL_DATA) \
diff --git a/package/firmware/linux-firmware/realtek.mk b/package/firmware/linux-firmware/realtek.mk
index 81e91ba085..e077c796be 100644
--- a/package/firmware/linux-firmware/realtek.mk
+++ b/package/firmware/linux-firmware/realtek.mk
@@ -20,7 +20,7 @@ define Package/r8169-firmware/install
 endef
 $(eval $(call BuildPackage,r8169-firmware))
 
-Package/rtl8188eu-firmware = $(call Package/firmware-default,RealTek RTL8188EU firmware)
+Package/rtl8188eu-firmware = $(call Package/firmware-default,RealTek RTL8188EU firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8188eu-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(CP) \
@@ -29,7 +29,7 @@ define Package/rtl8188eu-firmware/install
 endef
 $(eval $(call BuildPackage,rtl8188eu-firmware))
 
-Package/rtl8188fu-firmware = $(call Package/firmware-default,RealTek RTL8188FU firmware)
+Package/rtl8188fu-firmware = $(call Package/firmware-default,RealTek RTL8188FU firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8188fu-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(CP) \
@@ -38,7 +38,7 @@ define Package/rtl8188fu-firmware/install
 endef
 $(eval $(call BuildPackage,rtl8188fu-firmware))
 
-Package/rtl8192ce-firmware = $(call Package/firmware-default,RealTek RTL8192CE firmware)
+Package/rtl8192ce-firmware = $(call Package/firmware-default,RealTek RTL8192CE firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8192ce-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cfw.bin $(1)/lib/firmware/rtlwifi
@@ -47,7 +47,7 @@ define Package/rtl8192ce-firmware/install
 endef
 $(eval $(call BuildPackage,rtl8192ce-firmware))
 
-Package/rtl8192cu-firmware = $(call Package/firmware-default,RealTek RTL8192CU firmware)
+Package/rtl8192cu-firmware = $(call Package/firmware-default,RealTek RTL8192CU firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8192cu-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cufw.bin $(1)/lib/firmware/rtlwifi
@@ -57,28 +57,28 @@ define Package/rtl8192cu-firmware/install
 endef
 $(eval $(call BuildPackage,rtl8192cu-firmware))
 
-Package/rtl8192de-firmware = $(call Package/firmware-default,RealTek RTL8192DE firmware)
+Package/rtl8192de-firmware = $(call Package/firmware-default,RealTek RTL8192DE firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8192de-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192defw.bin $(1)/lib/firmware/rtlwifi
 endef
 $(eval $(call BuildPackage,rtl8192de-firmware))
 
-Package/rtl8192eu-firmware = $(call Package/firmware-default,RealTek RTL8192EU firmware)
+Package/rtl8192eu-firmware = $(call Package/firmware-default,RealTek RTL8192EU firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8192eu-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192eu_nic.bin $(1)/lib/firmware/rtlwifi
 endef
 $(eval $(call BuildPackage,rtl8192eu-firmware))
 
-Package/rtl8192se-firmware = $(call Package/firmware-default,RealTek RTL8192SE firmware)
+Package/rtl8192se-firmware = $(call Package/firmware-default,RealTek RTL8192SE firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8192se-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192sefw.bin $(1)/lib/firmware/rtlwifi
 endef
 $(eval $(call BuildPackage,rtl8192se-firmware))
 
-Package/rtl8723au-firmware = $(call Package/firmware-default,RealTek RTL8723AU firmware)
+Package/rtl8723au-firmware = $(call Package/firmware-default,RealTek RTL8723AU firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8723au-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723aufw_A.bin $(1)/lib/firmware/rtlwifi
@@ -87,7 +87,7 @@ define Package/rtl8723au-firmware/install
 endef
 $(eval $(call BuildPackage,rtl8723au-firmware))
 
-Package/rtl8723bu-firmware = $(call Package/firmware-default,RealTek RTL8723BU firmware)
+Package/rtl8723bu-firmware = $(call Package/firmware-default,RealTek RTL8723BU firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8723bu-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723bu_nic.bin $(1)/lib/firmware/rtlwifi
@@ -125,7 +125,7 @@ define Package/rtl8761bu-firmware/install
 endef
 $(eval $(call BuildPackage,rtl8761bu-firmware))
 
-Package/rtl8821ae-firmware = $(call Package/firmware-default,RealTek RTL8821AE firmware)
+Package/rtl8821ae-firmware = $(call Package/firmware-default,RealTek RTL8821AE firmware,,LICENCE.rtlwifi_firmware.txt)
 define Package/rtl8821ae-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8821aefw.bin $(1)/lib/firmware/rtlwifi
diff --git a/package/firmware/linux-firmware/ti.mk b/package/firmware/linux-firmware/ti.mk
index 2b9710706b..a4f28ef048 100644
--- a/package/firmware/linux-firmware/ti.mk
+++ b/package/firmware/linux-firmware/ti.mk
@@ -1,4 +1,4 @@
-Package/wl12xx-firmware = $(call Package/firmware-default,TI WL12xx firmware)
+Package/wl12xx-firmware = $(call Package/firmware-default,TI WL12xx firmware,,LICENCE.ti-connectivity)
 define Package/wl12xx-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ti-connectivity
 	$(INSTALL_DATA) \
@@ -15,7 +15,7 @@ define Package/wl12xx-firmware/install
 endef
 $(eval $(call BuildPackage,wl12xx-firmware))
 
-Package/wl18xx-firmware = $(call Package/firmware-default,TI WL18xx firmware)
+Package/wl18xx-firmware = $(call Package/firmware-default,TI WL18xx firmware,,LICENCE.ti-connectivity)
 define Package/wl18xx-firmware/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ti-connectivity
 	$(INSTALL_DATA) \



From lede-commits at lists.infradead.org  Fri Mar 29 05:45:47 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 08:45:47 -0400
Subject: [openwrt/openwrt]  kernel: bump 5.15 to 5.15.152
In-Reply-To: <171171634641.3711128.1322661451906406247@git-01.infra.openwrt.org>
References: <171171634641.3711128.1322661451906406247@git-01.infra.openwrt.org>
Message-ID: <mailman.21601.1711716431.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/2ec025d5547182da07bdd8299d2e97d05f695537

commit 2ec025d5547182da07bdd8299d2e97d05f695537
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Tue Mar 26 01:18:15 2024 +0100

    kernel: bump 5.15 to 5.15.152
    
    Removed because it is upstream:
    generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=fbddd48f1456db32b675fad95a902de38345902a
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/kernel-5.15                                |  4 +-
 ...-add-support-for-performing-fake-doorbell.patch |  2 +-
 ...llow-to-define-reg_update_bits-for-no-bus.patch | 52 ----------------------
 ...-add-configurable-downshift-for-addresses.patch | 10 ++---
 ...w-a-defined-reg_base-to-be-added-to-every.patch | 10 ++---
 ...y-reg_base-and-reg_downshift-for-single-r.patch |  6 +--
 .../generic/hack-5.15/259-regmap_dynamic.patch     |  2 +-
 ...jecting-with-source-address-failed-policy.patch | 14 +++---
 8 files changed, 24 insertions(+), 76 deletions(-)

diff --git a/include/kernel-5.15 b/include/kernel-5.15
index 4d621b63e8..ba6b497c3b 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .151
-LINUX_KERNEL_HASH-5.15.151 = 8a1e760bf2660947234109aa4fdbbe3686238b4e852157b96c59356689107e49
+LINUX_VERSION-5.15 = .152
+LINUX_KERNEL_HASH-5.15.152 = f0805225f4a5b24d0bba9302c2c2f261c04f737ac5dd931da9b112e9f3e4a47e
diff --git a/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
index 1d3a21b6cd..49277ab251 100644
--- a/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
+++ b/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
@@ -109,7 +109,7 @@ it on BCM4708 family.
  
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1907,6 +1907,7 @@ struct xhci_hcd {
+@@ -1908,6 +1908,7 @@ struct xhci_hcd {
  #define XHCI_RESET_TO_DEFAULT	BIT_ULL(44)
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
diff --git a/target/linux/generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch b/target/linux/generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
deleted file mode 100644
index e4c0833ae7..0000000000
--- a/target/linux/generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 02d6fdecb9c38de19065f6bed8d5214556fd061d Mon Sep 17 00:00:00 2001
-From: Ansuel Smith <ansuelsmth at gmail.com>
-Date: Thu, 4 Nov 2021 16:00:40 +0100
-Subject: regmap: allow to define reg_update_bits for no bus configuration
-
-Some device requires a special handling for reg_update_bits and can't use
-the normal regmap read write logic. An example is when locking is
-handled by the device and rmw operations requires to do atomic operations.
-Allow to declare a dedicated function in regmap_config for
-reg_update_bits in no bus configuration.
-
-Signed-off-by: Ansuel Smith <ansuelsmth at gmail.com>
-Link: https://lore.kernel.org/r/20211104150040.1260-1-ansuelsmth at gmail.com
-Signed-off-by: Mark Brown <broonie at kernel.org>
----
- drivers/base/regmap/regmap.c | 1 +
- include/linux/regmap.h       | 7 +++++++
- 2 files changed, 8 insertions(+)
-
---- a/drivers/base/regmap/regmap.c
-+++ b/drivers/base/regmap/regmap.c
-@@ -877,6 +877,7 @@ struct regmap *__regmap_init(struct devi
- 	if (!bus) {
- 		map->reg_read  = config->reg_read;
- 		map->reg_write = config->reg_write;
-+		map->reg_update_bits = config->reg_update_bits;
- 
- 		map->defer_caching = false;
- 		goto skip_format_initialization;
---- a/include/linux/regmap.h
-+++ b/include/linux/regmap.h
-@@ -290,6 +290,11 @@ typedef void (*regmap_unlock)(void *);
-  *		  read operation on a bus such as SPI, I2C, etc. Most of the
-  *		  devices do not need this.
-  * @reg_write:	  Same as above for writing.
-+ * @reg_update_bits: Optional callback that if filled will be used to perform
-+ *		     all the update_bits(rmw) operation. Should only be provided
-+ *		     if the function require special handling with lock and reg
-+ *		     handling and the operation cannot be represented as a simple
-+ *		     update_bits operation on a bus such as SPI, I2C, etc.
-  * @fast_io:	  Register IO is fast. Use a spinlock instead of a mutex
-  *	     	  to perform locking. This field is ignored if custom lock/unlock
-  *	     	  functions are used (see fields lock/unlock of struct regmap_config).
-@@ -372,6 +377,8 @@ struct regmap_config {
- 
- 	int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
- 	int (*reg_write)(void *context, unsigned int reg, unsigned int val);
-+	int (*reg_update_bits)(void *context, unsigned int reg,
-+			       unsigned int mask, unsigned int val);
- 
- 	bool fast_io;
- 
diff --git a/target/linux/generic/backport-5.15/350-v5.18-regmap-add-configurable-downshift-for-addresses.patch b/target/linux/generic/backport-5.15/350-v5.18-regmap-add-configurable-downshift-for-addresses.patch
index 7bb328f3a6..175df150cc 100644
--- a/target/linux/generic/backport-5.15/350-v5.18-regmap-add-configurable-downshift-for-addresses.patch
+++ b/target/linux/generic/backport-5.15/350-v5.18-regmap-add-configurable-downshift-for-addresses.patch
@@ -37,7 +37,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	map->format.val_bytes = DIV_ROUND_UP(config->val_bits, 8);
  	map->format.buf_size = DIV_ROUND_UP(config->reg_bits +
  			config->val_bits + config->pad_bits, 8);
-@@ -1737,6 +1738,7 @@ static int _regmap_raw_write_impl(struct
+@@ -1750,6 +1751,7 @@ static int _regmap_raw_write_impl(struct
  			return ret;
  	}
  
@@ -45,7 +45,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	map->format.format_reg(map->work_buf, reg, map->reg_shift);
  	regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
  				      map->write_flag_mask);
-@@ -1907,6 +1909,7 @@ static int _regmap_bus_formatted_write(v
+@@ -1920,6 +1922,7 @@ static int _regmap_bus_formatted_write(v
  			return ret;
  	}
  
@@ -53,7 +53,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	map->format.format_write(map, reg, val);
  
  	trace_regmap_hw_write_start(map, reg, 1);
-@@ -2348,6 +2351,7 @@ static int _regmap_raw_multi_reg_write(s
+@@ -2360,6 +2363,7 @@ static int _regmap_raw_multi_reg_write(s
  		unsigned int reg = regs[i].reg;
  		unsigned int val = regs[i].def;
  		trace_regmap_hw_write_start(map, reg, 1);
@@ -61,7 +61,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  		map->format.format_reg(u8, reg, map->reg_shift);
  		u8 += reg_bytes + pad_bytes;
  		map->format.format_val(u8, val, 0);
-@@ -2675,6 +2679,7 @@ static int _regmap_raw_read(struct regma
+@@ -2685,6 +2689,7 @@ static int _regmap_raw_read(struct regma
  			return ret;
  	}
  
@@ -80,7 +80,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
   * @pad_bits: Number of bits of padding between register and value.
   * @val_bits: Number of bits in a register value, mandatory.
   *
-@@ -360,6 +362,7 @@ struct regmap_config {
+@@ -366,6 +368,7 @@ struct regmap_config {
  
  	int reg_bits;
  	int reg_stride;
diff --git a/target/linux/generic/backport-5.15/351-v5.18-regmap-allow-a-defined-reg_base-to-be-added-to-every.patch b/target/linux/generic/backport-5.15/351-v5.18-regmap-allow-a-defined-reg_base-to-be-added-to-every.patch
index 841f8d4528..df716c4b65 100644
--- a/target/linux/generic/backport-5.15/351-v5.18-regmap-allow-a-defined-reg_base-to-be-added-to-every.patch
+++ b/target/linux/generic/backport-5.15/351-v5.18-regmap-allow-a-defined-reg_base-to-be-added-to-every.patch
@@ -42,7 +42,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	map->format.reg_bytes = DIV_ROUND_UP(config->reg_bits, 8);
  	map->format.pad_bytes = config->pad_bits / 8;
  	map->format.reg_downshift = config->reg_downshift;
-@@ -1738,6 +1740,7 @@ static int _regmap_raw_write_impl(struct
+@@ -1751,6 +1753,7 @@ static int _regmap_raw_write_impl(struct
  			return ret;
  	}
  
@@ -50,7 +50,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	reg >>= map->format.reg_downshift;
  	map->format.format_reg(map->work_buf, reg, map->reg_shift);
  	regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
-@@ -1909,6 +1912,7 @@ static int _regmap_bus_formatted_write(v
+@@ -1922,6 +1925,7 @@ static int _regmap_bus_formatted_write(v
  			return ret;
  	}
  
@@ -58,7 +58,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	reg >>= map->format.reg_downshift;
  	map->format.format_write(map, reg, val);
  
-@@ -2351,6 +2355,7 @@ static int _regmap_raw_multi_reg_write(s
+@@ -2363,6 +2367,7 @@ static int _regmap_raw_multi_reg_write(s
  		unsigned int reg = regs[i].reg;
  		unsigned int val = regs[i].def;
  		trace_regmap_hw_write_start(map, reg, 1);
@@ -66,7 +66,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  		reg >>= map->format.reg_downshift;
  		map->format.format_reg(u8, reg, map->reg_shift);
  		u8 += reg_bytes + pad_bytes;
-@@ -2679,6 +2684,7 @@ static int _regmap_raw_read(struct regma
+@@ -2689,6 +2694,7 @@ static int _regmap_raw_read(struct regma
  			return ret;
  	}
  
@@ -85,7 +85,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
   * @pad_bits: Number of bits of padding between register and value.
   * @val_bits: Number of bits in a register value, mandatory.
   *
-@@ -363,6 +365,7 @@ struct regmap_config {
+@@ -369,6 +371,7 @@ struct regmap_config {
  	int reg_bits;
  	int reg_stride;
  	int reg_downshift;
diff --git a/target/linux/generic/backport-5.15/352-v6.3-regmap-apply-reg_base-and-reg_downshift-for-single-r.patch b/target/linux/generic/backport-5.15/352-v6.3-regmap-apply-reg_base-and-reg_downshift-for-single-r.patch
index bc3865c75b..33de94cb17 100644
--- a/target/linux/generic/backport-5.15/352-v6.3-regmap-apply-reg_base-and-reg_downshift-for-single-r.patch
+++ b/target/linux/generic/backport-5.15/352-v6.3-regmap-apply-reg_base-and-reg_downshift-for-single-r.patch
@@ -28,7 +28,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
 
 --- a/drivers/base/regmap/regmap.c
 +++ b/drivers/base/regmap/regmap.c
-@@ -1931,6 +1931,8 @@ static int _regmap_bus_reg_write(void *c
+@@ -1943,6 +1943,8 @@ static int _regmap_bus_reg_write(void *c
  {
  	struct regmap *map = context;
  
@@ -37,7 +37,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	return map->bus->reg_write(map->bus_context, reg, val);
  }
  
-@@ -2705,6 +2707,8 @@ static int _regmap_bus_reg_read(void *co
+@@ -2715,6 +2717,8 @@ static int _regmap_bus_reg_read(void *co
  {
  	struct regmap *map = context;
  
@@ -46,7 +46,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	return map->bus->reg_read(map->bus_context, reg, val);
  }
  
-@@ -3080,6 +3084,8 @@ static int _regmap_update_bits(struct re
+@@ -3084,6 +3088,8 @@ static int _regmap_update_bits(struct re
  		*change = false;
  
  	if (regmap_volatile(map, reg) && map->reg_update_bits) {
diff --git a/target/linux/generic/hack-5.15/259-regmap_dynamic.patch b/target/linux/generic/hack-5.15/259-regmap_dynamic.patch
index e0820ccfc0..ea06821c4b 100644
--- a/target/linux/generic/hack-5.15/259-regmap_dynamic.patch
+++ b/target/linux/generic/hack-5.15/259-regmap_dynamic.patch
@@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/mutex.h>
  #include <linux/err.h>
  #include <linux/property.h>
-@@ -3360,3 +3361,5 @@ static int __init regmap_initcall(void)
+@@ -3364,3 +3365,5 @@ static int __init regmap_initcall(void)
  	return 0;
  }
  postcore_initcall(regmap_initcall);
diff --git a/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 071a2ed3e5..4c97d8b9ec 100644
--- a/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -6298,6 +6329,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6291,6 +6322,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -6309,6 +6342,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6302,6 +6335,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -6500,6 +6534,8 @@ static int __net_init ip6_route_net_init
+@@ -6493,6 +6527,8 @@ static int __net_init ip6_route_net_init
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	net->ipv6.fib6_has_custom_rules = false;
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
  					       sizeof(*net->ipv6.ip6_prohibit_entry),
  					       GFP_KERNEL);
-@@ -6510,11 +6546,21 @@ static int __net_init ip6_route_net_init
+@@ -6503,11 +6539,21 @@ static int __net_init ip6_route_net_init
  			 ip6_template_metrics, true);
  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
  
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
-@@ -6541,6 +6587,8 @@ out:
+@@ -6534,6 +6580,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -6560,6 +6608,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6553,6 +6601,7 @@ static void __net_exit ip6_route_net_exi
  	kfree(net->ipv6.ip6_null_entry);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	kfree(net->ipv6.ip6_blk_hole_entry);
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6643,6 +6692,9 @@ void __init ip6_route_init_special_entri
+@@ -6636,6 +6685,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);



From lede-commits at lists.infradead.org  Fri Mar 29 05:45:46 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 08:45:46 -0400
Subject: [openwrt/openwrt]  kernel: bump 5.15 to 5.15.151
In-Reply-To: <171171634641.3711128.1322661451906406247@git-01.infra.openwrt.org>
References: <171171634641.3711128.1322661451906406247@git-01.infra.openwrt.org>
Message-ID: <mailman.21602.1711716432.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/030757112413760bdb5941776d6ca35d3c7e0833

commit 030757112413760bdb5941776d6ca35d3c7e0833
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Mon Mar 25 23:54:57 2024 +0100

    kernel: bump 5.15 to 5.15.151
    
    No manual changes needed.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/kernel-5.15                                |  4 +-
 ...-gigadevice-add-support-for-GD5FxGQ4xExxG.patch |  2 +-
 ...-gigadevice-add-support-for-GD5F1GQ5RExxG.patch |  2 +-
 ...-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch |  2 +-
 ...-gigadevice-add-support-for-GD5FxGM7xExxG.patch |  2 +-
 ...v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch |  2 +-
 ...t-stmicro-stmmac-move-queue-reset-to-dedi.patch |  8 +-
 ...t-stmicro-stmmac-first-disable-all-queues.patch |  4 +-
 ...t-stmicro-stmmac-move-dma-conf-to-dedicat.patch | 90 +++++++++++-----------
 ...t-stmicro-stmmac-generate-stmmac-dma-conf.patch | 18 ++---
 ...t-stmicro-stmmac-permit-MTU-change-with-i.patch |  4 +-
 ...nel-ct-size-the-hashtable-more-adequately.patch |  2 +-
 ...f_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 13 files changed, 71 insertions(+), 71 deletions(-)

diff --git a/include/kernel-5.15 b/include/kernel-5.15
index 58573657d6..4d621b63e8 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .150
-LINUX_KERNEL_HASH-5.15.150 = ee05592b458e7fcdc515b43605883a10cc2f65f2e2b58d60af8a72b93467e4d4
+LINUX_VERSION-5.15 = .151
+LINUX_KERNEL_HASH-5.15.151 = 8a1e760bf2660947234109aa4fdbbe3686238b4e852157b96c59356689107e49
diff --git a/target/linux/generic/backport-5.15/420-v5.19-02-mtd-spinand-gigadevice-add-support-for-GD5FxGQ4xExxG.patch b/target/linux/generic/backport-5.15/420-v5.19-02-mtd-spinand-gigadevice-add-support-for-GD5FxGQ4xExxG.patch
index 181c912fbf..94863b891c 100644
--- a/target/linux/generic/backport-5.15/420-v5.19-02-mtd-spinand-gigadevice-add-support-for-GD5FxGQ4xExxG.patch
+++ b/target/linux/generic/backport-5.15/420-v5.19-02-mtd-spinand-gigadevice-add-support-for-GD5FxGQ4xExxG.patch
@@ -19,7 +19,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-3-gch981213 at gmail.
 
 --- a/drivers/mtd/nand/spi/gigadevice.c
 +++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -333,6 +333,36 @@ static const struct spinand_info gigadev
+@@ -335,6 +335,36 @@ static const struct spinand_info gigadev
  		     SPINAND_HAS_QE_BIT,
  		     SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
  				     gd5fxgq4uexxg_ecc_get_status)),
diff --git a/target/linux/generic/backport-5.15/420-v5.19-03-mtd-spinand-gigadevice-add-support-for-GD5F1GQ5RExxG.patch b/target/linux/generic/backport-5.15/420-v5.19-03-mtd-spinand-gigadevice-add-support-for-GD5F1GQ5RExxG.patch
index 3a1cc9efcf..287a062aac 100644
--- a/target/linux/generic/backport-5.15/420-v5.19-03-mtd-spinand-gigadevice-add-support-for-GD5F1GQ5RExxG.patch
+++ b/target/linux/generic/backport-5.15/420-v5.19-03-mtd-spinand-gigadevice-add-support-for-GD5F1GQ5RExxG.patch
@@ -14,7 +14,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-4-gch981213 at gmail.
 
 --- a/drivers/mtd/nand/spi/gigadevice.c
 +++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -383,6 +383,16 @@ static const struct spinand_info gigadev
+@@ -385,6 +385,16 @@ static const struct spinand_info gigadev
  		     SPINAND_HAS_QE_BIT,
  		     SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
  				     gd5fxgq5xexxg_ecc_get_status)),
diff --git a/target/linux/generic/backport-5.15/420-v5.19-04-mtd-spinand-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch b/target/linux/generic/backport-5.15/420-v5.19-04-mtd-spinand-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch
index cee9d9db3e..b1cf47678e 100644
--- a/target/linux/generic/backport-5.15/420-v5.19-04-mtd-spinand-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch
+++ b/target/linux/generic/backport-5.15/420-v5.19-04-mtd-spinand-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch
@@ -35,7 +35,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-5-gch981213 at gmail.
  static SPINAND_OP_VARIANTS(write_cache_variants,
  		SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
  		SPINAND_PROG_LOAD(true, 0, NULL, 0));
-@@ -391,6 +399,46 @@ static const struct spinand_info gigadev
+@@ -393,6 +401,46 @@ static const struct spinand_info gigadev
  					      &write_cache_variants,
  					      &update_cache_variants),
  		     SPINAND_HAS_QE_BIT,
diff --git a/target/linux/generic/backport-5.15/420-v5.19-05-mtd-spinand-gigadevice-add-support-for-GD5FxGM7xExxG.patch b/target/linux/generic/backport-5.15/420-v5.19-05-mtd-spinand-gigadevice-add-support-for-GD5FxGM7xExxG.patch
index d63113e1a6..5e342a29fb 100644
--- a/target/linux/generic/backport-5.15/420-v5.19-05-mtd-spinand-gigadevice-add-support-for-GD5FxGM7xExxG.patch
+++ b/target/linux/generic/backport-5.15/420-v5.19-05-mtd-spinand-gigadevice-add-support-for-GD5FxGM7xExxG.patch
@@ -22,7 +22,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-6-gch981213 at gmail.
 
 --- a/drivers/mtd/nand/spi/gigadevice.c
 +++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -441,6 +441,66 @@ static const struct spinand_info gigadev
+@@ -443,6 +443,66 @@ static const struct spinand_info gigadev
  		     SPINAND_HAS_QE_BIT,
  		     SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
  				     gd5fxgq5xexxg_ecc_get_status)),
diff --git a/target/linux/generic/backport-5.15/609-v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch b/target/linux/generic/backport-5.15/609-v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch
index cab980a6dc..e5d02cfa97 100644
--- a/target/linux/generic/backport-5.15/609-v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch
+++ b/target/linux/generic/backport-5.15/609-v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch
@@ -20,7 +20,7 @@ Link: https://lore.kernel.org/bpf/d5dc039c3d4123426e7023a488c449181a7bc57f.16469
 
 --- a/drivers/net/veth.c
 +++ b/drivers/net/veth.c
-@@ -1473,9 +1473,14 @@ static int veth_xdp_set(struct net_devic
+@@ -1457,9 +1457,14 @@ static int veth_xdp_set(struct net_devic
  			goto err;
  		}
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
index 32dab26eb5..43fc3b1523 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
@@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	ret = stmmac_hw_setup(dev, true);
  	if (ret < 0) {
  		netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
-@@ -6410,6 +6403,7 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6412,6 +6405,7 @@ void stmmac_enable_rx_queue(struct stmma
  		return;
  	}
  
@@ -79,7 +79,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_rx_descriptors(priv, queue);
  
  	stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -6471,6 +6465,7 @@ void stmmac_enable_tx_queue(struct stmma
+@@ -6473,6 +6467,7 @@ void stmmac_enable_tx_queue(struct stmma
  		return;
  	}
  
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_tx_descriptors(priv, queue);
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -7398,6 +7393,25 @@ int stmmac_suspend(struct device *dev)
+@@ -7400,6 +7395,25 @@ int stmmac_suspend(struct device *dev)
  }
  EXPORT_SYMBOL_GPL(stmmac_suspend);
  
@@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  /**
   * stmmac_reset_queues_param - reset queue parameters
   * @priv: device pointer
-@@ -7408,22 +7422,11 @@ static void stmmac_reset_queues_param(st
+@@ -7410,22 +7424,11 @@ static void stmmac_reset_queues_param(st
  	u32 tx_cnt = priv->plat->tx_queues_to_use;
  	u32 queue;
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-02-net-ethernet-stmicro-stmmac-first-disable-all-queues.patch b/target/linux/generic/backport-5.15/775-v6.0-02-net-ethernet-stmicro-stmmac-first-disable-all-queues.patch
index 8bdeef7a69..0940d3d799 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-02-net-ethernet-stmicro-stmmac-first-disable-all-queues.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-02-net-ethernet-stmicro-stmmac-first-disable-all-queues.patch
@@ -17,7 +17,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 
 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -3835,8 +3835,6 @@ static int stmmac_release(struct net_dev
+@@ -3837,8 +3837,6 @@ static int stmmac_release(struct net_dev
  	struct stmmac_priv *priv = netdev_priv(dev);
  	u32 chan;
  
@@ -26,7 +26,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	if (device_may_wakeup(priv->device))
  		phylink_speed_down(priv->phylink, false);
  	/* Stop and disconnect the PHY */
-@@ -3848,6 +3846,8 @@ static int stmmac_release(struct net_dev
+@@ -3850,6 +3848,8 @@ static int stmmac_release(struct net_dev
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
  		hrtimer_cancel(&priv->tx_queue[chan].txtimer);
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
index 0f8ca79d60..1b5a8a700b 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
@@ -775,7 +775,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -3844,7 +3844,7 @@ static int stmmac_release(struct net_dev
+@@ -3846,7 +3846,7 @@ static int stmmac_release(struct net_dev
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -784,7 +784,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	netif_tx_disable(dev);
  
-@@ -3908,7 +3908,7 @@ static bool stmmac_vlan_insert(struct st
+@@ -3910,7 +3910,7 @@ static bool stmmac_vlan_insert(struct st
  		return false;
  
  	stmmac_set_tx_owner(priv, p);
@@ -793,7 +793,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	return true;
  }
  
-@@ -3926,7 +3926,7 @@ static bool stmmac_vlan_insert(struct st
+@@ -3928,7 +3928,7 @@ static bool stmmac_vlan_insert(struct st
  static void stmmac_tso_allocator(struct stmmac_priv *priv, dma_addr_t des,
  				 int total_len, bool last_segment, u32 queue)
  {
@@ -802,7 +802,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct dma_desc *desc;
  	u32 buff_size;
  	int tmp_len;
-@@ -3937,7 +3937,7 @@ static void stmmac_tso_allocator(struct
+@@ -3939,7 +3939,7 @@ static void stmmac_tso_allocator(struct
  		dma_addr_t curr_addr;
  
  		tx_q->cur_tx = STMMAC_GET_ENTRY(tx_q->cur_tx,
@@ -811,7 +811,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		WARN_ON(tx_q->tx_skbuff[tx_q->cur_tx]);
  
  		if (tx_q->tbs & STMMAC_TBS_AVAIL)
-@@ -3965,7 +3965,7 @@ static void stmmac_tso_allocator(struct
+@@ -3967,7 +3967,7 @@ static void stmmac_tso_allocator(struct
  
  static void stmmac_flush_tx_descriptors(struct stmmac_priv *priv, int queue)
  {
@@ -820,7 +820,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	int desc_size;
  
  	if (likely(priv->extend_desc))
-@@ -4027,7 +4027,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
+@@ -4029,7 +4029,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
  	dma_addr_t des;
  	int i;
  
@@ -829,7 +829,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	first_tx = tx_q->cur_tx;
  
  	/* Compute header lengths */
-@@ -4067,7 +4067,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
+@@ -4069,7 +4069,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
  		stmmac_set_mss(priv, mss_desc, mss);
  		tx_q->mss = mss;
  		tx_q->cur_tx = STMMAC_GET_ENTRY(tx_q->cur_tx,
@@ -838,7 +838,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		WARN_ON(tx_q->tx_skbuff[tx_q->cur_tx]);
  	}
  
-@@ -4179,7 +4179,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
+@@ -4181,7 +4181,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
  	 * ndo_start_xmit will fill this descriptor the next time it's
  	 * called and stmmac_tx_clean may clean up to this descriptor.
  	 */
@@ -847,7 +847,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (unlikely(stmmac_tx_avail(priv, queue) <= (MAX_SKB_FRAGS + 1))) {
  		netif_dbg(priv, hw, priv->dev, "%s: stop transmitted packets\n",
-@@ -4267,7 +4267,7 @@ static netdev_tx_t stmmac_xmit(struct sk
+@@ -4269,7 +4269,7 @@ static netdev_tx_t stmmac_xmit(struct sk
  	int entry, first_tx;
  	dma_addr_t des;
  
@@ -856,7 +856,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	first_tx = tx_q->cur_tx;
  
  	if (priv->tx_path_in_lpi_mode && priv->eee_sw_timer_en)
-@@ -4330,7 +4330,7 @@ static netdev_tx_t stmmac_xmit(struct sk
+@@ -4332,7 +4332,7 @@ static netdev_tx_t stmmac_xmit(struct sk
  		int len = skb_frag_size(frag);
  		bool last_segment = (i == (nfrags - 1));
  
@@ -865,7 +865,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		WARN_ON(tx_q->tx_skbuff[entry]);
  
  		if (likely(priv->extend_desc))
-@@ -4401,7 +4401,7 @@ static netdev_tx_t stmmac_xmit(struct sk
+@@ -4403,7 +4403,7 @@ static netdev_tx_t stmmac_xmit(struct sk
  	 * ndo_start_xmit will fill this descriptor the next time it's
  	 * called and stmmac_tx_clean may clean up to this descriptor.
  	 */
@@ -874,7 +874,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	tx_q->cur_tx = entry;
  
  	if (netif_msg_pktdata(priv)) {
-@@ -4513,7 +4513,7 @@ static void stmmac_rx_vlan(struct net_de
+@@ -4515,7 +4515,7 @@ static void stmmac_rx_vlan(struct net_de
   */
  static inline void stmmac_rx_refill(struct stmmac_priv *priv, u32 queue)
  {
@@ -883,7 +883,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	int dirty = stmmac_rx_dirty(priv, queue);
  	unsigned int entry = rx_q->dirty_rx;
  
-@@ -4563,7 +4563,7 @@ static inline void stmmac_rx_refill(stru
+@@ -4565,7 +4565,7 @@ static inline void stmmac_rx_refill(stru
  		dma_wmb();
  		stmmac_set_rx_owner(priv, p, use_rx_wd);
  
@@ -892,7 +892,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	}
  	rx_q->dirty_rx = entry;
  	rx_q->rx_tail_addr = rx_q->dma_rx_phy +
-@@ -4591,12 +4591,12 @@ static unsigned int stmmac_rx_buf1_len(s
+@@ -4593,12 +4593,12 @@ static unsigned int stmmac_rx_buf1_len(s
  
  	/* First descriptor, not last descriptor and not split header */
  	if (status & rx_not_ls)
@@ -907,7 +907,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  static unsigned int stmmac_rx_buf2_len(struct stmmac_priv *priv,
-@@ -4612,7 +4612,7 @@ static unsigned int stmmac_rx_buf2_len(s
+@@ -4614,7 +4614,7 @@ static unsigned int stmmac_rx_buf2_len(s
  
  	/* Not last descriptor */
  	if (status & rx_not_ls)
@@ -916,7 +916,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	plen = stmmac_get_rx_frame_len(priv, p, coe);
  
-@@ -4623,7 +4623,7 @@ static unsigned int stmmac_rx_buf2_len(s
+@@ -4625,7 +4625,7 @@ static unsigned int stmmac_rx_buf2_len(s
  static int stmmac_xdp_xmit_xdpf(struct stmmac_priv *priv, int queue,
  				struct xdp_frame *xdpf, bool dma_map)
  {
@@ -925,7 +925,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	unsigned int entry = tx_q->cur_tx;
  	struct dma_desc *tx_desc;
  	dma_addr_t dma_addr;
-@@ -4686,7 +4686,7 @@ static int stmmac_xdp_xmit_xdpf(struct s
+@@ -4688,7 +4688,7 @@ static int stmmac_xdp_xmit_xdpf(struct s
  
  	stmmac_enable_dma_transmission(priv, priv->ioaddr);
  
@@ -934,7 +934,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	tx_q->cur_tx = entry;
  
  	return STMMAC_XDP_TX;
-@@ -4860,7 +4860,7 @@ static void stmmac_dispatch_skb_zc(struc
+@@ -4862,7 +4862,7 @@ static void stmmac_dispatch_skb_zc(struc
  
  static bool stmmac_rx_refill_zc(struct stmmac_priv *priv, u32 queue, u32 budget)
  {
@@ -943,7 +943,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	unsigned int entry = rx_q->dirty_rx;
  	struct dma_desc *rx_desc = NULL;
  	bool ret = true;
-@@ -4903,7 +4903,7 @@ static bool stmmac_rx_refill_zc(struct s
+@@ -4905,7 +4905,7 @@ static bool stmmac_rx_refill_zc(struct s
  		dma_wmb();
  		stmmac_set_rx_owner(priv, rx_desc, use_rx_wd);
  
@@ -952,7 +952,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	}
  
  	if (rx_desc) {
-@@ -4918,7 +4918,7 @@ static bool stmmac_rx_refill_zc(struct s
+@@ -4920,7 +4920,7 @@ static bool stmmac_rx_refill_zc(struct s
  
  static int stmmac_rx_zc(struct stmmac_priv *priv, int limit, u32 queue)
  {
@@ -961,7 +961,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	unsigned int count = 0, error = 0, len = 0;
  	int dirty = stmmac_rx_dirty(priv, queue);
  	unsigned int next_entry = rx_q->cur_rx;
-@@ -4940,7 +4940,7 @@ static int stmmac_rx_zc(struct stmmac_pr
+@@ -4942,7 +4942,7 @@ static int stmmac_rx_zc(struct stmmac_pr
  			desc_size = sizeof(struct dma_desc);
  		}
  
@@ -970,7 +970,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  				    rx_q->dma_rx_phy, desc_size);
  	}
  	while (count < limit) {
-@@ -4987,7 +4987,7 @@ read_again:
+@@ -4989,7 +4989,7 @@ read_again:
  
  		/* Prefetch the next RX descriptor */
  		rx_q->cur_rx = STMMAC_GET_ENTRY(rx_q->cur_rx,
@@ -979,7 +979,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		next_entry = rx_q->cur_rx;
  
  		if (priv->extend_desc)
-@@ -5108,7 +5108,7 @@ read_again:
+@@ -5110,7 +5110,7 @@ read_again:
   */
  static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
  {
@@ -988,7 +988,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned int count = 0, error = 0, len = 0;
  	int status = 0, coe = priv->hw->rx_csum;
-@@ -5121,7 +5121,7 @@ static int stmmac_rx(struct stmmac_priv
+@@ -5123,7 +5123,7 @@ static int stmmac_rx(struct stmmac_priv
  	int buf_sz;
  
  	dma_dir = page_pool_get_dma_dir(rx_q->page_pool);
@@ -997,7 +997,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (netif_msg_rx_status(priv)) {
  		void *rx_head;
-@@ -5135,7 +5135,7 @@ static int stmmac_rx(struct stmmac_priv
+@@ -5137,7 +5137,7 @@ static int stmmac_rx(struct stmmac_priv
  			desc_size = sizeof(struct dma_desc);
  		}
  
@@ -1006,7 +1006,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  				    rx_q->dma_rx_phy, desc_size);
  	}
  	while (count < limit) {
-@@ -5179,7 +5179,7 @@ read_again:
+@@ -5181,7 +5181,7 @@ read_again:
  			break;
  
  		rx_q->cur_rx = STMMAC_GET_ENTRY(rx_q->cur_rx,
@@ -1015,7 +1015,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		next_entry = rx_q->cur_rx;
  
  		if (priv->extend_desc)
-@@ -5313,7 +5313,7 @@ read_again:
+@@ -5315,7 +5315,7 @@ read_again:
  						buf1_len, dma_dir);
  			skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
  					buf->page, buf->page_offset, buf1_len,
@@ -1024,7 +1024,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  			/* Data payload appended into SKB */
  			page_pool_release_page(rx_q->page_pool, buf->page);
-@@ -5325,7 +5325,7 @@ read_again:
+@@ -5327,7 +5327,7 @@ read_again:
  						buf2_len, dma_dir);
  			skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
  					buf->sec_page, 0, buf2_len,
@@ -1033,7 +1033,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  			/* Data payload appended into SKB */
  			page_pool_release_page(rx_q->page_pool, buf->sec_page);
-@@ -5758,11 +5758,13 @@ static irqreturn_t stmmac_safety_interru
+@@ -5760,11 +5760,13 @@ static irqreturn_t stmmac_safety_interru
  static irqreturn_t stmmac_msi_intr_tx(int irq, void *data)
  {
  	struct stmmac_tx_queue *tx_q = (struct stmmac_tx_queue *)data;
@@ -1048,7 +1048,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Check if adapter is up */
  	if (test_bit(STMMAC_DOWN, &priv->state))
-@@ -5797,10 +5799,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
+@@ -5799,10 +5801,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
  static irqreturn_t stmmac_msi_intr_rx(int irq, void *data)
  {
  	struct stmmac_rx_queue *rx_q = (struct stmmac_rx_queue *)data;
@@ -1062,7 +1062,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Check if adapter is up */
  	if (test_bit(STMMAC_DOWN, &priv->state))
-@@ -5826,10 +5830,10 @@ static void stmmac_poll_controller(struc
+@@ -5828,10 +5832,10 @@ static void stmmac_poll_controller(struc
  
  	if (priv->plat->multi_msi_en) {
  		for (i = 0; i < priv->plat->rx_queues_to_use; i++)
@@ -1075,7 +1075,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	} else {
  		disable_irq(dev->irq);
  		stmmac_interrupt(dev->irq, dev);
-@@ -6010,34 +6014,34 @@ static int stmmac_rings_status_show(stru
+@@ -6012,34 +6016,34 @@ static int stmmac_rings_status_show(stru
  		return 0;
  
  	for (queue = 0; queue < rx_count; queue++) {
@@ -1116,7 +1116,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		}
  	}
  
-@@ -6384,7 +6388,7 @@ void stmmac_disable_rx_queue(struct stmm
+@@ -6386,7 +6390,7 @@ void stmmac_disable_rx_queue(struct stmm
  
  void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1125,7 +1125,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned long flags;
  	u32 buf_size;
-@@ -6421,7 +6425,7 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6423,7 +6427,7 @@ void stmmac_enable_rx_queue(struct stmma
  				      rx_q->queue_index);
  	} else {
  		stmmac_set_dma_bfsize(priv, priv->ioaddr,
@@ -1134,7 +1134,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  				      rx_q->queue_index);
  	}
  
-@@ -6447,7 +6451,7 @@ void stmmac_disable_tx_queue(struct stmm
+@@ -6449,7 +6453,7 @@ void stmmac_disable_tx_queue(struct stmm
  
  void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1143,7 +1143,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned long flags;
  	int ret;
-@@ -6497,7 +6501,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6499,7 +6503,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1152,7 +1152,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Free the IRQ lines */
  	stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
-@@ -6556,7 +6560,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6558,7 +6562,7 @@ int stmmac_xdp_open(struct net_device *d
  
  	/* DMA RX Channel Configuration */
  	for (chan = 0; chan < rx_cnt; chan++) {
@@ -1161,7 +1161,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  		stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  				    rx_q->dma_rx_phy, chan);
-@@ -6574,7 +6578,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6576,7 +6580,7 @@ int stmmac_xdp_open(struct net_device *d
  					      rx_q->queue_index);
  		} else {
  			stmmac_set_dma_bfsize(priv, priv->ioaddr,
@@ -1170,7 +1170,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  					      rx_q->queue_index);
  		}
  
-@@ -6583,7 +6587,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6585,7 +6589,7 @@ int stmmac_xdp_open(struct net_device *d
  
  	/* DMA TX Channel Configuration */
  	for (chan = 0; chan < tx_cnt; chan++) {
@@ -1179,7 +1179,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  		stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  				    tx_q->dma_tx_phy, chan);
-@@ -6616,7 +6620,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6618,7 +6622,7 @@ int stmmac_xdp_open(struct net_device *d
  
  irq_error:
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1188,7 +1188,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -6643,8 +6647,8 @@ int stmmac_xsk_wakeup(struct net_device
+@@ -6645,8 +6649,8 @@ int stmmac_xsk_wakeup(struct net_device
  	    queue >= priv->plat->tx_queues_to_use)
  		return -EINVAL;
  
@@ -1199,7 +1199,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	ch = &priv->channel[queue];
  
  	if (!rx_q->xsk_pool && !tx_q->xsk_pool)
-@@ -6904,8 +6908,8 @@ int stmmac_reinit_ringparam(struct net_d
+@@ -6906,8 +6910,8 @@ int stmmac_reinit_ringparam(struct net_d
  	if (netif_running(dev))
  		stmmac_release(dev);
  
@@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (netif_running(dev))
  		ret = stmmac_open(dev);
-@@ -7343,7 +7347,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7345,7 +7349,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (priv->eee_enabled) {
  		priv->tx_path_in_lpi_mode = false;
-@@ -7395,7 +7399,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
+@@ -7397,7 +7401,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
  
  static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	rx_q->cur_rx = 0;
  	rx_q->dirty_rx = 0;
-@@ -7403,7 +7407,7 @@ static void stmmac_reset_rx_queue(struct
+@@ -7405,7 +7409,7 @@ static void stmmac_reset_rx_queue(struct
  
  static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
diff --git a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
index b3ca0d5c71..87da2af562 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
@@ -1036,7 +1036,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  static void stmmac_fpe_stop_wq(struct stmmac_priv *priv)
  {
  	set_bit(__FPE_REMOVING, &priv->fpe_task_state);
-@@ -3860,7 +3976,7 @@ static int stmmac_release(struct net_dev
+@@ -3862,7 +3978,7 @@ static int stmmac_release(struct net_dev
  	stmmac_stop_all_dma(priv);
  
  	/* Release and free the Rx/Tx resources */
@@ -1045,7 +1045,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Disable the MAC Rx/Tx */
  	stmmac_mac_set(priv, priv->ioaddr, false);
-@@ -6383,7 +6499,7 @@ void stmmac_disable_rx_queue(struct stmm
+@@ -6385,7 +6501,7 @@ void stmmac_disable_rx_queue(struct stmm
  	spin_unlock_irqrestore(&ch->lock, flags);
  
  	stmmac_stop_rx_dma(priv, queue);
@@ -1054,7 +1054,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
-@@ -6394,21 +6510,21 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6396,21 +6512,21 @@ void stmmac_enable_rx_queue(struct stmma
  	u32 buf_size;
  	int ret;
  
@@ -1080,7 +1080,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  			    rx_q->dma_rx_phy, rx_q->queue_index);
-@@ -6446,7 +6562,7 @@ void stmmac_disable_tx_queue(struct stmm
+@@ -6448,7 +6564,7 @@ void stmmac_disable_tx_queue(struct stmm
  	spin_unlock_irqrestore(&ch->lock, flags);
  
  	stmmac_stop_tx_dma(priv, queue);
@@ -1089,7 +1089,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
-@@ -6456,21 +6572,21 @@ void stmmac_enable_tx_queue(struct stmma
+@@ -6458,21 +6574,21 @@ void stmmac_enable_tx_queue(struct stmma
  	unsigned long flags;
  	int ret;
  
@@ -1115,7 +1115,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  			    tx_q->dma_tx_phy, tx_q->queue_index);
-@@ -6510,7 +6626,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6512,7 +6628,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_stop_all_dma(priv);
  
  	/* Release and free the Rx/Tx resources */
@@ -1124,7 +1124,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Disable the MAC Rx/Tx */
  	stmmac_mac_set(priv, priv->ioaddr, false);
-@@ -6535,14 +6651,14 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6537,14 +6653,14 @@ int stmmac_xdp_open(struct net_device *d
  	u32 chan;
  	int ret;
  
@@ -1141,7 +1141,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	if (ret < 0) {
  		netdev_err(dev, "%s: DMA descriptors initialization failed\n",
  			   __func__);
-@@ -6624,7 +6740,7 @@ irq_error:
+@@ -6626,7 +6742,7 @@ irq_error:
  
  	stmmac_hw_teardown(dev);
  init_error:
@@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  dma_desc_error:
  	return ret;
  }
-@@ -7490,7 +7606,7 @@ int stmmac_resume(struct device *dev)
+@@ -7492,7 +7608,7 @@ int stmmac_resume(struct device *dev)
  	stmmac_reset_queues_param(priv);
  
  	stmmac_free_tx_skbufs(priv);
diff --git a/target/linux/generic/backport-5.15/775-v6.0-05-net-ethernet-stmicro-stmmac-permit-MTU-change-with-i.patch b/target/linux/generic/backport-5.15/775-v6.0-05-net-ethernet-stmicro-stmmac-permit-MTU-change-with-i.patch
index 2576df4522..e1d46f03a9 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-05-net-ethernet-stmicro-stmmac-permit-MTU-change-with-i.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-05-net-ethernet-stmicro-stmmac-permit-MTU-change-with-i.patch
@@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 
 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -5625,18 +5625,15 @@ static int stmmac_change_mtu(struct net_
+@@ -5627,18 +5627,15 @@ static int stmmac_change_mtu(struct net_
  {
  	struct stmmac_priv *priv = netdev_priv(dev);
  	int txfifosz = priv->plat->tx_fifo_size;
@@ -40,7 +40,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	if (stmmac_xdp_is_enabled(priv) && new_mtu > ETH_DATA_LEN) {
  		netdev_dbg(priv->dev, "Jumbo frames not supported for XDP\n");
  		return -EINVAL;
-@@ -5648,8 +5645,29 @@ static int stmmac_change_mtu(struct net_
+@@ -5650,8 +5647,29 @@ static int stmmac_change_mtu(struct net_
  	if ((txfifosz < new_mtu) || (new_mtu > BUF_SIZE_16KiB))
  		return -EINVAL;
  
diff --git a/target/linux/generic/hack-5.15/661-kernel-ct-size-the-hashtable-more-adequately.patch b/target/linux/generic/hack-5.15/661-kernel-ct-size-the-hashtable-more-adequately.patch
index 2fa91deece..89074d0a04 100644
--- a/target/linux/generic/hack-5.15/661-kernel-ct-size-the-hashtable-more-adequately.patch
+++ b/target/linux/generic/hack-5.15/661-kernel-ct-size-the-hashtable-more-adequately.patch
@@ -14,7 +14,7 @@ Signed-off-by: Rui Salvaterra <rsalvaterra at gmail.com>
 
 --- a/net/netfilter/nf_conntrack_core.c
 +++ b/net/netfilter/nf_conntrack_core.c
-@@ -2738,7 +2738,7 @@ int nf_conntrack_init_start(void)
+@@ -2737,7 +2737,7 @@ int nf_conntrack_init_start(void)
  
  	if (!nf_conntrack_htable_size) {
  		nf_conntrack_htable_size
diff --git a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 196beffecf..70aee30eb6 100644
--- a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7763,7 +7763,7 @@ static int nft_register_flowtable_net_ho
+@@ -7770,7 +7770,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);



From lede-commits at lists.infradead.org  Fri Mar 29 06:04:13 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 09:04:13 -0400
Subject: [openwrt/openwrt]  kernel: bump 5.10 to 5.10.213
In-Reply-To: <171171745336.144896.14160067182216830925@git-01.infra.openwrt.org>
References: <171171745336.144896.14160067182216830925@git-01.infra.openwrt.org>
Message-ID: <mailman.21619.1711717467.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/61c6bc2eaafaf58164b6f3635eeefc7a886b7d67

commit 61c6bc2eaafaf58164b6f3635eeefc7a886b7d67
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Tue Mar 26 01:17:53 2024 +0100

    kernel: bump 5.10 to 5.10.213
    
    Removed because it is upstream:
    generic/backport-5.10/081-net-next-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.10.y&id=915848be2f1b24d8043aace414bc5f8174a13c0e
    
    Manual changes needed:
    bcm27xx/patches-5.10/950-0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 include/kernel-5.10                                |  4 +-
 .../802-usb-xhci-force-msi-renesas-xhci.patch      |  2 +-
 ...-lan78xx-Enable-LEDs-and-auto-negotiation.patch | 23 +++++-----
 ...6-lan78xx-Read-initial-EEE-status-from-DT.patch |  2 +-
 ...78xx-Disable-TCP-Segmentation-Offload-TSO.patch |  4 +-
 ...x-Move-enabling-of-EEE-into-PHY-init-code.patch |  4 +-
 ...bounce-link-events-to-minimize-poll-storm.patch |  4 +-
 ...lan78xx-EEE-support-is-now-a-PHY-property.patch |  2 +-
 ...78xx-use-default-alignment-for-rx-buffers.patch |  2 +-
 ...Use-more-event-ring-segment-table-entries.patch |  2 +-
 ...-xhci-quirks-add-link-TRB-quirk-for-VL805.patch |  2 +-
 ...n78xx-Ack-pending-PHY-ints-when-resetting.patch |  4 +-
 ...rkaround-for-bogus-SET_DEQ_PENDING-endpoi.patch |  2 +-
 ...-serial-bcm63xx-lower-driver-dependencies.patch |  2 +-
 ...-add-support-for-performing-fake-doorbell.patch |  2 +-
 ...llow-to-define-reg_update_bits-for-no-bus.patch | 52 ----------------------
 .../generic/hack-5.10/259-regmap_dynamic.patch     |  2 +-
 .../generic/hack-5.10/901-debloat_sock_diag.patch  |  2 +-
 .../linux/generic/hack-5.10/902-debloat_proc.patch |  2 +-
 ...jecting-with-source-address-failed-policy.patch | 14 +++---
 20 files changed, 41 insertions(+), 92 deletions(-)

diff --git a/include/kernel-5.10 b/include/kernel-5.10
index af4de7a926..ee8bf19a0b 100644
--- a/include/kernel-5.10
+++ b/include/kernel-5.10
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.10 = .211
-LINUX_KERNEL_HASH-5.10.211 = 3a780a0b107fb45443f8f08bab6f9c96360e9eb4dd846e8836d42533b41939b2
+LINUX_VERSION-5.10 = .213
+LINUX_KERNEL_HASH-5.10.213 = 84cf30223239ec3333a5f7b2a7fba2042bba70d1582a139f7543956af871ad80
diff --git a/target/linux/apm821xx/patches-5.10/802-usb-xhci-force-msi-renesas-xhci.patch b/target/linux/apm821xx/patches-5.10/802-usb-xhci-force-msi-renesas-xhci.patch
index 1b8d8e5e94..d4f0b072b5 100644
--- a/target/linux/apm821xx/patches-5.10/802-usb-xhci-force-msi-renesas-xhci.patch
+++ b/target/linux/apm821xx/patches-5.10/802-usb-xhci-force-msi-renesas-xhci.patch
@@ -43,7 +43,7 @@ produce a noisy warning.
  		hcd->msi_enabled = 1;
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1903,6 +1903,7 @@ struct xhci_hcd {
+@@ -1906,6 +1906,7 @@ struct xhci_hcd {
  	struct xhci_hub		usb2_rhub;
  	struct xhci_hub		usb3_rhub;
  	/* support xHCI 1.0 spec USB2 hardware LPM */
diff --git a/target/linux/bcm27xx/patches-5.10/950-0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch b/target/linux/bcm27xx/patches-5.10/950-0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch
index 1ab89e8e0f..4fa6c86a2f 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0030-lan78xx-Enable-LEDs-and-auto-negotiation.patch
@@ -14,9 +14,9 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -2427,6 +2427,11 @@ static int lan78xx_reset(struct lan78xx_
- 	int ret = 0;
- 	unsigned long timeout;
+@@ -2628,6 +2628,11 @@ static int lan78xx_reset(struct lan78xx_
+ 	int ret;
+ 	u32 buf;
  	u8 sig;
 +	bool has_eeprom;
 +	bool has_otp;
@@ -25,18 +25,19 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 +	has_otp = !lan78xx_read_otp(dev, 0, 0, NULL);
  
  	ret = lan78xx_read_reg(dev, HW_CFG, &buf);
- 	buf |= HW_CFG_LRST_;
-@@ -2480,6 +2485,9 @@ static int lan78xx_reset(struct lan78xx_
+ 	if (ret < 0)
+@@ -2709,6 +2714,10 @@ static int lan78xx_reset(struct lan78xx_
  
- 	ret = lan78xx_read_reg(dev, HW_CFG, &buf);
  	buf |= HW_CFG_MEF_;
+ 
 +	/* If no valid EEPROM and no valid OTP, enable the LEDs by default */
 +	if (!has_eeprom && !has_otp)
 +	    buf |= HW_CFG_LED0_EN_ | HW_CFG_LED1_EN_;
++
  	ret = lan78xx_write_reg(dev, HW_CFG, buf);
- 
- 	ret = lan78xx_read_reg(dev, USB_CFG0, &buf);
-@@ -2535,6 +2543,9 @@ static int lan78xx_reset(struct lan78xx_
+ 	if (ret < 0)
+ 		return ret;
+@@ -2808,6 +2817,9 @@ static int lan78xx_reset(struct lan78xx_
  			buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
  		}
  	}
@@ -44,5 +45,5 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 +	if (!has_eeprom && !has_otp)
 +	    buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
  	ret = lan78xx_write_reg(dev, MAC_CR, buf);
- 
- 	ret = lan78xx_read_reg(dev, MAC_TX, &buf);
+ 	if (ret < 0)
+ 		return ret;
diff --git a/target/linux/bcm27xx/patches-5.10/950-0076-lan78xx-Read-initial-EEE-status-from-DT.patch b/target/linux/bcm27xx/patches-5.10/950-0076-lan78xx-Read-initial-EEE-status-from-DT.patch
index 0a38b13dfa..a19b683316 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0076-lan78xx-Read-initial-EEE-status-from-DT.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0076-lan78xx-Read-initial-EEE-status-from-DT.patch
@@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -2609,6 +2609,22 @@ static int lan78xx_open(struct net_devic
+@@ -2873,6 +2873,22 @@ static int lan78xx_open(struct net_devic
  
  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0082-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/target/linux/bcm27xx/patches-5.10/950-0082-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
index c5b9c2c233..48a90c7da8 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0082-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0082-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
@@ -21,7 +21,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -427,6 +427,15 @@ static int msg_level = -1;
+@@ -434,6 +434,15 @@ static int msg_level = -1;
  module_param(msg_level, int, 0);
  MODULE_PARM_DESC(msg_level, "Override default message level");
  
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.org>
  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
  {
  	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
-@@ -2891,8 +2900,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -3197,8 +3206,14 @@ static int lan78xx_bind(struct lan78xx_n
  	if (DEFAULT_RX_CSUM_ENABLE)
  		dev->net->features |= NETIF_F_RXCSUM;
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0083-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch b/target/linux/bcm27xx/patches-5.10/950-0083-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
index 64be7faebb..feaa3c5b7c 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0083-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0083-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
@@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -2145,6 +2145,22 @@ static int lan78xx_phy_init(struct lan78
+@@ -2189,6 +2189,22 @@ static int lan78xx_phy_init(struct lan78
  	mii_adv_to_linkmode_adv_t(fc, mii_adv);
  	linkmode_or(phydev->advertising, fc, phydev->advertising);
  
@@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  	if (phydev->mdio.dev.of_node) {
  		u32 reg;
  		int len;
-@@ -2618,22 +2634,6 @@ static int lan78xx_open(struct net_devic
+@@ -2882,22 +2898,6 @@ static int lan78xx_open(struct net_devic
  
  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0094-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/target/linux/bcm27xx/patches-5.10/950-0094-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
index 1f4c30c190..230b814fd3 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0094-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0094-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
@@ -16,7 +16,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -436,6 +436,11 @@ static bool enable_tso;
+@@ -443,6 +443,11 @@ static bool enable_tso;
  module_param(enable_tso, bool, 0644);
  MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload");
  
@@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
  {
  	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
-@@ -3734,7 +3739,13 @@ static int lan78xx_probe(struct usb_inte
+@@ -4032,7 +4037,13 @@ static int lan78xx_probe(struct usb_inte
  	netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
  	netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0095-lan78xx-EEE-support-is-now-a-PHY-property.patch b/target/linux/bcm27xx/patches-5.10/950-0095-lan78xx-EEE-support-is-now-a-PHY-property.patch
index 86663e473f..92aef5206f 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0095-lan78xx-EEE-support-is-now-a-PHY-property.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0095-lan78xx-EEE-support-is-now-a-PHY-property.patch
@@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -2150,7 +2150,7 @@ static int lan78xx_phy_init(struct lan78
+@@ -2194,7 +2194,7 @@ static int lan78xx_phy_init(struct lan78
  	mii_adv_to_linkmode_adv_t(fc, mii_adv);
  	linkmode_or(phydev->advertising, fc, phydev->advertising);
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0098-lan78xx-use-default-alignment-for-rx-buffers.patch b/target/linux/bcm27xx/patches-5.10/950-0098-lan78xx-use-default-alignment-for-rx-buffers.patch
index c55437fb63..bfd3896dda 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0098-lan78xx-use-default-alignment-for-rx-buffers.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0098-lan78xx-use-default-alignment-for-rx-buffers.patch
@@ -12,7 +12,7 @@ in both dwc_otg and in ipv6 processing.
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -3135,7 +3135,7 @@ static int rx_submit(struct lan78xx_net
+@@ -3441,7 +3441,7 @@ static int rx_submit(struct lan78xx_net
  	size_t size = dev->rx_urb_size;
  	int ret = 0;
  
diff --git a/target/linux/bcm27xx/patches-5.10/950-0154-xhci-Use-more-event-ring-segment-table-entries.patch b/target/linux/bcm27xx/patches-5.10/950-0154-xhci-Use-more-event-ring-segment-table-entries.patch
index cb17ac475e..f122d76868 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0154-xhci-Use-more-event-ring-segment-table-entries.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0154-xhci-Use-more-event-ring-segment-table-entries.patch
@@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
  			val);
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1660,8 +1660,8 @@ struct urb_priv {
+@@ -1663,8 +1663,8 @@ struct urb_priv {
   * Each segment table entry is 4*32bits long.  1K seems like an ok size:
   * (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
   * meaning 64 ring segments.
diff --git a/target/linux/bcm27xx/patches-5.10/950-0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/target/linux/bcm27xx/patches-5.10/950-0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
index 30961fb444..88f733c495 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
@@ -51,7 +51,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1896,6 +1896,7 @@ struct xhci_hcd {
+@@ -1899,6 +1899,7 @@ struct xhci_hcd {
  #define XHCI_RESET_TO_DEFAULT	BIT_ULL(44)
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
diff --git a/target/linux/bcm27xx/patches-5.10/950-0401-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch b/target/linux/bcm27xx/patches-5.10/950-0401-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch
index 89d2a6ddd1..bb3fd8488b 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0401-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0401-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch
@@ -20,9 +20,9 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -1179,6 +1179,9 @@ static int lan78xx_link_reset(struct lan
+@@ -1208,6 +1208,9 @@ static int lan78xx_link_reset(struct lan
  	if (unlikely(ret < 0))
- 		return -EIO;
+ 		return ret;
  
 +	/* Acknowledge any pending PHY interrupt, lest it be the last */
 +	phy_read(phydev, LAN88XX_INT_STS);
diff --git a/target/linux/bcm27xx/patches-5.10/950-0733-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch b/target/linux/bcm27xx/patches-5.10/950-0733-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch
index d48be85ecd..8b6ee78b28 100644
--- a/target/linux/bcm27xx/patches-5.10/950-0733-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch
+++ b/target/linux/bcm27xx/patches-5.10/950-0733-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch
@@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/usb/host/xhci-ring.c
 +++ b/drivers/usb/host/xhci-ring.c
-@@ -4275,9 +4275,9 @@ void xhci_queue_new_dequeue_state(struct
+@@ -4328,9 +4328,9 @@ void xhci_queue_new_dequeue_state(struct
  	}
  	ep = &xhci->devs[slot_id]->eps[ep_index];
  	if ((ep->ep_state & SET_DEQ_PENDING)) {
diff --git a/target/linux/bcm4908/patches-5.10/080-v5.11-tty-serial-bcm63xx-lower-driver-dependencies.patch b/target/linux/bcm4908/patches-5.10/080-v5.11-tty-serial-bcm63xx-lower-driver-dependencies.patch
index 38e3d056b9..4a1599297c 100644
--- a/target/linux/bcm4908/patches-5.10/080-v5.11-tty-serial-bcm63xx-lower-driver-dependencies.patch
+++ b/target/linux/bcm4908/patches-5.10/080-v5.11-tty-serial-bcm63xx-lower-driver-dependencies.patch
@@ -20,7 +20,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
 
 --- a/drivers/tty/serial/Kconfig
 +++ b/drivers/tty/serial/Kconfig
-@@ -1133,7 +1133,7 @@ config SERIAL_TIMBERDALE
+@@ -1134,7 +1134,7 @@ config SERIAL_TIMBERDALE
  config SERIAL_BCM63XX
  	tristate "Broadcom BCM63xx/BCM33xx UART support"
  	select SERIAL_CORE
diff --git a/target/linux/bcm53xx/patches-5.10/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-5.10/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
index b12657660e..585c6e3b0e 100644
--- a/target/linux/bcm53xx/patches-5.10/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
+++ b/target/linux/bcm53xx/patches-5.10/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
@@ -127,7 +127,7 @@ it on BCM4708 family.
  /*
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1896,6 +1896,7 @@ struct xhci_hcd {
+@@ -1899,6 +1899,7 @@ struct xhci_hcd {
  #define XHCI_RESET_TO_DEFAULT	BIT_ULL(44)
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
diff --git a/target/linux/generic/backport-5.10/081-net-next-regmap-allow-to-define-reg_update_bits-for-no-bus.patch b/target/linux/generic/backport-5.10/081-net-next-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
deleted file mode 100644
index 6e274acb1f..0000000000
--- a/target/linux/generic/backport-5.10/081-net-next-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 02d6fdecb9c38de19065f6bed8d5214556fd061d Mon Sep 17 00:00:00 2001
-From: Ansuel Smith <ansuelsmth at gmail.com>
-Date: Thu, 4 Nov 2021 16:00:40 +0100
-Subject: regmap: allow to define reg_update_bits for no bus configuration
-
-Some device requires a special handling for reg_update_bits and can't use
-the normal regmap read write logic. An example is when locking is
-handled by the device and rmw operations requires to do atomic operations.
-Allow to declare a dedicated function in regmap_config for
-reg_update_bits in no bus configuration.
-
-Signed-off-by: Ansuel Smith <ansuelsmth at gmail.com>
-Link: https://lore.kernel.org/r/20211104150040.1260-1-ansuelsmth at gmail.com
-Signed-off-by: Mark Brown <broonie at kernel.org>
----
- drivers/base/regmap/regmap.c | 1 +
- include/linux/regmap.h       | 7 +++++++
- 2 files changed, 8 insertions(+)
-
---- a/drivers/base/regmap/regmap.c
-+++ b/drivers/base/regmap/regmap.c
-@@ -842,6 +842,7 @@ struct regmap *__regmap_init(struct devi
- 	if (!bus) {
- 		map->reg_read  = config->reg_read;
- 		map->reg_write = config->reg_write;
-+		map->reg_update_bits = config->reg_update_bits;
- 
- 		map->defer_caching = false;
- 		goto skip_format_initialization;
---- a/include/linux/regmap.h
-+++ b/include/linux/regmap.h
-@@ -289,6 +289,11 @@ typedef void (*regmap_unlock)(void *);
-  *		  read operation on a bus such as SPI, I2C, etc. Most of the
-  *		  devices do not need this.
-  * @reg_write:	  Same as above for writing.
-+ * @reg_update_bits: Optional callback that if filled will be used to perform
-+ *		     all the update_bits(rmw) operation. Should only be provided
-+ *		     if the function require special handling with lock and reg
-+ *		     handling and the operation cannot be represented as a simple
-+ *		     update_bits operation on a bus such as SPI, I2C, etc.
-  * @fast_io:	  Register IO is fast. Use a spinlock instead of a mutex
-  *	     	  to perform locking. This field is ignored if custom lock/unlock
-  *	     	  functions are used (see fields lock/unlock of struct regmap_config).
-@@ -366,6 +371,8 @@ struct regmap_config {
- 
- 	int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
- 	int (*reg_write)(void *context, unsigned int reg, unsigned int val);
-+	int (*reg_update_bits)(void *context, unsigned int reg,
-+			       unsigned int mask, unsigned int val);
- 
- 	bool fast_io;
- 
diff --git a/target/linux/generic/hack-5.10/259-regmap_dynamic.patch b/target/linux/generic/hack-5.10/259-regmap_dynamic.patch
index cf55076ecb..dc2dd4f51f 100644
--- a/target/linux/generic/hack-5.10/259-regmap_dynamic.patch
+++ b/target/linux/generic/hack-5.10/259-regmap_dynamic.patch
@@ -116,7 +116,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/mutex.h>
  #include <linux/err.h>
  #include <linux/property.h>
-@@ -3300,3 +3301,5 @@ static int __init regmap_initcall(void)
+@@ -3304,3 +3305,5 @@ static int __init regmap_initcall(void)
  	return 0;
  }
  postcore_initcall(regmap_initcall);
diff --git a/target/linux/generic/hack-5.10/901-debloat_sock_diag.patch b/target/linux/generic/hack-5.10/901-debloat_sock_diag.patch
index fdedc95785..214d5b0477 100644
--- a/target/linux/generic/hack-5.10/901-debloat_sock_diag.patch
+++ b/target/linux/generic/hack-5.10/901-debloat_sock_diag.patch
@@ -77,7 +77,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
  {
  	struct dst_entry *dst = __sk_dst_get(sk);
-@@ -1838,9 +1852,11 @@ static void __sk_free(struct sock *sk)
+@@ -1850,9 +1864,11 @@ static void __sk_free(struct sock *sk)
  	if (likely(sk->sk_net_refcnt))
  		sock_inuse_add(sock_net(sk), -1);
  
diff --git a/target/linux/generic/hack-5.10/902-debloat_proc.patch b/target/linux/generic/hack-5.10/902-debloat_proc.patch
index d4a7766662..6dc608f2f7 100644
--- a/target/linux/generic/hack-5.10/902-debloat_proc.patch
+++ b/target/linux/generic/hack-5.10/902-debloat_proc.patch
@@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -3726,6 +3726,8 @@ static __net_initdata struct pernet_oper
+@@ -3738,6 +3738,8 @@ static __net_initdata struct pernet_oper
  
  static int __init proto_init(void)
  {
diff --git a/target/linux/generic/pending-5.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-5.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index be0b52db92..7beabef9a3 100644
--- a/target/linux/generic/pending-5.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-5.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -6133,6 +6164,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6126,6 +6157,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -6144,6 +6177,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6137,6 +6170,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -6335,6 +6369,8 @@ static int __net_init ip6_route_net_init
+@@ -6328,6 +6362,8 @@ static int __net_init ip6_route_net_init
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	net->ipv6.fib6_has_custom_rules = false;
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
  					       sizeof(*net->ipv6.ip6_prohibit_entry),
  					       GFP_KERNEL);
-@@ -6345,11 +6381,21 @@ static int __net_init ip6_route_net_init
+@@ -6338,11 +6374,21 @@ static int __net_init ip6_route_net_init
  			 ip6_template_metrics, true);
  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
  
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
-@@ -6376,6 +6422,8 @@ out:
+@@ -6369,6 +6415,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -6395,6 +6443,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6388,6 +6436,7 @@ static void __net_exit ip6_route_net_exi
  	kfree(net->ipv6.ip6_null_entry);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	kfree(net->ipv6.ip6_blk_hole_entry);
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6478,6 +6527,9 @@ void __init ip6_route_init_special_entri
+@@ -6471,6 +6520,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);



From lede-commits at lists.infradead.org  Fri Mar 29 06:10:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 09:10:52 -0400
Subject: [openwrt/openwrt]  kernel: bump 5.15 to 5.15.152
In-Reply-To: <171171785109.372569.12965619303182652498@git-01.infra.openwrt.org>
References: <171171785109.372569.12965619303182652498@git-01.infra.openwrt.org>
Message-ID: <mailman.21620.1711717858.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/ecf390c8ffcbe232da713150d2c0ea81a5ac3690

commit ecf390c8ffcbe232da713150d2c0ea81a5ac3690
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Tue Mar 26 01:18:15 2024 +0100

    kernel: bump 5.15 to 5.15.152
    
    Removed because it is upstream:
    generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=fbddd48f1456db32b675fad95a902de38345902a
    
    Manual changes needed:
    bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    (cherry picked from commit 2ec025d5547182da07bdd8299d2e97d05f695537)
---
 include/kernel-5.15                                |  4 +-
 ...78xx-Disable-TCP-Segmentation-Offload-TSO.patch |  2 +-
 ...bounce-link-events-to-minimize-poll-storm.patch |  2 +-
 ...78xx-use-default-alignment-for-rx-buffers.patch |  2 +-
 ...Use-more-event-ring-segment-table-entries.patch |  2 +-
 ...dd-device-quirks-for-A4Tech-FHD-1080p-web.patch | 14 +++---
 ...all-usb_autopm_get_interface-for-devices-.patch |  2 +-
 ...-xhci-quirks-add-link-TRB-quirk-for-VL805.patch |  2 +-
 ...or-out-TRBS_PER_SEGMENT-define-in-runtime.patch |  6 +--
 ...0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch |  2 +-
 ...d-a-quirk-for-Superspeed-bulk-OUT-transfe.patch |  8 ++--
 ...hci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch |  6 +--
 ...-add-support-for-performing-fake-doorbell.patch |  2 +-
 ...llow-to-define-reg_update_bits-for-no-bus.patch | 52 ----------------------
 ...-add-configurable-downshift-for-addresses.patch | 10 ++---
 ...w-a-defined-reg_base-to-be-added-to-every.patch | 10 ++---
 ...y-reg_base-and-reg_downshift-for-single-r.patch |  6 +--
 .../generic/hack-5.15/259-regmap_dynamic.patch     |  2 +-
 ...jecting-with-source-address-failed-policy.patch | 14 +++---
 ...-net-stmmac-Use-hrtimer-for-TX-coalescing.patch | 10 ++---
 20 files changed, 53 insertions(+), 105 deletions(-)

diff --git a/include/kernel-5.15 b/include/kernel-5.15
index 4d621b63e8..ba6b497c3b 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .151
-LINUX_KERNEL_HASH-5.15.151 = 8a1e760bf2660947234109aa4fdbbe3686238b4e852157b96c59356689107e49
+LINUX_VERSION-5.15 = .152
+LINUX_KERNEL_HASH-5.15.152 = f0805225f4a5b24d0bba9302c2c2f261c04f737ac5dd931da9b112e9f3e4a47e
diff --git a/target/linux/bcm27xx/patches-5.15/950-0104-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/target/linux/bcm27xx/patches-5.15/950-0104-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
index 9ff8baf8ba..899d19568c 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0104-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0104-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.org>
  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
  {
  	u32 *buf;
-@@ -3264,8 +3273,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -3265,8 +3274,14 @@ static int lan78xx_bind(struct lan78xx_n
  	if (DEFAULT_RX_CSUM_ENABLE)
  		dev->net->features |= NETIF_F_RXCSUM;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0114-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/target/linux/bcm27xx/patches-5.15/950-0114-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
index 164c788fa0..f134f96efa 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0114-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0114-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
@@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
  {
  	u32 *buf;
-@@ -4124,7 +4129,13 @@ static int lan78xx_probe(struct usb_inte
+@@ -4125,7 +4130,13 @@ static int lan78xx_probe(struct usb_inte
  	netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
  	netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0118-lan78xx-use-default-alignment-for-rx-buffers.patch b/target/linux/bcm27xx/patches-5.15/950-0118-lan78xx-use-default-alignment-for-rx-buffers.patch
index 5b0f41f5f4..0c8228031c 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0118-lan78xx-use-default-alignment-for-rx-buffers.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0118-lan78xx-use-default-alignment-for-rx-buffers.patch
@@ -12,7 +12,7 @@ in both dwc_otg and in ipv6 processing.
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -3503,7 +3503,7 @@ static int rx_submit(struct lan78xx_net
+@@ -3504,7 +3504,7 @@ static int rx_submit(struct lan78xx_net
  	size_t size = dev->rx_urb_size;
  	int ret = 0;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch b/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch
index 87c23dd1d9..a9bbab4c26 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch
@@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.org>
  			val);
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1673,8 +1673,8 @@ struct urb_priv {
+@@ -1674,8 +1674,8 @@ struct urb_priv {
   * Each segment table entry is 4*32bits long.  1K seems like an ok size:
   * (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
   * meaning 64 ring segments.
diff --git a/target/linux/bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch b/target/linux/bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch
index 50fbab5f78..efb402af0a 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch
@@ -16,12 +16,12 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/sound/usb/quirks.c
 +++ b/sound/usb/quirks.c
-@@ -1892,6 +1892,8 @@ static const struct usb_audio_quirk_flag
- 		   QUIRK_FLAG_GENERIC_IMPLICIT_FB),
- 	DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
- 		   QUIRK_FLAG_GENERIC_IMPLICIT_FB),
+@@ -1808,6 +1808,8 @@ static const struct usb_audio_quirk_flag
+ 		   QUIRK_FLAG_IGNORE_CTL_ERROR),
+ 	DEVICE_FLG(0x0951, 0x16ad, /* Kingston HyperX */
+ 		   QUIRK_FLAG_CTL_MSG_DELAY_1M),
 +	DEVICE_FLG(0x09da, 0x2695, /* A4Tech FHD 1080p webcam */
 +		   QUIRK_FLAG_DISABLE_AUTOSUSPEND | QUIRK_FLAG_GET_SAMPLE_RATE),
- 	DEVICE_FLG(0x0525, 0xa4ad, /* Hamedal C20 usb camero */
- 		   QUIRK_FLAG_IFACE_SKIP_CLOSE),
- 
+ 	DEVICE_FLG(0x0b0e, 0x0349, /* Jabra 550a */
+ 		   QUIRK_FLAG_CTL_MSG_DELAY_1M),
+ 	DEVICE_FLG(0x0ecb, 0x205c, /* JBL Quantum610 Wireless */
diff --git a/target/linux/bcm27xx/patches-5.15/950-0471-sound-usb-call-usb_autopm_get_interface-for-devices-.patch b/target/linux/bcm27xx/patches-5.15/950-0471-sound-usb-call-usb_autopm_get_interface-for-devices-.patch
index a586d075dd..107e686f05 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0471-sound-usb-call-usb_autopm_get_interface-for-devices-.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0471-sound-usb-call-usb_autopm_get_interface-for-devices-.patch
@@ -19,7 +19,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/sound/usb/card.c
 +++ b/sound/usb/card.c
-@@ -855,8 +855,14 @@ static int usb_audio_probe(struct usb_in
+@@ -856,8 +856,14 @@ static int usb_audio_probe(struct usb_in
  	if (ignore_ctl_error)
  		chip->quirk_flags |= QUIRK_FLAG_IGNORE_CTL_ERROR;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
index 9028e49fe5..78b01e9ba5 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch
@@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	addr = xhci_trb_virt_to_dma(new_seg, new_deq);
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1907,6 +1907,7 @@ struct xhci_hcd {
+@@ -1908,6 +1908,7 @@ struct xhci_hcd {
  #define XHCI_RESET_TO_DEFAULT	BIT_ULL(44)
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
diff --git a/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch b/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch
index a7556bcb14..d026c86174 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch
@@ -205,7 +205,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  		xhci_err(xhci, "Tried to move enqueue past ring segment\n");
  		return;
  	}
-@@ -3165,7 +3168,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
+@@ -3215,7 +3218,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
  	 * that clears the EHB.
  	 */
  	while (xhci_handle_event(xhci) > 0) {
@@ -214,7 +214,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  			continue;
  		xhci_update_erst_dequeue(xhci, event_ring_deq);
  		event_ring_deq = xhci->event_ring->dequeue;
-@@ -3307,7 +3310,8 @@ static int prepare_ring(struct xhci_hcd
+@@ -3357,7 +3360,8 @@ static int prepare_ring(struct xhci_hcd
  		}
  	}
  
@@ -248,7 +248,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	 * when the cycle bit is set to 1.
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1635,6 +1635,7 @@ struct xhci_ring {
+@@ -1636,6 +1636,7 @@ struct xhci_ring {
  	unsigned int		num_trbs_free;
  	unsigned int		num_trbs_free_temp;
  	unsigned int		bounce_buf_len;
diff --git a/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch b/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch
index d33181f371..4e23eaf936 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch
@@ -63,7 +63,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1909,6 +1909,7 @@ struct xhci_hcd {
+@@ -1910,6 +1910,7 @@ struct xhci_hcd {
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
  #define XHCI_AVOID_DQ_ON_LINK	BIT_ULL(47)
diff --git a/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch b/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch
index fa88a1682e..b18689dd9a 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch
@@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
 --- a/drivers/usb/host/xhci-ring.c
 +++ b/drivers/usb/host/xhci-ring.c
-@@ -3620,14 +3620,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3670,14 +3670,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  	unsigned int num_trbs;
  	unsigned int start_cycle, num_sgs = 0;
  	unsigned int enqd_len, block_len, trb_buff_len, full_len;
@@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	full_len = urb->transfer_buffer_length;
  	/* If we have scatter/gather list, we use it. */
  	if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
-@@ -3664,6 +3665,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3714,6 +3715,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  	start_cycle = ring->cycle_state;
  	send_addr = addr;
  
@@ -72,7 +72,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	/* Queue the TRBs, even if they are zero-length */
  	for (enqd_len = 0; first_trb || enqd_len < full_len;
  			enqd_len += trb_buff_len) {
-@@ -3676,6 +3688,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3726,6 +3738,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  		if (enqd_len + trb_buff_len > full_len)
  			trb_buff_len = full_len - enqd_len;
  
@@ -86,7 +86,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  			first_trb = false;
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1910,6 +1910,7 @@ struct xhci_hcd {
+@@ -1911,6 +1911,7 @@ struct xhci_hcd {
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
  #define XHCI_AVOID_DQ_ON_LINK	BIT_ULL(47)
  #define XHCI_VLI_TRB_CACHE_BUG	BIT_ULL(48)
diff --git a/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch b/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch
index 7c13526ee0..69b6da023e 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch
@@ -13,7 +13,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/usb/host/xhci-ring.c
 +++ b/drivers/usb/host/xhci-ring.c
-@@ -3620,7 +3620,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3670,7 +3670,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  	unsigned int num_trbs;
  	unsigned int start_cycle, num_sgs = 0;
  	unsigned int enqd_len, block_len, trb_buff_len, full_len;
@@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	u32 field, length_field, remainder, maxpacket;
  	u64 addr, send_addr;
  
-@@ -3666,14 +3666,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3716,14 +3716,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  	send_addr = addr;
  
  	if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
@@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	}
  
  	/* Queue the TRBs, even if they are zero-length */
-@@ -3688,7 +3683,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3738,7 +3733,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
  		if (enqd_len + trb_buff_len > full_len)
  			trb_buff_len = full_len - enqd_len;
  
diff --git a/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
index 1d3a21b6cd..49277ab251 100644
--- a/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
+++ b/target/linux/bcm53xx/patches-5.15/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
@@ -109,7 +109,7 @@ it on BCM4708 family.
  
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1907,6 +1907,7 @@ struct xhci_hcd {
+@@ -1908,6 +1908,7 @@ struct xhci_hcd {
  #define XHCI_RESET_TO_DEFAULT	BIT_ULL(44)
  #define XHCI_ZHAOXIN_TRB_FETCH	BIT_ULL(45)
  #define XHCI_ZHAOXIN_HOST	BIT_ULL(46)
diff --git a/target/linux/generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch b/target/linux/generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
deleted file mode 100644
index e4c0833ae7..0000000000
--- a/target/linux/generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 02d6fdecb9c38de19065f6bed8d5214556fd061d Mon Sep 17 00:00:00 2001
-From: Ansuel Smith <ansuelsmth at gmail.com>
-Date: Thu, 4 Nov 2021 16:00:40 +0100
-Subject: regmap: allow to define reg_update_bits for no bus configuration
-
-Some device requires a special handling for reg_update_bits and can't use
-the normal regmap read write logic. An example is when locking is
-handled by the device and rmw operations requires to do atomic operations.
-Allow to declare a dedicated function in regmap_config for
-reg_update_bits in no bus configuration.
-
-Signed-off-by: Ansuel Smith <ansuelsmth at gmail.com>
-Link: https://lore.kernel.org/r/20211104150040.1260-1-ansuelsmth at gmail.com
-Signed-off-by: Mark Brown <broonie at kernel.org>
----
- drivers/base/regmap/regmap.c | 1 +
- include/linux/regmap.h       | 7 +++++++
- 2 files changed, 8 insertions(+)
-
---- a/drivers/base/regmap/regmap.c
-+++ b/drivers/base/regmap/regmap.c
-@@ -877,6 +877,7 @@ struct regmap *__regmap_init(struct devi
- 	if (!bus) {
- 		map->reg_read  = config->reg_read;
- 		map->reg_write = config->reg_write;
-+		map->reg_update_bits = config->reg_update_bits;
- 
- 		map->defer_caching = false;
- 		goto skip_format_initialization;
---- a/include/linux/regmap.h
-+++ b/include/linux/regmap.h
-@@ -290,6 +290,11 @@ typedef void (*regmap_unlock)(void *);
-  *		  read operation on a bus such as SPI, I2C, etc. Most of the
-  *		  devices do not need this.
-  * @reg_write:	  Same as above for writing.
-+ * @reg_update_bits: Optional callback that if filled will be used to perform
-+ *		     all the update_bits(rmw) operation. Should only be provided
-+ *		     if the function require special handling with lock and reg
-+ *		     handling and the operation cannot be represented as a simple
-+ *		     update_bits operation on a bus such as SPI, I2C, etc.
-  * @fast_io:	  Register IO is fast. Use a spinlock instead of a mutex
-  *	     	  to perform locking. This field is ignored if custom lock/unlock
-  *	     	  functions are used (see fields lock/unlock of struct regmap_config).
-@@ -372,6 +377,8 @@ struct regmap_config {
- 
- 	int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
- 	int (*reg_write)(void *context, unsigned int reg, unsigned int val);
-+	int (*reg_update_bits)(void *context, unsigned int reg,
-+			       unsigned int mask, unsigned int val);
- 
- 	bool fast_io;
- 
diff --git a/target/linux/generic/backport-5.15/350-v5.18-regmap-add-configurable-downshift-for-addresses.patch b/target/linux/generic/backport-5.15/350-v5.18-regmap-add-configurable-downshift-for-addresses.patch
index 7bb328f3a6..175df150cc 100644
--- a/target/linux/generic/backport-5.15/350-v5.18-regmap-add-configurable-downshift-for-addresses.patch
+++ b/target/linux/generic/backport-5.15/350-v5.18-regmap-add-configurable-downshift-for-addresses.patch
@@ -37,7 +37,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	map->format.val_bytes = DIV_ROUND_UP(config->val_bits, 8);
  	map->format.buf_size = DIV_ROUND_UP(config->reg_bits +
  			config->val_bits + config->pad_bits, 8);
-@@ -1737,6 +1738,7 @@ static int _regmap_raw_write_impl(struct
+@@ -1750,6 +1751,7 @@ static int _regmap_raw_write_impl(struct
  			return ret;
  	}
  
@@ -45,7 +45,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	map->format.format_reg(map->work_buf, reg, map->reg_shift);
  	regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
  				      map->write_flag_mask);
-@@ -1907,6 +1909,7 @@ static int _regmap_bus_formatted_write(v
+@@ -1920,6 +1922,7 @@ static int _regmap_bus_formatted_write(v
  			return ret;
  	}
  
@@ -53,7 +53,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	map->format.format_write(map, reg, val);
  
  	trace_regmap_hw_write_start(map, reg, 1);
-@@ -2348,6 +2351,7 @@ static int _regmap_raw_multi_reg_write(s
+@@ -2360,6 +2363,7 @@ static int _regmap_raw_multi_reg_write(s
  		unsigned int reg = regs[i].reg;
  		unsigned int val = regs[i].def;
  		trace_regmap_hw_write_start(map, reg, 1);
@@ -61,7 +61,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  		map->format.format_reg(u8, reg, map->reg_shift);
  		u8 += reg_bytes + pad_bytes;
  		map->format.format_val(u8, val, 0);
-@@ -2675,6 +2679,7 @@ static int _regmap_raw_read(struct regma
+@@ -2685,6 +2689,7 @@ static int _regmap_raw_read(struct regma
  			return ret;
  	}
  
@@ -80,7 +80,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
   * @pad_bits: Number of bits of padding between register and value.
   * @val_bits: Number of bits in a register value, mandatory.
   *
-@@ -360,6 +362,7 @@ struct regmap_config {
+@@ -366,6 +368,7 @@ struct regmap_config {
  
  	int reg_bits;
  	int reg_stride;
diff --git a/target/linux/generic/backport-5.15/351-v5.18-regmap-allow-a-defined-reg_base-to-be-added-to-every.patch b/target/linux/generic/backport-5.15/351-v5.18-regmap-allow-a-defined-reg_base-to-be-added-to-every.patch
index 841f8d4528..df716c4b65 100644
--- a/target/linux/generic/backport-5.15/351-v5.18-regmap-allow-a-defined-reg_base-to-be-added-to-every.patch
+++ b/target/linux/generic/backport-5.15/351-v5.18-regmap-allow-a-defined-reg_base-to-be-added-to-every.patch
@@ -42,7 +42,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	map->format.reg_bytes = DIV_ROUND_UP(config->reg_bits, 8);
  	map->format.pad_bytes = config->pad_bits / 8;
  	map->format.reg_downshift = config->reg_downshift;
-@@ -1738,6 +1740,7 @@ static int _regmap_raw_write_impl(struct
+@@ -1751,6 +1753,7 @@ static int _regmap_raw_write_impl(struct
  			return ret;
  	}
  
@@ -50,7 +50,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	reg >>= map->format.reg_downshift;
  	map->format.format_reg(map->work_buf, reg, map->reg_shift);
  	regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
-@@ -1909,6 +1912,7 @@ static int _regmap_bus_formatted_write(v
+@@ -1922,6 +1925,7 @@ static int _regmap_bus_formatted_write(v
  			return ret;
  	}
  
@@ -58,7 +58,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	reg >>= map->format.reg_downshift;
  	map->format.format_write(map, reg, val);
  
-@@ -2351,6 +2355,7 @@ static int _regmap_raw_multi_reg_write(s
+@@ -2363,6 +2367,7 @@ static int _regmap_raw_multi_reg_write(s
  		unsigned int reg = regs[i].reg;
  		unsigned int val = regs[i].def;
  		trace_regmap_hw_write_start(map, reg, 1);
@@ -66,7 +66,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  		reg >>= map->format.reg_downshift;
  		map->format.format_reg(u8, reg, map->reg_shift);
  		u8 += reg_bytes + pad_bytes;
-@@ -2679,6 +2684,7 @@ static int _regmap_raw_read(struct regma
+@@ -2689,6 +2694,7 @@ static int _regmap_raw_read(struct regma
  			return ret;
  	}
  
@@ -85,7 +85,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
   * @pad_bits: Number of bits of padding between register and value.
   * @val_bits: Number of bits in a register value, mandatory.
   *
-@@ -363,6 +365,7 @@ struct regmap_config {
+@@ -369,6 +371,7 @@ struct regmap_config {
  	int reg_bits;
  	int reg_stride;
  	int reg_downshift;
diff --git a/target/linux/generic/backport-5.15/352-v6.3-regmap-apply-reg_base-and-reg_downshift-for-single-r.patch b/target/linux/generic/backport-5.15/352-v6.3-regmap-apply-reg_base-and-reg_downshift-for-single-r.patch
index bc3865c75b..33de94cb17 100644
--- a/target/linux/generic/backport-5.15/352-v6.3-regmap-apply-reg_base-and-reg_downshift-for-single-r.patch
+++ b/target/linux/generic/backport-5.15/352-v6.3-regmap-apply-reg_base-and-reg_downshift-for-single-r.patch
@@ -28,7 +28,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
 
 --- a/drivers/base/regmap/regmap.c
 +++ b/drivers/base/regmap/regmap.c
-@@ -1931,6 +1931,8 @@ static int _regmap_bus_reg_write(void *c
+@@ -1943,6 +1943,8 @@ static int _regmap_bus_reg_write(void *c
  {
  	struct regmap *map = context;
  
@@ -37,7 +37,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	return map->bus->reg_write(map->bus_context, reg, val);
  }
  
-@@ -2705,6 +2707,8 @@ static int _regmap_bus_reg_read(void *co
+@@ -2715,6 +2717,8 @@ static int _regmap_bus_reg_read(void *co
  {
  	struct regmap *map = context;
  
@@ -46,7 +46,7 @@ Signed-off-by: Mark Brown <broonie at kernel.org>
  	return map->bus->reg_read(map->bus_context, reg, val);
  }
  
-@@ -3080,6 +3084,8 @@ static int _regmap_update_bits(struct re
+@@ -3084,6 +3088,8 @@ static int _regmap_update_bits(struct re
  		*change = false;
  
  	if (regmap_volatile(map, reg) && map->reg_update_bits) {
diff --git a/target/linux/generic/hack-5.15/259-regmap_dynamic.patch b/target/linux/generic/hack-5.15/259-regmap_dynamic.patch
index e0820ccfc0..ea06821c4b 100644
--- a/target/linux/generic/hack-5.15/259-regmap_dynamic.patch
+++ b/target/linux/generic/hack-5.15/259-regmap_dynamic.patch
@@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <linux/mutex.h>
  #include <linux/err.h>
  #include <linux/property.h>
-@@ -3360,3 +3361,5 @@ static int __init regmap_initcall(void)
+@@ -3364,3 +3365,5 @@ static int __init regmap_initcall(void)
  	return 0;
  }
  postcore_initcall(regmap_initcall);
diff --git a/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 071a2ed3e5..4c97d8b9ec 100644
--- a/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -6298,6 +6329,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6291,6 +6322,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -6309,6 +6342,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6302,6 +6335,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -6500,6 +6534,8 @@ static int __net_init ip6_route_net_init
+@@ -6493,6 +6527,8 @@ static int __net_init ip6_route_net_init
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	net->ipv6.fib6_has_custom_rules = false;
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
  					       sizeof(*net->ipv6.ip6_prohibit_entry),
  					       GFP_KERNEL);
-@@ -6510,11 +6546,21 @@ static int __net_init ip6_route_net_init
+@@ -6503,11 +6539,21 @@ static int __net_init ip6_route_net_init
  			 ip6_template_metrics, true);
  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
  
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
-@@ -6541,6 +6587,8 @@ out:
+@@ -6534,6 +6580,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -6560,6 +6608,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6553,6 +6601,7 @@ static void __net_exit ip6_route_net_exi
  	kfree(net->ipv6.ip6_null_entry);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  	kfree(net->ipv6.ip6_blk_hole_entry);
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6643,6 +6692,9 @@ void __init ip6_route_init_special_entri
+@@ -6636,6 +6685,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch b/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
index 355a0fa8bb..8f6902cf60 100644
--- a/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
+++ b/target/linux/ipq806x/patches-5.15/700-Revert-net-stmmac-Use-hrtimer-for-TX-coalescing.patch
@@ -107,7 +107,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -3960,7 +3953,7 @@ static int stmmac_release(struct net_dev
+@@ -3962,7 +3955,7 @@ static int stmmac_release(struct net_dev
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -116,7 +116,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  
  	netif_tx_disable(dev);
  
-@@ -6635,7 +6628,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6637,7 +6630,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -125,7 +125,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  
  	/* Free the IRQ lines */
  	stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
-@@ -6730,8 +6723,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6732,8 +6725,7 @@ int stmmac_xdp_open(struct net_device *d
  		stmmac_set_tx_tail_ptr(priv, priv->ioaddr,
  				       tx_q->tx_tail_addr, chan);
  
@@ -135,7 +135,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  	}
  
  	/* Enable the MAC Rx/Tx */
-@@ -6754,7 +6746,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6756,7 +6748,7 @@ int stmmac_xdp_open(struct net_device *d
  
  irq_error:
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -144,7 +144,7 @@ Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -7481,7 +7473,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7483,7 +7475,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)



From lede-commits at lists.infradead.org  Fri Mar 29 06:10:51 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 09:10:51 -0400
Subject: [openwrt/openwrt]  kernel: bump 5.15 to 5.15.151
In-Reply-To: <171171785109.372569.12965619303182652498@git-01.infra.openwrt.org>
References: <171171785109.372569.12965619303182652498@git-01.infra.openwrt.org>
Message-ID: <mailman.21623.1711717858.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/6734cbd9f71abf33d7324a42254debc782301b21

commit 6734cbd9f71abf33d7324a42254debc782301b21
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Mon Mar 25 23:54:57 2024 +0100

    kernel: bump 5.15 to 5.15.151
    
    No manual changes needed.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    (cherry picked from commit 030757112413760bdb5941776d6ca35d3c7e0833)
---
 include/kernel-5.15                                |  4 +-
 ...-lan78xx-Enable-LEDs-and-auto-negotiation.patch |  2 +-
 ...8-lan78xx-Read-initial-EEE-status-from-DT.patch |  2 +-
 ...78xx-Disable-TCP-Segmentation-Offload-TSO.patch |  2 +-
 ...x-Move-enabling-of-EEE-into-PHY-init-code.patch |  2 +-
 ...bounce-link-events-to-minimize-poll-storm.patch |  2 +-
 ...78xx-use-default-alignment-for-rx-buffers.patch |  2 +-
 ...-gigadevice-add-support-for-GD5FxGQ4xExxG.patch |  2 +-
 ...-gigadevice-add-support-for-GD5F1GQ5RExxG.patch |  2 +-
 ...-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch |  2 +-
 ...-gigadevice-add-support-for-GD5FxGM7xExxG.patch |  2 +-
 ...v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch |  2 +-
 ...t-stmicro-stmmac-move-queue-reset-to-dedi.patch |  8 +-
 ...t-stmicro-stmmac-first-disable-all-queues.patch |  4 +-
 ...t-stmicro-stmmac-move-dma-conf-to-dedicat.patch | 90 +++++++++++-----------
 ...t-stmicro-stmmac-generate-stmmac-dma-conf.patch | 18 ++---
 ...t-stmicro-stmmac-permit-MTU-change-with-i.patch |  4 +-
 ...nel-ct-size-the-hashtable-more-adequately.patch |  2 +-
 ...f_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 19 files changed, 77 insertions(+), 77 deletions(-)

diff --git a/include/kernel-5.15 b/include/kernel-5.15
index 58573657d6..4d621b63e8 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .150
-LINUX_KERNEL_HASH-5.15.150 = ee05592b458e7fcdc515b43605883a10cc2f65f2e2b58d60af8a72b93467e4d4
+LINUX_VERSION-5.15 = .151
+LINUX_KERNEL_HASH-5.15.151 = 8a1e760bf2660947234109aa4fdbbe3686238b4e852157b96c59356689107e49
diff --git a/target/linux/bcm27xx/patches-5.15/950-0055-lan78xx-Enable-LEDs-and-auto-negotiation.patch b/target/linux/bcm27xx/patches-5.15/950-0055-lan78xx-Enable-LEDs-and-auto-negotiation.patch
index 79928b1dde..2f2b86d7e9 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0055-lan78xx-Enable-LEDs-and-auto-negotiation.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0055-lan78xx-Enable-LEDs-and-auto-negotiation.patch
@@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  	ret = lan78xx_write_reg(dev, HW_CFG, buf);
  	if (ret < 0)
  		return ret;
-@@ -2870,6 +2879,9 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2871,6 +2880,9 @@ static int lan78xx_reset(struct lan78xx_
  			buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
  		}
  	}
diff --git a/target/linux/bcm27xx/patches-5.15/950-0098-lan78xx-Read-initial-EEE-status-from-DT.patch b/target/linux/bcm27xx/patches-5.15/950-0098-lan78xx-Read-initial-EEE-status-from-DT.patch
index 50ea9f4c5b..28c87ad7f2 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0098-lan78xx-Read-initial-EEE-status-from-DT.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0098-lan78xx-Read-initial-EEE-status-from-DT.patch
@@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -2935,6 +2935,22 @@ static int lan78xx_open(struct net_devic
+@@ -2936,6 +2936,22 @@ static int lan78xx_open(struct net_devic
  
  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0104-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/target/linux/bcm27xx/patches-5.15/950-0104-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
index 1b6c1d1f2b..9ff8baf8ba 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0104-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0104-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.org>
  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
  {
  	u32 *buf;
-@@ -3263,8 +3272,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -3264,8 +3273,14 @@ static int lan78xx_bind(struct lan78xx_n
  	if (DEFAULT_RX_CSUM_ENABLE)
  		dev->net->features |= NETIF_F_RXCSUM;
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0105-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch b/target/linux/bcm27xx/patches-5.15/950-0105-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
index 91d27b82d9..e43043bf85 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0105-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0105-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch
@@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.org>
  	if (phydev->mdio.dev.of_node) {
  		u32 reg;
  		int len;
-@@ -2944,22 +2960,6 @@ static int lan78xx_open(struct net_devic
+@@ -2945,22 +2961,6 @@ static int lan78xx_open(struct net_devic
  
  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0114-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/target/linux/bcm27xx/patches-5.15/950-0114-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
index 334d391c1b..164c788fa0 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0114-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0114-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch
@@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
  {
  	u32 *buf;
-@@ -4123,7 +4128,13 @@ static int lan78xx_probe(struct usb_inte
+@@ -4124,7 +4129,13 @@ static int lan78xx_probe(struct usb_inte
  	netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
  	netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
  
diff --git a/target/linux/bcm27xx/patches-5.15/950-0118-lan78xx-use-default-alignment-for-rx-buffers.patch b/target/linux/bcm27xx/patches-5.15/950-0118-lan78xx-use-default-alignment-for-rx-buffers.patch
index 6bb311b576..5b0f41f5f4 100644
--- a/target/linux/bcm27xx/patches-5.15/950-0118-lan78xx-use-default-alignment-for-rx-buffers.patch
+++ b/target/linux/bcm27xx/patches-5.15/950-0118-lan78xx-use-default-alignment-for-rx-buffers.patch
@@ -12,7 +12,7 @@ in both dwc_otg and in ipv6 processing.
 
 --- a/drivers/net/usb/lan78xx.c
 +++ b/drivers/net/usb/lan78xx.c
-@@ -3502,7 +3502,7 @@ static int rx_submit(struct lan78xx_net
+@@ -3503,7 +3503,7 @@ static int rx_submit(struct lan78xx_net
  	size_t size = dev->rx_urb_size;
  	int ret = 0;
  
diff --git a/target/linux/generic/backport-5.15/420-v5.19-02-mtd-spinand-gigadevice-add-support-for-GD5FxGQ4xExxG.patch b/target/linux/generic/backport-5.15/420-v5.19-02-mtd-spinand-gigadevice-add-support-for-GD5FxGQ4xExxG.patch
index 181c912fbf..94863b891c 100644
--- a/target/linux/generic/backport-5.15/420-v5.19-02-mtd-spinand-gigadevice-add-support-for-GD5FxGQ4xExxG.patch
+++ b/target/linux/generic/backport-5.15/420-v5.19-02-mtd-spinand-gigadevice-add-support-for-GD5FxGQ4xExxG.patch
@@ -19,7 +19,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-3-gch981213 at gmail.
 
 --- a/drivers/mtd/nand/spi/gigadevice.c
 +++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -333,6 +333,36 @@ static const struct spinand_info gigadev
+@@ -335,6 +335,36 @@ static const struct spinand_info gigadev
  		     SPINAND_HAS_QE_BIT,
  		     SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
  				     gd5fxgq4uexxg_ecc_get_status)),
diff --git a/target/linux/generic/backport-5.15/420-v5.19-03-mtd-spinand-gigadevice-add-support-for-GD5F1GQ5RExxG.patch b/target/linux/generic/backport-5.15/420-v5.19-03-mtd-spinand-gigadevice-add-support-for-GD5F1GQ5RExxG.patch
index 3a1cc9efcf..287a062aac 100644
--- a/target/linux/generic/backport-5.15/420-v5.19-03-mtd-spinand-gigadevice-add-support-for-GD5F1GQ5RExxG.patch
+++ b/target/linux/generic/backport-5.15/420-v5.19-03-mtd-spinand-gigadevice-add-support-for-GD5F1GQ5RExxG.patch
@@ -14,7 +14,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-4-gch981213 at gmail.
 
 --- a/drivers/mtd/nand/spi/gigadevice.c
 +++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -383,6 +383,16 @@ static const struct spinand_info gigadev
+@@ -385,6 +385,16 @@ static const struct spinand_info gigadev
  		     SPINAND_HAS_QE_BIT,
  		     SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
  				     gd5fxgq5xexxg_ecc_get_status)),
diff --git a/target/linux/generic/backport-5.15/420-v5.19-04-mtd-spinand-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch b/target/linux/generic/backport-5.15/420-v5.19-04-mtd-spinand-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch
index cee9d9db3e..b1cf47678e 100644
--- a/target/linux/generic/backport-5.15/420-v5.19-04-mtd-spinand-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch
+++ b/target/linux/generic/backport-5.15/420-v5.19-04-mtd-spinand-gigadevice-add-support-for-GD5F-2-4-GQ5x.patch
@@ -35,7 +35,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-5-gch981213 at gmail.
  static SPINAND_OP_VARIANTS(write_cache_variants,
  		SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
  		SPINAND_PROG_LOAD(true, 0, NULL, 0));
-@@ -391,6 +399,46 @@ static const struct spinand_info gigadev
+@@ -393,6 +401,46 @@ static const struct spinand_info gigadev
  					      &write_cache_variants,
  					      &update_cache_variants),
  		     SPINAND_HAS_QE_BIT,
diff --git a/target/linux/generic/backport-5.15/420-v5.19-05-mtd-spinand-gigadevice-add-support-for-GD5FxGM7xExxG.patch b/target/linux/generic/backport-5.15/420-v5.19-05-mtd-spinand-gigadevice-add-support-for-GD5FxGM7xExxG.patch
index d63113e1a6..5e342a29fb 100644
--- a/target/linux/generic/backport-5.15/420-v5.19-05-mtd-spinand-gigadevice-add-support-for-GD5FxGM7xExxG.patch
+++ b/target/linux/generic/backport-5.15/420-v5.19-05-mtd-spinand-gigadevice-add-support-for-GD5FxGM7xExxG.patch
@@ -22,7 +22,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-6-gch981213 at gmail.
 
 --- a/drivers/mtd/nand/spi/gigadevice.c
 +++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -441,6 +441,66 @@ static const struct spinand_info gigadev
+@@ -443,6 +443,66 @@ static const struct spinand_info gigadev
  		     SPINAND_HAS_QE_BIT,
  		     SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
  				     gd5fxgq5xexxg_ecc_get_status)),
diff --git a/target/linux/generic/backport-5.15/609-v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch b/target/linux/generic/backport-5.15/609-v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch
index cab980a6dc..e5d02cfa97 100644
--- a/target/linux/generic/backport-5.15/609-v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch
+++ b/target/linux/generic/backport-5.15/609-v5.18-veth-Allow-jumbo-frames-in-xdp-mode.patch
@@ -20,7 +20,7 @@ Link: https://lore.kernel.org/bpf/d5dc039c3d4123426e7023a488c449181a7bc57f.16469
 
 --- a/drivers/net/veth.c
 +++ b/drivers/net/veth.c
-@@ -1473,9 +1473,14 @@ static int veth_xdp_set(struct net_devic
+@@ -1457,9 +1457,14 @@ static int veth_xdp_set(struct net_devic
  			goto err;
  		}
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
index 32dab26eb5..43fc3b1523 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-01-net-ethernet-stmicro-stmmac-move-queue-reset-to-dedi.patch
@@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	ret = stmmac_hw_setup(dev, true);
  	if (ret < 0) {
  		netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
-@@ -6410,6 +6403,7 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6412,6 +6405,7 @@ void stmmac_enable_rx_queue(struct stmma
  		return;
  	}
  
@@ -79,7 +79,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_rx_descriptors(priv, queue);
  
  	stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -6471,6 +6465,7 @@ void stmmac_enable_tx_queue(struct stmma
+@@ -6473,6 +6467,7 @@ void stmmac_enable_tx_queue(struct stmma
  		return;
  	}
  
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	stmmac_clear_tx_descriptors(priv, queue);
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
-@@ -7398,6 +7393,25 @@ int stmmac_suspend(struct device *dev)
+@@ -7400,6 +7395,25 @@ int stmmac_suspend(struct device *dev)
  }
  EXPORT_SYMBOL_GPL(stmmac_suspend);
  
@@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  /**
   * stmmac_reset_queues_param - reset queue parameters
   * @priv: device pointer
-@@ -7408,22 +7422,11 @@ static void stmmac_reset_queues_param(st
+@@ -7410,22 +7424,11 @@ static void stmmac_reset_queues_param(st
  	u32 tx_cnt = priv->plat->tx_queues_to_use;
  	u32 queue;
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-02-net-ethernet-stmicro-stmmac-first-disable-all-queues.patch b/target/linux/generic/backport-5.15/775-v6.0-02-net-ethernet-stmicro-stmmac-first-disable-all-queues.patch
index 8bdeef7a69..0940d3d799 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-02-net-ethernet-stmicro-stmmac-first-disable-all-queues.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-02-net-ethernet-stmicro-stmmac-first-disable-all-queues.patch
@@ -17,7 +17,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 
 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -3835,8 +3835,6 @@ static int stmmac_release(struct net_dev
+@@ -3837,8 +3837,6 @@ static int stmmac_release(struct net_dev
  	struct stmmac_priv *priv = netdev_priv(dev);
  	u32 chan;
  
@@ -26,7 +26,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	if (device_may_wakeup(priv->device))
  		phylink_speed_down(priv->phylink, false);
  	/* Stop and disconnect the PHY */
-@@ -3848,6 +3846,8 @@ static int stmmac_release(struct net_dev
+@@ -3850,6 +3848,8 @@ static int stmmac_release(struct net_dev
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
  		hrtimer_cancel(&priv->tx_queue[chan].txtimer);
  
diff --git a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
index 0f8ca79d60..1b5a8a700b 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-03-net-ethernet-stmicro-stmmac-move-dma-conf-to-dedicat.patch
@@ -775,7 +775,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -3844,7 +3844,7 @@ static int stmmac_release(struct net_dev
+@@ -3846,7 +3846,7 @@ static int stmmac_release(struct net_dev
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -784,7 +784,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	netif_tx_disable(dev);
  
-@@ -3908,7 +3908,7 @@ static bool stmmac_vlan_insert(struct st
+@@ -3910,7 +3910,7 @@ static bool stmmac_vlan_insert(struct st
  		return false;
  
  	stmmac_set_tx_owner(priv, p);
@@ -793,7 +793,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	return true;
  }
  
-@@ -3926,7 +3926,7 @@ static bool stmmac_vlan_insert(struct st
+@@ -3928,7 +3928,7 @@ static bool stmmac_vlan_insert(struct st
  static void stmmac_tso_allocator(struct stmmac_priv *priv, dma_addr_t des,
  				 int total_len, bool last_segment, u32 queue)
  {
@@ -802,7 +802,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct dma_desc *desc;
  	u32 buff_size;
  	int tmp_len;
-@@ -3937,7 +3937,7 @@ static void stmmac_tso_allocator(struct
+@@ -3939,7 +3939,7 @@ static void stmmac_tso_allocator(struct
  		dma_addr_t curr_addr;
  
  		tx_q->cur_tx = STMMAC_GET_ENTRY(tx_q->cur_tx,
@@ -811,7 +811,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		WARN_ON(tx_q->tx_skbuff[tx_q->cur_tx]);
  
  		if (tx_q->tbs & STMMAC_TBS_AVAIL)
-@@ -3965,7 +3965,7 @@ static void stmmac_tso_allocator(struct
+@@ -3967,7 +3967,7 @@ static void stmmac_tso_allocator(struct
  
  static void stmmac_flush_tx_descriptors(struct stmmac_priv *priv, int queue)
  {
@@ -820,7 +820,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	int desc_size;
  
  	if (likely(priv->extend_desc))
-@@ -4027,7 +4027,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
+@@ -4029,7 +4029,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
  	dma_addr_t des;
  	int i;
  
@@ -829,7 +829,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	first_tx = tx_q->cur_tx;
  
  	/* Compute header lengths */
-@@ -4067,7 +4067,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
+@@ -4069,7 +4069,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
  		stmmac_set_mss(priv, mss_desc, mss);
  		tx_q->mss = mss;
  		tx_q->cur_tx = STMMAC_GET_ENTRY(tx_q->cur_tx,
@@ -838,7 +838,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		WARN_ON(tx_q->tx_skbuff[tx_q->cur_tx]);
  	}
  
-@@ -4179,7 +4179,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
+@@ -4181,7 +4181,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
  	 * ndo_start_xmit will fill this descriptor the next time it's
  	 * called and stmmac_tx_clean may clean up to this descriptor.
  	 */
@@ -847,7 +847,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (unlikely(stmmac_tx_avail(priv, queue) <= (MAX_SKB_FRAGS + 1))) {
  		netif_dbg(priv, hw, priv->dev, "%s: stop transmitted packets\n",
-@@ -4267,7 +4267,7 @@ static netdev_tx_t stmmac_xmit(struct sk
+@@ -4269,7 +4269,7 @@ static netdev_tx_t stmmac_xmit(struct sk
  	int entry, first_tx;
  	dma_addr_t des;
  
@@ -856,7 +856,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	first_tx = tx_q->cur_tx;
  
  	if (priv->tx_path_in_lpi_mode && priv->eee_sw_timer_en)
-@@ -4330,7 +4330,7 @@ static netdev_tx_t stmmac_xmit(struct sk
+@@ -4332,7 +4332,7 @@ static netdev_tx_t stmmac_xmit(struct sk
  		int len = skb_frag_size(frag);
  		bool last_segment = (i == (nfrags - 1));
  
@@ -865,7 +865,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		WARN_ON(tx_q->tx_skbuff[entry]);
  
  		if (likely(priv->extend_desc))
-@@ -4401,7 +4401,7 @@ static netdev_tx_t stmmac_xmit(struct sk
+@@ -4403,7 +4403,7 @@ static netdev_tx_t stmmac_xmit(struct sk
  	 * ndo_start_xmit will fill this descriptor the next time it's
  	 * called and stmmac_tx_clean may clean up to this descriptor.
  	 */
@@ -874,7 +874,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	tx_q->cur_tx = entry;
  
  	if (netif_msg_pktdata(priv)) {
-@@ -4513,7 +4513,7 @@ static void stmmac_rx_vlan(struct net_de
+@@ -4515,7 +4515,7 @@ static void stmmac_rx_vlan(struct net_de
   */
  static inline void stmmac_rx_refill(struct stmmac_priv *priv, u32 queue)
  {
@@ -883,7 +883,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	int dirty = stmmac_rx_dirty(priv, queue);
  	unsigned int entry = rx_q->dirty_rx;
  
-@@ -4563,7 +4563,7 @@ static inline void stmmac_rx_refill(stru
+@@ -4565,7 +4565,7 @@ static inline void stmmac_rx_refill(stru
  		dma_wmb();
  		stmmac_set_rx_owner(priv, p, use_rx_wd);
  
@@ -892,7 +892,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	}
  	rx_q->dirty_rx = entry;
  	rx_q->rx_tail_addr = rx_q->dma_rx_phy +
-@@ -4591,12 +4591,12 @@ static unsigned int stmmac_rx_buf1_len(s
+@@ -4593,12 +4593,12 @@ static unsigned int stmmac_rx_buf1_len(s
  
  	/* First descriptor, not last descriptor and not split header */
  	if (status & rx_not_ls)
@@ -907,7 +907,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  static unsigned int stmmac_rx_buf2_len(struct stmmac_priv *priv,
-@@ -4612,7 +4612,7 @@ static unsigned int stmmac_rx_buf2_len(s
+@@ -4614,7 +4614,7 @@ static unsigned int stmmac_rx_buf2_len(s
  
  	/* Not last descriptor */
  	if (status & rx_not_ls)
@@ -916,7 +916,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	plen = stmmac_get_rx_frame_len(priv, p, coe);
  
-@@ -4623,7 +4623,7 @@ static unsigned int stmmac_rx_buf2_len(s
+@@ -4625,7 +4625,7 @@ static unsigned int stmmac_rx_buf2_len(s
  static int stmmac_xdp_xmit_xdpf(struct stmmac_priv *priv, int queue,
  				struct xdp_frame *xdpf, bool dma_map)
  {
@@ -925,7 +925,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	unsigned int entry = tx_q->cur_tx;
  	struct dma_desc *tx_desc;
  	dma_addr_t dma_addr;
-@@ -4686,7 +4686,7 @@ static int stmmac_xdp_xmit_xdpf(struct s
+@@ -4688,7 +4688,7 @@ static int stmmac_xdp_xmit_xdpf(struct s
  
  	stmmac_enable_dma_transmission(priv, priv->ioaddr);
  
@@ -934,7 +934,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	tx_q->cur_tx = entry;
  
  	return STMMAC_XDP_TX;
-@@ -4860,7 +4860,7 @@ static void stmmac_dispatch_skb_zc(struc
+@@ -4862,7 +4862,7 @@ static void stmmac_dispatch_skb_zc(struc
  
  static bool stmmac_rx_refill_zc(struct stmmac_priv *priv, u32 queue, u32 budget)
  {
@@ -943,7 +943,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	unsigned int entry = rx_q->dirty_rx;
  	struct dma_desc *rx_desc = NULL;
  	bool ret = true;
-@@ -4903,7 +4903,7 @@ static bool stmmac_rx_refill_zc(struct s
+@@ -4905,7 +4905,7 @@ static bool stmmac_rx_refill_zc(struct s
  		dma_wmb();
  		stmmac_set_rx_owner(priv, rx_desc, use_rx_wd);
  
@@ -952,7 +952,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	}
  
  	if (rx_desc) {
-@@ -4918,7 +4918,7 @@ static bool stmmac_rx_refill_zc(struct s
+@@ -4920,7 +4920,7 @@ static bool stmmac_rx_refill_zc(struct s
  
  static int stmmac_rx_zc(struct stmmac_priv *priv, int limit, u32 queue)
  {
@@ -961,7 +961,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	unsigned int count = 0, error = 0, len = 0;
  	int dirty = stmmac_rx_dirty(priv, queue);
  	unsigned int next_entry = rx_q->cur_rx;
-@@ -4940,7 +4940,7 @@ static int stmmac_rx_zc(struct stmmac_pr
+@@ -4942,7 +4942,7 @@ static int stmmac_rx_zc(struct stmmac_pr
  			desc_size = sizeof(struct dma_desc);
  		}
  
@@ -970,7 +970,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  				    rx_q->dma_rx_phy, desc_size);
  	}
  	while (count < limit) {
-@@ -4987,7 +4987,7 @@ read_again:
+@@ -4989,7 +4989,7 @@ read_again:
  
  		/* Prefetch the next RX descriptor */
  		rx_q->cur_rx = STMMAC_GET_ENTRY(rx_q->cur_rx,
@@ -979,7 +979,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		next_entry = rx_q->cur_rx;
  
  		if (priv->extend_desc)
-@@ -5108,7 +5108,7 @@ read_again:
+@@ -5110,7 +5110,7 @@ read_again:
   */
  static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
  {
@@ -988,7 +988,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned int count = 0, error = 0, len = 0;
  	int status = 0, coe = priv->hw->rx_csum;
-@@ -5121,7 +5121,7 @@ static int stmmac_rx(struct stmmac_priv
+@@ -5123,7 +5123,7 @@ static int stmmac_rx(struct stmmac_priv
  	int buf_sz;
  
  	dma_dir = page_pool_get_dma_dir(rx_q->page_pool);
@@ -997,7 +997,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (netif_msg_rx_status(priv)) {
  		void *rx_head;
-@@ -5135,7 +5135,7 @@ static int stmmac_rx(struct stmmac_priv
+@@ -5137,7 +5137,7 @@ static int stmmac_rx(struct stmmac_priv
  			desc_size = sizeof(struct dma_desc);
  		}
  
@@ -1006,7 +1006,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  				    rx_q->dma_rx_phy, desc_size);
  	}
  	while (count < limit) {
-@@ -5179,7 +5179,7 @@ read_again:
+@@ -5181,7 +5181,7 @@ read_again:
  			break;
  
  		rx_q->cur_rx = STMMAC_GET_ENTRY(rx_q->cur_rx,
@@ -1015,7 +1015,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		next_entry = rx_q->cur_rx;
  
  		if (priv->extend_desc)
-@@ -5313,7 +5313,7 @@ read_again:
+@@ -5315,7 +5315,7 @@ read_again:
  						buf1_len, dma_dir);
  			skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
  					buf->page, buf->page_offset, buf1_len,
@@ -1024,7 +1024,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  			/* Data payload appended into SKB */
  			page_pool_release_page(rx_q->page_pool, buf->page);
-@@ -5325,7 +5325,7 @@ read_again:
+@@ -5327,7 +5327,7 @@ read_again:
  						buf2_len, dma_dir);
  			skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
  					buf->sec_page, 0, buf2_len,
@@ -1033,7 +1033,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  			/* Data payload appended into SKB */
  			page_pool_release_page(rx_q->page_pool, buf->sec_page);
-@@ -5758,11 +5758,13 @@ static irqreturn_t stmmac_safety_interru
+@@ -5760,11 +5760,13 @@ static irqreturn_t stmmac_safety_interru
  static irqreturn_t stmmac_msi_intr_tx(int irq, void *data)
  {
  	struct stmmac_tx_queue *tx_q = (struct stmmac_tx_queue *)data;
@@ -1048,7 +1048,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Check if adapter is up */
  	if (test_bit(STMMAC_DOWN, &priv->state))
-@@ -5797,10 +5799,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
+@@ -5799,10 +5801,12 @@ static irqreturn_t stmmac_msi_intr_tx(in
  static irqreturn_t stmmac_msi_intr_rx(int irq, void *data)
  {
  	struct stmmac_rx_queue *rx_q = (struct stmmac_rx_queue *)data;
@@ -1062,7 +1062,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Check if adapter is up */
  	if (test_bit(STMMAC_DOWN, &priv->state))
-@@ -5826,10 +5830,10 @@ static void stmmac_poll_controller(struc
+@@ -5828,10 +5832,10 @@ static void stmmac_poll_controller(struc
  
  	if (priv->plat->multi_msi_en) {
  		for (i = 0; i < priv->plat->rx_queues_to_use; i++)
@@ -1075,7 +1075,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	} else {
  		disable_irq(dev->irq);
  		stmmac_interrupt(dev->irq, dev);
-@@ -6010,34 +6014,34 @@ static int stmmac_rings_status_show(stru
+@@ -6012,34 +6016,34 @@ static int stmmac_rings_status_show(stru
  		return 0;
  
  	for (queue = 0; queue < rx_count; queue++) {
@@ -1116,7 +1116,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  		}
  	}
  
-@@ -6384,7 +6388,7 @@ void stmmac_disable_rx_queue(struct stmm
+@@ -6386,7 +6390,7 @@ void stmmac_disable_rx_queue(struct stmm
  
  void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1125,7 +1125,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned long flags;
  	u32 buf_size;
-@@ -6421,7 +6425,7 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6423,7 +6427,7 @@ void stmmac_enable_rx_queue(struct stmma
  				      rx_q->queue_index);
  	} else {
  		stmmac_set_dma_bfsize(priv, priv->ioaddr,
@@ -1134,7 +1134,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  				      rx_q->queue_index);
  	}
  
-@@ -6447,7 +6451,7 @@ void stmmac_disable_tx_queue(struct stmm
+@@ -6449,7 +6453,7 @@ void stmmac_disable_tx_queue(struct stmm
  
  void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1143,7 +1143,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	struct stmmac_channel *ch = &priv->channel[queue];
  	unsigned long flags;
  	int ret;
-@@ -6497,7 +6501,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6499,7 +6503,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1152,7 +1152,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Free the IRQ lines */
  	stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
-@@ -6556,7 +6560,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6558,7 +6562,7 @@ int stmmac_xdp_open(struct net_device *d
  
  	/* DMA RX Channel Configuration */
  	for (chan = 0; chan < rx_cnt; chan++) {
@@ -1161,7 +1161,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  		stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  				    rx_q->dma_rx_phy, chan);
-@@ -6574,7 +6578,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6576,7 +6580,7 @@ int stmmac_xdp_open(struct net_device *d
  					      rx_q->queue_index);
  		} else {
  			stmmac_set_dma_bfsize(priv, priv->ioaddr,
@@ -1170,7 +1170,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  					      rx_q->queue_index);
  		}
  
-@@ -6583,7 +6587,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6585,7 +6589,7 @@ int stmmac_xdp_open(struct net_device *d
  
  	/* DMA TX Channel Configuration */
  	for (chan = 0; chan < tx_cnt; chan++) {
@@ -1179,7 +1179,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  		stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  				    tx_q->dma_tx_phy, chan);
-@@ -6616,7 +6620,7 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6618,7 +6622,7 @@ int stmmac_xdp_open(struct net_device *d
  
  irq_error:
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1188,7 +1188,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_hw_teardown(dev);
  init_error:
-@@ -6643,8 +6647,8 @@ int stmmac_xsk_wakeup(struct net_device
+@@ -6645,8 +6649,8 @@ int stmmac_xsk_wakeup(struct net_device
  	    queue >= priv->plat->tx_queues_to_use)
  		return -EINVAL;
  
@@ -1199,7 +1199,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	ch = &priv->channel[queue];
  
  	if (!rx_q->xsk_pool && !tx_q->xsk_pool)
-@@ -6904,8 +6908,8 @@ int stmmac_reinit_ringparam(struct net_d
+@@ -6906,8 +6910,8 @@ int stmmac_reinit_ringparam(struct net_d
  	if (netif_running(dev))
  		stmmac_release(dev);
  
@@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (netif_running(dev))
  		ret = stmmac_open(dev);
-@@ -7343,7 +7347,7 @@ int stmmac_suspend(struct device *dev)
+@@ -7345,7 +7349,7 @@ int stmmac_suspend(struct device *dev)
  	stmmac_disable_all_queues(priv);
  
  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
@@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	if (priv->eee_enabled) {
  		priv->tx_path_in_lpi_mode = false;
-@@ -7395,7 +7399,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
+@@ -7397,7 +7401,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
  
  static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
  {
@@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	rx_q->cur_rx = 0;
  	rx_q->dirty_rx = 0;
-@@ -7403,7 +7407,7 @@ static void stmmac_reset_rx_queue(struct
+@@ -7405,7 +7409,7 @@ static void stmmac_reset_rx_queue(struct
  
  static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
  {
diff --git a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
index b3ca0d5c71..87da2af562 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-04-net-ethernet-stmicro-stmmac-generate-stmmac-dma-conf.patch
@@ -1036,7 +1036,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  static void stmmac_fpe_stop_wq(struct stmmac_priv *priv)
  {
  	set_bit(__FPE_REMOVING, &priv->fpe_task_state);
-@@ -3860,7 +3976,7 @@ static int stmmac_release(struct net_dev
+@@ -3862,7 +3978,7 @@ static int stmmac_release(struct net_dev
  	stmmac_stop_all_dma(priv);
  
  	/* Release and free the Rx/Tx resources */
@@ -1045,7 +1045,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Disable the MAC Rx/Tx */
  	stmmac_mac_set(priv, priv->ioaddr, false);
-@@ -6383,7 +6499,7 @@ void stmmac_disable_rx_queue(struct stmm
+@@ -6385,7 +6501,7 @@ void stmmac_disable_rx_queue(struct stmm
  	spin_unlock_irqrestore(&ch->lock, flags);
  
  	stmmac_stop_rx_dma(priv, queue);
@@ -1054,7 +1054,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
-@@ -6394,21 +6510,21 @@ void stmmac_enable_rx_queue(struct stmma
+@@ -6396,21 +6512,21 @@ void stmmac_enable_rx_queue(struct stmma
  	u32 buf_size;
  	int ret;
  
@@ -1080,7 +1080,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  			    rx_q->dma_rx_phy, rx_q->queue_index);
-@@ -6446,7 +6562,7 @@ void stmmac_disable_tx_queue(struct stmm
+@@ -6448,7 +6564,7 @@ void stmmac_disable_tx_queue(struct stmm
  	spin_unlock_irqrestore(&ch->lock, flags);
  
  	stmmac_stop_tx_dma(priv, queue);
@@ -1089,7 +1089,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  }
  
  void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
-@@ -6456,21 +6572,21 @@ void stmmac_enable_tx_queue(struct stmma
+@@ -6458,21 +6574,21 @@ void stmmac_enable_tx_queue(struct stmma
  	unsigned long flags;
  	int ret;
  
@@ -1115,7 +1115,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
  			    tx_q->dma_tx_phy, tx_q->queue_index);
-@@ -6510,7 +6626,7 @@ void stmmac_xdp_release(struct net_devic
+@@ -6512,7 +6628,7 @@ void stmmac_xdp_release(struct net_devic
  	stmmac_stop_all_dma(priv);
  
  	/* Release and free the Rx/Tx resources */
@@ -1124,7 +1124,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  
  	/* Disable the MAC Rx/Tx */
  	stmmac_mac_set(priv, priv->ioaddr, false);
-@@ -6535,14 +6651,14 @@ int stmmac_xdp_open(struct net_device *d
+@@ -6537,14 +6653,14 @@ int stmmac_xdp_open(struct net_device *d
  	u32 chan;
  	int ret;
  
@@ -1141,7 +1141,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	if (ret < 0) {
  		netdev_err(dev, "%s: DMA descriptors initialization failed\n",
  			   __func__);
-@@ -6624,7 +6740,7 @@ irq_error:
+@@ -6626,7 +6742,7 @@ irq_error:
  
  	stmmac_hw_teardown(dev);
  init_error:
@@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  dma_desc_error:
  	return ret;
  }
-@@ -7490,7 +7606,7 @@ int stmmac_resume(struct device *dev)
+@@ -7492,7 +7608,7 @@ int stmmac_resume(struct device *dev)
  	stmmac_reset_queues_param(priv);
  
  	stmmac_free_tx_skbufs(priv);
diff --git a/target/linux/generic/backport-5.15/775-v6.0-05-net-ethernet-stmicro-stmmac-permit-MTU-change-with-i.patch b/target/linux/generic/backport-5.15/775-v6.0-05-net-ethernet-stmicro-stmmac-permit-MTU-change-with-i.patch
index 2576df4522..e1d46f03a9 100644
--- a/target/linux/generic/backport-5.15/775-v6.0-05-net-ethernet-stmicro-stmmac-permit-MTU-change-with-i.patch
+++ b/target/linux/generic/backport-5.15/775-v6.0-05-net-ethernet-stmicro-stmmac-permit-MTU-change-with-i.patch
@@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
 
 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -5625,18 +5625,15 @@ static int stmmac_change_mtu(struct net_
+@@ -5627,18 +5627,15 @@ static int stmmac_change_mtu(struct net_
  {
  	struct stmmac_priv *priv = netdev_priv(dev);
  	int txfifosz = priv->plat->tx_fifo_size;
@@ -40,7 +40,7 @@ Signed-off-by: Jakub Kicinski <kuba at kernel.org>
  	if (stmmac_xdp_is_enabled(priv) && new_mtu > ETH_DATA_LEN) {
  		netdev_dbg(priv->dev, "Jumbo frames not supported for XDP\n");
  		return -EINVAL;
-@@ -5648,8 +5645,29 @@ static int stmmac_change_mtu(struct net_
+@@ -5650,8 +5647,29 @@ static int stmmac_change_mtu(struct net_
  	if ((txfifosz < new_mtu) || (new_mtu > BUF_SIZE_16KiB))
  		return -EINVAL;
  
diff --git a/target/linux/generic/hack-5.15/661-kernel-ct-size-the-hashtable-more-adequately.patch b/target/linux/generic/hack-5.15/661-kernel-ct-size-the-hashtable-more-adequately.patch
index 2fa91deece..89074d0a04 100644
--- a/target/linux/generic/hack-5.15/661-kernel-ct-size-the-hashtable-more-adequately.patch
+++ b/target/linux/generic/hack-5.15/661-kernel-ct-size-the-hashtable-more-adequately.patch
@@ -14,7 +14,7 @@ Signed-off-by: Rui Salvaterra <rsalvaterra at gmail.com>
 
 --- a/net/netfilter/nf_conntrack_core.c
 +++ b/net/netfilter/nf_conntrack_core.c
-@@ -2738,7 +2738,7 @@ int nf_conntrack_init_start(void)
+@@ -2737,7 +2737,7 @@ int nf_conntrack_init_start(void)
  
  	if (!nf_conntrack_htable_size) {
  		nf_conntrack_htable_size
diff --git a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index 196beffecf..70aee30eb6 100644
--- a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -7763,7 +7763,7 @@ static int nft_register_flowtable_net_ho
+@@ -7770,7 +7770,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);



From lede-commits at lists.infradead.org  Fri Mar 29 08:41:54 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 11:41:54 -0400
Subject: [openwrt/openwrt]  bcm47xx: fix switch setup for Linksys WRT320N v1
In-Reply-To: <171172691411.1328990.16002832466686070711@git-01.infra.openwrt.org>
References: <171172691411.1328990.16002832466686070711@git-01.infra.openwrt.org>
Message-ID: <mailman.21651.1711726925.1280.lede-commits@lists.infradead.org>

wigyori pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/3547565f245479dc1643ea66828fb55635d49051

commit 3547565f245479dc1643ea66828fb55635d49051
Author: Zoltan HERPAI <wigyori at uid0.hu>
AuthorDate: Thu Mar 28 13:41:32 2024 +0100

    bcm47xx: fix switch setup for Linksys WRT320N v1
    
    WRT320N V1 is not detected by the initial network configuration script.
    The switch remains unconfigured and WAN/LAN VLANs are not created.
    
    This adds the correct setup for the device.
    
    Signed-off-by: Zoltan HERPAI <wigyori at uid0.hu>
---
 target/linux/bcm47xx/base-files/etc/board.d/01_network | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/bcm47xx/base-files/etc/board.d/01_network b/target/linux/bcm47xx/base-files/etc/board.d/01_network
index c3b43b5d37..4a777fc193 100644
--- a/target/linux/bcm47xx/base-files/etc/board.d/01_network
+++ b/target/linux/bcm47xx/base-files/etc/board.d/01_network
@@ -170,6 +170,7 @@ configure_by_model() {
 
 	"Asus RT-N16"* | \
 	"Linksys E3000 V1" | \
+	"Linksys WRT320N V1" | \
 	"Linksys WRT610N V2" | \
 	"Netgear WNR3500 V2" | \
 	"Netgear WNR3500L")



From lede-commits at lists.infradead.org  Fri Mar 29 09:29:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 12:29:30 -0400
Subject: [openwrt/openwrt]  tools/cmake: disable xcode generator
In-Reply-To: <171172976915.2186452.9123776499343550702@git-01.infra.openwrt.org>
References: <171172976915.2186452.9123776499343550702@git-01.infra.openwrt.org>
Message-ID: <mailman.21660.1711729781.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/383b68e73cc9f4cdeaa92b2cf7d20142a4a9a9ae

commit 383b68e73cc9f4cdeaa92b2cf7d20142a4a9a9ae
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Sun Mar 24 10:59:22 2024 +0100

    tools/cmake: disable xcode generator
    
    Fixes build on latest macOS SDK
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 .../patches/160-disable_xcode_generator.patch      | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/tools/cmake/patches/160-disable_xcode_generator.patch b/tools/cmake/patches/160-disable_xcode_generator.patch
new file mode 100644
index 0000000000..20d1086bd4
--- /dev/null
+++ b/tools/cmake/patches/160-disable_xcode_generator.patch
@@ -0,0 +1,22 @@
+--- a/Source/CMakeLists.txt
++++ b/Source/CMakeLists.txt
+@@ -846,7 +846,7 @@ if(CMake_USE_XCOFF_PARSER)
+ endif()
+ 
+ # Xcode only works on Apple
+-if(APPLE)
++if(APPLE_DISABLED)
+   target_sources(
+     CMakeLib
+     PRIVATE
+--- a/Source/cmake.cxx
++++ b/Source/cmake.cxx
+@@ -132,7 +132,7 @@
+ #  include "cmGlobalGhsMultiGenerator.h"
+ #endif
+ 
+-#if defined(__APPLE__)
++#if defined(__APPLE_DISABLED__)
+ #  if !defined(CMAKE_BOOTSTRAP)
+ #    include "cmGlobalXCodeGenerator.h"
+ 



From lede-commits at lists.infradead.org  Fri Mar 29 09:29:31 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 12:29:31 -0400
Subject: [openwrt/openwrt]  perf: fix build on linux 6.6
In-Reply-To: <171172976915.2186452.9123776499343550702@git-01.infra.openwrt.org>
References: <171172976915.2186452.9123776499343550702@git-01.infra.openwrt.org>
Message-ID: <mailman.21661.1711729781.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/87de62dcb8b6d1441749a7e729bdcde46a4ea0dc

commit 87de62dcb8b6d1441749a7e729bdcde46a4ea0dc
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Sun Mar 24 15:43:02 2024 +0100

    perf: fix build on linux 6.6
    
    - use Makefile.perf to prevent overriding MAKEFLAGS
    - fix path to PKG_CONFIG
    - link libstdc++ statically (only used for demangling)
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 package/devel/perf/Makefile | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/package/devel/perf/Makefile b/package/devel/perf/Makefile
index f9573c4150..27ab7173f8 100644
--- a/package/devel/perf/Makefile
+++ b/package/devel/perf/Makefile
@@ -28,7 +28,7 @@ define Package/perf
   SECTION:=devel
   CATEGORY:=Development
   DEPENDS:= +libelf +libdw +PACKAGE_libunwind:libunwind +libpthread +librt +objdump @!IN_SDK @KERNEL_PERF_EVENTS \
-	    +PACKAGE_libbfd:libbfd +PACKAGE_libopcodes:libopcodes
+	    +PACKAGE_libbfd:libbfd +PACKAGE_libopcodes:libopcodes +libtraceevent
   TITLE:=Linux performance monitoring tool
   VERSION:=$(LINUX_VERSION)-$(PKG_RELEASE)
   URL:=http://www.kernel.org
@@ -63,14 +63,19 @@ MAKE_FLAGS = \
 	LDFLAGS="$(TARGET_LDFLAGS)" \
 	KBUILD_HOSTCFLAGS="$(HOST_CFLAGS)" \
 	$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \
+	PKG_CONFIG="$(PKG_CONFIG)" \
+	PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" \
+	EXCLUDE_EXTLIBS="-lstdc++" \
+	EXTRA_PERFLIBS="$(shell $(TARGET_CC) -print-file-name=libstdc++.a)" \
 	WERROR=0 \
 	O=$(PKG_BUILD_DIR) \
 	prefix=/usr
 
 define Build/Compile
-	+$(MAKE_FLAGS) $(MAKE) $(PKG_JOBS) \
+	+$(MAKE) $(PKG_JOBS) $(MAKE_FLAGS) \
 		--no-print-directory \
-		-C $(LINUX_DIR)/tools/perf
+		-C $(LINUX_DIR)/tools/perf \
+		-f Makefile.perf
 endef
 
 define Package/perf/install



From lede-commits at lists.infradead.org  Fri Mar 29 09:29:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 12:29:29 -0400
Subject: [openwrt/openwrt]  tools/e2fsprogs: disable building fuse2fs to avoid
 depending on libfuse
In-Reply-To: <171172976915.2186452.9123776499343550702@git-01.infra.openwrt.org>
References: <171172976915.2186452.9123776499343550702@git-01.infra.openwrt.org>
Message-ID: <mailman.21662.1711729785.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/c9ae8fd3d45f5d05a03c40a46573f2e982b5f139

commit c9ae8fd3d45f5d05a03c40a46573f2e982b5f139
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Sun Mar 24 10:40:31 2024 +0100

    tools/e2fsprogs: disable building fuse2fs to avoid depending on libfuse
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 tools/e2fsprogs/Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/e2fsprogs/Makefile b/tools/e2fsprogs/Makefile
index 0aa85af3f1..7aafc9f06b 100644
--- a/tools/e2fsprogs/Makefile
+++ b/tools/e2fsprogs/Makefile
@@ -30,7 +30,8 @@ HOST_CONFIGURE_ARGS += \
 	--enable-libuuid \
 	--disable-tls \
 	--disable-nls \
-	--enable-threads=pth
+	--enable-threads=pth \
+	--disable-fuse2fs
 
 define Host/Prepare
 	$(call Host/Prepare/Default)



From lede-commits at lists.infradead.org  Fri Mar 29 09:32:32 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 12:32:32 -0400
Subject: [openwrt/openwrt]  kernel: kmod-phy-smsc: add dependency on crc16
In-Reply-To: <171172995237.2190020.6501621291725896787@git-01.infra.openwrt.org>
References: <171172995237.2190020.6501621291725896787@git-01.infra.openwrt.org>
Message-ID: <mailman.21663.1711729958.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d506ea3e8089c671cb76831a65be4d53949ee657

commit d506ea3e8089c671cb76831a65be4d53949ee657
Author: Tomasz Maciej Nowak <tmn505 at gmail.com>
AuthorDate: Fri Mar 29 14:58:35 2024 +0100

    kernel: kmod-phy-smsc: add dependency on crc16
    
    Introduced WoL feature needs CRC16 support.
    
    Signed-off-by: Tomasz Maciej Nowak <tmn505 at gmail.com>
---
 package/kernel/linux/modules/netdevices.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk
index af1d8b485e..9fdbdc9ec7 100644
--- a/package/kernel/linux/modules/netdevices.mk
+++ b/package/kernel/linux/modules/netdevices.mk
@@ -363,7 +363,7 @@ define KernelPackage/phy-smsc
    SUBMENU:=$(NETWORK_DEVICES_MENU)
    TITLE:=SMSC PHY driver
    KCONFIG:=CONFIG_SMSC_PHY
-   DEPENDS:=+kmod-libphy
+   DEPENDS:=+kmod-libphy +LINUX_6_6:kmod-lib-crc16
    FILES:=$(LINUX_DIR)/drivers/net/phy/smsc.ko
    AUTOLOAD:=$(call AutoProbe,smsc)
 endef



From lede-commits at lists.infradead.org  Fri Mar 29 09:54:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 12:54:21 -0400
Subject: [openwrt/openwrt]  config: Enable ext4 journaling by default.
In-Reply-To: <171173126103.2214339.10637216246404442282@git-01.infra.openwrt.org>
References: <171173126103.2214339.10637216246404442282@git-01.infra.openwrt.org>
Message-ID: <mailman.21690.1711731266.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f9f2426e398cf74d1098ae40317bfba677ac7560

commit f9f2426e398cf74d1098ae40317bfba677ac7560
Author: Jordan Woyak <jordan.woyak at gmail.com>
AuthorDate: Mon Mar 25 20:56:06 2024 -0500

    config: Enable ext4 journaling by default.
    
    Not having a journal by default is a major "gotcha".
    
    Because openwrt does not fsck on boot, a power loss without journaling
    can result in a dirty filesystem that openwrt will mount as read-only
    which requires intervention to restore the router to working order.
    
    Signed-off-by: Jordan Woyak <jordan.woyak at gmail.com>
---
 config/Config-images.in | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/Config-images.in b/config/Config-images.in
index c2d7af7a80..6f2f926432 100644
--- a/config/Config-images.in
+++ b/config/Config-images.in
@@ -127,6 +127,7 @@ menu "Target Images"
 		config TARGET_EXT4_JOURNAL
 			bool "Create a journaling filesystem"
 			depends on TARGET_ROOTFS_EXT4FS
+			default y
 			help
 			  Create an ext4 filesystem with a journal.
 



From lede-commits at lists.infradead.org  Fri Mar 29 10:56:34 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 13:56:34 -0400
Subject: [openwrt/openwrt]  qualcommax: default to kernel 6.6
In-Reply-To: <171173499475.2290277.8901944215880917330@git-01.infra.openwrt.org>
References: <171173499475.2290277.8901944215880917330@git-01.infra.openwrt.org>
Message-ID: <mailman.21711.1711735000.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5876b4afb9a7f0429cdb26b87c0fc7fb6d42db53

commit 5876b4afb9a7f0429cdb26b87c0fc7fb6d42db53
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 29 11:38:49 2024 +0100

    qualcommax: default to kernel 6.6
    
    6.6 has been in testing on qualcommax for a while so it should be in a
    good shape, but lets default to it to get a wider audience.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 target/linux/qualcommax/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/linux/qualcommax/Makefile b/target/linux/qualcommax/Makefile
index 68609157b0..ab7f52ae04 100644
--- a/target/linux/qualcommax/Makefile
+++ b/target/linux/qualcommax/Makefile
@@ -8,8 +8,7 @@ KERNELNAME:=Image dtbs
 CPU_TYPE:=cortex-a53
 SUBTARGETS:=ipq807x ipq60xx
 
-KERNEL_PATCHVER:=6.1
-KERNEL_TESTING_PATCHVER:=6.6
+KERNEL_PATCHVER:=6.6
 
 include $(INCLUDE_DIR)/target.mk
 DEFAULT_PACKAGES += \



From lede-commits at lists.infradead.org  Fri Mar 29 11:35:12 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 14:35:12 -0400
Subject: [openwrt/openwrt]  rockchip: remove redundant 'console' parameter
 from boot script
In-Reply-To: <171173731187.2340843.12448022409886627219@git-01.infra.openwrt.org>
References: <171173731187.2340843.12448022409886627219@git-01.infra.openwrt.org>
Message-ID: <mailman.21716.1711737316.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/163c3d0bde28664058656ce1c2bd97f80e4dbe2d

commit 163c3d0bde28664058656ce1c2bd97f80e4dbe2d
Author: Tianling Shen <cnsztl at immortalwrt.org>
AuthorDate: Tue Mar 26 02:25:42 2024 +0800

    rockchip: remove redundant 'console' parameter from boot script
    
    ttyS2 is the default console used for all rockchip boards.
    The redundant 'console=tty1' parameter now breaks the console due to
    recent procd update.
    
    Signed-off-by: Tianling Shen <cnsztl at immortalwrt.org>
---
 target/linux/rockchip/image/default.bootscript | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/rockchip/image/default.bootscript b/target/linux/rockchip/image/default.bootscript
index d49abd4478..cca0b8d4ac 100644
--- a/target/linux/rockchip/image/default.bootscript
+++ b/target/linux/rockchip/image/default.bootscript
@@ -8,7 +8,7 @@ elif test $stdout = 'serial at ff1a0000' ;
 then serial_addr=',0xff1a0000';
 fi;
 
-setenv bootargs "console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32${serial_addr} root=PARTUUID=${uuid} rw rootwait";
+setenv bootargs "console=ttyS2,1500000 earlycon=uart8250,mmio32${serial_addr} root=PARTUUID=${uuid} rw rootwait";
 
 load ${devtype} ${devnum}:1 ${kernel_addr_r} kernel.img
 



From lede-commits at lists.infradead.org  Fri Mar 29 11:35:11 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 14:35:11 -0400
Subject: [openwrt/openwrt]  rockchip: remove 'swiotlb' parameter from boot
 script
In-Reply-To: <171173731187.2340843.12448022409886627219@git-01.infra.openwrt.org>
References: <171173731187.2340843.12448022409886627219@git-01.infra.openwrt.org>
Message-ID: <mailman.21719.1711737321.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/50e6c8ae8df55532fb70c281bd238b9b1cf1fdaf

commit 50e6c8ae8df55532fb70c281bd238b9b1cf1fdaf
Author: Tianling Shen <cnsztl at immortalwrt.org>
AuthorDate: Tue Mar 26 00:40:37 2024 +0800

    rockchip: remove 'swiotlb' parameter from boot script
    
    We have hardware IOMMU support and this is totally unnecessary.
    The given value is also unreasonable, it's too small and causes
    kernel panic in some cases:
    
    [ 5706.856473] sdhci-dwcmshc fe310000.mmc: swiotlb buffer is full (sz: 28672 bytes), total 512 (slots), used 498 (slots)
    [ 5706.864451] sdhci-dwcmshc fe310000.mmc: swiotlb buffer is full (sz: 65536 bytes), total 512 (slots), used 464 (slots)
    
    This parameter seems to be added by mistake, so remove it.
    
    Fixes: e35c7ab51fd1 ("rockchip: merge bootscript")
    Signed-off-by: Tianling Shen <cnsztl at immortalwrt.org>
---
 target/linux/rockchip/image/default.bootscript | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/rockchip/image/default.bootscript b/target/linux/rockchip/image/default.bootscript
index e9de14ff7a..d49abd4478 100644
--- a/target/linux/rockchip/image/default.bootscript
+++ b/target/linux/rockchip/image/default.bootscript
@@ -8,7 +8,7 @@ elif test $stdout = 'serial at ff1a0000' ;
 then serial_addr=',0xff1a0000';
 fi;
 
-setenv bootargs "console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32${serial_addr} swiotlb=1 root=PARTUUID=${uuid} rw rootwait";
+setenv bootargs "console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32${serial_addr} root=PARTUUID=${uuid} rw rootwait";
 
 load ${devtype} ${devnum}:1 ${kernel_addr_r} kernel.img
 



From lede-commits at lists.infradead.org  Fri Mar 29 12:01:20 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 15:01:20 -0400
Subject: [openwrt/openwrt]  imagebuilder: check if BOARD is located in the
 feeds sub directory
In-Reply-To: <171173888078.2376352.4965654696059462916@git-01.infra.openwrt.org>
References: <171173888078.2376352.4965654696059462916@git-01.infra.openwrt.org>
Message-ID: <mailman.21734.1711738889.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/27d227b6828f5b211e68aa633f82c94c65f27d63

commit 27d227b6828f5b211e68aa633f82c94c65f27d63
Author: Florian Eckert <fe at dev.tdt.de>
AuthorDate: Thu Jan 25 10:25:06 2024 +0100

    imagebuilder: check if BOARD is located in the feeds sub directory
    
    Fixes the regression so that targets that were installed via a feed can
    also be build again with the Image Builder.
    
    Fixes: 84ec8c4 ("imagebuilder: copy from buildroot only target/linux")
    Signed-off-by: Florian Eckert <fe at dev.tdt.de>
    Tested-by: Thomas Richard <thomas.richard at bootlin.com>
---
 target/imagebuilder/Makefile | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/target/imagebuilder/Makefile b/target/imagebuilder/Makefile
index c3b6c9c10c..799ac3be55 100644
--- a/target/imagebuilder/Makefile
+++ b/target/imagebuilder/Makefile
@@ -80,7 +80,13 @@ endif
 
 	$(CP) -L $(TOPDIR)/target/linux/Makefile $(PKG_BUILD_DIR)/target/linux
 	$(CP) -L $(TOPDIR)/target/linux/generic $(PKG_BUILD_DIR)/target/linux
-	$(CP) -L $(TOPDIR)/target/linux/$(BOARD) $(PKG_BUILD_DIR)/target/linux
+	# check if board is installed from a feeds subdirectory
+	if [ -d $(TOPDIR)/target/linux/feeds/$(BOARD) ]; then \
+		mkdir -p $(PKG_BUILD_DIR)/target/linux/feeds; \
+		$(CP) -L $(TOPDIR)/target/linux/feeds/$(BOARD) $(PKG_BUILD_DIR)/target/linux/feeds; \
+	else \
+		$(CP) -L $(TOPDIR)/target/linux/$(BOARD) $(PKG_BUILD_DIR)/target/linux; \
+	fi
 	if [ -d $(TOPDIR)/staging_dir/host/lib/grub ]; then \
 		$(CP) $(TOPDIR)/staging_dir/host/lib/grub/ $(PKG_BUILD_DIR)/staging_dir/host/lib; \
 	fi



From lede-commits at lists.infradead.org  Fri Mar 29 12:01:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 15:01:21 -0400
Subject: [openwrt/openwrt]  imagebuilder: add check if target is sourced from
 feed
In-Reply-To: <171173888078.2376352.4965654696059462916@git-01.infra.openwrt.org>
References: <171173888078.2376352.4965654696059462916@git-01.infra.openwrt.org>
Message-ID: <mailman.21735.1711738891.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a998a12a2fe2b0f29b8bba11fec386b05c5ac1cc

commit a998a12a2fe2b0f29b8bba11fec386b05c5ac1cc
Author: Florian Eckert <fe at dev.tdt.de>
AuthorDate: Wed May 3 13:29:42 2023 +0200

    imagebuilder: add check if target is sourced from feed
    
    The image generation would fail, if the target is included from a feed.
    To fix this, check if targets is found in the feed directory.
    
    Signed-off-by: Florian Eckert <fe at dev.tdt.de>
    Tested-by: Thomas Richard <thomas.richard at bootlin.com>
---
 target/imagebuilder/files/Makefile | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile
index 78ec7e2e94..0466fc7dcc 100644
--- a/target/imagebuilder/files/Makefile
+++ b/target/imagebuilder/files/Makefile
@@ -205,8 +205,13 @@ build_image: FORCE
 	@echo
 	@echo Building images...
 	rm -rf $(BUILD_DIR)/json_info_files/
-	$(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
-		$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)")
+	if [ -d "target/linux/feeds/$(BOARD)" ]; then \
+		$(NO_TRACE_MAKE) -C target/linux/feeds/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
+			$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)"); \
+	else \
+		$(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
+			$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)"); \
+	fi
 
 $(BIN_DIR)/profiles.json: FORCE
 	$(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \



From lede-commits at lists.infradead.org  Fri Mar 29 12:11:56 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 15:11:56 -0400
Subject: [openwrt/openwrt]  ramips: mt7620a_tplink_archer-c5-v4: use
 LED_FUNCTION_WLAN_2GHZ and LED_FUNCTION_WLAN_5GHZ
In-Reply-To: <171173951698.2391012.18354414558845397286@git-01.infra.openwrt.org>
References: <171173951698.2391012.18354414558845397286@git-01.infra.openwrt.org>
Message-ID: <mailman.21738.1711739521.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/362e7103c674cb9d3fe8f5c6a1a38414f7ba66b8

commit 362e7103c674cb9d3fe8f5c6a1a38414f7ba66b8
Author: Mieczyslaw Nalewaj <namiltd at yahoo.com>
AuthorDate: Mon Mar 18 11:07:35 2024 +0100

    ramips: mt7620a_tplink_archer-c5-v4: use LED_FUNCTION_WLAN_2GHZ and LED_FUNCTION_WLAN_5GHZ
    
    Use LED_FUNCTION_WLAN_2GHZ and LED_FUNCTION_WLAN_5GHZ instead function-enumerator
    
    Signed-off-by: Mieczyslaw Nalewaj <namiltd at yahoo.com>
---
 target/linux/ramips/dts/mt7620a_tplink_archer-c5-v4.dts | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/target/linux/ramips/dts/mt7620a_tplink_archer-c5-v4.dts b/target/linux/ramips/dts/mt7620a_tplink_archer-c5-v4.dts
index c02b341d09..fcebf87c3f 100644
--- a/target/linux/ramips/dts/mt7620a_tplink_archer-c5-v4.dts
+++ b/target/linux/ramips/dts/mt7620a_tplink_archer-c5-v4.dts
@@ -26,17 +26,15 @@
 		};
 
 		led-1 {
-			function = LED_FUNCTION_WLAN;
+			function = LED_FUNCTION_WLAN_2GHZ;
 			color = <LED_COLOR_ID_GREEN>;
-			function-enumerator = <2>;
 			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
 			linux,default-trigger = "phy1tpt";
 		};
 
 		led-2 {
-			function = LED_FUNCTION_WLAN;
+			function = LED_FUNCTION_WLAN_5GHZ;
 			color = <LED_COLOR_ID_GREEN>;
-			function-enumerator = <5>;
 			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
 			linux,default-trigger = "phy0tpt";
 		};



From lede-commits at lists.infradead.org  Fri Mar 29 14:59:21 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 17:59:21 -0400
Subject: [openwrt/openwrt]  mediatek: filogic: add Netcore N60 support
In-Reply-To: <171174956076.2562718.14847065605318584962@git-01.infra.openwrt.org>
References: <171174956076.2562718.14847065605318584962@git-01.infra.openwrt.org>
Message-ID: <mailman.21771.1711749566.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/4ae474afbd023a3386f4276ca8f948a44b49ff1b

commit 4ae474afbd023a3386f4276ca8f948a44b49ff1b
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Fri Nov 3 23:02:35 2023 +0800

    mediatek: filogic: add Netcore N60 support
    
    Hardware specification:
      SoC: MediaTek MT7986A 4x A53
      Flash: ESMT F50L1G41LB 128MB
      RAM: W632GU6NB DDR3 256MB
      Ethernet: 1x 2.5G + 4x 1G
      WiFi1: MT7975N 2.4GHz 4T4R
      WiFi2: MT7975PN 5GHz 4T4R
      Button: Reset, WPS
      Power: DC 12V 2A
    
    Flash instructions:
      1. Connect to the router using ssh or telnet,
         username: useradmin, password is the web
         login password of the router.
      2. Use scp to upload bl31-uboot.fip and flash:
         "mtd write xxx-preloader.bin spi0.0"
         "mtd write xxx-bl31-uboot.fip FIP"
         "mtd erase ubi"
      3. Connect to the router via the Lan port,
         set a static ip of your PC.
         (ip 192.168.1.254, gateway 192.168.1.1)
      4. Download initramfs image, reboot router,
         waiting for tftp recovery to complete.
      5. After openwrt boots up, perform sysupgrade.
    
    Note:
      1. Back up all mtd partitions before flashing.
    
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
---
 target/linux/mediatek/dts/mt7986a-netcore-n60.dts  | 284 +++++++++++++++++++++
 .../filogic/base-files/etc/board.d/02_network      |   1 +
 .../etc/hotplug.d/ieee80211/11_fix_wifi_mac        |   3 +-
 .../filogic/base-files/lib/upgrade/platform.sh     |   1 +
 target/linux/mediatek/image/filogic.mk             |  24 ++
 5 files changed, 312 insertions(+), 1 deletion(-)

diff --git a/target/linux/mediatek/dts/mt7986a-netcore-n60.dts b/target/linux/mediatek/dts/mt7986a-netcore-n60.dts
new file mode 100644
index 0000000000..b96b1e2ec0
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7986a-netcore-n60.dts
@@ -0,0 +1,284 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+#include "mt7986a.dtsi"
+
+/ {
+	model = "Netcore N60";
+	compatible = "netcore,n60", "mediatek,mt7986a";
+
+	aliases {
+		serial0 = &uart0;
+		label-mac-device = &gmac0;
+		led-boot = &led_status_red;
+		led-failsafe = &led_status_red;
+		led-running = &led_status_blue;
+		led-upgrade = &led_status_blue;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	memory {
+		reg = <0 0x40000000 0 0x10000000>;
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 9 GPIO_ACTIVE_LOW>;
+		};
+
+		mesh {
+			label = "mesh";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&pio 10 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_status_red: status-red {
+			color = <LED_COLOR_ID_RED>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&pio 29 GPIO_ACTIVE_LOW>;
+		};
+
+		led_status_blue: status-blue {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&pio 32 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&crypto {
+	status = "okay";
+};
+
+&eth {
+	status = "okay";
+
+	gmac0: mac at 0 {
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+
+		nvmem-cells = <&macaddr_lan>;
+		nvmem-cell-names = "mac-address";
+
+		fixed-link {
+			speed = <2500>;
+			full-duplex;
+			pause;
+		};
+	};
+
+	gmac1: mac at 1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-handle = <&phy6>;
+		phy-mode = "2500base-x";
+
+		nvmem-cells = <&macaddr_wan>;
+		nvmem-cell-names = "mac-address";
+	};
+
+	mdio: mdio-bus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+	};
+};
+
+&mdio {
+	reset-delay-us = <600>;
+	reset-post-delay-us = <20000>;
+	reset-gpios = <&pio 6 GPIO_ACTIVE_LOW>;
+
+	phy6: phy at 6 {
+		compatible = "ethernet-phy-ieee802.3-c45";
+		reg = <6>;
+		mxl,led-config = <0x0 0x0 0x0 0x3f0>;
+	};
+
+	switch: switch at 1f {
+		compatible = "mediatek,mt7531";
+		reg = <31>;
+		reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
+		interrupt-controller;
+		#interrupt-cells = <1>;
+		interrupt-parent = <&pio>;
+		interrupts = <66 IRQ_TYPE_LEVEL_HIGH>;
+	};
+};
+
+&switch {
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		port at 0 {
+			reg = <0>;
+			label = "lan1";
+		};
+
+		port at 1 {
+			reg = <1>;
+			label = "lan2";
+		};
+
+		port at 3 {
+			reg = <3>;
+			label = "lan3";
+		};
+
+		port at 4 {
+			reg = <4>;
+			label = "lan4";
+		};
+
+		port at 6 {
+			reg = <6>;
+			ethernet = <&gmac0>;
+			phy-mode = "2500base-x";
+
+			fixed-link {
+				speed = <2500>;
+				full-duplex;
+				pause;
+			};
+		};
+	};
+};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi_flash_pins>;
+	status = "okay";
+
+	flash at 0 {
+		compatible = "spi-nand";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		reg = <0>;
+
+		spi-max-frequency = <20000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "BL2";
+				reg = <0x0000000 0x0100000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "u-boot-env";
+				reg = <0x0100000 0x0080000>;
+			};
+
+			factory: partition at 180000 {
+				label = "Factory";
+				reg = <0x0180000 0x0200000>;
+				read-only;
+			};
+
+			partition at 380000 {
+				label = "FIP";
+				reg = <0x0380000 0x0200000>;
+				read-only;
+			};
+
+			partition at 580000 {
+				label = "ubi";
+				reg = <0x0580000 0x7280000>;
+			};
+		};
+	};
+};
+
+&pio {
+	spi_flash_pins: spi-flash-pins-33-to-38 {
+		mux {
+			function = "spi";
+			groups = "spi0", "spi0_wp_hold";
+		};
+		conf-pu {
+			pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
+			drive-strength = <8>;
+			mediatek,pull-up-adv = <0>; /* bias-disable */
+		};
+		conf-pd {
+			pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
+			drive-strength = <8>;
+			mediatek,pull-down-adv = <0>; /* bias-disable */
+		};
+	};
+
+	wf_2g_5g_pins: wf_2g_5g-pins {
+		mux {
+			function = "wifi";
+			groups = "wf_2g", "wf_5g";
+		};
+		conf {
+			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
+			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
+			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
+			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
+			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
+			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
+			       "WF1_TOP_CLK", "WF1_TOP_DATA";
+			drive-strength = <4>;
+		};
+	};
+};
+
+&trng {
+	status = "okay";
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&wifi {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&wf_2g_5g_pins>;
+
+	mediatek,mtd-eeprom = <&factory 0x0>;
+};
+
+&factory {
+	nvmem-layout {
+		compatible = "fixed-layout";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		macaddr_lan: macaddr at 1fef20 {
+			reg = <0x1fef20 0x6>;
+		};
+
+		macaddr_wan: macaddr at 1fef26 {
+			reg = <0x1fef26 0x6>;
+		};
+	};
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index 5b8b910f62..a1207fc8eb 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -26,6 +26,7 @@ mediatek_setup_interfaces()
 	asus,tuf-ax4200|\
 	jdcloud,re-cp-03|\
 	mediatek,mt7981-rfb|\
+	netcore,n60|\
 	unielec,u7981-01*|\
 	zbtlink,zbt-z8102ax)
 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" eth1
diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index facd2079c4..ef10417e44 100644
--- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -86,7 +86,8 @@ case "$board" in
 		[ "$PHYNBR" = "0" ] && macaddr_add $addr 2 > /sys${DEVPATH}/macaddress
 		[ "$PHYNBR" = "1" ] && macaddr_add $addr 3 > /sys${DEVPATH}/macaddress
 		;;
-	jcg,q30-pro)
+	jcg,q30-pro|\
+	netcore,n60)
 		# Originally, phy1 is phy0 mac with LA bit set. However, this would conflict
 		# addresses on multiple VIFs with the other radio. Use label mac to set LA bit.
 		[ "$PHYNBR" = "1" ] && macaddr_setbit_la $(get_mac_label) > /sys${DEVPATH}/macaddress
diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
index 389c177fb9..380606412d 100755
--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
@@ -130,6 +130,7 @@ platform_do_upgrade() {
 	h3c,magic-nx30-pro|\
 	jcg,q30-pro|\
 	mediatek,mt7981-rfb|\
+	netcore,n60|\
 	qihoo,360t7|\
 	tplink,tl-xdr4288|\
 	tplink,tl-xdr6086|\
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index e3b588c861..2717121361 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -806,6 +806,30 @@ define Device/mercusys_mr90x-v1
 endef
 TARGET_DEVICES += mercusys_mr90x-v1
 
+define Device/netcore_n60
+  DEVICE_VENDOR := Netcore
+  DEVICE_MODEL := N60
+  DEVICE_DTS := mt7986a-netcore-n60
+  DEVICE_DTS_DIR := ../dts
+  UBINIZE_OPTS := -E 5
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  KERNEL_IN_UBI := 1
+  UBOOTENV_IN_UBI := 1
+  IMAGES := sysupgrade.itb
+  KERNEL_INITRAMFS_SUFFIX := -recovery.itb
+  KERNEL := kernel-bin | gzip
+  KERNEL_INITRAMFS := kernel-bin | lzma | \
+        fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
+  IMAGE/sysupgrade.itb := append-kernel | \
+        fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
+  DEVICE_PACKAGES := kmod-mt7986-firmware mt7986-wo-firmware
+  ARTIFACTS := preloader.bin bl31-uboot.fip
+  ARTIFACT/preloader.bin := mt7986-bl2 spim-nand-ddr3
+  ARTIFACT/bl31-uboot.fip := mt7986-bl31-uboot netcore_n60
+endef
+TARGET_DEVICES += netcore_n60
+
 define Device/netgear_wax220
   DEVICE_VENDOR := NETGEAR
   DEVICE_MODEL := WAX220



From lede-commits at lists.infradead.org  Fri Mar 29 14:59:20 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 17:59:20 -0400
Subject: [openwrt/openwrt]  uboot-mediatek: add Netcore N60 support
In-Reply-To: <171174956076.2562718.14847065605318584962@git-01.infra.openwrt.org>
References: <171174956076.2562718.14847065605318584962@git-01.infra.openwrt.org>
Message-ID: <mailman.21772.1711749566.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0170666d89127585d30c3f1a8fdf641d9e8fbbbf

commit 0170666d89127585d30c3f1a8fdf641d9e8fbbbf
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Thu Nov 2 23:16:28 2023 +0800

    uboot-mediatek: add Netcore N60 support
    
    The vendor uboot requires special fit verification.
    So add a custom uboot build for this device.
    
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
---
 package/boot/uboot-envtools/files/mediatek_filogic |   1 +
 package/boot/uboot-mediatek/Makefile               |  13 +
 .../patches/429-add-netcore-n60.patch              | 433 +++++++++++++++++++++
 3 files changed, 447 insertions(+)

diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic
index 08d2bf782b..972ad293ac 100644
--- a/package/boot/uboot-envtools/files/mediatek_filogic
+++ b/package/boot/uboot-envtools/files/mediatek_filogic
@@ -75,6 +75,7 @@ zbtlink,zbt-z8103ax)
 	;;
 h3c,magic-nx30-pro|\
 jcg,q30-pro|\
+netcore,n60|\
 qihoo,360t7|\
 tplink,tl-xdr4288|\
 tplink,tl-xdr6086|\
diff --git a/package/boot/uboot-mediatek/Makefile b/package/boot/uboot-mediatek/Makefile
index bc55d43211..c8213f7a53 100644
--- a/package/boot/uboot-mediatek/Makefile
+++ b/package/boot/uboot-mediatek/Makefile
@@ -472,6 +472,18 @@ define U-Boot/mt7986_jdcloud_re-cp-03
   DEPENDS:=+trusted-firmware-a-mt7986-emmc-ddr4
 endef
 
+define U-Boot/mt7986_netcore_n60
+  NAME:=Netcore N60
+  BUILD_SUBTARGET:=filogic
+  BUILD_DEVICES:=netcore_n60
+  UBOOT_CONFIG:=mt7986_netcore_n60
+  UBOOT_IMAGE:=u-boot.fip
+  BL2_BOOTDEV:=spim-nand
+  BL2_SOC:=mt7986
+  BL2_DDRTYPE:=ddr3
+  DEPENDS:=+trusted-firmware-a-mt7986-spim-nand-ddr3
+endef
+
 define U-Boot/mt7986_tplink_tl-xdr4288
   NAME:=TP-LINK TL-XDR4288
   BUILD_SUBTARGET:=filogic
@@ -669,6 +681,7 @@ UBOOT_TARGETS := \
 	mt7986_bananapi_bpi-r3-mini-snand \
 	mt7986_glinet_gl-mt6000 \
 	mt7986_jdcloud_re-cp-03 \
+	mt7986_netcore_n60 \
 	mt7986_tplink_tl-xdr4288 \
 	mt7986_tplink_tl-xdr6086 \
 	mt7986_tplink_tl-xdr6088 \
diff --git a/package/boot/uboot-mediatek/patches/429-add-netcore-n60.patch b/package/boot/uboot-mediatek/patches/429-add-netcore-n60.patch
new file mode 100644
index 0000000000..2304fcd5ce
--- /dev/null
+++ b/package/boot/uboot-mediatek/patches/429-add-netcore-n60.patch
@@ -0,0 +1,433 @@
+--- /dev/null
++++ b/configs/mt7986_netcore_n60_defconfig
+@@ -0,0 +1,182 @@
++CONFIG_ARM=y
++CONFIG_POSITION_INDEPENDENT=y
++CONFIG_ARCH_MEDIATEK=y
++CONFIG_TARGET_MT7986=y
++CONFIG_TEXT_BASE=0x41e00000
++CONFIG_SYS_MALLOC_F_LEN=0x4000
++CONFIG_SYS_HAS_NONCACHED_MEMORY=y
++CONFIG_NR_DRAM_BANKS=1
++CONFIG_DEFAULT_DEVICE_TREE="mt7986a-netcore-n60"
++CONFIG_DEFAULT_ENV_FILE="netcore_n60_env"
++CONFIG_DEFAULT_FDT_FILE="mediatek/mt7986a-netcore-n60.dtb"
++CONFIG_OF_LIBFDT_OVERLAY=y
++CONFIG_DEBUG_UART_BASE=0x11002000
++CONFIG_DEBUG_UART_CLOCK=40000000
++CONFIG_DEBUG_UART=y
++CONFIG_SYS_LOAD_ADDR=0x46000000
++CONFIG_SMBIOS_PRODUCT_NAME=""
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_BOOTDELAY=30
++CONFIG_AUTOBOOT_MENU_SHOW=y
++CONFIG_CFB_CONSOLE_ANSI=y
++CONFIG_BOARD_LATE_INIT=y
++CONFIG_BUTTON=y
++CONFIG_BUTTON_GPIO=y
++CONFIG_GPIO_HOG=y
++CONFIG_CMD_ENV_FLAGS=y
++CONFIG_FIT=y
++CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
++CONFIG_LED=y
++CONFIG_LED_BLINK=y
++CONFIG_LED_GPIO=y
++CONFIG_LOGLEVEL=7
++CONFIG_LOG=y
++CONFIG_SYS_PROMPT="MT7986> "
++CONFIG_CMD_BOOTMENU=y
++CONFIG_CMD_BOOTP=y
++CONFIG_CMD_BUTTON=y
++CONFIG_CMD_CACHE=y
++CONFIG_CMD_CDP=y
++CONFIG_CMD_CPU=y
++CONFIG_CMD_DHCP=y
++CONFIG_CMD_DM=y
++CONFIG_CMD_DNS=y
++CONFIG_CMD_ECHO=y
++CONFIG_CMD_ENV_READMEM=y
++CONFIG_CMD_ERASEENV=y
++CONFIG_CMD_EXT4=y
++CONFIG_CMD_FAT=y
++CONFIG_CMD_FDT=y
++CONFIG_CMD_FS_GENERIC=y
++CONFIG_CMD_FS_UUID=y
++CONFIG_CMD_GPIO=y
++CONFIG_CMD_GPT=y
++CONFIG_CMD_HASH=y
++CONFIG_CMD_ITEST=y
++CONFIG_CMD_LED=y
++CONFIG_CMD_LICENSE=y
++CONFIG_CMD_LINK_LOCAL=y
++# CONFIG_CMD_MBR is not set
++CONFIG_CMD_PCI=y
++CONFIG_CMD_PSTORE=y
++CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
++CONFIG_CMD_SF_TEST=y
++CONFIG_CMD_PING=y
++CONFIG_CMD_PXE=y
++CONFIG_CMD_PWM=y
++CONFIG_CMD_SMC=y
++CONFIG_CMD_TFTPBOOT=y
++CONFIG_CMD_TFTPSRV=y
++CONFIG_CMD_UBI=y
++CONFIG_CMD_UBI_RENAME=y
++CONFIG_CMD_UBIFS=y
++CONFIG_CMD_ASKENV=y
++CONFIG_CMD_PART=y
++CONFIG_CMD_RARP=y
++CONFIG_CMD_SETEXPR=y
++CONFIG_CMD_SLEEP=y
++CONFIG_CMD_SNTP=y
++CONFIG_CMD_SOURCE=y
++CONFIG_CMD_STRINGS=y
++CONFIG_CMD_USB=y
++CONFIG_CMD_UUID=y
++CONFIG_DISPLAY_CPUINFO=y
++CONFIG_DM_MTD=y
++CONFIG_DM_REGULATOR=y
++CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_REGULATOR_GPIO=y
++CONFIG_DM_USB=y
++CONFIG_DM_PWM=y
++CONFIG_PWM_MTK=y
++CONFIG_HUSH_PARSER=y
++CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
++CONFIG_SYS_RELOC_GD_ENV_ADDR=y
++CONFIG_VERSION_VARIABLE=y
++CONFIG_PARTITION_UUIDS=y
++CONFIG_NETCONSOLE=y
++CONFIG_REGMAP=y
++CONFIG_SYSCON=y
++CONFIG_CLK=y
++CONFIG_DM_GPIO=y
++CONFIG_DM_SCSI=y
++CONFIG_AHCI=y
++CONFIG_AHCI_PCI=y
++CONFIG_SCSI_AHCI=y
++CONFIG_SCSI=y
++CONFIG_CMD_SCSI=y
++CONFIG_PHY=y
++CONFIG_PHY_MTK_TPHY=y
++CONFIG_PHY_FIXED=y
++CONFIG_MTK_AHCI=y
++CONFIG_DM_ETH=y
++CONFIG_MEDIATEK_ETH=y
++CONFIG_PCI=y
++# CONFIG_MMC is not set
++# CONFIG_DM_MMC is not set
++CONFIG_MTD=y
++CONFIG_MTD_UBI_FASTMAP=y
++CONFIG_DM_PCI=y
++CONFIG_PCIE_MEDIATEK=y
++CONFIG_PINCTRL=y
++CONFIG_PINCONF=y
++CONFIG_PINCTRL_MT7622=y
++CONFIG_POWER_DOMAIN=y
++CONFIG_PRE_CONSOLE_BUFFER=y
++CONFIG_PRE_CON_BUF_ADDR=0x4007EF00
++CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_RAM=y
++CONFIG_DM_SERIAL=y
++CONFIG_MTK_SERIAL=y
++CONFIG_SPI=y
++CONFIG_DM_SPI=y
++CONFIG_MTK_SPI_NAND=y
++CONFIG_MTK_SPI_NAND_MTD=y
++CONFIG_SYSRESET_WATCHDOG=y
++CONFIG_WDT_MTK=y
++CONFIG_LZO=y
++CONFIG_ZSTD=y
++CONFIG_HEXDUMP=y
++CONFIG_RANDOM_UUID=y
++CONFIG_REGEX=y
++CONFIG_USB=y
++CONFIG_USB_HOST=y
++CONFIG_USB_XHCI_HCD=y
++CONFIG_USB_XHCI_MTK=y
++CONFIG_USB_STORAGE=y
++CONFIG_OF_EMBED=y
++CONFIG_ENV_OVERWRITE=y
++CONFIG_ENV_IS_IN_UBI=y
++CONFIG_ENV_UBI_PART="ubi"
++CONFIG_ENV_SIZE=0x1f000
++CONFIG_ENV_SIZE_REDUND=0x1f000
++CONFIG_ENV_UBI_VOLUME="ubootenv"
++CONFIG_ENV_UBI_VOLUME_REDUND="ubootenv2"
++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
++CONFIG_NET_RANDOM_ETHADDR=y
++CONFIG_REGMAP=y
++CONFIG_SYSCON=y
++CONFIG_CLK=y
++CONFIG_PHY_FIXED=y
++CONFIG_DM_ETH=y
++CONFIG_MEDIATEK_ETH=y
++CONFIG_PINCTRL=y
++CONFIG_PINCONF=y
++CONFIG_PINCTRL_MT7986=y
++CONFIG_POWER_DOMAIN=y
++CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_DM_REGULATOR=y
++CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_SERIAL=y
++CONFIG_MTK_SERIAL=y
++CONFIG_HEXDUMP=y
++CONFIG_USE_DEFAULT_ENV_FILE=y
++CONFIG_MTD_SPI_NAND=y
++CONFIG_MTK_SPIM=y
++CONFIG_CMD_MTD=y
++CONFIG_CMD_NAND=y
++CONFIG_CMD_NAND_TRIMFFS=y
++CONFIG_LMB_MAX_REGIONS=64
++CONFIG_USE_IPADDR=y
++CONFIG_IPADDR="192.168.1.1"
++CONFIG_USE_SERVERIP=y
++CONFIG_SERVERIP="192.168.1.254"
+--- /dev/null
++++ b/arch/arm/dts/mt7986a-netcore-n60.dts
+@@ -0,0 +1,185 @@
++// SPDX-License-Identifier: GPL-2.0
++/*
++ * Copyright (c) 2021 MediaTek Inc.
++ * Author: Sam Shih <sam.shih at mediatek.com>
++ */
++
++/dts-v1/;
++#include "mt7986.dtsi"
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/linux-event-codes.h>
++
++/ {
++	#address-cells = <1>;
++	#size-cells = <1>;
++	model = "Netcore N60";
++	compatible = "mediatek,mt7986", "mediatek,mt7986-rfb";
++
++	chosen {
++		stdout-path = &uart0;
++		tick-timer = &timer0;
++	};
++
++	memory at 40000000 {
++		device_type = "memory";
++		reg = <0x40000000 0x20000000>;
++	};
++
++	keys {
++		compatible = "gpio-keys";
++
++		factory {
++			label = "reset";
++			linux,code = <KEY_RESTART>;
++			gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
++		};
++
++		wps {
++			label = "wps";
++			linux,code = <KEY_WPS_BUTTON>;
++			gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
++		};
++	};
++
++	leds {
++		compatible = "gpio-leds";
++
++		status_red {
++			label = "red:status";
++			gpios = <&gpio 29 GPIO_ACTIVE_LOW>;
++		};
++
++		status_green {
++			label = "green:status";
++			gpios = <&gpio 32 GPIO_ACTIVE_LOW>;
++		};
++	};
++};
++
++&uart0 {
++	mediatek,force-highspeed;
++	status = "okay";
++};
++
++&uart1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&uart1_pins>;
++	status = "disabled";
++};
++
++&eth {
++	status = "okay";
++	mediatek,gmac-id = <0>;
++	phy-mode = "2500base-x";
++	mediatek,switch = "mt7531";
++	reset-gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
++
++	fixed-link {
++		speed = <2500>;
++		full-duplex;
++	};
++};
++
++&pinctrl {
++	spi_flash_pins: spi0-pins-func-1 {
++		mux {
++			function = "flash";
++			groups = "spi0", "spi0_wp_hold";
++		};
++
++		conf-pu {
++			pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
++			drive-strength = <MTK_DRIVE_8mA>;
++			bias-pull-up = <MTK_PUPD_SET_R1R0_00>;
++		};
++
++		conf-pd {
++			pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
++			drive-strength = <MTK_DRIVE_8mA>;
++			bias-pull-down = <MTK_PUPD_SET_R1R0_00>;
++		};
++	};
++
++	spic_pins: spi1-pins-func-1 {
++		mux {
++			function = "spi";
++			groups = "spi1_2";
++		};
++	};
++
++	uart1_pins: spi1-pins-func-3 {
++		mux {
++			function = "uart";
++			groups = "uart1_2";
++		};
++	};
++
++	pwm_pins: pwm0-pins-func-1 {
++		mux {
++			function = "pwm";
++			groups = "pwm0";
++		};
++	};
++};
++
++&pwm {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pwm_pins>;
++	status = "okay";
++};
++
++&spi0 {
++	#address-cells = <1>;
++	#size-cells = <0>;
++	pinctrl-names = "default";
++	pinctrl-0 = <&spi_flash_pins>;
++	status = "okay";
++	must_tx;
++	enhance_timing;
++	dma_ext;
++	ipm_design;
++	support_quad;
++	tick_dly = <1>;
++	sample_sel = <0>;
++
++	spi_nand at 1 {
++		compatible = "spi-nand";
++		reg = <1>;
++		spi-max-frequency = <52000000>;
++
++		partitions {
++			compatible = "fixed-partitions";
++			#address-cells = <1>;
++			#size-cells = <1>;
++
++			partition at 0 {
++				label = "bl2";
++				reg = <0x0 0x100000>;
++			};
++
++			partition at 100000 {
++				label = "orig-env";
++				reg = <0x100000 0x80000>;
++			};
++
++			partition at 160000 {
++				label = "factory";
++				reg = <0x180000 0x200000>;
++			};
++
++			partition at 380000 {
++				label = "fip";
++				reg = <0x380000 0x200000>;
++			};
++
++			partition at 580000 {
++				label = "ubi";
++				reg = <0x580000 0x7280000>;
++			};
++		};
++	};
++};
++
++&watchdog {
++	status = "disabled";
++};
+--- /dev/null
++++ b/netcore_n60_env
+@@ -0,0 +1,57 @@
++ipaddr=192.168.1.1
++serverip=192.168.1.254
++loadaddr=0x46000000
++console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
++bootcmd=if pstore check ; then run boot_recovery ; else run boot_ubi ; fi
++bootconf=config-1
++bootdelay=0
++bootfile=openwrt-mediatek-filogic-netcore_n60-initramfs-recovery.itb
++bootfile_bl2=openwrt-mediatek-filogic-netcore_n60-preloader.bin
++bootfile_fip=openwrt-mediatek-filogic-netcore_n60-bl31-uboot.fip
++bootfile_upg=openwrt-mediatek-filogic-netcore_n60-squashfs-sysupgrade.itb
++bootled_pwr=green:status
++bootled_rec=red:status
++bootmenu_confirm_return=askenv - Press ENTER to return to menu ; bootmenu 60
++bootmenu_default=0
++bootmenu_delay=0
++bootmenu_title=      [0;34m( ( ( [1;39mOpenWrt[0;34m ) ) )
++bootmenu_0=Initialize environment.=run _firstboot
++bootmenu_0d=Run default boot command.=run boot_default
++bootmenu_1=Boot system via TFTP.=run boot_tftp ; run bootmenu_confirm_return
++bootmenu_2=Boot production system from NAND.=run boot_production ; run bootmenu_confirm_return
++bootmenu_3=Boot recovery system from NAND.=run boot_recovery ; run bootmenu_confirm_return
++bootmenu_4=Load production system via TFTP then write to NAND.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_production ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
++bootmenu_5=Load recovery system via TFTP then write to NAND.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_recovery ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
++bootmenu_6=[31mLoad BL31+U-Boot FIP via TFTP then write to NAND.[0m=run boot_tftp_write_fip ; run bootmenu_confirm_return
++bootmenu_7=[31mLoad BL2 preloader via TFTP then write to NAND.[0m=run boot_tftp_write_bl2 ; run bootmenu_confirm_return
++bootmenu_8=Reboot.=reset
++bootmenu_9=Reset all settings to factory defaults.=run reset_factory ; reset
++boot_first=if button reset ; then led $bootled_rec on ; run boot_tftp_recovery ; setenv flag_recover 1 ; run boot_default ; fi ; bootmenu
++boot_default=if env exists flag_recover ; then else run bootcmd ; fi ; run boot_recovery ; setenv replacevol 1 ; run boot_tftp_forever
++boot_production=led $bootled_pwr on ; run ubi_read_production && bootm $loadaddr#$bootconf ; led $bootled_pwr off
++boot_recovery=led $bootled_rec on ; run ubi_read_recovery && bootm $loadaddr#$bootconf ; led $bootled_rec off
++boot_ubi=run boot_production ; run boot_recovery ; run boot_tftp_forever
++boot_tftp_forever=led $bootled_rec on ; while true ; do run boot_tftp_recovery ; sleep 1 ; done
++boot_tftp_production=tftpboot $loadaddr $bootfile_upg && env exists replacevol && iminfo $loadaddr && run ubi_write_production ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
++boot_tftp_recovery=tftpboot $loadaddr $bootfile && env exists replacevol && iminfo $loadaddr && run ubi_write_recovery ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
++boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr#$bootconf
++boot_tftp_write_fip=tftpboot $loadaddr $bootfile_fip && run mtd_write_fip && run reset_factory
++boot_tftp_write_bl2=tftpboot $loadaddr $bootfile_bl2 && run mtd_write_bl2
++part_default=production
++part_recovery=recovery
++reset_factory=ubi part ubi ; mw $loadaddr 0x0 0x800 ; ubi write $loadaddr ubootenv 0x800 ; ubi write $loadaddr ubootenv2 0x800
++mtd_write_fip=mtd erase fip && mtd write fip $loadaddr
++mtd_write_bl2=mtd erase bl2 && mtd write bl2 $loadaddr
++ubi_create_env=ubi check ubootenv || ubi create ubootenv 0x100000 dynamic 0 || run ubi_format ; ubi check ubootenv2 || ubi create ubootenv2 0x100000 dynamic 1 || run ubi_format
++ubi_format=ubi detach ; mtd erase ubi && ubi part ubi ; reset
++ubi_prepare_rootfs=if ubi check rootfs_data ; then else if env exists rootfs_data_max ; then ubi create rootfs_data $rootfs_data_max dynamic || ubi create rootfs_data - dynamic ; else ubi create rootfs_data - dynamic ; fi ; fi
++ubi_read_production=ubi read $loadaddr fit && iminfo $loadaddr && run ubi_prepare_rootfs
++ubi_read_recovery=ubi check recovery && ubi read $loadaddr recovery
++ubi_remove_rootfs=ubi check rootfs_data && ubi remove rootfs_data
++ubi_write_production=ubi check fit && ubi remove fit ; run ubi_remove_rootfs ; ubi create fit $filesize dynamic 2 && ubi write $loadaddr fit $filesize
++ubi_write_recovery=ubi check recovery && ubi remove recovery ; run ubi_remove_rootfs ; ubi create recovery $filesize dynamic 3 && ubi write $loadaddr recovery $filesize
++ethaddr_factory=mtd read factory 0x40080000 0x1fe000 0x1000 && env readmem -b ethaddr 0x40080f20 0x6 ; setenv ethaddr_factory
++_init_env=setenv _init_env ; run ubi_create_env ; saveenv ; saveenv
++_firstboot=setenv _firstboot ; run ethaddr_factory ; run _switch_to_menu ; run _init_env ; run boot_first
++_switch_to_menu=setenv _switch_to_menu ; setenv bootdelay 3 ; setenv bootmenu_delay 3 ; setenv bootmenu_0 $bootmenu_0d ; setenv bootmenu_0d ; run _bootmenu_update_title
++_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title       [33m$ver[0m"



From lede-commits at lists.infradead.org  Fri Mar 29 15:43:16 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 18:43:16 -0400
Subject: [openwrt/openwrt]  tools/meson: update to 1.3.2
In-Reply-To: <171175219606.2607202.14121695213115851841@git-01.infra.openwrt.org>
References: <171175219606.2607202.14121695213115851841@git-01.infra.openwrt.org>
Message-ID: <mailman.21777.1711752201.1280.lede-commits@lists.infradead.org>

aparcar pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/fcdc629144983cf5e3f5509e35149096aa2701b3

commit fcdc629144983cf5e3f5509e35149096aa2701b3
Author: Rosen Penev <rosenp at gmail.com>
AuthorDate: Wed Feb 21 13:13:34 2024 -0800

    tools/meson: update to 1.3.2
    
    Add explicit setup as implicit is deprecated.
    
    Rename pkgconfig as no hyphen is deprecated.
    
    Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 include/meson.mk                        | 2 ++
 tools/meson/Makefile                    | 4 ++--
 tools/meson/files/openwrt-cross.txt.in  | 2 +-
 tools/meson/files/openwrt-native.txt.in | 2 +-
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/include/meson.mk b/include/meson.mk
index 74c9d3dd7f..65716746fe 100644
--- a/include/meson.mk
+++ b/include/meson.mk
@@ -98,6 +98,7 @@ endef
 define Host/Configure/Meson
 	$(call Meson/CreateNativeFile,$(HOST_BUILD_DIR)/openwrt-native.txt)
 	$(call Meson, \
+		setup \
 		--native-file $(HOST_BUILD_DIR)/openwrt-native.txt \
 		$(MESON_HOST_ARGS) \
 		$(MESON_HOST_BUILD_DIR) \
@@ -121,6 +122,7 @@ define Build/Configure/Meson
 	$(call Meson/CreateNativeFile,$(PKG_BUILD_DIR)/openwrt-native.txt)
 	$(call Meson/CreateCrossFile,$(PKG_BUILD_DIR)/openwrt-cross.txt)
 	$(call Meson, \
+		setup \
 		--buildtype plain \
 		--native-file $(PKG_BUILD_DIR)/openwrt-native.txt \
 		--cross-file $(PKG_BUILD_DIR)/openwrt-cross.txt \
diff --git a/tools/meson/Makefile b/tools/meson/Makefile
index 23bb393a59..96974faafe 100644
--- a/tools/meson/Makefile
+++ b/tools/meson/Makefile
@@ -1,11 +1,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=meson
-PKG_VERSION:=1.2.1
+PKG_VERSION:=1.3.2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/mesonbuild/meson/releases/download/$(PKG_VERSION)
-PKG_HASH:=b1db3a153087549497ee52b1c938d2134e0338214fe14f7efd16fecd57b639f5
+PKG_HASH:=492eb450c8b073024276f916f5adbb3c4bb7e90e9e6ec124efda064f3d9b5baa
 
 PKG_MAINTAINER:=Andre Heider <a.heider at gmail.com>
 PKG_LICENSE:=Apache-2.0
diff --git a/tools/meson/files/openwrt-cross.txt.in b/tools/meson/files/openwrt-cross.txt.in
index ba11915069..836a0e51e4 100644
--- a/tools/meson/files/openwrt-cross.txt.in
+++ b/tools/meson/files/openwrt-cross.txt.in
@@ -6,7 +6,7 @@ cpp_ld = [@LD@]
 ar = '@AR@'
 strip = '@STRIP@'
 nm = '@NM@'
-pkgconfig = '@PKGCONFIG@'
+pkg-config = '@PKGCONFIG@'
 cmake = '@CMAKE@'
 python = '@PYTHON@'
 
diff --git a/tools/meson/files/openwrt-native.txt.in b/tools/meson/files/openwrt-native.txt.in
index 48e09ece2c..179e00b43e 100644
--- a/tools/meson/files/openwrt-native.txt.in
+++ b/tools/meson/files/openwrt-native.txt.in
@@ -1,7 +1,7 @@
 [binaries]
 c = [@CC@]
 cpp = [@CXX@]
-pkgconfig = '@PKGCONFIG@'
+pkg-config = '@PKGCONFIG@'
 cmake = '@CMAKE@'
 python = '@PYTHON@'
 



From lede-commits at lists.infradead.org  Fri Mar 29 15:43:17 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 18:43:17 -0400
Subject: [openwrt/openwrt]  tools/meson: static host and both libraries
In-Reply-To: <171175219606.2607202.14121695213115851841@git-01.infra.openwrt.org>
References: <171175219606.2607202.14121695213115851841@git-01.infra.openwrt.org>
Message-ID: <mailman.21778.1711752201.1280.lede-commits@lists.infradead.org>

aparcar pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d08ff66fcd786848dcb911a7cb529066a9130343

commit d08ff66fcd786848dcb911a7cb529066a9130343
Author: Rosen Penev <rosenp at gmail.com>
AuthorDate: Wed Feb 21 13:16:35 2024 -0800

    tools/meson: static host and both libraries
    
    Host packages typically are statically linked to avoid rpath issues and
    to avoid libraries not being found as a result. With target packages,
    both libraries make the most sense as InstallDev typically installs
    both, giving packages flexibility. Default this behavior.
    
    Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 include/meson.mk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/meson.mk b/include/meson.mk
index 65716746fe..2a20c2bd6b 100644
--- a/include/meson.mk
+++ b/include/meson.mk
@@ -100,6 +100,7 @@ define Host/Configure/Meson
 	$(call Meson, \
 		setup \
 		--native-file $(HOST_BUILD_DIR)/openwrt-native.txt \
+		-Ddefault_library=static \
 		$(MESON_HOST_ARGS) \
 		$(MESON_HOST_BUILD_DIR) \
 		$(MESON_HOST_BUILD_DIR)/.., \
@@ -126,6 +127,7 @@ define Build/Configure/Meson
 		--buildtype plain \
 		--native-file $(PKG_BUILD_DIR)/openwrt-native.txt \
 		--cross-file $(PKG_BUILD_DIR)/openwrt-cross.txt \
+		-Ddefault_library=both \
 		$(MESON_ARGS) \
 		$(MESON_BUILD_DIR) \
 		$(MESON_BUILD_DIR)/.., \



From lede-commits at lists.infradead.org  Fri Mar 29 15:43:18 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 18:43:18 -0400
Subject: [openwrt/openwrt]  dtc: fix compilation with both libraries
In-Reply-To: <171175219606.2607202.14121695213115851841@git-01.infra.openwrt.org>
References: <171175219606.2607202.14121695213115851841@git-01.infra.openwrt.org>
Message-ID: <mailman.21779.1711752205.1280.lede-commits@lists.infradead.org>

aparcar pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cd5c0054bdd4fae6b6d56fd1c3eee0dce734396e

commit cd5c0054bdd4fae6b6d56fd1c3eee0dce734396e
Author: Rosen Penev <rosenp at gmail.com>
AuthorDate: Wed Feb 21 22:22:02 2024 -0800

    dtc: fix compilation with both libraries
    
    Upstream backports.
    
    Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 package/utils/dtc/Makefile                         |  2 +-
 package/utils/dtc/patches/010-both-libraries.patch | 48 ++++++++++++++++++++++
 2 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/package/utils/dtc/Makefile b/package/utils/dtc/Makefile
index afec6fbae5..ea970e200a 100644
--- a/package/utils/dtc/Makefile
+++ b/package/utils/dtc/Makefile
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dtc
 PKG_VERSION:=1.7.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_HASH:=29edce3d302a15563d8663198bbc398c5a0554765c83830d0d4c0409d21a16c4
diff --git a/package/utils/dtc/patches/010-both-libraries.patch b/package/utils/dtc/patches/010-both-libraries.patch
new file mode 100644
index 0000000000..ccc547b349
--- /dev/null
+++ b/package/utils/dtc/patches/010-both-libraries.patch
@@ -0,0 +1,48 @@
+From da39ee0e68b6d9293133a7c41c6cf73354dce337 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp at gmail.com>
+Date: Wed, 21 Feb 2024 13:57:56 -0800
+Subject: [PATCH] libfdt: rework shared/static libraries
+
+Instead of creating 2 libraries manualy, just call both_libraries and
+link to the appropriate one as requested.
+
+Fixes compilation when passing -Ddefault_libraries=both as the
+static_library name is duplicated.
+
+Signed-off-by: Rosen Penev <rosenp at gmail.com>
+Signed-off-by: David Gibson <david at gibson.dropbear.id.au>
+---
+ libfdt/meson.build | 17 +++++------------
+ 1 file changed, 5 insertions(+), 12 deletions(-)
+
+--- a/libfdt/meson.build
++++ b/libfdt/meson.build
+@@ -16,7 +16,7 @@ sources = files(
+   'fdt_wip.c',
+ )
+ 
+-libfdt = library(
++libfdt = both_libraries(
+   'fdt', sources,
+   version: '1.6.0',
+   link_args: ['-Wl,--no-undefined', version_script],
+@@ -24,17 +24,12 @@ libfdt = library(
+   install: true,
+ )
+ 
+-libfdt_a = static_library(
+-  'fdt', sources,
+-  install: true,
+-)
+-
+ libfdt_inc = include_directories('.')
+ 
+ if static_build
+-  link_with = libfdt_a
++  link_with = libfdt.get_static_lib()
+ else
+-  link_with = libfdt
++  link_with = libfdt.get_shared_lib()
+ endif
+ 
+ libfdt_dep = declare_dependency(



From lede-commits at lists.infradead.org  Fri Mar 29 17:05:27 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 20:05:27 -0400
Subject: [openwrt/openwrt]  ath79: disable building small Flash EnGenius
 devices
In-Reply-To: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
References: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
Message-ID: <mailman.21784.1711757134.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/60061b5c26b65004377a886f917bcd3005e97dad

commit 60061b5c26b65004377a886f917bcd3005e97dad
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Tue Mar 19 21:25:52 2024 +0800

    ath79: disable building small Flash EnGenius devices
    
    The buildbot has not successfully built them for a long time due
    to small Flash size.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 target/linux/ath79/image/tiny.mk | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/target/linux/ath79/image/tiny.mk b/target/linux/ath79/image/tiny.mk
index 6baa3afff7..25ec95b574 100644
--- a/target/linux/ath79/image/tiny.mk
+++ b/target/linux/ath79/image/tiny.mk
@@ -40,6 +40,7 @@ define Device/engenius_eap350-v1
   IMAGE_SIZE := 4928k
   LOADER_FLASH_OFFS := 0x1a0000
   SENAO_IMGNAME := senao-eap350
+  DEFAULT := n
 endef
 TARGET_DEVICES += engenius_eap350-v1
 
@@ -53,6 +54,7 @@ define Device/engenius_ecb350-v1
   IMAGE_SIZE := 4928k
   LOADER_FLASH_OFFS := 0x1a0000
   SENAO_IMGNAME := senao-ecb350
+  DEFAULT := n
 endef
 TARGET_DEVICES += engenius_ecb350-v1
 
@@ -66,6 +68,7 @@ define Device/engenius_enh202-v1
   IMAGE_SIZE := 4928k
   LOADER_FLASH_OFFS := 0x1a0000
   SENAO_IMGNAME := senao-enh202
+  DEFAULT := n
 endef
 TARGET_DEVICES += engenius_enh202-v1
 



From lede-commits at lists.infradead.org  Fri Mar 29 17:05:32 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 20:05:32 -0400
Subject: [openwrt/openwrt]  uboot-envtools: ath79: remove D-Link DIR-8x9 and
 DAP-1720 env config
In-Reply-To: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
References: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
Message-ID: <mailman.21785.1711757134.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d7d94a8d91bc1dc9dcedbe004021509871acac24

commit d7d94a8d91bc1dc9dcedbe004021509871acac24
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Tue Mar 19 21:25:52 2024 +0800

    uboot-envtools: ath79: remove D-Link DIR-8x9 and DAP-1720 env config
    
    The uboot-envtools can automatically parse the dts 'u-boot,env'
    compatible string. So the env config file is now useless.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 package/boot/uboot-envtools/files/ath79 | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/package/boot/uboot-envtools/files/ath79 b/package/boot/uboot-envtools/files/ath79
index 7c0cdf9013..a3bb2c1b58 100644
--- a/package/boot/uboot-envtools/files/ath79
+++ b/package/boot/uboot-envtools/files/ath79
@@ -31,10 +31,6 @@ asus,zenwifi-cd6n|\
 asus,zenwifi-cd6r|\
 buffalo,bhr-4grv2|\
 devolo,magic-2-wifi|\
-dlink,dap-1720-a1|\
-dlink,dir-859-a1|\
-dlink,dir-859-a3|\
-dlink,dir-869-a1|\
 engenius,eap1200h|\
 engenius,eap1750h|\
 engenius,eap300-v2|\



From lede-commits at lists.infradead.org  Fri Mar 29 17:05:31 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 20:05:31 -0400
Subject: [openwrt/openwrt]  ath79: move D-Link DAP-1720 A1 to tiny sub-target
In-Reply-To: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
References: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
Message-ID: <mailman.21786.1711757137.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/085feb60adf621d6cae8fd6cc7d6a2d84eb3314a

commit 085feb60adf621d6cae8fd6cc7d6a2d84eb3314a
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Tue Mar 19 21:25:52 2024 +0800

    ath79: move D-Link DAP-1720 A1 to tiny sub-target
    
    This device only has 64 MiB RAM and ath10k wireless driver will
    consume a lot of memory. Let's move it to the tiny sub-target to
    get extra 7 MiB of free space. In this way, we can extend their
    lifetime to receive support for the next OpenWrt LTS version. This
    patch also trims the duplicate "recovery.bin" image as it's the
    same as the "factory.bin".
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 .../ath79/generic/base-files/etc/board.d/01_leds   |  7 ----
 .../generic/base-files/etc/board.d/02_network      |  1 -
 .../base-files/etc/uci-defaults/09_fix-checksum    |  1 -
 target/linux/ath79/image/generic.mk                | 16 --------
 target/linux/ath79/image/tiny.mk                   | 13 +++++++
 .../ath79/tiny/base-files/etc/board.d/01_leds      |  7 ++++
 .../ath79/tiny/base-files/etc/board.d/02_network   | 43 +++++++++++-----------
 .../base-files/etc/uci-defaults/09_fix-checksum    |  1 +
 8 files changed, 43 insertions(+), 46 deletions(-)

diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
index bfc383c0e5..2974855870 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
@@ -242,13 +242,6 @@ dlink,dap-1365-a1)
 	ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "green:rssimediumhigh" "wlan0" "51" "100"
 	ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "green:rssihigh" "wlan0" "76" "100"
 	;;
-dlink,dap-1720-a1)
-	ucidef_set_rssimon "wlan0" "200000" "1"
-	ucidef_set_led_rssi "rssilow" "RSSI LOW" "red:signal-1" "wlan0" "1" "40"
-	ucidef_set_led_rssi "rssimediumlow" "RSSI MEDIUM-LOW" "green:signal-1" "wlan0" "21" "100"
-	ucidef_set_led_rssi "rssimediumhigh" "RSSI MEDIUM-HIGH" "green:signal-2" "wlan0" "61" "100"
-	ucidef_set_led_rssi "rssihigh" "RSSI HIGH" "green:signal-3" "wlan0" "81" "100"
-	;;
 engenius,ens202ext-v1|\
 engenius,enstationac-v1)
 	ucidef_set_rssimon "wlan0" "200000" "1"
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index de9bd6a300..4c13478386 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -34,7 +34,6 @@ ath79_setup_interfaces()
 	devolo,dvl1750x|\
 	dlink,dap-1330-a1|\
 	dlink,dap-1365-a1|\
-	dlink,dap-1720-a1|\
 	dlink,dap-2230-a1|\
 	dlink,dap-2660-a1|\
 	dlink,dap-2680-a1|\
diff --git a/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum b/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
index 3f85fc12a0..4d961f26d2 100644
--- a/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
+++ b/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
@@ -21,7 +21,6 @@ dlink,dap-3320-a1|\
 dlink,dap-3662-a1)
 	fixwrgg
 	;;
-dlink,dap-1720-a1|\
 dlink,dir-629-a1|\
 qihoo,c301)
 	fix_seama_header
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 03a0472c12..d19425a664 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1050,22 +1050,6 @@ define Device/dlink_dap-1365-a1
 endef
 TARGET_DEVICES += dlink_dap-1365-a1
 
-define Device/dlink_dap-1720-a1
-  $(Device/seama)
-  SOC := qca9563
-  DEVICE_VENDOR := D-Link
-  DEVICE_MODEL := DAP-1720
-  DEVICE_VARIANT := A1
-  DEVICE_PACKAGES := rssileds -swconfig \
-	kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct
-  SEAMA_SIGNATURE := wapac28_dlink.2015_dap1720
-  IMAGE_SIZE := 15872k
-  IMAGES += recovery.bin
-  IMAGE/recovery.bin := $$(IMAGE/default) | pad-rootfs -x 64 | seama | \
-	seama-seal | check-size
-endef
-TARGET_DEVICES += dlink_dap-1720-a1
-
 define Device/dlink_dap-2xxx
   IMAGES += factory.img
   IMAGE/factory.img := append-kernel | pad-offset 6144k 160 | \
diff --git a/target/linux/ath79/image/tiny.mk b/target/linux/ath79/image/tiny.mk
index 13f105d202..955d0fbff2 100644
--- a/target/linux/ath79/image/tiny.mk
+++ b/target/linux/ath79/image/tiny.mk
@@ -12,6 +12,19 @@ define Device/buffalo_whr-g301n
 endef
 TARGET_DEVICES += buffalo_whr-g301n
 
+define Device/dlink_dap-1720-a1
+  $(Device/seama)
+  SOC := qca9563
+  DEVICE_VENDOR := D-Link
+  DEVICE_MODEL := DAP-1720
+  DEVICE_VARIANT := A1
+  IMAGE_SIZE := 15872k
+  SEAMA_SIGNATURE := wapac28_dlink.2015_dap1720
+  DEVICE_PACKAGES := -swconfig ath10k-firmware-qca988x-ct \
+	kmod-ath10k-ct-smallbuffers rssileds
+endef
+TARGET_DEVICES += dlink_dap-1720-a1
+
 define Device/dlink_dir-615-e4
   SOC := ar7240
   DEVICE_VENDOR := D-Link
diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
index 427eac8a06..76d14ebb71 100644
--- a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
@@ -20,6 +20,13 @@ tplink,tl-wr941-v4)
 	ucidef_set_led_switch "lan3" "LAN3" "green:lan3" "switch0" "0x08"
 	ucidef_set_led_switch "lan4" "LAN4" "green:lan4" "switch0" "0x10"
 	;;
+dlink,dap-1720-a1)
+	ucidef_set_rssimon "wlan0" "200000" "1"
+	ucidef_set_led_rssi "rssilow" "RSSI LOW" "red:signal-1" "wlan0" "1" "40"
+	ucidef_set_led_rssi "rssimediumlow" "RSSI MEDIUM-LOW" "green:signal-1" "wlan0" "21" "100"
+	ucidef_set_led_rssi "rssimediumhigh" "RSSI MEDIUM-HIGH" "green:signal-2" "wlan0" "61" "100"
+	ucidef_set_led_rssi "rssihigh" "RSSI HIGH" "green:signal-3" "wlan0" "81" "100"
+	;;
 dlink,dir-859-a1)
 	ucidef_set_led_switch "internet" "INTERNET" "green:internet" "switch0" "0x20"
 	;;
diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/02_network b/target/linux/ath79/tiny/base-files/etc/board.d/02_network
index 60e640e0fb..fa2ea3aa6f 100644
--- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network
@@ -12,27 +12,7 @@ ath79_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0 at eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
 		;;
-	dlink,dir-615-e4|\
-	netgear,wnr1000-v2|\
-	netgear,wnr2000-v3|\
-	netgear,wnr612-v2|\
-	on,n150r|\
-	tplink,tl-wr740n-v1|\
-	tplink,tl-wr740n-v3|\
-	tplink,tl-wr741-v1|\
-	tplink,tl-wr743nd-v1|\
-	tplink,tl-wr841-v5|\
-	tplink,tl-wr941-v4)
-		ucidef_set_interface_wan "eth0"
-		ucidef_add_switch "switch0" \
-			"0 at eth1" "1:lan" "2:lan" "3:lan" "4:lan"
-		;;
-	dlink,dir-859-a1|\
-	dlink,dir-859-a3|\
-	dlink,dir-869-a1)
-		ucidef_add_switch "switch0" \
-			"0 at eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan"
-		;;
+	dlink,dap-1720-a1|\
 	engenius,eap350-v1|\
 	engenius,ecb350-v1|\
 	pqi,air-pen|\
@@ -63,6 +43,27 @@ ath79_setup_interfaces()
 	ubnt,nanostation-loco-m)
 		ucidef_set_interface_lan "eth0"
 		;;
+	dlink,dir-615-e4|\
+	netgear,wnr1000-v2|\
+	netgear,wnr2000-v3|\
+	netgear,wnr612-v2|\
+	on,n150r|\
+	tplink,tl-wr740n-v1|\
+	tplink,tl-wr740n-v3|\
+	tplink,tl-wr741-v1|\
+	tplink,tl-wr743nd-v1|\
+	tplink,tl-wr841-v5|\
+	tplink,tl-wr941-v4)
+		ucidef_set_interface_wan "eth0"
+		ucidef_add_switch "switch0" \
+			"0 at eth1" "1:lan" "2:lan" "3:lan" "4:lan"
+		;;
+	dlink,dir-859-a1|\
+	dlink,dir-859-a3|\
+	dlink,dir-869-a1)
+		ucidef_add_switch "switch0" \
+			"0 at eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan"
+		;;
 	engenius,enh202-v1)
 		ucidef_set_interface_lan "eth0"
 		ucidef_add_switch "switch0" \
diff --git a/target/linux/ath79/tiny/base-files/etc/uci-defaults/09_fix-checksum b/target/linux/ath79/tiny/base-files/etc/uci-defaults/09_fix-checksum
index 4febde5335..58e846f73f 100644
--- a/target/linux/ath79/tiny/base-files/etc/uci-defaults/09_fix-checksum
+++ b/target/linux/ath79/tiny/base-files/etc/uci-defaults/09_fix-checksum
@@ -8,6 +8,7 @@ fix_seama_header() {
 board=$(board_name)
 
 case "$board" in
+dlink,dap-1720-a1|\
 dlink,dir-859-a1|\
 dlink,dir-859-a3|\
 dlink,dir-869-a1)



From lede-commits at lists.infradead.org  Fri Mar 29 17:05:29 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 20:05:29 -0400
Subject: [openwrt/openwrt]  ath79: tiny: enable NVMEM u-boot-env driver
In-Reply-To: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
References: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
Message-ID: <mailman.21789.1711757137.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9a6c1846bb40879fccf42070ec3bf4daa9732e93

commit 9a6c1846bb40879fccf42070ec3bf4daa9732e93
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Tue Mar 19 21:25:52 2024 +0800

    ath79: tiny: enable NVMEM u-boot-env driver
    
    The upcoming D-Link devices to the tiny sub-target require it to
    parse the u-env MAC address. The kernel size will increase by
    about 1 KiB.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 target/linux/ath79/tiny/config-default | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/target/linux/ath79/tiny/config-default b/target/linux/ath79/tiny/config-default
index df7e662827..3fb83dd8e1 100644
--- a/target/linux/ath79/tiny/config-default
+++ b/target/linux/ath79/tiny/config-default
@@ -6,6 +6,8 @@ CONFIG_NET_DSA=y
 CONFIG_NET_DSA_MV88E6060=y
 CONFIG_NET_DSA_TAG_TRAILER=y
 CONFIG_NET_SWITCHDEV=y
+CONFIG_NVMEM_SYSFS=y
+CONFIG_NVMEM_U_BOOT_ENV=y
 CONFIG_PHYLINK=y
 CONFIG_PHY_AR7100_USB=y
 CONFIG_PHY_AR7200_USB=y



From lede-commits at lists.infradead.org  Fri Mar 29 17:05:28 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 20:05:28 -0400
Subject: [openwrt/openwrt]  ath79: move seama image recipe to the common
 Makefile
In-Reply-To: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
References: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
Message-ID: <mailman.21790.1711757137.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/82208eb52785da3cce48cfa47849436aa77e985c

commit 82208eb52785da3cce48cfa47849436aa77e985c
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Tue Mar 19 21:25:52 2024 +0800

    ath79: move seama image recipe to the common Makefile
    
    Move seama image recipe to the common Makefile in order for some
    tiny sub-target D-Link devices can share it.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 target/linux/ath79/image/Makefile   | 18 ++++++++++++++++++
 target/linux/ath79/image/generic.mk | 18 ------------------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/target/linux/ath79/image/Makefile b/target/linux/ath79/image/Makefile
index 8328be7667..5647200b4b 100644
--- a/target/linux/ath79/image/Makefile
+++ b/target/linux/ath79/image/Makefile
@@ -7,6 +7,7 @@ DEVICE_VARS += LOADER_FLASH_OFFS LOADER_TYPE
 DEVICE_VARS += LOADER_FLASH_MAX LOADER_KERNEL_MAGIC
 DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID
 DEVICE_VARS += RAS_BOARD RAS_ROOTFS_SIZE RAS_VERSION
+DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
 
 define Build/loader-common
 	rm -rf $@.src
@@ -87,6 +88,23 @@ define Device/loader-okli-uimage
 	lzma | uImage lzma
 endef
 
+define Device/seama
+  KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma
+  KERNEL_INITRAMFS := $$(KERNEL) | seama
+  IMAGES += factory.bin
+  SEAMA_MTDBLOCK := 1
+
+  # 64 bytes offset:
+  # - 28 bytes seama_header
+  # - 36 bytes of META data (4-bytes aligned)
+  IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
+  IMAGE/sysupgrade.bin := $$(IMAGE/default) | seama | pad-rootfs | \
+	check-size | append-metadata
+  IMAGE/factory.bin := $$(IMAGE/default) | pad-rootfs -x 64 | seama | \
+	seama-seal | check-size
+  SEAMA_SIGNATURE :=
+endef
+
 include $(SUBTARGET).mk
 
 ifeq ($(SUBTARGET),generic)
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index e7960efbaa..d56afcaac8 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -6,7 +6,6 @@ include ./common-yuncore.mk
 include ./common-ubnt.mk
 
 DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION
-DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
 DEVICE_VARS += KERNEL_INITRAMFS_PREFIX DAP_SIGNATURE
 DEVICE_VARS += EDIMAX_HEADER_MAGIC EDIMAX_HEADER_MODEL
 DEVICE_VARS += ELECOM_HWID
@@ -194,23 +193,6 @@ define Build/zyxel-tar-bz2
 	rm -rf $@.tmp
 endef
 
-define Device/seama
-  KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma
-  KERNEL_INITRAMFS := $$(KERNEL) | seama
-  IMAGES += factory.bin
-  SEAMA_MTDBLOCK := 1
-
-  # 64 bytes offset:
-  # - 28 bytes seama_header
-  # - 36 bytes of META data (4-bytes aligned)
-  IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
-  IMAGE/sysupgrade.bin := $$(IMAGE/default) | seama | pad-rootfs | \
-	check-size | append-metadata
-  IMAGE/factory.bin := $$(IMAGE/default) | pad-rootfs -x 64 | seama | \
-	seama-seal | check-size
-  SEAMA_SIGNATURE :=
-endef
-
 
 define Device/8dev_carambola2
   SOC := ar9331



From lede-commits at lists.infradead.org  Fri Mar 29 17:05:30 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Fri, 29 Mar 2024 20:05:30 -0400
Subject: [openwrt/openwrt]  ath79: move D-Link DIR-859 and DIR-869 series to
 tiny sub-target
In-Reply-To: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
References: <171175712708.2686351.12579550420135180037@git-01.infra.openwrt.org>
Message-ID: <mailman.21791.1711757137.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/8201e402c5485817eaf8838347b35e48f7086739

commit 8201e402c5485817eaf8838347b35e48f7086739
Author: Shiji Yang <yangshiji66 at qq.com>
AuthorDate: Tue Mar 19 21:25:52 2024 +0800

    ath79: move D-Link DIR-859 and DIR-869 series to tiny sub-target
    
    These devices only have 64 MiB RAM and ath10k wireless driver will
    consume a lot of memory. Let's move them to the tiny sub-target to
    get extra 7 MiB of free space. In this way, we can extend their
    lifetime to receive support for the next OpenWrt LTS version. This
    patch also trims the USB package for the non-existent USB port.
    
    Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
 .../ath79/generic/base-files/etc/board.d/01_leds   |  6 ----
 .../generic/base-files/etc/board.d/02_network      | 12 --------
 .../base-files/etc/uci-defaults/09_fix-checksum    |  3 --
 target/linux/ath79/image/generic.mk                | 35 ----------------------
 target/linux/ath79/image/tiny.mk                   | 35 ++++++++++++++++++++++
 .../ath79/tiny/base-files/etc/board.d/01_leds      |  6 ++++
 .../ath79/tiny/base-files/etc/board.d/02_network   | 15 ++++++++++
 .../base-files/etc/uci-defaults/09_fix-checksum    | 16 ++++++++++
 8 files changed, 72 insertions(+), 56 deletions(-)

diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
index 525224bec9..bfc383c0e5 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
@@ -249,12 +249,6 @@ dlink,dap-1720-a1)
 	ucidef_set_led_rssi "rssimediumhigh" "RSSI MEDIUM-HIGH" "green:signal-2" "wlan0" "61" "100"
 	ucidef_set_led_rssi "rssihigh" "RSSI HIGH" "green:signal-3" "wlan0" "81" "100"
 	;;
-dlink,dir-859-a1)
-	ucidef_set_led_switch "internet" "WAN" "green:internet" "switch0" "0x20"
-	;;
-dlink,dir-859-a3)
-	ucidef_set_led_switch "wan" "WAN" "green:wan" "switch0" "0x20"
-	;;
 engenius,ens202ext-v1|\
 engenius,enstationac-v1)
 	ucidef_set_rssimon "wlan0" "200000" "1"
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index 6c1cb86235..de9bd6a300 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -318,9 +318,6 @@ ath79_setup_interfaces()
 	dlink,dir-842-c1|\
 	dlink,dir-842-c2|\
 	dlink,dir-842-c3|\
-	dlink,dir-859-a1|\
-	dlink,dir-859-a3|\
-	dlink,dir-869-a1|\
 	engenius,epg5000|\
 	engenius,esr1200|\
 	engenius,esr1750|\
@@ -699,15 +696,6 @@ ath79_setup_macs()
 		wan_mac=$(mtd_get_mac_ascii devdata "wanmac")
 		label_mac=$lan_mac
 		;;
-	dlink,dir-859-a1|\
-	dlink,dir-869-a1)
-		lan_mac=$(mtd_get_mac_text "devdata" 0xc9)
-		wan_mac=$(mtd_get_mac_text "devdata" 0x79)
-		;;
-	dlink,dir-859-a3)
-		lan_mac=$(get_mac_label)
-		wan_mac=$(macaddr_add "$lan_mac" 3)
-		;;
 	qihoo,c301|\
 	wd,mynet-n600|\
 	wd,mynet-n750)
diff --git a/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum b/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
index 4ec8c13eb7..3f85fc12a0 100644
--- a/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
+++ b/target/linux/ath79/generic/base-files/etc/uci-defaults/09_fix-checksum
@@ -23,9 +23,6 @@ dlink,dap-3662-a1)
 	;;
 dlink,dap-1720-a1|\
 dlink,dir-629-a1|\
-dlink,dir-859-a1|\
-dlink,dir-859-a3|\
-dlink,dir-869-a1|\
 qihoo,c301)
 	fix_seama_header
 	;;
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index d56afcaac8..03a0472c12 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1278,41 +1278,6 @@ define Device/dlink_dir-842-c3
 endef
 TARGET_DEVICES += dlink_dir-842-c3
 
-define Device/dlink_dir-859-ax
-  $(Device/seama)
-  SOC := qca9563
-  DEVICE_VENDOR := D-Link
-  DEVICE_MODEL := DIR-859
-  IMAGE_SIZE := 15872k
-  DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct
-  SEAMA_SIGNATURE := wrgac37_dlink.2013gui_dir859
-endef
-
-define Device/dlink_dir-859-a1
-  $(Device/dlink_dir-859-ax)
-  DEVICE_VARIANT := A1
-endef
-TARGET_DEVICES += dlink_dir-859-a1
-
-define Device/dlink_dir-859-a3
-  $(Device/dlink_dir-859-ax)
-  DEVICE_VARIANT := A3
-endef
-TARGET_DEVICES += dlink_dir-859-a3
-
-define Device/dlink_dir-869-a1
-  $(Device/seama)
-  SOC := qca9563
-  DEVICE_VENDOR := D-Link
-  DEVICE_MODEL := DIR-869
-  DEVICE_VARIANT := A1
-  IMAGE_SIZE := 15872k
-  DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct
-  SEAMA_SIGNATURE := wrgac54_dlink.2015_dir869
-  SUPPORTED_DEVICES += dir-869-a1
-endef
-TARGET_DEVICES += dlink_dir-869-a1
-
 define Device/elecom_wab
   DEVICE_VENDOR := ELECOM
   IMAGE_SIZE := 14336k
diff --git a/target/linux/ath79/image/tiny.mk b/target/linux/ath79/image/tiny.mk
index 25ec95b574..13f105d202 100644
--- a/target/linux/ath79/image/tiny.mk
+++ b/target/linux/ath79/image/tiny.mk
@@ -30,6 +30,41 @@ define Device/dlink_dir-615-e4
 endef
 TARGET_DEVICES += dlink_dir-615-e4
 
+define Device/dlink_dir-859-a
+  $(Device/seama)
+  SOC := qca9563
+  DEVICE_VENDOR := D-Link
+  DEVICE_MODEL := DIR-859
+  IMAGE_SIZE := 15872k
+  SEAMA_SIGNATURE := wrgac37_dlink.2013gui_dir859
+  DEVICE_PACKAGES := ath10k-firmware-qca988x-ct kmod-ath10k-ct-smallbuffers
+endef
+
+define Device/dlink_dir-859-a1
+  $(Device/dlink_dir-859-a)
+  DEVICE_VARIANT := A1
+endef
+TARGET_DEVICES += dlink_dir-859-a1
+
+define Device/dlink_dir-859-a3
+  $(Device/dlink_dir-859-a)
+  DEVICE_VARIANT := A3
+endef
+TARGET_DEVICES += dlink_dir-859-a3
+
+define Device/dlink_dir-869-a1
+  $(Device/seama)
+  SOC := qca9563
+  DEVICE_VENDOR := D-Link
+  DEVICE_MODEL := DIR-869
+  DEVICE_VARIANT := A1
+  IMAGE_SIZE := 15872k
+  SEAMA_SIGNATURE := wrgac54_dlink.2015_dir869
+  DEVICE_PACKAGES := ath10k-firmware-qca988x-ct kmod-ath10k-ct-smallbuffers
+  SUPPORTED_DEVICES += dir-869-a1
+endef
+TARGET_DEVICES += dlink_dir-869-a1
+
 define Device/engenius_eap350-v1
   $(Device/senao_loader_okli)
   BLOCKSIZE := 4k
diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
index 07e48ec49f..427eac8a06 100644
--- a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
@@ -20,6 +20,12 @@ tplink,tl-wr941-v4)
 	ucidef_set_led_switch "lan3" "LAN3" "green:lan3" "switch0" "0x08"
 	ucidef_set_led_switch "lan4" "LAN4" "green:lan4" "switch0" "0x10"
 	;;
+dlink,dir-859-a1)
+	ucidef_set_led_switch "internet" "INTERNET" "green:internet" "switch0" "0x20"
+	;;
+dlink,dir-859-a3)
+	ucidef_set_led_switch "wan" "WAN" "green:wan" "switch0" "0x20"
+	;;
 engenius,enh202-v1)
 	ucidef_set_led_switch "lan" "LAN" "amber:lan" "switch0" "0x10"
 	ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0"
diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/02_network b/target/linux/ath79/tiny/base-files/etc/board.d/02_network
index 836d119867..60e640e0fb 100644
--- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network
@@ -27,6 +27,12 @@ ath79_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0 at eth1" "1:lan" "2:lan" "3:lan" "4:lan"
 		;;
+	dlink,dir-859-a1|\
+	dlink,dir-859-a3|\
+	dlink,dir-869-a1)
+		ucidef_add_switch "switch0" \
+			"0 at eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan"
+		;;
 	engenius,eap350-v1|\
 	engenius,ecb350-v1|\
 	pqi,air-pen|\
@@ -126,6 +132,15 @@ ath79_setup_macs()
 		wan_mac=$(mtd_get_mac_ascii "nvram" "wan_mac")
 		label_mac=$wan_mac
 		;;
+	dlink,dir-859-a1|\
+	dlink,dir-869-a1)
+		lan_mac=$(mtd_get_mac_text "devdata" 0xc9)
+		wan_mac=$(mtd_get_mac_text "devdata" 0x79)
+		;;
+	dlink,dir-859-a3)
+		lan_mac=$(get_mac_label)
+		wan_mac=$(macaddr_add "$lan_mac" 3)
+		;;
 	engenius,enh202-v1|\
 	ubnt,airrouter|\
 	ubnt,bullet-m-ar7240|\
diff --git a/target/linux/ath79/tiny/base-files/etc/uci-defaults/09_fix-checksum b/target/linux/ath79/tiny/base-files/etc/uci-defaults/09_fix-checksum
new file mode 100644
index 0000000000..4febde5335
--- /dev/null
+++ b/target/linux/ath79/tiny/base-files/etc/uci-defaults/09_fix-checksum
@@ -0,0 +1,16 @@
+. /lib/functions.sh
+
+fix_seama_header() {
+	local kernel_size=$(sed -n 's/mtd[0-9]*: \([0-9a-f]*\).*"kernel".*/\1/p' /proc/mtd)
+	[ "$kernel_size" ] && mtd -c 0x$kernel_size fixseama firmware
+}
+
+board=$(board_name)
+
+case "$board" in
+dlink,dir-859-a1|\
+dlink,dir-859-a3|\
+dlink,dir-869-a1)
+	fix_seama_header
+	;;
+esac



From lede-commits at lists.infradead.org  Sat Mar 30 02:42:50 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 30 Mar 2024 05:42:50 -0400
Subject: [openwrt/openwrt]  tools: b43-tools: fix compilation with GCC14
In-Reply-To: <171179177065.3319117.9772688447529368759@git-01.infra.openwrt.org>
References: <171179177065.3319117.9772688447529368759@git-01.infra.openwrt.org>
Message-ID: <mailman.21829.1711791777.1280.lede-commits@lists.infradead.org>

robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0c96d20bf9fba6d814efa88c6fb08a5df094103a

commit 0c96d20bf9fba6d814efa88c6fb08a5df094103a
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Fri Mar 29 18:57:03 2024 +0100

    tools: b43-tools: fix compilation with GCC14
    
    GCC14 no longer treats integer types and pointer types as equivalent in
    assignments (including implied assignments of function arguments and return
    values), and instead fails the compilation with a type error.
    
    So, as a workaround lets disable the newly introduced error
    -Werror=int-conversion and just make it print a warning to enable compiling
    with GCC14 as Fedora 40 now defaults to it.
    
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 tools/b43-tools/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/b43-tools/Makefile b/tools/b43-tools/Makefile
index d3f6e80b52..ed8030e9c5 100644
--- a/tools/b43-tools/Makefile
+++ b/tools/b43-tools/Makefile
@@ -23,7 +23,7 @@ define Host/Compile
 		$(HOST_MAKE_FLAGS) \
 		$(1) QUIET_SPARSE=:
 	+$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR)/assembler \
-		CFLAGS="$(HOST_CFLAGS) -include endian.h" \
+		CFLAGS="$(HOST_CFLAGS) -include endian.h -Wno-error=int-conversion" \
 		$(HOST_MAKE_FLAGS) \
 		LDFLAGS= \
 		$(1) QUIET_SPARSE=:



From lede-commits at lists.infradead.org  Sat Mar 30 13:59:43 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sat, 30 Mar 2024 16:59:43 -0400
Subject: [openwrt/openwrt]  kernel: fix build issue on macOS
In-Reply-To: <171183238345.4051334.8250820569076030851@git-01.infra.openwrt.org>
References: <171183238345.4051334.8250820569076030851@git-01.infra.openwrt.org>
Message-ID: <mailman.21874.1711832396.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0cb3e86557fe17824283224b711fe7394590c680

commit 0cb3e86557fe17824283224b711fe7394590c680
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Sat Mar 30 21:58:31 2024 +0100

    kernel: fix build issue on macOS
    
    On x86, the build failed while trying to compile tools/lib/string.c because
    of a clash with the system provided implementation for strlcpy
    Add ifdefs to prevent the conflict.
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 .../linux/generic/hack-6.1/212-tools_portability.patch | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/target/linux/generic/hack-6.1/212-tools_portability.patch b/target/linux/generic/hack-6.1/212-tools_portability.patch
index add281991e..3ee4393006 100644
--- a/target/linux/generic/hack-6.1/212-tools_portability.patch
+++ b/target/linux/generic/hack-6.1/212-tools_portability.patch
@@ -340,3 +340,21 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  else ifneq ($(CROSS_COMPILE),)
  # Allow userspace to override CLANG_CROSS_FLAGS to specify their own
+--- a/tools/lib/string.c
++++ b/tools/lib/string.c
+@@ -100,6 +100,7 @@ int strtobool(const char *s, bool *res)
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wignored-attributes"
+ #endif
++#ifndef __APPLE__
+ size_t __weak strlcpy(char *dest, const char *src, size_t size)
+ {
+ 	size_t ret = strlen(src);
+@@ -111,6 +112,7 @@ size_t __weak strlcpy(char *dest, const
+ 	}
+ 	return ret;
+ }
++#endif
+ #ifdef __clang__
+ #pragma clang diagnostic pop
+ #endif



From lede-commits at lists.infradead.org  Sun Mar 31 09:12:19 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 12:12:19 -0400
Subject: [openwrt/openwrt]  ath79: add support for Huawei AP5030DN
In-Reply-To: <171190153999.816067.9260036669055154125@git-01.infra.openwrt.org>
References: <171190153999.816067.9260036669055154125@git-01.infra.openwrt.org>
Message-ID: <mailman.21980.1711901557.1280.lede-commits@lists.infradead.org>

blocktrron pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/06cdc07f8cc703ef7dcb3e7b329b9abff0806a6e

commit 06cdc07f8cc703ef7dcb3e7b329b9abff0806a6e
Author: Marco von Rosenberg <marcovr at selfnet.de>
AuthorDate: Sun Mar 31 17:07:39 2024 +0200

    ath79: add support for Huawei AP5030DN
    
    Huawei AP5030DN is a dual-band, dual-radio 802.11ac Wave 1 3x3 MIMO
    enterprise access point with two Gigabit Ethernet ports and PoE
    support.
    
    Hardware highlights:
    - CPU: QCA9550 SoC at 720MHz
    - RAM: 256MB DDR2
    - Flash: 32MB SPI-NOR
    - Wi-Fi 2.4GHz: QCA9550-internal radio
    - Wi-Fi 5GHz: QCA9880 PCIe WLAN SoC
    - Ethernet 1: 10/100/1000 Mbps Ethernet through Broadcom B50612E PHY
    - Ethernet 2: 10/100/1000 Mbps Ethernet through Marvell 88E1510 PHY
    - PoE: input through Ethernet 1 port
    - Standalone 12V/2A power input
    - Serial console externally available through RJ45 port
    - External watchdog: SGM706 (1.6s timeout)
    
    Serial console:
      9600n8 (9600 baud, no stop bits, no parity, 8 data bits)
    
    MAC addresses:
      Each device has 32 consecutive MAC addresses allocated by
      the vendor, which don't overlap between devices.
      This was confirmed with multiple devices with consecutive
      serial numbers.
      The MAC address range starts with the address on the label.
      To be able to distinguish between the interfaces,
      the following MAC address scheme is used:
        - eth0 = label MAC
        - eth1 = label MAC + 1
        - radio0 (Wi-Fi 5GHz) = label MAC + 2
        - radio1 (Wi-Fi 2.4GHz) = label MAC + 3
    
    Installation:
    0. Connect some sort of RJ45-to-USB adapter to "Console" port of the AP
    
    1. Power up the AP
    
    2. At prompt "Press f or F  to stop Auto-Boot in 3 seconds",
       do what they say.
       Log in with default admin password "admin at huawei.com".
    
    3. Boot the OpenWrt initramfs from TFTP using the hidden script
       "run ramboot". Replace IP address as needed:
    
       > setenv serverip 192.168.1.10
       > setenv ipaddr 192.168.1.1
       > setenv rambootfile
         openwrt-ath79-generic-huawei_ap5030dn-initramfs-kernel.bin
       > saveenv
       > run ramboot
    
    4. Optional but recommended as the factory firmware cannot
       be downloaded publicly:
       Back up contents of "firmware" partition using the web interface or ssh:
    
       $ ssh root at 192.168.1.1 cat /dev/mtd11 > huawei_ap5030dn_fw_backup.bin
    
    5. Run sysupgrade using sysupgrade image. OpenWrt
       shall boot from flash afterwards.
    
    Return to factory firmware (using firmware upgrade package downloaded from
    non-public Huawei website):
    1. Start a TFTP server in the directory where
       the firmware upgrade package is located
    
    2. Boot to u-boot as described above
    
    3. Install firmware upgrade package and format the config partitions:
    
       > update system FatAP5X30XN_SOMEVERSION.bin
       > format_fs
    
    Return to factory firmware (from previously created backup):
    1. Copy over the firmware partition backup to /tmp,
       for example using scp
    
    2. Use sysupgrade with force to restore the backup:
       sysupgrade -F huawei_ap5030dn_fw_backup.bin
    
    3. Boot AP to U-Boot as described above
    
    Quirks and known issues
    -----------------------
    
    - On initial power-up, the Huawei-modified bootloader suspends both
    ethernet PHYs (it sets the "Power Down" bit in the MII control
    register). Unfortunately, at the time of the initial port, the kernel
    driver for the B50612E/BCM54612E PHY behind eth0 doesn't have a resume
    callback defined which would clear this bit. This makes the PHY unusable
    since it remains suspended forever. This is why the backported kernel
    patches in this commit are required which add this callback and for
    completeness also a suspend callback.
    
    - The stock firmware has a semi dual boot concept where the primary
    kernel uses a squashfs as root partition and the secondary kernel uses
    an initramfs. This dual boot concept is circumvented on purpose to gain
    more flash space and since the stock firmware's flash layout isn't
    compatible with mtdsplit.
    
    - The external watchdog's timeout of 1.6s is very hard to satisfy
    during bootup. This is why the GPIO15 pin connected to the watchdog input
    is configured directly in the LZMA loader to output the CPU_CLK/4 signal
    which keeps the watchdog happy until the wdt-gpio kernel driver takes
    over. Because it would also take too long to read the whole kernel image
    from flash, the uImage header only includes the loader which then reads
    the kernel image from flash after GPIO15 is configured.
    
    Signed-off-by: Marco von Rosenberg <marcovr at selfnet.de>
    [fixed 6.6 backport patch naming]
    Signed-off-by: David Bauer <mail at david-bauer.net>
---
 package/boot/uboot-envtools/files/ath79            |   3 +
 target/linux/ath79/dts/qca9550_huawei_ap5030dn.dts | 257 +++++++++++++++++++++
 .../generic/base-files/etc/board.d/02_network      |   4 +
 .../generic/base-files/lib/upgrade/platform.sh     |   8 +
 target/linux/ath79/image/generic.mk                |  16 ++
 .../ath79/image/lzma-loader/src/ar71xx_regs.h      |   2 +
 target/linux/ath79/image/lzma-loader/src/board.c   |  26 +++
 ...v6.8-net-phy-bcm54612e-add-suspend-resume.patch |  27 +++
 ...v6.8-net-phy-bcm54612e-add-suspend-resume.patch |  27 +++
 9 files changed, 370 insertions(+)

diff --git a/package/boot/uboot-envtools/files/ath79 b/package/boot/uboot-envtools/files/ath79
index a3bb2c1b58..567bf9824d 100644
--- a/package/boot/uboot-envtools/files/ath79
+++ b/package/boot/uboot-envtools/files/ath79
@@ -123,6 +123,9 @@ domywifi,dw33d)
 glinet,gl-ar150)
 	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x10000"
 	;;
+huawei,ap5030dn)
+	ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x20000" "0x20000"
+	;;
 netgear,wndr3700|\
 netgear,wndr3700-v2|\
 netgear,wndrmac-v1)
diff --git a/target/linux/ath79/dts/qca9550_huawei_ap5030dn.dts b/target/linux/ath79/dts/qca9550_huawei_ap5030dn.dts
new file mode 100644
index 0000000000..1c2a75f1dd
--- /dev/null
+++ b/target/linux/ath79/dts/qca9550_huawei_ap5030dn.dts
@@ -0,0 +1,257 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca955x.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	model = "Huawei AP5030DN";
+	compatible = "huawei,ap5030dn", "qca,qca9550", "qca,qca9558";
+
+	chosen {
+		bootargs = "console=ttyS0,9600n8";
+	};
+
+	aliases {
+		led-boot = &led_function_red;
+		led-failsafe = &led_function_red;
+		led-running = &led_function_green;
+		led-upgrade = &led_function_red;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_function_green: led-status-red {
+			function = LED_FUNCTION_STATUS;
+			color = <LED_COLOR_ID_GREEN>;
+			gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
+		};
+
+		led_function_red: led-status-green {
+			function = LED_FUNCTION_STATUS;
+			color = <LED_COLOR_ID_RED>;
+			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+		};
+
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		restart {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+	};
+
+	watchdog {
+		pinctrl-names = "default";
+		pinctrl-0 = <&wdt_gpio15>;
+
+		compatible = "linux,wdt-gpio";
+		gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
+		hw_algo = "toggle";
+		hw_margin_ms = <100>;
+		always-running;
+	};
+
+	virtual_flash {
+		compatible = "mtd-concat";
+		devices = <&fwconcat0 &fwconcat1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "firmware";
+				reg = <0x0 0x1e00000>;
+				compatible = "openwrt,uimage", "denx,uimage";
+			};
+		};
+	};
+};
+
+&spi {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <25000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot-a";
+				reg = <0x0 0x80000>;
+				read-only;
+			};
+
+			// The BootupA/B partitions store the addresses
+			// of the main and backup kernel in flash (which is the same here).
+			// During sysupgrade, these addresses are set to the start of the
+			// "firmware" partition.
+			partition at 80000 {
+				label = "BootupA";
+				reg = <0x80000 0x20000>;
+			};
+
+			partition at a0000 {
+				label = "BootupB";
+				reg = <0xa0000 0x20000>;
+			};
+
+			partition at c0000 {
+				label = "u-boot-env";
+				reg = <0xc0000 0x20000>;
+				read-only;
+			};
+
+			partition at e0000 {
+				label = "BoardData";
+				reg = <0xe0000 0x20000>;
+				read-only;
+			};
+
+			// In the vendor layout, there are the "SysImageA" (12 MiB)
+			// and the "ConfigA" (3 MiB) partitions here.
+			fwconcat0: partition at 100000 {
+				label = "fwconcat0";
+				reg = <0x100000 0xF00000>;
+			};
+
+			partition at 1000000 {
+				label = "u-boot-b";
+				reg = <0x1000000 0x80000>;
+				read-only;
+			};
+
+			partition at 1080000 {
+				label = "ResultA";
+				reg = <0x1080000 0x20000>;
+				read-only;
+			};
+
+			partition at 10a0000 {
+				label = "ResultB";
+				reg = <0x10a0000 0x20000>;
+				read-only;
+			};
+
+			// In the vendor layout, there are the "SysImageB" (12 MiB)
+			// and the "ConfigB" (3 MiB) partitions here.
+			fwconcat1: partition at 10c0000 {
+				label = "fwconcat1";
+				reg = <0x10c0000 0xF00000>;
+			};
+
+			art: partition at 1fc0000 {
+				label = "art";
+				reg = <0x1fc0000 0x40000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_art_2005b: macaddr at 2005b {
+						compatible = "mac-base";
+						reg = <0x2005b 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+
+					cal_art_1000: cal at 1000 {
+						reg = <0x1000 0x440>;
+					};
+
+					cal_art_5000: cal at 5000 {
+						reg = <0x5000 0x844>;
+					};
+				};
+			};
+		};
+	};
+};
+
+&wmac {
+	status = "okay";
+
+	nvmem-cells = <&macaddr_art_2005b 3>, <&cal_art_1000>;
+	nvmem-cell-names = "mac-address", "calibration";
+};
+
+&pcie0 {
+	status = "okay";
+
+	wifi at 0,0 {
+		compatible = "qcom,ath10k";
+		reg = <0x0000 0 0 0 0>;
+		nvmem-cells = <&macaddr_art_2005b 2>, <&cal_art_5000>;
+		nvmem-cell-names = "mac-address", "calibration";
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	nvmem-cells = <&macaddr_art_2005b 0>;
+	nvmem-cell-names = "mac-address";
+
+	pll-data = <0xa6000000 0xa0000101 0xa0001313>;
+	phy-handle = <&phy0>;
+
+	gmac-config {
+		device = <&gmac>;
+		rxdv-delay = <3>;
+		rxd-delay = <3>;
+		txen-delay = <0>;
+		txd-delay = <0>;
+	};
+};
+
+&eth1 {
+	status = "okay";
+
+	nvmem-cells = <&macaddr_art_2005b 1>;
+	nvmem-cell-names = "mac-address";
+
+	pll-data = <0x03000101 0x00000101 0x00001313>;
+	phy-handle = <&phy1>;
+};
+
+&mdio0 {
+	status = "okay";
+
+	phy0: ethernet-phy at 18 {
+		reg = <0x18>;
+	};
+};
+
+&mdio1 {
+	status = "okay";
+
+	phy1: ethernet-phy at 1 {
+		reg = <1>;
+	};
+};
+
+&pinmux {
+	wdt_gpio15: pinmux_wdt_gpio15 {
+		pinctrl-single,bits = <0xc 0x0 0xFF000000>;
+	};
+};
+
+&wdt {
+	status = "disabled";
+};
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index 4c13478386..6823c333b6 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -149,6 +149,7 @@ ath79_setup_interfaces()
 	engenius,enstationac-v1|\
 	engenius,ews511ap|\
 	engenius,ews660ap|\
+	huawei,ap5030dn|\
 	ocedo,ursus|\
 	ruckus,zf7363|\
 	ruckus,zf7372|\
@@ -734,6 +735,9 @@ ath79_setup_macs()
 	hak5,packet-squirrel)
 		label_mac=$(mtd_get_mac_binary u-boot 0x1fc00)
 		;;
+	huawei,ap5030dn)
+		label_mac=$(mtd_get_mac_binary art 0x2005b)
+		;;
 	iodata,etg3-r)
 		lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
 		wan_mac=$(macaddr_add "$lan_mac" -1)
diff --git a/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh b/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
index a2b717ef34..cb93c1b5ab 100644
--- a/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
@@ -67,6 +67,14 @@ platform_do_upgrade() {
 		ROOTFS_FILE="root.squashfs"
 		platform_do_upgrade_failsafe_datachk "$1"
 		;;
+	huawei,ap5030dn)
+		# Store beginning address of the "firmware" partition
+		# as KernelA address and KernelB address, each to BootupA & BootupB
+		# This is the address from which the bootloader will try to load the kernel.
+		echo -n -e "\x9e\x10\x00\x00\x9e\x10\x00\x00" | dd of=$(find_mtd_part BootupA) bs=1 seek=$((0x254)) conv=notrunc
+		echo -n -e "\x9e\x10\x00\x00\x9e\x10\x00\x00" | dd of=$(find_mtd_part BootupB) bs=1 seek=$((0x254)) conv=notrunc
+		default_do_upgrade "$1"
+		;;
 	jjplus,ja76pf2)
 		platform_do_upgrade_redboot_fis "$1" linux
 		;;
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index d19425a664..502fdc2ed4 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1744,6 +1744,22 @@ define Device/hiwifi_hc6361
 endef
 TARGET_DEVICES += hiwifi_hc6361
 
+define Device/huawei_ap5030dn
+  SOC := qca9550
+  DEVICE_VENDOR := Huawei
+  DEVICE_MODEL := AP5030DN
+  DEVICE_PACKAGES := ath10k-firmware-qca988x-ct kmod-ath10k-ct
+  LOADER_TYPE := bin
+  LOADER_FLASH_OFFS := 0x111DC0
+  KERNEL_SIZE := 15360k
+  IMAGE_SIZE := 30720k
+  COMPILE := loader-$(1).bin
+  COMPILE/loader-$(1).bin := loader-okli-compile | pad-to 64k | uImage none
+  KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49 | loader-okli $(1) 8128
+  KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-kernel | uImage none
+endef
+TARGET_DEVICES += huawei_ap5030dn
+
 define Device/iodata_etg3-r
   SOC := ar9342
   DEVICE_VENDOR := I-O DATA
diff --git a/target/linux/ath79/image/lzma-loader/src/ar71xx_regs.h b/target/linux/ath79/image/lzma-loader/src/ar71xx_regs.h
index 245042fdab..e7d7683973 100644
--- a/target/linux/ath79/image/lzma-loader/src/ar71xx_regs.h
+++ b/target/linux/ath79/image/lzma-loader/src/ar71xx_regs.h
@@ -671,6 +671,8 @@
 
 #define AR934X_GPIO_OUT_GPIO		0x00
 
+#define QCA955X_GPIO_OUTSEL_CLK_OBS5		0x54
+
 /*
  * MII_CTRL block
  */
diff --git a/target/linux/ath79/image/lzma-loader/src/board.c b/target/linux/ath79/image/lzma-loader/src/board.c
index 7b1e110ee2..13926e9b1e 100644
--- a/target/linux/ath79/image/lzma-loader/src/board.c
+++ b/target/linux/ath79/image/lzma-loader/src/board.c
@@ -182,8 +182,34 @@ static inline void mr18_init(void)
 static inline void mr18_init(void) { }
 #endif
 
+#ifdef CONFIG_BOARD_HUAWEI_AP5030DN
+static inline void ap5030dn_init(void)
+{
+	const unsigned int ap5030dn_watchdog_gpio = 15;
+	unsigned int gpiobase, reg;
+
+	gpiobase = KSEG1ADDR(AR71XX_GPIO_BASE);
+
+	printf("Huawei AP5030DN\n");
+
+	reg = READREG(gpiobase + AR71XX_GPIO_REG_OE);
+	WRITEREG(gpiobase + AR71XX_GPIO_REG_OE,
+			reg & ~(1 << ap5030dn_watchdog_gpio));
+
+	/* Set GPIO15 MUX to output CLK_OBS5 (= CPU_CLK/4)
+	 * to keep the watchdog happy until wdt-gpio takes over
+	 */
+	reg = READREG(gpiobase + AR934X_GPIO_REG_OUT_FUNC3);
+	WRITEREG(gpiobase + AR934X_GPIO_REG_OUT_FUNC3,
+			reg | (QCA955X_GPIO_OUTSEL_CLK_OBS5 << 24));
+}
+#else
+static inline void ap5030dn_init(void) { }
+#endif
+
 void board_init(void)
 {
 	tlwr1043nd_init();
 	mr18_init();
+	ap5030dn_init();
 }
diff --git a/target/linux/generic/backport-6.1/734-v6.8-net-phy-bcm54612e-add-suspend-resume.patch b/target/linux/generic/backport-6.1/734-v6.8-net-phy-bcm54612e-add-suspend-resume.patch
new file mode 100644
index 0000000000..8d88d46955
--- /dev/null
+++ b/target/linux/generic/backport-6.1/734-v6.8-net-phy-bcm54612e-add-suspend-resume.patch
@@ -0,0 +1,27 @@
+From 380b50ae3a04222334a3779b3787eba844b1177f Mon Sep 17 00:00:00 2001
+From: Marco von Rosenberg <marcovr at selfnet.de>
+Date: Thu, 16 Nov 2023 20:32:31 +0100
+Subject: net: phy: broadcom: Wire suspend/resume for BCM54612E
+
+The BCM54612E ethernet PHY supports IDDQ-SR.
+Therefore wire-up the suspend and resume callbacks
+to point to bcm54xx_suspend() and bcm54xx_resume().
+
+Signed-off-by: Marco von Rosenberg <marcovr at selfnet.de>
+Acked-by: Florian Fainelli <florian.fainelli at broadcom.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ drivers/net/phy/broadcom.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/phy/broadcom.c
++++ b/drivers/net/phy/broadcom.c
+@@ -941,6 +941,8 @@ static struct phy_driver broadcom_driver
+ 	.config_intr	= bcm_phy_config_intr,
+ 	.handle_interrupt = bcm_phy_handle_interrupt,
+ 	.link_change_notify	= bcm54xx_link_change_notify,
++	.suspend	= bcm54xx_suspend,
++	.resume		= bcm54xx_resume,
+ }, {
+ 	.phy_id		= PHY_ID_BCM54616S,
+ 	.phy_id_mask	= 0xfffffff0,
diff --git a/target/linux/generic/backport-6.6/734-v6.8-net-phy-bcm54612e-add-suspend-resume.patch b/target/linux/generic/backport-6.6/734-v6.8-net-phy-bcm54612e-add-suspend-resume.patch
new file mode 100644
index 0000000000..28524a3dcf
--- /dev/null
+++ b/target/linux/generic/backport-6.6/734-v6.8-net-phy-bcm54612e-add-suspend-resume.patch
@@ -0,0 +1,27 @@
+From 380b50ae3a04222334a3779b3787eba844b1177f Mon Sep 17 00:00:00 2001
+From: Marco von Rosenberg <marcovr at selfnet.de>
+Date: Thu, 16 Nov 2023 20:32:31 +0100
+Subject: net: phy: broadcom: Wire suspend/resume for BCM54612E
+
+The BCM54612E ethernet PHY supports IDDQ-SR.
+Therefore wire-up the suspend and resume callbacks
+to point to bcm54xx_suspend() and bcm54xx_resume().
+
+Signed-off-by: Marco von Rosenberg <marcovr at selfnet.de>
+Acked-by: Florian Fainelli <florian.fainelli at broadcom.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ drivers/net/phy/broadcom.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/phy/broadcom.c
++++ b/drivers/net/phy/broadcom.c
+@@ -1001,6 +1001,8 @@ static struct phy_driver broadcom_driver
+ 	.config_intr	= bcm_phy_config_intr,
+ 	.handle_interrupt = bcm_phy_handle_interrupt,
+ 	.link_change_notify	= bcm54xx_link_change_notify,
++	.suspend	= bcm54xx_suspend,
++	.resume		= bcm54xx_resume,
+ }, {
+ 	.phy_id		= PHY_ID_BCM5421,
+ 	.phy_id_mask	= 0xfffffff0,



From lede-commits at lists.infradead.org  Sun Mar 31 09:21:31 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 12:21:31 -0400
Subject: [openwrt/openwrt]  kernel: bump 6.6 to 6.6.23
In-Reply-To: <171190209122.824742.4562624929265883941@git-01.infra.openwrt.org>
References: <171190209122.824742.4562624929265883941@git-01.infra.openwrt.org>
Message-ID: <mailman.21981.1711902098.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b04f245c39269eeb9078062717d1b95d03604f41

commit b04f245c39269eeb9078062717d1b95d03604f41
Author: John Audia <therealgraysky at proton.me>
AuthorDate: Wed Mar 27 04:11:32 2024 -0400

    kernel: bump 6.6 to 6.6.23
    
    Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.23
    
    Removed upstreamed:
      pending-6.6/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch[1]
      pending-6.6/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch[2]
      mediatek/patches-6.6/232-clk-mediatek-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch[3]
    
    Manually rebased:
      mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch
    
    Added:
      generic/backports-6.6/981-mtd-spinand-Add-support-for-5-byte-IDs.patch[4]
    
    All other patches automatically rebased.
    
    1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.23&id=1f32abb474c1c9bdb21d9eda74c325a0b3a162e5
    2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.23&id=943c14ece95eb1cf98d477462aebcbfdfd714633
    3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.23&id=6ff01b314149d1cf59caebc29384f0beed21cba4
    4. See comments in https://github.com/openwrt/openwrt/pull/14992 regarding broken flogic/xiaomi_redmi-router-ax6000-ubootmod
    
    Build system: x86/64
    Build-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, flogic/glinet_gl-mt6000
    Run-tested: x86/64/AMD Cezannei, flogic/xiaomi_redmi-router-ax6000-ubootmod, flogic/glinet_gl-mt6000
    
    Signed-off-by: John Audia <therealgraysky at proton.me>
---
 include/kernel-6.6                                 |  4 +-
 ...roadcom-bcmbca-bcm4908-set-brcm-wp-not-co.patch |  2 +-
 ...roadcom-bcmbca-bcm4908-limit-amount-of-GP.patch |  2 +-
 ...81-mtd-spinand-Add-support-for-5-byte-IDs.patch | 27 ++++++++++
 ...80-NET-skip-GRO-for-foreign-MAC-addresses.patch |  8 +--
 ...f_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch |  2 +-
 ...ethernet-mtk_eth_soc-enable-threaded-NAPI.patch |  2 +-
 ...ensure-all-MACs-are-powered-down-before-r.patch |  2 +-
 ...t-mtk_eth_soc-work-around-issue-with-send.patch |  6 +--
 ...k-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch | 50 ------------------
 ...thernet-mtk_eth_soc-fix-PPE-hanging-issue.patch | 59 ----------------------
 ...d-optional-threading-for-backlog-processi.patch |  4 +-
 ...30-register-OF-node-for-internal-MDIO-bus.patch |  4 +-
 ...pio-gpio-cascade-add-generic-GPIO-cascade.patch |  2 +-
 .../generic/pending-6.6/920-mangle_bootargs.patch  |  4 +-
 .../patches-6.6/100-dts-update-mt7622-rfb1.patch   |  8 +--
 .../patches-6.6/106-dts-mt7622-disable_btif.patch  |  4 +-
 .../patches-6.6/112-dts-fix-bpi64-lan-names.patch  |  2 +-
 .../patches-6.6/114-dts-bpi64-disable-rtc.patch    |  2 +-
 .../131-dts-mt7622-add-snand-support.patch         |  2 +-
 .../140-dts-fix-wmac-support-for-mt7622-rfb1.patch |  4 +-
 ...k-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch | 30 -----------
 .../patches-6.6/331-mt7622-rfb1-enable-bmt.patch   |  2 +-
 ...-mt65xx-Move-chip_config-to-driver-s-priv.patch |  2 +-
 ...-mt65xx-Add-controller-s-calibration-para.patch |  4 +-
 ...s-Convert-to-platform-remove-callback-ret.patch |  6 +--
 ...vers-mediatek-lvts_thermal-Make-coeff-con.patch | 14 ++---
 ...vers-mediatek-lvts_thermal-Add-mt7988-sup.patch |  6 +--
 ...vers-mediatek-lvts_thermal-Add-suspend-an.patch |  4 +-
 ...vers-mediatek-lvts_thermal-Add-mt8192-sup.patch |  6 +--
 ...-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch |  2 +-
 .../910-dts-mt7622-bpi-r64-wifi-eeprom.patch       |  2 +-
 .../911-dts-mt7622-bpi-r64-add-rootdisk.patch      |  6 +--
 .../930-spi-mt65xx-enable-sel-clk.patch            |  2 +-
 ...s-mt7986-move-cpuboot-in-a-dedicated-node.patch |  6 +--
 ...4-dts-mt7986-move-ilm-in-a-dedicated-node.patch |  6 +--
 ...4-dts-mt7986-move-dlm-in-a-dedicated-node.patch |  6 +--
 ...-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch |  4 +-
 38 files changed, 98 insertions(+), 210 deletions(-)

diff --git a/include/kernel-6.6 b/include/kernel-6.6
index b30a51434c..872a5b2aac 100644
--- a/include/kernel-6.6
+++ b/include/kernel-6.6
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.6 = .22
-LINUX_KERNEL_HASH-6.6.22 = 23e3e7b56407250f5411bdab95763d0bc4e3a19dfa431d951df7eacabd61a2f4
+LINUX_VERSION-6.6 = .23
+LINUX_KERNEL_HASH-6.6.23 = 200fd119cb9ef06bcedcdb52be00ba443163eab154295c5831fed9a12211a8b9
diff --git a/target/linux/bcm4908/patches-6.6/130-arm64-dts-broadcom-bcmbca-bcm4908-set-brcm-wp-not-co.patch b/target/linux/bcm4908/patches-6.6/130-arm64-dts-broadcom-bcmbca-bcm4908-set-brcm-wp-not-co.patch
index 442a71fc8f..a6e174da7c 100644
--- a/target/linux/bcm4908/patches-6.6/130-arm64-dts-broadcom-bcmbca-bcm4908-set-brcm-wp-not-co.patch
+++ b/target/linux/bcm4908/patches-6.6/130-arm64-dts-broadcom-bcmbca-bcm4908-set-brcm-wp-not-co.patch
@@ -21,7 +21,7 @@ Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
 
 --- a/arch/arm64/boot/dts/broadcom/bcmbca/bcm4908.dtsi
 +++ b/arch/arm64/boot/dts/broadcom/bcmbca/bcm4908.dtsi
-@@ -597,6 +597,7 @@
+@@ -594,6 +594,7 @@
  			reg-names = "nand", "nand-int-base";
  			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  			interrupt-names = "nand_ctlrdy";
diff --git a/target/linux/bcm4908/patches-6.6/300-arm64-dts-broadcom-bcmbca-bcm4908-limit-amount-of-GP.patch b/target/linux/bcm4908/patches-6.6/300-arm64-dts-broadcom-bcmbca-bcm4908-limit-amount-of-GP.patch
index 6fd7d92233..ed18d66bbf 100644
--- a/target/linux/bcm4908/patches-6.6/300-arm64-dts-broadcom-bcmbca-bcm4908-limit-amount-of-GP.patch
+++ b/target/linux/bcm4908/patches-6.6/300-arm64-dts-broadcom-bcmbca-bcm4908-limit-amount-of-GP.patch
@@ -12,7 +12,7 @@ Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
 
 --- a/arch/arm64/boot/dts/broadcom/bcmbca/bcm4908.dtsi
 +++ b/arch/arm64/boot/dts/broadcom/bcmbca/bcm4908.dtsi
-@@ -344,7 +344,7 @@
+@@ -341,7 +341,7 @@
  		gpio0: gpio-controller at 500 {
  			compatible = "brcm,bcm6345-gpio";
  			reg-names = "dirout", "dat";
diff --git a/target/linux/generic/backport-6.6/981-mtd-spinand-Add-support-for-5-byte-IDs.patch b/target/linux/generic/backport-6.6/981-mtd-spinand-Add-support-for-5-byte-IDs.patch
new file mode 100644
index 0000000000..0bec36cb8f
--- /dev/null
+++ b/target/linux/generic/backport-6.6/981-mtd-spinand-Add-support-for-5-byte-IDs.patch
@@ -0,0 +1,27 @@
+From: Ezra Buehler <ezra.buehler at husqvarnagroup.com>
+
+E.g. ESMT chips will return an identification code with a length of 5
+bytes. In order to prevent ambiguity, flash chips would actually need to
+return IDs that are up to 17 or more bytes long due to JEDEC's
+continuation scheme. I understand that if a manufacturer ID is located
+in bank N of JEDEC's database (there are currently 16 banks), N - 1
+continuation codes (7Fh) need to be added to the identification code
+(comprising of manufacturer ID and device ID). However, most flash chip
+manufacturers don't seem to implement this (correctly).
+
+Signed-off-by: Ezra Buehler <ezra.buehler at husqvarnagroup.com>
+---
+ include/linux/mtd/spinand.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/linux/mtd/spinand.h
++++ b/include/linux/mtd/spinand.h
+@@ -169,7 +169,7 @@
+ struct spinand_op;
+ struct spinand_device;
+ 
+-#define SPINAND_MAX_ID_LEN	4
++#define SPINAND_MAX_ID_LEN	5
+ /*
+  * For erase, write and read operation, we got the following timings :
+  * tBERS (erase) 1ms to 4ms
diff --git a/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index af38c107ee..b1f517d17a 100644
--- a/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-6.6/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -7686,6 +7686,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -7689,6 +7689,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
  				   void *upper_priv, void *upper_info,
-@@ -7737,6 +7779,7 @@ static int __netdev_upper_dev_link(struc
+@@ -7740,6 +7782,7 @@ static int __netdev_upper_dev_link(struc
  	if (ret)
  		return ret;
  
@@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  					    &changeupper_info.info);
  	ret = notifier_to_errno(ret);
-@@ -7833,6 +7876,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -7836,6 +7879,7 @@ static void __netdev_upper_dev_unlink(st
  
  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
  
@@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
  				      &changeupper_info.info);
  
-@@ -8889,6 +8933,7 @@ int dev_set_mac_address(struct net_devic
+@@ -8892,6 +8936,7 @@ int dev_set_mac_address(struct net_devic
  			return err;
  	}
  	dev->addr_assign_type = NET_ADDR_SET;
diff --git a/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
index cc37180277..02aa8c3340 100644
--- a/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
+++ b/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/netfilter/nf_tables_api.c
 +++ b/net/netfilter/nf_tables_api.c
-@@ -8213,7 +8213,7 @@ static int nft_register_flowtable_net_ho
+@@ -8214,7 +8214,7 @@ static int nft_register_flowtable_net_ho
  		err = flowtable->data.type->setup(&flowtable->data,
  						  hook->ops.dev,
  						  FLOW_BLOCK_BIND);
diff --git a/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch b/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch
index b074f546c5..e73cf9a899 100644
--- a/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch
+++ b/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4982,6 +4982,8 @@ static int mtk_probe(struct platform_dev
+@@ -4981,6 +4981,8 @@ static int mtk_probe(struct platform_dev
  	 * for NAPI to work
  	 */
  	init_dummy_netdev(&eth->dummy_dev);
diff --git a/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch b/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch
index 4ab8e24f99..8028dc826f 100644
--- a/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch
+++ b/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch
@@ -15,7 +15,7 @@ Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
 
 --- a/drivers/net/dsa/mt7530.c
 +++ b/drivers/net/dsa/mt7530.c
-@@ -2268,6 +2268,10 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -2304,6 +2304,10 @@ mt7530_setup(struct dsa_switch *ds)
  		return -ENODEV;
  	}
  
diff --git a/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch b/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
index e4b7070cbe..a64561bf92 100644
--- a/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
+++ b/target/linux/generic/pending-6.6/732-01-net-ethernet-mtk_eth_soc-work-around-issue-with-send.patch
@@ -24,7 +24,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #include <net/page_pool/helpers.h>
  
  #include "mtk_eth_soc.h"
-@@ -1579,12 +1580,28 @@ static void mtk_wake_queue(struct mtk_et
+@@ -1578,12 +1579,28 @@ static void mtk_wake_queue(struct mtk_et
  	}
  }
  
@@ -53,7 +53,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	bool gso = false;
  	int tx_num;
  
-@@ -1606,6 +1623,18 @@ static netdev_tx_t mtk_start_xmit(struct
+@@ -1605,6 +1622,18 @@ static netdev_tx_t mtk_start_xmit(struct
  		return NETDEV_TX_BUSY;
  	}
  
@@ -72,7 +72,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	/* TSO: fill MSS info in tcp checksum field */
  	if (skb_is_gso(skb)) {
  		if (skb_cow_head(skb, 0)) {
-@@ -1621,8 +1650,14 @@ static netdev_tx_t mtk_start_xmit(struct
+@@ -1620,8 +1649,14 @@ static netdev_tx_t mtk_start_xmit(struct
  		}
  	}
  
diff --git a/target/linux/generic/pending-6.6/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch b/target/linux/generic/pending-6.6/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
deleted file mode 100644
index dedd084545..0000000000
--- a/target/linux/generic/pending-6.6/735-net-mediatek-mtk_eth_soc-release-MAC_MCR_FORCE_LINK-.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From ef5976ae4e117fae9a61bb3c0f8319a917a425ea Mon Sep 17 00:00:00 2001
-From: Daniel Golle <daniel at makrotopia.org>
-Date: Mon, 11 Mar 2024 17:43:28 +0000
-Subject: [PATCH] net: mediatek: mtk_eth_soc: release MAC_MCR_FORCE_LINK only when MAC is up
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Clearing bit MAC_MCR_FORCE_LINK which forces the link down too early
-can result in MAC ending up in a broken/blocked state.
-
-Fix this by handling this bit in the .mac_link_up and .mac_link_down
-calls instead of in .mac_finish.
-
-Fixes: b8fc9f30821ec ("net: ethernet: mediatek: Add basic PHYLINK support")
-Signed-off-by: Daniel Golle <daniel at makrotopia.org>
----
- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
---- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -678,8 +678,7 @@ static int mtk_mac_finish(struct phylink
- 	mcr_cur = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
- 	mcr_new = mcr_cur;
- 	mcr_new |= MAC_MCR_IPG_CFG | MAC_MCR_FORCE_MODE |
--		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_FORCE_LINK |
--		   MAC_MCR_RX_FIFO_CLR_DIS;
-+		   MAC_MCR_BACKOFF_EN | MAC_MCR_BACKPR_EN | MAC_MCR_RX_FIFO_CLR_DIS;
- 
- 	/* Only update control register when needed! */
- 	if (mcr_new != mcr_cur)
-@@ -695,7 +694,7 @@ static void mtk_mac_link_down(struct phy
- 					   phylink_config);
- 	u32 mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
- 
--	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN);
-+	mcr &= ~(MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK);
- 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
- }
- 
-@@ -804,7 +803,7 @@ static void mtk_mac_link_up(struct phyli
- 	if (rx_pause)
- 		mcr |= MAC_MCR_FORCE_RX_FC;
- 
--	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN;
-+	mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK;
- 	mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
- }
- 
diff --git a/target/linux/generic/pending-6.6/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch b/target/linux/generic/pending-6.6/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
deleted file mode 100644
index 3b190c1801..0000000000
--- a/target/linux/generic/pending-6.6/736-net-ethernet-mtk_eth_soc-fix-PPE-hanging-issue.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From c8262ebbf7ca546dd5ead3c0383a89eb401627ff Mon Sep 17 00:00:00 2001
-From: Daniel Golle <daniel at makrotopia.org>
-Date: Wed, 13 Mar 2024 17:55:02 +0000
-Subject: [PATCH] net: ethernet: mtk_eth_soc: fix PPE hanging issue
-
-A patch to resolve an issue was found in MediaTek's GPL-licensed SDK:
-In the mtk_ppe_stop() function, the PPE scan mode is not disabled before
-disabling the PPE. This can potentially lead to a hang during the process
-of disabling the PPE.
-
-Without this patch, the PPE may experience a hang during the reboot test.
-
-Reference: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b40da332dfe763932a82f9f62a4709457a15dd6c
-
-Suggested-by: Bc-bocun Chen <bc-bocun.chen at mediatek.com>
-Signed-off-by: Daniel Golle <daniel at makrotopia.org>
----
- drivers/net/ethernet/mediatek/mtk_ppe.c | 18 +++++++++++-------
- 1 file changed, 11 insertions(+), 7 deletions(-)
-
---- a/drivers/net/ethernet/mediatek/mtk_ppe.c
-+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
-@@ -1002,7 +1002,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
- 			 MTK_PPE_KEEPALIVE_DISABLE) |
- 	      FIELD_PREP(MTK_PPE_TB_CFG_HASH_MODE, 1) |
- 	      FIELD_PREP(MTK_PPE_TB_CFG_SCAN_MODE,
--			 MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) |
-+			 MTK_PPE_SCAN_MODE_CHECK_AGE) |
- 	      FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
- 			 MTK_PPE_ENTRIES_SHIFT);
- 	if (mtk_is_netsys_v2_or_greater(ppe->eth))
-@@ -1098,17 +1098,21 @@ int mtk_ppe_stop(struct mtk_ppe *ppe)
- 
- 	mtk_ppe_cache_enable(ppe, false);
- 
--	/* disable offload engine */
--	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
--	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
--
- 	/* disable aging */
- 	val = MTK_PPE_TB_CFG_AGE_NON_L4 |
- 	      MTK_PPE_TB_CFG_AGE_UNBIND |
- 	      MTK_PPE_TB_CFG_AGE_TCP |
- 	      MTK_PPE_TB_CFG_AGE_UDP |
--	      MTK_PPE_TB_CFG_AGE_TCP_FIN;
-+	      MTK_PPE_TB_CFG_AGE_TCP_FIN |
-+		  MTK_PPE_TB_CFG_SCAN_MODE;
- 	ppe_clear(ppe, MTK_PPE_TB_CFG, val);
- 
--	return mtk_ppe_wait_busy(ppe);
-+	if (mtk_ppe_wait_busy(ppe))
-+		return -ETIMEDOUT;
-+
-+	/* disable offload engine */
-+	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
-+	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
-+
-+	return 0;
- }
diff --git a/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch b/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
index 013005f053..a918ba31d5 100644
--- a/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
+++ b/target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
@@ -157,7 +157,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
  			   int (*poll)(struct napi_struct *, int), int weight)
  {
-@@ -11348,6 +11419,9 @@ static int dev_cpu_dead(unsigned int old
+@@ -11351,6 +11422,9 @@ static int dev_cpu_dead(unsigned int old
  	raise_softirq_irqoff(NET_TX_SOFTIRQ);
  	local_irq_enable();
  
@@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #ifdef CONFIG_RPS
  	remsd = oldsd->rps_ipi_list;
  	oldsd->rps_ipi_list = NULL;
-@@ -11663,6 +11737,7 @@ static int __init net_dev_init(void)
+@@ -11666,6 +11740,7 @@ static int __init net_dev_init(void)
  		INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
  		spin_lock_init(&sd->defer_lock);
  
diff --git a/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch b/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch
index 4b5eb767fd..4fa5c4ea96 100644
--- a/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch
+++ b/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch
@@ -16,7 +16,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
 
 --- a/drivers/net/dsa/mt7530.c
 +++ b/drivers/net/dsa/mt7530.c
-@@ -2156,10 +2156,13 @@ mt7530_setup_mdio(struct mt7530_priv *pr
+@@ -2192,10 +2192,13 @@ mt7530_setup_mdio(struct mt7530_priv *pr
  {
  	struct dsa_switch *ds = priv->ds;
  	struct device *dev = priv->dev;
@@ -30,7 +30,7 @@ Signed-off-by: David Bauer <mail at david-bauer.net>
  	bus = devm_mdiobus_alloc(dev);
  	if (!bus)
  		return -ENOMEM;
-@@ -2178,7 +2181,9 @@ mt7530_setup_mdio(struct mt7530_priv *pr
+@@ -2214,7 +2217,9 @@ mt7530_setup_mdio(struct mt7530_priv *pr
  	if (priv->irq)
  		mt7530_setup_mdio_irq(priv);
  
diff --git a/target/linux/generic/pending-6.6/801-gpio-gpio-cascade-add-generic-GPIO-cascade.patch b/target/linux/generic/pending-6.6/801-gpio-gpio-cascade-add-generic-GPIO-cascade.patch
index ca4101f148..aae850e1d9 100644
--- a/target/linux/generic/pending-6.6/801-gpio-gpio-cascade-add-generic-GPIO-cascade.patch
+++ b/target/linux/generic/pending-6.6/801-gpio-gpio-cascade-add-generic-GPIO-cascade.patch
@@ -70,7 +70,7 @@ v1 -> v2:
 
 --- a/drivers/gpio/Kconfig
 +++ b/drivers/gpio/Kconfig
-@@ -1819,4 +1819,19 @@ config GPIO_SIM
+@@ -1820,4 +1820,19 @@ config GPIO_SIM
  
  endmenu
  
diff --git a/target/linux/generic/pending-6.6/920-mangle_bootargs.patch b/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
index 2ce1b9ccb5..519d0b76da 100644
--- a/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
+++ b/target/linux/generic/pending-6.6/920-mangle_bootargs.patch
@@ -31,7 +31,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  	help
 --- a/init/main.c
 +++ b/init/main.c
-@@ -608,6 +608,29 @@ static inline void setup_nr_cpu_ids(void
+@@ -609,6 +609,29 @@ static inline void setup_nr_cpu_ids(void
  static inline void smp_prepare_cpus(unsigned int maxcpus) { }
  #endif
  
@@ -61,7 +61,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
  /*
   * We need to store the untouched command line for future reference.
   * We also need to store the touched command line since the parameter
-@@ -895,6 +918,7 @@ void start_kernel(void)
+@@ -896,6 +919,7 @@ void start_kernel(void)
  	pr_notice("%s", linux_banner);
  	early_security_init();
  	setup_arch(&command_line);
diff --git a/target/linux/mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch b/target/linux/mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch
index ed07eb367d..18bcdf02b7 100644
--- a/target/linux/mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch
+++ b/target/linux/mediatek/patches-6.6/100-dts-update-mt7622-rfb1.patch
@@ -38,10 +38,10 @@
  	memory at 40000000 {
 -		reg = <0 0x40000000 0 0x20000000>;
 +		reg = <0 0x40000000 0 0x40000000>;
+ 		device_type = "memory";
  	};
  
- 	reg_1p8v: regulator-1p8v {
-@@ -132,22 +131,22 @@
+@@ -133,22 +132,22 @@
  
  				port at 0 {
  					reg = <0>;
@@ -68,7 +68,7 @@
  				};
  
  				port at 4 {
-@@ -239,7 +238,22 @@
+@@ -240,7 +239,22 @@
  	status = "okay";
  };
  
@@ -91,7 +91,7 @@
  	/* eMMC is shared pin with parallel NAND */
  	emmc_pins_default: emmc-pins-default {
  		mux {
-@@ -516,11 +530,11 @@
+@@ -517,11 +531,11 @@
  };
  
  &sata {
diff --git a/target/linux/mediatek/patches-6.6/106-dts-mt7622-disable_btif.patch b/target/linux/mediatek/patches-6.6/106-dts-mt7622-disable_btif.patch
index fc6a8f35bc..ac8594b396 100644
--- a/target/linux/mediatek/patches-6.6/106-dts-mt7622-disable_btif.patch
+++ b/target/linux/mediatek/patches-6.6/106-dts-mt7622-disable_btif.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
-@@ -108,10 +108,6 @@
+@@ -109,10 +109,6 @@
  	status = "disabled";
  };
  
@@ -13,7 +13,7 @@
  	pinctrl-0 = <&irrx_pins>;
 --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
-@@ -89,10 +89,6 @@
+@@ -90,10 +90,6 @@
  	status = "disabled";
  };
  
diff --git a/target/linux/mediatek/patches-6.6/112-dts-fix-bpi64-lan-names.patch b/target/linux/mediatek/patches-6.6/112-dts-fix-bpi64-lan-names.patch
index 816683e626..7f97ef4aef 100644
--- a/target/linux/mediatek/patches-6.6/112-dts-fix-bpi64-lan-names.patch
+++ b/target/linux/mediatek/patches-6.6/112-dts-fix-bpi64-lan-names.patch
@@ -8,7 +8,7 @@
  	};
  
  	chosen {
-@@ -164,22 +165,22 @@
+@@ -165,22 +166,22 @@
  
  				port at 1 {
  					reg = <1>;
diff --git a/target/linux/mediatek/patches-6.6/114-dts-bpi64-disable-rtc.patch b/target/linux/mediatek/patches-6.6/114-dts-bpi64-disable-rtc.patch
index 5a2c603486..50d3023441 100644
--- a/target/linux/mediatek/patches-6.6/114-dts-bpi64-disable-rtc.patch
+++ b/target/linux/mediatek/patches-6.6/114-dts-bpi64-disable-rtc.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
-@@ -587,6 +587,10 @@
+@@ -588,6 +588,10 @@
  	status = "okay";
  };
  
diff --git a/target/linux/mediatek/patches-6.6/131-dts-mt7622-add-snand-support.patch b/target/linux/mediatek/patches-6.6/131-dts-mt7622-add-snand-support.patch
index a804087367..d6e0ab1d41 100644
--- a/target/linux/mediatek/patches-6.6/131-dts-mt7622-add-snand-support.patch
+++ b/target/linux/mediatek/patches-6.6/131-dts-mt7622-add-snand-support.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
-@@ -533,6 +533,65 @@
+@@ -534,6 +534,65 @@
  	status = "disabled";
  };
  
diff --git a/target/linux/mediatek/patches-6.6/140-dts-fix-wmac-support-for-mt7622-rfb1.patch b/target/linux/mediatek/patches-6.6/140-dts-fix-wmac-support-for-mt7622-rfb1.patch
index 6d1e2f1ed2..117d5abde6 100644
--- a/target/linux/mediatek/patches-6.6/140-dts-fix-wmac-support-for-mt7622-rfb1.patch
+++ b/target/linux/mediatek/patches-6.6/140-dts-fix-wmac-support-for-mt7622-rfb1.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
-@@ -574,7 +574,7 @@
+@@ -575,7 +575,7 @@
  				reg = <0x140000 0x0080000>;
  			};
  
@@ -9,7 +9,7 @@
  				label = "Factory";
  				reg = <0x1c0000 0x0100000>;
  			};
-@@ -635,5 +635,6 @@
+@@ -636,5 +636,6 @@
  &wmac {
  	pinctrl-names = "default";
  	pinctrl-0 = <&wmac_pins>;
diff --git a/target/linux/mediatek/patches-6.6/232-clk-mediatek-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch b/target/linux/mediatek/patches-6.6/232-clk-mediatek-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch
deleted file mode 100644
index dd06c4e096..0000000000
--- a/target/linux/mediatek/patches-6.6/232-clk-mediatek-mt7981-topckgen-flag-SGM_REG_SEL-as-cri.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From fc157139e6b7f8dfb6430ac7191ba754027705e8 Mon Sep 17 00:00:00 2001
-From: Daniel Golle <daniel at makrotopia.org>
-Date: Sun, 18 Feb 2024 01:59:59 +0000
-Subject: [PATCH] clk: mediatek: mt7981-topckgen: flag SGM_REG_SEL as critical
-
-Without the SGM_REG_SEL clock enabled the system freezes if trying to
-access registers used by MT7981 clock drivers itself.
-Mark SGM_REG_SEL as critical to make sure it is always enabled to
-prevent freezes on boot depending on probe order.
-
-Fixes: 813c3b53b55ba ("clk: mediatek: add MT7981 clock support")
-Signed-off-by: Daniel Golle <daniel at makrotopia.org>
----
- drivers/clk/mediatek/clk-mt7981-topckgen.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
---- a/drivers/clk/mediatek/clk-mt7981-topckgen.c
-+++ b/drivers/clk/mediatek/clk-mt7981-topckgen.c
-@@ -357,8 +357,9 @@ static const struct mtk_mux top_muxes[]
- 	MUX_GATE_CLR_SET_UPD(CLK_TOP_SGM_325M_SEL, "sgm_325m_sel",
- 			     sgm_325m_parents, 0x050, 0x054, 0x058, 8, 1, 15,
- 			     0x1C0, 21),
--	MUX_GATE_CLR_SET_UPD(CLK_TOP_SGM_REG_SEL, "sgm_reg_sel", sgm_reg_parents,
--			     0x050, 0x054, 0x058, 16, 1, 23, 0x1C0, 22),
-+	MUX_GATE_CLR_SET_UPD_FLAGS(CLK_TOP_SGM_REG_SEL, "sgm_reg_sel", sgm_reg_parents,
-+				   0x050, 0x054, 0x058, 16, 1, 23, 0x1C0, 22,
-+				   CLK_IS_CRITICAL | CLK_SET_RATE_PARENT),
- 	MUX_GATE_CLR_SET_UPD(CLK_TOP_EIP97B_SEL, "eip97b_sel", eip97b_parents,
- 			     0x050, 0x054, 0x058, 24, 3, 31, 0x1C0, 23),
- 	/* CLK_CFG_6 */
diff --git a/target/linux/mediatek/patches-6.6/331-mt7622-rfb1-enable-bmt.patch b/target/linux/mediatek/patches-6.6/331-mt7622-rfb1-enable-bmt.patch
index 6d6463aade..3e956701cd 100644
--- a/target/linux/mediatek/patches-6.6/331-mt7622-rfb1-enable-bmt.patch
+++ b/target/linux/mediatek/patches-6.6/331-mt7622-rfb1-enable-bmt.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
-@@ -547,6 +547,7 @@
+@@ -548,6 +548,7 @@
  		spi-tx-bus-width = <4>;
  		spi-rx-bus-width = <4>;
  		nand-ecc-engine = <&snfi>;
diff --git a/target/linux/mediatek/patches-6.6/431-drivers-spi-mt65xx-Move-chip_config-to-driver-s-priv.patch b/target/linux/mediatek/patches-6.6/431-drivers-spi-mt65xx-Move-chip_config-to-driver-s-priv.patch
index a0bd46c5b7..9629dd8519 100644
--- a/target/linux/mediatek/patches-6.6/431-drivers-spi-mt65xx-Move-chip_config-to-driver-s-priv.patch
+++ b/target/linux/mediatek/patches-6.6/431-drivers-spi-mt65xx-Move-chip_config-to-driver-s-priv.patch
@@ -97,7 +97,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
  	if (mdata->dev_comp->need_pad_sel && spi_get_csgpiod(spi, 0))
  		/* CS de-asserted, gpiolib will handle inversion */
  		gpiod_direction_output(spi_get_csgpiod(spi, 0), 0);
-@@ -1138,6 +1126,10 @@ static int mtk_spi_probe(struct platform
+@@ -1140,6 +1128,10 @@ static int mtk_spi_probe(struct platform
  	mdata = spi_master_get_devdata(master);
  	mdata->dev_comp = device_get_match_data(dev);
  
diff --git a/target/linux/mediatek/patches-6.6/434-drivers-spi-mt65xx-Add-controller-s-calibration-para.patch b/target/linux/mediatek/patches-6.6/434-drivers-spi-mt65xx-Add-controller-s-calibration-para.patch
index ee3dc27860..dbdb1947aa 100644
--- a/target/linux/mediatek/patches-6.6/434-drivers-spi-mt65xx-Add-controller-s-calibration-para.patch
+++ b/target/linux/mediatek/patches-6.6/434-drivers-spi-mt65xx-Add-controller-s-calibration-para.patch
@@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
 
 --- a/drivers/spi/spi-mt65xx.c
 +++ b/drivers/spi/spi-mt65xx.c
-@@ -832,6 +832,21 @@ static irqreturn_t mtk_spi_interrupt(int
+@@ -834,6 +834,21 @@ static irqreturn_t mtk_spi_interrupt(int
  	return IRQ_HANDLED;
  }
  
@@ -33,7 +33,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang at mediatek.com>
  static int mtk_spi_mem_adjust_op_size(struct spi_mem *mem,
  				      struct spi_mem_op *op)
  {
-@@ -1122,6 +1137,7 @@ static int mtk_spi_probe(struct platform
+@@ -1124,6 +1139,7 @@ static int mtk_spi_probe(struct platform
  	master->setup = mtk_spi_setup;
  	master->set_cs_timing = mtk_spi_set_hw_cs_timing;
  	master->use_gpio_descriptors = true;
diff --git a/target/linux/mediatek/patches-6.6/830-v6.7-39-thermal-lvts-Convert-to-platform-remove-callback-ret.patch b/target/linux/mediatek/patches-6.6/830-v6.7-39-thermal-lvts-Convert-to-platform-remove-callback-ret.patch
index b3bfa37458..29393a6891 100644
--- a/target/linux/mediatek/patches-6.6/830-v6.7-39-thermal-lvts-Convert-to-platform-remove-callback-ret.patch
+++ b/target/linux/mediatek/patches-6.6/830-v6.7-39-thermal-lvts-Convert-to-platform-remove-callback-ret.patch
@@ -29,7 +29,7 @@ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
 
 --- a/drivers/thermal/mediatek/lvts_thermal.c
 +++ b/drivers/thermal/mediatek/lvts_thermal.c
-@@ -1241,7 +1241,7 @@ static int lvts_probe(struct platform_de
+@@ -1243,7 +1243,7 @@ static int lvts_probe(struct platform_de
  	return 0;
  }
  
@@ -38,7 +38,7 @@ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
  {
  	struct lvts_domain *lvts_td;
  	int i;
-@@ -1252,8 +1252,6 @@ static int lvts_remove(struct platform_d
+@@ -1254,8 +1254,6 @@ static int lvts_remove(struct platform_d
  		lvts_ctrl_set_enable(&lvts_td->lvts_ctrl[i], false);
  
  	lvts_debugfs_exit(lvts_td);
@@ -47,7 +47,7 @@ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
  }
  
  static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
-@@ -1354,7 +1352,7 @@ MODULE_DEVICE_TABLE(of, lvts_of_match);
+@@ -1356,7 +1354,7 @@ MODULE_DEVICE_TABLE(of, lvts_of_match);
  
  static struct platform_driver lvts_driver = {
  	.probe = lvts_probe,
diff --git a/target/linux/mediatek/patches-6.6/830-v6.7-40-thermal-drivers-mediatek-lvts_thermal-Make-coeff-con.patch b/target/linux/mediatek/patches-6.6/830-v6.7-40-thermal-drivers-mediatek-lvts_thermal-Make-coeff-con.patch
index 16a32f564b..5871c87549 100644
--- a/target/linux/mediatek/patches-6.6/830-v6.7-40-thermal-drivers-mediatek-lvts_thermal-Make-coeff-con.patch
+++ b/target/linux/mediatek/patches-6.6/830-v6.7-40-thermal-drivers-mediatek-lvts_thermal-Make-coeff-con.patch
@@ -126,7 +126,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-4-linux at fw-web.de
  	bool should_update_thresh;
  
  	lvts_sensor->low_thresh = low;
-@@ -692,7 +701,7 @@ static int lvts_calibration_read(struct
+@@ -694,7 +703,7 @@ static int lvts_calibration_read(struct
  	return 0;
  }
  
@@ -135,7 +135,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-4-linux at fw-web.de
  {
  	u32 gt;
  
-@@ -701,7 +710,7 @@ static int lvts_golden_temp_init(struct
+@@ -703,7 +712,7 @@ static int lvts_golden_temp_init(struct
  	if (gt && gt < LVTS_GOLDEN_TEMP_MAX)
  		golden_temp = gt;
  
@@ -144,7 +144,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-4-linux at fw-web.de
  
  	return 0;
  }
-@@ -724,7 +733,7 @@ static int lvts_ctrl_init(struct device
+@@ -726,7 +735,7 @@ static int lvts_ctrl_init(struct device
  	 * The golden temp information is contained in the first chunk
  	 * of efuse data.
  	 */
@@ -153,7 +153,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-4-linux at fw-web.de
  	if (ret)
  		return ret;
  
-@@ -735,6 +744,7 @@ static int lvts_ctrl_init(struct device
+@@ -737,6 +746,7 @@ static int lvts_ctrl_init(struct device
  	for (i = 0; i < lvts_data->num_lvts_ctrl; i++) {
  
  		lvts_ctrl[i].base = lvts_td->base + lvts_data->lvts_ctrl[i].offset;
@@ -161,7 +161,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-4-linux at fw-web.de
  
  		ret = lvts_sensor_init(dev, &lvts_ctrl[i],
  				       &lvts_data->lvts_ctrl[i]);
-@@ -758,7 +768,8 @@ static int lvts_ctrl_init(struct device
+@@ -760,7 +770,8 @@ static int lvts_ctrl_init(struct device
  		 * after initializing the calibration.
  		 */
  		lvts_ctrl[i].hw_tshut_raw_temp =
@@ -171,7 +171,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-4-linux at fw-web.de
  
  		lvts_ctrl[i].low_thresh = INT_MIN;
  		lvts_ctrl[i].high_thresh = INT_MIN;
-@@ -1223,6 +1234,8 @@ static int lvts_probe(struct platform_de
+@@ -1225,6 +1236,8 @@ static int lvts_probe(struct platform_de
  	if (irq < 0)
  		return irq;
  
@@ -180,7 +180,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-4-linux at fw-web.de
  	ret = lvts_domain_init(dev, lvts_td, lvts_data);
  	if (ret)
  		return dev_err_probe(dev, ret, "Failed to initialize the lvts domain\n");
-@@ -1336,11 +1349,15 @@ static const struct lvts_ctrl_data mt819
+@@ -1338,11 +1351,15 @@ static const struct lvts_ctrl_data mt819
  static const struct lvts_data mt8195_lvts_mcu_data = {
  	.lvts_ctrl	= mt8195_lvts_mcu_data_ctrl,
  	.num_lvts_ctrl	= ARRAY_SIZE(mt8195_lvts_mcu_data_ctrl),
diff --git a/target/linux/mediatek/patches-6.6/830-v6.7-42-thermal-drivers-mediatek-lvts_thermal-Add-mt7988-sup.patch b/target/linux/mediatek/patches-6.6/830-v6.7-42-thermal-drivers-mediatek-lvts_thermal-Add-mt7988-sup.patch
index 97c803a820..b758720d24 100644
--- a/target/linux/mediatek/patches-6.6/830-v6.7-42-thermal-drivers-mediatek-lvts_thermal-Add-mt7988-sup.patch
+++ b/target/linux/mediatek/patches-6.6/830-v6.7-42-thermal-drivers-mediatek-lvts_thermal-Add-mt7988-sup.patch
@@ -33,7 +33,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-5-linux at fw-web.de
  #define LVTS_HW_SHUTDOWN_MT8195		105000
  
  #define LVTS_MINIMUM_THRESHOLD		20000
-@@ -1267,6 +1270,33 @@ static void lvts_remove(struct platform_
+@@ -1269,6 +1272,33 @@ static void lvts_remove(struct platform_
  	lvts_debugfs_exit(lvts_td);
  }
  
@@ -67,7 +67,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-5-linux at fw-web.de
  static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
  	{
  		.cal_offset = { 0x04, 0x07 },
-@@ -1346,6 +1376,13 @@ static const struct lvts_ctrl_data mt819
+@@ -1348,6 +1378,13 @@ static const struct lvts_ctrl_data mt819
  	}
  };
  
@@ -81,7 +81,7 @@ Link: https://lore.kernel.org/r/20230922055020.6436-5-linux at fw-web.de
  static const struct lvts_data mt8195_lvts_mcu_data = {
  	.lvts_ctrl	= mt8195_lvts_mcu_data_ctrl,
  	.num_lvts_ctrl	= ARRAY_SIZE(mt8195_lvts_mcu_data_ctrl),
-@@ -1361,6 +1398,7 @@ static const struct lvts_data mt8195_lvt
+@@ -1363,6 +1400,7 @@ static const struct lvts_data mt8195_lvt
  };
  
  static const struct of_device_id lvts_of_match[] = {
diff --git a/target/linux/mediatek/patches-6.6/830-v6.7-45-thermal-drivers-mediatek-lvts_thermal-Add-suspend-an.patch b/target/linux/mediatek/patches-6.6/830-v6.7-45-thermal-drivers-mediatek-lvts_thermal-Add-suspend-an.patch
index 7b4b124b56..0893db74a5 100644
--- a/target/linux/mediatek/patches-6.6/830-v6.7-45-thermal-drivers-mediatek-lvts_thermal-Add-suspend-an.patch
+++ b/target/linux/mediatek/patches-6.6/830-v6.7-45-thermal-drivers-mediatek-lvts_thermal-Add-suspend-an.patch
@@ -24,7 +24,7 @@ Link: https://lore.kernel.org/r/20231017190545.157282-3-bero at baylibre.com
 
 --- a/drivers/thermal/mediatek/lvts_thermal.c
 +++ b/drivers/thermal/mediatek/lvts_thermal.c
-@@ -1297,6 +1297,38 @@ static const struct lvts_ctrl_data mt798
+@@ -1299,6 +1299,38 @@ static const struct lvts_ctrl_data mt798
  	}
  };
  
@@ -63,7 +63,7 @@ Link: https://lore.kernel.org/r/20231017190545.157282-3-bero at baylibre.com
  static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
  	{
  		.cal_offset = { 0x04, 0x07 },
-@@ -1405,12 +1437,17 @@ static const struct of_device_id lvts_of
+@@ -1407,12 +1439,17 @@ static const struct of_device_id lvts_of
  };
  MODULE_DEVICE_TABLE(of, lvts_of_match);
  
diff --git a/target/linux/mediatek/patches-6.6/830-v6.7-47-thermal-drivers-mediatek-lvts_thermal-Add-mt8192-sup.patch b/target/linux/mediatek/patches-6.6/830-v6.7-47-thermal-drivers-mediatek-lvts_thermal-Add-mt8192-sup.patch
index 6d68a6cd57..1fe7e255b7 100644
--- a/target/linux/mediatek/patches-6.6/830-v6.7-47-thermal-drivers-mediatek-lvts_thermal-Add-mt8192-sup.patch
+++ b/target/linux/mediatek/patches-6.6/830-v6.7-47-thermal-drivers-mediatek-lvts_thermal-Add-mt8192-sup.patch
@@ -34,7 +34,7 @@ Link: https://lore.kernel.org/r/20231017190545.157282-4-bero at baylibre.com
  #define LVTS_HW_SHUTDOWN_MT8195		105000
  
  #define LVTS_MINIMUM_THRESHOLD		20000
-@@ -1329,6 +1330,88 @@ static int lvts_resume(struct device *de
+@@ -1331,6 +1332,88 @@ static int lvts_resume(struct device *de
  	return 0;
  }
  
@@ -123,7 +123,7 @@ Link: https://lore.kernel.org/r/20231017190545.157282-4-bero at baylibre.com
  static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
  	{
  		.cal_offset = { 0x04, 0x07 },
-@@ -1415,6 +1498,16 @@ static const struct lvts_data mt7988_lvt
+@@ -1417,6 +1500,16 @@ static const struct lvts_data mt7988_lvt
  	.temp_offset	= LVTS_COEFF_B_MT7988,
  };
  
@@ -140,7 +140,7 @@ Link: https://lore.kernel.org/r/20231017190545.157282-4-bero at baylibre.com
  static const struct lvts_data mt8195_lvts_mcu_data = {
  	.lvts_ctrl	= mt8195_lvts_mcu_data_ctrl,
  	.num_lvts_ctrl	= ARRAY_SIZE(mt8195_lvts_mcu_data_ctrl),
-@@ -1431,6 +1524,8 @@ static const struct lvts_data mt8195_lvt
+@@ -1433,6 +1526,8 @@ static const struct lvts_data mt8195_lvt
  
  static const struct of_device_id lvts_of_match[] = {
  	{ .compatible = "mediatek,mt7988-lvts-ap", .data = &mt7988_lvts_ap_data },
diff --git a/target/linux/mediatek/patches-6.6/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch b/target/linux/mediatek/patches-6.6/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch
index be63dbf761..6dede02003 100644
--- a/target/linux/mediatek/patches-6.6/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch
+++ b/target/linux/mediatek/patches-6.6/900-dts-mt7622-bpi-r64-aliases-for-dtoverlay.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
-@@ -311,7 +311,7 @@
+@@ -312,7 +312,7 @@
  	/* Attention: GPIO 90 is used to switch between PCIe at 1,0 and
  	 * SATA functions. i.e. output-high: PCIe, output-low: SATA
  	 */
diff --git a/target/linux/mediatek/patches-6.6/910-dts-mt7622-bpi-r64-wifi-eeprom.patch b/target/linux/mediatek/patches-6.6/910-dts-mt7622-bpi-r64-wifi-eeprom.patch
index 50a7e261f0..09ce417c35 100644
--- a/target/linux/mediatek/patches-6.6/910-dts-mt7622-bpi-r64-wifi-eeprom.patch
+++ b/target/linux/mediatek/patches-6.6/910-dts-mt7622-bpi-r64-wifi-eeprom.patch
@@ -1,6 +1,6 @@
 --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
 +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
-@@ -638,5 +638,28 @@
+@@ -639,5 +639,28 @@
  };
  
  &wmac {
diff --git a/target/linux/mediatek/patches-6.6/911-dts-mt7622-bpi-r64-add-rootdisk.patch b/target/linux/mediatek/patches-6.6/911-dts-mt7622-bpi-r64-add-rootdisk.patch
index 6b958ca1d4..4feb0e5d1a 100644
--- a/target/linux/mediatek/patches-6.6/911-dts-mt7622-bpi-r64-add-rootdisk.patch
+++ b/target/linux/mediatek/patches-6.6/911-dts-mt7622-bpi-r64-add-rootdisk.patch
@@ -10,7 +10,7 @@
  	};
  
  	cpus {
-@@ -233,6 +236,26 @@
+@@ -234,6 +237,26 @@
  	assigned-clocks = <&topckgen CLK_TOP_MSDC30_0_SEL>;
  	assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
  	non-removable;
@@ -37,7 +37,7 @@
  };
  
  &mmc1 {
-@@ -248,6 +271,26 @@
+@@ -249,6 +272,26 @@
  	vqmmc-supply = <&reg_3p3v>;
  	assigned-clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>;
  	assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
@@ -64,7 +64,7 @@
  };
  
  &nandc {
-@@ -281,15 +324,30 @@
+@@ -282,15 +325,30 @@
  				read-only;
  			};
  
diff --git a/target/linux/mediatek/patches-6.6/930-spi-mt65xx-enable-sel-clk.patch b/target/linux/mediatek/patches-6.6/930-spi-mt65xx-enable-sel-clk.patch
index 5a387e4d6c..eb25b99eb4 100644
--- a/target/linux/mediatek/patches-6.6/930-spi-mt65xx-enable-sel-clk.patch
+++ b/target/linux/mediatek/patches-6.6/930-spi-mt65xx-enable-sel-clk.patch
@@ -1,6 +1,6 @@
 --- a/drivers/spi/spi-mt65xx.c
 +++ b/drivers/spi/spi-mt65xx.c
-@@ -1226,8 +1226,15 @@ static int mtk_spi_probe(struct platform
+@@ -1228,8 +1228,15 @@ static int mtk_spi_probe(struct platform
  	if (ret < 0)
  		return dev_err_probe(dev, ret, "failed to enable hclk\n");
  
diff --git a/target/linux/mediatek/patches-6.6/941-arm64-dts-mt7986-move-cpuboot-in-a-dedicated-node.patch b/target/linux/mediatek/patches-6.6/941-arm64-dts-mt7986-move-cpuboot-in-a-dedicated-node.patch
index 6d75d6ed2a..e1f121eba1 100644
--- a/target/linux/mediatek/patches-6.6/941-arm64-dts-mt7986-move-cpuboot-in-a-dedicated-node.patch
+++ b/target/linux/mediatek/patches-6.6/941-arm64-dts-mt7986-move-cpuboot-in-a-dedicated-node.patch
@@ -24,7 +24,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	};
  
  	timer {
-@@ -544,10 +538,11 @@
+@@ -543,10 +537,11 @@
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
  			memory-region = <&wo_emi0>, <&wo_ilm0>, <&wo_dlm0>,
@@ -38,7 +38,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		};
  
  		wed1: wed at 15011000 {
-@@ -557,10 +552,11 @@
+@@ -556,10 +551,11 @@
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
  			memory-region = <&wo_emi1>, <&wo_ilm1>, <&wo_dlm1>,
@@ -52,7 +52,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		};
  
  		wo_ccif0: syscon at 151a5000 {
-@@ -577,6 +573,11 @@
+@@ -576,6 +572,11 @@
  			interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
  		};
  
diff --git a/target/linux/mediatek/patches-6.6/945-arm64-dts-mt7986-move-ilm-in-a-dedicated-node.patch b/target/linux/mediatek/patches-6.6/945-arm64-dts-mt7986-move-ilm-in-a-dedicated-node.patch
index 65c143e2f5..08c76cf44b 100644
--- a/target/linux/mediatek/patches-6.6/945-arm64-dts-mt7986-move-ilm-in-a-dedicated-node.patch
+++ b/target/linux/mediatek/patches-6.6/945-arm64-dts-mt7986-move-ilm-in-a-dedicated-node.patch
@@ -34,7 +34,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  		wo_data: wo-data at 4fd80000 {
  			reg = <0 0x4fd80000 0 0x240000>;
  			no-map;
-@@ -537,11 +527,10 @@
+@@ -536,11 +526,10 @@
  			reg = <0 0x15010000 0 0x1000>;
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
@@ -49,7 +49,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mediatek,wo-cpuboot = <&wo_cpuboot>;
  		};
  
-@@ -551,11 +540,10 @@
+@@ -550,11 +539,10 @@
  			reg = <0 0x15011000 0 0x1000>;
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
@@ -64,7 +64,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mediatek,wo-cpuboot = <&wo_cpuboot>;
  		};
  
-@@ -573,6 +561,16 @@
+@@ -572,6 +560,16 @@
  			interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
  		};
  
diff --git a/target/linux/mediatek/patches-6.6/946-arm64-dts-mt7986-move-dlm-in-a-dedicated-node.patch b/target/linux/mediatek/patches-6.6/946-arm64-dts-mt7986-move-dlm-in-a-dedicated-node.patch
index c8a6bdea6a..a44d006c53 100644
--- a/target/linux/mediatek/patches-6.6/946-arm64-dts-mt7986-move-dlm-in-a-dedicated-node.patch
+++ b/target/linux/mediatek/patches-6.6/946-arm64-dts-mt7986-move-dlm-in-a-dedicated-node.patch
@@ -34,7 +34,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  	};
  
  	timer {
-@@ -527,10 +517,11 @@
+@@ -526,10 +516,11 @@
  			reg = <0 0x15010000 0 0x1000>;
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
@@ -48,7 +48,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mediatek,wo-cpuboot = <&wo_cpuboot>;
  		};
  
-@@ -540,10 +531,11 @@
+@@ -539,10 +530,11 @@
  			reg = <0 0x15011000 0 0x1000>;
  			interrupt-parent = <&gic>;
  			interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
@@ -62,7 +62,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
  			mediatek,wo-cpuboot = <&wo_cpuboot>;
  		};
  
-@@ -571,6 +563,16 @@
+@@ -570,6 +562,16 @@
  			reg = <0 0x151f0000 0 0x8000>;
  		};
  
diff --git a/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch b/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
index ed37601020..dc009cd414 100644
--- a/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
+++ b/target/linux/qualcommax/patches-6.6/0111-arm64-dts-qcom-ipq8074-use-msi-parent-for-PCIe.patch
@@ -30,7 +30,7 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 +			msi-parent = <&gic_v2m0>;
  			#interrupt-cells = <1>;
  			interrupt-map-mask = <0 0 0 0x7>;
- 			interrupt-map = <0 0 0 1 &intc 0 142
+ 			interrupt-map = <0 0 0 1 &intc 0 0 142
 @@ -930,8 +929,7 @@
  			ranges = <0x81000000 0x0 0x00000000 0x20200000 0x0 0x10000>,   /* I/O */
  				 <0x82000000 0x0 0x20220000 0x20220000 0x0 0xfde0000>; /* MEM */
@@ -40,4 +40,4 @@ Signed-off-by: Robert Marko <robimarko at gmail.com>
 +			msi-parent = <&gic_v2m0>;
  			#interrupt-cells = <1>;
  			interrupt-map-mask = <0 0 0 0x7>;
- 			interrupt-map = <0 0 0 1 &intc 0 75
+ 			interrupt-map = <0 0 0 1 &intc 0 0 75



From lede-commits at lists.infradead.org  Sun Mar 31 10:06:42 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 13:06:42 -0400
Subject: [openwrt/openwrt]  mediatek: Moved recovery image creation to
 include/image-commands.mk
In-Reply-To: <171190480108.861175.5694866121820648143@git-01.infra.openwrt.org>
References: <171190480108.861175.5694866121820648143@git-01.infra.openwrt.org>
Message-ID: <mailman.22029.1711904805.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0e2b7e3bd674d2dd69ed8daf483cac5509cec9f0

commit 0e2b7e3bd674d2dd69ed8daf483cac5509cec9f0
Author: Roland Reinl <reinlroland+github at gmail.com>
AuthorDate: Sat Mar 30 17:59:14 2024 +0100

    mediatek: Moved recovery image creation to include/image-commands.mk
    
    The recovery image is reqired for D-Link M30 as well. So I moved it to include/image-commands.mk to be able to use it for MT7622 and filogic devices.
    
    Signed-off-by: Roland Reinl <reinlroland+github at gmail.com>
---
 include/image-commands.mk             | 37 +++++++++++++++++++++++++++++++++++
 target/linux/mediatek/image/mt7622.mk | 31 ++---------------------------
 2 files changed, 39 insertions(+), 29 deletions(-)

diff --git a/include/image-commands.mk b/include/image-commands.mk
index 79a64f4bc1..832c85ee70 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -244,6 +244,43 @@ define Build/copy-file
 	cat "$(1)" > "$@"
 endef
 
+# Create a header for a D-Link AI series recovery image and add it at the beginning of the image
+# Currently supported: AQUILA M30, EAGLE M32 and R32
+# Arguments:
+# 1: Start string of the header
+# 2: Firmware version
+# 3: Block start address
+# 4: Block length
+# 5: Device FMID
+define Build/dlink-ai-recovery-header
+	$(eval header_start=$(word 1,$(1)))
+	$(eval firmware_version=$(word 2,$(1)))
+	$(eval block_start=$(word 3,$(1)))
+	$(eval block_length=$(word 4,$(1)))
+	$(eval device_fmid=$(word 5,$(1)))
+# create $@.header without the checksum
+	echo -en "$(header_start)\x00\x00" > "$@.header"
+# Calculate checksum over data area ($@) and append it to the header.
+# The checksum is the 2byte-sum over the whole data area.
+# Every overflow during the checksum calculation must increment the current checksum value by 1.
+	od -v -w2 -tu2 -An --endian little "$@" | awk '{ s+=$$1; } END { s%=65535; printf "%c%c",s%256,s/256; }' >> "$@.header"
+	echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00" >> "$@.header"
+	echo -en "$(firmware_version)" >> "$@.header"
+# Only one block supported: Erase start/length is identical to data start/length
+	echo -en "$(block_start)$(block_length)$(block_start)$(block_length)" >> "$@.header"
+# Only zeros
+	echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" >> "$@.header"
+# Last 16 bytes, but without checksum
+	echo -en "\x42\x48\x02\x00\x00\x00\x08\x00\x00\x00\x00\x00" >> "$@.header"
+	echo -en "$(device_fmid)" >> "$@.header"
+# Calculate and append checksum: The checksum must be set so that the 2byte-sum of the whole header is 0.
+# Every overflow during the checksum calculation must increment the current checksum value by 1.
+	od -v -w2 -tu2 -An --endian little "$@.header" | awk '{s+=65535-$$1;}END{s%=65535;printf "%c%c",s%256,s/256;}' >> "$@.header"
+	cat "$@.header" "$@" > "$@.new"
+	mv "$@.new" "$@"
+	rm "$@.header"
+endef
+
 define Build/dlink-sge-image
 	$(STAGING_DIR_HOST)/bin/dlink-sge-image $(1) $@ $@.enc
 	mv $@.enc $@
diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk
index 096a923457..441e29a1dc 100644
--- a/target/linux/mediatek/image/mt7622.mk
+++ b/target/linux/mediatek/image/mt7622.mk
@@ -52,33 +52,6 @@ define Build/uboot-fit
 	@mv $@.new $@
 endef
 
-# Append header to a D-Link M32/R32 Kernel 1 partition
-define Build/m32-r32-recovery-header-kernel1
-	$(eval header_start=$(word 1,$(1)))
-# create $@.header without the checksum
-	echo -en "$(header_start)\x00\x00" > "$@.header"
-# Calculate checksum over data area ($@) and append it to the header.
-# The checksum is the 2byte-sum over the whole data area.
-# Every overflow during the checksum calculation must increment the current checksum value by 1.
-	od -v -w2 -tu2 -An --endian little "$@" | awk '{ s+=$$1; } END { s%=65535; printf "%c%c",s%256,s/256; }' >> "$@.header"
-	echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x8D\x57\x30\x0B" >> "$@.header"
-# Byte 0-3: Erase Start 0x002C0000
-# Byte 4-7: Erase Length 0x02D00000
-# Byte 8-11: Data offset: 0x002C0000
-# Byte 12-15: Data Length: 0x02D00000
-	echo -en "\x00\x00\x2C\x00\x00\x00\xD0\x02\x00\x00\x2C\x00\x00\x00\xD0\x02" >> "$@.header"
-# Only zeros
-	echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" >> "$@.header"
-# Last 16 bytes, but without checksum
-	echo -en "\x42\x48\x02\x00\x00\x00\x08\x00\x00\x00\x00\x00\x60\x6E" >> "$@.header"
-# Calculate and append checksum: The checksum must be set so that the 2byte-sum of the whole header is 0.
-# Every overflow during the checksum calculation must increment the current checksum value by 1.
-	od -v -w2 -tu2 -An --endian little "$@.header" | awk '{s+=65535-$$1;}END{s%=65535;printf "%c%c",s%256,s/256;}' >> "$@.header"
-	cat "$@.header" "$@" > "$@.new"
-	mv "$@.new" "$@"
-	rm "$@.header"
-endef
-
 define Build/mt7622-gpt
 	cp $@ $@.tmp 2>/dev/null || true
 	ptgen -g -o $@.tmp -a 1 -l 1024 \
@@ -210,7 +183,7 @@ define Device/dlink_eagle-pro-ai-m32-a1
   $(Device/dlink_eagle-pro-ai-ax3200-a1)
   DEVICE_MODEL := EAGLE PRO AI M32
   DEVICE_DTS := mt7622-dlink-eagle-pro-ai-m32-a1
-  IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | pad-to $$(IMAGE_SIZE) | m32-r32-recovery-header-kernel1 DLK6E6010001
+  IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | pad-to $$(IMAGE_SIZE) | dlink-ai-recovery-header DLK6E6010001 \x8D\x57\x30\x0B \x00\x00\x2C\x00 \x00\x00\xD0\x02 \x60\x6E
 endef
 TARGET_DEVICES += dlink_eagle-pro-ai-m32-a1
 
@@ -218,7 +191,7 @@ define Device/dlink_eagle-pro-ai-r32-a1
   $(Device/dlink_eagle-pro-ai-ax3200-a1)
   DEVICE_MODEL := EAGLE PRO AI R32
   DEVICE_DTS := mt7622-dlink-eagle-pro-ai-r32-a1
-  IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | pad-to $$(IMAGE_SIZE) | m32-r32-recovery-header-kernel1 DLK6E6015001
+  IMAGE/recovery.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | pad-to $$(IMAGE_SIZE) | dlink-ai-recovery-header DLK6E6015001 \x8D\x57\x30\x0B \x00\x00\x2C\x00 \x00\x00\xD0\x02 \x60\x6E
 endef
 TARGET_DEVICES += dlink_eagle-pro-ai-r32-a1
 



From lede-commits at lists.infradead.org  Sun Mar 31 10:06:41 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 13:06:41 -0400
Subject: [openwrt/openwrt]  filogic: Add LED driver for GCA230718
In-Reply-To: <171190480108.861175.5694866121820648143@git-01.infra.openwrt.org>
References: <171190480108.861175.5694866121820648143@git-01.infra.openwrt.org>
Message-ID: <mailman.22030.1711904806.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0682974aa8da4855ca373d195cb6365913fc1f8e

commit 0682974aa8da4855ca373d195cb6365913fc1f8e
Author: Roland Reinl <reinlroland+github at gmail.com>
AuthorDate: Tue Dec 26 08:31:15 2023 +0100

    filogic: Add LED driver for GCA230718
    
    Add basic support for the LED driver for GCA230718.
    
     - I didn't find any documentation or driver for it, so the information below is purely based on my investigations
     - If there is already I driver for it, please tell me. Maybe I didn't search enough
     - I implemented a kernel module (leds-gca230718) to access the LEDs via DTS
     - The LED controller supports PWM for brightness control and ramp control for smooth blinking. This is not implemented in the driver
     - The LED controller supports toggling (on -> off -> on -> off) where the brightness of the LEDs can be set individually for each on cycle
     - Until now, only simple active/inactive control is implemented (like when the LEDs would have been connected via GPIO)
     - Controlling the LEDs requires three sequences sent to the chip. Each sequence consists of
       - A reset command (0x81 0xE4) written to register 0x00
       - A control command (for example 0x0C 0x02 0x01 0x00 0x00 0x00 0xFF 0x01 0x00 0x00 0x00 0xFF 0x87 written to register 0x03)
     - The reset command is always the same
     - In the control command
       - byte 0 is always the same
       - byte 1 (0x02 in the example above) must be changed in every sequence: 0x02 -> 0x01 -> 0x03)
       - byte 2 is set to 0x01 which disables toggling. 0x02 would be LED toggling without ramp control, 0x03 would be toggling with ramp control
       - byte 3 to 6 define the brightness values for the LEDs (R,G,B,W) for the first on cycle when toggling
       - byte 7 defines the toggling frequency (if toggling enabled)
       - byte 8 to 11 define the brightness values for the LEDs (R,G,B,W) for the second on cycle when toggling
       - byte 12 is constant 0x87
    
    Signed-off-by: Roland Reinl <reinlroland+github at gmail.com>
---
 package/kernel/leds-gca230718/Makefile             |  34 +++
 package/kernel/leds-gca230718/src/Makefile         |   1 +
 package/kernel/leds-gca230718/src/leds-gca230718.c | 227 +++++++++++++++++++++
 3 files changed, 262 insertions(+)

diff --git a/package/kernel/leds-gca230718/Makefile b/package/kernel/leds-gca230718/Makefile
new file mode 100644
index 0000000000..a1ae3bc319
--- /dev/null
+++ b/package/kernel/leds-gca230718/Makefile
@@ -0,0 +1,34 @@
+#
+# Copyright (C) 2008-2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=leds-gca230718
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-2.0
+
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/leds-gca230718
+  SUBMENU:=LED modules
+  TITLE:=GCA230718 LED support (e.g. for D-Link M30)
+  FILES:= \
+	$(PKG_BUILD_DIR)/leds-gca230718.ko
+  AUTOLOAD:=$(call AutoProbe,leds-gca230718,1)
+  DEPENDS:=@TARGET_mediatek_filogic
+endef
+
+define KernelPackage/leds-gca230718/description
+  GCA230718 LED support (e.g. for D-Link M30) using I2C.
+endef
+
+define Build/Compile
+	$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" modules
+endef
+
+$(eval $(call KernelPackage,leds-gca230718))
diff --git a/package/kernel/leds-gca230718/src/Makefile b/package/kernel/leds-gca230718/src/Makefile
new file mode 100644
index 0000000000..eaa4eef219
--- /dev/null
+++ b/package/kernel/leds-gca230718/src/Makefile
@@ -0,0 +1 @@
+obj-m := leds-gca230718.o
diff --git a/package/kernel/leds-gca230718/src/leds-gca230718.c b/package/kernel/leds-gca230718/src/leds-gca230718.c
new file mode 100644
index 0000000000..d759453cd9
--- /dev/null
+++ b/package/kernel/leds-gca230718/src/leds-gca230718.c
@@ -0,0 +1,227 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * GCA230718 LED support (e.g. for D-Link M30) using I2C
+ *
+ * Copyright 2022 Roland Reinl <reinlroland+github at gmail.com>
+ *
+ * This driver can control RGBW LEDs which are connected to a GCA230718.
+ */
+
+#include <linux/delay.h>
+#include <linux/led-class-multicolor.h>
+#include <linux/leds.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/property.h>
+#include <linux/i2c.h>
+#include <linux/mutex.h>
+#include <linux/version.h>
+
+#define GCA230718_MAX_LEDS                                      (4u)
+
+#define GCA230718_OPMODE_DISABLED                               (0x00u)
+#define GCA230718_OPMODE_NO_TOGGLE                              (0x01u)
+#define GCA230718_OPMODE_TOGGLE_RAMP_CONTROL_DISABLED           (0x02u)
+#define GCA230718_OPMODE_TOGGLE_RAMP_CONTROL_ENSABLED           (0x03u)
+
+#define GCA230718_1ST_SEQUENCE_BYTE_1                           (0x02u)
+#define GCA230718_2ND_SEQUENCE_BYTE_1                           (0x01u)
+#define GCA230718_3RD_SEQUENCE_BYTE_1                           (0x03u)
+
+struct gca230718_led
+{
+	enum led_brightness brightness;
+	struct i2c_client *client;
+	struct led_classdev ledClassDev;
+};
+
+struct gca230718_private
+{
+	struct mutex lock;
+	struct gca230718_led leds[GCA230718_MAX_LEDS];
+};
+
+static void gca230718_init_private_led_data(struct gca230718_private* data)
+{
+	u8 ledIndex;
+	for (ledIndex = 0; ledIndex < GCA230718_MAX_LEDS; ledIndex++)
+	{
+		data->leds[ledIndex].client = NULL;
+	}
+}
+
+static void gca230718_send_sequence(struct i2c_client *client, u8 byte0, struct gca230718_private* gca230718_privateData)
+{
+	int status = 0;
+	u8 ledIndex;
+	const u8 resetCommand[2] = { 0x81, 0xE4 };
+	const u8 resetCommandRegister = 0x00;
+
+	u8 controlCommand[13];
+	const u8 controlCommandRegister = 0x03;
+
+	controlCommand[0] = 0x0C; /* Unknown */
+	controlCommand[1] = byte0;
+	controlCommand[2] = GCA230718_OPMODE_NO_TOGGLE;
+	/* Byte 3-6 are set below to the brighness value of the individual LEDs */
+	controlCommand[7] = 0x01; /* Frequency, doesn't care as long as GCA230718_OPMODE_NO_TOGGLE is used above */
+	/* Byte 8-11 are set below to the brighness value of the individual LEDs */
+	controlCommand[12] = 0x87;
+
+	for (ledIndex = 0; ledIndex < GCA230718_MAX_LEDS; ledIndex++)
+	{
+		controlCommand[3 + ledIndex] = gca230718_privateData->leds[ledIndex].brightness;
+		controlCommand[8 + ledIndex] = gca230718_privateData->leds[ledIndex].brightness;
+	}
+
+	mutex_lock(&(gca230718_privateData->lock));
+
+	if ((status = i2c_smbus_write_i2c_block_data(client, resetCommandRegister, sizeof(resetCommand), resetCommand)) != 0)
+	{
+		pr_info("Error %i during call of i2c_smbus_write_i2c_block_data for reset command\n", status);
+	}
+	else if ((status = i2c_smbus_write_i2c_block_data(client, controlCommandRegister, sizeof(controlCommand), controlCommand)) != 0)
+	{
+		pr_info("Error %i during call of i2c_smbus_write_i2c_block_data for control command\n", status);
+	}
+
+	mutex_unlock(&(gca230718_privateData->lock));
+}
+
+static int gca230718_set_brightness(struct led_classdev *led_cdev, enum led_brightness value)
+{
+	struct gca230718_led* led;
+	struct i2c_client* client;
+
+	led = container_of(led_cdev, struct gca230718_led, ledClassDev);
+	client = led->client;
+
+	if (client != NULL)
+	{
+		struct gca230718_private* gca230718_privateData;
+
+		led->brightness = value;
+		gca230718_privateData = i2c_get_clientdata(client);
+
+		gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1, gca230718_privateData);
+	}
+
+	return 0;
+}
+
+static int gca230718_probe(struct i2c_client *client, const struct i2c_device_id *id)
+{
+	int status = 0;
+	struct gca230718_private* gca230718_privateData;
+
+	pr_info("Enter gca230718_probe for device address %u\n", client->addr);
+	gca230718_privateData = devm_kzalloc(&(client->dev), sizeof(struct gca230718_private), GFP_KERNEL);
+
+	if (gca230718_privateData == NULL)
+	{
+		pr_info("Error during allocating memory for private data\n");
+		status = -ENOMEM;
+	}
+	else
+	{
+		struct device_node* ledNode;
+		mutex_init(&gca230718_privateData->lock);
+		gca230718_init_private_led_data(gca230718_privateData);
+		i2c_set_clientdata(client, gca230718_privateData);
+
+		for_each_child_of_node(client->dev.of_node, ledNode)
+		{
+			u32 regValue = 0;
+			if (of_property_read_u32(ledNode, "reg", &regValue) != 0)
+			{
+				pr_info("Missing entry \"reg\" in node %s\n", ledNode->name); 
+			}
+			else if (regValue >= GCA230718_MAX_LEDS)
+			{
+				pr_info("Invalid entry \"reg\" in node %s (%u)\n", ledNode->name, regValue);
+			}
+			else
+			{
+				struct led_classdev* ledClassDev = &(gca230718_privateData->leds[regValue].ledClassDev);
+				struct led_init_data init_data = {};
+
+				gca230718_privateData->leds[regValue].client = client;
+				init_data.fwnode = of_fwnode_handle(ledNode);
+
+				pr_info("Creating LED for node %s: reg=%u\n", ledNode->name, regValue); 
+
+				ledClassDev->name = of_get_property(ledNode, "label", NULL);
+				if (ledClassDev->name == NULL)
+				{
+					ledClassDev->name = ledNode->name;
+				}
+
+				ledClassDev->brightness = LED_OFF;
+				ledClassDev->max_brightness = LED_FULL;
+				ledClassDev->brightness_set_blocking = gca230718_set_brightness;
+	
+				if (devm_led_classdev_register_ext(&(client->dev), ledClassDev, &init_data) != 0)
+				{
+					pr_info("Error during call of devm_led_classdev_register_ext");
+				}
+			}
+		}
+	}
+
+	if (status == 0)
+	{
+		/* 
+		Send full initialization sequence.
+		Afterwards only GCA230718_2ND_SEQUENCE_BYTE_1 must be send to upddate the brightness values.
+		*/
+		gca230718_send_sequence(client, GCA230718_1ST_SEQUENCE_BYTE_1, gca230718_privateData);
+		gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1, gca230718_privateData);
+		gca230718_send_sequence(client, GCA230718_3RD_SEQUENCE_BYTE_1, gca230718_privateData);
+	}
+
+	return status;
+}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,18,0)
+static void gca230718_remove(struct i2c_client *client)
+#else
+static int gca230718_remove(struct i2c_client *client)
+#endif
+{
+	struct gca230718_private* gca230718_privateData;
+	gca230718_privateData = i2c_get_clientdata(client);
+	mutex_destroy(&gca230718_privateData->lock);
+	gca230718_init_private_led_data(gca230718_privateData);
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
+	return 0;
+#endif
+}
+
+static const struct i2c_device_id gca230718_i2c_ids[] = {
+	{ "gca230718", 0 },
+	{},
+};
+MODULE_DEVICE_TABLE(i2c, gca230718_i2c_ids);
+
+static const struct of_device_id gca230718_dt_ids[] = {
+	{ .compatible = "unknown,gca230718" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, gca230718_dt_ids);
+
+static struct i2c_driver gca230718_driver = {
+	.probe		= gca230718_probe,
+	.remove		= gca230718_remove,
+	.id_table	= gca230718_i2c_ids,
+	.driver = {
+		.name		= KBUILD_MODNAME,
+		.of_match_table	= gca230718_dt_ids,
+	},
+};
+
+module_i2c_driver(gca230718_driver);
+
+MODULE_AUTHOR("Roland Reinl <reinlroland+github at gmail.com>");
+MODULE_DESCRIPTION("GCA230718 LED support (e.g. for D-Link M30) using I2C");
+MODULE_LICENSE("GPL");



From lede-commits at lists.infradead.org  Sun Mar 31 10:06:43 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 13:06:43 -0400
Subject: [openwrt/openwrt]  filogic: Add support for D-Link AQUILA PRO AI M30
In-Reply-To: <171190480108.861175.5694866121820648143@git-01.infra.openwrt.org>
References: <171190480108.861175.5694866121820648143@git-01.infra.openwrt.org>
Message-ID: <mailman.22031.1711904810.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/29cca6cfee4bc732f9bf7eca0cae9e56cd3c0f2f

commit 29cca6cfee4bc732f9bf7eca0cae9e56cd3c0f2f
Author: Roland Reinl <reinlroland+github at gmail.com>
AuthorDate: Sun Dec 24 14:42:23 2023 +0100

    filogic: Add support for D-Link AQUILA PRO AI M30
    
    Specification:
     - MT7981 CPU using 2.4GHz and 5GHz WiFi (both AX)
     - MT7531 switch
     - 512MB RAM
     - 128MB NAND flash with two UBI partitions with identical size
     - 1 multi color LED (red, green, blue, white) connected via GCA230718
     - 3 buttons (WPS, reset, LED on/off)
     - 1 1Gbit WAN port
     - 4 1Gbit LAN ports
    
    Disassembly:
     - There are four screws at the bottom: 2 under the rubber feets, 2 under the label.
     - After removing the screws, the white plastic part can be shifted out of the blue part.
     - Be careful because the antennas are mounted on the side and the top of the white part.
    
    Serial Interface
     - The serial interface can be connected to the 4 pin holes on the side of the board.
     - Pins (from front to rear):
       - 3.3V
       - RX
       - TX
       - GND
     - Settings: 115200, 8N1
    
    MAC addresses:
     - WAN MAC is stored in partition "Odm" at offset 0x81
     - LAN (as printed on the device) is WAN MAC + 1
     - WLAN MAC (2.4 GHz) is WAN MAC + 2
     - WLAN MAC (5GHz) is WAN MAC + 3
    
    Flashing via Recovery Web Interface:
     - The recovery web interface always flashes to the currently active partition.
     - If OpenWrt is flahsed to the second partition, it will not boot.
     - Ensure that you have an OEM image available (encrypted and decrypted version). Decryption is described in the end.
     - Set your IP address to 192.168.200.10, subnetmask 255.255.255.0
     - Press the reset button while powering on the device
     - Keep the reset button pressed until the LED blinks red
     - Open a Chromium based and goto http://192.168.200.1 (recovery web interface)
     - Download openwrt-mediatek-filogic-dlink_aquila-pro-ai-m30-a1-squashfs-recovery.bin
     - The recovery web interface always reports successful flashing, even if it fails
     - After flashing, the recovery web interface will try to forward the browser to 192.168.0.1 (can be ignored)
     - If OpenWrt was flashed to the first partition, OpenWrt will boot (The status LED will start blinking white and stay white in the end). In this case you're done and can use OpenWrt.
     - If OpenWrt was flashed to the second partition, OpenWrt won't boot (The status LED will stay red forever). In this case, the following steps are reuqired:
       - Start the web recovery interface again and flash the **decrypted OEM image**. This will be flashed to the second partition as well. The OEM firmware web interface is afterwards accessible via http://192.168.200.1.
       - Now flash the **encrypted OEM image** via OEM firmware web interface. In this case, the new firmware is flashed to the first partition. After flashing and the following reboot, the OEM firmware web interface should still be accessible via http://192.168.200.1.
       - Start the web recovery interface again and flash the OpenWrt recovery image. Now it will be flashed to the first partition, OpenWrt will boot correctly afterwards and is accessible via 192.168.1.1.
    
    Flashing via U-Boot:
     - Open the case, connect to the UART console
     - Set your IP address to 192.168.200.2, subnet mask 255.255.255.0. Connect to one of the LAN interfaces of the router
     - Run a tftp server which provides openwrt-mediatek-filogic-dlink_aquila-pro-ai-m30-a1-initramfs-kernel.bin.
     - Power on the device and select "7. Load image" in the U-Boot menu
     - Enter image file, tftp server IP and device IP (if they differ from the default).
     - TFTP download to RAM will start. After a few seconds OpenWrt initramfs should start
     - The initramfs is accessible via 192.168.1.1, change your IP address accordingly (or use multiple IP addresses on your interface)
     - Perform a sysupgrade using openwrt-mediatek-filogic-dlink_aquila-pro-ai-m30-a1-squashfs-sysupgrade.bin
     - Reboot the device. OpenWrt should start from flash now
    
    Revert back to stock using the Recovery Web Interface:
     - Set your IP address to 192.168.200.2, subnetmask 255.255.255.0
     - Press the reset button while powering on the device
     - Keep the reset button pressed until the LED blinks red
     - Open a Chromium based and goto http://192.168.200.1 (recovery web interface)
     - Flash a decrypted firmware image from D-Link. Decrypting an firmware image is described below.
    
    Decrypting a D-Link firmware image:
     - Download https://github.com/RolandoMagico/firmware-utils/blob/M32/src/m32-firmware-util.c
     - Compile a binary from the downloaded file, e.g. gcc m32-firmware-util.c -lcrypto -o m32-firmware-util
     - Run ./m32-firmware-util M30 --DecryptFactoryImage <OriginalFirmware> <OutputFile>
     - Example for firmware M30A1_FW101B05: ./m32-firmware-util M30 --DecryptFactoryImage M30A1_FW101B05\(0725091522\).bin M30A1_FW101B05\(0725091522\)_decrypted.bin
    
    Flashing via OEM web interface is not possible, as it will change the active partition and OpenWrt is only running on the first UBI partition.
    
    Controlling the LEDs:
     - The LEDs are controlled by a chip called "GCA230718" which is connected to the main CPU via I2C (address 0x40)
     - I didn't find any documentation or driver for it, so the information below is purely based on my investigations
     - If there is already I driver for it, please tell me. Maybe I didn't search enough
     - I implemented a kernel module (leds-gca230718) to access the LEDs via DTS
     - The LED controller supports PWM for brightness control and ramp control for smooth blinking. This is not implemented in the driver
     - The LED controller supports toggling (on -> off -> on -> off) where the brightness of the LEDs can be set individually for each on cycle
     - Until now, only simple active/inactive control is implemented (like when the LEDs would have been connected via GPIO)
     - Controlling the LEDs requires three sequences sent to the chip. Each sequence consists of
       - A reset command (0x81 0xE4) written to register 0x00
       - A control command (for example 0x0C 0x02 0x01 0x00 0x00 0x00 0xFF 0x01 0x00 0x00 0x00 0xFF 0x87 written to register 0x03)
     - The reset command is always the same
     - In the control command
       - byte 0 is always the same
       - byte 1 (0x02 in the example above) must be changed in every sequence: 0x02 -> 0x01 -> 0x03)
       - byte 2 is set to 0x01 which disables toggling. 0x02 would be LED toggling without ramp control, 0x03 would be toggling with ramp control
       - byte 3 to 6 define the brightness values for the LEDs (R,G,B,W) for the first on cycle when toggling
       - byte 7 defines the toggling frequency (if toggling enabled)
       - byte 8 to 11 define the brightness values for the LEDs (R,G,B,W) for the second on cycle when toggling
       - byte 12 is constant 0x87
    
    Comparison to M32/R32:
     - The algorithms for decrypting the OEM firmware are the same for M30/M32/R32, only the keys differ
     - The keys are available in the GPL sources for the M32
     - The M32/R32 contained raw data in the firmware images (kernel, rootfs), the R30 uses a sysupgrade tar instead
     - Creation of the recovery image is quite similar, only the header start string changes. So mostly takeover from M32/R32 for that.
     - Turned out that the bytes at offset 0x0E and 0x0F in the recovery image header are the checksum over the data area
     - This checksum was not checked in the recovery web interface of M32/R32 devices, but is now active in R30
     - I adapted the recovery image creation to also calculate the checksum over the data area
     - The recovery image header for M30 contains addresses which don't match the memory layout in the DTS. The same addresses are also present in the OEM images
     - The recovery web interface either calculates the correct addresses from it or has it's own logic to determine where which information must be written
    
    Signed-off-by: Roland Reinl <reinlroland+github at gmail.com>
---
 package/boot/uboot-envtools/files/mediatek_filogic |   3 +
 .../dts/mt7981b-dlink-aquila-pro-ai-m30-a1.dts     | 310 +++++++++++++++++++++
 .../filogic/base-files/etc/board.d/02_network      |   3 +
 .../etc/hotplug.d/ieee80211/11_fix_wifi_mac        |   4 +
 .../filogic/base-files/etc/init.d/bootcount        |   7 +
 target/linux/mediatek/image/filogic.mk             |  15 +
 6 files changed, 342 insertions(+)

diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic
index 972ad293ac..64c9d045d8 100644
--- a/package/boot/uboot-envtools/files/mediatek_filogic
+++ b/package/boot/uboot-envtools/files/mediatek_filogic
@@ -73,6 +73,9 @@ zbtlink,zbt-z8102ax|\
 zbtlink,zbt-z8103ax)
 	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
 	;;
+dlink,aquila-pro-ai-m30-a1)
+	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000"
+	;;
 h3c,magic-nx30-pro|\
 jcg,q30-pro|\
 netcore,n60|\
diff --git a/target/linux/mediatek/dts/mt7981b-dlink-aquila-pro-ai-m30-a1.dts b/target/linux/mediatek/dts/mt7981b-dlink-aquila-pro-ai-m30-a1.dts
new file mode 100644
index 0000000000..dc14fce2b6
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-dlink-aquila-pro-ai-m30-a1.dts
@@ -0,0 +1,310 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+
+#include "mt7981.dtsi"
+
+/ {
+	model = "D-Link AQUILA PRO AI M30 A1";
+	compatible = "dlink,aquila-pro-ai-m30-a1", "mediatek,mt7981";
+
+	aliases {
+		label-mac-device = &gmac0;
+		led-boot = &led_status_white;
+		led-failsafe = &led_status_red;
+		led-running = &led_status_white;
+		led-upgrade = &led_status_blue;
+		serial0 = &uart0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		button-reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 0 GPIO_ACTIVE_LOW>;
+		};
+
+		button-wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+		};
+
+		button-leds-on-off {
+			label = "leds-on-off";
+			linux,code = <KEY_LIGHTS_TOGGLE>;
+			gpios = <&pio 4 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio_pins>;
+
+	status = "okay";
+
+	gmac0: mac at 0 {
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+
+		nvmem-cells = <&macaddr_odm 1>;
+		nvmem-cell-names = "mac-address";
+
+		fixed-link {
+			speed = <2500>;
+			full-duplex;
+			pause;
+		};
+	};
+
+	gmac1: mac at 1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&int_gbe_phy>;
+		label = "internet";
+
+		nvmem-cells = <&macaddr_odm 0>;
+		nvmem-cell-names = "mac-address";
+	};
+};
+
+&mdio_bus {
+	switch: switch at 1f {
+		compatible = "mediatek,mt7531";
+		reg = <31>;
+		reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port at 0 {
+				reg = <0>;
+				label = "lan1";
+			};
+
+			port at 1 {
+				reg = <1>;
+				label = "lan2";
+			};
+
+			port at 2 {
+				reg = <2>;
+				label = "lan3";
+			};
+
+			port at 3 {
+				reg = <3>;
+				label = "lan4";
+			};
+
+			port at 6 {
+				reg = <6>;
+				label = "cpu";
+				ethernet = <&gmac0>;
+				phy-mode = "2500base-x";
+
+				fixed-link {
+					speed = <2500>;
+					full-duplex;
+					pause;
+				};
+			};
+		};
+	};
+};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi0_flash_pins>;
+	status = "okay";
+
+	spi_nand at 0 {
+		compatible = "spi-nand";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		reg = <0>;
+
+		spi-max-frequency = <52000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+
+		mediatek,nmbm;
+		mediatek,bmt-max-ratio = <1>;
+		mediatek,bmt-max-reserved-blocks = <64>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "BL2";
+				reg = <0x00 0x100000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "u-boot-env";
+				reg = <0x100000 0x80000>;
+			};
+
+			partition at 180000 {
+				label = "Factory";
+				reg = <0x180000 0x200000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0x1000>;
+					};
+				};
+			};
+
+			partition at 380000 {
+				label = "FIP";
+				reg = <0x380000 0x200000>;
+				read-only;
+			};
+
+			partition at 580000 {
+				label = "ubi";
+				reg = <0x580000 0x3200000>;
+			};
+
+			partition at 3780000 {
+				label = "ubi1";
+				reg = <0x3780000 0x3200000>;
+				read-only;
+			};
+
+			partition at 6980000 {
+				label = "Odm";
+				reg = <0x6980000 0x40000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_odm: macaddr at 81 {
+						compatible = "mac-base";
+						reg = <0x81 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
+				
+			};
+
+			partition at 69c0000 {
+				label = "Config1";
+				reg = <0x69c0000 0x80000>;
+				read-only;
+			};
+
+			partition at 6a40000 {
+				label = "Config2";
+				reg = <0x6a40000 0x80000>;
+				read-only;
+			};
+
+			partition at 6ac0000 {
+				label = "Storage";
+				reg = <0x6ac0000 0xA00000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&pio {
+	spi0_flash_pins: spi0-pins {
+		mux {
+			function = "spi";
+			groups = "spi0", "spi0_wp_hold";
+		};
+
+		conf-pu {
+			pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
+			drive-strength = <MTK_DRIVE_8mA>;
+			bias-pull-down = <MTK_PUPD_SET_R1R0_00>;
+		};
+
+		conf-pd {
+			pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
+			drive-strength = <MTK_DRIVE_8mA>;
+			bias-pull-down = <MTK_PUPD_SET_R1R0_00>;
+		};
+	};
+
+	i2c_pins_g0: i2c-pins-g0 {
+		mux {
+			function = "i2c";
+			groups = "i2c0_1";
+		};
+	};
+};
+
+&wifi {
+	status = "okay";
+
+	nvmem-cells = <&eeprom_factory_0>, <&macaddr_odm 2>;
+	nvmem-cell-names = "eeprom", "mac-address";
+};
+
+&i2c0 {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c_pins_g0>;
+
+	gca230718 at 40 {
+		compatible = "unknown,gca230718";
+		reg = <0x40>;
+
+		led_status_red: led at 0 {
+			color = <LED_COLOR_ID_RED>;
+			function = LED_FUNCTION_STATUS;
+			reg = <0>;
+		};
+
+		led at 1 {
+			color = <LED_COLOR_ID_GREEN>;
+			function = LED_FUNCTION_STATUS;
+			reg = <1>;
+		};
+
+		led_status_blue: led at 2 {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_STATUS;
+			reg = <2>;
+		};
+
+		led_status_white: led at 3 {
+			color = <LED_COLOR_ID_WHITE>;
+			function = LED_FUNCTION_STATUS;
+			reg = <3>;
+		};
+	};
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index a1207fc8eb..82395709d9 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -51,6 +51,9 @@ mediatek_setup_interfaces()
 	comfast,cf-e393ax)
 		ucidef_set_interfaces_lan_wan "lan1" eth1
 		;;
+	dlink,aquila-pro-ai-m30-a1)
+		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" internet
+		;;
 	glinet,gl-mt2500|\
 	glinet,gl-mt3000|\
 	glinet,gl-x3000|\
diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index ef10417e44..f44cd3bb7a 100644
--- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -74,6 +74,10 @@ case "$board" in
 		[ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress
 		[ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_add $addr 1) > /sys${DEVPATH}/macaddress
 		;;
+	dlink,aquila-pro-ai-m30-a1)
+		addr=$(mtd_get_mac_binary "Odm" 0x81)
+		[ "$PHYNBR" = "1" ] && macaddr_add $addr 3 > /sys${DEVPATH}/macaddress
+		;;
 	glinet,gl-mt6000|\
 	glinet,gl-x3000|\
 	glinet,gl-xe3000)
diff --git a/target/linux/mediatek/filogic/base-files/etc/init.d/bootcount b/target/linux/mediatek/filogic/base-files/etc/init.d/bootcount
index c52d004c63..e186589f28 100755
--- a/target/linux/mediatek/filogic/base-files/etc/init.d/bootcount
+++ b/target/linux/mediatek/filogic/base-files/etc/init.d/bootcount
@@ -5,6 +5,13 @@ START=99
 
 boot() {
 	case $(board_name) in
+	dlink,aquila-pro-ai-m30-a1)
+		if grep -q bootpart=ubi0 /proc/cmdline; then
+			fw_setenv bootpart 0
+		else
+			fw_setenv bootpart 1
+		fi
+		;;
 	zyxel,ex5700-telenor)
 		fw_setenv uboot_bootcount 0
 		;;
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index 2717121361..6e3891576d 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -491,6 +491,21 @@ define Device/cudy_wr3000-v1
 endef
 TARGET_DEVICES += cudy_wr3000-v1
 
+define Device/dlink_aquila-pro-ai-m30-a1
+  DEVICE_VENDOR := D-Link
+  DEVICE_MODEL := AQUILA PRO AI M30
+  DEVICE_VARIANT := A1
+  DEVICE_DTS := mt7981b-dlink-aquila-pro-ai-m30-a1
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_PACKAGES := kmod-leds-gca230718 kmod-mt7981-firmware mt7981-wo-firmware
+  KERNEL_IN_UBI := 1
+  IMAGES += recovery.bin
+  IMAGE_SIZE := 51200k
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  IMAGE/recovery.bin := sysupgrade-tar | pad-to $$(IMAGE_SIZE) | dlink-ai-recovery-header DLK6E6110001 \x6A\x28\xEE\x0B \x00\x00\x2C\x00 \x00\x00\x20\x03 \x61\x6E
+endef
+TARGET_DEVICES += dlink_aquila-pro-ai-m30-a1
+
 define Device/glinet_gl-mt2500
   DEVICE_VENDOR := GL.iNet
   DEVICE_MODEL := GL-MT2500



From lede-commits at lists.infradead.org  Sun Mar 31 10:55:01 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 13:55:01 -0400
Subject: [openwrt/openwrt]  unetd: update to Git HEAD (2024-03-31)
In-Reply-To: <171190770132.923984.5189051397291921152@git-01.infra.openwrt.org>
References: <171190770132.923984.5189051397291921152@git-01.infra.openwrt.org>
Message-ID: <mailman.22037.1711907715.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/a112ed4126c258a63698774b1e600584c1ccd5a8

commit a112ed4126c258a63698774b1e600584c1ccd5a8
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Sun Mar 31 19:42:16 2024 +0200

    unetd: update to Git HEAD (2024-03-31)
    
    52144f723bec pex: after receiving data update req, notify peer of local address/port
    29aacb9386e0 pex: track indirect hosts (reachable via gateway) as peers without adding them to wg
    48049524d4fc pex: do not send peer notifications for hosts with a gateway
    12ac684ee22a pex: do not query for hosts with a gateway
    203c88857354 pex: fix endian issues on config transfer
    a29d45c71bca network: fix endian issue in converting port to network id
    cbbe9d337a17 unet-cli: emit id by default
    806457664ab6 unet-cli: strip initial newline in usage message
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 package/network/services/unetd/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/network/services/unetd/Makefile b/package/network/services/unetd/Makefile
index e3d947b047..02814cb78c 100644
--- a/package/network/services/unetd/Makefile
+++ b/package/network/services/unetd/Makefile
@@ -10,9 +10,9 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=unetd
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/unetd.git
-PKG_SOURCE_DATE:=2023-05-31
-PKG_SOURCE_VERSION:=7d3986b7a5a20b9af0dacd053b2657210385e7bb
-PKG_MIRROR_HASH:=d3db5c71fdeae96782deadb413adf902009a189b7d5f21875d8f4315389849c3
+PKG_SOURCE_DATE:=2024-03-31
+PKG_SOURCE_VERSION:=806457664ab6e952a7f4febb82e891f596fe577c
+PKG_MIRROR_HASH:=fbdac59581742bf208c18995b1d69d9848c93bfce487e57ba780d959e0d62fc4
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>



From lede-commits at lists.infradead.org  Sun Mar 31 10:57:50 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 13:57:50 -0400
Subject: [openwrt/openwrt]  unetd: update to Git HEAD (2024-03-31)
In-Reply-To: <171190787078.927071.9607875605441116540@git-01.infra.openwrt.org>
References: <171190787078.927071.9607875605441116540@git-01.infra.openwrt.org>
Message-ID: <mailman.22038.1711907876.1280.lede-commits@lists.infradead.org>

nbd pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/26548c42549577cb166f2ffc17849144ba2ab48f

commit 26548c42549577cb166f2ffc17849144ba2ab48f
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Sun Mar 31 19:57:03 2024 +0200

    unetd: update to Git HEAD (2024-03-31)
    
    52144f723bec pex: after receiving data update req, notify peer of local address/port
    29aacb9386e0 pex: track indirect hosts (reachable via gateway) as peers without adding them to wg
    48049524d4fc pex: do not send peer notifications for hosts with a gateway
    12ac684ee22a pex: do not query for hosts with a gateway
    203c88857354 pex: fix endian issues on config transfer
    a29d45c71bca network: fix endian issue in converting port to network id
    cbbe9d337a17 unet-cli: emit id by default
    806457664ab6 unet-cli: strip initial newline in usage message
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
    (cherry picked from commit a112ed4126c258a63698774b1e600584c1ccd5a8)
---
 package/network/services/unetd/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/network/services/unetd/Makefile b/package/network/services/unetd/Makefile
index 7d8ed9a144..6873061492 100644
--- a/package/network/services/unetd/Makefile
+++ b/package/network/services/unetd/Makefile
@@ -10,9 +10,9 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=unetd
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/unetd.git
-PKG_SOURCE_DATE:=2023-05-31
-PKG_SOURCE_VERSION:=7d3986b7a5a20b9af0dacd053b2657210385e7bb
-PKG_MIRROR_HASH:=07f0a4cbae3e80c6309bb8aa27fcef19fbc56093a9c7e426e0d527227af09429
+PKG_SOURCE_DATE:=2024-03-31
+PKG_SOURCE_VERSION:=806457664ab6e952a7f4febb82e891f596fe577c
+PKG_MIRROR_HASH:=0d3952f8079476e68487094b49c9c39074a1068c932f204a87c609074ce30d74
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>



From lede-commits at lists.infradead.org  Sun Mar 31 11:08:44 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 14:08:44 -0400
Subject: [openwrt/openwrt]  ramips: add support for BOLT BL100
In-Reply-To: <171190852454.935467.13658437410813341935@git-01.infra.openwrt.org>
References: <171190852454.935467.13658437410813341935@git-01.infra.openwrt.org>
Message-ID: <mailman.22039.1711908528.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5aca47bca1ad4dd8dfcd7d17608739498ba6b7c6

commit 5aca47bca1ad4dd8dfcd7d17608739498ba6b7c6
Author: Radito Wahyu <arditogits at gmail.com>
AuthorDate: Sat Mar 30 09:28:57 2024 +0700

    ramips: add support for BOLT BL100
    
    BL100 is a router made by Bolt by a provider in Indonesia
    The original firmware created using Mediatek SDK and kernel 2.6.36
    
    - Chipset: MediaTek MT7620A ver 2, eco 6
    - RAM: 64 MB
    - Bootloader: U Boot
    - Flash: Winbond W25Q128BV (16 MB)
    - Ports: 2x 10/100 Ethernet, 1x RJ-11 VoIP
    - Modem: Qualcomm LTE B40 (2300 Mhz) VID:05c6 PID:9026
    - Wireless: Internal MT7620A (2.4 Ghz) & Mediatek MT76x2E (5.8 Ghz)
    - Switch: MediaTek MT7620A built-in 5-port 10/100M switch
    - Voltage: DC 12V 1A
    - Antenna Port: 2x External Antenna, 2 LTE U.FL, 2 WiFi U.FL
    - Serial Port: Yes, 3.3 V TTL, Baud 57600 8N1
    - Buttons: Reset and WPS
    - LED: 15 Total
      - 4 blue lte, 2 red lte, 1 reset, 1 power.
      - 1 wps, 1 voip, 1 wlan2, 1 wlan5, 1 lan, 1 wan, 1 wlan.
    
    Installation via stock firmware
    1. Unlock Telnet access by downloading the backup .tar.gz file
    2. Change the Telnet configuration to LAN_Telnet=1
    3. Import backup configuration
    4. Restart the router
    5. Login to telnet with username and password = admin : db40
    6. Download sysupgrade binary and mtd_write to the kernel partition
    `mtd_write write openwrt-bolt_bl100-squashfs-sysupgrade.bin Kernel`
    
    Signed-off-by: Radito Wahyu <arditogits at gmail.com>
---
 target/linux/ramips/dts/mt7620a_bolt_bl100.dts     | 262 +++++++++++++++++++++
 target/linux/ramips/image/mt7620.mk                |  10 +
 .../ramips/mt7620/base-files/etc/board.d/01_leds   |   5 +
 .../mt7620/base-files/etc/board.d/02_network       |   1 +
 .../mt7620/base-files/etc/board.d/03_gpio_switches |   3 +
 5 files changed, 281 insertions(+)

diff --git a/target/linux/ramips/dts/mt7620a_bolt_bl100.dts b/target/linux/ramips/dts/mt7620a_bolt_bl100.dts
new file mode 100644
index 0000000000..bd335894c8
--- /dev/null
+++ b/target/linux/ramips/dts/mt7620a_bolt_bl100.dts
@@ -0,0 +1,262 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7620a.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
+
+/ {
+	compatible = "bolt,bl100", "ralink,mt7620a-soc";
+	model = "Bolt BL100";
+
+	aliases {
+		led-boot = &led_reset;
+		led-failsafe = &led_reset;
+		led-running = &led_power;
+		led-upgrade = &led_reset;
+		label-mac-device = &ethernet;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,57600";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_reset: reset {
+			function = LED_FUNCTION_BOOT;
+			color = <LED_COLOR_ID_RED>;
+			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+		};
+
+		led_power: power {
+			function = LED_FUNCTION_POWER;
+			color = <LED_COLOR_ID_BLUE>;
+			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+		};
+
+		led_lte1 {
+			label = "blue:lte1";
+			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+		};
+
+		led_lte2 {
+			label = "blue:lte2";
+			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+		};
+
+		led_lte3 {
+			label = "blue:lte3";
+			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+		};
+
+		led_lte4 {
+			label = "blue:lte4";
+			gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+		};
+		
+		led_lte5 {
+			label = "red:lte5";
+			gpios = <&gpio2 24 GPIO_ACTIVE_LOW>;
+		};
+
+		led_lte6 {
+			label = "red:lte6";
+			gpios = <&gpio2 25 GPIO_ACTIVE_LOW>;
+		};
+
+		led_wps {
+			function = LED_FUNCTION_WPS;
+			color = <LED_COLOR_ID_BLUE>;
+			gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;
+		};
+
+		led_voip {
+			label = "blue:voip";
+			gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
+		};
+
+		led_wlan2 {
+			function = LED_FUNCTION_WLAN_2GHZ;
+			color = <LED_COLOR_ID_BLUE>;
+			gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+		
+		led_wlan5 {
+			function = LED_FUNCTION_WLAN_5GHZ;
+			color = <LED_COLOR_ID_BLUE>;
+			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+		
+		led_lan {
+			function = LED_FUNCTION_LAN;
+			color = <LED_COLOR_ID_GREEN>;
+			gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
+		};
+		
+		led_wan {
+			function = LED_FUNCTION_WAN;
+			color = <LED_COLOR_ID_GREEN>;
+			gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		wps {
+			label = "WPS";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+		};
+
+		reset {
+			label = "RST";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&gpio0 {
+	status = "okay";
+};
+
+&gpio1 {
+	status = "okay";
+};
+
+&gpio2 {
+	status = "okay";
+};
+
+&gpio3 {
+	status = "okay";
+};
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <70000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+			};
+
+			partition at 40000 {
+				compatible = "nvmem-cells";
+				label = "factory";
+				reg = <0x40000 0x10000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0x200>;
+					};
+
+					eeprom_factory_8000: eeprom at 8000 {
+						reg = <0x8000 0x200>;
+					};
+
+					macaddr_factory_28: macaddr at 28 {
+						compatible = "mac-base";
+						reg = <0x28 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
+			};
+
+			partition at 50000 {
+				label = "firmware";
+				reg = <0x50000 0xf80000>;
+				compatible = "openwrt,uimage", "denx,uimage";
+				openwrt,ih-magic = <0x26112015>;
+			};
+
+			partition at fd0000 {
+				label = "crash";
+				reg = <0xfd0000 0x10000>;
+			};
+
+			partition at fe0000 {
+				label = "reserved";
+				reg = <0xfe0000 0x10000>;
+				read-only;
+			};
+
+			partition at ff0000 {
+				label = "Bdata";
+				reg = <0xff0000 0x10000>;
+			};
+		};
+	};
+};
+
+&ehci {
+	status = "okay";
+};
+
+&ohci {
+	status = "okay";
+};
+
+&ethernet {
+	nvmem-cells = <&macaddr_factory_28>;
+	nvmem-cell-names = "mac-address";
+
+	mediatek,portmap = "llllw";
+};
+
+&wmac {
+	nvmem-cells = <&eeprom_factory_0>;
+	nvmem-cell-names = "eeprom";
+	
+	pinctrl-names = "default", "pa_gpio";
+	pinctrl-0 = <&pa_pins>;
+	pinctrl-1 = <&pa_gpio_pins>;
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie0 {
+	mt76 at 0,0 {
+		reg = <0x0000 0 0 0 0>;
+		nvmem-cells = <&eeprom_factory_8000>;
+		nvmem-cell-names = "eeprom";
+		ieee80211-freq-limit = <5000000 6000000>;
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "i2c", "uartf", "rgmii1", "rgmii2", "ephy", "wled", "nd_sd";
+		function = "gpio";
+	};
+};
+
diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
index 04c3262920..b35359aefe 100644
--- a/target/linux/ramips/image/mt7620.mk
+++ b/target/linux/ramips/image/mt7620.mk
@@ -149,6 +149,16 @@ define Device/bdcom_wap2100-sk
 endef
 TARGET_DEVICES += bdcom_wap2100-sk
 
+define Device/bolt_bl100
+  SOC := mt7620a
+  IMAGE_SIZE := 15872k
+  DEVICE_VENDOR := Bolt
+  DEVICE_MODEL := BL100
+  DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci
+  UIMAGE_MAGIC := 0x26112015
+endef
+TARGET_DEVICES += bolt_bl100
+
 define Device/buffalo_whr-1166d
   SOC := mt7620a
   IMAGE_SIZE := 16064k
diff --git a/target/linux/ramips/mt7620/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7620/base-files/etc/board.d/01_leds
index ffc5745e6f..a56ae8f0bf 100644
--- a/target/linux/ramips/mt7620/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7620/base-files/etc/board.d/01_leds
@@ -40,6 +40,11 @@ asus,rt-n14u)
 bdcom,wap2100-sk)
 	ucidef_set_led_netdev "wifi_led" "wifi" "green:wlan2g" "wlan0"
 	;;
+bolt,bl100)
+	ucidef_set_led_default "power" "power" "blue:power" "1"
+	ucidef_set_led_netdev "lan" "lan" "green:lan" "eth0.1"
+	ucidef_set_led_netdev "wan" "wan" "green:wan" "eth0.2"
+	;;
 comfast,cf-wr800n)
 	ucidef_set_led_netdev "lan" "lan" "white:ethernet" eth0.1
 	ucidef_set_led_netdev "wifi_led" "wifi" "white:wifi" "wlan0"
diff --git a/target/linux/ramips/mt7620/base-files/etc/board.d/02_network b/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
index 167bb47b69..8cc6091e23 100644
--- a/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
@@ -34,6 +34,7 @@ ramips_setup_interfaces()
 			"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6 at eth0"
 		;;
 	alfa-network,r36m-e4g|\
+	bolt,bl100|\
 	zbtlink,zbt-we1026-h-32m)
 		ucidef_add_switch "switch0" \
 			"3:lan" "4:wan" "6 at eth0"
diff --git a/target/linux/ramips/mt7620/base-files/etc/board.d/03_gpio_switches b/target/linux/ramips/mt7620/base-files/etc/board.d/03_gpio_switches
index 81daca4978..5588113548 100644
--- a/target/linux/ramips/mt7620/base-files/etc/board.d/03_gpio_switches
+++ b/target/linux/ramips/mt7620/base-files/etc/board.d/03_gpio_switches
@@ -6,6 +6,9 @@ board_config_update
 board=$(board_name)
 
 case "$board" in
+bolt,bl100)
+	ucidef_add_gpio_switch "modem_enable" "Enable LTE Modem" "28" "1"
+	;;
 dlink,dir-510l)
 	ucidef_add_gpio_switch "usb_enable1" "USB 1A enable" "12" "0"
 	ucidef_add_gpio_switch "usb_enable05" "USB 0.5A enable" "13" "1"



From lede-commits at lists.infradead.org  Sun Mar 31 11:21:52 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 14:21:52 -0400
Subject: [openwrt/openwrt]  mediatek: add support for OpenEmbed SOM7981
In-Reply-To: <171190931253.949867.7973930489824600607@git-01.infra.openwrt.org>
References: <171190931253.949867.7973930489824600607@git-01.infra.openwrt.org>
Message-ID: <mailman.22040.1711909317.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/cc6c3a6ee83ce4498b983dddb1766b6f056212d3

commit cc6c3a6ee83ce4498b983dddb1766b6f056212d3
Author: Tianling Shen <cnsztl at gmail.com>
AuthorDate: Thu Mar 7 14:19:08 2024 +0800

    mediatek: add support for OpenEmbed SOM7981
    
    Hardware specification:
      SoC: MediaTek MT7981B 2x A53
      Flash: 256 MiB SPI-NAND, 32 GB eMMC optional
      RAM: 0.5/1 GB DDR4
      Ethernet: 1x 1GbE, 1x 2.5GbE (RTL8221B)
      WiFi: MediaTek MT7976C
      USB: 1x USB 3.0
      GPIO: 26-Pin header
      UART: 6 GND, 8 TX, 10 RX (in Pin header)
      Button: Reset, WPS
      Power: Type-C PD
    
    Installation:
    The board comes with a third-party custom OpenWrt image, you can upload
    sysupgrade image via LuCI directly WITHOUT keeping configurations.
    
    Or power on the board with pressing reset button for 5 second, then visit
    http://192.168.1.1 and upload -factory.bin firmware.
    
    Signed-off-by: Tianling Shen <cnsztl at gmail.com>
---
 package/boot/uboot-envtools/files/mediatek_filogic |   4 +
 .../mediatek/dts/mt7981b-openembed-som7981.dts     | 227 +++++++++++++++++++++
 .../filogic/base-files/etc/board.d/01_leds         |   4 +
 .../filogic/base-files/etc/board.d/02_network      |   3 +-
 .../etc/hotplug.d/ieee80211/11_fix_wifi_mac        |   3 +
 target/linux/mediatek/image/filogic.mk             |  17 ++
 6 files changed, 257 insertions(+), 1 deletion(-)

diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic
index 64c9d045d8..753c8ca064 100644
--- a/package/boot/uboot-envtools/files/mediatek_filogic
+++ b/package/boot/uboot-envtools/files/mediatek_filogic
@@ -107,6 +107,10 @@ routerich,ax3000)
 	local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
 	ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x20000" "1"
 	;;
+openembed,som7981)
+	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x80000"
+	ubootenv_add_uci_sys_config "/dev/mtd3" "0x0" "0x100000" "0x100000"
+	;;
 ubnt,unifi-6-plus)
 	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x10000"
 	;;
diff --git a/target/linux/mediatek/dts/mt7981b-openembed-som7981.dts b/target/linux/mediatek/dts/mt7981b-openembed-som7981.dts
new file mode 100644
index 0000000000..0e9dea1ddb
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-openembed-som7981.dts
@@ -0,0 +1,227 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include "mt7981.dtsi"
+
+/ {
+	model = "OpenEmbed SOM7981";
+	compatible = "openembed,som7981", "mediatek,mt7981";
+
+	aliases {
+		led-boot = &wlan2g_led;
+		led-failsafe = &wlan2g_led;
+		led-upgrade = &wlan2g_led;
+		serial0 = &uart0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	memory at 40000000 {
+		reg = <0 0x40000000 0 0x40000000>;
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		button-reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+		};
+
+		button-wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&pio 0 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		led-0 {
+			function = LED_FUNCTION_LAN;
+			color = <LED_COLOR_ID_AMBER>;
+			gpios = <&pio 8 GPIO_ACTIVE_LOW>;
+		};
+
+		led-1 {
+			function = LED_FUNCTION_LAN;
+			color = <LED_COLOR_ID_GREEN>;
+			gpios = <&pio 13 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan2g_led: led-2 {
+			function = LED_FUNCTION_WLAN_2GHZ;
+			color = <LED_COLOR_ID_RED>;
+			gpios = <&pio 34 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		led-3 {
+			function = LED_FUNCTION_WLAN_5GHZ;
+			color = <LED_COLOR_ID_RED>;
+			gpios = <&pio 35 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+	};
+};
+
+&eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio_pins>;
+	status = "okay";
+
+	gmac0: mac at 0 {
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+		phy-handle = <&phy0>;
+		nvmem-cells = <&macaddr_factory_a 0>;
+		nvmem-cell-names = "mac-address";
+	};
+
+	gmac1: mac at 1 {
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&int_gbe_phy>;
+		nvmem-cells = <&macaddr_factory_a 1>;
+		nvmem-cell-names = "mac-address";
+	};
+};
+
+&mdio_bus {
+	phy0: ethernet-phy at 5 {
+		reg = <5>;
+		compatible = "ethernet-phy-ieee802.3-c45";
+		phy-mode = "2500base-x";
+		reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>;
+		reset-assert-us = <10000>;
+		reset-deassert-us = <50000>;
+		realtek,aldps-enable;
+	};
+};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi0_flash_pins>;
+	status = "okay";
+
+	spi_nand: flash at 0 {
+		compatible = "spi-nand";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		reg = <0>;
+
+		spi-max-frequency = <52000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "bl2";
+				reg = <0x000000 0x100000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "u-boot-env";
+				reg = <0x100000 0x80000>;
+			};
+
+			partition at 180000 {
+				compatible = "nvmem-cells";
+				label = "factory";
+				reg = <0x180000 0x100000>;
+				read-only;
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0x1000>;
+					};
+
+					macaddr_factory_a: macaddr at a {
+						compatible = "mac-base";
+						reg = <0xa 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
+			};
+
+			partition at 280000 {
+				label = "config";
+				reg = <0x280000 0x100000>;
+				read-only;
+			};
+
+			partition at 380000 {
+				label = "fip";
+				reg = <0x380000 0x200000>;
+				read-only;
+			};
+
+			partition at 580000 {
+				label = "ubi";
+				reg = <0x580000 0xf880000>;
+			};
+		};
+	};
+};
+
+&pio {
+	spi0_flash_pins: spi0-pins {
+		mux {
+			function = "spi";
+			groups = "spi0", "spi0_wp_hold";
+		};
+
+		conf-pu {
+			pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
+			drive-strength = <8>;
+			mediatek,pull-up-adv = <0>;
+		};
+
+		conf-pd {
+			pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
+			drive-strength = <8>;
+			mediatek,pull-down-adv = <0>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&usb_phy {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&wifi {
+	nvmem-cells = <&eeprom_factory_0>;
+	nvmem-cell-names = "eeprom";
+	status = "okay";
+};
+
+&xhci {
+	status = "okay";
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
index 69afdfde56..7f75de8b3b 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
@@ -54,6 +54,10 @@ netgear,wax220)
 	ucidef_set_led_netdev "wlan2g" "WLAN2G" "blue:wlan2g" "phy0-ap0"
 	ucidef_set_led_netdev "wlan5g" "WLAN5G" "blue:wlan5g" "phy1-ap0"
 	;;
+openembed,som7981)
+	ucidef_set_led_netdev "lanact" "LANACT" "green:lan" "eth1" "rx tx"
+	ucidef_set_led_netdev "lanlink" "LANLINK" "amber:lan" "eth1" "link"
+	;;
 routerich,ax3000)
 	ucidef_set_led_netdev "lan-1" "lan-1" "blue:lan-1" "lan1" "link tx rx"
 	ucidef_set_led_netdev "lan-2" "lan-2" "blue:lan-2" "lan2" "link tx rx"
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index 82395709d9..8b6504fa1c 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -57,7 +57,8 @@ mediatek_setup_interfaces()
 	glinet,gl-mt2500|\
 	glinet,gl-mt3000|\
 	glinet,gl-x3000|\
-	glinet,gl-xe3000)
+	glinet,gl-xe3000|\
+	openembed,som7981)
 		ucidef_set_interfaces_lan_wan eth1 eth0
 		;;
 	glinet,gl-mt6000|\
diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index f44cd3bb7a..bd6e775963 100644
--- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -109,6 +109,9 @@ case "$board" in
 		[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
 		[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 3 > /sys${DEVPATH}/macaddress
 		;;
+	openembed,som7981)
+		[ "$PHYNBR" = "1" ] && cat /sys/class/net/eth0/address > /sys${DEVPATH}/macaddress
+		;;
 	qihoo,360t7)
 		addr=$(mtd_get_mac_ascii factory lanMac)
 		[ "$PHYNBR" = "0" ] && macaddr_add $addr 2 > /sys${DEVPATH}/macaddress
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index 6e3891576d..c3de23f5e8 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -863,6 +863,23 @@ define Device/netgear_wax220
 endef
 TARGET_DEVICES += netgear_wax220
 
+define Device/openembed_som7981
+  DEVICE_VENDOR := OpenEmbed
+  DEVICE_MODEL := SOM7981
+  DEVICE_DTS := mt7981b-openembed-som7981
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware kmod-usb3
+  UBINIZE_OPTS := -E 5
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  IMAGE_SIZE := 244224k
+  KERNEL_IN_UBI := 1
+  IMAGES += factory.bin
+  IMAGE/factory.bin := append-ubi | check-size $$$$(IMAGE_SIZE)
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+endef
+TARGET_DEVICES += openembed_som7981
+
 define Device/qihoo_360t7
   DEVICE_VENDOR := Qihoo
   DEVICE_MODEL := 360T7



From lede-commits at lists.infradead.org  Sun Mar 31 11:41:07 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 14:41:07 -0400
Subject: [openwrt/openwrt]  rockchip: remove redundant 'console' parameter
 from boot script
In-Reply-To: <171191046619.967830.4093032764013231119@git-01.infra.openwrt.org>
References: <171191046619.967830.4093032764013231119@git-01.infra.openwrt.org>
Message-ID: <mailman.22046.1711910471.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/705954a51ada4926cc4b7f1b4d40b3995ceef8a9

commit 705954a51ada4926cc4b7f1b4d40b3995ceef8a9
Author: Tianling Shen <cnsztl at immortalwrt.org>
AuthorDate: Tue Mar 26 02:25:42 2024 +0800

    rockchip: remove redundant 'console' parameter from boot script
    
    ttyS2 is the default console used for all rockchip boards.
    The redundant 'console=tty1' parameter now breaks the console due to
    recent procd update.
    
    Signed-off-by: Tianling Shen <cnsztl at immortalwrt.org>
    (cherry picked from commit 163c3d0bde28664058656ce1c2bd97f80e4dbe2d)
---
 target/linux/rockchip/image/mmc.bootscript | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/rockchip/image/mmc.bootscript b/target/linux/rockchip/image/mmc.bootscript
index ea6ee8c73d..5aa7330cff 100644
--- a/target/linux/rockchip/image/mmc.bootscript
+++ b/target/linux/rockchip/image/mmc.bootscript
@@ -8,7 +8,7 @@ elif test $stdout = 'serial at ff1a0000' ;
 then serial_addr=',0xff1a0000';
 fi;
 
-setenv bootargs "console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32${serial_addr} root=PARTUUID=${uuid} rw rootwait";
+setenv bootargs "console=ttyS2,1500000 earlycon=uart8250,mmio32${serial_addr} root=PARTUUID=${uuid} rw rootwait";
 
 load mmc ${devnum}:1 ${kernel_addr_r} kernel.img
 



From lede-commits at lists.infradead.org  Sun Mar 31 11:41:06 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 14:41:06 -0400
Subject: [openwrt/openwrt]  rockchip: remove 'swiotlb' parameter from boot
 script
In-Reply-To: <171191046619.967830.4093032764013231119@git-01.infra.openwrt.org>
References: <171191046619.967830.4093032764013231119@git-01.infra.openwrt.org>
Message-ID: <mailman.22047.1711910471.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/f90b1d97784b382cf0fb06eec84f7b93cf05436d

commit f90b1d97784b382cf0fb06eec84f7b93cf05436d
Author: Tianling Shen <cnsztl at immortalwrt.org>
AuthorDate: Tue Mar 26 00:40:37 2024 +0800

    rockchip: remove 'swiotlb' parameter from boot script
    
    We have hardware IOMMU support and this is totally unnecessary.
    The given value is also unreasonable, it's too small and causes
    kernel panic in some cases:
    
    [ 5706.856473] sdhci-dwcmshc fe310000.mmc: swiotlb buffer is full (sz: 28672 bytes), total 512 (slots), used 498 (slots)
    [ 5706.864451] sdhci-dwcmshc fe310000.mmc: swiotlb buffer is full (sz: 65536 bytes), total 512 (slots), used 464 (slots)
    
    This parameter seems to be added by mistake, so remove it.
    
    Fixes: e35c7ab51fd1 ("rockchip: merge bootscript")
    Signed-off-by: Tianling Shen <cnsztl at immortalwrt.org>
    (cherry picked from commit 50e6c8ae8df55532fb70c281bd238b9b1cf1fdaf)
---
 target/linux/rockchip/image/mmc.bootscript | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/rockchip/image/mmc.bootscript b/target/linux/rockchip/image/mmc.bootscript
index 60b59e1b6b..ea6ee8c73d 100644
--- a/target/linux/rockchip/image/mmc.bootscript
+++ b/target/linux/rockchip/image/mmc.bootscript
@@ -8,7 +8,7 @@ elif test $stdout = 'serial at ff1a0000' ;
 then serial_addr=',0xff1a0000';
 fi;
 
-setenv bootargs "console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32${serial_addr} swiotlb=1 root=PARTUUID=${uuid} rw rootwait";
+setenv bootargs "console=ttyS2,1500000 console=tty1 earlycon=uart8250,mmio32${serial_addr} root=PARTUUID=${uuid} rw rootwait";
 
 load mmc ${devnum}:1 ${kernel_addr_r} kernel.img
 



From lede-commits at lists.infradead.org  Sun Mar 31 11:48:51 2024
From: lede-commits at lists.infradead.org (LEDE Commits)
Date: Sun, 31 Mar 2024 14:48:51 -0400
Subject: [openwrt/openwrt]  mediatek: filogic: add Unielec U7981-01 support
In-Reply-To: <171191093103.975397.11039393024361421400@git-01.infra.openwrt.org>
References: <171191093103.975397.11039393024361421400@git-01.infra.openwrt.org>
Message-ID: <mailman.22048.1711910935.1280.lede-commits@lists.infradead.org>

hauke pushed a commit to openwrt/openwrt.git, branch openwrt-23.05:
https://git.openwrt.org/e2f3aefea5d38916d663829e2e3f9dd4761c196d

commit e2f3aefea5d38916d663829e2e3f9dd4761c196d
Author: Allen Zhao <allenzhao at unielecinc.com>
AuthorDate: Sat Mar 9 10:44:58 2024 +0800

    mediatek: filogic: add Unielec U7981-01 support
    
    Hardware specification:
      SoC: MediaTek MT7981B 2x A53
      Flash: 8GB eMMC or 128 MB SPI-NAND
      RAM: 256MB
      Ethernet: 5x 10/100/1000 Mbps
      Switch: MediaTek MT7531AE
      WiFi: MediaTek MT7976C
      Button: Reset
      USB: M.2(B-key) for 4G/5G Module
      Power: DC 12V 1A
      UART: 3.3v, 115200n8
      --------------------------
      |         Layout         |
      |   -----------------    |
      | 4 | VCC RX TX GND | <= |
      |   -----------------    |
      --------------------------
    
    The U-boot menu will automatically appear at startup, and then select
    the required options through UP/DOWN Key.
    
    NAND Flash and eMMC Flash instructions:
    1. Set your computers IP adress to 192.168.1.2.
    2. Run a TFTP server providing the sysupgrade.bin image.
    3. Power on the router, into the U-Boot menu.
    4. Select "2. Upgrade firmware"
    5. Update sysupgrade.bin file name, input server IP and input device
       IP (if they deviate from the defaults)
    6. Wait for automatic startup after burning
    
    Signed-off-by: Allen Zhao <allenzhao at unielecinc.com>
    (cherry picked from commit 640b0b79ff05c42991e99a49ed81efb3fac25045)
---
 .../mediatek/dts/mt7981b-unielec-u7981-01-emmc.dts |  99 ++++++++++++++++
 .../mediatek/dts/mt7981b-unielec-u7981-01-nand.dts | 116 +++++++++++++++++++
 .../mediatek/dts/mt7981b-unielec-u7981-01.dtsi     | 124 +++++++++++++++++++++
 .../filogic/base-files/etc/board.d/02_network      |   1 +
 .../filogic/base-files/lib/upgrade/platform.sh     |  17 +++
 target/linux/mediatek/image/filogic.mk             |  22 ++++
 6 files changed, 379 insertions(+)

diff --git a/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-emmc.dts b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-emmc.dts
new file mode 100644
index 0000000000..abd4d4e59d
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-emmc.dts
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2023 Allen Zhao <allenzhao at unielecinc.com>
+ */
+
+/dts-v1/;
+#include "mt7981b-unielec-u7981-01.dtsi"
+/ {
+	model = "Unielec U7981-01 (EMMC)";
+	compatible = "unielec,u7981-01-emmc", "mediatek,mt7981";
+};
+
+&mmc0 {
+	pinctrl-names = "default", "state_uhs";
+	pinctrl-0 = <&mmc0_pins_default>;
+	pinctrl-1 = <&mmc0_pins_uhs>;
+	bus-width = <8>;
+	max-frequency = <52000000>;
+	cap-mmc-highspeed;
+	vmmc-supply = <&reg_3p3v>;
+	non-removable;
+	status = "okay";
+
+	card at 0 {
+		compatible = "mmc-card";
+		reg = <0>;
+
+		block {
+			compatible = "block-device";
+			partitions {
+				block-partition-env {
+					partname = "u-boot-env";
+
+					nvmem-layout {
+						compatible = "u-boot,env-layout";
+					};
+				};
+
+				block-partition-factory {
+					partname = "factory";
+
+					nvmem-layout {
+						compatible = "fixed-layout";
+						#address-cells = <1>;
+						#size-cells = <1>;
+
+						eeprom_factory_0: eeprom at 0 {
+							reg = <0x0 0x1000>;
+						};
+
+						macaddr_factory_4: macaddr at 4 {
+							compatible = "mac-base";
+							reg = <0x4 0x6>;
+							#nvmem-cell-cells = <1>;
+						};
+
+						macaddr_factory_1000: macaddr at 1000 {
+							compatible = "mac-base";
+							reg = <0x1000 0x6>;
+							#nvmem-cell-cells = <1>;
+						};
+					};
+				};
+			};
+		};
+	};
+};
+
+&pio {
+	mmc0_pins_default: mmc0-pins-default {
+		mux {
+			function = "flash";
+			groups = "emmc_45";
+		};
+	};
+
+	mmc0_pins_uhs: mmc0-pins-uhs {
+		mux {
+			function = "flash";
+			groups = "emmc_45";
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_1000 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	nvmem-cells = <&macaddr_factory_1000 1>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wifi {
+	nvmem-cells = <&eeprom_factory_0>;
+	nvmem-cell-names = "eeprom";
+	status = "okay";
+};
diff --git a/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-nand.dts b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-nand.dts
new file mode 100644
index 0000000000..230a612a34
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01-nand.dts
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2023 Allen Zhao <allenzhao at unielecinc.com>
+ */
+
+/dts-v1/;
+#include "mt7981b-unielec-u7981-01.dtsi"
+/ {
+	model = "Unielec U7981-01 (NAND)";
+	compatible = "unielec,u7981-01-nand", "mediatek,mt7981";
+};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi0_flash_pins>;
+	status = "okay";
+	spi_nand: spi_nand at 0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "spi-nand";
+		reg = <0>;
+		spi-max-frequency = <52000000>;
+		spi-tx-buswidth = <4>;
+		spi-rx-buswidth = <4>;
+
+		mediatek,nmbm;
+		mediatek,bmt-max-ratio = <1>;
+		mediatek,bmt-max-reserved-blocks = <64>;
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "bl2";
+				reg = <0x00000 0x0100000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "u-boot-env";
+				reg = <0x0100000 0x0080000>;
+			};
+
+			factory: partition at 180000 {
+				label = "factory";
+				reg = <0x180000 0x200000>;
+				read-only;
+
+				compatible = "nvmem-cells";
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					eeprom_factory_0: eeprom at 0 {
+						reg = <0x0 0x1000>;
+					};
+
+					macaddr_factory_1000: macaddr at 1000 {
+						compatible = "mac-base";
+						reg = <0x1000 0x6>;
+						#nvmem-cell-cells = <1>;
+					};
+				};
+			};
+
+			partition at 380000 {
+				label = "fip";
+				reg = <0x380000 0x0200000>;
+			};
+
+			partition at 580000 {
+				label = "ubi";
+				reg = <0x580000 0x4000000>;
+			};
+		};
+	};
+};
+
+&pio {
+	spi0_flash_pins: spi0-pins {
+		mux {
+			function = "spi";
+			groups = "spi0", "spi0_wp_hold";
+		};
+
+		conf-pu {
+			pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
+			drive-strength = <8>;
+			mediatek,pull-up-adv = <0>; /* bias-disable */
+		};
+
+		conf-pd {
+			pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
+			drive-strength = <8>;
+			mediatek,pull-up-adv = <0>; /* bias-disable */
+		};
+	};
+};
+
+&gmac0 {
+	nvmem-cells = <&macaddr_factory_1000 0>;
+	nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+	nvmem-cells = <&macaddr_factory_1000 1>;
+	nvmem-cell-names = "mac-address";
+};
+
+&wifi {
+	nvmem-cells = <&eeprom_factory_0>;
+	nvmem-cell-names = "eeprom";
+	status = "okay";
+};
diff --git a/target/linux/mediatek/dts/mt7981b-unielec-u7981-01.dtsi b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01.dtsi
new file mode 100644
index 0000000000..6e6150ba21
--- /dev/null
+++ b/target/linux/mediatek/dts/mt7981b-unielec-u7981-01.dtsi
@@ -0,0 +1,124 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2023 Allen Zhao <allenzhao at unielecinc.com>
+ */
+
+/dts-v1/;
+#include "mt7981.dtsi"
+/ {
+	model = "Unielec U7981-01 (EMMC)";
+	compatible = "unielec,u7981-01-emmc", "mediatek,mt7981";
+
+	chosen {
+		bootargs = "console=ttyS0,115200n1 loglevel=8  \
+				earlycon=uart8250,mmio32,0x11002000 \
+				";
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&watchdog {
+	status = "okay";
+};
+
+&eth {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio_pins &gbe_led0_pins &gbe_led1_pins>;
+	status = "okay";
+
+	gmac0: mac at 0 {
+		/* LAN */
+		compatible = "mediatek,eth-mac";
+		reg = <0>;
+		phy-mode = "2500base-x";
+
+		fixed-link {
+			speed = <2500>;
+			full-duplex;
+			pause;
+		};
+	};
+
+	gmac1: mac at 1 {
+		/* WAN */
+		compatible = "mediatek,eth-mac";
+		reg = <1>;
+		phy-mode = "gmii";
+		phy-handle = <&int_gbe_phy>;
+	};
+};
+
+&mdio_bus {
+	switch: switch at 1f {
+		compatible = "mediatek,mt7531";
+		reg = <31>;
+		reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
+		interrupt-controller;
+		#interrupt-cells = <1>;
+		interrupt-parent = <&pio>;
+		interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
+	};
+};
+
+&switch {
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		port at 0 {
+			reg = <0>;
+			label = "lan1";
+		};
+
+		port at 1 {
+			reg = <1>;
+			label = "lan2";
+		};
+
+		port at 2 {
+			reg = <2>;
+			label = "lan3";
+		};
+
+		port at 3 {
+			reg = <3>;
+			label = "lan4";
+		};
+
+		port at 6 {
+			reg = <6>;
+			label = "cpu";
+			ethernet = <&gmac0>;
+			phy-mode = "2500base-x";
+
+			fixed-link {
+				speed = <2500>;
+				full-duplex;
+				pause;
+			};
+		};
+	};
+};
+
+&usb_phy {
+	status = "okay";
+};
+
+&xhci {
+	mediatek,u3p-dis-msk = <0x0>;
+	phys = <&u2port0 PHY_TYPE_USB2>,
+	       <&u3port0 PHY_TYPE_USB3>;
+	status = "okay";
+};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index 566a5ca82f..8843f05682 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -25,6 +25,7 @@ mediatek_setup_interfaces()
 		;;
 	asus,tuf-ax4200|\
 	mediatek,mt7981-rfb|\
+	unielec,u7981-01*|\
 	zbtlink,zbt-z8102ax)
 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" eth1
 		;;
diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
index 25cbf98f33..aae78647d0 100755
--- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
@@ -148,6 +148,23 @@ platform_do_upgrade() {
 		CI_ROOTPART="ubi_rootfs"
                 nand_do_upgrade "$1"
                 ;;
+	unielec,u7981-01*)
+		local rootdev="$(cmdline_get_var root)"
+		rootdev="${rootdev##*/}"
+		rootdev="${rootdev%p[0-9]*}"
+		case "$rootdev" in
+		mmc*)
+			CI_ROOTDEV="$rootdev"
+			CI_KERNPART="kernel"
+			CI_ROOTPART="rootfs"
+			emmc_do_upgrade "$1"
+			;;
+		*)
+			CI_KERNPART="fit"
+			nand_do_upgrade "$1"
+			;;
+		esac
+		;;
 	*)
 		nand_do_upgrade "$1"
 		;;
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index 5598a70aca..3a8f67dcad 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -694,6 +694,28 @@ define Device/ubnt_unifi-6-plus
 endef
 TARGET_DEVICES += ubnt_unifi-6-plus
 
+define Device/unielec_u7981-01
+  DEVICE_VENDOR := Unielec
+  DEVICE_MODEL := U7981-01
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware kmod-usb3 e2fsprogs f2fsck mkf2fs fdisk partx-utils
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+endef
+
+define Device/unielec_u7981-01-emmc
+  DEVICE_DTS := mt7981b-unielec-u7981-01-emmc
+  DEVICE_VARIANT := (EMMC)
+  $(call Device/unielec_u7981-01)
+endef
+TARGET_DEVICES += unielec_u7981-01-emmc
+
+define Device/unielec_u7981-01-nand
+  DEVICE_DTS := mt7981b-unielec-u7981-01-nand
+  DEVICE_VARIANT := (NAND)
+  $(call Device/unielec_u7981-01)
+endef
+TARGET_DEVICES += unielec_u7981-01-nand
+
 define Device/xiaomi_mi-router-wr30u-112m-nmbm
   DEVICE_VENDOR := Xiaomi
   DEVICE_MODEL := Mi Router WR30U (112M UBI with NMBM-Enabled layout)



