Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2021-09-16 02:01:54 +08:00
commit 061f5ad461
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
78 changed files with 1020 additions and 498 deletions

View File

@ -436,34 +436,22 @@ config KERNEL_PROVE_LOCKING
select KERNEL_DEBUG_KERNEL
default n
config KERNEL_LOCKUP_DETECTOR
bool "Compile the kernel with detect Hard and Soft Lockups"
config KERNEL_SOFTLOCKUP_DETECTOR
bool "Compile the kernel with detect Soft Lockups"
depends on KERNEL_DEBUG_KERNEL
help
Say Y here to enable the kernel to act as a watchdog to detect
hard and soft lockups.
soft lockups.
Softlockups are bugs that cause the kernel to loop in kernel
mode for more than 20 seconds, without giving other tasks a
chance to run. The current stack trace is displayed upon
detection and the system will stay locked up.
Hardlockups are bugs that cause the CPU to loop in kernel mode
for more than 10 seconds, without letting other interrupts have a
chance to run. The current stack trace is displayed upon detection
and the system will stay locked up.
The overhead should be minimal. A periodic hrtimer runs to
generate interrupts and kick the watchdog task every 4 seconds.
An NMI is generated every 10 seconds or so to check for hardlockups.
The frequency of hrtimer and NMI events and the soft and hard lockup
thresholds can be controlled through the sysctl watchdog_thresh.
config KERNEL_DETECT_HUNG_TASK
bool "Compile the kernel with detect Hung Tasks"
depends on KERNEL_DEBUG_KERNEL
default KERNEL_LOCKUP_DETECTOR
default KERNEL_SOFTLOCKUP_DETECTOR
help
Say Y here to enable the kernel to detect "hung tasks",
which are bugs that cause the task to be stuck in

View File

@ -494,9 +494,9 @@ define Device/Build/initramfs
DEVICE_ID="$(1)" \
BIN_DIR="$(BIN_DIR)" \
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
DEVICE_IMG_NAME="$$(notdir $$^)" \
IMAGE_TYPE="kernel" \
IMAGE_FILESYSTEM="initramfs" \
FILE_NAME="$$(notdir $$^)" \
FILE_TYPE="kernel" \
FILE_FILESYSTEM="initramfs" \
DEVICE_IMG_PREFIX="$$(DEVICE_IMG_PREFIX)" \
DEVICE_VENDOR="$$(DEVICE_VENDOR)" \
DEVICE_MODEL="$$(DEVICE_MODEL)" \
@ -601,9 +601,9 @@ define Device/Build/image
DEVICE_ID="$(DEVICE_NAME)" \
BIN_DIR="$(BIN_DIR)" \
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
DEVICE_IMG_NAME="$(DEVICE_IMG_NAME)" \
IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
IMAGE_FILESYSTEM="$(1)" \
FILE_NAME="$(DEVICE_IMG_NAME)" \
FILE_TYPE=$(word 1,$(subst ., ,$(2))) \
FILE_FILESYSTEM="$(1)" \
DEVICE_IMG_PREFIX="$(DEVICE_IMG_PREFIX)" \
DEVICE_VENDOR="$(DEVICE_VENDOR)" \
DEVICE_MODEL="$(DEVICE_MODEL)" \
@ -629,7 +629,9 @@ define Device/Build/image
endef
define Device/Build/artifact
$$(_TARGET): $(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1)
$$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
$(BUILD_DIR)/json_info_files/$(DEVICE_IMG_PREFIX)-$(1).json, \
$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1))
$(eval $(call Device/Export,$(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1)))
$(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1): $$(KDIR_KERNEL_IMAGE) $(2)-images
@rm -f $$@
@ -640,6 +642,35 @@ define Device/Build/artifact
$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1): $(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1)
cp $$^ $$@
$(BUILD_DIR)/json_info_files/$(DEVICE_IMG_PREFIX)-$(1).json: $(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1)
@mkdir -p $$(shell dirname $$@)
DEVICE_ID="$(DEVICE_NAME)" \
BIN_DIR="$(BIN_DIR)" \
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
FILE_NAME="$(DEVICE_IMG_PREFIX)-$(1)" \
FILE_TYPE="$(1)" \
DEVICE_IMG_PREFIX="$(DEVICE_IMG_PREFIX)" \
DEVICE_VENDOR="$(DEVICE_VENDOR)" \
DEVICE_MODEL="$(DEVICE_MODEL)" \
DEVICE_VARIANT="$(DEVICE_VARIANT)" \
DEVICE_ALT0_VENDOR="$(DEVICE_ALT0_VENDOR)" \
DEVICE_ALT0_MODEL="$(DEVICE_ALT0_MODEL)" \
DEVICE_ALT0_VARIANT="$(DEVICE_ALT0_VARIANT)" \
DEVICE_ALT1_VENDOR="$(DEVICE_ALT1_VENDOR)" \
DEVICE_ALT1_MODEL="$(DEVICE_ALT1_MODEL)" \
DEVICE_ALT1_VARIANT="$(DEVICE_ALT1_VARIANT)" \
DEVICE_ALT2_VENDOR="$(DEVICE_ALT2_VENDOR)" \
DEVICE_ALT2_MODEL="$(DEVICE_ALT2_MODEL)" \
DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \
DEVICE_TITLE="$(DEVICE_TITLE)" \
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
TARGET="$(BOARD)" \
SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \
VERSION_NUMBER="$(VERSION_NUMBER)" \
VERSION_CODE="$(VERSION_CODE)" \
SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \
$(TOPDIR)/scripts/json_add_image_info.py $$@
endef
define Device/Build

View File

@ -6,11 +6,11 @@ ifdef CONFIG_TESTING_KERNEL
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
LINUX_VERSION-5.4 = .143
LINUX_VERSION-5.10 = .63
LINUX_VERSION-5.4 = .145
LINUX_VERSION-5.10 = .64
LINUX_KERNEL_HASH-5.4.143 = 0953650b05a5f806d76c5691583e94e141f4f691bc0ba75a60b643740f021d24
LINUX_KERNEL_HASH-5.10.63 = 19a15e838885a0081de5f9874e608fc3f3b1d9e69f2cc5cfa883b8b5499bcb2e
LINUX_KERNEL_HASH-5.4.145 = 5cf7782ec2e91417edf0d5e6555da6d556962c8985e33ba9e7dadba5cbdc68f9
LINUX_KERNEL_HASH-5.10.64 = 3eb84bd24a2de2b4749314e34597c02401c5d6831b055ed5224adb405c35e30a
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))

View File

@ -149,13 +149,13 @@ define Download/mv-ddr-marvell
endef
MOX_BB_NAME:=mox-boot-builder
MOX_BB_RELEASE:=v2021.04.09
MOX_BB_RELEASE:=v2021.09.07
MOX_BB_SOURCE:=$(MOX_BB_NAME)-$(MOX_BB_RELEASE).tar.bz2
define Download/mox-boot-builder
FILE:=$(MOX_BB_SOURCE)
URL:=https://gitlab.nic.cz/turris/mox-boot-builder/-/archive/$(MOX_BB_RELEASE)
HASH:=f0ed4fa25006e36a07d4256f633e3f25d6f8898dbe2e081e578251a182885520
HASH:=fd5fe276a3b0dee3177d61c017907a8eb23cd2169478fa78e9a3a836cfe3a4a8
endef
CM3_GCC_NAME:=gcc-arm

View File

@ -1,66 +0,0 @@
From fb5e436843614f93b30aec0a2a00e5e59a133aab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <marek.behun@nic.cz>
Date: Sat, 15 May 2021 17:44:24 +0200
Subject: [PATCH] wtmi: uart: fix UART baudrate divisor calculation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The UART code uses the xtal clock as parent for UART baudrate
generation, but it assumes that xtal runs at 25 MHz, which isn't
necessarily the case for all A3720 boards.
Use get_ref_clk() to determine xtal clock rate.
Use rounding division to compute the divisor value.
Signed-off-by: Marek Behún <marek.behun@nic.cz>
Suggested-by: Pali Rohár <pali@kernel.org>
---
wtmi/types.h | 5 +++++
wtmi/uart.c | 7 ++++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/wtmi/types.h b/wtmi/types.h
index 7a6c6c6..ea873fc 100644
--- a/wtmi/types.h
+++ b/wtmi/types.h
@@ -47,4 +47,9 @@ typedef u32 size_t;
#define maybe_unused __attribute__((unused))
+static inline u32 div_round_closest_u32(u32 x, u32 d)
+{
+ return (x + d / 2) / d;
+}
+
#endif /* __TYPES_H */
diff --git a/wtmi/uart.c b/wtmi/uart.c
index d40633d..75864b5 100644
--- a/wtmi/uart.c
+++ b/wtmi/uart.c
@@ -40,8 +40,6 @@
#include "stdio.h"
#include "debug.h"
-#define UART_CLOCK_FREQ 25804800
-
const struct uart_info uart1_info = {
.rx = 0xc0012000,
.tx = 0xc0012004,
@@ -76,8 +74,11 @@ void uart_set_stdio(const struct uart_info *info)
void uart_reset(const struct uart_info *info, unsigned int baudrate)
{
+ u32 parent_rate = get_ref_clk() * 1000000;
+
/* set baudrate */
- writel((UART_CLOCK_FREQ / baudrate / 16), info->baud);
+ writel(div_round_closest_u32(parent_rate, baudrate * 16), info->baud);
+
/* set Programmable Oversampling Stack to 0, UART defaults to 16X scheme */
writel(0, info->possr);
--
2.30.2

View File

@ -1,48 +0,0 @@
From 3f33626ac7037bd62df9391e899f50e076e58cf7 Mon Sep 17 00:00:00 2001
From: zachary <zhangzg@marvell.com>
Date: Wed, 25 Oct 2017 15:50:29 +0800
Subject: [PATCH] fix: clock: a3700: change pwm clock for 600/600 and 1200/750
preset
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This patch is to change pwm clock from 100MHz to 50MHz for 600/600 and
1200/750 preset to align with other presets.
Change-Id: I067e189043be8c776bd3e7015a06f8ddf2590b96
Signed-off-by: zachary <zhangzg@marvell.com>
Reviewed-on: http://vgitil04.il.marvell.com:8080/45513
Tested-by: iSoC Platform CI <ykjenk@marvell.com>
Reviewed-by: Kostya Porotchkin <kostap@marvell.com>
Reviewed-by: Hua Jing <jinghua@marvell.com>
Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
wtmi/clock.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/wtmi/clock.c b/wtmi/clock.c
index 97c2825..1a1f0c6 100644
--- a/wtmi/clock.c
+++ b/wtmi/clock.c
@@ -447,7 +447,7 @@ static struct clock_cfg clk_cfg_all[] = {\
/* NorthBridge */\
{{TBG_A_S, TBG_B_S, TBG_B_S, TBG_B_S, TBG_A_P, TBG_A_P, TBG_A_P,\
TBG_B_S, TBG_B_S, TBG_A_P, TBG_B_S, TBG_A_P, TBG_B_S},\
- {2, 5, 2, 4, 1, 2, 6, 2}, /* DIV0 */\
+ {4, 5, 2, 4, 1, 2, 6, 2}, /* DIV0 */\
{1, 5, 2, 5, 2, 3, 2, 2, 3}, /* DIV1 */\
{4, 1, 5, 1, 3, 1, 2, 0, 0, 1} }, /* DIV2 */\
/* SouthBridge */\
@@ -495,7 +495,7 @@ static struct clock_cfg clk_cfg_all[] = {\
/* NorthBridge */\
{{TBG_B_S, TBG_B_S, TBG_B_S, TBG_B_S, TBG_B_S, TBG_B_S, TBG_B_S,\
TBG_B_S, TBG_A_S, TBG_B_S, TBG_A_P, TBG_B_S, TBG_A_S},\
- {3, 4, 3, 4, 1, 1, 5, 1}, /* DIV0 */\
+ {6, 4, 3, 4, 1, 1, 5, 1}, /* DIV0 */\
{1, 6, 3, 4, 1, 6, 1, 1, 6}, /* DIV1 */\
{4, 1, 6, 1, 3, 1, 3, 0, 0, 1} }, /* DIV2 */\
/* SouthBridge */\
--
2.30.2

View File

@ -1,52 +0,0 @@
From 15ff10623c83ee2e626d93d16e022b115dcb608f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
Date: Sat, 10 Apr 2021 16:56:12 +0200
Subject: [PATCH] avs: Validate VDD value from OTP
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
CPU VDD voltage value for 1.2 GHz frequency on some Espressobin boards is
not set and raw value 0x00 is returned. In this case init_avs() function
calculated CPU VDD voltage value to 0x00 + AVS_VDD_BASE = 0.898 V, which is
too low for any operation and Espressobin board immediately crashed
init_avs() function set this low value.
This patch fixes above issue by validating returned VDD value from OTP and
using default VDD value when invalid value is in OTP. With this patch
init_avs() function does cause CPU crash anymore.
Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
wtmi/avs.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/wtmi/avs.c b/wtmi/avs.c
index 36ca9fa..4624359 100644
--- a/wtmi/avs.c
+++ b/wtmi/avs.c
@@ -140,10 +140,16 @@ int init_avs(u32 speed)
}
if (svc_rev >= SVC_REVISION_2) {
- vdd_otp = ((otp_data[OTP_DATA_SVC_SPEED_ID] >> shift) +
- AVS_VDD_BASE) & AVS_VDD_MASK;
- regval |= (vdd_otp << HIGH_VDD_LIMIT_OFF);
- regval |= (vdd_otp << LOW_VDD_LIMIT_OFF);
+ vdd_otp = (otp_data[OTP_DATA_SVC_SPEED_ID] >> shift) &
+ AVS_VDD_MASK;
+ if (!vdd_otp || vdd_otp + AVS_VDD_BASE > AVS_VDD_MASK) {
+ regval |= (vdd_default << HIGH_VDD_LIMIT_OFF);
+ regval |= (vdd_default << LOW_VDD_LIMIT_OFF);
+ } else {
+ vdd_otp += AVS_VDD_BASE;
+ regval |= (vdd_otp << HIGH_VDD_LIMIT_OFF);
+ regval |= (vdd_otp << LOW_VDD_LIMIT_OFF);
+ }
} else {
regval |= (vdd_default << HIGH_VDD_LIMIT_OFF);
regval |= (vdd_default << LOW_VDD_LIMIT_OFF);
--
2.30.2

View File

@ -14,7 +14,8 @@ d-link,dgs-1210-10p|\
zyxel,gs1900-8|\
zyxel,gs1900-8hp-v1|\
zyxel,gs1900-8hp-v2|\
zyxel,gs1900-10hp)
zyxel,gs1900-10hp|\
zyxel,gs1900-24hp-v2)
idx="$(find_mtd_index u-boot-env)"
[ -n "$idx" ] && \
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x400" "0x10000"

View File

@ -48,7 +48,6 @@ ALLWIFIBOARDS:= \
mobipromo_cm520-79f \
p2w_r619ac \
nec_wg2600hp3 \
netgear_wac510 \
plasmacloud_pa1200 \
plasmacloud_pa2200 \
qxwlan_e2600ac
@ -135,7 +134,6 @@ $(eval $(call generate-ipq-wifi-package,mikrotik_sxtsq-5-ac,MikroTik SXTsq 5 ac)
$(eval $(call generate-ipq-wifi-package,mobipromo_cm520-79f,MobiPromo CM520-79F))
$(eval $(call generate-ipq-wifi-package,p2w_r619ac,P&W R619AC))
$(eval $(call generate-ipq-wifi-package,nec_wg2600hp3,NEC Platforms WG2600HP3))
$(eval $(call generate-ipq-wifi-package,netgear_wac510,Netgear WAC510))
$(eval $(call generate-ipq-wifi-package,plasmacloud_pa1200,Plasma Cloud PA1200))
$(eval $(call generate-ipq-wifi-package,plasmacloud_pa2200,Plasma Cloud PA2200))
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC))

View File

@ -43,20 +43,6 @@ endef
$(eval $(call KernelPackage,hwmon-ad7418))
define KernelPackage/hwmon-ads1015
TITLE:=Texas Instruments ADS1015
KCONFIG:= CONFIG_SENSORS_ADS1015
FILES:= $(LINUX_DIR)/drivers/hwmon/ads1015.ko
AUTOLOAD:=$(call AutoLoad,60,ads1015)
$(call AddDepends/hwmon,+kmod-i2c-core)
endef
define KernelPackage/hwmon-ads1015/description
Kernel module for Texas Instruments ADS1015 Analog-to-Digital converter
endef
$(eval $(call KernelPackage,hwmon-ads1015))
define KernelPackage/hwmon-adt7410
TITLE:=ADT7410 monitoring support
KCONFIG:= \

View File

@ -78,6 +78,21 @@ endef
$(eval $(call KernelPackage,iio-ad799x))
define KernelPackage/iio-ads1015
SUBMENU:=$(IIO_MENU)
DEPENDS:=+kmod-i2c-core +kmod-iio-core +kmod-regmap-i2c +kmod-industrialio-triggered-buffer
TITLE:=Texas Instruments ADS1015 ADC driver
KCONFIG:= CONFIG_TI_ADS1015
FILES:=$(LINUX_DIR)/drivers/iio/adc/ti-ads1015.ko
AUTOLOAD:=$(call AutoLoad,56,ti-ads1015)
endef
define KernelPackage/iio-ads1015/description
This driver adds support for Texas Instruments ADS1015 and ADS1115 ADCs.
endef
$(eval $(call KernelPackage,iio-ads1015))
define KernelPackage/iio-hmc5843
SUBMENU:=$(IIO_MENU)
DEPENDS:=+kmod-i2c-core +kmod-iio-core +kmod-regmap-i2c +kmod-industrialio-triggered-buffer

View File

@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wolfssl
PKG_VERSION:=4.7.0-stable
PKG_RELEASE:=2
PKG_VERSION:=4.8.1-stable
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION)
PKG_HASH:=b0e740b31d4d877d540ad50cc539a8873fc41af02bd3091c4357b403f7106e31
PKG_HASH:=50db45f348f47e00c93dd244c24108220120cb3cc9d01434789229c32937c444
PKG_FIXUP:=libtool libtool-abiver
PKG_INSTALL:=1

View File

@ -13,8 +13,6 @@ SP_ASM_MUL_ADD2 and SP_ASM_SQR_ADD.
wolfcrypt/src/sp_int.c | 6 +++---
2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/wolfcrypt/src/asm.c b/wolfcrypt/src/asm.c
index b7f53d073..a37e75e02 100644
--- a/wolfcrypt/src/asm.c
+++ b/wolfcrypt/src/asm.c
@@ -698,33 +698,39 @@ __asm__( \
@ -64,7 +62,7 @@ index b7f53d073..a37e75e02 100644
#define SQRADDAC(i, j) \
__asm__( \
@@ -733,7 +739,9 @@ __asm__( \
@@ -733,7 +739,9 @@ __asm__(
"addl %%eax,%0 \n\t" \
"adcl %%edx,%1 \n\t" \
"adcl $0,%2 \n\t" \
@ -75,7 +73,7 @@ index b7f53d073..a37e75e02 100644
#define SQRADDDB \
__asm__( \
@@ -743,7 +751,10 @@ __asm__( \
@@ -743,7 +751,10 @@ __asm__(
"addl %6,%0 \n\t" \
"adcl %7,%1 \n\t" \
"adcl %8,%2 \n\t" \
@ -87,11 +85,9 @@ index b7f53d073..a37e75e02 100644
#elif defined(TFM_X86_64)
/* x86-64 optimized */
diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c
index 6070faaa9..d26702e47 100644
--- a/wolfcrypt/src/sp_int.c
+++ b/wolfcrypt/src/sp_int.c
@@ -477,7 +477,7 @@ static WC_INLINE sp_int_digit sp_div_word(sp_int_digit hi, sp_int_digit lo,
@@ -476,7 +476,7 @@ static WC_INLINE sp_int_digit sp_div_wor
"addl %%eax, %[l] \n\t" \
"adcl %%edx, %[h] \n\t" \
"adcl $0 , %[o] \n\t" \
@ -100,7 +96,7 @@ index 6070faaa9..d26702e47 100644
: [a] "r" (va), [b] "r" (vb) \
: "eax", "edx", "cc" \
)
@@ -503,7 +503,7 @@ static WC_INLINE sp_int_digit sp_div_word(sp_int_digit hi, sp_int_digit lo,
@@ -502,7 +502,7 @@ static WC_INLINE sp_int_digit sp_div_wor
"addl %%eax, %[l] \n\t" \
"adcl %%edx, %[h] \n\t" \
"adcl $0 , %[o] \n\t" \
@ -109,7 +105,7 @@ index 6070faaa9..d26702e47 100644
: [a] "r" (va), [b] "r" (vb) \
: "eax", "edx", "cc" \
)
@@ -542,7 +542,7 @@ static WC_INLINE sp_int_digit sp_div_word(sp_int_digit hi, sp_int_digit lo,
@@ -541,7 +541,7 @@ static WC_INLINE sp_int_digit sp_div_wor
"addl %%eax, %[l] \n\t" \
"adcl %%edx, %[h] \n\t" \
"adcl $0 , %[o] \n\t" \
@ -118,6 +114,3 @@ index 6070faaa9..d26702e47 100644
: [a] "m" (va) \
: "eax", "edx", "cc" \
)
--
2.31.1

View File

@ -1,6 +1,6 @@
--- a/wolfssl/wolfcrypt/settings.h
+++ b/wolfssl/wolfcrypt/settings.h
@@ -2255,7 +2255,7 @@ extern void uITRON4_free(void *p) ;
@@ -2274,7 +2274,7 @@ extern void uITRON4_free(void *p) ;
#endif
/* warning for not using harden build options (default with ./configure) */

View File

@ -11,7 +11,7 @@ RNG regardless of the built settings for wolfssl.
--- a/wolfcrypt/src/ecc.c
+++ b/wolfcrypt/src/ecc.c
@@ -10293,21 +10293,21 @@ void wc_ecc_fp_free(void)
@@ -10938,21 +10938,21 @@ void wc_ecc_fp_free(void)
#endif /* FP_ECC */
@ -37,7 +37,7 @@ RNG regardless of the built settings for wolfssl.
--- a/wolfssl/wolfcrypt/ecc.h
+++ b/wolfssl/wolfcrypt/ecc.h
@@ -584,10 +584,8 @@ WOLFSSL_API
@@ -616,10 +616,8 @@ WOLFSSL_API
void wc_ecc_fp_free(void);
WOLFSSL_LOCAL
void wc_ecc_fp_init(void);

View File

@ -8,13 +8,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=dnsmasq
PKG_UPSTREAM_VERSION:=2.85
PKG_UPSTREAM_VERSION:=2.86
PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
PKG_HASH:=ad98d3803df687e5b938080f3d25c628fe41c878752d03fbc6199787fee312fa
PKG_HASH:=28d52cfc9e2004ac4f85274f52b32e1647b4dbc9761b82e7de1e41c49907eb08
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING

View File

@ -173,6 +173,10 @@ append_ipset() {
xappend "--ipset=$1"
}
append_connmark_allowlist() {
xappend "--connmark-allowlist=$1"
}
append_interface() {
network_get_device ifname "$1" || ifname="$1"
xappend "--interface=$ifname"
@ -942,6 +946,14 @@ dnsmasq_start()
config_list_foreach "$cfg" "rev_server" append_rev_server
config_list_foreach "$cfg" "address" append_address
config_list_foreach "$cfg" "ipset" append_ipset
local connmark_allowlist_enable
config_get connmark_allowlist_enable "$cfg" connmark_allowlist_enable 0
[ "$connmark_allowlist_enable" -gt 0 ] && {
append_parm "$cfg" "connmark_allowlist_enable" "--connmark-allowlist-enable"
config_list_foreach "$cfg" "connmark_allowlist" append_connmark_allowlist
}
[ -n "$BOOT" ] || {
config_list_foreach "$cfg" "interface" append_interface
config_list_foreach "$cfg" "notinterface" append_notinterface

View File

@ -26,7 +26,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -1144,7 +1144,7 @@ extern struct daemon {
@@ -1201,7 +1201,7 @@ extern struct daemon {
int inotifyfd;
#endif
#if defined(HAVE_LINUX_NETWORK)
@ -35,7 +35,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
#elif defined(HAVE_BSD_NETWORK)
int dhcp_raw_fd, dhcp_icmp_fd, routefd;
#endif
@@ -1326,9 +1326,6 @@ int read_write(int fd, unsigned char *pa
@@ -1388,9 +1388,6 @@ int read_write(int fd, unsigned char *pa
void close_fds(long max_fd, int spare1, int spare2, int spare3);
int wildcard_match(const char* wildcard, const char* match);
int wildcard_matchn(const char* wildcard, const char* match, int num);
@ -140,7 +140,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
my_syslog(LOG_ERR, _("failed to update ipset %s: %s"), setname, strerror(errno));
--- a/src/util.c
+++ b/src/util.c
@@ -786,22 +786,3 @@ int wildcard_matchn(const char* wildcard
@@ -796,22 +796,3 @@ int wildcard_matchn(const char* wildcard
return (!num) || (*wildcard == *match);
}

View File

@ -12,10 +12,10 @@ if len(argv) != 2:
json_path = Path(argv[1])
bin_dir = Path(getenv("BIN_DIR"))
image_file = bin_dir / getenv("DEVICE_IMG_NAME")
file_path = bin_dir / getenv("FILE_NAME")
if not image_file.is_file():
print("Skip JSON creation for non existing image ", image_file)
if not file_path.is_file():
print("Skip JSON creation for non existing file", file_path)
exit(0)
@ -37,9 +37,9 @@ def get_titles():
device_id = getenv("DEVICE_ID")
image_hash = hashlib.sha256(image_file.read_bytes()).hexdigest()
file_hash = hashlib.sha256(file_path.read_bytes()).hexdigest()
image_info = {
file_info = {
"metadata_version": 1,
"target": "{}/{}".format(getenv("TARGET"), getenv("SUBTARGET")),
"version_code": getenv("VERSION_CODE"),
@ -50,10 +50,9 @@ image_info = {
"image_prefix": getenv("DEVICE_IMG_PREFIX"),
"images": [
{
"type": getenv("IMAGE_TYPE"),
"filesystem": getenv("IMAGE_FILESYSTEM"),
"name": getenv("DEVICE_IMG_NAME"),
"sha256": image_hash,
"type": getenv("FILE_TYPE"),
"name": getenv("FILE_NAME"),
"sha256": file_hash,
}
],
"device_packages": getenv("DEVICE_PACKAGES").split(),
@ -63,4 +62,9 @@ image_info = {
},
}
json_path.write_text(json.dumps(image_info, separators=(",", ":")))
if getenv("FILE_FILESYSTEM"):
file_info["profiles"][device_id]["images"][0]["filesystem"] = getenv(
"FILE_FILESYSTEM"
)
json_path.write_text(json.dumps(file_info, separators=(",", ":")))

View File

@ -43,7 +43,7 @@ produce a noisy warning.
hcd->msi_enabled = 1;
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1888,6 +1888,7 @@ struct xhci_hcd {
@@ -1891,6 +1891,7 @@ struct xhci_hcd {
struct xhci_hub usb2_rhub;
struct xhci_hub usb3_rhub;
/* support xHCI 1.0 spec USB2 hardware LPM */

View File

@ -43,7 +43,7 @@ produce a noisy warning.
hcd->msi_enabled = 1;
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1884,6 +1884,7 @@ struct xhci_hcd {
@@ -1887,6 +1887,7 @@ struct xhci_hcd {
struct xhci_hub usb2_rhub;
struct xhci_hub usb3_rhub;
/* support xHCI 1.0 spec USB2 hardware LPM */

View File

@ -50,7 +50,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_SCSI_REQUEST=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED=y
CONFIG_CC_HAS_KASAN_GENERIC=y

View File

@ -171,7 +171,7 @@
#define UDP_CORK 1 /* Never send partially complete segments */
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -271,8 +271,8 @@ nf_ct_get_tuple(const struct sk_buff *sk
@@ -266,8 +266,8 @@ nf_ct_get_tuple(const struct sk_buff *sk
switch (l3num) {
case NFPROTO_IPV4:

View File

@ -80,7 +80,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
/*
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1881,6 +1881,7 @@ struct xhci_hcd {
@@ -1884,6 +1884,7 @@ struct xhci_hcd {
#define XHCI_DISABLE_SPARSE BIT_ULL(38)
#define XHCI_SG_TRB_CACHE_SIZE_QUIRK BIT_ULL(39)
#define XHCI_NO_SOFT_RETRY BIT_ULL(40)

View File

@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
val);
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1650,8 +1650,8 @@ struct urb_priv {
@@ -1653,8 +1653,8 @@ struct urb_priv {
* Each segment table entry is 4*32bits long. 1K seems like an ok size:
* (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
* meaning 64 ring segments.

View File

@ -51,7 +51,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1882,6 +1882,7 @@ struct xhci_hcd {
@@ -1885,6 +1885,7 @@ struct xhci_hcd {
#define XHCI_SG_TRB_CACHE_SIZE_QUIRK BIT_ULL(39)
#define XHCI_NO_SOFT_RETRY BIT_ULL(40)
#define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(41)

View File

@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -4255,9 +4255,9 @@ void xhci_queue_new_dequeue_state(struct
@@ -4256,9 +4256,9 @@ void xhci_queue_new_dequeue_state(struct
}
ep = &xhci->devs[slot_id]->eps[ep_index];
if ((ep->ep_state & SET_DEQ_PENDING)) {

View File

@ -80,7 +80,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
/*
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1874,6 +1874,7 @@ struct xhci_hcd {
@@ -1877,6 +1877,7 @@ struct xhci_hcd {
#define XHCI_DEFAULT_PM_RUNTIME_ALLOW BIT_ULL(33)
#define XHCI_RESET_PLL_ON_DISCONNECT BIT_ULL(34)
#define XHCI_SNPS_BROKEN_SUSPEND BIT_ULL(35)

View File

@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
val);
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1650,8 +1650,8 @@ struct urb_priv {
@@ -1653,8 +1653,8 @@ struct urb_priv {
* Each segment table entry is 4*32bits long. 1K seems like an ok size:
* (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
* meaning 64 ring segments.

View File

@ -51,7 +51,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1877,6 +1877,7 @@ struct xhci_hcd {
@@ -1880,6 +1880,7 @@ struct xhci_hcd {
#define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(36)
#define XHCI_SKIP_PHY_INIT BIT_ULL(37)
#define XHCI_DISABLE_SPARSE BIT_ULL(38)

View File

@ -23,7 +23,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
@@ -1181,6 +1181,9 @@ static int lan78xx_link_reset(struct lan
if (unlikely(ret < 0))
return -EIO;
+ /* Acknowledge any pending PHY interrupt, lest it be the last */
+ phy_read(phydev, LAN88XX_INT_STS);
+

View File

@ -127,7 +127,7 @@ it on BCM4708 family.
/*
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1881,6 +1881,7 @@ struct xhci_hcd {
@@ -1884,6 +1884,7 @@ struct xhci_hcd {
#define XHCI_DISABLE_SPARSE BIT_ULL(38)
#define XHCI_SG_TRB_CACHE_SIZE_QUIRK BIT_ULL(39)
#define XHCI_NO_SOFT_RETRY BIT_ULL(40)

View File

@ -127,7 +127,7 @@ it on BCM4708 family.
/*
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1874,6 +1874,7 @@ struct xhci_hcd {
@@ -1877,6 +1877,7 @@ struct xhci_hcd {
#define XHCI_DEFAULT_PM_RUNTIME_ALLOW BIT_ULL(33)
#define XHCI_RESET_PLL_ON_DISCONNECT BIT_ULL(34)
#define XHCI_SNPS_BROKEN_SUSPEND BIT_ULL(35)

View File

@ -24,7 +24,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
case CT_DCCP_INVALID:
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -8369,6 +8369,7 @@ static int nf_tables_check_loops(const s
@@ -8394,6 +8394,7 @@ static int nf_tables_check_loops(const s
data->verdict.chain);
if (err < 0)
return err;

View File

@ -70,7 +70,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
nft_trans_table_update(trans) = true;
list_add_tail(&trans->list, &ctx->net->nft.commit_list);
return 0;
@@ -7878,11 +7882,10 @@ static int nf_tables_commit(struct net *
@@ -7903,11 +7907,10 @@ static int nf_tables_commit(struct net *
switch (trans->msg_type) {
case NFT_MSG_NEWTABLE:
if (nft_trans_table_update(trans)) {
@ -86,7 +86,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
} else {
nft_clear(net, trans->ctx.table);
}
@@ -8095,11 +8098,9 @@ static int __nf_tables_abort(struct net
@@ -8120,11 +8123,9 @@ static int __nf_tables_abort(struct net
switch (trans->msg_type) {
case NFT_MSG_NEWTABLE:
if (nft_trans_table_update(trans)) {

View File

@ -1586,7 +1586,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
if (!is_valid_ether_addr(ndev->dev_addr))
eth_hw_addr_random(ndev);
temac_do_set_mac_address(ndev);
@@ -1372,7 +1372,7 @@ static int temac_probe(struct platform_d
@@ -1370,7 +1370,7 @@ static int temac_probe(struct platform_d
struct device_node *temac_np = dev_of_node(&pdev->dev), *dma_np;
struct temac_local *lp;
struct net_device *ndev;
@ -1595,7 +1595,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
__be32 *p;
bool little_endian;
int rc = 0;
@@ -1563,8 +1563,8 @@ static int temac_probe(struct platform_d
@@ -1561,8 +1561,8 @@ static int temac_probe(struct platform_d
if (temac_np) {
/* Retrieve the MAC address */

View File

@ -1,60 +0,0 @@
From fb033c95c94ca1ee3d16e04ebdb85d65fb55fff8 Mon Sep 17 00:00:00 2001
From: Ben Dooks <ben-linux@fluff.org>
Date: Mon, 4 Nov 2019 18:15:15 +0100
Subject: [PATCH] ARM: 8918/2: only build return_address() if needed
The system currently warns if the config conditions for
building return_address in arch/arm/kernel/return_address.c
are not met, leaving just an EXPORT_SYMBOL_GPL(return_address)
of a function defined to be 'static linline'.
This is a result of aeea3592a13b ("ARM: 8158/1: LLVMLinux: use static inline in ARM ftrace.h").
Since we're not going to build anything other than an exported
symbol for something that is already being defined to be an
inline-able return of NULL, just avoid building the code to
remove the following warning:
Fixes: aeea3592a13b ("ARM: 8158/1: LLVMLinux: use static inline in ARM ftrace.h")
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
arch/arm/kernel/Makefile | 6 +++++-
arch/arm/kernel/return_address.c | 4 ----
2 files changed, 5 insertions(+), 5 deletions(-)
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -17,10 +17,14 @@ CFLAGS_REMOVE_return_address.o = -pg
# Object file lists.
obj-y := elf.o entry-common.o irq.o opcodes.o \
- process.o ptrace.o reboot.o return_address.o \
+ process.o ptrace.o reboot.o \
setup.o signal.o sigreturn_codes.o \
stacktrace.o sys_arm.o time.o traps.o
+ifneq ($(CONFIG_ARM_UNWIND),y)
+obj-$(CONFIG_FRAME_POINTER) += return_address.o
+endif
+
obj-$(CONFIG_ATAGS) += atags_parse.o
obj-$(CONFIG_ATAGS_PROC) += atags_proc.o
obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o
--- a/arch/arm/kernel/return_address.c
+++ b/arch/arm/kernel/return_address.c
@@ -7,8 +7,6 @@
*/
#include <linux/export.h>
#include <linux/ftrace.h>
-
-#if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND)
#include <linux/sched.h>
#include <asm/stacktrace.h>
@@ -53,6 +51,4 @@ void *return_address(unsigned int level)
return NULL;
}
-#endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) */
-
EXPORT_SYMBOL_GPL(return_address);

View File

@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -1212,18 +1212,6 @@ static bool gc_worker_can_early_drop(con
@@ -1207,18 +1207,6 @@ static bool gc_worker_can_early_drop(con
return false;
}
@ -39,11 +39,11 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
-
static void gc_worker(struct work_struct *work)
{
unsigned int min_interval = max(HZ / GC_MAX_BUCKETS_DIV, 1u);
@@ -1260,10 +1248,8 @@ static void gc_worker(struct work_struct
unsigned long end_time = jiffies + GC_SCAN_MAX_DURATION;
@@ -1250,10 +1238,8 @@ static void gc_worker(struct work_struct
tmp = nf_ct_tuplehash_to_ctrack(h);
scanned++;
- if (test_bit(IPS_OFFLOAD_BIT, &tmp->status)) {
- nf_ct_offload_timeout(tmp);
+ if (test_bit(IPS_OFFLOAD_BIT, &tmp->status))

View File

@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -1146,6 +1146,64 @@ mt7530_port_vlan_del(struct dsa_switch *
@@ -1143,6 +1143,64 @@ mt7530_port_vlan_del(struct dsa_switch *
return 0;
}
@ -82,7 +82,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
static enum dsa_tag_protocol
mtk_get_tag_protocol(struct dsa_switch *ds, int port)
{
@@ -1523,6 +1581,8 @@ static const struct dsa_switch_ops mt753
@@ -1520,6 +1578,8 @@ static const struct dsa_switch_ops mt753
.port_vlan_prepare = mt7530_port_vlan_prepare,
.port_vlan_add = mt7530_port_vlan_add,
.port_vlan_del = mt7530_port_vlan_del,

View File

@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -1086,12 +1086,6 @@ mt7530_port_vlan_add(struct dsa_switch *
@@ -1083,12 +1083,6 @@ mt7530_port_vlan_add(struct dsa_switch *
struct mt7530_priv *priv = ds->priv;
u16 vid;
@ -28,7 +28,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
mutex_lock(&priv->reg_mutex);
for (vid = vlan->vid_begin; vid <= vlan->vid_end; ++vid) {
@@ -1117,12 +1111,6 @@ mt7530_port_vlan_del(struct dsa_switch *
@@ -1114,12 +1108,6 @@ mt7530_port_vlan_del(struct dsa_switch *
struct mt7530_priv *priv = ds->priv;
u16 vid, pvid;
@ -41,7 +41,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
mutex_lock(&priv->reg_mutex);
pvid = priv->ports[port].pvid;
@@ -1235,6 +1223,7 @@ mt7530_setup(struct dsa_switch *ds)
@@ -1232,6 +1220,7 @@ mt7530_setup(struct dsa_switch *ds)
* as two netdev instances.
*/
dn = ds->ports[MT7530_CPU_PORT].master->dev.of_node->parent;

View File

@ -1470,7 +1470,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
if (!is_valid_ether_addr(ndev->dev_addr))
eth_hw_addr_random(ndev);
temac_do_set_mac_address(ndev);
@@ -1298,7 +1298,7 @@ static int temac_probe(struct platform_d
@@ -1296,7 +1296,7 @@ static int temac_probe(struct platform_d
struct temac_local *lp;
struct net_device *ndev;
struct resource *res;
@ -1479,7 +1479,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
__be32 *p;
bool little_endian;
int rc = 0;
@@ -1494,8 +1494,8 @@ static int temac_probe(struct platform_d
@@ -1492,8 +1492,8 @@ static int temac_probe(struct platform_d
if (temac_np) {
/* Retrieve the MAC address */

View File

@ -0,0 +1,60 @@
From 07c6f9805f12f1bb538ef165a092b300350384aa Mon Sep 17 00:00:00 2001
From: Russell King <rmk+kernel@armlinux.org.uk>
Date: Wed, 26 Feb 2020 17:14:21 +0000
Subject: [PATCH] net: switchdev: do not propagate bridge updates across
bridges
When configuring a tree of independent bridges, propagating changes
from the upper bridge across a bridge master to the lower bridge
ports brings surprises.
For example, a lower bridge may have vlan filtering enabled. It
may have a vlan interface attached to the bridge master, which may
then be incorporated into another bridge. As soon as the lower
bridge vlan interface is attached to the upper bridge, the lower
bridge has vlan filtering disabled.
This occurs because switchdev recursively applies its changes to
all lower devices no matter what.
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Tested-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
net/switchdev/switchdev.c | 9 +++++++++
1 file changed, 9 insertions(+)
--- a/net/switchdev/switchdev.c
+++ b/net/switchdev/switchdev.c
@@ -476,6 +476,9 @@ static int __switchdev_handle_port_obj_a
* necessary to go through this helper.
*/
netdev_for_each_lower_dev(dev, lower_dev, iter) {
+ if (netif_is_bridge_master(lower_dev))
+ continue;
+
err = __switchdev_handle_port_obj_add(lower_dev, port_obj_info,
check_cb, add_cb);
if (err && err != -EOPNOTSUPP)
@@ -528,6 +531,9 @@ static int __switchdev_handle_port_obj_d
* necessary to go through this helper.
*/
netdev_for_each_lower_dev(dev, lower_dev, iter) {
+ if (netif_is_bridge_master(lower_dev))
+ continue;
+
err = __switchdev_handle_port_obj_del(lower_dev, port_obj_info,
check_cb, del_cb);
if (err && err != -EOPNOTSUPP)
@@ -579,6 +585,9 @@ static int __switchdev_handle_port_attr_
* necessary to go through this helper.
*/
netdev_for_each_lower_dev(dev, lower_dev, iter) {
+ if (netif_is_bridge_master(lower_dev))
+ continue;
+
err = __switchdev_handle_port_attr_set(lower_dev, port_attr_info,
check_cb, set_cb);
if (err && err != -EOPNOTSUPP)

View File

@ -68,7 +68,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
kfree(sdev->inquiry);
kfree(sdev);
@@ -871,6 +880,8 @@ static struct bin_attribute dev_attr_vpd
@@ -874,6 +883,8 @@ static struct bin_attribute dev_attr_vpd
sdev_vpd_pg_attr(pg83);
sdev_vpd_pg_attr(pg80);
@ -77,7 +77,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
static ssize_t show_inquiry(struct file *filep, struct kobject *kobj,
struct bin_attribute *bin_attr,
@@ -1203,12 +1214,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
@@ -1206,12 +1217,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
struct scsi_device *sdev = to_scsi_device(dev);
@ -96,7 +96,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
return S_IRUGO;
}
@@ -1251,8 +1268,10 @@ static struct attribute *scsi_sdev_attrs
@@ -1254,8 +1271,10 @@ static struct attribute *scsi_sdev_attrs
};
static struct bin_attribute *scsi_sdev_bin_attrs[] = {

View File

@ -682,6 +682,8 @@ CONFIG_BLOCK=y
# CONFIG_BONDING is not set
# CONFIG_BOOKE_WDT is not set
CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
# CONFIG_BOOTTIME_TRACING is not set
# CONFIG_BOOT_CONFIG is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
@ -1319,6 +1321,7 @@ CONFIG_DEBUG_KERNEL=y
CONFIG_DEFAULT_CUBIC=y
CONFIG_DEFAULT_DEADLINE=y
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
CONFIG_DEFAULT_INIT=""
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_DEFAULT_NOOP is not set

View File

@ -645,6 +645,8 @@ CONFIG_BLOCK=y
# CONFIG_BONDING is not set
# CONFIG_BOOKE_WDT is not set
CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
CONFIG_BOOT_RAW=y
CONFIG_BPF=y
@ -1239,6 +1241,7 @@ CONFIG_DEBUG_KERNEL=y
CONFIG_DEFAULT_CUBIC=y
CONFIG_DEFAULT_DEADLINE=y
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
CONFIG_DEFAULT_IOSCHED="deadline"
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_DEFAULT_NOOP is not set

View File

@ -1,6 +1,6 @@
--- a/block/blk.h
+++ b/block/blk.h
@@ -357,6 +357,7 @@ char *disk_name(struct gendisk *hd, int
@@ -353,6 +353,7 @@ char *disk_name(struct gendisk *hd, int
#define ADDPART_FLAG_NONE 0
#define ADDPART_FLAG_RAID 1
#define ADDPART_FLAG_WHOLEDISK 2

View File

@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
config MODULES_TREE_LOOKUP
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1285,6 +1285,7 @@ static struct module_attribute *modinfo_
@@ -1281,6 +1281,7 @@ static struct module_attribute *modinfo_
static const char vermagic[] = VERMAGIC_STRING;
@ -120,7 +120,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static int try_to_force_load(struct module *mod, const char *reason)
{
#ifdef CONFIG_MODULE_FORCE_LOAD
@@ -1296,6 +1297,7 @@ static int try_to_force_load(struct modu
@@ -1292,6 +1293,7 @@ static int try_to_force_load(struct modu
return -ENOEXEC;
#endif
}
@ -128,7 +128,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#ifdef CONFIG_MODVERSIONS
@@ -3256,9 +3256,11 @@ static int setup_load_info(struct load_i
@@ -3256,9 +3258,11 @@ static int setup_load_info(struct load_i
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
{
@ -141,7 +141,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
modmagic = NULL;
@@ -3279,6 +3281,7 @@ static int check_modinfo(struct module *
@@ -3279,6 +3283,7 @@ static int check_modinfo(struct module *
mod->name);
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
}

View File

@ -351,7 +351,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
+ LZMA_FREE(address);
+}
+
+static ISzAlloc lzma_alloc = {p_lzma_malloc, p_lzma_free};
+static ISzAlloc lzma_alloc = { .Alloc = p_lzma_malloc, .Free = p_lzma_free };
+
+#endif
--- /dev/null

View File

@ -351,7 +351,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
+ LZMA_FREE(address);
+}
+
+static ISzAlloc lzma_alloc = {p_lzma_malloc, p_lzma_free};
+static ISzAlloc lzma_alloc = { .Alloc = p_lzma_malloc, .Free = p_lzma_free };
+
+#endif
--- /dev/null

View File

@ -9,7 +9,7 @@ Content-Transfer-Encoding: 8bit
Signed-off-by: René van Dorst <opensource@vdorst.com>
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -1410,9 +1410,13 @@ static void mt7530_phylink_mac_config(st
@@ -1407,9 +1407,13 @@ static void mt7530_phylink_mac_config(st
switch (state->speed) {
case SPEED_1000:
mcr_new |= PMCR_FORCE_SPEED_1000;
@ -23,7 +23,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
break;
}
if (state->duplex == DUPLEX_FULL) {
@@ -1548,6 +1552,54 @@ mt7530_phylink_mac_link_state(struct dsa
@@ -1545,6 +1549,54 @@ mt7530_phylink_mac_link_state(struct dsa
return 1;
}
@ -78,7 +78,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
static const struct dsa_switch_ops mt7530_switch_ops = {
.get_tag_protocol = mtk_get_tag_protocol,
.setup = mt7530_setup,
@@ -1575,6 +1627,8 @@ static const struct dsa_switch_ops mt753
@@ -1572,6 +1624,8 @@ static const struct dsa_switch_ops mt753
.phylink_mac_config = mt7530_phylink_mac_config,
.phylink_mac_link_down = mt7530_phylink_mac_link_down,
.phylink_mac_link_up = mt7530_phylink_mac_link_up,

View File

@ -419,6 +419,7 @@ define Device/engenius_emd1
IMAGES += factory.bin
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
IMAGE/factory.bin := qsdk-ipq-factory-nor | check-size
DEVICE_PACKAGES := ipq-wifi-engenius_emd1
endef
TARGET_DEVICES += engenius_emd1
@ -433,6 +434,7 @@ define Device/engenius_emr3500
IMAGES += factory.bin
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
IMAGE/factory.bin := qsdk-ipq-factory-nor | check-size
DEVICE_PACKAGES := ipq-wifi-engenius_emr3500
endef
TARGET_DEVICES += engenius_emr3500
@ -702,7 +704,7 @@ define Device/plasmacloud_pa1200
IMAGES += factory.bin
IMAGE/factory.bin := append-rootfs | pad-rootfs | openmesh-image ce_type=PA1200
IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-metadata
DEVICE_PACKAGES := ipq-wifi-plasmacloud-pa1200
DEVICE_PACKAGES := ipq-wifi-plasmacloud_pa1200
endef
TARGET_DEVICES += plasmacloud_pa1200
@ -718,7 +720,7 @@ define Device/plasmacloud_pa2200
IMAGES += factory.bin
IMAGE/factory.bin := append-rootfs | pad-rootfs | openmesh-image ce_type=PA2200
IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-metadata
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct ipq-wifi-plasmacloud-pa2200
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct ipq-wifi-plasmacloud_pa2200
endef
TARGET_DEVICES += plasmacloud_pa2200

View File

@ -14,7 +14,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
@@ -1746,7 +1746,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
@@ -1763,7 +1763,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
static const struct sdhci_ops sdhci_msm_ops = {
.reset = sdhci_reset,

View File

@ -10,8 +10,7 @@ CPU_TYPE:=cortex-a15
CPU_SUBTYPE:=neon-vfpv4
SUBTARGETS:=generic
KERNEL_PATCHVER:=5.4
KERNEL_TESTING_PATCHVER:=5.10
KERNEL_PATCHVER:=5.10
KERNELNAME:=zImage Image dtbs

View File

@ -11,7 +11,7 @@ case "$(board_name)" in
linksys,e4200-v2|\
linksys,ea3500|\
linksys,ea4500)
ucidef_set_compat_version "1.1"
ucidef_set_compat_version "2.0"
;;
esac

View File

@ -165,22 +165,22 @@
partition@200000 {
label = "kernel1";
reg = <0x200000 0x290000>;
reg = <0x200000 0x1400000>;
};
partition@490000 {
partition@500000 {
label = "rootfs1";
reg = <0x490000 0x1170000>;
reg = <0x500000 0x1100000>;
};
partition@1600000 {
label = "kernel2";
reg = <0x1600000 0x290000>;
reg = <0x1600000 0x1400000>;
};
partition@1890000 {
partition@1900000 {
label = "rootfs2";
reg = <0x1890000 0x1170000>;
reg = <0x1900000 0x1100000>;
};
partition@2a00000 {

View File

@ -7,9 +7,12 @@ include $(INCLUDE_DIR)/image.mk
KERNEL_LOADADDR:=0x8000
define Device/dsa-migration
DEVICE_COMPAT_VERSION := 1.1
DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA
define Device/kernel-size-migration
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := Partition design has changed compared to \
older versions (up to 21.02) due to kernel size restrictions. \
Upgrade via sysupgrade mechanism is not possible, so new \
installation via factory style image is required.
endef
define Device/Default
@ -110,31 +113,31 @@ endef
define Device/linksys_e4200-v2
$(Device/linksys)
$(Device/dsa-migration)
$(Device/kernel-size-migration)
DEVICE_MODEL := E4200
DEVICE_VARIANT := v2
KERNEL_SIZE := 2688k
KERNEL_SIZE := 3072k
SUPPORTED_DEVICES += linksys,viper linksys-viper
endef
TARGET_DEVICES += linksys_e4200-v2
define Device/linksys_ea3500
$(Device/linksys)
$(Device/dsa-migration)
$(Device/kernel-size-migration)
DEVICE_MODEL := EA3500
PAGESIZE := 512
SUBPAGESIZE := 256
BLOCKSIZE := 16k
KERNEL_SIZE := 2624k
KERNEL_SIZE := 3072k
SUPPORTED_DEVICES += linksys,audi linksys-audi
endef
TARGET_DEVICES += linksys_ea3500
define Device/linksys_ea4500
$(Device/linksys)
$(Device/dsa-migration)
$(Device/kernel-size-migration)
DEVICE_MODEL := EA4500
KERNEL_SIZE := 2688k
KERNEL_SIZE := 3072k
SUPPORTED_DEVICES += linksys,viper linksys-viper
endef
TARGET_DEVICES += linksys_ea4500

View File

@ -23,30 +23,37 @@
};
white-pulse {
@@ -114,22 +119,22 @@
@@ -114,23 +119,23 @@
};
partition@200000 {
- label = "kernel";
- reg = <0x200000 0x2A0000>;
+ label = "kernel1";
reg = <0x200000 0x2A0000>;
+ reg = <0x200000 0x1A00000>;
};
partition@4a0000 {
- partition@4a0000 {
- label = "rootfs";
- reg = <0x4A0000 0x1760000>;
+ partition@500000 {
+ label = "rootfs1";
reg = <0x4A0000 0x1760000>;
+ reg = <0x500000 0x1700000>;
};
partition@1c00000 {
- label = "alt_kernel";
- reg = <0x1C00000 0x2A0000>;
+ label = "kernel2";
reg = <0x1C00000 0x2A0000>;
+ reg = <0x1C00000 0x1A00000>;
};
partition@1ea0000 {
- partition@1ea0000 {
- label = "alt_rootfs";
- reg = <0x1EA0000 0x1760000>;
+ partition@1f00000 {
+ label = "rootfs2";
reg = <0x1EA0000 0x1760000>;
+ reg = <0x1F00000 0x1700000>;
};
partition@3600000 {

View File

@ -23,30 +23,37 @@
};
white-pulse {
@@ -114,22 +119,22 @@
@@ -114,23 +119,23 @@
};
partition@200000 {
- label = "kernel";
- reg = <0x200000 0x2A0000>;
+ label = "kernel1";
reg = <0x200000 0x2A0000>;
+ reg = <0x200000 0x1A00000>;
};
partition@4a0000 {
- partition@4a0000 {
- label = "rootfs";
- reg = <0x4A0000 0x1760000>;
+ partition@500000 {
+ label = "rootfs1";
reg = <0x4A0000 0x1760000>;
+ reg = <0x500000 0x1700000>;
};
partition@1c00000 {
- label = "alt_kernel";
- reg = <0x1C00000 0x2A0000>;
+ label = "kernel2";
reg = <0x1C00000 0x2A0000>;
+ reg = <0x1C00000 0x1A00000>;
};
partition@1ea0000 {
- partition@1ea0000 {
- label = "alt_rootfs";
- reg = <0x1EA0000 0x1760000>;
+ partition@1f00000 {
+ label = "rootfs2";
reg = <0x1EA0000 0x1760000>;
+ reg = <0x1F00000 0x1700000>;
};
partition@3600000 {

View File

@ -72,7 +72,6 @@ CONFIG_BLK_MQ_PCI=y
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_BLK_PM=y
CONFIG_BLK_SCSI_REQUEST=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_BOUNCE=y
CONFIG_BRCMSTB_GISB_ARB=y
@ -168,7 +167,6 @@ CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_LZO=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_DEVFREQ_GOV_PASSIVE is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set

View File

@ -88,7 +88,6 @@ CONFIG_BLK_MQ_PCI=y
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_BLK_PM=y
CONFIG_BLK_SCSI_REQUEST=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
@ -182,7 +181,6 @@ CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_LZO=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_DEVICE_THERMAL is not set
CONFIG_DEVTMPFS=y

View File

@ -54,7 +54,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
* All 3.1 IP version constants are greater than the 3.0 IP
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -3656,6 +3656,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
@@ -3655,6 +3655,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.sg_supported = true;
dwc->gadget.name = "dwc3-gadget";
dwc->gadget.lpm_capable = true;

View File

@ -184,7 +184,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
void xhci_init_driver(struct hc_driver *drv,
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -2151,6 +2151,16 @@ int xhci_find_raw_port_number(struct usb
@@ -2154,6 +2154,16 @@ int xhci_find_raw_port_number(struct usb
struct xhci_hub *xhci_get_rhub(struct usb_hcd *hcd);
void xhci_hc_died(struct xhci_hcd *xhci);

View File

@ -32,7 +32,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
ret = xhci_handshake(&xhci->op_regs->command,
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1874,6 +1874,7 @@ struct xhci_hcd {
@@ -1877,6 +1877,7 @@ struct xhci_hcd {
#define XHCI_DEFAULT_PM_RUNTIME_ALLOW BIT_ULL(33)
#define XHCI_RESET_PLL_ON_DISCONNECT BIT_ULL(34)
#define XHCI_SNPS_BROKEN_SUSPEND BIT_ULL(35)

View File

@ -35,7 +35,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com>
EXPORT_SYMBOL_GPL(xhci_init_driver);
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1917,6 +1917,7 @@ struct xhci_driver_overrides {
@@ -1920,6 +1920,7 @@ struct xhci_driver_overrides {
int (*start)(struct usb_hcd *hcd);
int (*check_bandwidth)(struct usb_hcd *, struct usb_device *);
void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);

View File

@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -1443,7 +1443,9 @@ static void mt7530_phylink_mac_link_down
@@ -1440,7 +1440,9 @@ static void mt7530_phylink_mac_link_down
static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port,
unsigned int mode,
phy_interface_t interface,

View File

@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
mutex_unlock(&priv->reg_mutex);
}
@@ -1398,8 +1387,7 @@ static void mt7530_phylink_mac_config(st
@@ -1395,8 +1384,7 @@ static void mt7530_phylink_mac_config(st
mcr_cur = mt7530_read(priv, MT7530_PMCR_P(port));
mcr_new = mcr_cur;
@ -61,7 +61,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN |
PMCR_BACKPR_EN | PMCR_FORCE_MODE;
@@ -1407,26 +1395,6 @@ static void mt7530_phylink_mac_config(st
@@ -1404,26 +1392,6 @@ static void mt7530_phylink_mac_config(st
if (port == 5 && dsa_is_user_port(ds, 5))
mcr_new |= PMCR_EXT_PHY;
@ -88,7 +88,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
if (mcr_new != mcr_cur)
mt7530_write(priv, MT7530_PMCR_P(port), mcr_new);
}
@@ -1437,7 +1405,7 @@ static void mt7530_phylink_mac_link_down
@@ -1434,7 +1402,7 @@ static void mt7530_phylink_mac_link_down
{
struct mt7530_priv *priv = ds->priv;
@ -97,7 +97,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}
static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port,
@@ -1448,8 +1416,31 @@ static void mt7530_phylink_mac_link_up(s
@@ -1445,8 +1413,31 @@ static void mt7530_phylink_mac_link_up(s
bool tx_pause, bool rx_pause)
{
struct mt7530_priv *priv = ds->priv;

View File

@ -47,7 +47,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
return -EINVAL;
}
@@ -1335,12 +1337,11 @@ mt7530_setup(struct dsa_switch *ds)
@@ -1332,12 +1334,11 @@ mt7530_setup(struct dsa_switch *ds)
return 0;
}
@ -63,7 +63,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
switch (port) {
case 0: /* Internal phy */
@@ -1349,33 +1350,114 @@ static void mt7530_phylink_mac_config(st
@@ -1346,33 +1347,114 @@ static void mt7530_phylink_mac_config(st
case 3:
case 4:
if (state->interface != PHY_INTERFACE_MODE_GMII)
@ -189,7 +189,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
return;
}
@@ -1443,61 +1525,44 @@ static void mt7530_phylink_mac_link_up(s
@@ -1440,61 +1522,44 @@ static void mt7530_phylink_mac_link_up(s
mt7530_set(priv, MT7530_PMCR_P(port), mcr);
}
@ -274,7 +274,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
phylink_set(mask, Pause);
phylink_set(mask, Asym_Pause);
@@ -1593,12 +1658,45 @@ static int mt7530_set_mac_eee(struct dsa
@@ -1590,12 +1655,45 @@ static int mt7530_set_mac_eee(struct dsa
return 0;
}
@ -323,7 +323,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
.get_ethtool_stats = mt7530_get_ethtool_stats,
.get_sset_count = mt7530_get_sset_count,
.port_enable = mt7530_port_enable,
@@ -1615,18 +1713,43 @@ static const struct dsa_switch_ops mt753
@@ -1612,18 +1710,43 @@ static const struct dsa_switch_ops mt753
.port_vlan_del = mt7530_port_vlan_del,
.port_mirror_add = mt7530_port_mirror_add,
.port_mirror_del = mt7530_port_mirror_del,
@ -372,7 +372,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, mt7530_of_match);
@@ -1664,8 +1787,21 @@ mt7530_probe(struct mdio_device *mdiodev
@@ -1661,8 +1784,21 @@ mt7530_probe(struct mdio_device *mdiodev
/* Get the hardware identifier from the devicetree node.
* We will need it for some of the clock and regulator setup.
*/

View File

@ -394,7 +394,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
*/
mt7530_write(priv, MT7530_PCR_P(port),
PCR_MATRIX(dsa_user_ports(priv->ds)));
@@ -1123,27 +1447,42 @@ mt7530_port_vlan_del(struct dsa_switch *
@@ -1120,27 +1444,42 @@ mt7530_port_vlan_del(struct dsa_switch *
return 0;
}
@ -444,7 +444,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
val = mt7530_read(priv, MT7530_PCR_P(port));
if (ingress) {
@@ -1158,7 +1497,7 @@ static int mt7530_port_mirror_add(struct
@@ -1155,7 +1494,7 @@ static int mt7530_port_mirror_add(struct
return 0;
}
@ -453,7 +453,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
struct dsa_mall_mirror_tc_entry *mirror)
{
struct mt7530_priv *priv = ds->priv;
@@ -1175,9 +1514,9 @@ static void mt7530_port_mirror_del(struc
@@ -1172,9 +1511,9 @@ static void mt7530_port_mirror_del(struc
mt7530_write(priv, MT7530_PCR_P(port), val);
if (!priv->mirror_rx && !priv->mirror_tx) {
@ -466,7 +466,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
}
}
@@ -1283,7 +1622,7 @@ mt7530_setup(struct dsa_switch *ds)
@@ -1280,7 +1619,7 @@ mt7530_setup(struct dsa_switch *ds)
PCR_MATRIX_CLR);
if (dsa_is_cpu_port(ds, i))
@ -475,7 +475,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
else
mt7530_port_disable(ds, i);
@@ -1337,6 +1676,118 @@ mt7530_setup(struct dsa_switch *ds)
@@ -1334,6 +1673,118 @@ mt7530_setup(struct dsa_switch *ds)
return 0;
}
@ -594,7 +594,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
static bool
mt7530_phy_mode_supported(struct dsa_switch *ds, int port,
const struct phylink_link_state *state)
@@ -1375,6 +1826,47 @@ unsupported:
@@ -1372,6 +1823,47 @@ unsupported:
return false;
}
@ -642,7 +642,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
static bool
mt753x_phy_mode_supported(struct dsa_switch *ds, int port,
const struct phylink_link_state *state)
@@ -1407,6 +1899,227 @@ mt7530_mac_config(struct dsa_switch *ds,
@@ -1404,6 +1896,227 @@ mt7530_mac_config(struct dsa_switch *ds,
return 0;
}
@ -870,7 +870,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
static int
mt753x_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
const struct phylink_link_state *state)
@@ -1442,6 +2155,8 @@ mt753x_phylink_mac_config(struct dsa_swi
@@ -1439,6 +2152,8 @@ mt753x_phylink_mac_config(struct dsa_swi
if (mt753x_mac_config(ds, port, mode, state) < 0)
goto unsupported;
@ -879,7 +879,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
break;
case 6: /* 1st cpu port */
if (priv->p6_interface == state->interface)
@@ -1461,7 +2176,8 @@ unsupported:
@@ -1458,7 +2173,8 @@ unsupported:
return;
}
@ -889,7 +889,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
dev_err(ds->dev, "%s: in-band negotiation unsupported\n",
__func__);
return;
@@ -1471,7 +2187,7 @@ unsupported:
@@ -1468,7 +2184,7 @@ unsupported:
mcr_new = mcr_cur;
mcr_new &= ~PMCR_LINK_SETTINGS_MASK;
mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN |
@ -898,7 +898,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
/* Are we connected to external phy */
if (port == 5 && dsa_is_user_port(ds, 5))
@@ -1481,7 +2197,18 @@ unsupported:
@@ -1478,7 +2194,18 @@ unsupported:
mt7530_write(priv, MT7530_PMCR_P(port), mcr_new);
}
@ -918,7 +918,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
unsigned int mode,
phy_interface_t interface)
{
@@ -1490,7 +2217,19 @@ static void mt7530_phylink_mac_link_down
@@ -1487,7 +2214,19 @@ static void mt7530_phylink_mac_link_down
mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK);
}
@ -939,7 +939,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
unsigned int mode,
phy_interface_t interface,
struct phy_device *phydev,
@@ -1500,18 +2239,29 @@ static void mt7530_phylink_mac_link_up(s
@@ -1497,18 +2236,29 @@ static void mt7530_phylink_mac_link_up(s
struct mt7530_priv *priv = ds->priv;
u32 mcr;
@ -971,7 +971,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
break;
}
if (duplex == DUPLEX_FULL) {
@@ -1525,6 +2275,45 @@ static void mt7530_phylink_mac_link_up(s
@@ -1522,6 +2272,45 @@ static void mt7530_phylink_mac_link_up(s
mt7530_set(priv, MT7530_PMCR_P(port), mcr);
}
@ -1017,7 +1017,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
static void
mt7530_mac_port_validate(struct dsa_switch *ds, int port,
unsigned long *supported)
@@ -1533,6 +2322,14 @@ mt7530_mac_port_validate(struct dsa_swit
@@ -1530,6 +2319,14 @@ mt7530_mac_port_validate(struct dsa_swit
phylink_set(supported, 1000baseX_Full);
}
@ -1032,7 +1032,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
static void
mt753x_phylink_validate(struct dsa_switch *ds, int port,
unsigned long *supported,
@@ -1549,7 +2346,8 @@ mt753x_phylink_validate(struct dsa_switc
@@ -1546,7 +2343,8 @@ mt753x_phylink_validate(struct dsa_switc
phylink_set_port_modes(mask);
@ -1042,7 +1042,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
phylink_set(mask, 10baseT_Half);
phylink_set(mask, 10baseT_Full);
phylink_set(mask, 100baseT_Half);
@@ -1568,6 +2366,11 @@ mt753x_phylink_validate(struct dsa_switc
@@ -1565,6 +2363,11 @@ mt753x_phylink_validate(struct dsa_switc
linkmode_and(supported, supported, mask);
linkmode_and(state->advertising, state->advertising, mask);
@ -1054,7 +1054,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
}
static int
@@ -1658,6 +2461,63 @@ static int mt7530_set_mac_eee(struct dsa
@@ -1655,6 +2458,63 @@ static int mt7530_set_mac_eee(struct dsa
return 0;
}
@ -1118,7 +1118,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
static int
mt753x_phylink_mac_link_state(struct dsa_switch *ds, int port,
struct phylink_link_state *state)
@@ -1711,13 +2571,14 @@ static const struct dsa_switch_ops mt753
@@ -1708,13 +2568,14 @@ static const struct dsa_switch_ops mt753
.port_vlan_prepare = mt7530_port_vlan_prepare,
.port_vlan_add = mt7530_port_vlan_add,
.port_vlan_del = mt7530_port_vlan_del,
@ -1137,7 +1137,7 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
.get_mac_eee = mt7530_get_mac_eee,
.set_mac_eee = mt7530_set_mac_eee,
};
@@ -1745,11 +2606,26 @@ static const struct mt753x_info mt753x_t
@@ -1742,11 +2603,26 @@ static const struct mt753x_info mt753x_t
.mac_port_get_state = mt7530_phylink_mac_link_state,
.mac_port_config = mt7530_mac_config,
},

View File

@ -10,6 +10,7 @@ BOARDNAME:=Octeon-TX
FEATURES:=targz pcie gpio rtc usb fpu
KERNEL_PATCHVER:=5.4
KERNEL_TESTING_PATCHVER:=5.10
define Target/Description
Build images for Octeon-TX CN80XX/CN81XX based boards

View File

@ -0,0 +1,423 @@
CONFIG_64BIT=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_HIBERNATION_HEADER=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MMAP_RND_BITS=18
CONFIG_ARCH_MMAP_RND_BITS_MAX=33
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
CONFIG_ARCH_PROC_KCORE_TEXT=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_STACKWALK=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_THUNDER=y
CONFIG_ARM64=y
CONFIG_ARM64_4K_PAGES=y
CONFIG_ARM64_CNP=y
CONFIG_ARM64_CRYPTO=y
CONFIG_ARM64_ERRATUM_1165522=y
CONFIG_ARM64_ERRATUM_1286807=y
CONFIG_ARM64_ERRATUM_819472=y
CONFIG_ARM64_ERRATUM_824069=y
CONFIG_ARM64_ERRATUM_826319=y
CONFIG_ARM64_ERRATUM_827319=y
CONFIG_ARM64_ERRATUM_843419=y
CONFIG_ARM64_HW_AFDBM=y
CONFIG_ARM64_MODULE_PLTS=y
CONFIG_ARM64_PAGE_SHIFT=12
CONFIG_ARM64_PAN=y
CONFIG_ARM64_PA_BITS=48
CONFIG_ARM64_PA_BITS_48=y
CONFIG_ARM64_PTR_AUTH=y
CONFIG_ARM64_SVE=y
CONFIG_ARM64_TAGGED_ADDR_ABI=y
CONFIG_ARM64_UAO=y
CONFIG_ARM64_VA_BITS=48
# CONFIG_ARM64_VA_BITS_39 is not set
CONFIG_ARM64_VA_BITS_48=y
CONFIG_ARM64_VHE=y
CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
CONFIG_ARM_AMBA=y
CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
CONFIG_ARM_CPUIDLE=y
CONFIG_ARM_GIC=y
CONFIG_ARM_GIC_V2M=y
CONFIG_ARM_GIC_V3=y
CONFIG_ARM_GIC_V3_ITS=y
CONFIG_ARM_GIC_V3_ITS_PCI=y
CONFIG_ARM_PSCI_FW=y
CONFIG_ARM_SBSA_WATCHDOG=y
CONFIG_ATA=y
# CONFIG_ATA_SFF is not set
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
CONFIG_BALLOON_COMPACTION=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_MQ_PCI=y
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_BLK_PM=y
CONFIG_BLK_SCSI_REQUEST=y
CONFIG_CAVIUM_ERRATUM_22375=y
CONFIG_CAVIUM_ERRATUM_23144=y
CONFIG_CAVIUM_ERRATUM_23154=y
CONFIG_CAVIUM_ERRATUM_27456=y
CONFIG_CAVIUM_ERRATUM_30115=y
CONFIG_CAVIUM_TX2_ERRATUM_219=y
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
CONFIG_CLKDEV_LOOKUP=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_CMA=y
CONFIG_CMA_ALIGNMENT=8
CONFIG_CMA_AREAS=7
# CONFIG_CMA_DEBUG is not set
# CONFIG_CMA_DEBUGFS is not set
CONFIG_CMA_SIZE_MBYTES=16
# CONFIG_CMA_SIZE_SEL_MAX is not set
CONFIG_CMA_SIZE_SEL_MBYTES=y
# CONFIG_CMA_SIZE_SEL_MIN is not set
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
CONFIG_COMMON_CLK=y
CONFIG_COMMON_CLK_CS2000_CP=y
# CONFIG_COMPAT_32BIT_TIME is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONTIG_ALLOC=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
CONFIG_CPU_PM=y
CONFIG_CPU_RMAP=y
CONFIG_CRASH_CORE=y
CONFIG_CRASH_DUMP=y
CONFIG_CRC16=y
CONFIG_CRC7=y
CONFIG_CRC_ITU_T=y
CONFIG_CRC_T10DIF=y
CONFIG_CRYPTO_AES_ARM64=y
CONFIG_CRYPTO_AES_ARM64_CE=y
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
CONFIG_CRYPTO_ANSI_CPRNG=y
CONFIG_CRYPTO_CRC32=y
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_CRCT10DIF=y
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECHAINIV=y
CONFIG_CRYPTO_GF128MUL=y
CONFIG_CRYPTO_GHASH_ARM64_CE=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_LIB_SHA256=y
CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA1_ARM64_CE=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA256_ARM64=y
CONFIG_CRYPTO_SHA2_ARM64_CE=y
CONFIG_CRYPTO_SIMD=y
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_DMADEVICES=y
CONFIG_DMA_CMA=y
CONFIG_DMA_DIRECT_REMAP=y
CONFIG_DMA_ENGINE=y
CONFIG_DMA_OF=y
CONFIG_DMA_PERNUMA_CMA=y
CONFIG_DMA_REMAP=y
CONFIG_DMA_SHARED_BUFFER=y
CONFIG_DTC=y
CONFIG_DT_IDLE_STATES=y
CONFIG_EDAC=y
# CONFIG_EDAC_DEBUG is not set
# CONFIG_EDAC_DMC520 is not set
CONFIG_EDAC_LEGACY_SYSFS=y
CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC_THUNDERX=y
# CONFIG_EDAC_XGENE is not set
CONFIG_EEPROM_AT24=y
CONFIG_FIXED_PHY=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_FRAME_POINTER=y
CONFIG_FREEZER=y
CONFIG_FS_IOMAP=y
CONFIG_FS_MBCACHE=y
CONFIG_FS_POSIX_ACL=y
CONFIG_FUJITSU_ERRATUM_010001=y
CONFIG_FW_CACHE=y
CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_ARCH_TOPOLOGY=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_CPU_VULNERABILITIES=y
CONFIG_GENERIC_CSUM=y
CONFIG_GENERIC_EARLY_IOREMAP=y
CONFIG_GENERIC_GETTIMEOFDAY=y
CONFIG_GENERIC_IDLE_POLL_SETUP=y
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
CONFIG_GENERIC_IRQ_MIGRATION=y
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
CONFIG_GENERIC_MSI_IRQ=y
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_PHY=y
CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GLOB=y
CONFIG_GPIOLIB=y
CONFIG_GPIOLIB_IRQCHIP=y
CONFIG_GPIO_PCA953X=y
CONFIG_GPIO_PCA953X_IRQ=y
CONFIG_GPIO_THUNDERX=y
CONFIG_HANDLE_DOMAIN_IRQ=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_HAS_DMA=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_HIBERNATE_CALLBACKS=y
CONFIG_HIBERNATION=y
CONFIG_HIBERNATION_SNAPSHOT_DEV=y
CONFIG_HOLES_IN_ZONE=y
CONFIG_HOTPLUG_CPU=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_HWSPINLOCK=y
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_CAVIUM=y
CONFIG_HW_RANDOM_OPTEE=y
CONFIG_I2C=y
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MUX=y
CONFIG_I2C_SMBUS=y
CONFIG_I2C_THUNDERX=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
CONFIG_INITRAMFS_SOURCE=""
CONFIG_IRQCHIP=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_TIME_ACCOUNTING=y
CONFIG_IRQ_WORK=y
# CONFIG_ISDN is not set
CONFIG_JBD2=y
CONFIG_JUMP_LABEL=y
CONFIG_KEXEC=y
CONFIG_KEXEC_CORE=y
CONFIG_KSM=y
CONFIG_LIBFDT=y
CONFIG_LLD_VERSION=0
CONFIG_LOCK_DEBUGGING_SUPPORT=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAILBOX=y
# CONFIG_MAILBOX_TEST is not set
CONFIG_MDIO_BUS=y
CONFIG_MDIO_CAVIUM=y
CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_DEVRES=y
CONFIG_MDIO_THUNDER=y
CONFIG_MEMFD_CREATE=y
CONFIG_MEMORY_BALLOON=y
CONFIG_MEMORY_ISOLATION=y
CONFIG_MEMTEST=y
CONFIG_MFD_SYSCON=y
CONFIG_MIGRATION=y
CONFIG_MMC=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_CAVIUM_THUNDERX=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_MSDOS_FS=y
# CONFIG_MTD is not set
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_MULTIPLE_NODES=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_NET_FLOW_LIMIT=y
CONFIG_NLS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NODES_SHIFT=2
CONFIG_NO_HZ_COMMON=y
CONFIG_NO_HZ_IDLE=y
CONFIG_NR_CPUS=64
CONFIG_NUMA=y
CONFIG_NUMA_BALANCING=y
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
CONFIG_NVMEM=y
CONFIG_NVMEM_SYSFS=y
CONFIG_OF=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_FLATTREE=y
CONFIG_OF_GPIO=y
CONFIG_OF_IRQ=y
CONFIG_OF_KOBJ=y
CONFIG_OF_MDIO=y
CONFIG_OF_NET=y
CONFIG_OF_NUMA=y
CONFIG_OPTEE=y
CONFIG_OPTEE_SHM_NUM_PRIV_PAGES=1
CONFIG_PADATA=y
CONFIG_PAGE_REPORTING=y
CONFIG_PARAVIRT=y
CONFIG_PARTITION_PERCPU=y
CONFIG_PCI=y
CONFIG_PCIEAER=y
CONFIG_PCIEPORTBUS=y
CONFIG_PCIE_PME=y
CONFIG_PCI_ATS=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_DOMAINS_GENERIC=y
CONFIG_PCI_ECAM=y
CONFIG_PCI_HOST_COMMON=y
CONFIG_PCI_HOST_GENERIC=y
CONFIG_PCI_HOST_THUNDER_ECAM=y
CONFIG_PCI_HOST_THUNDER_PEM=y
CONFIG_PCI_IOV=y
CONFIG_PCI_MSI=y
CONFIG_PCI_MSI_IRQ_DOMAIN=y
CONFIG_PGTABLE_LEVELS=4
CONFIG_PHYLIB=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_PM=y
CONFIG_PM_CLK=y
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_SYSCON=y
CONFIG_POWER_RESET_XGENE=y
CONFIG_POWER_SUPPLY=y
CONFIG_PROC_VMCORE=y
CONFIG_QUEUED_RWLOCKS=y
CONFIG_QUEUED_SPINLOCKS=y
CONFIG_RAS=y
CONFIG_RATIONAL=y
# CONFIG_RAVE_SP_CORE is not set
CONFIG_REBOOT_MODE=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_MMIO=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RFS_ACCEL=y
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
CONFIG_RPS=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_DS1672=y
CONFIG_RTC_I2C_AND_SPI=y
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_AHCI_PLATFORM=y
CONFIG_SATA_HOST=y
CONFIG_SCHED_INFO=y
CONFIG_SCHED_MC=y
CONFIG_SCSI=y
# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_SCSI_PROC_FS is not set
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_ATTRS=y
CONFIG_SCSI_SAS_HOST_SMP=y
CONFIG_SCSI_SAS_LIBSAS=y
CONFIG_SECCOMP=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SERIAL_8250_DW=y
CONFIG_SERIAL_8250_DWLIB=y
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_FSL=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIAL_DEV_BUS=y
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
CONFIG_SERIAL_MCTRL_GPIO=y
CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_SERIAL_XILINX_PS_UART=y
CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
CONFIG_SG_POOL=y
CONFIG_SMP=y
CONFIG_SPARSEMEM=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSE_IRQ=y
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_THUNDERX=y
CONFIG_SRAM=y
CONFIG_SRCU=y
CONFIG_SWIOTLB=y
CONFIG_SWPHY=y
CONFIG_SYNC_FILE=y
CONFIG_SYSCON_REBOOT_MODE=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_TASK_XACCT=y
CONFIG_TEE=y
CONFIG_THREAD_INFO_IN_TASK=y
CONFIG_THUNDER_NIC_BGX=y
CONFIG_THUNDER_NIC_PF=y
CONFIG_THUNDER_NIC_RGX=y
CONFIG_THUNDER_NIC_VF=y
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_TIMER_OF=y
CONFIG_TIMER_PROBE=y
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
CONFIG_TREE_RCU=y
CONFIG_TREE_SRCU=y
CONFIG_UNMAP_KERNEL_AT_EL0=y
CONFIG_USB=y
CONFIG_USB_COMMON=y
CONFIG_USB_PCI=y
CONFIG_USB_SUPPORT=y
# CONFIG_USB_UHCI_HCD is not set
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_PCI=y
CONFIG_USB_XHCI_PLATFORM=y
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_BALLOON=y
# CONFIG_VIRTIO_BLK is not set
CONFIG_VIRTIO_MMIO=y
# CONFIG_VIRTIO_NET is not set
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VMAP_STACK=y
CONFIG_WATCHDOG_CORE=y
CONFIG_XARRAY_MULTI=y
CONFIG_XPS=y
CONFIG_XXHASH=y
CONFIG_ZONE_DMA32=y

View File

@ -0,0 +1,59 @@
From d0ff7a1bcfe886cab1a237895b08ac51ecfe10e7 Mon Sep 17 00:00:00 2001
From: Tim Harvey <tharvey@gateworks.com>
Date: Wed, 10 Apr 2019 08:00:47 -0700
Subject: [PATCH 04/12] PCI: add quirk for Gateworks PLX PEX860x switch with
GPIO PERST#
Gateworks boards use PLX PEX860x switches where downstream ports
have their PERST# driven from the PEX GPIO.
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
---
drivers/pci/quirks.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -25,6 +25,7 @@
#include <linux/ktime.h>
#include <linux/mm.h>
#include <linux/nvme.h>
+#include <linux/of.h>
#include <linux/platform_data/x86/apple.h>
#include <linux/pm_runtime.h>
#include <linux/switchtec.h>
@@ -5625,3 +5626,34 @@ static void apex_pci_fixup_class(struct
}
DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);
+
+#ifdef CONFIG_PCI_HOST_THUNDER_PEM
+/*
+ * fixup for PLX PEX8909 bridge to configure GPIO1-7 as output High
+ * as they are used for slots1-7 PERST#
+ */
+static void newport_pciesw_early_fixup(struct pci_dev *dev)
+{
+ u32 dw;
+
+ if (!of_machine_is_compatible("gw,newport"))
+ return;
+
+ if (dev->devfn != 0)
+ return;
+
+ dev_info(&dev->dev, "de-asserting PERST#\n");
+ pci_read_config_dword(dev, 0x62c, &dw);
+ dw |= 0xaaa8; /* GPIO1-7 outputs */
+ pci_write_config_dword(dev, 0x62c, dw);
+
+ pci_read_config_dword(dev, 0x644, &dw);
+ dw |= 0xfe; /* GPIO1-7 output high */
+ pci_write_config_dword(dev, 0x644, dw);
+
+ msleep(100);
+}
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8609, newport_pciesw_early_fixup);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8606, newport_pciesw_early_fixup);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8604, newport_pciesw_early_fixup);
+#endif /* CONFIG_PCI_HOST_THUNDER_PEM */

View File

@ -61,6 +61,9 @@ zyxel,gs1900-8hp-v1|\
zyxel,gs1900-8hp-v2)
ucidef_set_poe 70 "$lan_list"
;;
zyxel,gs1900-24hp-v2)
ucidef_set_poe 170 "$lan_list"
;;
esac
board_config_flush

View File

@ -0,0 +1,117 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include "rtl8380_zyxel_gs1900.dtsi"
/ {
compatible = "zyxel,gs1900-24hp-v2", "realtek,rtl838x-soc";
model = "ZyXEL GS1900-24HP v2 Switch";
/* i2c of the left SFP cage: port 25 */
i2c0: i2c-gpio-0 {
compatible = "i2c-gpio";
sda-gpios = <&gpio1 24 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio1 25 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
i2c-gpio,delay-us = <2>;
#address-cells = <1>;
#size-cells = <0>;
};
sfp0: sfp-p25 {
compatible = "sff,sfp";
i2c-bus = <&i2c0>;
los-gpio = <&gpio1 27 GPIO_ACTIVE_HIGH>;
tx-fault-gpio = <&gpio1 22 GPIO_ACTIVE_HIGH>;
mod-def0-gpio = <&gpio1 26 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;
};
/* i2c of the right SFP cage: port 26 */
i2c1: i2c-gpio-1 {
compatible = "i2c-gpio";
sda-gpios = <&gpio1 30 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio1 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
i2c-gpio,delay-us = <2>;
#address-cells = <1>;
#size-cells = <0>;
};
sfp1: sfp-p26 {
compatible = "sff,sfp";
i2c-bus = <&i2c1>;
los-gpio = <&gpio1 33 GPIO_ACTIVE_HIGH>;
tx-fault-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
mod-def0-gpio = <&gpio1 32 GPIO_ACTIVE_LOW>;
tx-disable-gpio = <&gpio1 29 GPIO_ACTIVE_HIGH>;
};
};
&mdio {
EXTERNAL_PHY(0)
EXTERNAL_PHY(1)
EXTERNAL_PHY(2)
EXTERNAL_PHY(3)
EXTERNAL_PHY(4)
EXTERNAL_PHY(5)
EXTERNAL_PHY(6)
EXTERNAL_PHY(7)
EXTERNAL_PHY(16)
EXTERNAL_PHY(17)
EXTERNAL_PHY(18)
EXTERNAL_PHY(19)
EXTERNAL_PHY(20)
EXTERNAL_PHY(21)
EXTERNAL_PHY(22)
EXTERNAL_PHY(23)
INTERNAL_PHY(24)
INTERNAL_PHY(26)
};
&switch0 {
ports {
SWITCH_PORT(0, 1, qsgmii)
SWITCH_PORT(1, 2, qsgmii)
SWITCH_PORT(2, 3, qsgmii)
SWITCH_PORT(3, 4, qsgmii)
SWITCH_PORT(4, 5, qsgmii)
SWITCH_PORT(5, 6, qsgmii)
SWITCH_PORT(6, 7, qsgmii)
SWITCH_PORT(7, 8, qsgmii)
SWITCH_PORT(8, 9, internal)
SWITCH_PORT(9, 10, internal)
SWITCH_PORT(10, 11, internal)
SWITCH_PORT(11, 12, internal)
SWITCH_PORT(12, 13, internal)
SWITCH_PORT(13, 14, internal)
SWITCH_PORT(14, 15, internal)
SWITCH_PORT(15, 16, internal)
SWITCH_PORT(16, 17, qsgmii)
SWITCH_PORT(17, 18, qsgmii)
SWITCH_PORT(18, 19, qsgmii)
SWITCH_PORT(19, 20, qsgmii)
SWITCH_PORT(20, 21, qsgmii)
SWITCH_PORT(21, 22, qsgmii)
SWITCH_PORT(22, 23, qsgmii)
SWITCH_PORT(23, 24, qsgmii)
port@24 {
reg = <24>;
label = "lan25";
phy-mode = "1000base-x";
managed = "in-band-status";
sfp = <&sfp0>;
};
port@26 {
reg = <26>;
label = "lan26";
phy-mode = "1000base-x";
managed = "in-band-status";
sfp = <&sfp1>;
};
};
};

View File

@ -153,4 +153,13 @@ define Device/zyxel_gs1900-8hp-v2
endef
TARGET_DEVICES += zyxel_gs1900-8hp-v2
define Device/zyxel_gs1900-24hp-v2
$(Device/zyxel_gs1900)
SOC := rtl8382
DEVICE_MODEL := GS1900-24HP
DEVICE_VARIANT := v2
ZYXEL_VERS := ABTP
endef
TARGET_DEVICES += zyxel_gs1900-24hp-v2
$(eval $(call BuildImage))

View File

@ -7,9 +7,17 @@ CONFIG_DWMAC_SUN8I=y
# CONFIG_MACH_SUN4I is not set
# CONFIG_MACH_SUN5I is not set
CONFIG_MDIO_BUS_MUX=y
CONFIG_MUSB_PIO_ONLY=y
CONFIG_NOP_USB_XCEIV=y
# CONFIG_PINCTRL_SUN50I_A64 is not set
# CONFIG_PINCTRL_SUN50I_A64_R is not set
# CONFIG_PINCTRL_SUN50I_H5 is not set
# CONFIG_PINCTRL_SUN50I_H6 is not set
# CONFIG_PINCTRL_SUN50I_H6_R is not set
CONFIG_UNWINDER_ARM=y
CONFIG_USB_MUSB_DUAL_ROLE=y
# CONFIG_USB_MUSB_GADGET is not set
CONFIG_USB_MUSB_HDRC=y
# CONFIG_USB_MUSB_HOST is not set
CONFIG_USB_MUSB_SUNXI=y
CONFIG_USB_PHY=y

View File

@ -12,8 +12,8 @@ PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=b5711025bc138c0c94d90b2015d57eda404decbe
PKG_MIRROR_HASH:=6910af6ca27ea80e600c59fad25d88c51618928316f3bfcc78ad2f0c1794da16
PKG_SOURCE_VERSION:=9b01145592fdbffbcbb949d680c152ed2bf2375d
PKG_MIRROR_HASH:=a1bf0858828ee0f68c7847ce9504bb10ce943d0c8fe801d7ba307add2a238c5b
PKG_SOURCE_URL:=https://sourceware.org/git/glibc.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz

View File

@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME := firmware-utils
PKG_RELEASE := 10
PKG_RELEASE := 11
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/kernel.mk

View File

@ -63,19 +63,40 @@ enum partition_trail_value {
PART_TRAIL_NONE = 0x100
};
/** soft-version value overwrite types
* The default (for an uninitialised soft_ver field) is to use the numerical
* version number "0.0.0"
*/
enum soft_ver_type {
SOFT_VER_TYPE_NUMERIC = 0,
SOFT_VER_TYPE_TEXT = 1,
};
/** Firmware layout description */
struct device_info {
const char *id;
const char *vendor;
const char *support_list;
enum partition_trail_value part_trail;
const char *soft_ver;
struct {
enum soft_ver_type type;
union {
const char *text;
uint8_t num[3];
};
} soft_ver;
uint32_t soft_ver_compat_level;
struct flash_partition_entry partitions[MAX_PARTITIONS+1];
const char *first_sysupgrade_partition;
const char *last_sysupgrade_partition;
};
#define SOFT_VER_TEXT(_t) {.type = SOFT_VER_TYPE_TEXT, .text = _t}
#define SOFT_VER_NUMERIC(_maj, _min, _patch) { \
.type = SOFT_VER_TYPE_NUMERIC, \
.num = {_maj, _min, _patch}}
#define SOFT_VER_DEFAULT SOFT_VER_NUMERIC(0, 0, 0)
struct __attribute__((__packed__)) meta_header {
uint32_t length;
uint32_t zero;
@ -129,7 +150,7 @@ static struct device_info boards[] = {
"CPE220(TP-LINK|US|N300-2):1.1\r\n"
"CPE220(TP-LINK|EU|N300-2):1.1\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -168,7 +189,7 @@ static struct device_info boards[] = {
"CPE210(TP-LINK|EU|N300-2):2.0\r\n"
"CPE210(TP-LINK|US|N300-2):2.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -210,7 +231,7 @@ static struct device_info boards[] = {
"CPE210(TP-LINK|UN|N300-2|00000000):3.20\r\n"
"CPE210(TP-LINK|US|N300-2|55530000):3.20\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -251,7 +272,7 @@ static struct device_info boards[] = {
"CPE220(TP-LINK|EU|N300-2):2.0\r\n"
"CPE220(TP-LINK|US|N300-2):2.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -290,7 +311,7 @@ static struct device_info boards[] = {
"CPE220(TP-LINK|EU|N300-2):3.0\r\n"
"CPE220(TP-LINK|US|N300-2):3.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -329,7 +350,7 @@ static struct device_info boards[] = {
"CPE520(TP-LINK|US|N300-5):1.1\r\n"
"CPE520(TP-LINK|EU|N300-5):1.1\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -370,7 +391,7 @@ static struct device_info boards[] = {
"CPE510(TP-LINK|EU|N300-5):2.0\r\n"
"CPE510(TP-LINK|US|N300-5):2.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -414,7 +435,7 @@ static struct device_info boards[] = {
"CPE510(TP-LINK|US|N300-5|55530000):3.20\r\n"
"CPE510(TP-LINK|EU|N300-5|45550000):3.20\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -453,7 +474,7 @@ static struct device_info boards[] = {
"CPE610(TP-LINK|EU|N300-5):1.0\r\n"
"CPE610(TP-LINK|US|N300-5):1.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -492,7 +513,7 @@ static struct device_info boards[] = {
"CPE610(TP-LINK|EU|N300-5):2.0\r\n"
"CPE610(TP-LINK|US|N300-5):2.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -523,7 +544,7 @@ static struct device_info boards[] = {
"WBS210(TP-LINK|US|N300-2):1.20\r\n"
"WBS210(TP-LINK|EU|N300-2):1.20\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -554,7 +575,7 @@ static struct device_info boards[] = {
"WBS210(TP-LINK|US|N300-2|55530000):2.0\r\n"
"WBS210(TP-LINK|EU|N300-2|45550000):2.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -586,7 +607,7 @@ static struct device_info boards[] = {
"WBS510(TP-LINK|EU|N300-5):1.20\r\n"
"WBS510(TP-LINK|CA|N300-5):1.20\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -618,7 +639,7 @@ static struct device_info boards[] = {
"WBS510(TP-LINK|EU|N300-5|45550000):2.0\r\n"
"WBS510(TP-LINK|CA|N300-5|43410000):2.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -648,7 +669,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"{product_name:AD7200,product_ver:1.0.0,special_id:00000000}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"SBL1", 0x00000, 0x20000},
@ -692,7 +713,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"{product_name:Archer C2600,product_ver:1.0.0,special_id:00000000}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/**
We use a bigger os-image partition than the stock images (and thus
@ -744,7 +765,7 @@ static struct device_info boards[] = {
"{product_name:Archer A7,product_ver:5.0.0,special_id:54570000}\n"
"{product_name:Archer A7,product_ver:5.0.0,special_id:52550000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.0\n"),
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -782,7 +803,7 @@ static struct device_info boards[] = {
"{product_name:ArcherC2,product_ver:3.0.0,special_id:55530000}\n"
"{product_name:ArcherC2,product_ver:3.0.0,special_id:45550000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:3.0.1\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:3.0.1\n"),
/** We're using a dynamic kernel/rootfs split here */
@ -820,7 +841,7 @@ static struct device_info boards[] = {
"{product_name:ArcherC25,product_ver:1.0.0,special_id:55530000}\n"
"{product_name:ArcherC25,product_ver:1.0.0,special_id:45550000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.0\n"),
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -859,7 +880,7 @@ static struct device_info boards[] = {
"{product_name:Archer C58,product_ver:1.0.0,special_id:45550000}\r\n"
"{product_name:Archer C58,product_ver:1.0.0,special_id:55530000}\r\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.0\n"),
.partitions = {
{"fs-uboot", 0x00000, 0x10000},
@ -894,7 +915,7 @@ static struct device_info boards[] = {
"{product_name:Archer C59,product_ver:1.0.0,special_id:52550000}\r\n"
"{product_name:Archer C59,product_ver:1.0.0,special_id:55530000}\r\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.0\n"),
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -932,7 +953,7 @@ static struct device_info boards[] = {
"{product_name:Archer C59,product_ver:2.0.0,special_id:45550000}\r\n"
"{product_name:Archer C59,product_ver:2.0.0,special_id:55530000}\r\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:2.0.0 Build 20161206 rel.7303\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:2.0.0 Build 20161206 rel.7303\n"),
/** We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -972,7 +993,7 @@ static struct device_info boards[] = {
"{product_name:Archer C6,product_ver:2.0.0,special_id:52550000}\r\n"
"{product_name:Archer C6,product_ver:2.0.0,special_id:4A500000}\r\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.9.1\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.9.1\n"),
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -1007,7 +1028,7 @@ static struct device_info boards[] = {
"{product_name:Archer A6,product_ver:2.0.0,special_id:54570000}\n"
"{product_name:Archer C6,product_ver:2.0.0,special_id:55530000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.9.1\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.9.1\n"),
.partitions = {
{"factory-boot", 0x00000, 0x20000},
@ -1043,7 +1064,7 @@ static struct device_info boards[] = {
"{product_name:Archer C6,product_ver:3.20,special_id:4A500000}"
"{product_name:Archer C6,product_ver:3.20,special_id:4B520000}",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.9\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.9\n"),
.partitions = {
{"fs-uboot", 0x00000, 0x40000},
@ -1082,7 +1103,7 @@ static struct device_info boards[] = {
"{product_name:Archer A6,product_ver:3.0.0,special_id:55530000}\n"
"{product_name:Archer A6,product_ver:3.0.0,special_id:54570000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.5\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.5\n"),
.partitions = {
{"fs-uboot", 0x00000, 0x40000},
@ -1119,7 +1140,7 @@ static struct device_info boards[] = {
"SupportList:\n"
"{product_name:Archer C6U,product_ver:1.0.0,special_id:45550000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.2\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.2\n"),
.partitions = {
{"fs-uboot", 0x00000, 0x40000},
@ -1155,7 +1176,7 @@ static struct device_info boards[] = {
"{product_name:Archer C60,product_ver:1.0.0,special_id:45550000}\r\n"
"{product_name:Archer C60,product_ver:1.0.0,special_id:55530000}\r\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.0\n"),
.partitions = {
{"fs-uboot", 0x00000, 0x10000},
@ -1189,7 +1210,7 @@ static struct device_info boards[] = {
"{product_name:Archer C60,product_ver:2.0.0,special_id:45550000}\r\n"
"{product_name:Archer C60,product_ver:2.0.0,special_id:55530000}\r\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:2.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:2.0.0\n"),
.partitions = {
{"factory-boot", 0x00000, 0x1fb00},
@ -1225,7 +1246,7 @@ static struct device_info boards[] = {
"{product_name:Archer C60,product_ver:3.0.0,special_id:45550000}\r\n"
"{product_name:Archer C60,product_ver:3.0.0,special_id:55530000}\r\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:3.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:3.0.0\n"),
.partitions = {
{"factory-boot", 0x00000, 0x1fb00},
@ -1261,7 +1282,7 @@ static struct device_info boards[] = {
"{product_name:ArcherC5,product_ver:2.0.0,special_id:55530000}\r\n"
"{product_name:ArcherC5,product_ver:2.0.0,special_id:4A500000}\r\n", /* JP version */
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x40000},
@ -1302,7 +1323,7 @@ static struct device_info boards[] = {
"{product_name:Archer C7,product_ver:4.0.0,special_id:55530000}\n"
"{product_name:Archer C7,product_ver:4.0.0,special_id:43410000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.0\n"),
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -1347,7 +1368,7 @@ static struct device_info boards[] = {
"{product_name:Archer C7,product_ver:5.0.0,special_id:4B520000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:7.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:7.0.0\n"),
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -1390,7 +1411,7 @@ static struct device_info boards[] = {
"product_ver:1.0.0,"
"special_id:00000000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x40000},
@ -1423,7 +1444,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"EAP120(TP-LINK|UN|N300-2):1.0\r\n",
.part_trail = 0xff,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -1452,7 +1473,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"EAP225-Outdoor(TP-Link|UN|AC1200-D):1.0\r\n",
.part_trail = PART_TRAIL_NONE,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.soft_ver_compat_level = 1,
.partitions = {
@ -1481,7 +1502,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"EAP225(TP-Link|UN|AC1350-D):3.0\r\n",
.part_trail = PART_TRAIL_NONE,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.soft_ver_compat_level = 1,
.partitions = {
@ -1510,7 +1531,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"EAP225-Wall(TP-Link|UN|AC1200-D):2.0\r\n",
.part_trail = PART_TRAIL_NONE,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.soft_ver_compat_level = 1,
.partitions = {
@ -1539,7 +1560,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"EAP235-Wall(TP-Link|UN|AC1200-D):1.0\r\n",
.part_trail = PART_TRAIL_NONE,
.soft_ver = NULL,
.soft_ver = SOFT_VER_NUMERIC(3, 0, 0),
.soft_ver_compat_level = 1,
.partitions = {
@ -1568,7 +1589,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"EAP245(TP-LINK|UN|AC1750-D):1.0\r\n",
.part_trail = PART_TRAIL_NONE,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -1594,7 +1615,7 @@ static struct device_info boards[] = {
"SupportList:\r\n"
"EAP245(TP-Link|UN|AC1750-D):3.0\r\n",
.part_trail = PART_TRAIL_NONE,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.soft_ver_compat_level = 1,
/** Firmware partition with dynamic kernel/rootfs split */
@ -1628,7 +1649,7 @@ static struct device_info boards[] = {
"{product_name:TL-WA1201,product_ver:2.0.0,special_id:45550000}\n"
"{product_name:TL-WA1201,product_ver:2.0.0,special_id:55530000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.1 Build 20200709 rel.66244\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.1 Build 20200709 rel.66244\n"),
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -1678,7 +1699,7 @@ static struct device_info boards[] = {
"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:41550000}\n"
"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:52550000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/**
576KB were moved from file-system to os-image
@ -1720,7 +1741,7 @@ static struct device_info boards[] = {
"{product_name:TL-WA855RE,product_ver:1.0.0,special_id:41550000}\n"
"{product_name:TL-WA855RE,product_ver:1.0.0,special_id:52550000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -1751,7 +1772,7 @@ static struct device_info boards[] = {
"SupportList:\n"
"{product_name:TL-WPA8630P,product_ver:2.0.0,special_id:45550000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"factory-uboot", 0x00000, 0x20000},
@ -1788,7 +1809,7 @@ static struct device_info boards[] = {
"{product_name:TL-WPA8630P,product_ver:2.0.0,special_id:44450000}\n"
"{product_name:TL-WPA8630P,product_ver:2.1.0,special_id:41550000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"factory-uboot", 0x00000, 0x20000},
@ -1823,7 +1844,7 @@ static struct device_info boards[] = {
"SupportList:\n"
"{product_name:TL-WPA8630P,product_ver:2.1.0,special_id:45550000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"factory-uboot", 0x00000, 0x20000},
@ -1859,7 +1880,7 @@ static struct device_info boards[] = {
"{product_name:TL-WR1043N,product_ver:5.0.0,special_id:45550000}\n"
"{product_name:TL-WR1043N,product_ver:5.0.0,special_id:55530000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.0.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.0.0\n"),
.partitions = {
{"factory-boot", 0x00000, 0x20000},
{"fs-uboot", 0x20000, 0x20000},
@ -1893,7 +1914,7 @@ static struct device_info boards[] = {
"SupportList:\n"
"{product_name:TL-WR1043ND,product_ver:4.0.0,special_id:45550000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -1926,7 +1947,7 @@ static struct device_info boards[] = {
"{product_name:TL-WR902AC,product_ver:1.0.0,special_id:45550000}\n"
"{product_name:TL-WR902AC,product_ver:1.0.0,special_id:55530000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/**
384KB were moved from file-system to os-image
@ -1961,7 +1982,7 @@ static struct device_info boards[] = {
"SupportList:\n"
"{product_name:TL-WR941HP,product_ver:1.0.0,special_id:00000000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -1993,7 +2014,7 @@ static struct device_info boards[] = {
"{product_name:TL-WR942N,product_ver:1.0.0,special_id:00000000}\r\n"
"{product_name:TL-WR942N,product_ver:1.0.0,special_id:52550000}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -2040,7 +2061,7 @@ static struct device_info boards[] = {
"{product_name:RE200,product_ver:2.0.0,special_id:54570000}\n"
"{product_name:RE200,product_ver:2.0.0,special_id:55530000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -2084,7 +2105,7 @@ static struct device_info boards[] = {
"{product_name:RE200,product_ver:3.0.0,special_id:54570000}\n"
"{product_name:RE200,product_ver:3.0.0,special_id:55530000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -2128,7 +2149,7 @@ static struct device_info boards[] = {
"{product_name:RE200,product_ver:4.0.0,special_id:49440000}\n"
"{product_name:RE200,product_ver:4.0.0,special_id:45470000}\n",
.part_trail = 0x00,
.soft_ver = "soft_ver:1.1.0\n",
.soft_ver = SOFT_VER_TEXT("soft_ver:1.1.0\n"),
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -2171,7 +2192,7 @@ static struct device_info boards[] = {
"{product_name:RE220,product_ver:2.0.0,special_id:54570000}\n"
"{product_name:RE220,product_ver:2.0.0,special_id:55530000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -2208,7 +2229,7 @@ static struct device_info boards[] = {
"{product_name:RE305,product_ver:1.0.0,special_id:41550000}\n"
"{product_name:RE305,product_ver:1.0.0,special_id:43410000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
.partitions = {
{"fs-uboot", 0x00000, 0x20000},
@ -2244,7 +2265,7 @@ static struct device_info boards[] = {
"{product_name:RE350,product_ver:1.0.0,special_id:4b520000}\n"
"{product_name:RE350,product_ver:1.0.0,special_id:4a500000}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/** We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2275,7 +2296,7 @@ static struct device_info boards[] = {
"SupportList:\n"
"{product_name:RE350K,product_ver:1.0.0,special_id:00000000,product_region:US}\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/** We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2314,7 +2335,7 @@ static struct device_info boards[] = {
"{product_name:RE355,product_ver:1.0.0,special_id:4B520000}\r\n"
"{product_name:RE355,product_ver:1.0.0,special_id:55534100}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2352,7 +2373,7 @@ static struct device_info boards[] = {
"{product_name:RE450,product_ver:1.0.0,special_id:4B520000}\r\n"
"{product_name:RE450,product_ver:1.0.0,special_id:55534100}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/** We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2391,7 +2412,7 @@ static struct device_info boards[] = {
"{product_name:RE450,product_ver:2.0.0,special_id:4B520000}\r\n"
"{product_name:RE450,product_ver:2.0.0,special_id:42520000}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2430,7 +2451,7 @@ static struct device_info boards[] = {
"{product_name:RE450,product_ver:3.0.0,special_id:4B520000}\r\n"
"{product_name:RE450,product_ver:3.0.0,special_id:42520000}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2470,7 +2491,7 @@ static struct device_info boards[] = {
"{product_name:RE455,product_ver:1.0.0,special_id:4B520000}\r\n"
"{product_name:RE455,product_ver:1.0.0,special_id:42520000}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2508,7 +2529,7 @@ static struct device_info boards[] = {
"{product_name:RE500,product_ver:1.0.0,special_id:41550000}\r\n"
"{product_name:RE500,product_ver:1.0.0,special_id:41530000}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2545,7 +2566,7 @@ static struct device_info boards[] = {
"{product_name:RE650,product_ver:1.0.0,special_id:41550000}\r\n"
"{product_name:RE650,product_ver:1.0.0,special_id:41530000}\r\n",
.part_trail = 0x00,
.soft_ver = NULL,
.soft_ver = SOFT_VER_DEFAULT,
/* We're using a dynamic kernel/rootfs split here */
.partitions = {
@ -2696,10 +2717,10 @@ static struct image_partition_entry make_soft_version(
{
/** If an info string is provided, use this instead of
* the structured data, and include the null-termination */
if (info->soft_ver) {
uint32_t len = strlen(info->soft_ver) + 1;
if (info->soft_ver.type == SOFT_VER_TYPE_TEXT) {
uint32_t len = strlen(info->soft_ver.text) + 1;
return init_meta_partition_entry("soft-version",
info->soft_ver, len, info->part_trail);
info->soft_ver.text, len, info->part_trail);
}
time_t t;
@ -2714,9 +2735,9 @@ static struct image_partition_entry make_soft_version(
struct soft_version s = {
.pad1 = 0xff,
.version_major = 0,
.version_minor = 0,
.version_patch = 0,
.version_major = info->soft_ver.num[0],
.version_minor = info->soft_ver.num[1],
.version_patch = info->soft_ver.num[2],
.year_hi = bcd((1900+tm->tm_year)/100),
.year_lo = bcd(tm->tm_year%100),