diff --git a/include/kernel-5.10 b/include/kernel-5.10
index 61a182a2cd..9e63190cdd 100644
--- a/include/kernel-5.10
+++ b/include/kernel-5.10
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.10 = .176
-LINUX_KERNEL_HASH-5.10.176 = ce072c60ba04173e05b2a1de3fefdeba5ac8b28b1958d92d21bdbf9b736ef793
+LINUX_VERSION-5.10 = .177
+LINUX_KERNEL_HASH-5.10.177 = 9f2261fea804112dcec8fa2dcc26e9c1388aa9cb7f86e5913beb00b9b5a15571
diff --git a/include/kernel-5.15 b/include/kernel-5.15
index 8575ce5d91..28c840bb87 100644
--- a/include/kernel-5.15
+++ b/include/kernel-5.15
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.15 = .105
-LINUX_KERNEL_HASH-5.15.105 = 01b537650332d2852722a626169cf7e5e798d11f9b578171b477868555f5e44f
+LINUX_VERSION-5.15 = .106
+LINUX_KERNEL_HASH-5.15.106 = 84e6934f828033570966e2a56fe8b72dc6e1409be296c66f4bf3c8ca6e3c8fe4
diff --git a/package/boot/uboot-envtools/files/mpc85xx b/package/boot/uboot-envtools/files/mpc85xx
index 6d389c5b57..a74466ab3a 100644
--- a/package/boot/uboot-envtools/files/mpc85xx
+++ b/package/boot/uboot-envtools/files/mpc85xx
@@ -8,6 +8,10 @@ touch /etc/config/ubootenv
board=$(board_name)
case "$board" in
+enterasys,ws-ap3715i)
+ ubootenv_add_uci_config "$(find_mtd_part 'cfg1')" "0x0" "0x10000" "0x10000"
+ ubootenv_add_uci_config "$(find_mtd_part 'cfg2')" "0x0" "0x10000" "0x10000"
+ ;;
extreme-networks,ws-ap3825i)
ubootenv_add_uci_config "$(find_mtd_part 'cfg1')" "0x0" "0x10000" "0x20000"
ubootenv_add_uci_config "$(find_mtd_part 'cfg2')" "0x0" "0x10000" "0x20000"
diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index 83048e50d3..4950b94c62 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -52,6 +52,7 @@ $(eval $(call KernelPackage,crypto-aead))
define KernelPackage/crypto-arc4
TITLE:=ARC4 cipher CryptoAPI module
+ DEPENDS:=+kmod-crypto-user
KCONFIG:= \
CONFIG_CRYPTO_ARC4 \
CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y
@@ -541,7 +542,7 @@ define KernelPackage/crypto-lib-curve25519/config
imply PACKAGE_kmod-crypto-kpp
endef
-define KernelPackage/crypto-lib-curve25519/x86/64
+define KernelPackage/crypto-lib-curve25519/x86_64
KCONFIG+=CONFIG_CRYPTO_CURVE25519_X86
FILES+=$(LINUX_DIR)/arch/x86/crypto/curve25519-x86_64.ko
endef
@@ -556,6 +557,11 @@ ifeq ($(ARCH)-$(CONFIG_KERNEL_MODE_NEON),arm-y)
$(KernelPackage/crypto-lib-curve25519/arm-neon)
endif
+ifdef KernelPackage/crypto-lib-curve25519/$(ARCH)
+ KernelPackage/crypto-lib-curve25519/$(CRYPTO_TARGET)=\
+ $(KernelPackage/crypto-lib-curve25519/$(ARCH))
+endif
+
$(eval $(call KernelPackage,crypto-lib-curve25519))
@@ -646,11 +652,16 @@ define KernelPackage/crypto-md5/octeon
AUTOLOAD+=$(call AutoLoad,09,octeon-md5)
endef
-define KernelPackage/crypto-md5/mpc85xx
+define KernelPackage/crypto-md5/powerpc
FILES+=$(LINUX_DIR)/arch/powerpc/crypto/md5-ppc.ko
AUTOLOAD+=$(call AutoLoad,09,md5-ppc)
endef
+ifdef KernelPackage/crypto-md5/$(ARCH)
+ KernelPackage/crypto-md5/$(CRYPTO_TARGET)=\
+ $(KernelPackage/crypto-md5/$(ARCH))
+endif
+
$(eval $(call KernelPackage,crypto-md5))
@@ -668,7 +679,7 @@ $(eval $(call KernelPackage,crypto-michael-mic))
define KernelPackage/crypto-misc
TITLE:=Other CryptoAPI modules
- DEPENDS:=+kmod-crypto-xts
+ DEPENDS:=+kmod-crypto-xts +kmod-crypto-user
KCONFIG:= \
CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y \
CONFIG_CRYPTO_CAMELLIA_X86_64 \
@@ -735,7 +746,7 @@ ifndef CONFIG_TARGET_x86_64
endef
endif
-define KernelPackage/crypto-misc/x86/64
+define KernelPackage/crypto-misc/x86_64
FILES+= \
$(LINUX_DIR)/arch/x86/crypto/camellia-x86_64.ko \
$(LINUX_DIR)/arch/x86/crypto/blowfish-x86_64.ko \
@@ -755,6 +766,11 @@ define KernelPackage/crypto-misc/x86/64
twofish-avx-x86_64 blowfish-x86_64 serpent-avx-x86_64 serpent-avx2)
endef
+ifdef KernelPackage/crypto-misc/$(ARCH)
+ KernelPackage/crypto-misc/$(CRYPTO_TARGET)=\
+ $(KernelPackage/crypto-misc/$(ARCH))
+endif
+
$(eval $(call KernelPackage,crypto-misc))
@@ -884,11 +900,16 @@ define KernelPackage/crypto-sha1/mpc85xx
AUTOLOAD+=$(call AutoLoad,09,sha1-ppc-spe)
endef
-define KernelPackage/crypto-sha1/x86/64
+define KernelPackage/crypto-sha1/x86_64
FILES+=$(LINUX_DIR)/arch/x86/crypto/sha1-ssse3.ko
AUTOLOAD+=$(call AutoLoad,09,sha1-ssse3)
endef
+ifdef KernelPackage/crypto-sha1/$(ARCH)
+ KernelPackage/crypto-sha1/$(CRYPTO_TARGET)=\
+ $(KernelPackage/crypto-sha1/$(ARCH))
+endif
+
$(eval $(call KernelPackage,crypto-sha1))
@@ -917,11 +938,16 @@ define KernelPackage/crypto-sha256/mpc85xx
AUTOLOAD+=$(call AutoLoad,09,sha256-ppc-spe)
endef
-define KernelPackage/crypto-sha256/x86/64
+define KernelPackage/crypto-sha256/x86_64
FILES+=$(LINUX_DIR)/arch/x86/crypto/sha256-ssse3.ko
AUTOLOAD+=$(call AutoLoad,09,sha256-ssse3)
endef
+ifdef KernelPackage/crypto-sha256/$(ARCH)
+ KernelPackage/crypto-sha256/$(CRYPTO_TARGET)=\
+ $(KernelPackage/crypto-sha256/$(ARCH))
+endif
+
$(eval $(call KernelPackage,crypto-sha256))
@@ -954,11 +980,16 @@ endef
KernelPackage/crypto-sha512/tegra=$(KernelPackage/crypto-sha512/arm)
-define KernelPackage/crypto-sha512/x86/64
+define KernelPackage/crypto-sha512/x86_64
FILES+=$(LINUX_DIR)/arch/x86/crypto/sha512-ssse3.ko
AUTOLOAD+=$(call AutoLoad,09,sha512-ssse3)
endef
+ifdef KernelPackage/crypto-sha512/$(ARCH)
+ KernelPackage/crypto-sha512/$(CRYPTO_TARGET)=\
+ $(KernelPackage/crypto-sha512/$(ARCH))
+endif
+
$(eval $(call KernelPackage,crypto-sha512))
diff --git a/package/libs/libcap/Makefile b/package/libs/libcap/Makefile
index a35b5e394f..6f51b5d5ed 100644
--- a/package/libs/libcap/Makefile
+++ b/package/libs/libcap/Makefile
@@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libcap
-PKG_VERSION:=2.67
+PKG_VERSION:=2.68
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/libs/security/linux-privs/libcap2
-PKG_HASH:=ce9b22fdc271beb6dae7543da5f74cf24cb82e6848cfd088a5a069dec5ea5198
+PKG_HASH:=90be3b6d41be5f81ae4b03ec76012b0d27c829293684f6c05b65d5f9cce724b2
PKG_MAINTAINER:=Paul Wassi
PKG_LICENSE:=GPL-2.0-only
diff --git a/scripts/sercomm-payload.py b/scripts/sercomm-payload.py
index 5193069b6c..2390d5d93a 100755
--- a/scripts/sercomm-payload.py
+++ b/scripts/sercomm-payload.py
@@ -12,11 +12,21 @@ def create_output(args):
in_bytes = in_f.read(in_size)
in_f.close()
+ if (args.pid_file):
+ pid_st = os.stat(args.pid_file)
+ pid_size = pid_st.st_size
+
+ pid_f = open(args.pid_file, 'r+b')
+ pid_bytes = pid_f.read(pid_size)
+ pid_f.close()
+ else:
+ pid_bytes = bytes.fromhex(args.pid)
+
sha256 = hashlib.sha256()
sha256.update(in_bytes)
out_f = open(args.output_file, 'w+b')
- out_f.write(bytes.fromhex(args.pid))
+ out_f.write(pid_bytes)
out_f.write(sha256.digest())
out_f.write(in_bytes)
out_f.close()
@@ -38,6 +48,12 @@ def main():
type=str,
help='Output file')
+ parser.add_argument('--pid-file',
+ dest='pid_file',
+ action='store',
+ type=str,
+ help='Sercomm PID file')
+
parser.add_argument('--pid',
dest='pid',
action='store',
@@ -48,7 +64,7 @@ def main():
if ((not args.input_file) or
(not args.output_file) or
- (not args.pid)):
+ (not args.pid_file and not args.pid)):
parser.print_help()
create_output(args)
diff --git a/scripts/sercomm-pid.py b/scripts/sercomm-pid.py
index b89977a5b9..4d88a67839 100755
--- a/scripts/sercomm-pid.py
+++ b/scripts/sercomm-pid.py
@@ -27,11 +27,15 @@ def create_pid_file(args):
def get_pid(args):
buf = bytearray([PADDING] * PID_SIZE)
- enc = args.hw_version.rjust(8, '0').encode('ascii')
- struct.pack_into('>8s', buf, 0x0, enc)
+ if not args.hw_id:
+ enc = args.hw_version.rjust(14, '0').encode('ascii')
+ struct.pack_into('>14s', buf, 0x0, enc)
+ else:
+ enc = args.hw_version.rjust(8, '0').encode('ascii')
+ struct.pack_into('>8s', buf, 0x0, enc)
- enc = binascii.hexlify(args.hw_id.encode())
- struct.pack_into('>6s', buf, 0x8, enc)
+ enc = binascii.hexlify(args.hw_id.encode())
+ struct.pack_into('>6s', buf, 0x8, enc)
enc = args.sw_version.rjust(4, '0').encode('ascii')
struct.pack_into('>4s', buf, 0x64, enc)
@@ -41,6 +45,9 @@ def get_pid(args):
if (args.extra_padd_byte):
struct.pack_into (';
+ phy-mode = "gmii";
};
switch0port4: port@4 {
diff --git a/target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts b/target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts
index 22a0ffe792..062fdcafe9 100644
--- a/target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts
+++ b/target/linux/bmips/dts/bcm63168-comtrend-vr-3032u.dts
@@ -196,6 +196,7 @@
label = "lan2";
phy-handle = <&phy1>;
+ phy-mode = "mii";
};
port@1 {
@@ -203,6 +204,7 @@
label = "lan3";
phy-handle = <&phy2>;
+ phy-mode = "mii";
};
port@2 {
@@ -210,6 +212,7 @@
label = "lan4";
phy-handle = <&phy3>;
+ phy-mode = "mii";
};
port@3 {
@@ -217,6 +220,7 @@
label = "lan1";
phy-handle = <&phy4>;
+ phy-mode = "mii";
};
};
};
diff --git a/target/linux/bmips/dts/bcm63168-sercomm-shg2500.dts b/target/linux/bmips/dts/bcm63168-sercomm-shg2500.dts
new file mode 100644
index 0000000000..76bedfac94
--- /dev/null
+++ b/target/linux/bmips/dts/bcm63168-sercomm-shg2500.dts
@@ -0,0 +1,312 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm63268.dtsi"
+
+/ {
+ model = "Sercomm SHG2500";
+ compatible = "sercomm,shg2500", "brcm,bcm63168", "brcm,bcm63268";
+
+ aliases {
+ led-boot = &led_power_red;
+ led-failsafe = &led_power_red;
+ led-running = &led_power_red;
+ led-upgrade = &led_power_red;
+
+ led-internet = &led_internet_green;
+ led-usb = &led_modem_green;
+ led-wireless = &led_wireless_green;
+ };
+
+ i2c {
+ compatible = "i2c-gpio";
+ sda-gpios = <&gpio 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+ scl-gpios = <&gpio 9 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ keys {
+ compatible = "gpio-keys-polled";
+ poll-interval = <20>;
+
+ wps {
+ label = "wps";
+ gpios = <&gpio 34 GPIO_ACTIVE_LOW>;
+ linux,code = ;
+ debounce-interval = <60>;
+ };
+
+ reset {
+ label = "reset";
+ gpios = <&gpio 35 GPIO_ACTIVE_LOW>;
+ linux,code = ;
+ debounce-interval = <60>;
+ };
+ };
+};
+
+&ehci {
+ status = "okay";
+};
+
+ðernet {
+ status = "okay";
+
+ nvmem-cells = <&macaddr_cferom_6a0>;
+ nvmem-cell-names = "mac-address";
+};
+
+&hsspi {
+ status = "okay";
+
+ led-controller@1 {
+ compatible = "sercomm,msp430-leds";
+ reg = <1>;
+ spi-max-frequency = <500000>;
+
+ led@1 {
+ reg = <1>;
+ label = "red:modem";
+ };
+
+ led_modem_green: led@2 {
+ reg = <2>;
+ label = "green:modem";
+ };
+
+ led@3 {
+ reg = <3>;
+ label = "blue:modem";
+ };
+
+ led@4 {
+ reg = <4>;
+ label = "red:internet";
+ };
+
+ led@5 {
+ reg = <5>;
+ label = "red:phone";
+ };
+
+ led@6 {
+ reg = <6>;
+ label = "green:phone";
+ };
+
+ led_wireless_green: led@7 {
+ reg = <7>;
+ label = "green:wifi";
+ };
+
+ led_power_red: led@8 {
+ reg = <8>;
+ label = "red:power";
+ };
+
+ led_internet_green: led@9 {
+ reg = <9>;
+ label = "green:internet";
+ };
+ };
+};
+
+&mdio_int {
+ phy12: ethernet-phy@c {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <12>;
+ };
+};
+
+&mdio_ext {
+ switch@1e {
+ compatible = "brcm,bcm53125";
+ reg = <30>;
+
+ dsa,member = <1 0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+ label = "lan1";
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan2";
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "lan3";
+ };
+
+ port@4 {
+ reg = <4>;
+ label = "lan4";
+ };
+
+ port@8 {
+ reg = <8>;
+
+ phy-mode = "rgmii";
+ ethernet = <&switch0port4>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
+};
+
+&nflash {
+ status = "okay";
+
+ nandcs@0 {
+ compatible = "brcm,nandcs";
+ reg = <0>;
+ nand-ecc-step-size = <512>;
+ nand-ecc-strength = <15>;
+ nand-on-flash-bbt;
+ brcm,nand-oob-sector-size = <64>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ cferom: partition@0 {
+ label = "cferom";
+ reg = <0x0000000 0x0020000>;
+ read-only;
+ };
+
+ partition@20000 {
+ label = "part_map";
+ reg = <0x0020000 0x00a0000>;
+ read-only;
+ };
+
+ partition@c0000 {
+ label = "cferam1";
+ reg = <0x00c0000 0x0140000>;
+ read-only;
+ };
+
+ partition@200000 {
+ label = "cferam2";
+ reg = <0x0200000 0x0140000>;
+ read-only;
+ };
+
+ artition@6920000 {
+ label = "bootflag1";
+ reg = <0x6920000 0x0140000>;
+ };
+
+ partition@6a60000 {
+ label = "bootflag2";
+ reg = <0x6a60000 0x0140000>;
+ };
+
+ partition@520000 {
+ compatible = "sercomm,wfi";
+ label = "wfi";
+ reg = <0x0520000 0x6400000>;
+ };
+
+ partition@6ba0000 {
+ label = "xml_cfg";
+ reg = <0x6ba0000 0x0280000>;
+ read-only;
+ };
+
+ partition@6e20000 {
+ label = "app_data";
+ reg = <0x6e20000 0x0280000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&ohci {
+ status = "okay";
+};
+
+&pcie {
+ status = "okay";
+};
+
+&pinctrl {
+ pinctrl_uart1: uart1-pins {
+ pinctrl_uart1_sdin: uart1_sdin {
+ function = "uart1_sdin";
+ pins = "gpio12";
+ };
+
+ pinctrl_uart1_sdout: uart1_sdout {
+ function = "uart1_sdout";
+ pins = "gpio13";
+ };
+ };
+};
+
+&switch0 {
+ dsa,member = <0 0>;
+
+ ports {
+ port@3 {
+ reg = <3>;
+ label = "wan";
+
+ phy-handle = <&phy12>;
+ phy-mode = "gmii";
+ };
+
+ switch0port4: port@4 {
+ reg = <4>;
+ label = "extsw";
+
+ phy-mode = "rgmii";
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
+
+&uart1 {
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart1>;
+};
+
+&usbh {
+ status = "okay";
+};
+
+&cferom {
+ compatible = "nvmem-cells";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ macaddr_cferom_6a0: macaddr@6a0 {
+ reg = <0x6a0 0x6>;
+ };
+};
diff --git a/target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts b/target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts
index ec50c3e07d..9226922a7a 100644
--- a/target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts
+++ b/target/linux/bmips/dts/bcm6318-comtrend-ar-5315u.dts
@@ -213,6 +213,7 @@
label = "lan4";
phy-handle = <&phy1>;
+ phy-mode = "mii";
};
port@1 {
@@ -220,6 +221,7 @@
label = "lan3";
phy-handle = <&phy2>;
+ phy-mode = "mii";
};
port@2 {
@@ -227,6 +229,7 @@
label = "lan2";
phy-handle = <&phy3>;
+ phy-mode = "mii";
};
port@3 {
@@ -234,6 +237,7 @@
label = "lan1";
phy-handle = <&phy4>;
+ phy-mode = "mii";
};
};
};
diff --git a/target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts b/target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts
index 47db0809e1..df6ee5eadd 100644
--- a/target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts
+++ b/target/linux/bmips/dts/bcm6328-comtrend-ar-5387un.dts
@@ -170,6 +170,7 @@
label = "lan1";
phy-handle = <&phy1>;
+ phy-mode = "mii";
};
port@1 {
@@ -177,6 +178,7 @@
label = "lan2";
phy-handle = <&phy2>;
+ phy-mode = "mii";
};
port@2 {
@@ -184,6 +186,7 @@
label = "lan3";
phy-handle = <&phy3>;
+ phy-mode = "mii";
};
port@3 {
@@ -191,6 +194,7 @@
label = "lan4";
phy-handle = <&phy4>;
+ phy-mode = "mii";
};
};
};
diff --git a/target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts b/target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts
index 29d8dfd56e..5f0565fa4c 100644
--- a/target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts
+++ b/target/linux/bmips/dts/bcm6368-comtrend-vr-3025u.dts
@@ -135,6 +135,7 @@
label = "lan1";
phy-handle = <&phy1>;
+ phy-mode = "mii";
};
port@1 {
@@ -142,6 +143,7 @@
label = "lan2";
phy-handle = <&phy2>;
+ phy-mode = "mii";
};
port@2 {
@@ -149,6 +151,7 @@
label = "lan3";
phy-handle = <&phy3>;
+ phy-mode = "mii";
};
port@3 {
@@ -156,6 +159,7 @@
label = "lan4";
phy-handle = <&phy4>;
+ phy-mode = "mii";
};
};
};
diff --git a/target/linux/bmips/files/arch/mips/bmips/b43-sprom.c b/target/linux/bmips/files/arch/mips/bmips/b43-sprom.c
index edc7fb145b..d8d3b47983 100644
--- a/target/linux/bmips/files/arch/mips/bmips/b43-sprom.c
+++ b/target/linux/bmips/files/arch/mips/bmips/b43-sprom.c
@@ -40,7 +40,7 @@ struct b43_sprom {
static struct b43_sprom b43_sprom;
-#if defined (CONFIG_SSB_PCIHOST)
+#if IS_BUILTIN(CONFIG_SSB) && IS_ENABLED(CONFIG_SSB_SPROM)
static u16 bcm4306_sprom_map[] = {
0x4001, 0x0000, 0x0453, 0x14e4, 0x4320, 0x8000, 0x0002, 0x0002,
0x1000, 0x1800, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -185,9 +185,9 @@ struct b43_sprom_raw bcm43222_sprom = {
.size = ARRAY_SIZE(bcm43222_sprom_map),
.type = B43_SPROM_SSB,
};
-#endif /* CONFIG_SSB_PCIHOST */
+#endif /* CONFIG_SSB && CONFIG_SSB_SPROM */
-#if defined(CONFIG_BCMA_HOST_PCI)
+#if IS_BUILTIN(CONFIG_BCMA)
static u16 bcm4313_sprom_map[] = {
0x2801, 0x0000, 0x0510, 0x14e4, 0x0078, 0xedbe, 0x0000, 0x2bc4,
0x2a64, 0x2964, 0x2c64, 0x3ce7, 0x46ff, 0x47ff, 0x0c00, 0x0820,
@@ -446,7 +446,7 @@ struct b43_sprom_raw bcm43228_sprom = {
.size = ARRAY_SIZE(bcm43228_sprom_map),
.type = B43_SPROM_BCMA,
};
-#endif /* CONFIG_BCMA_HOST_PCI */
+#endif /* CONFIG_BCMA */
/* Get the word-offset for a SSB_SPROM_XXX define. */
#define SPOFF(offset) ((offset) / sizeof(u16))
@@ -1064,7 +1064,7 @@ static void b43_sprom_set(struct b43_sprom *priv)
}
}
-#if defined(CONFIG_SSB_PCIHOST)
+#if IS_BUILTIN(CONFIG_SSB) && IS_ENABLED(CONFIG_SSB_SPROM)
int b43_get_fallback_ssb_sprom(struct ssb_bus *bus, struct ssb_sprom *out)
{
struct b43_sprom *priv = &b43_sprom;
@@ -1087,9 +1087,9 @@ int b43_get_fallback_ssb_sprom(struct ssb_bus *bus, struct ssb_sprom *out)
return -EINVAL;
}
}
-#endif /* CONFIG_SSB_PCIHOST */
+#endif /* CONFIG_SSB && CONFIG_SSB_SPROM */
-#if defined(CONFIG_BCMA_HOST_PCI)
+#if IS_BUILTIN(CONFIG_BCMA)
int b43_get_fallback_bcma_sprom(struct bcma_bus *bus, struct ssb_sprom *out)
{
struct b43_sprom *priv = &b43_sprom;
@@ -1112,7 +1112,7 @@ int b43_get_fallback_bcma_sprom(struct bcma_bus *bus, struct ssb_sprom *out)
return -EINVAL;
}
}
-#endif /* CONFIG_BCMA_HOST_PCI */
+#endif /* CONFIG_BCMA */
static int b43_sprom_probe(struct platform_device *pdev)
{
@@ -1140,30 +1140,30 @@ static int b43_sprom_probe(struct platform_device *pdev)
memcpy(priv->sprom.et0mac, priv->mac, ETH_ALEN);
memcpy(priv->sprom.et1mac, priv->mac, ETH_ALEN);
-#if defined(CONFIG_SSB_PCIHOST)
+#if IS_BUILTIN(CONFIG_SSB) && IS_ENABLED(CONFIG_SSB_SPROM)
ret = ssb_arch_register_fallback_sprom(&b43_get_fallback_ssb_sprom);
if (ret)
return ret;
-#endif /* CONFIG_SSB_PCIHOST */
+#endif /* CONFIG_SSB && CONFIG_SSB_SPROM */
-#if defined(CONFIG_BCMA_HOST_PCI)
+#if IS_BUILTIN(CONFIG_BCMA)
ret = bcma_arch_register_fallback_sprom(b43_get_fallback_bcma_sprom);
if (ret)
return ret;
-#endif /* CONFIG_BCMA_HOST_PCI */
+#endif /* CONFIG_BCMA */
return 0;
}
static const struct of_device_id b43_sprom_of_match[] = {
{ .compatible = "brcm,bcm43xx-sprom", .data = NULL },
-#if defined (CONFIG_SSB_PCIHOST)
+#if IS_BUILTIN(CONFIG_SSB) && IS_ENABLED(CONFIG_SSB_SPROM)
{ .compatible = "brcm,bcm4306-sprom", .data = &bcm4306_sprom, },
{ .compatible = "brcm,bcm4321-sprom", .data = &bcm4321_sprom, },
{ .compatible = "brcm,bcm4322-sprom", .data = &bcm4322_sprom, },
{ .compatible = "brcm,bcm43222-sprom", .data = &bcm43222_sprom, },
-#endif /* CONFIG_BCMA_HOST_PCI */
-#if defined(CONFIG_BCMA_HOST_PCI)
+#endif /* CONFIG_SSB && CONFIG_SSB_SPROM */
+#if IS_BUILTIN(CONFIG_BCMA)
{ .compatible = "brcm,bcm4313-sprom", .data = &bcm4313_sprom, },
{ .compatible = "brcm,bcm4331-sprom", .data = &bcm4331_sprom, },
{ .compatible = "brcm,bcm43131-sprom", .data = &bcm43131_sprom, },
@@ -1171,7 +1171,7 @@ static const struct of_device_id b43_sprom_of_match[] = {
{ .compatible = "brcm,bcm43225-sprom", .data = &bcm43225_sprom, },
{ .compatible = "brcm,bcm43227-sprom", .data = &bcm43227_sprom, },
{ .compatible = "brcm,bcm43228-sprom", .data = &bcm43228_sprom, },
-#endif /* CONFIG_BCMA_HOST_PCI */
+#endif /* CONFIG_BCMA */
{ /* sentinel */ }
};
diff --git a/target/linux/bmips/files/drivers/leds/leds-sercomm-msp430.c b/target/linux/bmips/files/drivers/leds/leds-sercomm-msp430.c
new file mode 100644
index 0000000000..5409142989
--- /dev/null
+++ b/target/linux/bmips/files/drivers/leds/leds-sercomm-msp430.c
@@ -0,0 +1,380 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Driver for Sercomm MSP430G2513 LEDs.
+ *
+ * Copyright 2023 Álvaro Fernández Rojas
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include "leds.h"
+
+/*
+ * MSP430G2513 SPI protocol description:
+ * +----+----+----+----+----+----+
+ * | b1 | b2 | b3 | b4 | b5 | b6 |
+ * +----+----+----+----+----+----+
+ * 6 bytes TX & RX per transaction.
+ *
+ * LEDs:
+ * MSP430G2513 can control up to 9 LEDs.
+ * b1: LED ID [1,9]
+ * b2: LED function
+ * b3-b6: LED function parameters
+ *
+ * LED functions:
+ * [0] Off
+ * [1] On
+ * [2] Flash
+ * - b4: delay (x 6ms)
+ * - b5: repeat (0 = infinite)
+ * [3] Pulse
+ * - b3: delay (x 6ms)
+ * - b4: blink while pulsing? (unknown)
+ * - b5: repeat (0 = infinite)
+ * [4] Pulse On
+ * - b3: delay (x 6ms)
+ * - b4: blink while pulsing? (unknown)
+ * - b5: repeat (0 = infinite)
+ * [5] Pulse Off
+ * - b3: delay (x 6ms)
+ * - b4: blink while pulsing? (unknown)
+ * - b5: repeat (0 = infinite)
+ * [6] Level
+ * - b3: brightness [0,4]
+ *
+ * MCU Commands (b1 = 0x55):
+ * [0x0a] FW upgrade data
+ * - b3: Data size (usually 0x40), which is appended to TX & RX.
+ * [0x31] Get MCU version? (unknown)
+ * [0x68] Get MCU work mode
+ * [0xa5] Start FW upgrade
+ * [0xf0] End FW upgrade
+ */
+
+#define MSP430_CMD_BYTES 6
+#define MSP430_CMD_MCU 0x55
+#define MSP430_MCU_WM 0x68
+
+#define MSP430_LED_MIN_ID 1
+#define MSP430_LED_MAX_ID 9
+
+#define MSP430_LED_OFF 0
+#define MSP430_LED_ON 1
+#define MSP430_LED_FLASH 2
+#define MSP430_LED_PULSE 3
+#define MSP430_LED_PULSE_ON 4
+#define MSP430_LED_PULSE_OFF 5
+#define MSP430_LED_LEVEL 6
+
+#define MSP430_LED_BLINK_DEF 500
+#define MSP430_LED_BLINK_MASK 0xff
+#define MSP430_LED_BLINK_MS 6
+#define MSP430_LED_BLINK_MAX (MSP430_LED_BLINK_MS * \
+ MSP430_LED_BLINK_MASK)
+
+#define MSP430_LED_BRIGHTNESS_MAX 5
+#define MSP430_LED_REPEAT_MAX 0xff
+
+/**
+ * struct msp430_led - state container for Sercomm MSP430 based LEDs
+ * @cdev: LED class device for this LED
+ * @spi: spi resource
+ * @id: LED ID
+ */
+struct msp430_led {
+ struct led_classdev cdev;
+ struct spi_device *spi;
+ u8 id;
+};
+
+static inline int msp430_cmd(struct spi_device *spi, u8 tx[MSP430_CMD_BYTES],
+ u8 rx[MSP430_CMD_BYTES])
+{
+ struct device *dev = &spi->dev;
+ int rc;
+
+ memset(rx, 0, MSP430_CMD_BYTES);
+
+ rc = spi_write_then_read(spi, tx, MSP430_CMD_BYTES,
+ rx, MSP430_CMD_BYTES);
+ if (rc)
+ dev_err(dev, "spi error\n");
+
+ dev_dbg(dev, "msp430_cmd: [%02x %02x %02x %02x %02x %02x]"
+ " -> [%02x %02x %02x %02x %02x %02x]",
+ tx[0], tx[1], tx[2], tx[3], tx[4], tx[5],
+ rx[0], rx[1], rx[2], rx[3], rx[4], rx[5]);
+
+ return rc;
+}
+
+static unsigned long msp430_blink_delay(unsigned long delay)
+{
+ unsigned long msp430_delay;
+
+ msp430_delay = delay + MSP430_LED_BLINK_MS / 2;
+ msp430_delay = msp430_delay / MSP430_LED_BLINK_MS;
+ if (msp430_delay == 0)
+ msp430_delay = 1;
+
+ return msp430_delay;
+}
+
+static int msp430_blink_set(struct led_classdev *led_cdev,
+ unsigned long *delay_on,
+ unsigned long *delay_off)
+{
+ struct msp430_led *led =
+ container_of(led_cdev, struct msp430_led, cdev);
+ u8 tx[MSP430_CMD_BYTES] = {led->id, MSP430_LED_FLASH, 0, 0, 0, 0};
+ u8 rx[MSP430_CMD_BYTES];
+ unsigned long delay;
+
+ if (!*delay_on)
+ *delay_on = MSP430_LED_BLINK_DEF;
+ if (!*delay_off)
+ *delay_off = MSP430_LED_BLINK_DEF;
+
+ delay = msp430_blink_delay(*delay_on);
+ if (delay != msp430_blink_delay(*delay_off)) {
+ dev_dbg(led_cdev->dev,
+ "fallback to soft blinking (delay_on != delay_off)\n");
+ return -EINVAL;
+ }
+
+ if (delay > MSP430_LED_BLINK_MASK) {
+ dev_dbg(led_cdev->dev,
+ "fallback to soft blinking (delay > %ums)\n",
+ MSP430_LED_BLINK_MAX);
+ return -EINVAL;
+ }
+
+ tx[3] = delay;
+
+ return msp430_cmd(led->spi, tx, rx);
+}
+
+static int msp430_brightness_set(struct led_classdev *led_cdev,
+ enum led_brightness brightness)
+{
+ struct msp430_led *led =
+ container_of(led_cdev, struct msp430_led, cdev);
+ u8 tx[MSP430_CMD_BYTES] = {led->id, 0, 0, 0, 0, 0};
+ u8 rx[MSP430_CMD_BYTES];
+ u8 val = (u8) brightness;
+
+ switch (val)
+ {
+ case LED_OFF:
+ tx[1] = MSP430_LED_OFF;
+ break;
+ case MSP430_LED_BRIGHTNESS_MAX:
+ tx[1] = MSP430_LED_ON;
+ break;
+ default:
+ tx[1] = MSP430_LED_LEVEL;
+ tx[2] = val - 1;
+ break;
+ }
+
+ return msp430_cmd(led->spi, tx, rx);
+}
+
+static int msp430_pattern_clear(struct led_classdev *ldev)
+{
+ msp430_brightness_set(ldev, LED_OFF);
+
+ return 0;
+}
+
+static int msp430_pattern_set(struct led_classdev *led_cdev,
+ struct led_pattern *pattern,
+ u32 len, int repeat)
+{
+ struct msp430_led *led =
+ container_of(led_cdev, struct msp430_led, cdev);
+ u8 tx[MSP430_CMD_BYTES] = {led->id, 0, 0, 0, 0, 0};
+ u8 rx[MSP430_CMD_BYTES];
+ unsigned long delay0;
+ unsigned long delay1;
+ int rc;
+
+ if (len != 2 ||
+ repeat > MSP430_LED_REPEAT_MAX ||
+ pattern[0].delta_t > MSP430_LED_BLINK_MAX ||
+ pattern[1].delta_t > MSP430_LED_BLINK_MAX)
+ return -EINVAL;
+
+ delay0 = msp430_blink_delay(pattern[0].delta_t);
+ delay1 = msp430_blink_delay(pattern[1].delta_t);
+
+ /* Pulse: */
+ if (delay0 == delay1 &&
+ pattern[0].brightness == LED_OFF &&
+ pattern[1].brightness == MSP430_LED_BRIGHTNESS_MAX)
+ {
+ tx[1] = MSP430_LED_PULSE;
+ tx[2] = delay0;
+ tx[4] = (u8) repeat;
+ }
+
+ /* Pulse On: <0ms> */
+ if (pattern[0].delta_t != 0 &&
+ pattern[1].delta_t == 0 &&
+ pattern[0].brightness == LED_OFF &&
+ pattern[1].brightness == MSP430_LED_BRIGHTNESS_MAX) {
+ tx[1] = MSP430_LED_PULSE_ON;
+ tx[2] = delay0;
+ tx[4] = (u8) repeat;
+ }
+
+ /* Pulse Off: <0ms> */
+ if (pattern[0].delta_t != 0 &&
+ pattern[1].delta_t == 0 &&
+ pattern[0].brightness == MSP430_LED_BRIGHTNESS_MAX &&
+ pattern[1].brightness == LED_OFF) {
+ tx[1] = MSP430_LED_PULSE_OFF;
+ tx[2] = delay0;
+ tx[4] = (u8) repeat;
+ }
+
+ if (!tx[1])
+ return -EINVAL;
+
+ rc = msp430_cmd(led->spi, tx, rx);
+ if (rc)
+ return rc;
+
+ return 0;
+}
+
+static int msp430_led(struct spi_device *spi, struct device_node *nc, u8 id)
+{
+ struct device *dev = &spi->dev;
+ struct led_init_data init_data = {};
+ struct msp430_led *led;
+ enum led_default_state state;
+ int rc;
+
+ led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL);
+ if (!led)
+ return -ENOMEM;
+
+ led->id = id;
+ led->spi = spi;
+
+ init_data.fwnode = of_fwnode_handle(nc);
+
+ state = led_init_default_state_get(init_data.fwnode);
+ switch (state) {
+ case LEDS_DEFSTATE_ON:
+ led->cdev.brightness = MSP430_LED_BRIGHTNESS_MAX;
+ break;
+ default:
+ led->cdev.brightness = LED_OFF;
+ break;
+ }
+
+ msp430_brightness_set(&led->cdev, led->cdev.brightness);
+
+ led->cdev.blink_set = msp430_blink_set;
+ led->cdev.brightness_set_blocking = msp430_brightness_set;
+ led->cdev.max_brightness = MSP430_LED_BRIGHTNESS_MAX;
+ led->cdev.pattern_clear = msp430_pattern_clear;
+ led->cdev.pattern_set = msp430_pattern_set;
+
+ rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
+ if (rc < 0)
+ return rc;
+
+ dev_dbg(dev, "registered LED %s\n", led->cdev.name);
+
+ return 0;
+}
+
+static inline int msp430_check_workmode(struct spi_device *spi)
+{
+ struct device *dev = &spi->dev;
+ u8 tx[MSP430_CMD_BYTES] = {MSP430_CMD_MCU, MSP430_MCU_WM, 0, 0, 0, 0};
+ u8 rx[MSP430_CMD_BYTES];
+ int rc;
+
+ rc = msp430_cmd(spi, tx, rx);
+ if (rc)
+ return rc;
+
+ if ((rx[3] == 0xA5 && rx[4] == 'Z') ||
+ (rx[4] == 0xA5 && rx[5] == 'Z') ||
+ (rx[4] == '\b' && rx[5] == '\n')) {
+ dev_err(dev, "invalid workmode: "
+ "[%02x %02x %02x %02x %02x %02x]\n",
+ rx[0], rx[1], rx[2], rx[3], rx[4], rx[5]);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int msp430_leds_probe(struct spi_device *spi)
+{
+ struct device *dev = &spi->dev;
+ struct device_node *np = dev_of_node(dev);
+ struct device_node *child;
+ int rc;
+
+ rc = msp430_check_workmode(spi);
+ if (rc)
+ return rc;
+
+ for_each_available_child_of_node(np, child) {
+ u32 reg;
+
+ if (of_property_read_u32(child, "reg", ®))
+ continue;
+
+ if (reg < MSP430_LED_MIN_ID || reg > MSP430_LED_MAX_ID) {
+ dev_err(dev, "invalid LED (%u) [%d, %d]\n", reg,
+ MSP430_LED_MIN_ID, MSP430_LED_MAX_ID);
+ continue;
+ }
+
+ rc = msp430_led(spi, child, reg);
+ if (rc < 0) {
+ of_node_put(child);
+ return rc;
+ }
+ }
+
+ return 0;
+}
+
+static const struct of_device_id msp430_leds_of_match[] = {
+ { .compatible = "sercomm,msp430-leds", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, msp430_leds_of_match);
+
+static const struct spi_device_id msp430_leds_id_table[] = {
+ { "msp430-leds", 0 },
+ { }
+};
+
+static struct spi_driver msp430_leds_driver = {
+ .driver = {
+ .name = KBUILD_MODNAME,
+ .of_match_table = msp430_leds_of_match,
+ },
+ .id_table = msp430_leds_id_table,
+ .probe = msp430_leds_probe,
+};
+
+module_spi_driver(msp430_leds_driver);
+
+MODULE_AUTHOR("Álvaro Fernández Rojas ");
+MODULE_DESCRIPTION("LED driver for Sercomm MSP430 controllers");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:leds-sercomm-msp430");
diff --git a/target/linux/bmips/generic/base-files/etc/board.d/01_leds b/target/linux/bmips/generic/base-files/etc/board.d/01_leds
deleted file mode 100644
index 3461eca10c..0000000000
--- a/target/linux/bmips/generic/base-files/etc/board.d/01_leds
+++ /dev/null
@@ -1,16 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. /lib/functions/leds.sh
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-led_usb="$(get_dt_led usb)"
-[ -n "$led_usb" ] && ucidef_set_led_usbdev "usb" "usb" "$led_usb" "1-1"
-
-led_usb2="$(get_dt_led usb2)"
-[ -n "$led_usb2" ] && ucidef_set_led_usbdev "usb2" "usb2" "$led_usb2" "2-1"
-
-board_config_flush
-
-exit 0
diff --git a/target/linux/bmips/generic/config-default b/target/linux/bmips/generic/config-default
deleted file mode 100644
index 33fa39715b..0000000000
--- a/target/linux/bmips/generic/config-default
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPLIT_BCM63XX_FW=y
diff --git a/target/linux/bmips/generic/target.mk b/target/linux/bmips/generic/target.mk
deleted file mode 100644
index bd75426f69..0000000000
--- a/target/linux/bmips/generic/target.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-BOARDNAME:=generic
-
-define Target/Description
- BMIPS boards without NAND support
-endef
diff --git a/target/linux/bmips/image/Makefile b/target/linux/bmips/image/Makefile
index d4afa091d1..17b75a2563 100644
--- a/target/linux/bmips/image/Makefile
+++ b/target/linux/bmips/image/Makefile
@@ -7,7 +7,15 @@ KERNEL_LOADADDR := 0x80010000 # RAM start + 64K
LOADER_ENTRY := 0x80a00000 # RAM start + 10M, for relocate
LZMA_TEXT_START := 0x81800000 # RAM start + 24M
+DEVICE_VARS += CFE_BOARD_ID CFE_EXTRAS
+DEVICE_VARS += CFE_PART_FLAGS CFE_PART_ID
+DEVICE_VARS += CFE_RAM_FILE
+DEVICE_VARS += CFE_RAM_JFFS2_NAME CFE_RAM_JFFS2_PAD
+DEVICE_VARS += CFE_WFI_CHIP_ID CFE_WFI_FLASH_TYPE
+DEVICE_VARS += CFE_WFI_FLAGS CFE_WFI_VERSION
DEVICE_VARS += CHIP_ID DEVICE_LOADADDR
+DEVICE_VARS += FLASH_MB IMAGE_OFFSET
+DEVICE_VARS += SERCOMM_FSVER SERCOMM_HWVER SERCOMM_SWVER
define Build/Compile
rm -rf $(KDIR)/relocate
@@ -194,12 +202,18 @@ define Build/cfe-sercomm-crypto
endef
define Build/cfe-sercomm-load
+ $(TOPDIR)/scripts/sercomm-pid.py \
+ --hw-version $(SERCOMM_HWVER) \
+ --sw-version $(SERCOMM_SWVER) \
+ --extra-padding-size 0x10 \
+ --pid-file $@.pid
$(TOPDIR)/scripts/sercomm-payload.py \
--input-file $@ \
--output-file $@.new \
- --pid "$(SERCOMM_PID)"
+ --pid-file $@.pid
mv $@.new $@
+ rm -f $@.pid
endef
define Build/cfe-sercomm-part
@@ -208,18 +222,18 @@ define Build/cfe-sercomm-part
--output-file $@.kernel_rootfs \
--part-name kernel_rootfs \
--part-version OpenWrt \
- --rootfs-version $(SERCOMM_VERSION)
+ --rootfs-version $(SERCOMM_FSVER)
rm -rf $@-rootfs_lib
mkdir -p $@-rootfs_lib
- echo $(SERCOMM_VERSION) > $@-rootfs_lib/lib_ver
+ echo $(SERCOMM_FSVER) > $@-rootfs_lib/lib_ver
$(call Build/cfe-jffs2,$@-rootfs_lib)
$(call Build/pad-to,$(BLOCKSIZE))
$(TOPDIR)/scripts/sercomm-partition-tag.py \
--input-file $@ \
--output-file $@.rootfs_lib \
--part-name rootfs_lib \
- --part-version $(SERCOMM_VERSION)
+ --part-version $(SERCOMM_FSVER)
mv $@.kernel_rootfs $@
dd if=$@.rootfs_lib >> $@
@@ -247,11 +261,74 @@ define Device/Default
DEVICE_LOADADDR :=
endef
+define Device/bcm63xx-cfe
+ FILESYSTEMS := squashfs jffs2-64k jffs2-128k
+ KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma
+ KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-lzma elf
+ KERNEL_INITRAMFS_SUFFIX := .elf
+ IMAGES := cfe.bin sysupgrade.bin
+ IMAGE/cfe.bin := \
+ cfe-bin $$$$(if $$$$(FLASH_MB),--pad $$$$(shell expr $$$$(FLASH_MB) / 2))
+ IMAGE/sysupgrade.bin := cfe-bin | append-metadata
+ BLOCKSIZE := 0x10000
+ IMAGE_OFFSET :=
+ FLASH_MB :=
+ CFE_BOARD_ID :=
+ CFE_EXTRAS = --block-size $$(BLOCKSIZE) \
+ --image-offset $$(if $$(IMAGE_OFFSET),$$(IMAGE_OFFSET),$$(BLOCKSIZE))
+endef
+
+# Legacy CFEs with specific LZMA parameters and no length
+define Device/bcm63xx-cfe-legacy
+ $(Device/bcm63xx-cfe)
+ KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma-cfe
+endef
+
+# CFE expects a single JFFS2 partition with cferam and kernel. However,
+# it's possible to fool CFE into properly loading both cferam and kernel
+# from two different JFFS2 partitions by adding dummy files (see
+# cfe-jffs2-cferam and cfe-jffs2-kernel).
+# Separate JFFS2 partitions allow upgrading openwrt without reflashing cferam
+# JFFS2 partition, which is much safer in case anything goes wrong.
+define Device/bcm63xx-nand
+ FILESYSTEMS := squashfs ubifs
+ KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma | cfe-jffs2-kernel
+ KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-lzma elf
+ KERNEL_INITRAMFS_SUFFIX := .elf
+ IMAGES := cfe.bin sysupgrade.bin
+ IMAGE/cfe.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) |\
+ cfe-jffs2-cferam | append-ubi | cfe-wfi-tag
+ IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+ KERNEL_SIZE := 5120k
+ CFE_PART_FLAGS :=
+ CFE_PART_ID :=
+ CFE_RAM_FILE :=
+ CFE_RAM_JFFS2_NAME :=
+ CFE_RAM_JFFS2_PAD :=
+ CFE_WFI_VERSION :=
+ CFE_WFI_CHIP_ID = 0x$$(CHIP_ID)
+ CFE_WFI_FLASH_TYPE :=
+ CFE_WFI_FLAGS :=
+ UBINIZE_OPTS := -E 5
+ DEVICE_PACKAGES += nand-utils
+endef
+
+define Device/sercomm-nand
+ $(Device/bcm63xx-nand)
+ IMAGES := factory.img sysupgrade.bin
+ IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi |\
+ cfe-sercomm-part | gzip | cfe-sercomm-load | cfe-sercomm-crypto
+ SERCOMM_FSVER :=
+ SERCOMM_HWVER :=
+ SERCOMM_SWVER :=
+endef
+
+### Package helpers ###
ATH9K_PACKAGES := kmod-ath9k wpad-basic-openssl
B43_PACKAGES := kmod-b43 wpad-basic-openssl
-USB1_PACKAGES := kmod-usb-ohci kmod-ledtrig-usbdev
+USB1_PACKAGES := kmod-usb-ohci kmod-usb-ledtrig-usbport
USB2_PACKAGES := $(USB1_PACKAGES) kmod-usb2
-include bcm63xx_$(SUBTARGET).mk
+include $(SUBTARGET).mk
$(eval $(call BuildImage))
diff --git a/target/linux/bmips/image/bcm6318.mk b/target/linux/bmips/image/bcm6318.mk
new file mode 100644
index 0000000000..fc73eb4521
--- /dev/null
+++ b/target/linux/bmips/image/bcm6318.mk
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+define Device/comtrend_ar-5315u
+ $(Device/bcm63xx-cfe)
+ DEVICE_VENDOR := Comtrend
+ DEVICE_MODEL := AR-5315u
+ CHIP_ID := 6318
+ CFE_BOARD_ID := 96318A-1441N1
+ FLASH_MB := 16
+ DEVICE_PACKAGES += $(USB2_PACKAGES) $(B43_PACKAGES) \
+ kmod-leds-bcm6328
+endef
+TARGET_DEVICES += comtrend_ar-5315u
diff --git a/target/linux/bmips/image/bcm63268.mk b/target/linux/bmips/image/bcm63268.mk
new file mode 100644
index 0000000000..6f7cda7405
--- /dev/null
+++ b/target/linux/bmips/image/bcm63268.mk
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+define Device/comtrend_vr-3032u
+ $(Device/bcm63xx-nand)
+ DEVICE_VENDOR := Comtrend
+ DEVICE_MODEL := VR-3032u
+ CHIP_ID := 63268
+ SOC := bcm63168
+ CFE_RAM_FILE := comtrend,vr-3032u/cferam.000
+ CFE_RAM_JFFS2_NAME := cferam.000
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ SUBPAGESIZE := 512
+ VID_HDR_OFFSET := 2048
+ DEVICE_PACKAGES += $(USB2_PACKAGES) \
+ kmod-leds-bcm6328
+ CFE_WFI_FLASH_TYPE := 3
+ CFE_WFI_VERSION := 0x5732
+endef
+TARGET_DEVICES += comtrend_vr-3032u
+
+define Device/sercomm_h500-s-lowi
+ $(Device/sercomm-nand)
+ DEVICE_VENDOR := Sercomm
+ DEVICE_MODEL := H500-s
+ DEVICE_VARIANT := lowi
+ DEVICE_LOADADDR := $(KERNEL_LOADADDR)
+ KERNEL := kernel-bin | append-dtb | lzma | cfe-jffs2-kernel
+ CHIP_ID := 63268
+ SOC := bcm63167
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ SUBPAGESIZE := 512
+ VID_HDR_OFFSET := 2048
+ DEVICE_PACKAGES += $(USB2_PACKAGES) \
+ kmod-leds-bcm6328
+ SERCOMM_FSVER := 1001
+ SERCOMM_HWVER := 1434b31
+ SERCOMM_SWVER := 3305
+endef
+TARGET_DEVICES += sercomm_h500-s-lowi
+
+define Device/sercomm_h500-s-vfes
+ $(Device/sercomm-nand)
+ DEVICE_VENDOR := Sercomm
+ DEVICE_MODEL := H500-s
+ DEVICE_VARIANT := vfes
+ DEVICE_LOADADDR := $(KERNEL_LOADADDR)
+ KERNEL := kernel-bin | append-dtb | lzma | cfe-jffs2-kernel
+ CHIP_ID := 63268
+ SOC := bcm63167
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ SUBPAGESIZE := 512
+ VID_HDR_OFFSET := 2048
+ DEVICE_PACKAGES += $(USB2_PACKAGES) \
+ kmod-leds-bcm6328
+ SERCOMM_FSVER := 1001
+ SERCOMM_HWVER := 142584b
+ SERCOMM_SWVER := 3417
+endef
+TARGET_DEVICES += sercomm_h500-s-vfes
+
+define Device/sercomm_shg2500
+ $(Device/sercomm-nand)
+ DEVICE_VENDOR := Sercomm
+ DEVICE_MODEL := SHG2500
+ DEVICE_LOADADDR := $(KERNEL_LOADADDR)
+ KERNEL := kernel-bin | append-dtb | lzma | cfe-jffs2-kernel
+ CHIP_ID := 63268
+ SOC := bcm63168
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ SUBPAGESIZE := 512
+ VID_HDR_OFFSET := 2048
+ DEVICE_PACKAGES += $(USB2_PACKAGES) kmod-i2c-gpio \
+ kmod-leds-sercomm-msp430
+ SERCOMM_FSVER := 1001
+ SERCOMM_HWVER := 1424e4a
+ SERCOMM_SWVER := 3207
+endef
+TARGET_DEVICES += sercomm_shg2500
diff --git a/target/linux/bmips/image/bcm6328.mk b/target/linux/bmips/image/bcm6328.mk
new file mode 100644
index 0000000000..3a739a7e71
--- /dev/null
+++ b/target/linux/bmips/image/bcm6328.mk
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+define Device/comtrend_ar-5387un
+ $(Device/bcm63xx-cfe)
+ DEVICE_VENDOR := Comtrend
+ DEVICE_MODEL := AR-5387un
+ CHIP_ID := 6328
+ CFE_BOARD_ID := 96328A-1441N1
+ FLASH_MB := 16
+ DEVICE_PACKAGES += $(USB2_PACKAGES) $(B43_PACKAGES) \
+ kmod-leds-bcm6328
+endef
+TARGET_DEVICES += comtrend_ar-5387un
diff --git a/target/linux/bmips/image/bcm6358.mk b/target/linux/bmips/image/bcm6358.mk
new file mode 100644
index 0000000000..33c87f9ce4
--- /dev/null
+++ b/target/linux/bmips/image/bcm6358.mk
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+define Device/huawei_hg556a-b
+ $(Device/bcm63xx-cfe-legacy)
+ DEVICE_VENDOR := Huawei
+ DEVICE_MODEL := EchoLife HG556a
+ DEVICE_VARIANT := B
+ CHIP_ID := 6358
+ CFE_BOARD_ID := HW556
+ CFE_EXTRAS += --rsa-signature "EchoLife_HG556a" --tag-version 8
+ BLOCKSIZE := 0x20000
+ DEVICE_PACKAGES += $(USB2_PACKAGES) $(ATH9K_PACKAGES) \
+ kmod-leds-gpio
+endef
+TARGET_DEVICES += huawei_hg556a-b
diff --git a/target/linux/bmips/image/bcm6362.mk b/target/linux/bmips/image/bcm6362.mk
new file mode 100644
index 0000000000..d6b4b1ce60
--- /dev/null
+++ b/target/linux/bmips/image/bcm6362.mk
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+define Device/huawei_hg253s-v2
+ $(Device/bcm63xx-nand)
+ IMAGES := flash.bin sysupgrade.bin
+ IMAGE/flash.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | cfe-jffs2-cferam | append-ubi
+ DEVICE_VENDOR := Huawei
+ DEVICE_MODEL := HG253s
+ DEVICE_VARIANT := v2
+ CHIP_ID := 6362
+ CFE_PART_FLAGS := 1
+ CFE_PART_ID := 0x0001EFEE
+ CFE_RAM_FILE := huawei,hg253s-v2/cferam.000
+ CFE_RAM_JFFS2_NAME := cferam.000
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ SUBPAGESIZE := 512
+ VID_HDR_OFFSET := 2048
+ DEVICE_PACKAGES += $(USB2_PACKAGES) \
+ kmod-leds-bcm6328 kmod-leds-gpio
+ CFE_WFI_FLASH_TYPE := 3
+endef
+TARGET_DEVICES += huawei_hg253s-v2
+
+define Device/netgear_dgnd3700-v2
+ $(Device/bcm63xx-nand)
+ DEVICE_VENDOR := NETGEAR
+ DEVICE_MODEL := DGND3700
+ DEVICE_VARIANT := v2
+ CHIP_ID := 6362
+ CFE_RAM_FILE := netgear,dgnd3700-v2/cferam
+ CFE_RAM_JFFS2_NAME := cferam
+ CFE_RAM_JFFS2_PAD := 496k
+ BLOCKSIZE := 16k
+ PAGESIZE := 512
+ DEVICE_PACKAGES += $(USB2_PACKAGES) \
+ kmod-leds-bcm6328 kmod-leds-gpio
+ CFE_WFI_FLASH_TYPE := 2
+ CFE_WFI_VERSION := 0x5731
+endef
+TARGET_DEVICES += netgear_dgnd3700-v2
diff --git a/target/linux/bmips/image/bcm6368.mk b/target/linux/bmips/image/bcm6368.mk
new file mode 100644
index 0000000000..be4cc576db
--- /dev/null
+++ b/target/linux/bmips/image/bcm6368.mk
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+define Device/comtrend_vr-3025u
+ $(Device/bcm63xx-cfe)
+ DEVICE_VENDOR := Comtrend
+ DEVICE_MODEL := VR-3025u
+ CHIP_ID := 6368
+ CFE_BOARD_ID := 96368M-1541N
+ BLOCKSIZE := 0x20000
+ FLASH_MB := 32
+ DEVICE_PACKAGES += $(USB2_PACKAGES) $(B43_PACKAGES) \
+ kmod-leds-gpio
+endef
+TARGET_DEVICES += comtrend_vr-3025u
diff --git a/target/linux/bmips/image/bcm63xx_generic.mk b/target/linux/bmips/image/bcm63xx_generic.mk
deleted file mode 100644
index 33282bd1a5..0000000000
--- a/target/linux/bmips/image/bcm63xx_generic.mk
+++ /dev/null
@@ -1,74 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-DEVICE_VARS += CFE_BOARD_ID CFE_EXTRAS
-DEVICE_VARS += FLASH_MB IMAGE_OFFSET
-
-define Device/bcm63xx-cfe
- FILESYSTEMS := squashfs jffs2-64k jffs2-128k
- KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma
- KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-lzma elf
- KERNEL_INITRAMFS_SUFFIX := .elf
- IMAGES := cfe.bin sysupgrade.bin
- IMAGE/cfe.bin := \
- cfe-bin $$$$(if $$$$(FLASH_MB),--pad $$$$(shell expr $$$$(FLASH_MB) / 2))
- IMAGE/sysupgrade.bin := cfe-bin | append-metadata
- BLOCKSIZE := 0x10000
- IMAGE_OFFSET :=
- FLASH_MB :=
- CFE_BOARD_ID :=
- CFE_EXTRAS = --block-size $$(BLOCKSIZE) \
- --image-offset $$(if $$(IMAGE_OFFSET),$$(IMAGE_OFFSET),$$(BLOCKSIZE))
-endef
-
-# Legacy CFEs with specific LZMA parameters and no length
-define Device/bcm63xx-cfe-legacy
- $(Device/bcm63xx-cfe)
- KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma-cfe
-endef
-
-define Device/comtrend_ar-5315u
- $(Device/bcm63xx-cfe)
- DEVICE_VENDOR := Comtrend
- DEVICE_MODEL := AR-5315u
- CHIP_ID := 6318
- CFE_BOARD_ID := 96318A-1441N1
- FLASH_MB := 16
- DEVICE_PACKAGES += $(USB2_PACKAGES) $(B43_PACKAGES)
-endef
-TARGET_DEVICES += comtrend_ar-5315u
-
-define Device/comtrend_ar-5387un
- $(Device/bcm63xx-cfe)
- DEVICE_VENDOR := Comtrend
- DEVICE_MODEL := AR-5387un
- CHIP_ID := 6328
- CFE_BOARD_ID := 96328A-1441N1
- FLASH_MB := 16
- DEVICE_PACKAGES += $(USB2_PACKAGES) $(B43_PACKAGES)
-endef
-TARGET_DEVICES += comtrend_ar-5387un
-
-define Device/comtrend_vr-3025u
- $(Device/bcm63xx-cfe)
- DEVICE_VENDOR := Comtrend
- DEVICE_MODEL := VR-3025u
- CHIP_ID := 6368
- CFE_BOARD_ID := 96368M-1541N
- BLOCKSIZE := 0x20000
- FLASH_MB := 32
- DEVICE_PACKAGES += $(USB2_PACKAGES) $(B43_PACKAGES)
-endef
-TARGET_DEVICES += comtrend_vr-3025u
-
-define Device/huawei_hg556a-b
- $(Device/bcm63xx-cfe-legacy)
- DEVICE_VENDOR := Huawei
- DEVICE_MODEL := EchoLife HG556a
- DEVICE_VARIANT := B
- CHIP_ID := 6358
- CFE_BOARD_ID := HW556
- CFE_EXTRAS += --rsa-signature "EchoLife_HG556a" --tag-version 8
- BLOCKSIZE := 0x20000
- DEVICE_PACKAGES += $(USB2_PACKAGES) $(ATH9K_PACKAGES)
-endef
-TARGET_DEVICES += huawei_hg556a-b
diff --git a/target/linux/bmips/image/bcm63xx_nand.mk b/target/linux/bmips/image/bcm63xx_nand.mk
deleted file mode 100644
index 01540625ed..0000000000
--- a/target/linux/bmips/image/bcm63xx_nand.mk
+++ /dev/null
@@ -1,156 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-DEVICE_VARS += CFE_PART_FLAGS CFE_PART_ID
-DEVICE_VARS += CFE_RAM_FILE
-DEVICE_VARS += CFE_RAM_JFFS2_NAME CFE_RAM_JFFS2_PAD
-DEVICE_VARS += CFE_WFI_CHIP_ID CFE_WFI_FLASH_TYPE
-DEVICE_VARS += CFE_WFI_FLAGS CFE_WFI_VERSION
-DEVICE_VARS += SERCOMM_PID SERCOMM_VERSION
-
-# CFE expects a single JFFS2 partition with cferam and kernel. However,
-# it's possible to fool CFE into properly loading both cferam and kernel
-# from two different JFFS2 partitions by adding dummy files (see
-# cfe-jffs2-cferam and cfe-jffs2-kernel).
-# Separate JFFS2 partitions allow upgrading openwrt without reflashing cferam
-# JFFS2 partition, which is much safer in case anything goes wrong.
-define Device/bcm63xx-nand
- FILESYSTEMS := squashfs ubifs
- KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma | cfe-jffs2-kernel
- KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-lzma elf
- KERNEL_INITRAMFS_SUFFIX := .elf
- IMAGES := cfe.bin sysupgrade.bin
- IMAGE/cfe.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) |\
- cfe-jffs2-cferam | append-ubi | cfe-wfi-tag
- IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
- KERNEL_SIZE := 5120k
- CFE_PART_FLAGS :=
- CFE_PART_ID :=
- CFE_RAM_FILE :=
- CFE_RAM_JFFS2_NAME :=
- CFE_RAM_JFFS2_PAD :=
- CFE_WFI_VERSION :=
- CFE_WFI_CHIP_ID = 0x$$(CHIP_ID)
- CFE_WFI_FLASH_TYPE :=
- CFE_WFI_FLAGS :=
- UBINIZE_OPTS := -E 5
- DEVICE_PACKAGES += nand-utils
-endef
-
-define Device/sercomm-nand
- $(Device/bcm63xx-nand)
- IMAGES := factory.img sysupgrade.bin
- IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi |\
- cfe-sercomm-part | gzip | cfe-sercomm-load | cfe-sercomm-crypto
- SERCOM_PID :=
- SERCOMM_VERSION :=
-endef
-
-define Device/comtrend_vr-3032u
- $(Device/bcm63xx-nand)
- DEVICE_VENDOR := Comtrend
- DEVICE_MODEL := VR-3032u
- CHIP_ID := 63268
- SOC := bcm63168
- CFE_RAM_FILE := comtrend,vr-3032u/cferam.000
- CFE_RAM_JFFS2_NAME := cferam.000
- BLOCKSIZE := 128k
- PAGESIZE := 2048
- SUBPAGESIZE := 512
- VID_HDR_OFFSET := 2048
- DEVICE_PACKAGES += $(USB2_PACKAGES)
- CFE_WFI_FLASH_TYPE := 3
- CFE_WFI_VERSION := 0x5732
-endef
-TARGET_DEVICES += comtrend_vr-3032u
-
-define Device/huawei_hg253s-v2
- $(Device/bcm63xx-nand)
- IMAGES := flash.bin sysupgrade.bin
- IMAGE/flash.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | cfe-jffs2-cferam | append-ubi
- DEVICE_VENDOR := Huawei
- DEVICE_MODEL := HG253s
- DEVICE_VARIANT := v2
- CHIP_ID := 6362
- CFE_PART_FLAGS := 1
- CFE_PART_ID := 0x0001EFEE
- CFE_RAM_FILE := huawei,hg253s-v2/cferam.000
- CFE_RAM_JFFS2_NAME := cferam.000
- BLOCKSIZE := 128k
- PAGESIZE := 2048
- SUBPAGESIZE := 512
- VID_HDR_OFFSET := 2048
- DEVICE_PACKAGES += $(USB2_PACKAGES)
- CFE_WFI_FLASH_TYPE := 3
-endef
-TARGET_DEVICES += huawei_hg253s-v2
-
-define Device/netgear_dgnd3700-v2
- $(Device/bcm63xx-nand)
- DEVICE_VENDOR := NETGEAR
- DEVICE_MODEL := DGND3700
- DEVICE_VARIANT := v2
- CHIP_ID := 6362
- CFE_RAM_FILE := netgear,dgnd3700-v2/cferam
- CFE_RAM_JFFS2_NAME := cferam
- CFE_RAM_JFFS2_PAD := 496k
- BLOCKSIZE := 16k
- PAGESIZE := 512
- DEVICE_PACKAGES += $(USB2_PACKAGES) $(B43_PACKAGES)
- CFE_WFI_FLASH_TYPE := 2
- CFE_WFI_VERSION := 0x5731
-endef
-TARGET_DEVICES += netgear_dgnd3700-v2
-
-define Device/sercomm_h500-s-lowi
- $(Device/sercomm-nand)
- DEVICE_VENDOR := Sercomm
- DEVICE_MODEL := H500-s
- DEVICE_VARIANT := lowi
- DEVICE_LOADADDR := $(KERNEL_LOADADDR)
- KERNEL := kernel-bin | append-dtb | lzma | cfe-jffs2-kernel
- CHIP_ID := 63268
- SOC := bcm63167
- BLOCKSIZE := 128k
- PAGESIZE := 2048
- SUBPAGESIZE := 512
- VID_HDR_OFFSET := 2048
- DEVICE_PACKAGES += $(USB2_PACKAGES)
- SERCOMM_PID := \
- 30 30 30 30 30 30 30 31 34 33 34 62 33 31 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 33 33 30 35 30 30 30 30 30 30 30 30 \
- 0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- SERCOMM_VERSION := 1001
-endef
-TARGET_DEVICES += sercomm_h500-s-lowi
-
-define Device/sercomm_h500-s-vfes
- $(Device/sercomm-nand)
- DEVICE_VENDOR := Sercomm
- DEVICE_MODEL := H500-s
- DEVICE_VARIANT := vfes
- DEVICE_LOADADDR := $(KERNEL_LOADADDR)
- KERNEL := kernel-bin | append-dtb | lzma | cfe-jffs2-kernel
- CHIP_ID := 63268
- SOC := bcm63167
- BLOCKSIZE := 128k
- PAGESIZE := 2048
- SUBPAGESIZE := 512
- VID_HDR_OFFSET := 2048
- DEVICE_PACKAGES += $(USB2_PACKAGES)
- SERCOMM_PID := \
- 30 30 30 30 30 30 30 31 34 32 35 38 34 62 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \
- 30 30 30 30 33 34 31 37 30 30 30 30 30 30 30 30 \
- 0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- SERCOMM_VERSION := 1001
-endef
-TARGET_DEVICES += sercomm_h500-s-vfes
diff --git a/target/linux/bmips/modules.mk b/target/linux/bmips/modules.mk
new file mode 100644
index 0000000000..3032dab709
--- /dev/null
+++ b/target/linux/bmips/modules.mk
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+define KernelPackage/leds-bcm6328
+ SUBMENU:=$(LEDS_MENU)
+ TITLE:=BCM6328 LED support
+ KCONFIG:=CONFIG_LEDS_BCM6328
+ FILES:=$(LINUX_DIR)/drivers/leds/leds-bcm6328.ko
+ DEPENDS:=@TARGET_bmips
+ AUTOLOAD:=$(call AutoLoad,60,leds-bcm6328,1)
+endef
+
+define KernelPackage/leds-bcm6328/description
+ Kernel support for the BCM6328 LED controller.
+endef
+
+$(eval $(call KernelPackage,leds-bcm6328))
+
+define KernelPackage/leds-bcm6358
+ SUBMENU:=$(LEDS_MENU)
+ TITLE:=BCM6358 LED support
+ KCONFIG:=CONFIG_LEDS_BCM6358
+ FILES:=$(LINUX_DIR)/drivers/leds/leds-bcm6358.ko
+ DEPENDS:=@TARGET_bmips
+ AUTOLOAD:=$(call AutoLoad,60,leds-bcm6358,1)
+endef
+
+define KernelPackage/leds-bcm6358/description
+ Kernel support for the BCM6358 LED controller.
+endef
+
+$(eval $(call KernelPackage,leds-bcm6358))
+
+define KernelPackage/leds-sercomm-msp430
+ SUBMENU:=$(LEDS_MENU)
+ TITLE:=Sercomm MSP430G2513 LED support
+ KCONFIG:=CONFIG_LEDS_SERCOMM_MSP430
+ FILES:=$(LINUX_DIR)/drivers/leds/leds-sercomm-msp430.ko
+ DEPENDS:=@TARGET_bmips +kmod-ledtrig-pattern
+ AUTOLOAD:=$(call AutoLoad,60,leds-sercomm-msp430,1)
+endef
+
+define KernelPackage/leds-sercomm-msp430/description
+ Kernel support for the Sercomm MSP430G2513 SPI LED controller.
+endef
+
+$(eval $(call KernelPackage,leds-sercomm-msp430))
diff --git a/target/linux/bmips/nand/base-files/etc/board.d/01_leds b/target/linux/bmips/nand/base-files/etc/board.d/01_leds
deleted file mode 100644
index 3461eca10c..0000000000
--- a/target/linux/bmips/nand/base-files/etc/board.d/01_leds
+++ /dev/null
@@ -1,16 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. /lib/functions/leds.sh
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-led_usb="$(get_dt_led usb)"
-[ -n "$led_usb" ] && ucidef_set_led_usbdev "usb" "usb" "$led_usb" "1-1"
-
-led_usb2="$(get_dt_led usb2)"
-[ -n "$led_usb2" ] && ucidef_set_led_usbdev "usb2" "usb2" "$led_usb2" "2-1"
-
-board_config_flush
-
-exit 0
diff --git a/target/linux/bmips/nand/config-default b/target/linux/bmips/nand/config-default
deleted file mode 100644
index eeb45b82f1..0000000000
--- a/target/linux/bmips/nand/config-default
+++ /dev/null
@@ -1,27 +0,0 @@
-CONFIG_CRC16=y
-CONFIG_CRYPTO_ACOMP2=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_HASH_INFO=y
-CONFIG_CRYPTO_LZO=y
-CONFIG_CRYPTO_ZSTD=y
-CONFIG_JFFS2_FS_NAND=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_MTD_NAND_BRCMNAND=y
-CONFIG_MTD_NAND_CORE=y
-CONFIG_MTD_NAND_ECC_SW_HAMMING=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_MTD_SPLIT_BCM_WFI_FW=y
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_BEB_LIMIT=20
-CONFIG_MTD_UBI_BLOCK=y
-# CONFIG_MTD_UBI_FASTMAP is not set
-# CONFIG_MTD_UBI_GLUEBI is not set
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_SGL_ALLOC=y
-CONFIG_UBIFS_FS=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/bmips/nand/target.mk b/target/linux/bmips/nand/target.mk
deleted file mode 100644
index da8ba0428a..0000000000
--- a/target/linux/bmips/nand/target.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-BOARDNAME:=nand
-FEATURES+=nand
-
-define Target/Description
- BMIPS boards with NAND support
-endef
diff --git a/target/linux/bmips/patches-5.15/502-net-mdio-mux-bcm6368-allow-disabling.patch b/target/linux/bmips/patches-5.15/502-net-mdio-mux-bcm6368-allow-disabling.patch
new file mode 100644
index 0000000000..3d9687bfc2
--- /dev/null
+++ b/target/linux/bmips/patches-5.15/502-net-mdio-mux-bcm6368-allow-disabling.patch
@@ -0,0 +1,10 @@
+--- a/drivers/net/mdio/Kconfig
++++ b/drivers/net/mdio/Kconfig
+@@ -219,7 +219,6 @@ config MDIO_BUS_MUX_BCM6368
+ tristate "Broadcom BCM6368 MDIO bus multiplexers"
+ depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST)
+ select MDIO_BUS_MUX
+- default BMIPS_GENERIC
+ help
+ This module provides a driver for MDIO bus multiplexers found in
+ BCM6368 based Broadcom SoCs. This multiplexer connects one of several
diff --git a/target/linux/bmips/patches-5.15/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch b/target/linux/bmips/patches-5.15/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch
new file mode 100644
index 0000000000..eeeb8d1ae0
--- /dev/null
+++ b/target/linux/bmips/patches-5.15/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch
@@ -0,0 +1,46 @@
+From 1a5f2263d388016c88d39e141c7eb8085c9313fc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?=
+Date: Wed, 5 Apr 2023 08:07:00 +0200
+Subject: [PATCH] leds: add support for Sercomm MSP430 LED controller
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Sercomm added an external MSP430G2513 for controlling LEDs through SPI on some
+boards.
+
+Signed-off-by: Álvaro Fernández Rojas
+---
+ drivers/leds/Kconfig | 9 +++++++++
+ drivers/leds/Makefile | 1 +
+ drivers/spi/spidev.c | 2 ++
+ 3 files changed, 12 insertions(+)
+
+--- a/drivers/leds/Kconfig
++++ b/drivers/leds/Kconfig
+@@ -288,6 +288,15 @@ config LEDS_COBALT_RAQ
+ help
+ This option enables support for the Cobalt Raq series LEDs.
+
++config LEDS_SERCOMM_MSP430
++ tristate "LED support for Sercomm MSP430 SPI LED controllers"
++ depends on LEDS_CLASS
++ depends on SPI
++ depends on OF
++ help
++ This option enables support for the Sercomm MSP430G2513 SPI LED
++ controllers.
++
+ config LEDS_SUNFIRE
+ tristate "LED support for SunFire servers."
+ depends on LEDS_CLASS
+--- a/drivers/leds/Makefile
++++ b/drivers/leds/Makefile
+@@ -77,6 +77,7 @@ 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_SERCOMM_MSP430) += leds-sercomm-msp430.o
+ obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o
+ obj-$(CONFIG_LEDS_SYSCON) += leds-syscon.o
+ obj-$(CONFIG_LEDS_TCA6507) += leds-tca6507.o
diff --git a/target/linux/generic/backport-5.15/702-v5.19-06-net-ethernet-mtk_eth_soc-support-TC_SETUP_BLOCK-for-.patch b/target/linux/generic/backport-5.15/702-v5.19-06-net-ethernet-mtk_eth_soc-support-TC_SETUP_BLOCK-for-.patch
index 72c6d28172..1950d81ebb 100644
--- a/target/linux/generic/backport-5.15/702-v5.19-06-net-ethernet-mtk_eth_soc-support-TC_SETUP_BLOCK-for-.patch
+++ b/target/linux/generic/backport-5.15/702-v5.19-06-net-ethernet-mtk_eth_soc-support-TC_SETUP_BLOCK-for-.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -563,10 +563,13 @@ mtk_eth_setup_tc_block(struct net_device
+@@ -564,10 +564,13 @@ mtk_eth_setup_tc_block(struct net_device
int mtk_eth_setup_tc(struct net_device *dev, enum tc_setup_type type,
void *type_data)
{
diff --git a/target/linux/generic/backport-5.15/702-v5.19-07-net-ethernet-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch b/target/linux/generic/backport-5.15/702-v5.19-07-net-ethernet-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch
index bc75d15211..f18a816b70 100644
--- a/target/linux/generic/backport-5.15/702-v5.19-07-net-ethernet-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch
+++ b/target/linux/generic/backport-5.15/702-v5.19-07-net-ethernet-mtk_eth_soc-allocate-struct-mtk_ppe-sep.patch
@@ -148,7 +148,7 @@ Signed-off-by: Felix Fietkau
return -EOPNOTSUPP;
if (f->binder_type != FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
-@@ -574,7 +574,7 @@ int mtk_eth_setup_tc(struct net_device *
+@@ -575,7 +575,7 @@ int mtk_eth_setup_tc(struct net_device *
int mtk_eth_offload_init(struct mtk_eth *eth)
{
diff --git a/target/linux/generic/backport-5.15/715-v6.0-net-ethernet-mtk_eth_soc-add-the-capability-to-run-m.patch b/target/linux/generic/backport-5.15/715-v6.0-net-ethernet-mtk_eth_soc-add-the-capability-to-run-m.patch
index 4d6dd4dcb4..93860e4145 100644
--- a/target/linux/generic/backport-5.15/715-v6.0-net-ethernet-mtk_eth_soc-add-the-capability-to-run-m.patch
+++ b/target/linux/generic/backport-5.15/715-v6.0-net-ethernet-mtk_eth_soc-add-the-capability-to-run-m.patch
@@ -307,7 +307,7 @@ Signed-off-by: Lorenzo Bianconi
return -EOPNOTSUPP;
if (f->binder_type != FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
-@@ -589,8 +589,5 @@ int mtk_eth_setup_tc(struct net_device *
+@@ -590,8 +590,5 @@ int mtk_eth_setup_tc(struct net_device *
int mtk_eth_offload_init(struct mtk_eth *eth)
{
diff --git a/target/linux/generic/config-5.15 b/target/linux/generic/config-5.15
index a78df3537a..0f9918c468 100644
--- a/target/linux/generic/config-5.15
+++ b/target/linux/generic/config-5.15
@@ -2450,6 +2450,7 @@ CONFIG_HW_PERF_EVENTS=y
# CONFIG_HW_RANDOM_ARM_SMCCC_TRNG is not set
# CONFIG_HW_RANDOM_ATMEL is not set
# CONFIG_HW_RANDOM_BA431 is not set
+# CONFIG_HW_RANDOM_BCM2835 is not set
# CONFIG_HW_RANDOM_CAVIUM is not set
# CONFIG_HW_RANDOM_CCTRNG is not set
# CONFIG_HW_RANDOM_EXYNOS is not set
diff --git a/target/linux/generic/hack-5.10/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch b/target/linux/generic/hack-5.10/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
index 648134c6d0..ef4635065d 100644
--- a/target/linux/generic/hack-5.10/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
+++ b/target/linux/generic/hack-5.10/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
@@ -29,7 +29,7 @@ Submitted-by: DENG Qingfang
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -2709,6 +2709,9 @@ static int mv88e6xxx_setup_port(struct m
+@@ -2714,6 +2714,9 @@ static int mv88e6xxx_setup_port(struct m
if (dsa_is_cpu_port(ds, port))
reg = 0;
diff --git a/target/linux/generic/hack-5.10/904-debloat_dma_buf.patch b/target/linux/generic/hack-5.10/904-debloat_dma_buf.patch
index 333ed12b06..7bf15c1dd8 100644
--- a/target/linux/generic/hack-5.10/904-debloat_dma_buf.patch
+++ b/target/linux/generic/hack-5.10/904-debloat_dma_buf.patch
@@ -72,7 +72,7 @@ Signed-off-by: Felix Fietkau
+MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3071,6 +3071,7 @@ int wake_up_state(struct task_struct *p,
+@@ -3074,6 +3074,7 @@ int wake_up_state(struct task_struct *p,
{
return try_to_wake_up(p, state, 0);
}
diff --git a/target/linux/generic/hack-5.15/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch b/target/linux/generic/hack-5.15/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
index ffa44f0960..e62f45f3c3 100644
--- a/target/linux/generic/hack-5.15/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
+++ b/target/linux/generic/hack-5.15/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
-@@ -2980,6 +2980,9 @@ static int mv88e6xxx_setup_port(struct m
+@@ -2985,6 +2985,9 @@ static int mv88e6xxx_setup_port(struct m
else
reg = 1 << port;
diff --git a/target/linux/generic/pending-5.10/760-net-dsa-mv88e6xxx-fix-vlan-setup.patch b/target/linux/generic/pending-5.10/760-net-dsa-mv88e6xxx-fix-vlan-setup.patch
index a9c2f7ed12..9c3b81fefb 100644
--- a/target/linux/generic/pending-5.10/760-net-dsa-mv88e6xxx-fix-vlan-setup.patch
+++ b/target/linux/generic/pending-5.10/760-net-dsa-mv88e6xxx-fix-vlan-setup.patch
@@ -17,7 +17,7 @@ Signed-off-by: DENG Qingfang
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -2929,6 +2929,7 @@ static int mv88e6xxx_setup(struct dsa_sw
+@@ -2934,6 +2934,7 @@ static int mv88e6xxx_setup(struct dsa_sw
chip->ds = ds;
ds->slave_mii_bus = mv88e6xxx_default_mdio_bus(chip);
diff --git a/target/linux/generic/pending-5.10/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch b/target/linux/generic/pending-5.10/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
index 10781da152..07a166125b 100644
--- a/target/linux/generic/pending-5.10/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
+++ b/target/linux/generic/pending-5.10/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
@@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -5498,6 +5498,7 @@ static int mv88e6xxx_register_switch(str
+@@ -5503,6 +5503,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-5.15/350-mips-bmips-BCM6358-disable-RAC-flush-for-TP1.patch b/target/linux/generic/pending-5.15/350-mips-bmips-BCM6358-disable-RAC-flush-for-TP1.patch
deleted file mode 100644
index 1941b853cc..0000000000
--- a/target/linux/generic/pending-5.15/350-mips-bmips-BCM6358-disable-RAC-flush-for-TP1.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From patchwork Fri Mar 17 10:20:04 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?=
-
-X-Patchwork-Id: 13178815
-Return-Path:
-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 583F3C6FD1D
- for ; Fri, 17 Mar 2023 10:20:18 +0000 (UTC)
-Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
- id S230027AbjCQKUQ (ORCPT );
- Fri, 17 Mar 2023 06:20:16 -0400
-Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59114 "EHLO
- lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
- with ESMTP id S230044AbjCQKUN (ORCPT
- ); Fri, 17 Mar 2023 06:20:13 -0400
-Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
- [IPv6:2a00:1450:4864:20::32f])
- by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D53A3A8C6D;
- Fri, 17 Mar 2023 03:20:11 -0700 (PDT)
-Received: by mail-wm1-x32f.google.com with SMTP id m35so2981539wms.4;
- Fri, 17 Mar 2023 03:20:11 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=gmail.com; s=20210112; t=1679048410;
- 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=B2zyx3U3AXPDRFjYOKBt3zCYzGwvMHjuxaFvhcNGMYw=;
- b=K3QDrLd9/AHTE97KGupZsihjvv1DcPrg2e5kH4N0u/ThdjpSlxk4PJnJ9/W85XPSVY
- zfpR2A/7EoOEyo9550zL4/vmpfYl5lHM165L/lkqA7Wk5e/nBD9VnONeb+Ez793paFFp
- RxLrZ8g8vsw5NIz3niUCWkssoP2pnhKziF9soVnCQVqJa9NU+K+eBXiQWjYeXVVpf8Ea
- AoOekpaWai5FbM4COmKJ/BDQtrJNRfInvBhVWCCkHFy1S5u62UdueveL3+51NeXMtdqz
- SetdI7WF1tRyDt+Xg/KfChDi8C0UaNruqs4LXxNzfsB61BFNwRFhSKOZM1Upw0RCaBBt
- 0+2Q==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=1e100.net; s=20210112; t=1679048410;
- 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=B2zyx3U3AXPDRFjYOKBt3zCYzGwvMHjuxaFvhcNGMYw=;
- b=ssmBiLA9DVCYeyC8re6arEIfPSvf12+ZaR/lSBvPJ7neJBPgX28RJgfWLbi9OusC5u
- wmSMBZ0qVjMyrcS6sYaOGQ56OxGeHkV1AoCPChp4/4gaWQJmyqY+2oPTGkA2+m0074uL
- T2+QW0Lur1M2SHucj+0efX80LEnRxP5vm9AM4eyLIlJ2QQxjgZXugBUhCrbZGXiEP9eB
- SdMQGSWQD8CGXoT5XdlsjsoVz1OD3eTQ473h9hoEzJJHt8iaev/cbakU+sXJp47LAOm+
- Z9lFp48X9PYKCMLnIpv9R7wDOZEuVUsFbSt+cWYjYhe/2pk81hq/6GoqwRg49d5RCGYg
- 0yJQ==
-X-Gm-Message-State: AO0yUKXr0uvEyGo9igqtrAKEBKNPRe53kAqRy0B/zeh/7tt0qOu9YtUj
- YMatgtK4nm//OUHE/4+7hlAo/t4+V2+khw==
-X-Google-Smtp-Source:
- AK7set+XbAcnblyGYtZEQ3m/zbT8wd4QB6ZZhQIf//mcWDT47T1rsYpCDodIx9M1dCI0qTfC6sZw7w==
-X-Received: by 2002:a05:600c:540a:b0:3ea:e582:48dd with SMTP id
- he10-20020a05600c540a00b003eae58248ddmr24486119wmb.34.1679048409764;
- Fri, 17 Mar 2023 03:20:09 -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
- 1-20020a05600c234100b003e00c453447sm7336512wmq.48.2023.03.17.03.20.08
- (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
- Fri, 17 Mar 2023 03:20:09 -0700 (PDT)
-From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
-To: f.fainelli@gmail.com, jonas.gorski@gmail.com,
- bcm-kernel-feedback-list@broadcom.com, tsbogend@alpha.franken.de,
- linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org
-Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
-Subject: [PATCH v3] mips: bmips: BCM6358: disable RAC flush for TP1
-Date: Fri, 17 Mar 2023 11:20:04 +0100
-Message-Id: <20230317102004.235879-1-noltari@gmail.com>
-X-Mailer: git-send-email 2.30.2
-In-Reply-To: <20230316180518.783613-1-noltari@gmail.com>
-References: <20230316180518.783613-1-noltari@gmail.com>
-MIME-Version: 1.0
-Precedence: bulk
-List-ID:
-X-Mailing-List: linux-mips@vger.kernel.org
-
-RAC flush causes kernel panics on BCM6358 with EHCI/OHCI when booting from TP1:
-[ 3.881739] usb 1-1: new high-speed USB device number 2 using ehci-platform
-[ 3.895011] Reserved instruction in kernel code[#1]:
-[ 3.900113] CPU: 0 PID: 1 Comm: init Not tainted 5.10.16 #0
-[ 3.905829] $ 0 : 00000000 10008700 00000000 77d94060
-[ 3.911238] $ 4 : 7fd1f088 00000000 81431cac 81431ca0
-[ 3.916641] $ 8 : 00000000 ffffefff 8075cd34 00000000
-[ 3.922043] $12 : 806f8d40 f3e812b7 00000000 000d9aaa
-[ 3.927446] $16 : 7fd1f068 7fd1f080 7ff559b8 81428470
-[ 3.932848] $20 : 00000000 00000000 55590000 77d70000
-[ 3.938251] $24 : 00000018 00000010
-[ 3.943655] $28 : 81430000 81431e60 81431f28 800157fc
-[ 3.949058] Hi : 00000000
-[ 3.952013] Lo : 00000000
-[ 3.955019] epc : 80015808 setup_sigcontext+0x54/0x24c
-[ 3.960464] ra : 800157fc setup_sigcontext+0x48/0x24c
-[ 3.965913] Status: 10008703 KERNEL EXL IE
-[ 3.970216] Cause : 00800028 (ExcCode 0a)
-[ 3.974340] PrId : 0002a010 (Broadcom BMIPS4350)
-[ 3.979170] Modules linked in: ohci_platform ohci_hcd fsl_mph_dr_of ehci_platform ehci_fsl ehci_hcd gpio_button_hotplug usbcore nls_base usb_common
-[ 3.992907] Process init (pid: 1, threadinfo=(ptrval), task=(ptrval), tls=77e22ec8)
-[ 4.000776] Stack : 81431ef4 7fd1f080 81431f28 81428470 7fd1f068 81431edc 7ff559b8 81428470
-[ 4.009467] 81431f28 7fd1f080 55590000 77d70000 77d5498c 80015c70 806f0000 8063ae74
-[ 4.018149] 08100002 81431f28 0000000a 08100002 81431f28 0000000a 77d6b418 00000003
-[ 4.026831] ffffffff 80016414 80080734 81431ecc 81431ecc 00000001 00000000 04000000
-[ 4.035512] 77d54874 00000000 00000000 00000000 00000000 00000012 00000002 00000000
-[ 4.044196] ...
-[ 4.046706] Call Trace:
-[ 4.049238] [<80015808>] setup_sigcontext+0x54/0x24c
-[ 4.054356] [<80015c70>] setup_frame+0xdc/0x124
-[ 4.059015] [<80016414>] do_notify_resume+0x1dc/0x288
-[ 4.064207] [<80011b50>] work_notifysig+0x10/0x18
-[ 4.069036]
-[ 4.070538] Code: 8fc300b4 00001025 26240008 ac830004 3c048063 0c0228aa 24846a00 26240010
-[ 4.080686]
-[ 4.082517] ---[ end trace 22a8edb41f5f983b ]---
-[ 4.087374] Kernel panic - not syncing: Fatal exception
-[ 4.092753] Rebooting in 1 seconds..
-
-Because the bootloader (CFE) is not initializing the Read-ahead cache properly
-on the second thread (TP1). Since the RAC was not initialized properly, we
-should avoid flushing it at the risk of corrupting the instruction stream as
-seen in the trace above.
-
-Signed-off-by: Álvaro Fernández Rojas
----
- v3: add changes suggested by Florian:
- - Switch to a bool and remove unneeded initialization.
- - Remove if from bcm6358_quirks().
- - Improve commit description and bcm6358_quirks() comment.
- v2: check if we're running on TP1 and invert logic.
-
- arch/mips/bmips/dma.c | 5 +++++
- arch/mips/bmips/setup.c | 8 ++++++++
- 2 files changed, 13 insertions(+)
-
---- a/arch/mips/bmips/dma.c
-+++ b/arch/mips/bmips/dma.c
-@@ -64,6 +64,8 @@ phys_addr_t dma_to_phys(struct device *d
- return dma_addr;
- }
-
-+bool bmips_rac_flush_disable;
-+
- void arch_sync_dma_for_cpu_all(void)
- {
- void __iomem *cbr = BMIPS_GET_CBR();
-@@ -74,6 +76,9 @@ void arch_sync_dma_for_cpu_all(void)
- boot_cpu_type() != CPU_BMIPS4380)
- return;
-
-+ if (unlikely(bmips_rac_flush_disable))
-+ return;
-+
- /* Flush stale data out of the readahead cache */
- cfg = __raw_readl(cbr + BMIPS_RAC_CONFIG);
- __raw_writel(cfg | 0x100, cbr + BMIPS_RAC_CONFIG);
---- a/arch/mips/bmips/setup.c
-+++ b/arch/mips/bmips/setup.c
-@@ -34,6 +34,8 @@
- #define REG_BCM6328_OTP ((void __iomem *)CKSEG1ADDR(0x1000062c))
- #define BCM6328_TP1_DISABLED BIT(9)
-
-+extern bool bmips_rac_flush_disable;
-+
- static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000;
-
- struct bmips_quirk {
-@@ -103,6 +105,12 @@ static void bcm6358_quirks(void)
- * disable SMP for now
- */
- bmips_smp_enabled = 0;
-+
-+ /*
-+ * RAC flush causes kernel panics on BCM6358 when booting from TP1
-+ * because the bootloader is not initializing it properly.
-+ */
-+ bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31));
- }
-
- static void bcm6368_quirks(void)
diff --git a/target/linux/generic/pending-5.15/735-net-ethernet-mtk_eth_soc-fix-flow_offload-related-re.patch b/target/linux/generic/pending-5.15/735-net-ethernet-mtk_eth_soc-fix-flow_offload-related-re.patch
deleted file mode 100644
index 95dc633320..0000000000
--- a/target/linux/generic/pending-5.15/735-net-ethernet-mtk_eth_soc-fix-flow_offload-related-re.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From: Felix Fietkau
-Date: Mon, 20 Mar 2023 15:49:15 +0100
-Subject: [PATCH] net: ethernet: mtk_eth_soc: fix flow_offload related refcount
- bug
-
-Since we call flow_block_cb_decref on FLOW_BLOCK_UNBIND, we need to call
-flow_block_cb_incref unconditionally, even for a newly allocated cb.
-Fixes a use-after-free bug. Also fix the accidentally inverted refcount
-check on unbind.
-
-Fixes: 502e84e2382d ("net: ethernet: mtk_eth_soc: add flow offloading support")
-Signed-off-by: Felix Fietkau
----
-
---- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -584,6 +584,7 @@ mtk_eth_setup_tc_block(struct net_device
- if (IS_ERR(block_cb))
- return PTR_ERR(block_cb);
-
-+ flow_block_cb_incref(block_cb);
- flow_block_cb_add(block_cb, f);
- list_add_tail(&block_cb->driver_list, &block_cb_list);
- return 0;
-@@ -592,7 +593,7 @@ mtk_eth_setup_tc_block(struct net_device
- if (!block_cb)
- return -ENOENT;
-
-- if (flow_block_cb_decref(block_cb)) {
-+ if (!flow_block_cb_decref(block_cb)) {
- flow_block_cb_remove(block_cb, f);
- list_del(&block_cb->driver_list);
- }
diff --git a/target/linux/generic/pending-5.15/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch b/target/linux/generic/pending-5.15/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
index 335a2b04ed..c6b56699c4 100644
--- a/target/linux/generic/pending-5.15/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
+++ b/target/linux/generic/pending-5.15/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
@@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -6327,6 +6327,7 @@ static int mv88e6xxx_register_switch(str
+@@ -6332,6 +6332,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/kirkwood/Makefile b/target/linux/kirkwood/Makefile
index 4827d90ee2..133208dd25 100644
--- a/target/linux/kirkwood/Makefile
+++ b/target/linux/kirkwood/Makefile
@@ -11,8 +11,7 @@ FEATURES:=usb nand squashfs ramdisk
CPU_TYPE:=xscale
SUBTARGETS:=generic
-KERNEL_PATCHVER:=5.10
-KERNEL_TESTING_PATCHVER:=5.15
+KERNEL_PATCHVER:=5.15
include $(INCLUDE_DIR)/target.mk
diff --git a/target/linux/mpc85xx/base-files/etc/board.d/01_leds b/target/linux/mpc85xx/base-files/etc/board.d/01_leds
index 391c909e4c..d9b4d2d79d 100644
--- a/target/linux/mpc85xx/base-files/etc/board.d/01_leds
+++ b/target/linux/mpc85xx/base-files/etc/board.d/01_leds
@@ -8,6 +8,7 @@ boardname="${board##*,}"
board_config_update
case $board in
+enterasys,ws-ap3715i|\
extreme-networks,ws-ap3825i)
ucidef_set_led_netdev "lan1" "LAN1" "green:lan1" "eth1"
ucidef_set_led_netdev "lan2" "LAN2" "green:lan2" "eth0"
diff --git a/target/linux/mpc85xx/base-files/etc/board.d/02_network b/target/linux/mpc85xx/base-files/etc/board.d/02_network
index 77e208c7fa..04c27769a9 100644
--- a/target/linux/mpc85xx/base-files/etc/board.d/02_network
+++ b/target/linux/mpc85xx/base-files/etc/board.d/02_network
@@ -9,7 +9,8 @@ board_config_update
board=$(board_name)
case "$board" in
-aerohive,hiveap-330)
+aerohive,hiveap-330|\
+enterasys,ws-ap3715i)
ucidef_set_interfaces_lan_wan "eth1" "eth0"
;;
ocedo,panda)
diff --git a/target/linux/mpc85xx/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac b/target/linux/mpc85xx/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac
index 8050c7bea2..20ad8eb44f 100644
--- a/target/linux/mpc85xx/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac
+++ b/target/linux/mpc85xx/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac
@@ -12,6 +12,10 @@ PHYNBR=${DEVPATH##*/phy}
board=$(board_name)
case "$board" in
+enterasys,ws-ap3715i)
+ [ "$PHYNBR" -eq 0 ] && mtd_get_mac_ascii cfg2 RADIOADDR1 > /sys${DEVPATH}/macaddress
+ [ "$PHYNBR" -eq 1 ] && mtd_get_mac_ascii cfg2 RADIOADDR0 > /sys${DEVPATH}/macaddress
+ ;;
enterasys,ws-ap3710i|\
extreme-networks,ws-ap3825i)
mtd_get_mac_ascii cfg2 RADIOADDR${PHYNBR} > /sys${DEVPATH}/macaddress
diff --git a/target/linux/mpc85xx/base-files/lib/preinit/10_fix_eth_mac.sh b/target/linux/mpc85xx/base-files/lib/preinit/10_fix_eth_mac.sh
index 0d9058420b..ddb9bef141 100644
--- a/target/linux/mpc85xx/base-files/lib/preinit/10_fix_eth_mac.sh
+++ b/target/linux/mpc85xx/base-files/lib/preinit/10_fix_eth_mac.sh
@@ -3,6 +3,7 @@
preinit_set_mac_address() {
case $(board_name) in
+ enterasys,ws-ap3715i|\
extreme-networks,ws-ap3825i)
ip link set dev eth0 address $(mtd_get_mac_ascii cfg1 ethaddr)
ip link set dev eth1 address $(mtd_get_mac_ascii cfg1 eth1addr)
diff --git a/target/linux/mpc85xx/config-5.15 b/target/linux/mpc85xx/config-5.15
index ab2eef94cd..42d17c1361 100644
--- a/target/linux/mpc85xx/config-5.15
+++ b/target/linux/mpc85xx/config-5.15
@@ -262,6 +262,7 @@ CONFIG_VDSO32=y
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
diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3715i.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3715i.dts
new file mode 100644
index 0000000000..d13952acae
--- /dev/null
+++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3715i.dts
@@ -0,0 +1,293 @@
+// SPDX-License-Identifier: GPL-2.0-or-later or MIT
+
+#include
+
+/include/ "fsl/p1010si-pre.dtsi"
+
+/ {
+ model = "Enterasys WS-AP3715i";
+ compatible = "enterasys,ws-ap3715i";
+
+ aliases {
+ led-boot = &led_power_green;
+ led-failsafe = &led_power_red;
+ led-running = &led_power_green;
+ led-upgrade = &led_power_red;
+ label-mac-device = &enet0;
+ };
+
+ chosen {
+ bootargs = "console=ttyS0,115200";
+ };
+
+ memory {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x10000000>;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ wifi1 {
+ gpios = <&spi_gpio 3 GPIO_ACTIVE_HIGH>;
+ label = "green:radio1";
+ linux,default-trigger = "phy1tpt";
+ };
+
+ wifi2 {
+ gpios = <&spi_gpio 2 GPIO_ACTIVE_HIGH>;
+ label = "green:radio2";
+ linux,default-trigger = "phy0tpt";
+ };
+
+ led_power_green: power_green {
+ gpios = <&spi_gpio 0 GPIO_ACTIVE_HIGH>;
+ label = "green:power";
+ };
+
+ led_power_red: power_red {
+ gpios = <&spi_gpio 1 GPIO_ACTIVE_HIGH>;
+ label = "red:power";
+ };
+
+ lan1_red {
+ gpios = <&spi_gpio 6 GPIO_ACTIVE_HIGH>;
+ label = "red:lan1";
+ };
+
+ lan1_green {
+ gpios = <&spi_gpio 4 GPIO_ACTIVE_HIGH>;
+ label = "green:lan1";
+ };
+
+ lan2_red {
+ gpios = <&spi_gpio 7 GPIO_ACTIVE_HIGH>;
+ label = "red:lan2";
+ };
+
+ lan2_green {
+ gpios = <&spi_gpio 5 GPIO_ACTIVE_HIGH>;
+ label = "green:lan2";
+ };
+ };
+
+ soc: soc@ffe00000 {
+ ranges = <0x0 0x0 0xffe00000 0x100000>;
+
+ gpio0: gpio-controller@fc00 {
+ };
+
+ usb@22000 {
+ status = "disabled";
+ };
+
+ mdio@24000 {
+ phy0: ethernet-phy@0 {
+ reg = <0x1>;
+ };
+
+ phy2: ethernet-phy@2 {
+ reg = <0x2>;
+ };
+ };
+
+ mdio@25000 {
+ tbi_phy: tbi-phy@11 {
+ reg = <0x11>;
+ };
+ };
+
+ mdio@26000 {
+ status = "disabled";
+ };
+
+ enet0: ethernet@b0000 {
+ phy-handle = <&phy0>;
+ phy-connection-type = "rgmii-id";
+
+ label = "lan1";
+ };
+
+ enet1: ethernet@b1000 {
+ phy-handle = <&phy2>;
+ phy-connection-type = "sgmii";
+
+ tbi-handle = <&tbi_phy>;
+
+ label = "lan2";
+ };
+
+ enet2: ethernet@b2000 {
+ status = "disabled";
+ };
+
+ sdhc@2e000 {
+ status = "disabled";
+ };
+ };
+
+ ifc: ifc@ffe1e000 {
+ };
+
+ pci0: pcie@ffe09000 {
+ reg = <0 0xffe09000 0 0x1000>;
+ ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000
+ 0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>;
+ pcie@0 {
+ ranges = <0x2000000 0x0 0xa0000000
+ 0x2000000 0x0 0xa0000000
+ 0x0 0x20000000
+
+ 0x1000000 0x0 0x0
+ 0x1000000 0x0 0x0
+ 0x0 0x100000>;
+
+ wifi@0,0,0 {
+ compatible = "pci168c,0033";
+ reg = <0x0 0 0 0 0>;
+ ieee80211-freq-limit = <2400000 2500000>;
+ };
+ };
+ };
+
+ pci1: pcie@ffe0a000 {
+ reg = <0 0xffe0a000 0 0x1000>;
+ ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000
+ 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
+ pcie@0 {
+ ranges = <0x2000000 0x0 0x80000000
+ 0x2000000 0x0 0x80000000
+ 0x0 0x20000000
+
+ 0x1000000 0x0 0x0
+ 0x1000000 0x0 0x0
+ 0x0 0x100000>;
+
+ wifi@0,0,0 {
+ compatible = "pci168c,0033";
+ reg = <0x0 0 0 0 0>;
+ ieee80211-freq-limit = <5000000 6000000>;
+ };
+ };
+ };
+};
+
+&soc {
+ led_spi {
+ compatible = "spi-gpio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ sck-gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
+ mosi-gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;
+ num-chipselects = <0>;
+
+ spi_gpio: led_gpio@0 {
+ compatible = "fairchild,74hc595";
+ reg = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ registers-number = <1>;
+ spi-max-frequency = <100000>;
+ };
+ };
+
+ spi0: spi@7000 {
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <25000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ reg = <0x0 0xa0000>;
+ label = "boot-bak";
+ read-only;
+ };
+
+ partition@a0000 {
+ reg = <0xa0000 0xa0000>;
+ label = "boot-pri";
+ read-only;
+ };
+
+ partition@120000 {
+ reg = <0x120000 0x10000>;
+ label = "cfg1";
+ read-only;
+ };
+
+ partition@130000 {
+ reg = <0x130000 0x10000>;
+ label = "cfg2";
+ read-only;
+ };
+
+ partition@140000 {
+ compatible = "denx,uimage";
+ reg = <0x140000 0x1d80000>;
+ label = "firmware";
+ };
+
+ partition@1ec0000 {
+ reg = <0x1ec0000 0x100000>;
+ label = "nvram";
+ read-only;
+ };
+ };
+ };
+ };
+};
+
+/include/ "fsl/p1010si-post.dtsi"
+
+/ {
+ cpus {
+ PowerPC,P1010@0 {
+ bus-frequency = <399999996>;
+ timebase-frequency = <50000000>;
+ clock-frequency = <799999992>;
+ d-cache-block-size = <0x20>;
+ d-cache-size = <0x8000>;
+ d-cache-sets = <0x80>;
+ i-cache-block-size = <0x20>;
+ i-cache-size = <0x8000>;
+ i-cache-sets = <0x80>;
+ };
+ };
+
+ soc@ffe00000 {
+ bus-frequency = <399999996>;
+
+ serial@4600 {
+ clock-frequency = <399999996>;
+ status = "disabled";
+ };
+
+ serial@4500 {
+ clock-frequency = <399999996>;
+ };
+
+ pic@40000 {
+ clock-frequency = <399999996>;
+ };
+ };
+};
+
+/*
+ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses
+ * aliases to determine PCI domain numbers, drop aliases so as not to
+ * change the sysfs path of our wireless netdevs.
+ */
+
+/ {
+ aliases {
+ /delete-property/ pci0;
+ /delete-property/ pci1;
+ };
+};
+
diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3825i.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3825i.dts
index 684bd72548..a347900e5d 100644
--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3825i.dts
+++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3825i.dts
@@ -20,6 +20,7 @@
chosen {
bootargs-override = "console=ttyS0,115200";
+ linux,stdout-path = &serial0;
};
memory {
@@ -198,6 +199,13 @@
ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000
0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>;
reg = <0 0xffe09000 0 0x1000>;
+
+ /* Filled by U-Boot */
+ bus-range = <0x00 0x01>;
+ dma-ranges = <0x2000000 0x00 0xfff00000 0x00 0xffe00000
+ 0x00 0x100000 0x42000000 0x00 0x00 0x00
+ 0x00 0x00 0x10000000>;
+
pcie@0 {
ranges = <0x2000000 0x0 0xa0000000
0x2000000 0x0 0xa0000000
@@ -213,6 +221,13 @@
reg = <0 0xffe0a000 0 0x1000>;
ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000
0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
+
+ /* Filled by U-Boot */
+ bus-range = <0x00 0x01>;
+ dma-ranges = <0x2000000 0x00 0xfff00000 0x00
+ 0xffe00000 0x00 0x100000 0x42000000
+ 0x00 0x00 0x00 0x00 0x00 0x10000000>;
+
pcie@0 {
ranges = <0x2000000 0x0 0x80000000
0x2000000 0x0 0x80000000
@@ -254,7 +269,7 @@
/ {
cpus {
- PowerPC,P1010@0 {
+ PowerPC,P1020@0 {
bus-frequency = <399999996>;
timebase-frequency = <50000000>;
clock-frequency = <799999992>;
@@ -264,9 +279,12 @@
i-cache-block-size = <0x20>;
i-cache-size = <0x8000>;
i-cache-sets = <0x80>;
+ cpu-release-addr = <0x0 0x0ffff280>;
+ status = "okay";
+ enable-method = "spin-table";
};
- PowerPC,P1010@1 {
+ PowerPC,P1020@1 {
bus-frequency = <399999996>;
timebase-frequency = <50000000>;
clock-frequency = <799999992>;
@@ -276,11 +294,15 @@
i-cache-block-size = <0x20>;
i-cache-size = <0x8000>;
i-cache-sets = <0x80>;
+ cpu-release-addr = <0x0 0x0ffff2a0>;
+ status = "disabled";
+ enable-method = "spin-table";
};
};
memory {
- reg = <0x0 0x0 0x0 0x10000000>;
+ /* Reserve upper MB for second-core-bootpage */
+ reg = <0x0 0x0 0x0 0xff00000>;
};
soc@ffe00000 {
@@ -298,6 +320,22 @@
clock-frequency = <399999996>;
};
};
+
+ localbus@ffe05000 {
+ bus-frequency = <24999999>;
+ };
+};
+
+&enet0 {
+ rx-stash-idx = <0x00>;
+ rx-stash-len = <0x60>;
+ bd-stash;
+};
+
+&enet2 {
+ rx-stash-idx = <0x00>;
+ rx-stash-len = <0x60>;
+ bd-stash;
};
/*
diff --git a/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/ws-ap3715i.c b/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/ws-ap3715i.c
new file mode 100644
index 0000000000..aa2a366b3d
--- /dev/null
+++ b/target/linux/mpc85xx/files/arch/powerpc/platforms/85xx/ws-ap3715i.c
@@ -0,0 +1,87 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*
+ * Enterasys WS-AP3715i Board Setup
+ *
+ * Copyright (C) 2023 David Bauer
+ *
+ * Based on:
+ * p1010rdb.c:
+ * P1010 RDB Board Setup
+ * Copyright 2011 Freescale Semiconductor Inc.
+ *
+ * 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
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include "mpc85xx.h"
+
+void __init wsap3715i_pic_init(void)
+{
+ struct mpic *mpic;
+
+ mpic = mpic_alloc(NULL, 0,
+ MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU,
+ 0, 256, " OpenPIC ");
+
+ BUG_ON(mpic == NULL);
+ mpic_init(mpic);
+}
+
+/*
+ * Setup the architecture
+ */
+static void __init wsap3715i_setup_arch(void)
+{
+ if (ppc_md.progress)
+ ppc_md.progress("wsap3715i_setup_arch()", 0);
+
+ fsl_pci_assign_primary();
+
+ pr_info("WS-AP3715i from Enterasys\n");
+}
+
+machine_arch_initcall(wsap3715i, mpc85xx_common_publish_devices);
+
+/*
+ * Called very early, device-tree isn't unflattened
+ */
+static int __init wsap3715i_probe(void)
+{
+ if (of_machine_is_compatible("enterasys,ws-ap3715i"))
+ return 1;
+ return 0;
+}
+
+define_machine(wsap3715i) {
+ .name = "P1010 RDB",
+ .probe = wsap3715i_probe,
+ .setup_arch = wsap3715i_setup_arch,
+ .init_IRQ = wsap3715i_pic_init,
+#ifdef CONFIG_PCI
+ .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
+ .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
+#endif
+ .get_irq = mpic_get_irq,
+ .calibrate_decr = generic_calibrate_decr,
+ .progress = udbg_progress,
+};
diff --git a/target/linux/mpc85xx/image/p1010.mk b/target/linux/mpc85xx/image/p1010.mk
index 90ef46d709..034f6abc40 100644
--- a/target/linux/mpc85xx/image/p1010.mk
+++ b/target/linux/mpc85xx/image/p1010.mk
@@ -14,6 +14,19 @@ define Build/spi-loader-okli
mv "$@.new" "$@"
endef
+define Device/enterasys_ws-ap3715i
+ DEVICE_VENDOR := Enterasys
+ DEVICE_MODEL := WS-AP3715i
+ BLOCKSIZE := 64k
+ KERNEL_NAME := simpleImage.ws-ap3715i
+ KERNEL_ENTRY := 0x1000000
+ KERNEL_LOADADDR := 0x1000000
+ KERNEL = kernel-bin | lzma | uImage lzma
+ IMAGES := sysupgrade.bin
+ IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
+endef
+TARGET_DEVICES += enterasys_ws-ap3715i
+
define Device/tplink_tl-wdr4900-v1
DEVICE_VENDOR := TP-Link
DEVICE_MODEL := TL-WDR4900
diff --git a/target/linux/mpc85xx/image/p1020.mk b/target/linux/mpc85xx/image/p1020.mk
index 1f17de3f55..d3d7f93ddd 100644
--- a/target/linux/mpc85xx/image/p1020.mk
+++ b/target/linux/mpc85xx/image/p1020.mk
@@ -76,7 +76,7 @@ define Device/extreme-networks_ws-ap3825i
KERNEL_NAME := simpleImage.ws-ap3825i
KERNEL_ENTRY := 0x1000000
KERNEL_LOADADDR := 0x1000000
- KERNEL = kernel-bin | lzma | fit lzma $(KDIR)/image-$$(DEVICE_DTS).dtb
+ KERNEL = kernel-bin | fit none $(KDIR)/image-$$(DEVICE_DTS).dtb
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
endef
diff --git a/target/linux/mpc85xx/p1010/config-default b/target/linux/mpc85xx/p1010/config-default
index 53e077b6c2..6af6b8e097 100644
--- a/target/linux/mpc85xx/p1010/config-default
+++ b/target/linux/mpc85xx/p1010/config-default
@@ -1,9 +1,11 @@
CONFIG_AT803X_PHY=y
CONFIG_CMDLINE_OVERRIDE=y
# CONFIG_FSL_CORENET_CF is not set
+CONFIG_GPIO_74X164=y
CONFIG_MTD_NAND_FSL_IFC=y
CONFIG_MTD_SPLIT_FIRMWARE=y
CONFIG_MTD_SPLIT_TPLINK_FW=y
+CONFIG_MTD_SPLIT_UIMAGE_FW=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_BLOCK=y
@@ -18,6 +20,8 @@ CONFIG_REALTEK_PHY=y
CONFIG_RED_15W_REV1=y
CONFIG_REGMAP=y
CONFIG_REGULATOR=y
+CONFIG_SPI_GPIO=y
CONFIG_TL_WDR4900_V1=y
CONFIG_UBIFS_FS=y
+CONFIG_WS_AP3715I=y
CONFIG_FIREBOX_T10=y
\ No newline at end of file
diff --git a/target/linux/mpc85xx/p1010/target.mk b/target/linux/mpc85xx/p1010/target.mk
index 86628e32da..fa1bb7542d 100644
--- a/target/linux/mpc85xx/p1010/target.mk
+++ b/target/linux/mpc85xx/p1010/target.mk
@@ -1,5 +1,5 @@
BOARDNAME:=P1010
-KERNEL_IMAGES:=simpleImage.tl-wdr4900-v1
+KERNEL_IMAGES:=simpleImage.tl-wdr4900-v1 simpleImage.ws-ap3715i
define Target/Description
Build firmware images for P1010 based boards.
diff --git a/target/linux/mpc85xx/patches-5.10/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-5.10/107-powerpc-85xx-add-ws-ap3825i-support.patch
index 1829a78ec4..89c58078de 100644
--- a/target/linux/mpc85xx/patches-5.10/107-powerpc-85xx-add-ws-ap3825i-support.patch
+++ b/target/linux/mpc85xx/patches-5.10/107-powerpc-85xx-add-ws-ap3825i-support.patch
@@ -35,3 +35,31 @@ WS-AP3825i AP.
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
+@@ -159,6 +159,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-wlib := $(sort $(src-wlib-y))
+ src-plat := $(sort $(src-plat-y))
+@@ -339,6 +340,7 @@ image-$(CONFIG_TQM8560) += cuImage.tqm
+ image-$(CONFIG_SBC8548) += cuImage.sbc8548
+ 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
+@@ -324,6 +324,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-5.10/109-powerpc-85xx-add-ws-ap3715i-support.patch b/target/linux/mpc85xx/patches-5.10/109-powerpc-85xx-add-ws-ap3715i-support.patch
new file mode 100644
index 0000000000..10ba744897
--- /dev/null
+++ b/target/linux/mpc85xx/patches-5.10/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
+@@ -340,6 +340,7 @@ image-$(CONFIG_TQM8560) += cuImage.tqm
+ image-$(CONFIG_SBC8548) += cuImage.sbc8548
+ 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
+@@ -324,6 +324,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-5.10/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-5.10/900-powerpc-bootwrapper-disable-uImage-generation.patch
index 0f784a1051..86a1ea902e 100644
--- a/target/linux/mpc85xx/patches-5.10/900-powerpc-bootwrapper-disable-uImage-generation.patch
+++ b/target/linux/mpc85xx/patches-5.10/900-powerpc-bootwrapper-disable-uImage-generation.patch
@@ -16,7 +16,7 @@ Signed-off-by: David Bauer
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
-@@ -265,7 +265,6 @@ image-$(CONFIG_PPC_CHRP) += zImage.chrp
+@@ -266,7 +266,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
image-$(CONFIG_EPAPR_BOOT) += zImage.epapr
#
-@@ -396,15 +395,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+@@ -399,15 +398,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
$(obj)/vmlinux.strip: vmlinux
$(STRIP) -s -R .comment $< -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
new file mode 100644
index 0000000000..8272d9dd2a
--- /dev/null
+++ b/target/linux/mpc85xx/patches-5.15/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
+@@ -326,6 +326,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-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch b/target/linux/mpc85xx/patches-5.15/900-powerpc-bootwrapper-disable-uImage-generation.patch
index dfd26a6603..66935c04b7 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
@@ -24,7 +24,7 @@ Signed-off-by: David Bauer
image-$(CONFIG_EPAPR_BOOT) += zImage.epapr
#
-@@ -406,15 +405,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
+@@ -407,15 +406,6 @@ $(obj)/dtbImage.%: vmlinux $(wrapperbits
$(obj)/vmlinux.strip: vmlinux
$(STRIP) -s -R .comment $< -o $@
diff --git a/target/linux/octeon/Makefile b/target/linux/octeon/Makefile
index beb3e5436a..4b5c4c07c1 100644
--- a/target/linux/octeon/Makefile
+++ b/target/linux/octeon/Makefile
@@ -10,8 +10,7 @@ BOARDNAME:=Cavium Networks Octeon
FEATURES:=squashfs ramdisk pci usb
CPU_TYPE:=octeonplus
-KERNEL_PATCHVER:=5.10
-KERNEL_TESTING_PATCHVER:=5.15
+KERNEL_PATCHVER:=5.15
define Target/Description
Build firmware images for Cavium Networks Octeon-based boards.
diff --git a/target/linux/ramips/dts/mt7621_dlink_dap-x1860-a1.dts b/target/linux/ramips/dts/mt7621_dlink_dap-x1860-a1.dts
index edc1c6544c..1aa3f7c91b 100644
--- a/target/linux/ramips/dts/mt7621_dlink_dap-x1860-a1.dts
+++ b/target/linux/ramips/dts/mt7621_dlink_dap-x1860-a1.dts
@@ -94,6 +94,13 @@
status = "okay";
mediatek,nmbm;
+ /* rsvd = Remapping Range / NAND Erase-Size */
+ /* rsvd = 0x800000 / 0x20000 */
+ mediatek,bmt-max-reserved-blocks = <64>;
+ /* Remapping should include raw-nand we operate upon without UBI layer. */
+ /* This includes (at least) the kernel which has to be loaded by U-Boot.*/
+ mediatek,bmt-remap-range =
+ <0x0 0x980000>;
partitions {
compatible = "fixed-partitions";
diff --git a/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts b/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts
index 652aebec83..21df0fb3e6 100644
--- a/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts
+++ b/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts
@@ -13,7 +13,7 @@
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
- spi-max-frequency = <50000000>;
+ spi-max-frequency = <10000000>;
partitions {
compatible = "fixed-partitions";
diff --git a/target/linux/ramips/image/common-sercomm.mk b/target/linux/ramips/image/common-sercomm.mk
index 1cd6d1ece7..83bb2a742c 100644
--- a/target/linux/ramips/image/common-sercomm.mk
+++ b/target/linux/ramips/image/common-sercomm.mk
@@ -51,7 +51,7 @@ define Build/sercomm-payload
$(TOPDIR)/scripts/sercomm-payload.py \
--input-file $@ \
--output-file $@.tmp \
- --pid "$$(cat $@.pid | od -t x1 -An -v | tr -d '\n')"
+ --pid-file $@.pid
mv $@.tmp $@
rm $@.pid
endef
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index e906e7acc5..43cd618e78 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -380,7 +380,7 @@ define Device/beeline_smartbox-flash
IMAGES += factory.trx
IMAGE/factory.trx := append-kernel | append-ubi | check-size
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
- DEVICE_PACKAGES := kmod-usb3 kmod-mt7615-firmware uencrypt-mbedtls
+ DEVICE_PACKAGES := kmod-usb3 kmod-mt7615-firmware uencrypt-openssl
endef
TARGET_DEVICES += beeline_smartbox-flash
@@ -1614,7 +1614,7 @@ define Device/mts_wg430223
IMAGES += factory.trx
IMAGE/factory.trx := append-kernel | append-ubi | check-size
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
- DEVICE_PACKAGES := kmod-mt7615-firmware uencrypt-mbedtls
+ DEVICE_PACKAGES := kmod-mt7615-firmware uencrypt-openssl
endef
TARGET_DEVICES += mts_wg430223
diff --git a/target/linux/ramips/patches-5.10/720-Revert-net-phy-simplify-phy_link_change-arguments.patch b/target/linux/ramips/patches-5.10/720-Revert-net-phy-simplify-phy_link_change-arguments.patch
index 6e8b488290..f3df206f3e 100644
--- a/target/linux/ramips/patches-5.10/720-Revert-net-phy-simplify-phy_link_change-arguments.patch
+++ b/target/linux/ramips/patches-5.10/720-Revert-net-phy-simplify-phy_link_change-arguments.patch
@@ -16,7 +16,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
-@@ -58,13 +58,13 @@ static const char *phy_state_to_str(enum
+@@ -70,13 +70,13 @@ static void phy_process_state_change(str
static void phy_link_up(struct phy_device *phydev)
{
@@ -33,7 +33,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
phy_led_trigger_change_speed(phydev);
}
-@@ -572,7 +572,7 @@ int phy_start_cable_test(struct phy_devi
+@@ -584,7 +584,7 @@ int phy_start_cable_test(struct phy_devi
goto out;
/* Mark the carrier down until the test is complete */
@@ -42,7 +42,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
netif_testing_on(dev);
err = phydev->drv->cable_test_start(phydev);
-@@ -643,7 +643,7 @@ int phy_start_cable_test_tdr(struct phy_
+@@ -655,7 +655,7 @@ int phy_start_cable_test_tdr(struct phy_
goto out;
/* Mark the carrier down until the test is complete */
@@ -51,7 +51,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
netif_testing_on(dev);
err = phydev->drv->cable_test_tdr_start(phydev, config);
-@@ -714,7 +714,7 @@ static int phy_check_link_status(struct
+@@ -726,7 +726,7 @@ static int phy_check_link_status(struct
phy_link_up(phydev);
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
phydev->state = PHY_NOLINK;
@@ -60,7 +60,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
}
return 0;
-@@ -1226,7 +1226,7 @@ void phy_state_machine(struct work_struc
+@@ -1241,7 +1241,7 @@ void phy_state_machine(struct work_struc
case PHY_HALTED:
if (phydev->link) {
phydev->link = 0;
diff --git a/target/linux/ramips/patches-5.10/721-NET-no-auto-carrier-off-support.patch b/target/linux/ramips/patches-5.10/721-NET-no-auto-carrier-off-support.patch
index 5e82c13d2a..00a4192840 100644
--- a/target/linux/ramips/patches-5.10/721-NET-no-auto-carrier-off-support.patch
+++ b/target/linux/ramips/patches-5.10/721-NET-no-auto-carrier-off-support.patch
@@ -11,7 +11,7 @@ Signed-off-by: John Crispin
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
-@@ -714,7 +714,10 @@ static int phy_check_link_status(struct
+@@ -726,7 +726,10 @@ static int phy_check_link_status(struct
phy_link_up(phydev);
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
phydev->state = PHY_NOLINK;
@@ -23,7 +23,7 @@ Signed-off-by: John Crispin
}
return 0;
-@@ -1226,7 +1229,10 @@ void phy_state_machine(struct work_struc
+@@ -1241,7 +1244,10 @@ void phy_state_machine(struct work_struc
case PHY_HALTED:
if (phydev->link) {
phydev->link = 0;
diff --git a/target/linux/ramips/patches-5.10/850-awake-rt305x-dwc2-controller.patch b/target/linux/ramips/patches-5.10/850-awake-rt305x-dwc2-controller.patch
index 19c8ec877e..5c87298f36 100644
--- a/target/linux/ramips/patches-5.10/850-awake-rt305x-dwc2-controller.patch
+++ b/target/linux/ramips/patches-5.10/850-awake-rt305x-dwc2-controller.patch
@@ -1,6 +1,6 @@
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
-@@ -477,6 +477,12 @@ static int dwc2_driver_probe(struct plat
+@@ -465,6 +465,12 @@ static int dwc2_driver_probe(struct plat
if (retval)
return retval;
diff --git a/target/linux/tegra/Makefile b/target/linux/tegra/Makefile
index 81db1ac5fc..43ca154e8a 100644
--- a/target/linux/tegra/Makefile
+++ b/target/linux/tegra/Makefile
@@ -12,8 +12,7 @@ CPU_TYPE := cortex-a9
CPU_SUBTYPE := vfpv3-d16
SUBTARGETS := generic
-KERNEL_PATCHVER := 5.10
-KERNEL_TESTING_PATCHVER := 5.15
+KERNEL_PATCHVER := 5.15
include $(INCLUDE_DIR)/target.mk
diff --git a/tools/mtools/Makefile b/tools/mtools/Makefile
index c0c36a9d02..b810918b98 100644
--- a/tools/mtools/Makefile
+++ b/tools/mtools/Makefile
@@ -7,11 +7,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mtools
-PKG_VERSION:=4.0.42
+PKG_VERSION:=4.0.43
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_HASH:=64bfdfde4d82af6b22f3c1c72c3e231cbb618f4c2309cc46f54d16d5502ccf15
+PKG_HASH:=541e179665dc4e272b9602f2074243591a157da89cc47064da8c5829dbd2b339
HOST_BUILD_PARALLEL:=1