From d1b824650f1ee694ec2dbdd2f4f9ec64e650cf86 Mon Sep 17 00:00:00 2001 From: Birger Koblitz Date: Sun, 24 Apr 2022 22:01:31 +0200 Subject: [PATCH 01/29] realtek: do not reset SerDes on link change Do not reset the RTL930x SerDes on link changes, instead set up the SDS with internal PHYs for the SFP+ ports only. This fixes the 8 1GBit ports on the Zyxel XGS1250 which do not work without this patch. A complete SerDes reset was performed on all SerDes links. For copper 1Gbit ports, this is commonly a single XGMII link to an RTL8218D. There is however no support for setting up the XGMII link on RTL9300/RTL9310, thereby wiping the (RX/TX) setup done by u-boot and breaking the 1GBit ports. No SerDes reset should be done for these links. The handling of SGMII/HiSGMII, 1000BX or 10GR links is actually entirely different. All these modes need to be suitably RX calibrated and the pre- main and post- amplifiers set up properly for TX. The 10GBit SFP+ fiber links are recalibrated instead of reset, which e.g. is necessary when someone pulls a module out and puts another in. This makes swapping out 10GBit fiber modules possible. 1GBit modules are not yet supported, nor any modules with an internal phy. Tested-by: Stijn Segers Signed-off-by: Birger Koblitz [rewrite commit message based on discussion] Link: http://lists.infradead.org/pipermail/openwrt-devel/2022-May/038623.html Signed-off-by: Sander Vanheule --- target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c | 3 ++- .../linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/rtl83xx.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c b/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c index 2e3ab4a805..f54fdd298a 100644 --- a/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c +++ b/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c @@ -817,7 +817,8 @@ static void rtl93xx_phylink_mac_config(struct dsa_switch *ds, int port, __func__, phy_modes(state->interface)); return; } - rtl9300_sds_rst(sds_num, sds_mode); + if (state->interface == PHY_INTERFACE_MODE_10GBASER) + rtl9300_serdes_setup(sds_num, state->interface); } reg = sw_r32(priv->r->mac_force_mode_ctrl(port)); diff --git a/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/rtl83xx.h b/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/rtl83xx.h index 0bb11f9b8b..107016469c 100644 --- a/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/rtl83xx.h +++ b/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/rtl83xx.h @@ -121,6 +121,7 @@ irqreturn_t rtl839x_switch_irq(int irq, void *dev_id); void rtl930x_vlan_profile_dump(int index); int rtl9300_sds_power(int mac, int val); void rtl9300_sds_rst(int sds_num, u32 mode); +int rtl9300_serdes_setup(int sds_num, phy_interface_t phy_mode); void rtl930x_print_matrix(void); /* RTL931x-specific */ From 20ca59ceb78114d6e7607ae55b512f8b38a77a9c Mon Sep 17 00:00:00 2001 From: Piotr Dymacz Date: Fri, 1 Apr 2022 17:35:42 +0200 Subject: [PATCH 02/29] image: drop unused 'BuildKernel/MkFIT' The 'MkFIT' recipe is no longer used across whole codebase. Signed-off-by: Piotr Dymacz --- include/image.mk | 8 -------- 1 file changed, 8 deletions(-) diff --git a/include/image.mk b/include/image.mk index b23e192c5d..bdcf20d30c 100644 --- a/include/image.mk +++ b/include/image.mk @@ -137,14 +137,6 @@ define Image/BuildKernel/MkuImage -n '$(call toupper,$(ARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)' -d $(4) $(5) endef -define Image/BuildKernel/MkFIT - $(TOPDIR)/scripts/mkits.sh \ - -D $(1) -o $(KDIR)/fit-$(1).its -k $(2) $(if $(3),-d $(3)) -C $(4) -a $(5) -e $(6) \ - -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \ - -A $(LINUX_KARCH) -v $(LINUX_VERSION) - PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/fit-$(1).its $(KDIR)/fit-$(1)$(7).itb -endef - ifdef CONFIG_TARGET_IMAGES_GZIP define Image/Gzip rm -f $(1).gz From 064e7e57b483e6879de0facef4f1fce86ec4ad47 Mon Sep 17 00:00:00 2001 From: Piotr Dymacz Date: Fri, 13 May 2022 13:35:59 +0200 Subject: [PATCH 03/29] ramips: fix booting on Samknows SK-WB8 This fixes a well known "LZMA ERROR 1" error, reported previously on numerous of similar devices. Fixes: #9824 Signed-off-by: Piotr Dymacz --- target/linux/ramips/image/mt7621.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index cbdc63247d..6a9531aa8c 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -1461,6 +1461,7 @@ TARGET_DEVICES += renkforce_ws-wn530hp3-a define Device/samknows_whitebox-v8 $(Device/dsa-migration) + $(Device/uimage-lzma-loader) IMAGE_SIZE := 16064k DEVICE_VENDOR := SamKnows DEVICE_MODEL := Whitebox 8 From 8b5d2a73255298b916259ccbc609e4667a335844 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski Date: Tue, 21 Dec 2021 22:57:27 +0100 Subject: [PATCH 04/29] lantiq: xway: disable unused switch drivers None of the devices supported by target xway are using Realtek RTL8366S, RTL8367A and RTL8367B switches. The switches mentioned earlier were enabled when bumping the kernel version to 3.7 in commit 3a948770cf46 ("add linux-v3.7"). Switches used by individual devices are listed below. Device Switch PHY Arcadyan ARV4510PW Infineon ADM6996I int. switch Arcadyan ARV4519PW Atheros AR8216 int. switch Arcadyan ARV7506PW11 Realtek RTL8306G int. switch Arcadyan ARV7510PW22 Atheros AR8216 int. switch Arcadyan ARV7518PW Atheros AR8216 int. switch Arcadyan ARV7519PW Atheros RTL8306G int. switch Arcadyan ARV7525PW N/A IC+ IP101A Arcadyan ARV752DPW Realtek RTL8306G int. switch Arcadyan ARV752DPW22 Atheros AR8216 int. switch Arcadyan ARV8539PW22 Atheros AR8216 int. switch AVM Fritzbox 7312 int. SoC Atheros AR8030-A AVM Fritzbox 7320 int. SOC Lantiq PEF7071V AudioCodes MediaPack MP-252 Infineon ADM6996I int. switch BT Home Hub 2B Infineon ADM6996I int. switch BT Home Hub 3A Infineon PSB6972 Lantiq PEF7071V Buffalo WBMR-HP-G300H-A Atheros AR8316 int. switch Buffalo WBMR-HP-G300H-B Atheros AR8316 int. switch Lantiq EASY50712 Infinein ADM6996I int. switch Netgear DGN3500 Realtek RTL8366RB int. switch Netgear DGN3500B Realtek RTL8366RB int. switch Siemens Gigaset sx76x Infineon ADM6996I int. switch ZTE H201L Realtek RTL8306G int. switch ZyXEL P-2601HN-F1 Realtek RTL8306E int. switch ZyXEL P-2601HN-F3 Realtek RTL8306E int. switch Reduces uncompressed kernel size by 36 kB. Signed-off-by: Aleksander Jan Bajkowski Acked-by: Martin Blumenstingl (checkpatch.pl fixes) Signed-off-by: Christian Lamparter --- target/linux/lantiq/xway/config-5.10 | 3 --- 1 file changed, 3 deletions(-) diff --git a/target/linux/lantiq/xway/config-5.10 b/target/linux/lantiq/xway/config-5.10 index 20e7ac3479..8ff706fea9 100644 --- a/target/linux/lantiq/xway/config-5.10 +++ b/target/linux/lantiq/xway/config-5.10 @@ -35,10 +35,7 @@ CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_RTL8306_PHY=y CONFIG_RTL8366RB_PHY=y -CONFIG_RTL8366S_PHY=y CONFIG_RTL8366_SMI=y -CONFIG_RTL8367B_PHY=y -CONFIG_RTL8367_PHY=y CONFIG_SGL_ALLOC=y CONFIG_SOC_TYPE_XWAY=y CONFIG_SOC_XWAY=y From 8f6e2bb178864a1822b5dfe85b96d113dce4a5f0 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Wed, 9 Mar 2022 20:20:20 +0100 Subject: [PATCH 05/29] bcm53xx: remove MR32's specific get_leds_dt code the existing diag.sh code will pick up the LED by itself. This is not/no longer needed. Signed-off-by: Christian Lamparter --- target/linux/bcm53xx/base-files/etc/diag.sh | 3 -- .../331-Meraki-MR32-Status-LEDs.patch | 28 ------------------- 2 files changed, 31 deletions(-) delete mode 100644 target/linux/bcm53xx/patches-5.10/331-Meraki-MR32-Status-LEDs.patch diff --git a/target/linux/bcm53xx/base-files/etc/diag.sh b/target/linux/bcm53xx/base-files/etc/diag.sh index bf5b779aa8..1a9332327a 100644 --- a/target/linux/bcm53xx/base-files/etc/diag.sh +++ b/target/linux/bcm53xx/base-files/etc/diag.sh @@ -18,9 +18,6 @@ get_status_led() { status_led=$(basename $status_led_file) return fi; - - # And finally, let's also try the device-Tree aliases node - status_led="$(get_dt_led status)" } set_state() { diff --git a/target/linux/bcm53xx/patches-5.10/331-Meraki-MR32-Status-LEDs.patch b/target/linux/bcm53xx/patches-5.10/331-Meraki-MR32-Status-LEDs.patch deleted file mode 100644 index fb78ee93c4..0000000000 --- a/target/linux/bcm53xx/patches-5.10/331-Meraki-MR32-Status-LEDs.patch +++ /dev/null @@ -1,28 +0,0 @@ -From: Christian Lamparter -Date: Thu, 7 Jun 2018 19:29:12 +0200 -Subject: bcm53xx: add LED status label alias for Meraki MR32 - -add an led-status alias label. This is used by OpenWrt's LED -DTS lookup function to identifiy the indicator LED - -Signed-off-by: Christian Lamparter - ---- a/arch/arm/boot/dts/bcm53016-meraki-mr32.dts -+++ b/arch/arm/boot/dts/bcm53016-meraki-mr32.dts -@@ -27,6 +27,7 @@ - - aliases { - serial1 = &uart2; -+ led-status = &led_status; - }; - - leds { -@@ -68,7 +69,7 @@ - max-brightness = <255>; - }; - -- green { -+ led_status: green { - /* SYS-LED 1 - Tricolor */ - function = LED_FUNCTION_POWER; - color = ; From d65bafa34bc57f652800cf0f6e6402ff7dca0289 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Sat, 14 May 2022 10:44:58 +0200 Subject: [PATCH 06/29] apm821xx: use nested fixed-partitions This makes it possible to fix Netgear WNDAP620+660 DTS ugliness. Bring back the dtb and firmware partitions for the WNDR4700. Thank you, mans0n. Signed-off-by: Christian Lamparter --- .../linux/apm821xx/dts/netgear-wndap6x0.dtsi | 30 +++++++------- .../linux/apm821xx/dts/netgear-wndr4700.dts | 39 ++++++++++++++----- 2 files changed, 46 insertions(+), 23 deletions(-) diff --git a/target/linux/apm821xx/dts/netgear-wndap6x0.dtsi b/target/linux/apm821xx/dts/netgear-wndap6x0.dtsi index c6f112d240..8a15a78dce 100644 --- a/target/linux/apm821xx/dts/netgear-wndap6x0.dtsi +++ b/target/linux/apm821xx/dts/netgear-wndap6x0.dtsi @@ -52,23 +52,27 @@ read-only; }; - partition@110000,0 { + partition@110000 { label = "firmware"; reg = <0x00110000 0x01ac0000>; - }; - partition@110000,1 { - /* - * The u-boot bootloader will look at this - * offset (0x110000) for an uImage binary. - */ - label = "kernel"; - reg = <0x00110000 0x005f0000>; - }; + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; - partition@700000 { - label = "ubi"; - reg = <0x00700000 0x014d0000>; + partition@0 { + /* + * The u-boot bootloader will look at this + * offset (0x110000) for an uImage binary. + */ + label = "kernel"; + reg = <0x00000000 0x005f0000>; + }; + + partition@5f0000 { + label = "ubi"; + reg = <0x005f0000 0x014d0000>; + }; }; partition@1bd0000 { diff --git a/target/linux/apm821xx/dts/netgear-wndr4700.dts b/target/linux/apm821xx/dts/netgear-wndr4700.dts index fe0f713943..342f9a01db 100644 --- a/target/linux/apm821xx/dts/netgear-wndr4700.dts +++ b/target/linux/apm821xx/dts/netgear-wndr4700.dts @@ -187,22 +187,41 @@ }; partition@180000 { - label = "kernel"; - reg = <0x00180000 0x00380000>; + label = "firmware"; + reg = <0x00180000 0x01860000>; + + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "kernel"; + reg = <0x00000000 0x00380000>; + + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* + * device-tree is @ 0x00180000 - 0x0019ffff + * kernel starts from 0x20000. + * this is coded into netgear's u-boot. + */ + partition@0 { + label = "dtb"; + reg = <0x00000000 0x20000>; + }; /* - * device-tree is @ 0x00180000 - 0x001fffff - * kernel starts from 0x200000. - * this is coded into netgear's u-boot. - * * this partition will also contain a * fake/empty rootfs at the end to fool * Netgear's uboot rootfs integrety checks. */ - }; + }; - partition@500000 { - label = "ubi"; - reg = <0x00500000 0x014e0000>; + partition@380000 { + label = "ubi"; + reg = <0x00380000 0x014e0000>; + }; }; From 834c9b3f055e5ea719f6adfb3fa979e32f2adbd0 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Sat, 7 May 2022 19:41:55 +0200 Subject: [PATCH 07/29] ipq40xx: Lyra: update RGB LED-Controller node for 5.10+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the reg and color property to each channel node. This update is to accommodate the multicolor framework. Refer to: Note: There is only a single extremely bright RGB-LED. The RGB-color channels (i.e.: blue-0, blue-1 and blue-2) are running in parallel to increase the current delivery beyond what a single PWM-output on the LED controller could do. BugLink: https://github.com/openwrt/openwrt/issues/9851 Reported-By: Thomas Bøge Tested-By: Thomas Bøge Signed-off-by: Christian Lamparter --- .../etc/uci-defaults/04_led_migration | 3 + .../arm/boot/dts/qcom-ipq4019-map-ac2200.dts | 120 +++++++++++------- 2 files changed, 77 insertions(+), 46 deletions(-) diff --git a/target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration b/target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration index ef4d3d037c..e8818a41ed 100644 --- a/target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration +++ b/target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration @@ -3,6 +3,9 @@ board=$(board_name) case "$board" in +asus,map-ac2200) + migrate_leds ':chan=-' + ;; engenius,emr3500) migrate_leds "emr3500:=" ;; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts index 3b9078bc08..433048dd4b 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts @@ -4,6 +4,7 @@ #include #include #include +#include / { model = "ASUS Lyra MAP-AC2200"; @@ -252,69 +253,96 @@ /* 9-channel RGB LED controller */ compatible = "national,lp5523"; reg = <0x32>; - clock-mode = [01]; + clock-mode = /bits/ 8 <1>; + #address-cells = <1>; + #size-cells = <0>; - led_blue0: blue0 { - chan-name = "blue0"; - label = "blue:chan0"; - led-cur = [fa]; - max-cur = [ff]; + /* + * There is only one single extremely bright RGB-LED. + * The RGB-color channels are running in parallel to + * increase the current delivery capabilities beyond + * what a single PWM-output of the controller can do. + */ + + led_blue0: led@0 { + chan-name = "blue-0"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <0>; + color = ; + function-enumerator = <0>; }; - blue1 { - chan-name = "blue1"; - label = "blue:chan1"; - led-cur = [fa]; - max-cur = [ff]; + led@1 { + chan-name = "blue-1"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <1>; + color = ; + function-enumerator = <1>; }; - blue2 { - chan-name = "blue2"; - label = "blue:chan2"; - led-cur = [fa]; - max-cur = [ff]; + led@2 { + chan-name = "blue-2"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <2>; + color = ; + function-enumerator = <2>; }; - led_green0: green0 { - chan-name = "green0"; - label = "green:chan0"; - led-cur = [fa]; - max-cur = [ff]; + led_green0: led@3 { + chan-name = "green-0"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <3>; + color = ; + function-enumerator = <0>; }; - green1 { - chan-name = "green1"; - label = "green:chan1"; - led-cur = [fa]; - max-cur = [ff]; + led@4 { + chan-name = "green-1"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <4>; + color = ; + function-enumerator = <1>; }; - green2 { - chan-name = "green2"; - label = "green:chan2"; - led-cur = [fa]; - max-cur = [ff]; + led@5 { + chan-name = "green-2"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <5>; + color = ; + function-enumerator = <2>; }; - led_red0: red0 { - chan-name = "red0"; - label = "red:chan0"; - led-cur = [fa]; - max-cur = [ff]; + led_red0: led@6 { + chan-name = "red-0"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <6>; + color = ; + function-enumerator = <0>; }; - red1 { - chan-name = "red1"; - label = "red:chan1"; - led-cur = [fa]; - max-cur = [ff]; + led@7 { + chan-name = "red-1"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <7>; + color = ; + function-enumerator = <1>; }; - red2 { - chan-name = "red2"; - label = "red:chan2"; - led-cur = [fa]; - max-cur = [ff]; + led@8 { + chan-name = "red-2"; + led-cur = /bits/ 8 <0xfa>; + max-cur = /bits/ 8 <0xff>; + reg = <8>; + color = ; + function-enumerator = <2>; }; }; }; From 25b29b53f01d3053bd7c8ef68b0bd7dcdb195913 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Fri, 13 May 2022 21:55:46 +0200 Subject: [PATCH 08/29] linux-firmware: Update to version 20220509 git log --pretty=oneline --abbrev-commit 20220411..20220509 (sorted) amdgpu: 480d6c2 amdgpu: update dcn_3_1_6_dmcub firmware b4994be amdgpu: update gc_10_3_7_rlc firmware 61eb408 amdgpu: update psp_13_0_8 firmware fcf9d8c amdgpu: update yellow carp DMCUB firmware ath10k: 73743b8 ath10k: QCA4019 hw1.0: update board-2.bin 6ad0930 ath10k: QCA6174 hw3.0: update board-2.bin 729bd7f ath10k: QCA6174 hw3.0: update firmware-6.bin to WLAN.RM.4.4.1-00288-QCARMSWPZ-1 9fce09f ath10k: QCA9888 hw2.0: update board-2.bin b155d85 ath10k: QCA9888 hw2.0: update firmware-5.bin to 10.4-3.9.0.2-00156 44b8aee ath10k: QCA9984 hw1.0: update board-2.bin 4ad3bd3 ath10k: QCA9984 hw1.0: update firmware-5.bin to 10.4-3.9.0.2-00156 1962cba ath10k: QCA99X0 hw2.0: add board-2.bin Signed-off-by: Christian Lamparter --- package/firmware/linux-firmware/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/firmware/linux-firmware/Makefile b/package/firmware/linux-firmware/Makefile index f0d3e85cd8..7b3b8ee721 100644 --- a/package/firmware/linux-firmware/Makefile +++ b/package/firmware/linux-firmware/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=linux-firmware -PKG_VERSION:=20220411 +PKG_VERSION:=20220509 PKG_RELEASE:=1 PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_HASH:=020b11f6412f4956f5a6f98de7d41867d2b30ea0ce81b1e2d206ec9840363849 +PKG_HASH:=376e0b3d7b4f8aaa2abf7f5ab74803dcf14b06b94e3d841b1467cd9a2848255e PKG_MAINTAINER:=Felix Fietkau From 4ba7f6d9cbd74adc82ab3064cc4c9f6ec5eb51a6 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Fri, 13 May 2022 22:07:59 +0200 Subject: [PATCH 09/29] linux-firmware: take linux-firmware.git's qca99x0 boardfile Kalle Valo managed to add the qca9980's boardfile in the upstream repository. Sourcing the file from his repository is no longer needed. Signed-off-by: Christian Lamparter --- package/firmware/linux-firmware/qca_ath10k.mk | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/package/firmware/linux-firmware/qca_ath10k.mk b/package/firmware/linux-firmware/qca_ath10k.mk index e6beef791b..25a1571ad6 100644 --- a/package/firmware/linux-firmware/qca_ath10k.mk +++ b/package/firmware/linux-firmware/qca_ath10k.mk @@ -1,14 +1,3 @@ -QCA99X0_BOARD_REV:=e404444dfc0baf7d0fcde21ab8ec333608c9960c -QCA99X0_BOARD_FILE:=board-2.bin.$(QCA99X0_BOARD_REV) - -define Download/qca99x0-board - URL:=https://github.com/kvalo/ath10k-firmware/raw/master/QCA99X0/hw2.0/ - URL_FILE:=board-2.bin - FILE:=$(QCA99X0_BOARD_FILE) - HASH:=f91975dca2435fa6f8570146e6b255c2a70b9ffbdf5ef16a29d67bec7374c11a -endef -$(eval $(call Download,qca99x0-board)) - Package/ath10k-board-qca4019 = $(call Package/firmware-default,ath10k qca4019 board firmware) define Package/ath10k-board-qca4019/install $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0 @@ -117,7 +106,7 @@ Package/ath10k-board-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 bo define Package/ath10k-board-qca99x0/install $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA99X0/hw2.0 $(INSTALL_DATA) \ - $(DL_DIR)/$(QCA99X0_BOARD_FILE) \ + $(PKG_BUILD_DIR)/ath10k/QCA99X0/hw2.0/board-2.bin \ $(1)/lib/firmware/ath10k/QCA99X0/hw2.0/board-2.bin endef $(eval $(call BuildPackage,ath10k-board-qca99x0)) From 91fa4826b975943daab97df450ca65a5bff8bbed Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Fri, 13 May 2022 22:25:36 +0200 Subject: [PATCH 10/29] ipq-wifi: drop upstreamed board-2.bin The BDFs for the: Aruba AP-303 ASUS RT-AC42U AVM FRITZ!Repeater 1200 Buffalo WTR-M2133HP Cell C RTL30VW D-Link DAP-2610 EnGenius EAP2200 EnGenius EMD1 EnGenius EMR3500 EnGenius EMR5000 EZVIZ CS-W3-WD1200G EUP Google Wifi Linksys MR8300 V1.0 Luma WRTQ-329ACN MobiPromo CM520-79F NEC Platforms WG2600HP3 Plasma Cloud PA1200 (updated version) Plasma Cloud PA2200 ZTE MF286D were upstreamed to the ath10k-firmware repository and landed in linux-firmware.git. Furthermore the BDFs for the: 8devices Habanero OpenMesh A62 OpenMesh A42 AVM FRITZ!Box 4040 have been updated. Signed-off-by: Christian Lamparter --- package/firmware/ipq-wifi/Makefile | 40 +----------------- .../ipq-wifi/board-8dev_habanero-dvk.qca4019 | Bin 24324 -> 0 bytes .../ipq-wifi/board-aruba_ap-303.qca4019 | Bin 24316 -> 0 bytes .../ipq-wifi/board-asus_rt-ac42u.qca4019 | Bin 12168 -> 0 bytes .../ipq-wifi/board-asus_rt-ac42u.qca9984 | Bin 12168 -> 0 bytes .../board-avm_fritzrepeater-1200.qca4019 | Bin 24332 -> 0 bytes .../board-buffalo_wtr-m2133hp.qca4019 | Bin 24332 -> 0 bytes .../board-buffalo_wtr-m2133hp.qca9984 | Bin 12172 -> 0 bytes .../ipq-wifi/board-cellc_rtl30vw.qca4019 | Bin 24316 -> 0 bytes .../ipq-wifi/board-dlink_dap2610.qca4019 | Bin 24316 -> 0 bytes .../ipq-wifi/board-engenius_eap2200.qca4019 | Bin 24324 -> 0 bytes .../ipq-wifi/board-engenius_eap2200.qca9888 | Bin 12172 -> 0 bytes .../ipq-wifi/board-engenius_emd1.qca4019 | Bin 24316 -> 0 bytes .../ipq-wifi/board-engenius_emr3500.qca4019 | Bin 24324 -> 0 bytes .../board-ezviz_cs-w3-wd1200g-eup.qca4019 | Bin 24340 -> 0 bytes .../ipq-wifi/board-google_wifi.qca4019 | Bin 48596 -> 0 bytes .../ipq-wifi/board-linksys_mr8300-v0.qca4019 | Bin 97268 -> 0 bytes .../ipq-wifi/board-linksys_mr8300-v0.qca9888 | Bin 48644 -> 0 bytes .../ipq-wifi/board-luma_wrtq-329acn.qca4019 | Bin 24324 -> 0 bytes .../board-mobipromo_cm520-79f.qca4019 | Bin 24308 -> 0 bytes .../ipq-wifi/board-nec_wg2600hp3.qca9984 | Bin 24332 -> 0 bytes .../ipq-wifi/board-plasmacloud_pa1200.qca4019 | Bin 24324 -> 0 bytes .../ipq-wifi/board-plasmacloud_pa2200.qca4019 | Bin 24324 -> 0 bytes .../ipq-wifi/board-plasmacloud_pa2200.qca9888 | Bin 12172 -> 0 bytes .../ipq-wifi/board-zte_mf286d.qca4019 | Bin 24308 -> 0 bytes target/linux/ipq40xx/image/chromium.mk | 2 +- target/linux/ipq40xx/image/generic.mk | 29 +++++-------- target/linux/ipq806x/image/generic.mk | 2 +- 28 files changed, 14 insertions(+), 59 deletions(-) delete mode 100644 package/firmware/ipq-wifi/board-8dev_habanero-dvk.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-aruba_ap-303.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-asus_rt-ac42u.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-asus_rt-ac42u.qca9984 delete mode 100644 package/firmware/ipq-wifi/board-avm_fritzrepeater-1200.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-buffalo_wtr-m2133hp.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-buffalo_wtr-m2133hp.qca9984 delete mode 100644 package/firmware/ipq-wifi/board-cellc_rtl30vw.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-dlink_dap2610.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-engenius_eap2200.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-engenius_eap2200.qca9888 delete mode 100644 package/firmware/ipq-wifi/board-engenius_emd1.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-engenius_emr3500.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-ezviz_cs-w3-wd1200g-eup.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-google_wifi.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-linksys_mr8300-v0.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-linksys_mr8300-v0.qca9888 delete mode 100644 package/firmware/ipq-wifi/board-luma_wrtq-329acn.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-mobipromo_cm520-79f.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-nec_wg2600hp3.qca9984 delete mode 100644 package/firmware/ipq-wifi/board-plasmacloud_pa1200.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-plasmacloud_pa2200.qca4019 delete mode 100644 package/firmware/ipq-wifi/board-plasmacloud_pa2200.qca9888 delete mode 100644 package/firmware/ipq-wifi/board-zte_mf286d.qca4019 diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index b3b04c6abf..732fc5ee47 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -25,40 +25,21 @@ endef # ALLWIFIBOARDS:= \ - 8dev_habanero-dvk \ - aruba_ap-303 \ - asus_rt-ac42u \ - avm_fritzrepeater-1200 \ - buffalo_wtr-m2133hp \ - cellc_rtl30vw \ devolo_magic-2-wifi-next \ - dlink_dap2610 \ edgecore_ecw5410 \ edgecore_oap100 \ - engenius_eap2200 \ - engenius_emd1 \ - engenius_emr3500 \ - ezviz_cs-w3-wd1200g-eup \ glinet_gl-ap1300 \ glinet_gl-b2200 \ glinet_gl-s1300 \ - google_wifi \ linksys_ea8300 \ - linksys_mr8300-v0 \ - luma_wrtq-329acn \ mikrotik_cap-ac \ mikrotik_hap-ac2 \ mikrotik_hap-ac3 \ mikrotik_sxtsq-5-ac \ - mobipromo_cm520-79f \ - nec_wg2600hp3 \ p2w_r619ac \ - plasmacloud_pa1200 \ - plasmacloud_pa2200 \ qxwlan_e2600ac-c1 \ qxwlan_e2600ac-c2 \ - teltonika_rutx \ - zte_mf286d + teltonika_rutx ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD)) @@ -119,39 +100,20 @@ endef # Place files in this directory as board-. # Add $(eval $(call generate-ipq-wifi-package,,)) -$(eval $(call generate-ipq-wifi-package,8dev_habanero-dvk,8devices Habanero DVK)) -$(eval $(call generate-ipq-wifi-package,aruba_ap-303,Aruba AP-303)) -$(eval $(call generate-ipq-wifi-package,asus_rt-ac42u,ASUS RT-AC42U)) -$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-1200,AVM FRITZRepeater 1200)) -$(eval $(call generate-ipq-wifi-package,buffalo_wtr-m2133hp,Buffalo WTR-M2133HP)) -$(eval $(call generate-ipq-wifi-package,cellc_rtl30vw, Cell C RTL30VW)) $(eval $(call generate-ipq-wifi-package,devolo_magic-2-wifi-next,devolo Magic 2 WiFi next)) -$(eval $(call generate-ipq-wifi-package,dlink_dap2610,D-Link DAP-2610)) $(eval $(call generate-ipq-wifi-package,edgecore_ecw5410,Edgecore ECW5410)) $(eval $(call generate-ipq-wifi-package,edgecore_oap100,Edgecore OAP100)) -$(eval $(call generate-ipq-wifi-package,engenius_eap2200,EnGenius EAP2200)) -$(eval $(call generate-ipq-wifi-package,engenius_emd1,EnGenius EMD1)) -$(eval $(call generate-ipq-wifi-package,engenius_emr3500,EnGenius EMR3500)) -$(eval $(call generate-ipq-wifi-package,ezviz_cs-w3-wd1200g-eup,EZVIZ CS-W3-WD1200G EUP)) $(eval $(call generate-ipq-wifi-package,glinet_gl-ap1300,GL.iNet GL-AP1300)) $(eval $(call generate-ipq-wifi-package,glinet_gl-b2200,GL.iNet GL-B2200)) $(eval $(call generate-ipq-wifi-package,glinet_gl-s1300,GL.iNet GL-S1300)) -$(eval $(call generate-ipq-wifi-package,google_wifi,Google WiFi)) $(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300)) -$(eval $(call generate-ipq-wifi-package,linksys_mr8300-v0,Linksys MR8300)) -$(eval $(call generate-ipq-wifi-package,luma_wrtq-329acn,Luma WRTQ-329ACN)) $(eval $(call generate-ipq-wifi-package,mikrotik_cap-ac,Mikrotik cAP ac)) $(eval $(call generate-ipq-wifi-package,mikrotik_hap-ac2,Mikrotik hAP ac2)) $(eval $(call generate-ipq-wifi-package,mikrotik_hap-ac3,Mikrotik hAP ac3)) $(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,nec_wg2600hp3,NEC Platforms WG2600HP3)) $(eval $(call generate-ipq-wifi-package,p2w_r619ac,P&W R619AC)) -$(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-c1,Qxwlan E2600AC C1)) $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c2,Qxwlan E2600AC C2)) $(eval $(call generate-ipq-wifi-package,teltonika_rutx,Teltonika RUTX)) -$(eval $(call generate-ipq-wifi-package,zte_mf286d,ZTE MF286D)) $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE)))) diff --git a/package/firmware/ipq-wifi/board-8dev_habanero-dvk.qca4019 b/package/firmware/ipq-wifi/board-8dev_habanero-dvk.qca4019 deleted file mode 100644 index 9048239cf9f59bbc4df70251b73adfe93382ae62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24324 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 diff --git a/package/firmware/ipq-wifi/board-aruba_ap-303.qca4019 b/package/firmware/ipq-wifi/board-aruba_ap-303.qca4019 deleted file mode 100644 index 4848115cfbe3a4a0ed6b17cac929731ecbd7968c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24316 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 NIrrxNmNc!u{{!hMI2Hf^ diff --git a/package/firmware/ipq-wifi/board-asus_rt-ac42u.qca4019 b/package/firmware/ipq-wifi/board-asus_rt-ac42u.qca4019 deleted file mode 100644 index cf6b9e0538993cbe216c1e14d3e9ca08a251c464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12168 zcmWG^cGPtY@h~*-)^+lC402(}&CO*1f*gGi$-rO@#7U*awuu=@I!U>iy2%-t1-h9j zwgzBcQhs7l3W#fDpi`Dul$n@UV(SqU-2vVicOo2-L3tG)qChtC^9Jfw^AD zBn)J()&d}rz`(%8E&yaOFo-ZP@ELk9)_8L z29OC3pzE6ev5Db75CG+%JgBNA=&E6SeuhQ`M+Qe176t(*gvo&12xB8?d-7e3Fa*fr zg4?UW0D(Y31!N^6LdZOO5q5TVR#sMKB*4J17vxhSfhbTNG8O~!kuj0Rz?Ja>0h}|$ z83lc7K*V)F^LHi+!7CPp-_33h{K>w`z8KS5ao5r`f*MKvr>Pkf-Sn zAUJwlQ=MVo+Sy%|Nl~6a$qln7RAxp6c-rk-2~q|WvjA%7?kbP+@w5hOIH9h^uy5n+ zUZ4%Wo|gO812trUH7o-fk`d)?p#d~*Qe{C@kc9zMgF34F2=FR_fPfNI=}`@+;enku z96|}Z&xV%hlJ3NE%T)C+8Sg`ri|XBS_2NaH_O2?N>DI1MB#|(4b@WWjc75AMGc&MSW`hFu6%7#v5+`Z{jO0{Qlz~W9Nl{T*Nl{5DjD-WO zO#*Y$C{4oUCQ&N%#+VK7Rr}zKuMh1F1S|9;1Ljx=|NW{P%KqCa@ z1O*-C90d*K3|*SP>-3ItUzKSnG5r#jSbw#!-gp=C;U!WP+Cq}Puj;>&iS3Qptqd2 zp0|&&obfwjL2Ef{J!>Cu+JL4ANZc&e)?U3@13w84HAsL_M1qoSLFe2x$XJy^fK;_$ zWuj#jinzm}O*-laVv@jUD2;{^ju0448aM(5MR-Jp5=sb+az;a7Gz3ONU^E0qLtr!n zMsNs-8;J|b3%MJ)3;GM08<`8*3vs{zLr~JBMVk&Ili;I@TWb+}C!lrlas89iIhGB5z?ik<~q&Z5(Lx;i>KS{f<}a)Xlv zbexu!h8oa)gOmky9@KqnZ0oUiq16Kp70GC230WpZ4 zAY{m(q$DGwga)Pn#W6*dlwu~UFxXfyGJMHrV3@)#$mn3gz@Wh)$Y8@@!;-)z$iO7Z z#1#Xi1q8s8jz}&UWe&Fx_`iWigo!ByI0FHkU1nn8m<|LBfdJ;u9Y8>dm`?<-a9yzF zBraNAO;u$eF=XZrGFJzgo%0C@iHJ!^$>^CdWyYKZOIEDeuw}>IgGW!EC0&An4eF+n*YHzPMeKOr+CGeJ9{s97M0sTo$!!RVpT#Q^}Ymm{M9 diff --git a/package/firmware/ipq-wifi/board-asus_rt-ac42u.qca9984 b/package/firmware/ipq-wifi/board-asus_rt-ac42u.qca9984 deleted file mode 100644 index ea123a3a6321af81cec293052ba828d8f3d7ebd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12168 zcmeHMYfKwg7QP0vkQ6q|VBXFJ8-oWI1~ahD1WX7fo49x&Kn%q+4_-;klvhK-LYzla zZ5ulpY#KsBQk)VuL1{}|RG}(uw~DH$YAYqt{@5RtR;_k_?B7V+Myvej;=MD*1UopG z=CMSbGrsqpbM86kp83Xxx%bpnR^(Th424=_zJ7Z}{T9&O-3<_R74SU(C8)I>>M!eS z@62oK?#yquboS+Uc9dxasjav5KnE`tW|N88N`v_Ln0aG5H#1=X=xT!EK4hK9)s*rg z;y80ZT}%AIb@QA+L0?m6rvz@v;qp^nc*C4uh~Qw zEu`d{a9wP*nesVk2;iAQDIGx33SF12!)S#Xy7Y$IWw&;*dkplQD;_(?vPQF3aL^FB z%RQ!md2zcE07nQxL@5L?0csJY060PjB1$2E5!H`GAi{Ty9bgmQUM0ZgxfRa6xBqm( z!1}#d-Ne`*2lFhc4Y9g6&%R9%jzUsonPP^W^zBRG_qxbqpsR7uI*Ihej93uD2 z8{#%zo_KAT?3M41H-7H!alU*abFa*F$<3ZIo>cWD?;3L&1`77eO>reN7mjcx{i?Ra z+Odnxr^=7W+wmQzCd`iV6B!nnd1|cRzM)6CJBhjJ-eu44mG8l-znvL!)i?@{t}{(c zb~sCqsrzu#H{<;_W>E2JqVdcHv#snfvfF<1TFr2QHQjK?q7v+o)rb|zP?+jw%U>23ND z(V0;D#q^(C+M}=wfAy=WcIT!yau47Qmxp_gXwgPQ53zHmcVoTjTSoP+oQD<%+6M! zPnJ@VnWa!D6^$U~S64n4)`^IeN+lo?^}iF2rlO zVcYQy)CQ~^kMR?zZ#(V&e}_e+6{qAcph+A+dVSCZ5&964wb2fpBWZHI2LXInG|3@_c&Zn@~K=_5YHy$;aWt z%lg?_$>wC39Lh;KBLiFJwqOioNQT)0isyZHsQ?|`0L^L!d{BsPx;#t{|Hs8EcD4%Dir7>MX3l9gU(oj#317!F~~Sb JTp|@g^*{Z@$>{(9 diff --git a/package/firmware/ipq-wifi/board-avm_fritzrepeater-1200.qca4019 b/package/firmware/ipq-wifi/board-avm_fritzrepeater-1200.qca4019 deleted file mode 100644 index d78a49d4dbf3fc22c40a83d052fc7c55542ff8e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24332 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 F{|7QKi|GIW diff --git a/package/firmware/ipq-wifi/board-buffalo_wtr-m2133hp.qca4019 b/package/firmware/ipq-wifi/board-buffalo_wtr-m2133hp.qca4019 deleted file mode 100644 index 8305ba0166a2c07054d0789f1abaf3119c7c31bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24332 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 S+N+$ubtLzGvG1Cu$NxVG<{kV1 diff --git a/package/firmware/ipq-wifi/board-buffalo_wtr-m2133hp.qca9984 b/package/firmware/ipq-wifi/board-buffalo_wtr-m2133hp.qca9984 deleted file mode 100644 index 656cb99cbb2b6de86639ae8dc8eee73c5c7cb490..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12172 zcmeHMYfuwc6ut={h*+{oL=CvSb$k#Zp@14*ks_5_udf5lX@?4@DwWdTYFAyIniscvQ<%#zn3`Yg@ zbGN;V(mE0m-#j)dm`52i+B=W;y}`$>^TD}u^8sz_fR|_likKteh9X35lX#|^o12S^ z3xz^~wN(JXdcLf^~g`f-1y zvLqud4NHyzG@8elbIi)n;GiIX*!%03pPrA7E`plXMi`&}`h@E0`nScG0w6xiiudwz z9mD74WeBad7cYJvv(08BYm?Qr!GN-3b!|i;Vh7I=nT`hpMUX@^5s5$}5Lxk&W0fcB z&YYd90N$8%JEhQ3I-CB0j<8S`n}yL(8nOiCqkK010Uz0nZf0-B63_%B1?8X|Hs=8c zS&yz~ugAjCa3lsDpM?6-^y>JWc)amhk?NG^GZRV}DB~#u@kM>vzSu@|Boa^+F5fGP z9~soQs=k!(5v?Ntr-%^@Cbd>kCEX`TGTbLL@vf9ueV@9$v`U* zuhhxq$}1^?4kSw?OAZ(yUkwMuykvHorI*lThhzYp?91umU0&JbbG*{<$yIIxsz792 zCfSWGEvssMOIy1o*EgwGR4*yk4;;O-<(gk5B5%2Kpq*aM zaoe`$)zz$$#{S*k#p(QU`jPts{EI7apU=GW)!mZzC{=(0DZJ2?-x{g(FQer*4@>Vv zYXg)>>A=t??JDJxQrdof->&xP^Zr$gVp%)?TxjLuq6Nb0q4ciR%}Y-%EV?pu;C7V8 z{}fW(a4%K2s(wkC_r7m?cD6<~EIUdstmxU%5!%2!<|U~##%Y7SYFMP zdF|;p#We*h82i04Zw!}oZ@v~#OFw+ZnB20wmRaPLJ=C|MDX;>OdWu?ZORk33vJQKT zHN%JQ32ua6WR@!oyz>E-A4omZ+f0%UcKy<_g*j*LWq0tJS>+$>BVQqs0g{2a%Yd8v z`~?fW5yqm$OMREwt;~onv0nH$ai1*H(4Z;LN(dM_D&U}@p&{@L4hjqi4h#$m6uNoX za+K4+W@w^NUEHXE>f$=j-33CZ?(>LkHg|U_Y~0;lhz7jcXEA3n;!oei*@SGPM{}Z) zc)Ev8z>e(tOE-Hb*S4jL=)2}F)YB0QAG z=3$Yuw!WSi)fvr)GDowHrn(QooUe?~Zr diff --git a/package/firmware/ipq-wifi/board-cellc_rtl30vw.qca4019 b/package/firmware/ipq-wifi/board-cellc_rtl30vw.qca4019 deleted file mode 100644 index 2fff2bf5fc7ce41c624ef14f5ed5d5f2df2015b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24316 zcmeHPTTl~O8a`mSsHk)J_&hB&GIg&!COSJ(mYbTN4k{}v0Tgug+CwoSH~@q_~r$+S+i@Q|5SLh)WnsWRQ8?2DHV(<=&0DuR&fhw$y-?ci8bW1%83GXlD{G?psT z;jml1ZO}DaB6u>^d%01g$d^P7WmoX`_@q1>s5+Ze zE-VVbp5JNwCik4ECb0C|k$U}}3z7AlqtC8unlg^?G8u_a2di4Ls>1g9q~E@!?3TCv zsy?9n;aFW?)Ttm1qj+_pL}hD6z|CXh<}KS02Fuq!ATY@Mi9g#CpRu!I_Ofc>1rY!) zF0QVwE=0XygPWV1`?Porbu<*qU!2YpFhfH4@F$cP9L(nh^LPa`PcVIjVl^ApSy2Q! zI_m27?!_`BVDn~ocQTYj7|Q4If?$W~@t^k}KCqxh+6ZHymxn8j_FvOb7hubuoMq)| z%_zJcfzxYFwT}{oh$NVnunQ6go;5(O=RLHp&*UF>llx@k3>(OeA|LL$c5; zQ5KehrXX@ujEY6#mtrIlO%x?!(P%UxL1&UM4A@p@a*|4CvZB;^$HyK>7%1Z{0|`I_ zL;+YDn)Wsg$wsq9*;p(Z`!*IyLX$*E7E7w$>!{*>lF_Kq{IQBqa!XpP&%gDE7PsO69G~nrKJD_{Pn4@8GsnTM<9<1 z5^s2r&too9XqUMOU&}m%e}jc+O~spr0FP!j?ht(c&Fi1RPe1)^Y6+bvl&oC@e!1(# zbfuNS9S8tiTxp))K)C_Myy6E?mSV#S;fHJg_>T*<;bEa6pR$lUcjR6jxjTpD?JYc5 zTvo2@xYB*Ce{g8@?)ZbpfBNCaSB}47v5)82mFub*4NUu>7`@fJ6KdK6#bmAKT~O2h zCnjz+?|?cE;({J)AKg`R8mz5E?b$QVDL8brz3cidd}8u13+ZbMmD$xWKQIvv$`Nre zCP@E~j$kMz!mxA@_aP3EqEe9*i(9t)>)EJ|Xg*>e1f^$)Gmsp5yf_}&MOX9?ulaMB zzvs;DYPrR6lyjf(QO>qr1BH|L(nk%)m>1+vY3UlGo|9dRAu+ye%KVY6^J96%H=FE2;R z#*HhnIdr~(+MxwRiHF54*^6d$IiIn?L ztdMxn{rHu|?S++U>-WXdHg(>p#xX;Tjx*J2tiZDkVqM_mgrQ4&yeLBwI(ZKt)M-^k z5)ScqV%NIE1z@Vv*oZ3(DZ0q1t41w;z#!8_;p2vWm8vL55;6Hl!)0w{kxarR91QyK za4^+lJcA!I9OYQsKlB>t_gOI0mTmx!T5r&eutxULTu0yyjVI;-_vJ zJMjixp-PHR>UveR^4$VIQ-liD0Wu{+50R3=*oIeV(~Cl;28@^RYTZ87F8n*4UR5WT z3j!t|7_OR93L;Xv-Xnk!x{Y7qrP^I`Hgs*pm0FoR0RMxbPgN;Tl|&i8!v}PYs{Il+ z;n3G33awGObkZ4-?UAPZVWKgvJTHM^~-Nm4}cKgfOK`#s<7l zE0!~-zBZo36;MNr5Ahoi%M=Ov=Kkb0L%k|Z?oUR5Yj8xI@KT>j$({p9p+upy00L{_ z)L39?lzH7EFmb-=x4UB^IsWc9Th#{>#KD1EJ!`u%T7<{hC0-fd4<5O=Q_DZ*TlDA7 z21RmY7|YM?{?(?6ESWee!0%FjL3_+eu4-G(^E>LxDb1mk{)b-lDDx7+!+ZgF(sxoV zPZLE320j=%-j#A%SWVyebXeJ$+{{<|9eUPRQ!I-Q<@k9$x~V=Um!mvyhORf~OiV3n z|CZek@046lJjJbG9e8X|AIwXS2tjD$19jEA#h^qk1?`u4OR6dweYK%hi+fel%yx|IUHus*JVd`XGMrv?2GOD zzl>Ay4$xEX4cA=DxhSajJF;$19BSbd0&4()rTzyF4@Z>HRPF57=G;-9?9mr9nP@Dq1yTBzTMse;}`djn=&;LIU C>x%IJ diff --git a/package/firmware/ipq-wifi/board-dlink_dap2610.qca4019 b/package/firmware/ipq-wifi/board-dlink_dap2610.qca4019 deleted file mode 100644 index 08ed731a4cf020b1f79e12649a9cf89153ec0b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24316 zcmeHPTToL;8g7uAipojCEeVH^gj^Vi5Lk$S0s)x-5gFDCM8`!$B>^OYaxqRxxu}Q{ z8BvCd5wuWI@T{wpt23+2u8!+$Y0BN&s(JHe-{wK8tgS6y*4gfJI3bZlh={}G{GtE; z`~LTLI_K6O`64qTCS#K(E;cVly)mOO3shBA0VtKLkp>_YhSGzzYj>8HMweFUV|JD6 zjWPPNwXtNXw0dVv8A`?_M%V4E(eK=MU~O5YeqTj&*-m4OGBGaJ1GX2yz67hK|MKtv zOOCJ-wxE8a`k^WTV3}_KGys5F7!PAV_;Dt3c|7V0fcW_M|Ga(;QaL{0&A-p2(P0V4 zS*xk@1i<6TyS3V>k-#rd-Ys*TUS%r^fU`j#T9A*lJrSol_4uwEBT{`WBfWj}%pVBG zKNDk67Kde@<9yr)Zj6g&W*^uvjRJo>z{o9GzI^3Mw;DL9EOe6hYh)SQhS9Pa7e^0X z4&H2SHRyA6X)kZ~wltRM@^aQZywQ82wMPF%PU6EMXw~WqbAIy%%I&*yDR_0`=CRfa z{RUn7%c0)mjpaIRPU^$!sG2S(M+F<4YORNPDO3Y#6nHgo^KfI4E;%O}Hf?U)rOSfV zuJ*RVrg$@$FYSMKBfim!4F zv0H=EhA-B(B$Y*O=H@-PvA;X}gsdi{qbp0bimB)Cd3@1$ID5A+hn@Urpt?D?TCzDP>)KU)m!|cz zdS3bcn{|DwkAxf9CG!g<##Ca}(o2?jdwctgi|=52Ly6|;(E=GqEEd7PNMS^TNEjg$Zt?O186CB_FzIppL5L#3o$_(@O_4M-kA6eA{IBQS!GJD!M z4DUx^_r@b_!ziGUWDX)03UDgp<5&_g-QP?tXQ*I!D4v1m;BojG+<5TNk>-ua`9Y6t~MP{$27PS zS1OdxlvpyJtVq_z;<1=&!W+wFn?DXFh?L0WQJ+Q0WwL8CHziWKvq9&k7>b0Hff<`u zQ4eBqB$O-8O|DIPY!=sr$+5{fo5is=r|f}^vtO|>9?nznw3&G3t4u5p&r{@Sd&^Zd!AFxt{aIKzafIW)|jwHXz!^<8$M&%nyUyt5mOafPue1k~aYm2Sga; zQ9^^KrtBtyfEO~O?c7m&b=2;hwqR4y z_L8!4bNjij3;hFw!?#B6J^0HHKR$QA07$6q(#hKW0vr#6!sAh=P-<(9)b1CA;gn2r z%l!gC?t^MsE%Z((xd*CMx6r$w5t*+TDtx(}ku7C<^_0^=F;tN>1~8*|Dds^Ws(F?&#lK*#bLXW@3kjN08l4 zp&?9CX~cVV7|B7QH07(krt*W7K^V@;R%T=QtVCrZwvMIiL7&Ob_4IX)j_1oGj=P-u zq$xS~)-OFgAmP5Don(Lq_CrKU00{J@kb$?8B%nR5@h2WfQpP|iIZ z<$K4G0GJ8q9&z8_<=i75(HOYHK+d`EAHcb{_3DyyZ>xa}=i|D=xd&`E+i8H;7=VJm zzrQC)Nc+^2K;IWL_4e}e-oE)zpTLoUlE7r|6nL(HGgCZ;xz;H*X)1 z&=#Q=-4CAIJzhANQ=L4bj(o(rSNf{Bg((gcLcC&mxx70uT`+?o3*P29ogNy&# z(V$C^9&9`+ro z)MP4R!ouzi?(a-LDz9N}esn|Mk=7)t4B7FxueL;;7|9Ru|MQi~y&4TJ3}Bmk^N+!JuXXEN)*X!6%g(zxSlyG-EUMw`xOT=^nw28r^Eo|Vm+fAk8?6lF zo^IRvRf0jdjg@};M(u_C)3W-I-HUeNFcW7GSO5sj^cOgM?ZpWm{Vhg~szH~klto6u zXHhZy^$me2B0?Ck#e2^D0tdsncXHsEti_GMbO|3HyWZkP9dYd$&iyR%_2(wje!{D{ zzWfIvm!9IjV++Y-8(+YftC@ntXdSHp9868MZKH zIQMp7Q0Awg@6R)8y-RmL1-0Jg8001^RFjUN`vnZ=o&pgeN5g4vGo1U`zG}X||NjGr C`f|_! diff --git a/package/firmware/ipq-wifi/board-engenius_eap2200.qca4019 b/package/firmware/ipq-wifi/board-engenius_eap2200.qca4019 deleted file mode 100644 index 337d896d1edd06375a76b19da6f0b3e0bf452fc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24324 zcmeHPdr(tX8b3S~b+vLsK!kV=A%uj60D)@M$V;RkDOg(3phciQNNSLW0WoyJjt`0v zEl|oUiqt_~O%WOE6MWRx&M31p`_In)(eCV{JG0K(9qmp#v%9$8$>oLwhy;Z;!2ObQ z&UYT)Ip6u+M{aU{Id5)=366O?AuKd0I5s6FH4bSs8U&ITf@6dtA!KU{*JtHqi?cPV z;CFLWdBLh(>qAYs?EP5{759?;jR!04-fzG$rC3zdp`R4 zFQ=mD-~t`Ipxhd5cbXarJp+Nd;oRs}qw`DAVQvhHiE~Bn!!No8_L0^{(x?~rc%&21 z7MaK8BI;#T4H-7evLuS_=H@nU-aHozLFgu)sh#2p?JR>A%4A@0qOv$$k+{xea6d2z^V`8Yk&aO+i__MzYg0_GV{(L;P`Jfp=y@*Y<`r$GL?bS#6bB+BMmNw^k(HIGtO% zQ6=8)8TnO5$tNktC50>Az1CIS@WzSYV$PnvlQ{#bP&SSJ(eRyQOfzM(m$Hef)@O`|@5r zzlXeTcpiZ!d1Y1IIN;Vivv9d2$>I3;@OX}>jW;ubB#0O?h6p3Wh&=6~BOg}Pw|0Y4 z23k$Mxdi6e$`f~s+uMc0cA>OaYBb7+<%U^dv8v%+TU+hzT@UZZ#(EaXlCU1I2p`f% z;-hdU-3f0pmW-9eK8PhYk((r&6wzcfkw8jGsYLofN~|TFY!aYqfMW5ye_S3rfwdZtcBm8JoUqPdXYq#zI=AY>YX42$`u* z5`m{CBg8MX^@c5B^^@(=YoQS0`Sj4 zHE?g(KZn$&>#~}vexnhAJiZr|BNT=Nz|Ro?8;B27C>{iyo@Rx?Dh7vRUaT2bYN32= zDUY|KhL7Z8C-mcfglgRgr|1ZTgbN5HM{?K9`2=$IbY8RrQg?SJd+!WWHC3jcUl@UB zJ&W1SuDf6b0#=uuT^D=;at?%c;|j>jlqt5s&9$ZP8(V3hAb|gC25RMwTC1a0=M)d=+tOzV9Al=z9%2(5k|W_L z*eGr&j!=*ai9!*FB8DOeIVqRO6%kYR{d&ycb`^L@y$F&OFO4UXS*xV0h)7m?BYurF zra$NCbf!G;OqO>aW*6_Cy~4=}NcRU%n^@qUEr3cU@VDJ4bb!V5eBQls+IaVuC=W*B z>Ehj!#K;&3QT%te`7ZNZ%?x;iE@&2e)yia>DOM_R9 zO@_mIje6t2MPsX>5{#3L*YyqRqJ#vY@4ywq$0nCnVwY~+6^al{^{nxfL95RMmkfrZ z`h1dnd!aHK(}RVK+q zgO`ns`T})I0v{XPz9RyZE)6so3iTPfxWOw>S*Y8g-UM!*11zIuB-Az=iq#tumYWRj z!5k(d4*00gxMa@(WKd#IvVp*CI5licjVYe92-NrHUWlp1STTr#3 zRIKqzz5n^96XKHPd)&8n^z3bkujU_O@2T(1Jrh+aILOYr(4eY_)CTSKNNQ`}-?;9G ze*rtAu_LP?=7e7%E2Fke)hIvaU+A&pWYyO9BhbIq@{@e!-Nj*^eEA zrrj@`vN6VipDAJx7#D#twEL%{n%PVGnCf<;+?Z?GiFo&pxz`Ni)l}^Q1Q@@)w;Km7BtsBdLi?@9a9vrAJP2z~c{E!_Rkj z4MT3_i@4UomFwtu%q9OYFWwb+@!RU#?@b3Ue!8)=#kZ%+e@)Ik9{ZQ!-Q!)ds6WHt z?X-kK0loTW`X7=I3*JUcA`#OSc(*NTCn>zC7ToLU3dc$vf_IOR#R&8Hcz-bqbf>Ta zA0m9Pf`ahIWflhtA0&LRND_Y>SsbXzS2)(8ox9%Hvu13IYj0VO5yTtbktAO@TF1NJ v@%cd#T#mQD^Y$i9m$)q*w{sMEQQkeiNaS*Soyz5Si$LpmDrYyldH4SZO~~I9 diff --git a/package/firmware/ipq-wifi/board-engenius_eap2200.qca9888 b/package/firmware/ipq-wifi/board-engenius_eap2200.qca9888 deleted file mode 100644 index 2e938f4785c5cf4dd088028bfe37c5985c3a9a5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12172 zcmeHNZBSEJ8a_c>z=f52312ZDLqu{(A%x(rS3U$Ht|_@-uz?!t2VZKqg^-F+Fn;cA zYvNpztcYJF7E@(xi&>__?AY$^xE-g{c1E54=#S3qpZ)1Cf4Gj*KTGzUTrUQa)MSgh zc6*M(jbwL8{0;_B#xb3hq4X;hTcv>0sxr+BvoJ`Y2^xBEJb%Wz@Y%BsHk}S z=n<%v{sIJp!CE1$kS_IzyZ-m3ExnsV#PWH8`mNiu#6RG#50RFyJxbYCaLB z1hpU~C1vHxmC4D;5{ZNt0JxPvk9@RMlH#N^aOqMSFiH3;ycaAlrlxjrb!p>x>RDM? z04D)CIXM6)0qN=K0H-*SmKJBjpFlIbXP)6dAMhwbLf)c7JamaHy%3h-2`aV`84wu| z8Az0Y>mCV6l}M73Q_%+r@%S?xJ)HNOZ@vvR6oUE5)w#AYRJ1JA%ilF zjLC$VL>|;by+(gmPc*_tO(RnW>j(qXL7hf-S4ULBN=+rBg<67!3w`^Zjc1X#FsAD2 zg;9xO#QMZTNfyj{m_@9CYcy+^t#IqZt%MO8HAbcaRy?dAs$i9-is9EIJP&onQ~$#A zXnXg^>X=>DXD=2}r02!w0_<7KFx`@;cKF!|gOzU0E8%XiPD>x%NR|6OcDPuFVJBVp zJpxcsD!~1b9mfvTCdYO5f@KsrsJWZ$m}P)AQd-XM@UW*0W?CO|ps<6VJ#DekO_YxN zi1i>>bKWaR;w*!-iTbtgrsE8I)bQFfQw^U zqeUBXP*cUvTc$;J@pWYp9Wg2*OEHL9q!w9PL`RH@$WjbqM77Ak4=`}y{ex%AhS%;V zS|%s9jg(mPThpt5cm8!J)tA5LSB;k^cf0hCwVl~JKYo93TsI86$(EZJjH8-^^45&a z*CyW_(+tS>W*R^9+dQwHQtX$Sulm_@#?yti+&vQ>!*JO_xjCb9_VQ7#apqc{lmmnMsSg_S8D7)G|FW=-Omc?#*HD`1iO<2ju&Rrmtp4ea-H&W2?=RQ$3!l z<0?C8{_^6WlNl*^BinfHvc*|*1hw07=VtR*nPZKWY=6(+IbM09=q*4Aguh_C%KmBC%gR*zv;mj`ImHpo8V=5bI;#_-1solAat2dvX*!3W`?|e9I3| zE1EkA5$1#KV|pNyJ1>?gfbvw!>M9}gZph%$mGA(vg1tIH+Uk=u3Ki5=u7-6o=z zOceljcAfQqawj|&Ui}j*Bl}1buxx!SJ27Iw|62y0JbCi?@#BAnVaZhE`g=9sY0#XhY%uGVv#O{8=4;I>(sIyLNZ_& zpbY60PC`Rxpp4!roPvhVKN+1s7$ z5)(H>#QupYV(zPDG$g)7WA5FUhIr15o7?staG$?29r)AjFJsB_q9VDll;N@x{SSqp z&rv9Ho+k_TA6tgs^Wk#%EsyVWp`V!Yyp)hbxkk=NLBo6l!9YgCFb!bi{6?Z0R%@!6 yjZxmO<#HTXsl<6sXwKm|*2V|^dyD^)l1i~pc+SU&{55O8jIYQZB3r)vntuZV+o7WX diff --git a/package/firmware/ipq-wifi/board-engenius_emd1.qca4019 b/package/firmware/ipq-wifi/board-engenius_emd1.qca4019 deleted file mode 100644 index 3a2d77597df2899722962245a3832e45b9f3bfa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24316 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 M-<$he(lmSj12G&o9smFU diff --git a/package/firmware/ipq-wifi/board-google_wifi.qca4019 b/package/firmware/ipq-wifi/board-google_wifi.qca4019 deleted file mode 100644 index 1c10731f0d4945c9751ed797a679619ac621b6ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48596 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 RT3s&UvhIO<@8A1^{|8J-1^oa3 diff --git a/package/firmware/ipq-wifi/board-linksys_mr8300-v0.qca9888 b/package/firmware/ipq-wifi/board-linksys_mr8300-v0.qca9888 deleted file mode 100644 index 90b6bac08ca6b2f05d4a6ba60b7c09422bbad2eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48644 zcmeHQ>r)e17QaDU(UFl30Tr=DL`Y%?Az{ZBqC8|ZOIk!HxP3(IE~pN-;CYP%gFQ&SJTiWsO#ewY9Y$rfR?JU*HGVvgXT@y`8opq!URbV1}F% zy8GPI=iJBd-VS~H{%Ce>%}vcU8PYYz)V!U!yYo?PZ7srbEREYEl!v#9Z;8eXR4yU{Ad-I)aq1CyB-%sjfTH*wUC<2Y0EgL|j$~ z>2$hRFJB^~Y$l8U@K0Ai&-&eonk|ti!WN@z*A}B93IB1Amn;&Zbh6iQYz`sHljSyf>v-zb-Lx4Nk}wz5aQ8JO*pLjWe!Z zx+p9>{D0WC2;aQo_%c2|GBWH<{Gmgodw5%1Ty!*_XCU_tgAMJ2IKzfB?StIL<()Ap zT8&zzlqY3myipSIsi3iW!hs+OBA3i1(#dq9;rNL&f3&q<>Jus5+$4dMKkM|ojJ`SQ z#fpnbN=ntzXHp`Lj8n(aQDhXcg3KfH)OpYHhyt=eT|noMIfQ}Kl3KO)nU=^TGu4^2 zhSU%gDO94{K2e{kDpCk_&?`Kvnh6Jug0DZ`d+}9H_$pn(loMf-=O^2zpD$`O8T}%f zSVgWg5RsOTJ7C5R|~H@ zQ5~K6-qYBfsg3RG9l1X?Ik#}vrpuolVlJASs9h_R);^}oV4;dvsMrCf)m%dr$kXlL zS#6Bfu$#*H84F60ry%xw<`Nem-)OzfTs61g03~~eX*1VTM!AOVvvx4&3??ei86f8Z z`k3?PI%JHd>c|y(9j^; ziBA?$8eD>nX)zQ~n}%+)Uoh32?fKx)pV%5^hgr)9DCKCVA6Mxp&Mn=3%i4xZD5SC; z^x19J8s>n3dVYJz#xji2tZ@b?<%;RLY07z+u1tZ$O9D{x0?ZUMpfm*zF9|@&3ou{? z1m1$c)vpd;Olw+wkl5AJ^_ymuWo7YF{qL{*u2o*Ma^Hsq*L(Kb@~o@NV|IV{RpTXX z6Im(Ub?2(FMSVEFIC9gio+EAQ`uP1(#vl6XI(~aD;h@ZPvyZuKJfBpzd|y|Gp(*Wf zyeTqs`1(mUvoWb6rl{*i>4of*@s-k#FZ7t(v(K%u$jtp+jkb+-iTh*eM}7NjsrB&( zh#gOcTkM7HX{VN%dU~rmvQDQoNKHR>H@4EvYd?uGUcPQ_-FyQ3?R<2nur1BH$|5cO zvakG7=9%PA3De2;U8mO_h}{vn<=U53Y>st9T}<&`@3wrM_BnYhs=|KbV5k06N}aTb zwe4$>?_FN7Y}5I!k}s&^^6KcKzYTt7*PJ42q@O(Ouk6@zR&i8Xe5IfIyHV5VjzE;jb1&EMD@#(#Q{&MG?|ySxoGT zxK+X|jl2E#B)&FlxV542xHe(k+O>&m_n-)FWi&yqp>hmGC1sX| z=CiGx-Ms_D_x}Fm$rGV`U(1<^-*WA8VvTgWb~~|Cx>384$d*P3f_7J2?7REObwBY0 z!!Jc##$rJNR>n*)fY{JN;Pva*uU@_SuZy^~->2u*I4013Zq*32B)!+dj*KCMkIiiF z$e8<4c+#CLJpE2iOaL2Tpq!&|5Ng*Ww09B#$M8~FcvuxG=^l72!SuJQSZ-nwJnmtc ziA~67wvKcO{&MXddFt($lDt0YeQx~99lut`ug=j$rjos7RTj4Ma(7Sft%1Sek$d+a zK7Kmp{|U4KFR~?KNpcbAx?4KFk(Fanx`^}M)@y`ccfNDxjGXJBw6s-N33aZ4(s`}I zDyVb)lh(EhE1>>^=rzJSx?Vx_|AhY?<$oD-)>}}JPYC$3W?Z;u|DpCPH~NSE^592r zxs{^Mbe}3chfcC_84*v$tK(@I${)`sXp&abbUw-$&mi=q zUahAyJj}0CI4o3ZuHAZG7w-erh*)hbK}xr2w-JTXkF*~VTcoAexsN#i+4{XV+xZ5P zdw=jaaPPVP!q305xg&7zITWzCaq)qB&%@%nhc#eVG`#76k~d^r?X!=PYiXbZ0)PM@ z5GVwId;ji80{5PunT-k)G_f*CNFN36{RBKg&C~bgISO#^-M=+}dk@@u_c4Lc?9UCL z1TpGj3!o&%L~H?+#F&UJvyYOvOt6GD0>Hfo?tN%q0nqwTMgX|?2#I;|0`)$^!@9lj zNXEaTxD0`Mzc^rJgz`9sw)=+waPR%YYp%S3d#_T$-xUNe26J^CKsmvO0C4YTmzxjV zd;jjK-MoQ&@A6j_NzOm30Pelp82QB|eOWX1#7p=PiL6Dxt%@-->Tp zX8PXyLzR{A-g}HAaPQy#9(>^5i{}TkzkUiOh*1|?03|UdU;zXG0YG4G5CHD|yWw$Y8oc#{m`{3oB!~YjZ zObE`a25L1I2mtpUxc5#<_vD&ZFloTO2kw0^jmLo0#g{c>SB||m9k}+y*lT^3N5t3mtLO_DEZP(@Bst>0YJcC1b}<*FJhDa zz`f@u?xVu|U9152egYHV-aCg0kH?JmlUHEiG`6dELK23MfDn%a2pmL+5(2UTMnDevh@J#yVBXN( zZ};@u@7vFGl9}m;>`qA*CFd!lqcTN`?Bv{3pw(&t6kQ~d1F!?8(qlE-OUg?lO0{ay zfpWD@q%PYYWvP``l~k7z)#$j0+LCH@$>&G6W5={5qJrGK-J%%Dw&av7t=0vO!Gq)R zB02wbaRF;iFkRql@&IrD zaUqFHYgo3dKHSCwE>GX@)lPZ>KSO!{*!=ZP(}#TEY={>nM2wU^QzqGrc-#Sx=gjhCH zVjaP&!O_-MjXGVG^lG%HrJ+ofnZE7OP|umxYW42)xJScKt5N5s|N1SIJLAGI@Oo(U zRBMHLmrDL>xaV|3xe7~{J-S77Q>CX%p~1P`EclnG3`uvwSTd3c&~BW8D0&u+Cb)n!p3!4A&WVofFk@4?Vf6YfL-HPiH1P9;j;0sM@l}FZJdPb(gaB zS9P57`=hnJktc$5%;M#R5*;mtfV=0~^&2)JOyA7`oWLOJ6Mv>8K4WKuva%}S1rY!) zF0QVwE=0a&jk~+M$CP*uw$~RcpPkGJXN80a;9n>|I9R|B=JWI2yuj2Iiq&XzWl0fe zZ?CP*%fr&7VEuXz57L!X7%JfNgJ6Z_`R}*y-uXg}Y$F;2y**vs-2Q9n>H=)plcOwM zt{Z{ZBXD@#iMA0U5uP|x!Y2epQ8s&VH13qJ*)tj(-XdJC4gZd!;r~*}p70(q&2AUzxz~rbLQKAx5 zB9=UtAPH!KI01`7qYx=N9fYahwmKb?Og0@Atxz~21!H{#fcbs5@zQXS0waHo)c?Vch)pAJB5Cv%zU%h)@;3B7TUHFu1V=R z*mL%2lxURZL4aNw^8jPjyed($LV&K&2+#=72+#=72+#l>248+9`O8ZoKX{rqO zLVyg&+~fcOe|;=$0w5X)5Xhr~#2Y^3^H50!+ZFD@mkLke-(Vt2OY(6;fM=6CZx9}T z_3|h1z)#bxD&_Dfw?`UVC^Zjar2_^0oGc;WbgS^Id7UAZos z-oUaCiZNQKolwgjD5hwkc0n!spO~bD+5vSO#Ca`NKDx_h8LX^8?b$QV%HMyet@G*) ze0<_B^XV%Km6_SF-mwra$`x}l7D#=UieM-v#;{Zn`z{udp)#=yi(Rz)>lv?(Xnqnu z1ZAX2(vU1hoFop}!BBM*ueoDT-*Z&CTyAk3<=w~I#k>DcrHczB-PgBUSm3^W5S3y8 zd_75Y;3cJncMpJ@8`)x=3w|?~cMtgoNmN=W?;d*j&e{_Ii_N6m^(>it z+}@T|xt&W-+Mea%gech)HrJ)rK+eo3Ku_tWUuLw~0r{lE9M=NZau#yzQ9!X+oT$1 zp3S)@^pB+7hhl}q!|sPKX5C&`sUQ0Am^^E)#4%H}fjik^uD~-*5<}p`xT#Zrq$o`q zI&lXdFz7W!QZDhoVpqDt!og&RxdB(17rg+ zq>%Cm1Cuc<3`};LPvM76Ifm_%z2>ucrD=~|gnwh`)Kn`|r4ne+p|7M2t{TIH0Cqc% z>kPS?xXJ704!qt_sFC3lh91pP<<4+_i-!u$UNR(8HxZJ_+=^G|Q;R|-`^^{dYQrAQ z4*Xk#QB$i_hI1zFnJ!yG3L-+f+8qu(beX@z59oI&+0e8FSL+o@4*myIuSTm(mPVSt z#rq8nngS`CFzD?TZUK{><|e#YpP&qwG@6_7GQCV000S}Vj}>J~h30X*+fc2^R)&xs zgfOHF=6bwPFHy24zcL@kRZv6B_wj2GOSu$%b$8;5sZNuk3?MzgIXEItc&Sf^WX}nt zQKC_r2Z5EaH0GHa-MnfM7(d(i+nv!OZh*)2mdbtclHkCNUPn9AnuSN$rQT`Z4IDhb zT`xGix#-Uw^{OP%7GHn&yO$d)G8B?Xj{k+e{I=-hJk6%8r?)CE%9}#90sEhIt8?PR zwrmFAQSb3eWr|o77Xyu$r;w@sPSBsYy`jzyC>ZO|c>_le9ju0TJ*LLVyHAfPfk#%2OI3f<;9FECN*|sZkz=hoK90d{Bsp zKrI*|Xc?48Q$)ta2gG7+?ToVf$NsUif3%%_bZ6FG+tKc{GrNm>?hSz?B$`N=2Do21 z=X~e8=R4;+znmoZ-t*(Wofsb)zef-eo)(&r5ucd^q*5t>QWA#c0BnJ&NLI0}u%w7x zBo&9gQz9-66(86Zj@OEg7M35ts@!mPWnsCv@W`=ki90uO!$Y@3Cre4tmj?Txg$YVX zB;Zg-iORzI4C#Sc0RU^A-Jk*h6@WJ*am{qbV$rd#0Emo?{PEc{5}&#X{QQ@5vAW~{ zJ9tgGXYALa9SOXE0*}qqW?Ji={d{J3Bc!Ip_%hg zU~rai+GJaKU9yz3-y>mspsX|b471#;pmQ*{Gx`jz!o9Gsu}~IW6tsIo%H5VDwL8S@ zT#xNv^w)fpafVZ|;ho!qRh>JVLaTg>N6(g2Z$HS&LZa`$c1aRWuKV_@ec}#5Bwimg8!pa}r%hM7f9vWM^ll)9HS2 zgr9zT_WkrUb_T>_1qNts|NZ_?-|5@1h8tX*$&QZygY8`58#d?v{Q1)-+O~@rF5Y$N z5Ii4&T4`PL5SB0_M_)pi3& z$q$;_I_4{YKO=XoQYa{eLwQ6&yisqCx6loBL%h%gG=Y=wC;>@DQ#q-^I5Z9spj?#8 z;XdLbThXnYt-^3L9O0p}L8z{nR%c`4^Jk+X)OqiZC6KtI?oZtjAJm8ABTPgSpC%${ zXc{L?7>PzcjYMM57*32(`zGk;_)uEt7d^+8ZRrQ9A^jA%K+*eYF{v7TR2EcS4(FuA z94uJ^1WE)-W)L8jh8bWC%qtQl0|bZ)fdGL3fdGL3fdGNP3PxZZcOBwKd5ilNl0n(R z-GanYR_g?07PVd(xv!t=F8!@5=Z~>QCpH^n1;2&F)U8C|`8=_*gT-oY$XYNzilyz$ z_h6Stgn1>3(Z>M5vRctI`q;SSgtFOec&D3&+NTDC3khKc!T9V{gW=7@XP25?E=s+i z;s65Nzhl({5CMW9KgSQUff$eqMTZG1TPP8LPWSbt8%aB~&$rU)d2I~9=aImVM*(Pe zMo4i{05Df0fDibN1*;H1_8_m#gQc4rzUinJ385}G1YQigP|4&2a0deJE|VQse+1<+ z6x}?>pe)2D%!XgCJ)>WlD}#dq8NX!G?%Zkj>a@Fa!d-i^^9l}>C|cS(x_WxA4GoWu zjeqvwtH;(K(A&qe?#y+`v)+88uts@+ zSY^gFj@m>0J@uXk&2yJ$z31>;lxEr+oByem&yDSd^{%d|sjeOu7egwHVH;~|D{>o` zn6xEJ#12uiBy8KXK^g$q4ZomeUSx3f4Nhl7)|Z9*V=ArK%CSaAr<@#RhN?f>(Szkd78H-ChvXgT;8-~PqF{{H7D zPyPmN=J@t}epI-YuRlHg?;mW>!8gUX4-4aPu!QY1V0X;v_>RNEHTFjQ20R_^5ZFXB zwZI6zz4q$z?%YM@3REq*ccRa<*XlTATC^5D$JVYs*B;XsNVg9ZW@9(G#~&MBVa(M` zeO~l!Uyo?oRh9BAQP|hFG)h&iJYU4q+*DnVmx+>jftnF@uR<;n@qDrW5xaXYmxA`zwY*qYy}TIEtv0*{6{j86s!1H73;o+Zzkx~=X~ z$RxW(ThzA|7bN9^Bpw$!w8;MN>7=$x*;qv(`W3It3a&6w&#JS0CXq2U9J`v(7S`Y+8yPNErJmpT z8=s@+da{}$j?*Nr>0k68ZjGxCl&;TL4Dapco%gGyNE-U{ySS%O8Kr3KTG@rT_gUqX zz4r&iZL#$MhrRM^2lrkIZSbyqvv6Rz>f^X(X6?EXg);qA#4(S3Z|u0$U(~v_j`prc z?&r7U0~yNT6P{A_b=j4eMtUV>e`9CH>8MICk&EEQ;QkMJ@B2wT^83`{?xb@x8B)+c zSfS#dqL;aeM!UmNSUlibQUPA%>jIC3erF{qkac(qg9 zuw52%$UUv^+R=+KCj-i<`4{^OJL8-DD=7Kxed3G!(*YIkd1ssVy%!~+=ThQE1}eJJ z&oZmL4zAdRLrk1NU>P8=(5G*}XJE~V2|R`y3V3e#(>DSG8SoE2d4m?Gl&Gzc&kD;U6ud&$}Cg3Mb1Og@zm`AsNZq&?DvWKnP8HKUZs;}hRy$dGs2EZ@1eCE-)~HZ*S{gN$dLiKO*im(f|Me diff --git a/package/firmware/ipq-wifi/board-nec_wg2600hp3.qca9984 b/package/firmware/ipq-wifi/board-nec_wg2600hp3.qca9984 deleted file mode 100644 index f95ccd251e785d4db96b9953b655801e95b02431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24332 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 Bvkw3O diff --git a/package/firmware/ipq-wifi/board-plasmacloud_pa1200.qca4019 b/package/firmware/ipq-wifi/board-plasmacloud_pa1200.qca4019 deleted file mode 100644 index 27bfcfecc65dfa5844c138930c7103e0f24d2803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24324 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 diff --git a/package/firmware/ipq-wifi/board-zte_mf286d.qca4019 b/package/firmware/ipq-wifi/board-zte_mf286d.qca4019 deleted file mode 100644 index 348cf954d75d93f5dcf00afa65603d6c0b4c7783..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24308 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 Date: Fri, 13 May 2022 21:44:30 +0200 Subject: [PATCH 11/29] uboot-fritz4040: Add support for Toshiba NAND MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From Andreas Böhler: "Some revisions of the FRITZ!7530 use a Toshiba NAND with 8 bit ECC in contrast to the Macronix NAND with 4 bit ECC.". Uboot needs to know this in order to have a chance to load from the NAND. Signed-off-by: Christian Lamparter --- package/boot/uboot-fritz4040/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/boot/uboot-fritz4040/Makefile b/package/boot/uboot-fritz4040/Makefile index d7cde938ce..3aa08081bf 100644 --- a/package/boot/uboot-fritz4040/Makefile +++ b/package/boot/uboot-fritz4040/Makefile @@ -10,9 +10,9 @@ include $(INCLUDE_DIR)/kernel.mk PKG_SOURCE_URL:=https://github.com/chunkeey/FritzBox-4040-UBOOT PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=f92be9d783b1210c020d5d6129e210a94bb7e290 -PKG_SOURCE_DATE:=2019-10-19 -PKG_MIRROR_HASH:=e40a7f624b1758b276f81c765ef1da568c595b8bd54568b9cceca7d170ebc612 +PKG_SOURCE_VERSION:=9d89013f9cc963eca25856c61fa066091d35f8de +PKG_SOURCE_DATE:=2022-05-01 +PKG_MIRROR_HASH:=4f2a3782ba359e6d901b536d1d685026913c14426f8e58ba9673281f20675050 PKG_RELEASE:=$(AUTORELEASE) From bfc73f42df3189a2eb34bebc8d9e73b3389a83a2 Mon Sep 17 00:00:00 2001 From: Josef Schlehofer Date: Fri, 6 May 2022 19:13:05 +0200 Subject: [PATCH 12/29] mpc85xx: enable error reporting for RAM and PCIe All Freescale processors used in this target are capable to detect error and correction. [1] It can not be used as kernel module. [2] This is helpful to report hardware errors. It enables three kernel options: - EDAC, which is a subsystem - EDAC_LEGACY_SYSFS, it enables sysfq nodes - MP85XX, support for Freescale MPC8349, MPC8560, MPC8540, MPC8548, T4240 EDAC is already enabled for following targets: qoriq, octeon, octeontx and zynq. [1] https://cateee.net/lkddb/web-lkddb/EDAC.html [2] https://patchwork.ozlabs.org/patch/554908/ Signed-off-by: Josef Schlehofer --- target/linux/mpc85xx/config-5.10 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/linux/mpc85xx/config-5.10 b/target/linux/mpc85xx/config-5.10 index 022fc75dac..7ce8051dc5 100644 --- a/target/linux/mpc85xx/config-5.10 +++ b/target/linux/mpc85xx/config-5.10 @@ -58,7 +58,11 @@ CONFIG_E500=y # CONFIG_E5500_CPU is not set # CONFIG_E6500_CPU is not set CONFIG_EARLY_PRINTK=y +CONFIG_EDAC=y CONFIG_EDAC_ATOMIC_SCRUB=y +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_LEGACY_SYSFS=y +CONFIG_EDAC_MPC85XX=y CONFIG_EDAC_SUPPORT=y CONFIG_ENABLE_MUST_CHECK=y CONFIG_ETHERNET_PACKET_MANGLE=y From 3e300e724b674b299d055d172a268c8cfa8489d2 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 15 May 2022 15:19:49 +0200 Subject: [PATCH 13/29] libubox: update to the latest version f2d6752901f2 blob: clear buf->head when freeing a buffer 45210ce14136 list.h: add container_of_safe macro cfa372ff8aed blobmsg: implicitly reserve space for 0-terminator in string buf alloc d2223ef9da71 blobmsg: work around false positive gcc -Warray-bounds warnings Signed-off-by: Felix Fietkau --- package/libs/libubox/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libs/libubox/Makefile b/package/libs/libubox/Makefile index ea9f1cf652..9ad4c30595 100644 --- a/package/libs/libubox/Makefile +++ b/package/libs/libubox/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git -PKG_MIRROR_HASH:=ae02e1539ea6af072e39ce0d7179806c98eb29188c233be44226118f4c4271ee -PKG_SOURCE_DATE:=2021-11-20 -PKG_SOURCE_VERSION:=cce5e351278b307af7f69931971e3d4e060117d7 +PKG_MIRROR_HASH:=cf48d00ed0ea74d53f2043eb9f9dc52834c0b214f258201cf22dfff7dd6c6e40 +PKG_SOURCE_DATE:=2022-05-15 +PKG_SOURCE_VERSION:=d2223ef9da7172a84d1508733dc58840e1381e3c PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE)) CMAKE_INSTALL:=1 From 57efdd6a2d815d2491c5b7f22ffaeb6a845bfd0a Mon Sep 17 00:00:00 2001 From: Ptilopsis Leucotis Date: Wed, 11 May 2022 19:55:05 +0300 Subject: [PATCH 14/29] ath79: fix I2C on GL-AR300M devices On GL-AR300M Series GPIO17 described as I2C SDA in Device Tree. Because of GPIO_OUT_FUNCTION4 register was not initialized on start, GPIO17 was uncontrollable, it always in high state. According to QCA9531 documentation, default setting of GPIO17 is SYS_RST_L. In order to make GPIO17 controllable, it should write value 0x00 on bits [15:8] of GPIO_OUT_FUNCTION4 register, located at 0x1804003C address. Signed-off-by: Ptilopsis Leucotis --- target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi index 2eaff61f50..47fda91a0c 100644 --- a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi +++ b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi @@ -72,6 +72,9 @@ i2c: i2c { compatible = "i2c-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&enable_gpio17>; + sda-gpios = <&gpio 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; scl-gpios = <&gpio 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; }; @@ -181,3 +184,9 @@ reg = <0x0 0x6>; }; }; + +&pinmux { + enable_gpio17: pinmux_enable_gpio17 { + pinctrl-single,bits = <0x10 0x0000 0xff00>; + }; +}; From af425e42212d476dd95ec31f18d85b19004c9268 Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Wed, 11 May 2022 17:29:21 +0200 Subject: [PATCH 15/29] ipq40xx: revert Cell-C RTL30VW to legacy caldata extraction This partially reverts commit cfc13c44595d ("ipq40xx: utilize nvmem-cells for macs & (pre-)calibration data"). After switching to nvmem RTL30VW, wifi was broken: [ 19.118319] ath10k_ahb a000000.wifi: qca4019 hw1.0 target 0x01000000 chip_id 0x003b00ff sub 0000:0000 [ 19.118377] ath10k_ahb a000000.wifi: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 0 [ 19.130285] ath10k_ahb a000000.wifi: firmware ver 10.4b-ct-4019-fW-13-5ae337bb1 api 5 features mfp,peer-flow-ctrl,txstatus-noack,wmi-10.x-CT,ratemask-CT,regdump-CT,txrate-CT,flush-all-CT,pingpong-CT,ch-regs-CT,nop-CT,set-special-CT,tx-rc-CT,cust-stats-CT,txrate2-CT,beacon-cb-CT,wmi-block-ack-CT,wmi-bcn-rc-CT crc32 6b2b5c5b [ 19.159092] ath10k_ahb a000000.wifi: failed to fetch board data for bus=ahb,vendor=0000,device=0000,subsystem-vendor=0000,subsystem-device=0000,variant=cellc,rtl30vw from ath10k/QCA4019/hw1.0/board-2.bin [ 19.238764] ath10k_ahb a000000.wifi: failed to fetch board-2.bin or board.bin from ath10k/QCA4019/hw1.0 [ 19.238847] ath10k_ahb a000000.wifi: failed to fetch board file: -12 [ 19.247362] ath10k_ahb a000000.wifi: could not probe fw (-12) [ 20.190797] ath10k_ahb a800000.wifi: qca4019 hw1.0 target 0x01000000 chip_id 0x003b00ff sub 0000:0000 [ 20.190853] ath10k_ahb a800000.wifi: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 0 [ 20.202893] ath10k_ahb a800000.wifi: firmware ver 10.4b-ct-4019-fW-13-5ae337bb1 api 5 features mfp,peer-flow-ctrl,txstatus-noack,wmi-10.x-CT,ratemask-CT,regdump-CT,txrate-CT,flush-all-CT,pingpong-CT,ch-regs-CT,nop-CT,set-special-CT,tx-rc-CT,cust-stats-CT,txrate2-CT,beacon-cb-CT,wmi-block-ack-CT,wmi-bcn-rc-CT crc32 6b2b5c5b [ 20.231357] ath10k_ahb a800000.wifi: failed to fetch board data for bus=ahb,vendor=0000,device=0000,subsystem-vendor=0000,subsystem-device=0000,variant=cellc,rtl30vw from ath10k/QCA4019/hw1.0/board-2.bin [ 20.317318] ath10k_ahb a800000.wifi: failed to fetch board-2.bin or board.bin from ath10k/QCA4019/hw1.0 [ 20.317399] ath10k_ahb a800000.wifi: failed to fetch board file: -12 [ 20.326098] ath10k_ahb a800000.wifi: could not probe fw (-12) Bootloader mangles in NAND partitions and removes precal@X nodes in working system: root@OpenWrt:~# echo $(cat /sys/firmware/devicetree/base/soc/spi@78b5000/flash@0/partitions/partition@170000/label) 0:ART root@OpenWrt:~# ls /sys/firmware/devicetree/base/soc/spi@78b5000/flash@0/partitions/partition@170000/ label name reg Revert to legacy method fixed the problem. Fixes: cfc13c44595d ("ipq40xx: utilize nvmem-cells for macs & (pre-)calibration data") Signed-off-by: Pawel Dembicki --- .../etc/hotplug.d/firmware/11-ath10k-caldata | 2 ++ .../arch/arm/boot/dts/qcom-ipq4019-rtl30vw.dts | 15 --------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 2c56e53f9c..c02b12dceb 100644 --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -76,6 +76,7 @@ case "$FIRMWARE" in /usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \ /usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") ;; + cellc,rtl30vw |\ openmesh,a42 |\ openmesh,a62 |\ plasmacloud,pa1200 |\ @@ -155,6 +156,7 @@ case "$FIRMWARE" in /usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \ /usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") ;; + cellc,rtl30vw |\ openmesh,a42 |\ openmesh,a62 |\ plasmacloud,pa1200 |\ diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-rtl30vw.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-rtl30vw.dts index dcbe95c526..0caa0255d0 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-rtl30vw.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-rtl30vw.dts @@ -267,17 +267,6 @@ label = "0:ART"; reg = <0x170000 0x10000>; read-only; - compatible = "nvmem-cells"; - #address-cells = <1>; - #size-cells = <1>; - - precal_art_1000: precal@1000 { - reg = <0x1000 0x2f20>; - }; - - precal_art_5000: precal@5000 { - reg = <0x5000 0x2f20>; - }; }; partition@180000 { @@ -387,14 +376,10 @@ &wifi0 { status = "okay"; - nvmem-cell-names = "pre-calibration"; - nvmem-cells = <&precal_art_1000>; qcom,ath10k-calibration-variant = "cellc,rtl30vw"; }; &wifi1 { status = "okay"; - nvmem-cell-names = "pre-calibration"; - nvmem-cells = <&precal_art_5000>; qcom,ath10k-calibration-variant = "cellc,rtl30vw"; }; From 1fabeeb799abca1d4fb5ba541410ba847cdc20d9 Mon Sep 17 00:00:00 2001 From: Lech Perczak Date: Sat, 14 May 2022 14:50:02 +0200 Subject: [PATCH 16/29] ath79: ZTE MF286[A,R]: add "Power button blocker" GPIO switch ZTE MF286A and MF286R feature a "power switch override" GPIO in stock firmware as means to prevent power interruption during firmware update, especially when used with internal battery. To ensure that this GPIO is properly driven as in stock firmware, configure it with userspace GPIO switch. It was observed that on some units, the modem would not be restarted together with the board itself on reboot, this should help with that as well. Signed-off-by: Lech Perczak --- .../base-files/etc/board.d/03_gpio_switches | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 target/linux/ath79/nand/base-files/etc/board.d/03_gpio_switches diff --git a/target/linux/ath79/nand/base-files/etc/board.d/03_gpio_switches b/target/linux/ath79/nand/base-files/etc/board.d/03_gpio_switches new file mode 100644 index 0000000000..775778a2be --- /dev/null +++ b/target/linux/ath79/nand/base-files/etc/board.d/03_gpio_switches @@ -0,0 +1,20 @@ +# +# Copyright (C) 2022 OpenWrt.org +# + +. /lib/functions/uci-defaults.sh + +board_config_update + +board=$(board_name) + +case "$board" in +zte,mf286a|\ +zte,mf286r) + ucidef_add_gpio_switch "power_btn_block" "Power button blocker" "20" "0" + ;; +esac + +board_config_flush + +exit 0 From d93aae1d675caf47fbec684d12e39fb4090527d5 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sun, 1 May 2022 20:58:33 -0700 Subject: [PATCH 17/29] util-linux: update to 2.38 Various fixes. Signed-off-by: Rosen Penev --- package/utils/util-linux/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/utils/util-linux/Makefile b/package/utils/util-linux/Makefile index 6d44e92f00..a93c9f6fdc 100644 --- a/package/utils/util-linux/Makefile +++ b/package/utils/util-linux/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=util-linux -PKG_VERSION:=2.37.3 +PKG_VERSION:=2.38 PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:=@KERNEL/linux/utils/$(PKG_NAME)/v2.37 -PKG_HASH:=590c592e58cd6bf38519cb467af05ce6a1ab18040e3e3418f24bcfb2f55f9776 +PKG_SOURCE_URL:=@KERNEL/linux/utils/$(PKG_NAME)/v2.38 +PKG_HASH:=6d111cbe4d55b336db2f1fbeffbc65b89908704c01136371d32aa9bec373eb64 PKG_CPE_ID:=cpe:/a:kernel:util-linux PKG_LICENSE:=GPL-2.0-only From 28cec438071c6a5ce90ed4606df7cbe6ad8a100c Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Fri, 29 Apr 2022 18:41:45 -0700 Subject: [PATCH 18/29] util-linux: use meson to build Compiles faster, is PIC by default, and does not have pkgconfig files with wrong paths. Add various fixes to it as it seems cross compilation was never tested. Signed-off-by: Rosen Penev --- package/utils/util-linux/Makefile | 117 ++++++++++-------- .../util-linux/patches/010-meson-typo.patch | 20 +++ ...eson-fix-compilation-without-systemd.patch | 22 ++++ .../patches/030-meson-don-t-use-run.patch | 34 +++++ .../040-meson-fix-cpu_set_t-test.patch | 23 ++++ .../050-meson-fix-environ-search.patch | 23 ++++ ...son-add-_GNU_SOURCE-for-sighandler_t.patch | 23 ++++ .../patches/070-meson-fix-isnan-check.patch | 24 ++++ .../patches/080-meson-fix-tzname-check.patch | 23 ++++ .../util-linux/patches/090-meson-libpam.patch | 18 +++ ...-make-libcap-ng-dependent-on-setpriv.patch | 31 +++++ ...n-fix-when-HAVE_CLOCK_GETTIME-is-set.patch | 21 ++++ ...oject-version-from-the-version-gen-s.patch | 20 +++ ...r-in-processing-version-for-pc-files.patch | 26 ++++ .../util-linux/patches/200-meson-no-po.patch | 10 ++ ...se_urandom.patch => 210-use-urandom.patch} | 0 16 files changed, 384 insertions(+), 51 deletions(-) create mode 100644 package/utils/util-linux/patches/010-meson-typo.patch create mode 100644 package/utils/util-linux/patches/020-meson-fix-compilation-without-systemd.patch create mode 100644 package/utils/util-linux/patches/030-meson-don-t-use-run.patch create mode 100644 package/utils/util-linux/patches/040-meson-fix-cpu_set_t-test.patch create mode 100644 package/utils/util-linux/patches/050-meson-fix-environ-search.patch create mode 100644 package/utils/util-linux/patches/060-meson-add-_GNU_SOURCE-for-sighandler_t.patch create mode 100644 package/utils/util-linux/patches/070-meson-fix-isnan-check.patch create mode 100644 package/utils/util-linux/patches/080-meson-fix-tzname-check.patch create mode 100644 package/utils/util-linux/patches/090-meson-libpam.patch create mode 100644 package/utils/util-linux/patches/100-meson-make-libcap-ng-dependent-on-setpriv.patch create mode 100644 package/utils/util-linux/patches/110-meson-fix-when-HAVE_CLOCK_GETTIME-is-set.patch create mode 100644 package/utils/util-linux/patches/120-meson-get-the-project-version-from-the-version-gen-s.patch create mode 100644 package/utils/util-linux/patches/130-meson-fix-error-in-processing-version-for-pc-files.patch create mode 100644 package/utils/util-linux/patches/200-meson-no-po.patch rename package/utils/util-linux/patches/{100-use_urandom.patch => 210-use-urandom.patch} (100%) diff --git a/package/utils/util-linux/Makefile b/package/utils/util-linux/Makefile index a93c9f6fdc..706c3194b1 100644 --- a/package/utils/util-linux/Makefile +++ b/package/utils/util-linux/Makefile @@ -25,14 +25,10 @@ PKG_LICENSE_FILES:= COPYING \ libuuid/COPYING \ Documentation/licenses/COPYING.BSD-3 -PKG_BUILD_PARALLEL:=1 - -PKG_FIXUP:=autoreconf PKG_INSTALL:=1 -DISABLE_NLS:=--disable-nls - include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/meson.mk define Package/util-linux/Default SECTION:=utils @@ -552,44 +548,69 @@ define Package/wipefs/description libblkid. endef -CONFIGURE_ARGS += \ - --disable-use-tty-group \ - --disable-rpath \ - --disable-tls \ - --disable-su \ - --disable-sulogin \ - --disable-makeinstall-chown \ - --disable-login \ - --disable-nologin \ - --disable-lslogins \ - --disable-runuser \ - --disable-chfn-chsh \ - --disable-raw \ - --without-python \ - --without-udev \ - --without-readline \ - --without-libmagic \ - --with-ncursesw - -TARGET_CFLAGS += $(FPIC) -std=gnu99 +MESON_ARGS += \ + -Dsystemd=disabled \ + -Dtinfo=disabled \ + -Dcryptsetup=disabled \ + -Dlibutil=disabled \ + -Dlibutempter=disabled \ + -Dlibpcre2-posix=disabled \ + -Dlibuser=disabled \ + -Duse-tty-group=false \ + -Duse-tls=false \ + -Dbuild-python=disabled \ + -Dbuild-zramctl=disabled \ + -Dbuild-fsck=disabled \ + -Dbuild-wipefs=disabled \ + -Dbuild-fallocate=disabled \ + -Dbuild-setpriv=disabled \ + -Dbuild-hardlink=disabled \ + -Dbuild-cramfs=disabled \ + -Dbuild-bfs=disabled \ + -Dbuild-minix=disabled \ + -Dbuild-fdformat=disabled \ + -Dbuild-lslogins=disabled \ + -Dbuild-wdctl=disabled \ + -Dbuild-cal=disabled \ + -Dbuild-switch_root=disabled \ + -Dbuild-pivot_root=disabled \ + -Dbuild-lsmem=disabled \ + -Dbuild-lsirq=disabled \ + -Dbuild-irqtop=disabled \ + -Dbuild-chmem=disabled \ + -Dbuild-ipcrm=disabled \ + -Dbuild-rfkill=disabled \ + -Dbuild-tunelp=disabled \ + -Dbuild-kill=disabled \ + -Dbuild-last=disabled \ + -Dbuild-utmpdump=disabled \ + -Dbuild-line=disabled \ + -Dbuild-mesg=disabled \ + -Dbuild-raw=disabled \ + -Dbuild-vipw=disabled \ + -Dbuild-newgrp=disabled \ + -Dbuild-chfn-chsh=disabled \ + -Dbuild-login=disabled \ + -Dbuild-nologin=disabled \ + -Dbuild-sulogin=disabled \ + -Dbuild-su=disabled \ + -Dbuild-runuser=disabled \ + -Dbuild-ul=disabled \ + -Dbuild-pg=disabled \ + -Dbuild-write=disabled \ + -Dbuild-bash-completion=disabled \ + -Dbuild-pylibmount=disabled \ + -Dreadline=disabled \ + -Dmagic=disabled \ + -Dncursesw=enabled define Build/InstallDev $(INSTALL_DIR) $(1)/usr/lib/pkgconfig $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/blkid.pc $(1)/usr/lib/pkgconfig - $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/blkid.pc - $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/blkid.pc $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/fdisk.pc $(1)/usr/lib/pkgconfig - $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/fdisk.pc - $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/fdisk.pc $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/mount.pc $(1)/usr/lib/pkgconfig - $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/mount.pc - $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/mount.pc $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/smartcols.pc $(1)/usr/lib/pkgconfig - $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/smartcols.pc - $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/smartcols.pc $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/uuid.pc $(1)/usr/lib/pkgconfig - $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/uuid.pc - $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/uuid.pc $(INSTALL_DIR) $(1)/usr/include/blkid $(CP) $(PKG_INSTALL_DIR)/usr/include/blkid/blkid.h $(1)/usr/include/blkid @@ -603,43 +624,37 @@ define Build/InstallDev $(CP) $(PKG_INSTALL_DIR)/usr/include/libsmartcols/libsmartcols.h $(1)/usr/include/libsmartcols $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libblkid.so* $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libfdisk.so* $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libmount.so* $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libuuid.so* $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libsmartcols.so* $(1)/usr/lib - - $(LN) libblkid.so.1 $(1)/usr/lib/libblkid.so - $(LN) libfdisk.so.1 $(1)/usr/lib/libfdisk.so - $(LN) libmount.so.1 $(1)/usr/lib/libmount.so - $(LN) libuuid.so.1 $(1)/usr/lib/libuuid.so - $(LN) libsmartcols.so.1 $(1)/usr/lib/libsmartcols.so + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libblkid.so* $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfdisk.so* $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmount.so* $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libuuid.so* $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsmartcols.so* $(1)/usr/lib endef define Package/libfdisk/install $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libfdisk.so.* $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfdisk.so.* $(1)/usr/lib/ endef define Package/libblkid/install $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libblkid.so.* $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libblkid.so.* $(1)/usr/lib/ endef define Package/libmount/install $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libmount.so.* $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmount.so.* $(1)/usr/lib/ endef define Package/libsmartcols/install $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libsmartcols.so.* $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsmartcols.so.* $(1)/usr/lib/ endef define Package/libuuid/install $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libuuid.so.* $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libuuid.so.* $(1)/usr/lib/ endef define Package/agetty/install diff --git a/package/utils/util-linux/patches/010-meson-typo.patch b/package/utils/util-linux/patches/010-meson-typo.patch new file mode 100644 index 0000000000..466d942d58 --- /dev/null +++ b/package/utils/util-linux/patches/010-meson-typo.patch @@ -0,0 +1,20 @@ +From c387d4fe7a1435a762a5b7d8b75feb13ad613315 Mon Sep 17 00:00:00 2001 +From: Anatoly Pugachev +Date: Fri, 8 Apr 2022 15:34:16 +0300 +Subject: [PATCH] libfdisk: meson.build fix typo + +--- + libfdisk/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/libfdisk/meson.build ++++ b/libfdisk/meson.build +@@ -11,7 +11,7 @@ libfdisk_h = configure_file( + output : 'libfdisk.h', + configuration : defs, + install : build_libfdisk, +- install_dir : join_paths(get_option('includedir'), 'libfisk'), ++ install_dir : join_paths(get_option('includedir'), 'libfdisk'), + ) + + lib_fdisk_sources = ''' diff --git a/package/utils/util-linux/patches/020-meson-fix-compilation-without-systemd.patch b/package/utils/util-linux/patches/020-meson-fix-compilation-without-systemd.patch new file mode 100644 index 0000000000..aa209994ec --- /dev/null +++ b/package/utils/util-linux/patches/020-meson-fix-compilation-without-systemd.patch @@ -0,0 +1,22 @@ +From 38b15ca2dc4ca32bbe4a2449e1c7b645e4577840 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Fri, 29 Apr 2022 16:53:43 -0700 +Subject: [PATCH 1/7] meson: fix compilation without systemd + +systemdsystemunitdir is used elsewhere. + +Signed-off-by: Rosen Penev +--- + meson.build | 1 + + 1 file changed, 1 insertion(+) + +--- a/meson.build ++++ b/meson.build +@@ -720,6 +720,7 @@ if fs_search_path_extra != '' + endif + conf.set_quoted('FS_SEARCH_PATH', fs_search_path) + ++systemdsystemunitdir = '' + if systemd.found() + systemdsystemunitdir = systemd.get_pkgconfig_variable('systemdsystemunitdir') + endif diff --git a/package/utils/util-linux/patches/030-meson-don-t-use-run.patch b/package/utils/util-linux/patches/030-meson-don-t-use-run.patch new file mode 100644 index 0000000000..7803dd7725 --- /dev/null +++ b/package/utils/util-linux/patches/030-meson-don-t-use-run.patch @@ -0,0 +1,34 @@ +From e25db9169450d3d5fb43656a2eae5c08999310f4 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Fri, 29 Apr 2022 16:56:54 -0700 +Subject: [PATCH 2/7] meson: don't use run + +Fixes cross compilation. run is not needed anyway. + +Signed-off-by: Rosen Penev +--- + meson.build | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/meson.build ++++ b/meson.build +@@ -577,8 +577,7 @@ int main(void) { + return tzname ? 0 : 1; + } + '''.format(have ? 1 : 0) +-result = cc.run(code, name : 'using tzname[]') +-have = result.compiled() and result.returncode() == 0 ++have = cc.compiles(code, name : 'using tzname[]') + conf.set('HAVE_TZNAME', have ? 1 : false) + + socket_libs = [] +@@ -641,8 +640,7 @@ int main(void) { + return (*__progname != 0); + } + ''' +-result = cc.run(code, name : 'using __progname') +-have = result.compiled() and result.returncode() == 0 ++have = cc.compiles(code, name : 'using __progname') + conf.set('HAVE___PROGNAME', have ? 1 : false) + + build_plymouth_support = get_option('build-plymouth-support') diff --git a/package/utils/util-linux/patches/040-meson-fix-cpu_set_t-test.patch b/package/utils/util-linux/patches/040-meson-fix-cpu_set_t-test.patch new file mode 100644 index 0000000000..bdbfc4bfe0 --- /dev/null +++ b/package/utils/util-linux/patches/040-meson-fix-cpu_set_t-test.patch @@ -0,0 +1,23 @@ +From 4194bb5b35e9b5f3296bf17b7cabcc5cb1632ba3 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Fri, 29 Apr 2022 16:55:15 -0700 +Subject: [PATCH 3/7] meson: fix cpu_set_t test + +_GNU_SOURCE is needed here. + +Signed-off-by: Rosen Penev +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/meson.build ++++ b/meson.build +@@ -379,7 +379,7 @@ endforeach + have = cc.has_header('sched.h') + conf.set10('HAVE_DECL_CPU_ALLOC', have) + # We get -1 if the size cannot be determined +-have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#include ') > 0 ++have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include ') > 0 + conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false) + + have = cc.has_header_symbol('stdlib.h', 'environ') diff --git a/package/utils/util-linux/patches/050-meson-fix-environ-search.patch b/package/utils/util-linux/patches/050-meson-fix-environ-search.patch new file mode 100644 index 0000000000..2cd02e5b47 --- /dev/null +++ b/package/utils/util-linux/patches/050-meson-fix-environ-search.patch @@ -0,0 +1,23 @@ +From 1e9e2b9fe365cc4a0025d44dc0a9c54bfffe9058 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Fri, 29 Apr 2022 18:16:17 -0700 +Subject: [PATCH 4/7] meson: fix environ search + +musl has it defined in unistd.h and hidden behind _GNU_SOURCE. + +Signed-off-by: Rosen Penev +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/meson.build ++++ b/meson.build +@@ -382,7 +382,7 @@ conf.set10('HAVE_DECL_CPU_ALLOC', have) + have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include ') > 0 + conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false) + +-have = cc.has_header_symbol('stdlib.h', 'environ') ++have = cc.has_header_symbol('unistd.h', 'environ', prefix : '#define _GNU_SOURCE') + conf.set10('HAVE_ENVIRON_DECL', have) + + have = cc.has_header_symbol('signal.h', 'sighandler_t') diff --git a/package/utils/util-linux/patches/060-meson-add-_GNU_SOURCE-for-sighandler_t.patch b/package/utils/util-linux/patches/060-meson-add-_GNU_SOURCE-for-sighandler_t.patch new file mode 100644 index 0000000000..7f9137f8bc --- /dev/null +++ b/package/utils/util-linux/patches/060-meson-add-_GNU_SOURCE-for-sighandler_t.patch @@ -0,0 +1,23 @@ +From 5d7557eb3827664b2b78145373907f2a6994bdf9 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Fri, 29 Apr 2022 18:17:52 -0700 +Subject: [PATCH 5/7] meson: add _GNU_SOURCE for sighandler_t + +musl requires it. + +Signed-off-by: Rosen Penev +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/meson.build ++++ b/meson.build +@@ -385,7 +385,7 @@ conf.set('HAVE_CPU_SET_T', have_cpu_set_ + have = cc.has_header_symbol('unistd.h', 'environ', prefix : '#define _GNU_SOURCE') + conf.set10('HAVE_ENVIRON_DECL', have) + +-have = cc.has_header_symbol('signal.h', 'sighandler_t') ++have = cc.has_header_symbol('signal.h', 'sighandler_t', prefix : '#define _GNU_SOURCE') + conf.set('HAVE_SIGHANDLER_T', have ? 1 : false) + + have = cc.has_header_symbol('string.h', 'strsignal') diff --git a/package/utils/util-linux/patches/070-meson-fix-isnan-check.patch b/package/utils/util-linux/patches/070-meson-fix-isnan-check.patch new file mode 100644 index 0000000000..a0b104f801 --- /dev/null +++ b/package/utils/util-linux/patches/070-meson-fix-isnan-check.patch @@ -0,0 +1,24 @@ +From 777652585924034deeba98ae3192f26bc32bb661 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Fri, 29 Apr 2022 18:19:53 -0700 +Subject: [PATCH 6/7] meson: fix isnan check + +musl only has isnan as a macro, not as a function. Handle the former +case. + +Signed-off-by: Rosen Penev +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/meson.build ++++ b/meson.build +@@ -622,7 +622,7 @@ rtas_libs = cc.find_library('rtas', requ + conf.set('HAVE_LIBRTAS', rtas_libs.found() ? 1 : false) + + math_libs = [] +-if not cc.has_function('isnan') ++if not cc.has_header_symbol('math.h', 'isnan') + lib = cc.find_library('m', required : true) + if (cc.has_function('isnan', dependencies : lib) and + cc.has_function('__isnan', dependencies : lib)) diff --git a/package/utils/util-linux/patches/080-meson-fix-tzname-check.patch b/package/utils/util-linux/patches/080-meson-fix-tzname-check.patch new file mode 100644 index 0000000000..f5d53c4d36 --- /dev/null +++ b/package/utils/util-linux/patches/080-meson-fix-tzname-check.patch @@ -0,0 +1,23 @@ +From 9a6b2618b46a859388139d1eb18f876886786659 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Fri, 29 Apr 2022 19:00:53 -0700 +Subject: [PATCH] meson: fix tzname check + +tzname is not a type but a variable. sizeof only works on types. + +Signed-off-by: Rosen Penev +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/meson.build ++++ b/meson.build +@@ -565,7 +565,7 @@ have = cc.has_member('struct tm', 'tm_zo + prefix : '#include ') + conf.set('HAVE_STRUCT_TM_TM_ZONE', have ? 1 : false) + +-have = cc.sizeof('tzname', prefix : '#include ') > 0 ++have = cc.has_header_symbol('time.h', 'tzname') + conf.set('HAVE_DECL_TZNAME', have ? 1 : false) + + code = ''' diff --git a/package/utils/util-linux/patches/090-meson-libpam.patch b/package/utils/util-linux/patches/090-meson-libpam.patch new file mode 100644 index 0000000000..c9a91b9937 --- /dev/null +++ b/package/utils/util-linux/patches/090-meson-libpam.patch @@ -0,0 +1,18 @@ +--- a/meson.build ++++ b/meson.build +@@ -299,10 +299,14 @@ conf.set('HAVE_LIBUDEV', lib_udev.found( + + lib_crypt = cc.find_library('crypt') + +-lib_pam = cc.find_library('pam') ++req_libpam = not (get_option('build-login').disabled() or get_option('build-chfn-chsh').disabled() ++ or get_option('build-su').disabled() or get_option('build-runuser').disabled()) ++lib_pam = cc.find_library('pam', required : req_libpam) + if lib_pam.found() + lib_pam_misc = cc.find_library('pam_misc') + lib_pam = [lib_pam, lib_pam_misc] ++else ++ lib_pam_misc = declare_dependency() + endif + + lib_cryptsetup = dependency( diff --git a/package/utils/util-linux/patches/100-meson-make-libcap-ng-dependent-on-setpriv.patch b/package/utils/util-linux/patches/100-meson-make-libcap-ng-dependent-on-setpriv.patch new file mode 100644 index 0000000000..d8b1199004 --- /dev/null +++ b/package/utils/util-linux/patches/100-meson-make-libcap-ng-dependent-on-setpriv.patch @@ -0,0 +1,31 @@ +From cd23a4336f49ba6a12ade557a09589f2a7c966f4 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Mon, 2 May 2022 16:18:33 -0700 +Subject: [PATCH] meson: make libcap-ng dependent on setpriv + +Signed-off-by: Rosen Penev +--- + meson.build | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/meson.build ++++ b/meson.build +@@ -334,7 +334,8 @@ have = cc.has_function( + conf.set('HAVE_CRYPT_ACTIVATE_BY_SIGNED_KEY', have ? 1 : false) + + lib_cap_ng = dependency( +- 'libcap-ng') ++ 'libcap-ng', ++ required : get_option('build-setpriv')) + + lib_selinux = dependency( + 'libselinux', +@@ -1754,7 +1755,7 @@ if opt and not is_disabler(exe) + exes += exe + endif + +-opt = not get_option('build-setpriv').disabled() ++opt = not get_option('build-setpriv').disabled() and lib_cap_ng.found() + exe = executable( + 'setpriv', + setpriv_sources, diff --git a/package/utils/util-linux/patches/110-meson-fix-when-HAVE_CLOCK_GETTIME-is-set.patch b/package/utils/util-linux/patches/110-meson-fix-when-HAVE_CLOCK_GETTIME-is-set.patch new file mode 100644 index 0000000000..bba8baf5ab --- /dev/null +++ b/package/utils/util-linux/patches/110-meson-fix-when-HAVE_CLOCK_GETTIME-is-set.patch @@ -0,0 +1,21 @@ +From e51565b653cf09985df57cb7254b16d5af5df223 Mon Sep 17 00:00:00 2001 +From: Nicolas Caramelli +Date: Fri, 29 Apr 2022 18:16:36 +0200 +Subject: [PATCH] meson: fix when HAVE_CLOCK_GETTIME is set + +Signed-off-by: Nicolas Caramelli +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/meson.build ++++ b/meson.build +@@ -602,7 +602,7 @@ if not have + have = cc.has_function('clock_gettime', + dependencies : realtime_libs) + endif +-conf.set('HAVE_CLOCK_GETTIME', have_dirfd ? 1 : false) ++conf.set('HAVE_CLOCK_GETTIME', have ? 1 : false) + + thread_libs = dependency('threads') + diff --git a/package/utils/util-linux/patches/120-meson-get-the-project-version-from-the-version-gen-s.patch b/package/utils/util-linux/patches/120-meson-get-the-project-version-from-the-version-gen-s.patch new file mode 100644 index 0000000000..8529c8268e --- /dev/null +++ b/package/utils/util-linux/patches/120-meson-get-the-project-version-from-the-version-gen-s.patch @@ -0,0 +1,20 @@ +From e0c1a86bf88b568a7afe8ebaea1b9f84afb892c2 Mon Sep 17 00:00:00 2001 +From: Eli Schwartz +Date: Wed, 4 May 2022 23:52:31 -0400 +Subject: [PATCH] meson: get the project version from the version-gen script + +This matches autotools and ensures that the version number is actually +reliable. +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/meson.build ++++ b/meson.build +@@ -1,5 +1,5 @@ + project('util-linux', 'c', +- version : '2.37', ++ version : run_command('tools/git-version-gen', check: true).stdout(), + license : 'GPLv2+') + + pkgconfig = import('pkgconfig') diff --git a/package/utils/util-linux/patches/130-meson-fix-error-in-processing-version-for-pc-files.patch b/package/utils/util-linux/patches/130-meson-fix-error-in-processing-version-for-pc-files.patch new file mode 100644 index 0000000000..75e88682e3 --- /dev/null +++ b/package/utils/util-linux/patches/130-meson-fix-error-in-processing-version-for-pc-files.patch @@ -0,0 +1,26 @@ +From dc307e1cbf73f6dbf72bb049c19d332774cdb4e7 Mon Sep 17 00:00:00 2001 +From: Eli Schwartz +Date: Thu, 5 May 2022 00:16:15 -0400 +Subject: [PATCH] meson: fix error in processing version for pc files + +This awk command was copied verbatim from configure.ac, which included +non-awk syntax because configure.ac cannot contain [ literals. + +Rewrite these autoconf quadrigraphs as their actual values, for meson. + +Fixes always setting the micro version to "0". +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/meson.build ++++ b/meson.build +@@ -41,7 +41,7 @@ conf.set_quoted('PACKAGE_VERSION', meson + + codes = [''' {print $1} ''', + ''' {sub("-.*","",$2); print $2} ''', +- ''' {sub("-.*","",$3); print $3 ~ /^@<:@0-9@:>@+$/ ? $3 : 0} '''] ++ ''' {sub("-.*","",$3); print $3 ~ /^[0-9]+$/ ? $3 : 0} '''] + pc_version = [] + foreach code : codes + res = run_command('bash', '-c', diff --git a/package/utils/util-linux/patches/200-meson-no-po.patch b/package/utils/util-linux/patches/200-meson-no-po.patch new file mode 100644 index 0000000000..d626036bb2 --- /dev/null +++ b/package/utils/util-linux/patches/200-meson-no-po.patch @@ -0,0 +1,10 @@ +--- a/meson.build ++++ b/meson.build +@@ -774,7 +774,6 @@ subdir('disk-utils') + subdir('misc-utils') + subdir('text-utils') + subdir('term-utils') +-subdir('po') + + includes = [dir_include, + dir_libblkid, diff --git a/package/utils/util-linux/patches/100-use_urandom.patch b/package/utils/util-linux/patches/210-use-urandom.patch similarity index 100% rename from package/utils/util-linux/patches/100-use_urandom.patch rename to package/utils/util-linux/patches/210-use-urandom.patch From 7a5ddc0d06895bde7538d78c8dad2c863d70f946 Mon Sep 17 00:00:00 2001 From: Eneas U de Queiroz Date: Tue, 10 May 2022 20:34:57 -0300 Subject: [PATCH 19/29] openssl: bump to 1.1.1o This release comes with a security fix related to c_rehash. OpenWrt does not ship or use it, so it was not affected by the bug. There is a fix for a possible crash in ERR_load_strings() when configured with no-err, which OpenWrt does by default. Signed-off-by: Eneas U de Queiroz --- package/libs/openssl/Makefile | 4 ++-- ...0-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile index b771edfc84..b496f2f9f2 100644 --- a/package/libs/openssl/Makefile +++ b/package/libs/openssl/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=openssl PKG_BASE:=1.1.1 -PKG_BUGFIX:=n +PKG_BUGFIX:=o PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX) PKG_RELEASE:=$(AUTORELEASE) PKG_USE_MIPS16:=0 @@ -25,7 +25,7 @@ PKG_SOURCE_URL:= \ ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/ \ ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/old/$(PKG_BASE)/ -PKG_HASH:=40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a +PKG_HASH:=9384a2b0570dd80358841464677115df785edb941c71211f75076d72fe6b438f PKG_LICENSE:=OpenSSL PKG_LICENSE_FILES:=LICENSE diff --git a/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch b/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch index 1298efe546..da9b704501 100644 --- a/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch +++ b/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch @@ -21,7 +21,7 @@ diff --git a/crypto/engine/build.info b/crypto/engine/build.info diff --git a/crypto/init.c b/crypto/init.c --- a/crypto/init.c +++ b/crypto/init.c -@@ -329,18 +329,6 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_openssl) +@@ -328,18 +328,6 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_openssl) engine_load_openssl_int(); return 1; } @@ -40,7 +40,7 @@ diff --git a/crypto/init.c b/crypto/init.c # ifndef OPENSSL_NO_RDRAND static CRYPTO_ONCE engine_rdrand = CRYPTO_ONCE_STATIC_INIT; -@@ -365,6 +353,18 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_dynamic) +@@ -364,6 +352,18 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_dynamic) return 1; } # ifndef OPENSSL_NO_STATIC_ENGINE @@ -59,7 +59,7 @@ diff --git a/crypto/init.c b/crypto/init.c # if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK) static CRYPTO_ONCE engine_padlock = CRYPTO_ONCE_STATIC_INIT; DEFINE_RUN_ONCE_STATIC(ossl_init_engine_padlock) -@@ -713,11 +713,6 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) +@@ -704,11 +704,6 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) if ((opts & OPENSSL_INIT_ENGINE_OPENSSL) && !RUN_ONCE(&engine_openssl, ossl_init_engine_openssl)) return 0; @@ -71,7 +71,7 @@ diff --git a/crypto/init.c b/crypto/init.c # ifndef OPENSSL_NO_RDRAND if ((opts & OPENSSL_INIT_ENGINE_RDRAND) && !RUN_ONCE(&engine_rdrand, ossl_init_engine_rdrand)) -@@ -727,6 +722,11 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) +@@ -718,6 +713,11 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) && !RUN_ONCE(&engine_dynamic, ossl_init_engine_dynamic)) return 0; # ifndef OPENSSL_NO_STATIC_ENGINE From 0bc794a66845738eef7eeb7e13877ffb8aec17f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20B=C3=B6hler?= Date: Tue, 12 Apr 2022 11:01:25 +0200 Subject: [PATCH 20/29] kernel: add support for Toshiba TC58NVG0S3HTA00 NAND flash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Toshiba TC58NVG0S3HTA00 is detected with 64 byte OOB while the flash has 128 byte OOB. This adds a static NAND ID entry to correct this. Signed-off-by: Andreas Böhler --- ...-add-support-for-Toshiba-TC58NVG0S3H.patch | 36 +++++++++++++++++++ ...-add-support-for-Toshiba-TC58NVG0S3H.patch | 36 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 target/linux/generic/pending-5.10/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch create mode 100644 target/linux/generic/pending-5.15/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch diff --git a/target/linux/generic/pending-5.10/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch b/target/linux/generic/pending-5.10/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch new file mode 100644 index 0000000000..54df828875 --- /dev/null +++ b/target/linux/generic/pending-5.10/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch @@ -0,0 +1,36 @@ +From 35ca7e3e6ccd120d694a3425f37fc6374ad2e11e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20B=C3=B6hler?= +Date: Wed, 20 Apr 2022 12:08:38 +0200 +Subject: [PATCH] mtd: rawnand: add support for Toshiba TC58NVG0S3HTA00 + NAND flash +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The Toshiba TC58NVG0S3HTA00 is detected with 64 byte OOB while the flash +has 128 bytes OOB. This adds a static NAND ID entry to correct this. + +Tested on FRITZ!Box 7530 flashed with OpenWrt. + +Signed-off-by: Andreas Böhler +--- + drivers/mtd/nand/raw/nand_ids.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/mtd/nand/raw/nand_ids.c b/drivers/mtd/nand/raw/nand_ids.c +index 6e41902be35f..d64adbd1ce6b 100644 +--- a/drivers/mtd/nand/raw/nand_ids.c ++++ b/drivers/mtd/nand/raw/nand_ids.c +@@ -29,6 +29,9 @@ struct nand_flash_dev nand_flash_ids[] = { + {"TC58NVG0S3E 1G 3.3V 8-bit", + { .id = {0x98, 0xd1, 0x90, 0x15, 0x76, 0x14, 0x01, 0x00} }, + SZ_2K, SZ_128, SZ_128K, 0, 8, 64, NAND_ECC_INFO(1, SZ_512), }, ++ {"TC58NVG0S3HTA00 1G 3.3V 8-bit", ++ { .id = {0x98, 0xf1, 0x80, 0x15} }, ++ SZ_2K, SZ_128, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512), }, + {"TC58NVG2S0F 4G 3.3V 8-bit", + { .id = {0x98, 0xdc, 0x90, 0x26, 0x76, 0x15, 0x01, 0x08} }, + SZ_4K, SZ_512, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) }, +-- +2.35.1 + diff --git a/target/linux/generic/pending-5.15/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch b/target/linux/generic/pending-5.15/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch new file mode 100644 index 0000000000..54df828875 --- /dev/null +++ b/target/linux/generic/pending-5.15/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch @@ -0,0 +1,36 @@ +From 35ca7e3e6ccd120d694a3425f37fc6374ad2e11e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20B=C3=B6hler?= +Date: Wed, 20 Apr 2022 12:08:38 +0200 +Subject: [PATCH] mtd: rawnand: add support for Toshiba TC58NVG0S3HTA00 + NAND flash +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The Toshiba TC58NVG0S3HTA00 is detected with 64 byte OOB while the flash +has 128 bytes OOB. This adds a static NAND ID entry to correct this. + +Tested on FRITZ!Box 7530 flashed with OpenWrt. + +Signed-off-by: Andreas Böhler +--- + drivers/mtd/nand/raw/nand_ids.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/mtd/nand/raw/nand_ids.c b/drivers/mtd/nand/raw/nand_ids.c +index 6e41902be35f..d64adbd1ce6b 100644 +--- a/drivers/mtd/nand/raw/nand_ids.c ++++ b/drivers/mtd/nand/raw/nand_ids.c +@@ -29,6 +29,9 @@ struct nand_flash_dev nand_flash_ids[] = { + {"TC58NVG0S3E 1G 3.3V 8-bit", + { .id = {0x98, 0xd1, 0x90, 0x15, 0x76, 0x14, 0x01, 0x00} }, + SZ_2K, SZ_128, SZ_128K, 0, 8, 64, NAND_ECC_INFO(1, SZ_512), }, ++ {"TC58NVG0S3HTA00 1G 3.3V 8-bit", ++ { .id = {0x98, 0xf1, 0x80, 0x15} }, ++ SZ_2K, SZ_128, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512), }, + {"TC58NVG2S0F 4G 3.3V 8-bit", + { .id = {0x98, 0xdc, 0x90, 0x26, 0x76, 0x15, 0x01, 0x08} }, + SZ_4K, SZ_512, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) }, +-- +2.35.1 + From f167f4a9a42e6d1e186487883500299cc82b1b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20B=C3=B6hler?= Date: Sun, 15 May 2022 10:50:31 +0200 Subject: [PATCH 21/29] IPQ4019: AVM FRITZ!Box 7530: Remove NAND ECC restrictions from DTS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some revisions of the FRITZ!7530 use a Toshiba NAND with 8 bit ECC in contrast to the Macronix NAND with 4 bit ECC. This removes the hardcoded ECC strength and step size as set in qcom-ipq4019.dtsi, thus relying on the kernel NAND detection routines to correclty set up the ECC parameters. Signed-off-by: Andreas Böhler --- .../files/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts index dcd336e712..27c7d071dc 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts @@ -173,6 +173,9 @@ status = "okay"; nand@0 { + /delete-property/ nand-ecc-strength; + /delete-property/ nand-ecc-step-size; + partitions { compatible = "fixed-partitions"; #address-cells = <1>; From 73c1fe2890baa5c0bfa46f53c5387f5e47de1acb Mon Sep 17 00:00:00 2001 From: Eneas U de Queiroz Date: Tue, 10 May 2022 16:39:11 -0300 Subject: [PATCH 22/29] wolfssl: bump to v5.3.0-stable This is mostly a bug fix release, including two that were already patched here: - 300-fix-SSL_get_verify_result-regression.patch - 400-wolfcrypt-src-port-devcrypto-devcrypto_aes.c-remove-.patch Signed-off-by: Eneas U de Queiroz --- package/libs/wolfssl/Makefile | 4 ++-- ...fix-SSL_get_verify_result-regression.patch | 24 ------------------- ...rt-devcrypto-devcrypto_aes.c-remove-.patch | 19 --------------- 3 files changed, 2 insertions(+), 45 deletions(-) delete mode 100644 package/libs/wolfssl/patches/300-fix-SSL_get_verify_result-regression.patch delete mode 100644 package/libs/wolfssl/patches/400-wolfcrypt-src-port-devcrypto-devcrypto_aes.c-remove-.patch diff --git a/package/libs/wolfssl/Makefile b/package/libs/wolfssl/Makefile index 5cd2501f2d..cfd65b4a69 100644 --- a/package/libs/wolfssl/Makefile +++ b/package/libs/wolfssl/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=wolfssl -PKG_VERSION:=5.2.0-stable +PKG_VERSION:=5.3.0-stable PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION) -PKG_HASH:=409b4646c5f54f642de0e9f3544c3b83de7238134f5b1ff93fb44527bf119d05 +PKG_HASH:=1a3bb310dc01d3e73d9ad91b6ea8249d081016f8eef4ae8f21d3421f91ef1de9 PKG_FIXUP:=libtool libtool-abiver PKG_INSTALL:=1 diff --git a/package/libs/wolfssl/patches/300-fix-SSL_get_verify_result-regression.patch b/package/libs/wolfssl/patches/300-fix-SSL_get_verify_result-regression.patch deleted file mode 100644 index d6e7998744..0000000000 --- a/package/libs/wolfssl/patches/300-fix-SSL_get_verify_result-regression.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 87e43dd63ba429297e439f2dfd1ee8b45981e18b Mon Sep 17 00:00:00 2001 -From: Juliusz Sosinowicz -Date: Sat, 12 Feb 2022 00:34:24 +0100 -Subject: [PATCH] Reported in ZD13631 - -`ssl->peerVerifyRet` wasn't being cleared when retrying with an alternative cert chain - -References: https://github.com/wolfSSL/wolfssl/issues/4879 ---- - src/internal.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/src/internal.c -+++ b/src/internal.c -@@ -12342,6 +12342,9 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* - } - - ret = 0; /* clear errors and continue */ -+ #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -+ ssl->peerVerifyRet = 0; -+ #endif - args->verifyErr = 0; - } - diff --git a/package/libs/wolfssl/patches/400-wolfcrypt-src-port-devcrypto-devcrypto_aes.c-remove-.patch b/package/libs/wolfssl/patches/400-wolfcrypt-src-port-devcrypto-devcrypto_aes.c-remove-.patch deleted file mode 100644 index 3c0c0a07af..0000000000 --- a/package/libs/wolfssl/patches/400-wolfcrypt-src-port-devcrypto-devcrypto_aes.c-remove-.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 096889927d9528d4fbeb3aab56d1fe8225d2e7ec Mon Sep 17 00:00:00 2001 -From: Daniel Pouzzner -Date: Thu, 14 Apr 2022 20:23:31 -0500 -Subject: [PATCH] wolfcrypt/src/port/devcrypto/devcrypto_aes.c: remove - redundant "int ret" in wc_AesCtrEncrypt() (supersedes #5052). - - -diff --git a/wolfcrypt/src/port/devcrypto/devcrypto_aes.c b/wolfcrypt/src/port/devcrypto/devcrypto_aes.c -index 3bc1d5bb1..28e145e27 100644 ---- a/wolfcrypt/src/port/devcrypto/devcrypto_aes.c -+++ b/wolfcrypt/src/port/devcrypto/devcrypto_aes.c -@@ -208,7 +208,6 @@ int wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) - int ret; - struct crypt_op crt; - byte* tmp; -- int ret; - - if (aes == NULL || out == NULL || in == NULL) { - return BAD_FUNC_ARG; From 771ea6f2e3868b208b5261ae676160d5ef6544e8 Mon Sep 17 00:00:00 2001 From: Tamas Balogh Date: Sun, 1 May 2022 09:45:19 +0200 Subject: [PATCH 23/29] ramips: add led_source for Asus RT-AC1200 devices this adds the mediatek,led_source dts binding for Asus RT-AC1200 devices' dtsi, for correct switch LED behavior. The dts-binding is introduced in commit: 65dc9e0980255b15402c45b840f239b85be59b3d Without this, we only have constantly very fast blinking LEDs, which don't react on any traffic or LAN events at all. Signed-off-by: Tamas Balogh --- target/linux/ramips/dts/mt7628an_asus_rt-ac1200.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/ramips/dts/mt7628an_asus_rt-ac1200.dtsi b/target/linux/ramips/dts/mt7628an_asus_rt-ac1200.dtsi index d8d4245447..dbba801425 100644 --- a/target/linux/ramips/dts/mt7628an_asus_rt-ac1200.dtsi +++ b/target/linux/ramips/dts/mt7628an_asus_rt-ac1200.dtsi @@ -111,6 +111,7 @@ &esw { mediatek,portmap = <0x3e>; + mediatek,led_source = <4>; }; &wmac { From 9ee6ac00c43cc253ac554495edb6214563ab1f31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20B=C3=B6hler?= Date: Mon, 22 Mar 2021 01:01:44 +0100 Subject: [PATCH 24/29] ramips: Add support for SERCOMM NA502S MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The SERCOMM NA502s is a smart home gateway manufactured by SERCOMM and sold under different brands (among others, A1 Telekom Austria SmartHome Premium Gateway). It has multi-protocol radio support in addition to LAN and WiFi. Note: BLE and audio are currently unsupported. Specifications -------------- - MT7621ST 880MHz, Single-Core, Dual-Thread - MT7603EN 2.4GHz WiFi - MT7662EN 5GHz WiFi + BLE - 128MiB NAND - 256MiB DDR3 RAM - SD3503 ZWave Controller - EM357 Zigbee Coordinator - Telit UMTS module - Rechargeable battery - speaker and microphone MAC address assignment ---------------------- LAN MAC is read from the config partition, WiFi 2.4GHz is LAN+2 and matches the OEM firmware. WiFi 5GHz with LAN+1 is an educated guess since the OEM firmware does not enable 5GHz WiFi. Installation ------------ Attach serial console, then boot the initramfs image via TFTP. Once inside OpenWrt, run sysupgrade -n with the sysupgrade file. Attention: The device has a dual-firmware design. We overwrite kernel2, since kernel1 contains an automatic recovery image. If you get NAND ECC errors and are stuck with bad eraseblocks, try to erase the mtd partition first with mtd unlock ubi mtd erase ubi This should only be needed once. Signed-off-by: Andreas Böhler --- .../ramips/dts/mt7621_sercomm_na502s.dts | 362 ++++++++++++++++++ target/linux/ramips/image/mt7621.mk | 15 + .../mt7621/base-files/etc/board.d/02_network | 1 + .../mt7621/base-files/lib/upgrade/platform.sh | 1 + 4 files changed, 379 insertions(+) create mode 100644 target/linux/ramips/dts/mt7621_sercomm_na502s.dts diff --git a/target/linux/ramips/dts/mt7621_sercomm_na502s.dts b/target/linux/ramips/dts/mt7621_sercomm_na502s.dts new file mode 100644 index 0000000000..dc71dbd050 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_sercomm_na502s.dts @@ -0,0 +1,362 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include "mt7621.dtsi" + +#include +#include + +/ { + compatible = "sercomm,na502s", "mediatek,mt7621-soc"; + model = "SERCOMM NA502S"; + + aliases { + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + }; + + leds { + compatible = "gpio-leds"; + + led_power: power { + label = "green:power"; + gpios = <&gpio 0 GPIO_ACTIVE_LOW>; + }; + + wifi { + label = "green:wifi"; + gpios = <&gpio_expander1 0 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + + zwave { + label = "green:zwave"; + gpios = <&gpio_expander1 1 GPIO_ACTIVE_LOW>; + }; + + zigbee { + label = "green:zigbee"; + gpios = <&gpio_expander1 2 GPIO_ACTIVE_LOW>; + }; + + bluetooth { + label = "green:bluetooth"; + gpios = <&gpio_expander1 3 GPIO_ACTIVE_LOW>; + }; + + rf433 { + label = "green:rf433"; + gpios = <&gpio_expander1 4 GPIO_ACTIVE_LOW>; + }; + + service { + label = "green:service"; + gpios = <&gpio_expander1 5 GPIO_ACTIVE_LOW>; + }; + + 3g { + label = "green:3g"; + gpios = <&gpio_expander1 6 GPIO_ACTIVE_LOW>; + }; + + voice { + label = "green:voice"; + gpios = <&gpio_expander1 7 GPIO_ACTIVE_LOW>; + }; + }; + + keys { + compatible = "gpio-keys"; + + battery_tamper { + label = "battery_tamper"; + gpios = <&gpio 16 GPIO_ACTIVE_HIGH>; + linux,code = ; + }; + + reset { + label = "reset"; + gpios = <&gpio 28 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + voice { + label = "voice"; + gpios = <&gpio 29 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + select { + label = "select"; + gpios = <&gpio 31 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + sync { + label = "sync"; + gpios = <&gpio 32 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + gpio-export { + compatible = "gpio-export"; + + zwave_reset { + gpio-export,name = "zwave_reset"; + gpio-export,output = <1>; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + }; + + lprf_reset { + gpio-export,name = "lprf_reset"; + gpio-export,output = <1>; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + }; + + charger_detect { + gpio-export,name = "charger_detect"; + gpios = <&gpio 15 GPIO_ACTIVE_HIGH>; + }; + + buzzer { + gpio-export,name = "buzzer"; + gpio-export,output = <0>; + gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; + }; + + 3g_hw_shunt_en { + gpio-export,name = "3g_hw_shunt_en"; + gpio-export,output = <0>; + gpios = <&gpio 22 GPIO_ACTIVE_LOW>; + }; + + 3g_sw_on_off { + gpio-export,name = "3g_sw_on_off"; + gpio-export,output = <1>; + gpios = <&gpio 23 GPIO_ACTIVE_LOW>; + }; + + 3g_wake_up { + gpio-export,name = "3g_wake_up"; + gpio-export,output = <0>; + gpios = <&gpio 30 GPIO_ACTIVE_LOW>; + }; + + 3g_hw_reset { + gpio-export,name = "3g_hw_reset"; + gpio-export,output = <1>; + gpios = <&gpio 33 GPIO_ACTIVE_LOW>; + }; + + zigbee_reset { + gpio-export,name = "zigbee_reset"; + gpio-export,output = <1>; + gpios = <&gpio_expander0 0 GPIO_ACTIVE_LOW>; + }; + + zigbee_boot { + gpio-export,name = "zigbee_boot"; + gpio-export,output = <1>; + gpios = <&gpio_expander0 1 GPIO_ACTIVE_LOW>; + }; + + 2g_sw0 { + gpio-export,name = "2g_sw0"; + gpio-export,output = <1>; + gpios = <&gpio_expander0 2 GPIO_ACTIVE_LOW>; + }; + + 2g_sw1 { + gpio-export,name = "2g_sw1"; + gpio-export,output = <1>; + gpios = <&gpio_expander0 3 GPIO_ACTIVE_LOW>; + }; + + fm2018_pwd { + gpio-export,name = "fm2018_pwd"; + gpio-export,output = <1>; + gpios = <&gpio_expander0 4 GPIO_ACTIVE_LOW>; + }; + + fm2018_reset { + gpio-export,name = "fm2018_reset"; + gpio-export,output = <1>; + gpios = <&gpio_expander0 5 GPIO_ACTIVE_LOW>; + }; + + batt_teset { + gpio-export,name = "batt_test"; + gpio-export,output = <1>; + gpios = <&gpio_expander0 6 GPIO_ACTIVE_LOW>; + }; + + mfi_reset { + gpio-export,name = "mfi_reset"; + gpio-export,output = <1>; + gpios = <&gpio_expander0 7 GPIO_ACTIVE_LOW>; + }; + }; +}; + +ðernet { + pinctrl-0 = <&mdio_pins>, <&rgmii1_pins>; +}; + +&gmac0 { + nvmem-cells = <&macaddr_factory_e000>; + nvmem-cell-names = "mac-address"; +}; + +&nand { + status = "okay"; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x80000>; + read-only; + }; + + partition@80000 { + label = "config"; + reg = <0x80000 0x80000>; + read-only; + }; + + factory: partition@100000 { + label = "factory"; + reg = <0x100000 0x40000>; + }; + + partition@140000 { + label = "kernel1"; + reg = <0x140000 0x1400000>; + }; + + partition@1540000 { + label = "kernel"; + reg = <0x1540000 0x400000>; + }; + + partition@1940000 { + label = "ubi"; + reg = <0x1940000 0x1000000>; + }; + + partition@2940000 { + label = "user_storage"; + reg = <0x2940000 0x100000>; + }; + + partition@2a40000 { + label = "data"; + reg = <0x2a40000 0x1000000>; + }; + + partition@3a40000 { + label = "storage"; + reg = <0x3a40000 0x3200000>; + }; + + partition@6c40000 { + label = "backup"; + reg = <0x6c40000 0x1340000>; + }; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x8000>; + nvmem-cells = <&macaddr_factory_e000>; + nvmem-cell-names = "mac-address"; + mac-address-increment = <1>; + ieee80211-freq-limit = <5000000 6000000>; + }; +}; + +&pcie1 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x0000>; + nvmem-cells = <&macaddr_factory_e000>; + nvmem-cell-names = "mac-address"; + mac-address-increment = <2>; + ieee80211-freq-limit = <2400000 2500000>; + }; +}; + +&state_default { + gpio { + groups = "jtag", "rgmii2"; + function = "gpio"; + }; +}; + +&i2c { + status = "okay"; + + /* This GPIO expander is fake. The kernel fails to initialize the + first expander, but succeeds on the second (real) one */ + gpio_expander2: gpio-expander2@22 { + #gpio-cells = <2>; + #interrupt-cells = <2>; + compatible = "semtech,sx1502q"; + reg = <0x22>; + + gpio-controller; + }; + + gpio_expander0: gpio-expander0@20 { + #gpio-cells = <2>; + #interrupt-cells = <2>; + compatible = "semtech,sx1502q"; + reg = <0x20>; + + gpio-controller; + }; + + gpio_expander1: gpio-expander1@21 { + #gpio-cells = <2>; + #interrupt-cells = <2>; + compatible = "semtech,sx1502q"; + reg = <0x21>; + + gpio-controller; + }; +}; + +&switch0 { + ports { + port@4 { + status = "okay"; + label = "lan"; + }; + }; +}; + +&uartlite2 { + status = "okay"; +}; + +&factory { + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_factory_e000: macaddr@e000 { + reg = <0xe000 0x6>; + }; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 6a9531aa8c..a485a5043a 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -1485,6 +1485,21 @@ define Device/sercomm_na502 endef TARGET_DEVICES += sercomm_na502 +define Device/sercomm_na502s + $(Device/uimage-lzma-loader) + BLOCKSIZE := 128k + PAGESIZE := 2048 + IMAGE_SIZE := 20971520 + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata + UBINIZE_OPTS := -E 5 + KERNEL_SIZE := 4096k + DEVICE_VENDOR := SERCOMM + DEVICE_MODEL := NA502S + DEVICE_PACKAGES := kmod-mt76x2 kmod-mt7603 kmod-usb3 kmod-usb-serial \ + kmod-usb-serial-xr_usb_serial_common +endef +TARGET_DEVICES += sercomm_na502s + define Device/storylink_sap-g3200u3 $(Device/dsa-migration) IMAGE_SIZE := 7872k diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network index 688c39940d..a8d8b8eef2 100644 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network @@ -13,6 +13,7 @@ ramips_setup_interfaces() mikrotik,routerboard-m11g|\ netgear,ex6150|\ sercomm,na502|\ + sercomm,na502s|\ thunder,timecloud|\ tplink,re350-v1|\ tplink,re500-v1|\ diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh index c818c7e7cc..407611a6a2 100755 --- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh @@ -84,6 +84,7 @@ platform_do_upgrade() { netis,wf2881|\ raisecom,msg1500-x-00|\ sercomm,na502|\ + sercomm,na502s|\ xiaomi,mi-router-3g|\ xiaomi,mi-router-3-pro|\ xiaomi,mi-router-4|\ From 8592df67f40b3afdee68e36dc3820187ec0f98fc Mon Sep 17 00:00:00 2001 From: John Audia Date: Mon, 9 May 2022 04:07:21 -0400 Subject: [PATCH 25/29] kernel: bump 5.10 to 5.10.114 All patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B Run-tested: bcm2711/RPi4B Signed-off-by: John Audia --- include/kernel-5.10 | 4 ++-- .../802-usb-xhci-force-msi-renesas-xhci.patch | 2 +- .../patches-5.10/910-unaligned_access_hacks.patch | 8 ++++---- ...bcmgenet-Better-coalescing-parameter-defaults.patch | 4 ++-- ...plement-xhci_fixup_endpoint-for-interval-adju.patch | 4 ++-- ...t-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch | 2 +- ...50-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch | 8 ++++---- ...0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch | 2 +- ...i-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch | 2 +- ...net-pass-the-dst-buffer-to-of_get_mac_address.patch | 2 +- .../hack-5.10/780-usb-net-MeigLink_modem_support.patch | 2 +- .../pending-5.10/400-mtd-mtdsplit-support.patch | 4 ++-- .../495-mtd-core-add-get_mtd_device_by_node.patch | 2 +- ...-lantiq-allow-to-use-all-GPHYs-on-xRX300-and-.patch | 10 +++++----- ...v5.18-net-lantiq-enable-jumbo-frames-on-GSWIP.patch | 4 ++-- ...-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch | 2 +- .../712-net-phy-sfp-add-support-for-SMBus.patch | 2 +- 17 files changed, 32 insertions(+), 32 deletions(-) diff --git a/include/kernel-5.10 b/include/kernel-5.10 index eff17db834..98ccfc1f16 100644 --- a/include/kernel-5.10 +++ b/include/kernel-5.10 @@ -1,2 +1,2 @@ -LINUX_VERSION-5.10 = .113 -LINUX_KERNEL_HASH-5.10.113 = 82516a02bb52456f6e8057217dde6e02b78003b1e058117557c2ae9661696dfc +LINUX_VERSION-5.10 = .114 +LINUX_KERNEL_HASH-5.10.114 = 07d09fb57ce355f4659097e6b538853c00cdded6d3e010b6de9a3244d9b30526 diff --git a/target/linux/apm821xx/patches-5.10/802-usb-xhci-force-msi-renesas-xhci.patch b/target/linux/apm821xx/patches-5.10/802-usb-xhci-force-msi-renesas-xhci.patch index 5628148b38..5357869133 100644 --- a/target/linux/apm821xx/patches-5.10/802-usb-xhci-force-msi-renesas-xhci.patch +++ b/target/linux/apm821xx/patches-5.10/802-usb-xhci-force-msi-renesas-xhci.patch @@ -13,7 +13,7 @@ produce a noisy warning. --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -279,6 +279,7 @@ static void xhci_pci_quirks(struct devic +@@ -281,6 +281,7 @@ static void xhci_pci_quirks(struct devic pdev->device == 0x0015) { xhci->quirks |= XHCI_RESET_ON_RESUME; xhci->quirks |= XHCI_ZERO_64B_REGS; diff --git a/target/linux/ath79/patches-5.10/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-5.10/910-unaligned_access_hacks.patch index 4a85701b0c..f2f48d6543 100644 --- a/target/linux/ath79/patches-5.10/910-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-5.10/910-unaligned_access_hacks.patch @@ -305,7 +305,7 @@ list_for_each_entry(p, head, list) { --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c -@@ -611,48 +611,53 @@ static void tcp_options_write(__be32 *pt +@@ -612,48 +612,53 @@ static void tcp_options_write(__be32 *pt u16 options = opts->options; /* mungable copy */ if (unlikely(OPTION_MD5 & options)) { @@ -382,7 +382,7 @@ } if (unlikely(opts->num_sack_blocks)) { -@@ -660,16 +665,17 @@ static void tcp_options_write(__be32 *pt +@@ -661,16 +666,17 @@ static void tcp_options_write(__be32 *pt tp->duplicate_sack : tp->selective_acks; int this_sack; @@ -406,7 +406,7 @@ } tp->rx_opt.dsack = 0; -@@ -682,13 +688,14 @@ static void tcp_options_write(__be32 *pt +@@ -683,13 +689,14 @@ static void tcp_options_write(__be32 *pt if (foc->exp) { len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len; @@ -706,7 +706,7 @@ EXPORT_SYMBOL(xfrm_parse_spi); --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -4083,14 +4083,16 @@ static bool tcp_parse_aligned_timestamp( +@@ -4084,14 +4084,16 @@ static bool tcp_parse_aligned_timestamp( { const __be32 *ptr = (const __be32 *)(th + 1); diff --git a/target/linux/bcm27xx/patches-5.10/950-0131-bcmgenet-Better-coalescing-parameter-defaults.patch b/target/linux/bcm27xx/patches-5.10/950-0131-bcmgenet-Better-coalescing-parameter-defaults.patch index 97fc9183fb..aff40872a0 100644 --- a/target/linux/bcm27xx/patches-5.10/950-0131-bcmgenet-Better-coalescing-parameter-defaults.patch +++ b/target/linux/bcm27xx/patches-5.10/950-0131-bcmgenet-Better-coalescing-parameter-defaults.patch @@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -2597,7 +2597,7 @@ static void bcmgenet_init_tx_ring(struct +@@ -2604,7 +2604,7 @@ static void bcmgenet_init_tx_ring(struct bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX); bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX); @@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell /* Disable rate control for now */ bcmgenet_tdma_ring_writel(priv, index, flow_period_val, TDMA_FLOW_PERIOD); -@@ -4062,9 +4062,12 @@ static int bcmgenet_probe(struct platfor +@@ -4069,9 +4069,12 @@ static int bcmgenet_probe(struct platfor netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1); /* Set default coalescing parameters */ diff --git a/target/linux/bcm27xx/patches-5.10/950-0139-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch b/target/linux/bcm27xx/patches-5.10/950-0139-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch index 12cd1072db..01ede9c5c1 100644 --- a/target/linux/bcm27xx/patches-5.10/950-0139-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch +++ b/target/linux/bcm27xx/patches-5.10/950-0139-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch @@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -1472,6 +1472,103 @@ command_cleanup: +@@ -1483,6 +1483,103 @@ command_cleanup: } /* @@ -119,7 +119,7 @@ Signed-off-by: Jonathan Bell * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it */ -@@ -5378,6 +5475,7 @@ static const struct hc_driver xhci_hc_dr +@@ -5389,6 +5486,7 @@ static const struct hc_driver xhci_hc_dr .endpoint_reset = xhci_endpoint_reset, .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, diff --git a/target/linux/bcm27xx/patches-5.10/950-0153-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch b/target/linux/bcm27xx/patches-5.10/950-0153-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch index 5dd12974fb..ba0c0631cd 100644 --- a/target/linux/bcm27xx/patches-5.10/950-0153-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch +++ b/target/linux/bcm27xx/patches-5.10/950-0153-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch @@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell static inline void bcmgenet_writel(u32 value, void __iomem *offset) { -@@ -2428,6 +2431,11 @@ static void reset_umac(struct bcmgenet_p +@@ -2435,6 +2438,11 @@ static void reset_umac(struct bcmgenet_p bcmgenet_rbuf_ctrl_set(priv, 0); udelay(10); diff --git a/target/linux/bcm27xx/patches-5.10/950-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch b/target/linux/bcm27xx/patches-5.10/950-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch index 184804ad50..45a1912ccd 100644 --- a/target/linux/bcm27xx/patches-5.10/950-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch +++ b/target/linux/bcm27xx/patches-5.10/950-0334-net-bcmgenet-Reset-RBUF-on-first-open.patch @@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -3246,7 +3246,7 @@ static void bcmgenet_get_hw_addr(struct +@@ -3253,7 +3253,7 @@ static void bcmgenet_get_hw_addr(struct } /* Returns a reusable dma control register value */ @@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell { unsigned int i; u32 reg; -@@ -3271,6 +3271,14 @@ static u32 bcmgenet_dma_disable(struct b +@@ -3278,6 +3278,14 @@ static u32 bcmgenet_dma_disable(struct b udelay(10); bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH); @@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell return dma_ctrl; } -@@ -3334,8 +3342,8 @@ static int bcmgenet_open(struct net_devi +@@ -3341,8 +3349,8 @@ static int bcmgenet_open(struct net_devi bcmgenet_set_hw_addr(priv, dev->dev_addr); @@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell /* Reinitialize TDMA and RDMA and SW housekeeping */ ret = bcmgenet_init_dma(priv); -@@ -4191,7 +4199,7 @@ static int bcmgenet_resume(struct device +@@ -4198,7 +4206,7 @@ static int bcmgenet_resume(struct device bcmgenet_hfb_create_rxnfc_filter(priv, rule); /* Disable RX/TX DMA and flush TX queues */ diff --git a/target/linux/bcm27xx/patches-5.10/950-0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/target/linux/bcm27xx/patches-5.10/950-0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch index 0b7191f93a..bc2639ae4a 100644 --- a/target/linux/bcm27xx/patches-5.10/950-0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch +++ b/target/linux/bcm27xx/patches-5.10/950-0355-xhci-quirks-add-link-TRB-quirk-for-VL805.patch @@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -291,6 +291,7 @@ static void xhci_pci_quirks(struct devic +@@ -293,6 +293,7 @@ static void xhci_pci_quirks(struct devic if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; diff --git a/target/linux/bcm27xx/patches-5.10/950-0733-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch b/target/linux/bcm27xx/patches-5.10/950-0733-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch index c0a4caad4b..4c61ee0bae 100644 --- a/target/linux/bcm27xx/patches-5.10/950-0733-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch +++ b/target/linux/bcm27xx/patches-5.10/950-0733-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch @@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -4268,9 +4268,9 @@ void xhci_queue_new_dequeue_state(struct +@@ -4270,9 +4270,9 @@ void xhci_queue_new_dequeue_state(struct } ep = &xhci->devs[slot_id]->eps[ep_index]; if ((ep->ep_state & SET_DEQ_PENDING)) { diff --git a/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch b/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch index 42c16034e4..bc7b2b3b10 100644 --- a/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch +++ b/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch @@ -1294,7 +1294,7 @@ Signed-off-by: David S. Miller --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c -@@ -395,7 +395,7 @@ static int socfpga_dwmac_probe(struct pl +@@ -397,7 +397,7 @@ static int socfpga_dwmac_probe(struct pl if (ret) return ret; diff --git a/target/linux/generic/hack-5.10/780-usb-net-MeigLink_modem_support.patch b/target/linux/generic/hack-5.10/780-usb-net-MeigLink_modem_support.patch index cb6f46760b..e55f2c0086 100644 --- a/target/linux/generic/hack-5.10/780-usb-net-MeigLink_modem_support.patch +++ b/target/linux/generic/hack-5.10/780-usb-net-MeigLink_modem_support.patch @@ -19,7 +19,7 @@ #define QUECTEL_VENDOR_ID 0x2c7c /* These Quectel products use Quectel's vendor ID */ -@@ -1127,6 +1129,11 @@ static const struct usb_device_id option +@@ -1129,6 +1131,11 @@ static const struct usb_device_id option { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) }, { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), .driver_info = RSVD(4) }, diff --git a/target/linux/generic/pending-5.10/400-mtd-mtdsplit-support.patch b/target/linux/generic/pending-5.10/400-mtd-mtdsplit-support.patch index 6f816a6ad3..42043a2818 100644 --- a/target/linux/generic/pending-5.10/400-mtd-mtdsplit-support.patch +++ b/target/linux/generic/pending-5.10/400-mtd-mtdsplit-support.patch @@ -272,7 +272,7 @@ obj-$(CONFIG_MTD_BLOCK) += mtdblock.o --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h -@@ -608,6 +608,24 @@ static inline void mtd_align_erase_req(s +@@ -606,6 +606,24 @@ static inline void mtd_align_erase_req(s req->len += mtd->erasesize - mod; } @@ -297,7 +297,7 @@ static inline uint32_t mtd_div_by_ws(uint64_t sz, struct mtd_info *mtd) { if (mtd->writesize_shift) -@@ -680,6 +698,13 @@ extern void __put_mtd_device(struct mtd_ +@@ -678,6 +696,13 @@ extern void __put_mtd_device(struct mtd_ extern struct mtd_info *get_mtd_device_nm(const char *name); extern void put_mtd_device(struct mtd_info *mtd); diff --git a/target/linux/generic/pending-5.10/495-mtd-core-add-get_mtd_device_by_node.patch b/target/linux/generic/pending-5.10/495-mtd-core-add-get_mtd_device_by_node.patch index d5db5fdd54..22c3ba56d4 100644 --- a/target/linux/generic/pending-5.10/495-mtd-core-add-get_mtd_device_by_node.patch +++ b/target/linux/generic/pending-5.10/495-mtd-core-add-get_mtd_device_by_node.patch @@ -64,7 +64,7 @@ Reviewed-by: Miquel Raynal mutex_lock(&mtd_table_mutex); --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h -@@ -698,6 +698,8 @@ extern struct mtd_info *get_mtd_device(s +@@ -696,6 +696,8 @@ extern struct mtd_info *get_mtd_device(s extern int __get_mtd_device(struct mtd_info *mtd); extern void __put_mtd_device(struct mtd_info *mtd); extern struct mtd_info *get_mtd_device_nm(const char *name); diff --git a/target/linux/lantiq/patches-5.10/0705-v5.13-net-dsa-lantiq-allow-to-use-all-GPHYs-on-xRX300-and-.patch b/target/linux/lantiq/patches-5.10/0705-v5.13-net-dsa-lantiq-allow-to-use-all-GPHYs-on-xRX300-and-.patch index c0911ef874..7d68c59199 100644 --- a/target/linux/lantiq/patches-5.10/0705-v5.13-net-dsa-lantiq-allow-to-use-all-GPHYs-on-xRX300-and-.patch +++ b/target/linux/lantiq/patches-5.10/0705-v5.13-net-dsa-lantiq-allow-to-use-all-GPHYs-on-xRX300-and-.patch @@ -192,7 +192,7 @@ Signed-off-by: David S. Miller } static void gswip_port_set_link(struct gswip_priv *priv, int port, bool link) -@@ -1639,6 +1687,9 @@ static void gswip_phylink_mac_config(str +@@ -1636,6 +1684,9 @@ static void gswip_phylink_mac_config(str case PHY_INTERFACE_MODE_RGMII_TXID: miicfg |= GSWIP_MII_CFG_MODE_RGMII; break; @@ -202,7 +202,7 @@ Signed-off-by: David S. Miller default: dev_err(ds->dev, "Unsupported interface: %d\n", state->interface); -@@ -1765,7 +1816,7 @@ static int gswip_get_sset_count(struct d +@@ -1762,7 +1813,7 @@ static int gswip_get_sset_count(struct d return ARRAY_SIZE(gswip_rmon_cnt); } @@ -211,7 +211,7 @@ Signed-off-by: David S. Miller .get_tag_protocol = gswip_get_tag_protocol, .setup = gswip_setup, .port_enable = gswip_port_enable, -@@ -1781,7 +1832,31 @@ static const struct dsa_switch_ops gswip +@@ -1778,7 +1829,31 @@ static const struct dsa_switch_ops gswip .port_fdb_add = gswip_port_fdb_add, .port_fdb_del = gswip_port_fdb_del, .port_fdb_dump = gswip_port_fdb_dump, @@ -244,7 +244,7 @@ Signed-off-by: David S. Miller .phylink_mac_config = gswip_phylink_mac_config, .phylink_mac_link_down = gswip_phylink_mac_link_down, .phylink_mac_link_up = gswip_phylink_mac_link_up, -@@ -2043,7 +2118,7 @@ static int gswip_probe(struct platform_d +@@ -2040,7 +2115,7 @@ static int gswip_probe(struct platform_d priv->ds->dev = dev; priv->ds->num_ports = priv->hw_info->max_ports; priv->ds->priv = priv; @@ -253,7 +253,7 @@ Signed-off-by: David S. Miller priv->dev = dev; version = gswip_switch_r(priv, GSWIP_VERSION); -@@ -2127,10 +2202,19 @@ static int gswip_remove(struct platform_ +@@ -2124,10 +2199,19 @@ static int gswip_remove(struct platform_ static const struct gswip_hw_info gswip_xrx200 = { .max_ports = 7, .cpu_port = 6, diff --git a/target/linux/lantiq/patches-5.10/0706-v5.18-net-lantiq-enable-jumbo-frames-on-GSWIP.patch b/target/linux/lantiq/patches-5.10/0706-v5.18-net-lantiq-enable-jumbo-frames-on-GSWIP.patch index 9d96883910..49a19bebee 100644 --- a/target/linux/lantiq/patches-5.10/0706-v5.18-net-lantiq-enable-jumbo-frames-on-GSWIP.patch +++ b/target/linux/lantiq/patches-5.10/0706-v5.18-net-lantiq-enable-jumbo-frames-on-GSWIP.patch @@ -107,7 +107,7 @@ Signed-off-by: Jakub Kicinski static void gswip_xrx200_phylink_validate(struct dsa_switch *ds, int port, unsigned long *supported, struct phylink_link_state *state) -@@ -1832,6 +1873,8 @@ static const struct dsa_switch_ops gswip +@@ -1829,6 +1870,8 @@ static const struct dsa_switch_ops gswip .port_fdb_add = gswip_port_fdb_add, .port_fdb_del = gswip_port_fdb_del, .port_fdb_dump = gswip_port_fdb_dump, @@ -116,7 +116,7 @@ Signed-off-by: Jakub Kicinski .phylink_validate = gswip_xrx200_phylink_validate, .phylink_mac_config = gswip_phylink_mac_config, .phylink_mac_link_down = gswip_phylink_mac_link_down, -@@ -1856,6 +1899,8 @@ static const struct dsa_switch_ops gswip +@@ -1853,6 +1896,8 @@ static const struct dsa_switch_ops gswip .port_fdb_add = gswip_port_fdb_add, .port_fdb_del = gswip_port_fdb_del, .port_fdb_dump = gswip_port_fdb_dump, diff --git a/target/linux/realtek/patches-5.10/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch b/target/linux/realtek/patches-5.10/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch index 591cdbf159..248abee39b 100644 --- a/target/linux/realtek/patches-5.10/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch +++ b/target/linux/realtek/patches-5.10/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch @@ -10,7 +10,7 @@ Signed-off-by: Antoine Tenart --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -1959,6 +1959,13 @@ static void sfp_sm_module(struct sfp *sf +@@ -1966,6 +1966,13 @@ static void sfp_sm_module(struct sfp *sf return; } diff --git a/target/linux/realtek/patches-5.10/712-net-phy-sfp-add-support-for-SMBus.patch b/target/linux/realtek/patches-5.10/712-net-phy-sfp-add-support-for-SMBus.patch index 8eef1885ab..c4bacc0ea9 100644 --- a/target/linux/realtek/patches-5.10/712-net-phy-sfp-add-support-for-SMBus.patch +++ b/target/linux/realtek/patches-5.10/712-net-phy-sfp-add-support-for-SMBus.patch @@ -10,7 +10,7 @@ Signed-off-by: Antoine Tenart --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -412,32 +412,72 @@ static int sfp_i2c_write(struct sfp *sfp +@@ -413,32 +413,72 @@ static int sfp_i2c_write(struct sfp *sfp return ret == ARRAY_SIZE(msgs) ? len : 0; } From b754b0c721131005efa7127151088e9c23dc9053 Mon Sep 17 00:00:00 2001 From: John Audia Date: Thu, 12 May 2022 13:04:51 -0400 Subject: [PATCH 26/29] kernel: bump 5.10 to 5.10.115 Removed upstreamed: backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch All other patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B Signed-off-by: John Audia --- include/kernel-5.10 | 4 +- ...-mt7530-MT7530-optional-GPIO-support.patch | 2 +- ...-mt7530-Add-support-for-EEE-features.patch | 6 +- ...the-dst-buffer-to-of_get_mac_address.patch | 10 ++-- ...1-net-dsa-mt7530-support-setting-MTU.patch | 2 +- ...-dsa-mt7530-enable-MTU-normalization.patch | 2 +- ...a-mt7530-support-setting-ageing-time.patch | 2 +- ...et-dsa-mt7530-support-MDB-operations.patch | 2 +- ...net-dsa-mt7530-add-interrupt-support.patch | 6 +- ...-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch | 6 +- ...PCI-aardvark-Clear-all-MSIs-at-setup.patch | 59 ------------------- ...ment-actions-in-driver-remove-method.patch | 2 +- ...able-bus-mastering-when-unbinding-dr.patch | 4 +- ...k-all-interrupts-when-unbinding-driv.patch | 2 +- ...ark-Fix-memory-leak-in-driver-unbind.patch | 2 +- ...k-Assert-PERST-when-unbinding-driver.patch | 2 +- ...able-link-training-when-unbinding-dr.patch | 2 +- ...able-common-PHY-when-unbinding-drive.patch | 2 +- ...ark-Fix-reading-MSI-interrupt-number.patch | 57 ------------------ ...rite-IRQ-code-to-chained-IRQ-handler.patch | 10 ++-- ...ck-return-value-of-generic_handle_do.patch | 2 +- ...-support-for-ERR-interrupt-on-emulat.patch | 2 +- ...dvark-Add-support-for-PME-interrupts.patch | 2 +- ...-support-for-PME-requester-on-emulat.patch | 2 +- ...-separate-INTA-interrupt-for-emulate.patch | 8 +-- ...p-__maybe_unused-from-advk_pcie_disa.patch | 2 +- ...ark-Fix-initialization-with-old-Marv.patch | 2 +- ...msm-use-sdhci_set_clock-instead-of-s.patch | 2 +- 28 files changed, 45 insertions(+), 161 deletions(-) delete mode 100644 target/linux/generic/backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch delete mode 100644 target/linux/generic/pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch diff --git a/include/kernel-5.10 b/include/kernel-5.10 index 98ccfc1f16..405640f695 100644 --- a/include/kernel-5.10 +++ b/include/kernel-5.10 @@ -1,2 +1,2 @@ -LINUX_VERSION-5.10 = .114 -LINUX_KERNEL_HASH-5.10.114 = 07d09fb57ce355f4659097e6b538853c00cdded6d3e010b6de9a3244d9b30526 +LINUX_VERSION-5.10 = .115 +LINUX_KERNEL_HASH-5.10.115 = f5e417b32f89318b6d0a230109a592ffd68997817463dc4692fa49ec7fe42f71 diff --git a/target/linux/generic/backport-5.10/731-v5.12-net-dsa-mt7530-MT7530-optional-GPIO-support.patch b/target/linux/generic/backport-5.10/731-v5.12-net-dsa-mt7530-MT7530-optional-GPIO-support.patch index 9e5047a16b..cf3ccae5bf 100644 --- a/target/linux/generic/backport-5.10/731-v5.12-net-dsa-mt7530-MT7530-optional-GPIO-support.patch +++ b/target/linux/generic/backport-5.10/731-v5.12-net-dsa-mt7530-MT7530-optional-GPIO-support.patch @@ -137,7 +137,7 @@ Signed-off-by: Jakub Kicinski static int mt7530_setup(struct dsa_switch *ds) { -@@ -1675,6 +1779,12 @@ mt7530_setup(struct dsa_switch *ds) +@@ -1676,6 +1780,12 @@ mt7530_setup(struct dsa_switch *ds) } } diff --git a/target/linux/generic/backport-5.10/731-v5.13-net-dsa-mt7530-Add-support-for-EEE-features.patch b/target/linux/generic/backport-5.10/731-v5.13-net-dsa-mt7530-Add-support-for-EEE-features.patch index 38dd8a7296..48379ca9c3 100644 --- a/target/linux/generic/backport-5.10/731-v5.13-net-dsa-mt7530-Add-support-for-EEE-features.patch +++ b/target/linux/generic/backport-5.10/731-v5.13-net-dsa-mt7530-Add-support-for-EEE-features.patch @@ -17,7 +17,7 @@ Signed-off-by: David S. Miller --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c -@@ -2371,6 +2371,17 @@ static void mt753x_phylink_mac_link_up(s +@@ -2372,6 +2372,17 @@ static void mt753x_phylink_mac_link_up(s mcr |= PMCR_RX_FC_EN; } @@ -35,7 +35,7 @@ Signed-off-by: David S. Miller mt7530_set(priv, MT7530_PMCR_P(port), mcr); } -@@ -2601,6 +2612,36 @@ mt753x_phy_write(struct dsa_switch *ds, +@@ -2602,6 +2613,36 @@ mt753x_phy_write(struct dsa_switch *ds, return priv->info->phy_write(ds, port, regnum, val); } @@ -72,7 +72,7 @@ Signed-off-by: David S. Miller static const struct dsa_switch_ops mt7530_switch_ops = { .get_tag_protocol = mtk_get_tag_protocol, .setup = mt753x_setup, -@@ -2629,6 +2670,8 @@ static const struct dsa_switch_ops mt753 +@@ -2630,6 +2671,8 @@ static const struct dsa_switch_ops mt753 .phylink_mac_an_restart = mt753x_phylink_mac_an_restart, .phylink_mac_link_down = mt753x_phylink_mac_link_down, .phylink_mac_link_up = mt753x_phylink_mac_link_up, diff --git a/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch b/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch index bc7b2b3b10..a4a9f5624e 100644 --- a/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch +++ b/target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch @@ -1327,7 +1327,7 @@ Signed-off-by: David S. Miller --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -1202,7 +1202,7 @@ static int sun8i_dwmac_probe(struct plat +@@ -1203,7 +1203,7 @@ static int sun8i_dwmac_probe(struct plat if (ret) return -EINVAL; @@ -1478,7 +1478,7 @@ Signed-off-by: David S. Miller if (ret) --- a/drivers/net/ethernet/ti/cpsw_new.c +++ b/drivers/net/ethernet/ti/cpsw_new.c -@@ -1267,7 +1267,6 @@ static int cpsw_probe_dt(struct cpsw_com +@@ -1269,7 +1269,6 @@ static int cpsw_probe_dt(struct cpsw_com for_each_child_of_node(tmp_node, port_np) { struct cpsw_slave_data *slave_data; @@ -1486,7 +1486,7 @@ Signed-off-by: David S. Miller u32 port_id; ret = of_property_read_u32(port_np, "reg", &port_id); -@@ -1326,10 +1325,8 @@ static int cpsw_probe_dt(struct cpsw_com +@@ -1328,10 +1327,8 @@ static int cpsw_probe_dt(struct cpsw_com goto err_node_put; } @@ -1641,7 +1641,7 @@ Signed-off-by: David S. Miller lp->coalesce_count_tx = XAXIDMA_DFT_TX_THRESHOLD; --- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c +++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c -@@ -1113,7 +1113,6 @@ static int xemaclite_of_probe(struct pla +@@ -1122,7 +1122,6 @@ static int xemaclite_of_probe(struct pla struct net_device *ndev = NULL; struct net_local *lp = NULL; struct device *dev = &ofdev->dev; @@ -1649,7 +1649,7 @@ Signed-off-by: David S. Miller int rc = 0; -@@ -1155,12 +1154,9 @@ static int xemaclite_of_probe(struct pla +@@ -1164,12 +1163,9 @@ static int xemaclite_of_probe(struct pla lp->next_rx_buf_to_use = 0x0; lp->tx_ping_pong = get_bool(ofdev, "xlnx,tx-ping-pong"); lp->rx_ping_pong = get_bool(ofdev, "xlnx,rx-ping-pong"); diff --git a/target/linux/generic/backport-5.10/762-v5.11-net-dsa-mt7530-support-setting-MTU.patch b/target/linux/generic/backport-5.10/762-v5.11-net-dsa-mt7530-support-setting-MTU.patch index eb487cdfb5..7e2b300429 100644 --- a/target/linux/generic/backport-5.10/762-v5.11-net-dsa-mt7530-support-setting-MTU.patch +++ b/target/linux/generic/backport-5.10/762-v5.11-net-dsa-mt7530-support-setting-MTU.patch @@ -73,7 +73,7 @@ Signed-off-by: Jakub Kicinski static void mt7530_stp_state_set(struct dsa_switch *ds, int port, u8 state) { -@@ -2652,6 +2699,8 @@ static const struct dsa_switch_ops mt753 +@@ -2653,6 +2700,8 @@ static const struct dsa_switch_ops mt753 .get_sset_count = mt7530_get_sset_count, .port_enable = mt7530_port_enable, .port_disable = mt7530_port_disable, diff --git a/target/linux/generic/backport-5.10/763-v5.11-net-dsa-mt7530-enable-MTU-normalization.patch b/target/linux/generic/backport-5.10/763-v5.11-net-dsa-mt7530-enable-MTU-normalization.patch index b0ad7b9f87..1c0a80aa78 100644 --- a/target/linux/generic/backport-5.10/763-v5.11-net-dsa-mt7530-enable-MTU-normalization.patch +++ b/target/linux/generic/backport-5.10/763-v5.11-net-dsa-mt7530-enable-MTU-normalization.patch @@ -26,7 +26,7 @@ Signed-off-by: Jakub Kicinski if (priv->id == ID_MT7530) { regulator_set_voltage(priv->core_pwr, 1000000, 1000000); -@@ -1947,6 +1948,7 @@ mt7531_setup(struct dsa_switch *ds) +@@ -1948,6 +1949,7 @@ mt7531_setup(struct dsa_switch *ds) } ds->configure_vlan_while_not_filtering = true; diff --git a/target/linux/generic/backport-5.10/764-v5.11-net-dsa-mt7530-support-setting-ageing-time.patch b/target/linux/generic/backport-5.10/764-v5.11-net-dsa-mt7530-support-setting-ageing-time.patch index 44fa40eabe..c4a51ae639 100644 --- a/target/linux/generic/backport-5.10/764-v5.11-net-dsa-mt7530-support-setting-ageing-time.patch +++ b/target/linux/generic/backport-5.10/764-v5.11-net-dsa-mt7530-support-setting-ageing-time.patch @@ -67,7 +67,7 @@ Signed-off-by: David S. Miller static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface) { struct mt7530_priv *priv = ds->priv; -@@ -2699,6 +2739,7 @@ static const struct dsa_switch_ops mt753 +@@ -2700,6 +2740,7 @@ static const struct dsa_switch_ops mt753 .phy_write = mt753x_phy_write, .get_ethtool_stats = mt7530_get_ethtool_stats, .get_sset_count = mt7530_get_sset_count, diff --git a/target/linux/generic/backport-5.10/770-v5.15-net-dsa-mt7530-support-MDB-operations.patch b/target/linux/generic/backport-5.10/770-v5.15-net-dsa-mt7530-support-MDB-operations.patch index 7143748eee..450fff07a6 100644 --- a/target/linux/generic/backport-5.10/770-v5.15-net-dsa-mt7530-support-MDB-operations.patch +++ b/target/linux/generic/backport-5.10/770-v5.15-net-dsa-mt7530-support-MDB-operations.patch @@ -109,7 +109,7 @@ Signed-off-by: DENG Qingfang mt7530_vlan_cmd(struct mt7530_priv *priv, enum mt7530_vlan_cmd cmd, u16 vid) { struct mt7530_dummy_poll p; -@@ -2745,11 +2813,15 @@ static const struct dsa_switch_ops mt753 +@@ -2746,11 +2814,15 @@ static const struct dsa_switch_ops mt753 .port_change_mtu = mt7530_port_change_mtu, .port_max_mtu = mt7530_port_max_mtu, .port_stp_state_set = mt7530_stp_state_set, diff --git a/target/linux/generic/backport-5.10/772-v5.14-net-dsa-mt7530-add-interrupt-support.patch b/target/linux/generic/backport-5.10/772-v5.14-net-dsa-mt7530-add-interrupt-support.patch index 1ee2e1cac4..337b478fac 100644 --- a/target/linux/generic/backport-5.10/772-v5.14-net-dsa-mt7530-add-interrupt-support.patch +++ b/target/linux/generic/backport-5.10/772-v5.14-net-dsa-mt7530-add-interrupt-support.patch @@ -305,7 +305,7 @@ Signed-off-by: David S. Miller static int mt7530_setup(struct dsa_switch *ds) { -@@ -2749,24 +2964,20 @@ static int +@@ -2750,24 +2965,20 @@ static int mt753x_setup(struct dsa_switch *ds) { struct mt7530_priv *priv = ds->priv; @@ -340,7 +340,7 @@ Signed-off-by: David S. Miller } static int mt753x_get_mac_eee(struct dsa_switch *ds, int port, -@@ -2803,8 +3014,6 @@ static const struct dsa_switch_ops mt753 +@@ -2804,8 +3015,6 @@ static const struct dsa_switch_ops mt753 .get_tag_protocol = mtk_get_tag_protocol, .setup = mt753x_setup, .get_strings = mt7530_get_strings, @@ -349,7 +349,7 @@ Signed-off-by: David S. Miller .get_ethtool_stats = mt7530_get_ethtool_stats, .get_sset_count = mt7530_get_sset_count, .set_ageing_time = mt7530_set_ageing_time, -@@ -2987,6 +3196,9 @@ mt7530_remove(struct mdio_device *mdiode +@@ -2988,6 +3197,9 @@ mt7530_remove(struct mdio_device *mdiode dev_err(priv->dev, "Failed to disable io pwr: %d\n", ret); diff --git a/target/linux/generic/backport-5.10/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch b/target/linux/generic/backport-5.10/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch index 0d50665741..4d1135bf6c 100644 --- a/target/linux/generic/backport-5.10/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch +++ b/target/linux/generic/backport-5.10/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch @@ -21,7 +21,7 @@ Signed-off-by: Lorenzo Pieralisi --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -883,8 +883,13 @@ advk_pci_bridge_emul_pcie_conf_read(stru +@@ -885,8 +885,13 @@ advk_pci_bridge_emul_pcie_conf_read(stru case PCI_EXP_DEVCAP: case PCI_EXP_DEVCTL: @@ -35,7 +35,7 @@ Signed-off-by: Lorenzo Pieralisi default: return PCI_BRIDGE_EMUL_NOT_HANDLED; } -@@ -898,10 +903,6 @@ advk_pci_bridge_emul_pcie_conf_write(str +@@ -900,10 +905,6 @@ advk_pci_bridge_emul_pcie_conf_write(str struct advk_pcie *pcie = bridge->data; switch (reg) { @@ -46,7 +46,7 @@ Signed-off-by: Lorenzo Pieralisi case PCI_EXP_LNKCTL: advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg); if (new & PCI_EXP_LNKCTL_RL) -@@ -923,6 +924,12 @@ advk_pci_bridge_emul_pcie_conf_write(str +@@ -925,6 +926,12 @@ advk_pci_bridge_emul_pcie_conf_write(str advk_writel(pcie, new, PCIE_ISR0_REG); break; diff --git a/target/linux/generic/backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch b/target/linux/generic/backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch deleted file mode 100644 index dc01c5f85d..0000000000 --- a/target/linux/generic/backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 7d8dc1f7cd007a7ce94c5b4c20d63a8b8d6d7751 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:06 +0100 -Subject: [PATCH] PCI: aardvark: Clear all MSIs at setup -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We already clear all the other interrupts (ISR0, ISR1, HOST_CTRL_INT). - -Define a new macro PCIE_MSI_ALL_MASK and do the same clearing for MSIs, -to ensure that we don't start receiving spurious interrupts. - -Use this new mask in advk_pcie_handle_msi(); - -Link: https://lore.kernel.org/r/20211130172913.9727-5-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -114,6 +114,7 @@ - #define PCIE_MSI_ADDR_HIGH_REG (CONTROL_BASE_ADDR + 0x54) - #define PCIE_MSI_STATUS_REG (CONTROL_BASE_ADDR + 0x58) - #define PCIE_MSI_MASK_REG (CONTROL_BASE_ADDR + 0x5C) -+#define PCIE_MSI_ALL_MASK GENMASK(31, 0) - #define PCIE_MSI_PAYLOAD_REG (CONTROL_BASE_ADDR + 0x9C) - #define PCIE_MSI_DATA_MASK GENMASK(15, 0) - -@@ -577,6 +578,7 @@ static void advk_pcie_setup_hw(struct ad - advk_writel(pcie, reg, PCIE_CORE_CTRL2_REG); - - /* Clear all interrupts */ -+ advk_writel(pcie, PCIE_MSI_ALL_MASK, PCIE_MSI_STATUS_REG); - advk_writel(pcie, PCIE_ISR0_ALL_MASK, PCIE_ISR0_REG); - advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG); - advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG); -@@ -589,7 +591,7 @@ static void advk_pcie_setup_hw(struct ad - advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_MASK_REG); - - /* Unmask all MSIs */ -- advk_writel(pcie, 0, PCIE_MSI_MASK_REG); -+ advk_writel(pcie, ~(u32)PCIE_MSI_ALL_MASK, PCIE_MSI_MASK_REG); - - /* Enable summary interrupt for GIC SPI source */ - reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK); -@@ -1397,7 +1399,7 @@ static void advk_pcie_handle_msi(struct - - msi_mask = advk_readl(pcie, PCIE_MSI_MASK_REG); - msi_val = advk_readl(pcie, PCIE_MSI_STATUS_REG); -- msi_status = msi_val & ~msi_mask; -+ msi_status = msi_val & ((~msi_mask) & PCIE_MSI_ALL_MASK); - - for (msi_idx = 0; msi_idx < MSI_IRQ_NUM; msi_idx++) { - if (!(BIT(msi_idx) & msi_status)) diff --git a/target/linux/generic/backport-5.10/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch b/target/linux/generic/backport-5.10/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch index 45df1b9695..b724422d40 100644 --- a/target/linux/generic/backport-5.10/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch +++ b/target/linux/generic/backport-5.10/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch @@ -18,7 +18,7 @@ Signed-off-by: Lorenzo Pieralisi --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1696,11 +1696,13 @@ static int advk_pcie_remove(struct platf +@@ -1692,11 +1692,13 @@ static int advk_pcie_remove(struct platf struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie); int i; diff --git a/target/linux/generic/backport-5.10/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch b/target/linux/generic/backport-5.10/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch index 5959d80592..c8d5e391b8 100644 --- a/target/linux/generic/backport-5.10/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch +++ b/target/linux/generic/backport-5.10/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch @@ -19,7 +19,7 @@ Signed-off-by: Lorenzo Pieralisi --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1694,6 +1694,7 @@ static int advk_pcie_remove(struct platf +@@ -1690,6 +1690,7 @@ static int advk_pcie_remove(struct platf { struct advk_pcie *pcie = platform_get_drvdata(pdev); struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie); @@ -27,7 +27,7 @@ Signed-off-by: Lorenzo Pieralisi int i; /* Remove PCI bus with all devices */ -@@ -1702,6 +1703,11 @@ static int advk_pcie_remove(struct platf +@@ -1698,6 +1699,11 @@ static int advk_pcie_remove(struct platf pci_remove_root_bus(bridge->bus); pci_unlock_rescan_remove(); diff --git a/target/linux/generic/backport-5.10/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch b/target/linux/generic/backport-5.10/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch index 130bb701f8..05d350e922 100644 --- a/target/linux/generic/backport-5.10/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch +++ b/target/linux/generic/backport-5.10/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch @@ -18,7 +18,7 @@ Signed-off-by: Lorenzo Pieralisi --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1708,6 +1708,27 @@ static int advk_pcie_remove(struct platf +@@ -1704,6 +1704,27 @@ static int advk_pcie_remove(struct platf val &= ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); advk_writel(pcie, val, PCIE_CORE_CMD_STATUS_REG); diff --git a/target/linux/generic/backport-5.10/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch b/target/linux/generic/backport-5.10/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch index 74d25d508b..435acda1e2 100644 --- a/target/linux/generic/backport-5.10/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch +++ b/target/linux/generic/backport-5.10/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch @@ -21,7 +21,7 @@ Signed-off-by: Lorenzo Pieralisi --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1733,6 +1733,9 @@ static int advk_pcie_remove(struct platf +@@ -1729,6 +1729,9 @@ static int advk_pcie_remove(struct platf advk_pcie_remove_msi_irq_domain(pcie); advk_pcie_remove_irq_domain(pcie); diff --git a/target/linux/generic/backport-5.10/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch b/target/linux/generic/backport-5.10/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch index 26d8afdddd..c5dfdd3923 100644 --- a/target/linux/generic/backport-5.10/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch +++ b/target/linux/generic/backport-5.10/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch @@ -20,7 +20,7 @@ Signed-off-by: Lorenzo Pieralisi --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1736,6 +1736,10 @@ static int advk_pcie_remove(struct platf +@@ -1732,6 +1732,10 @@ static int advk_pcie_remove(struct platf /* Free config space for emulated root bridge */ pci_bridge_emul_cleanup(&pcie->bridge); diff --git a/target/linux/generic/backport-5.10/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch b/target/linux/generic/backport-5.10/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch index 23346a9284..7f4e2575f5 100644 --- a/target/linux/generic/backport-5.10/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch +++ b/target/linux/generic/backport-5.10/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch @@ -20,7 +20,7 @@ Signed-off-by: Lorenzo Pieralisi --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1740,6 +1740,11 @@ static int advk_pcie_remove(struct platf +@@ -1736,6 +1736,11 @@ static int advk_pcie_remove(struct platf if (pcie->reset_gpio) gpiod_set_value_cansleep(pcie->reset_gpio, 1); diff --git a/target/linux/generic/backport-5.10/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch b/target/linux/generic/backport-5.10/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch index a7d5c014ab..495c34aa9e 100644 --- a/target/linux/generic/backport-5.10/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch +++ b/target/linux/generic/backport-5.10/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch @@ -18,7 +18,7 @@ Signed-off-by: Lorenzo Pieralisi --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1749,6 +1749,9 @@ static int advk_pcie_remove(struct platf +@@ -1745,6 +1745,9 @@ static int advk_pcie_remove(struct platf for (i = 0; i < OB_WIN_COUNT; i++) advk_pcie_disable_ob_win(pcie, i); diff --git a/target/linux/generic/pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch b/target/linux/generic/pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch deleted file mode 100644 index b2d32f5566..0000000000 --- a/target/linux/generic/pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch +++ /dev/null @@ -1,57 +0,0 @@ -From a29a7d01cd778854e08108461cba321a63d98871 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Fri, 2 Jul 2021 16:39:47 +0200 -Subject: [PATCH] PCI: aardvark: Fix reading MSI interrupt number -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In advk_pcie_handle_msi() the authors expect that when bit i in the W1C -register PCIE_MSI_STATUS_REG is cleared, the PCIE_MSI_PAYLOAD_REG is -updated to contain the MSI number corresponding to index i. - -Experiments show that this is not so, and instead PCIE_MSI_PAYLOAD_REG -always contains the number of the last received MSI, overall. - -Do not read PCIE_MSI_PAYLOAD_REG register for determining MSI interrupt -number. Since Aardvark already forbids more than 32 interrupts and uses -own allocated hwirq numbers, the msi_idx already corresponds to the -received MSI number. - -Fixes: 8c39d710363c ("PCI: aardvark: Add Aardvark PCI host controller driver") -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 13 ++++++------- - 1 file changed, 6 insertions(+), 7 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1391,7 +1391,7 @@ static void advk_pcie_remove_irq_domain( - static void advk_pcie_handle_msi(struct advk_pcie *pcie) - { - u32 msi_val, msi_mask, msi_status, msi_idx; -- u16 msi_data; -+ int virq; - - msi_mask = advk_readl(pcie, PCIE_MSI_MASK_REG); - msi_val = advk_readl(pcie, PCIE_MSI_STATUS_REG); -@@ -1401,13 +1401,12 @@ static void advk_pcie_handle_msi(struct - if (!(BIT(msi_idx) & msi_status)) - continue; - -- /* -- * msi_idx contains bits [4:0] of the msi_data and msi_data -- * contains 16bit MSI interrupt number -- */ - advk_writel(pcie, BIT(msi_idx), PCIE_MSI_STATUS_REG); -- msi_data = advk_readl(pcie, PCIE_MSI_PAYLOAD_REG) & PCIE_MSI_DATA_MASK; -- generic_handle_irq(msi_data); -+ virq = irq_find_mapping(pcie->msi_inner_domain, msi_idx); -+ if (virq) -+ generic_handle_irq(virq); -+ else -+ dev_err_ratelimited(&pcie->pdev->dev, "unexpected MSI 0x%02x\n", msi_idx); - } - - advk_writel(pcie, PCIE_ISR0_MSI_INT_PENDING, diff --git a/target/linux/generic/pending-5.10/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch b/target/linux/generic/pending-5.10/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch index 83aab46d8c..426ba94b98 100644 --- a/target/linux/generic/pending-5.10/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch +++ b/target/linux/generic/pending-5.10/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch @@ -31,7 +31,7 @@ Signed-off-by: Marek Behún struct irq_domain *irq_domain; struct irq_chip irq_chip; raw_spinlock_t irq_lock; -@@ -1444,21 +1445,26 @@ static void advk_pcie_handle_int(struct +@@ -1441,21 +1442,26 @@ static void advk_pcie_handle_int(struct } } @@ -68,7 +68,7 @@ Signed-off-by: Marek Behún } static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie) -@@ -1525,7 +1531,7 @@ static int advk_pcie_probe(struct platfo +@@ -1522,7 +1528,7 @@ static int advk_pcie_probe(struct platfo struct advk_pcie *pcie; struct pci_host_bridge *bridge; struct resource_entry *entry; @@ -77,7 +77,7 @@ Signed-off-by: Marek Behún bridge = devm_pci_alloc_host_bridge(dev, sizeof(struct advk_pcie)); if (!bridge) -@@ -1613,17 +1619,9 @@ static int advk_pcie_probe(struct platfo +@@ -1610,17 +1616,9 @@ static int advk_pcie_probe(struct platfo if (IS_ERR(pcie->base)) return PTR_ERR(pcie->base); @@ -98,7 +98,7 @@ Signed-off-by: Marek Behún pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node, "reset-gpios", 0, -@@ -1672,11 +1670,14 @@ static int advk_pcie_probe(struct platfo +@@ -1669,11 +1667,14 @@ static int advk_pcie_probe(struct platfo return ret; } @@ -113,7 +113,7 @@ Signed-off-by: Marek Behún advk_pcie_remove_msi_irq_domain(pcie); advk_pcie_remove_irq_domain(pcie); return ret; -@@ -1724,6 +1725,9 @@ static int advk_pcie_remove(struct platf +@@ -1721,6 +1722,9 @@ static int advk_pcie_remove(struct platf advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG); advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG); diff --git a/target/linux/generic/pending-5.10/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch b/target/linux/generic/pending-5.10/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch index 7eb30eadd6..a9c7f052b1 100644 --- a/target/linux/generic/pending-5.10/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch +++ b/target/linux/generic/pending-5.10/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch @@ -18,7 +18,7 @@ Signed-off-by: Marek Behún --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1441,7 +1441,9 @@ static void advk_pcie_handle_int(struct +@@ -1438,7 +1438,9 @@ static void advk_pcie_handle_int(struct PCIE_ISR1_REG); virq = irq_find_mapping(pcie->irq_domain, i); diff --git a/target/linux/generic/pending-5.10/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch b/target/linux/generic/pending-5.10/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch index cc4bb467c3..8665431961 100644 --- a/target/linux/generic/pending-5.10/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch +++ b/target/linux/generic/pending-5.10/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch @@ -78,7 +78,7 @@ Signed-off-by: Marek Behún if (mask & (PCI_BRIDGE_CTL_BUS_RESET << 16)) { u32 val = advk_readl(pcie, PCIE_CORE_CTRL1_REG); if (new & (PCI_BRIDGE_CTL_BUS_RESET << 16)) -@@ -1468,6 +1489,19 @@ static void advk_pcie_handle_int(struct +@@ -1465,6 +1486,19 @@ static void advk_pcie_handle_int(struct isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG); isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK); diff --git a/target/linux/generic/pending-5.10/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch b/target/linux/generic/pending-5.10/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch index 4272b6dd6e..2b1a945b62 100644 --- a/target/linux/generic/pending-5.10/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch +++ b/target/linux/generic/pending-5.10/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch @@ -25,7 +25,7 @@ Signed-off-by: Marek Behún --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1491,6 +1491,19 @@ static void advk_pcie_handle_int(struct +@@ -1488,6 +1488,19 @@ static void advk_pcie_handle_int(struct isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG); isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK); diff --git a/target/linux/generic/pending-5.10/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch b/target/linux/generic/pending-5.10/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch index 6aa7dcbd76..a59ff36b51 100644 --- a/target/linux/generic/pending-5.10/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch +++ b/target/linux/generic/pending-5.10/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch @@ -149,7 +149,7 @@ Signed-off-by: Marek Behún static void advk_pcie_handle_msi(struct advk_pcie *pcie) { u32 msi_val, msi_mask, msi_status, msi_idx; -@@ -1491,18 +1510,9 @@ static void advk_pcie_handle_int(struct +@@ -1488,18 +1507,9 @@ static void advk_pcie_handle_int(struct isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG); isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK); diff --git a/target/linux/generic/pending-5.10/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch b/target/linux/generic/pending-5.10/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch index e9f65aca23..62a4bfe807 100644 --- a/target/linux/generic/pending-5.10/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch +++ b/target/linux/generic/pending-5.10/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch @@ -95,7 +95,7 @@ Signed-off-by: Marek Behún if (generic_handle_irq(virq) == -EINVAL) dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n"); } -@@ -1522,7 +1561,7 @@ static void advk_pcie_handle_int(struct +@@ -1519,7 +1558,7 @@ static void advk_pcie_handle_int(struct * Aardvark HW returns zero for PCI_ERR_ROOT_AER_IRQ, so use * PCIe interrupt 0 */ @@ -104,7 +104,7 @@ Signed-off-by: Marek Behún if (generic_handle_irq(virq) == -EINVAL) dev_err_ratelimited(&pcie->pdev->dev, "unhandled ERR IRQ\n"); } -@@ -1568,6 +1607,21 @@ static void advk_pcie_irq_handler(struct +@@ -1565,6 +1604,21 @@ static void advk_pcie_irq_handler(struct chained_irq_exit(chip, desc); } @@ -126,7 +126,7 @@ Signed-off-by: Marek Behún static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie) { phy_power_off(pcie->phy); -@@ -1771,14 +1825,24 @@ static int advk_pcie_probe(struct platfo +@@ -1768,14 +1822,24 @@ static int advk_pcie_probe(struct platfo return ret; } @@ -151,7 +151,7 @@ Signed-off-by: Marek Behún advk_pcie_remove_msi_irq_domain(pcie); advk_pcie_remove_irq_domain(pcie); return ret; -@@ -1830,6 +1894,7 @@ static int advk_pcie_remove(struct platf +@@ -1827,6 +1891,7 @@ static int advk_pcie_remove(struct platf irq_set_chained_handler_and_data(pcie->irq, NULL, NULL); /* Remove IRQ domains */ diff --git a/target/linux/generic/pending-5.10/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch b/target/linux/generic/pending-5.10/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch index f359663ca4..5a1cff5310 100644 --- a/target/linux/generic/pending-5.10/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch +++ b/target/linux/generic/pending-5.10/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch @@ -17,7 +17,7 @@ Signed-off-by: Marek Behún --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1620,7 +1620,7 @@ static int advk_pcie_map_irq(const struc +@@ -1617,7 +1617,7 @@ static int advk_pcie_map_irq(const struc return of_irq_parse_and_map_pci(dev, slot, pin); } diff --git a/target/linux/generic/pending-5.10/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch b/target/linux/generic/pending-5.10/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch index 857ee66a31..3ac9269812 100644 --- a/target/linux/generic/pending-5.10/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch +++ b/target/linux/generic/pending-5.10/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch @@ -23,7 +23,7 @@ Acked-by: Miquel Raynal --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1637,9 +1637,7 @@ static int advk_pcie_enable_phy(struct a +@@ -1634,9 +1634,7 @@ static int advk_pcie_enable_phy(struct a } ret = phy_power_on(pcie->phy); diff --git a/target/linux/ipq40xx/patches-5.10/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch b/target/linux/ipq40xx/patches-5.10/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch index fd46d54916..63514c2444 100644 --- a/target/linux/ipq40xx/patches-5.10/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch +++ b/target/linux/ipq40xx/patches-5.10/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch @@ -13,7 +13,7 @@ Signed-off-by: Robert Marko --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c -@@ -2191,7 +2191,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat +@@ -2192,7 +2192,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat static const struct sdhci_ops sdhci_msm_ops = { .reset = sdhci_msm_reset, From 6cdf974a3d0cfebf4a37aaf2876b2ece0f11363d Mon Sep 17 00:00:00 2001 From: John Audia Date: Thu, 12 May 2022 08:32:29 -0400 Subject: [PATCH 27/29] kernel: bump 5.15 to 5.15.39 Removed upstreamed: backport-5.15/850-v5.17-0001-PCI-pci-bridge-emul-Add-description-for-class_revisi.patch backport-5.15/850-v5.17-0002-PCI-pci-bridge-emul-Add-definitions-for-missing-capa.patch backport-5.15/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch backport-5.15/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch backport-5.15/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch backport-5.15/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch backport-5.15/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch backport-5.15/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch backport-5.15/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch backport-5.15/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch backport-5.15/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch pending-5.15/850-0001-PCI-aardvark-Replace-custom-PCIE_CORE_INT_-macros-wi.patch pending-5.15/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch pending-5.15/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch pending-5.15/850-0006-PCI-aardvark-Make-MSI-irq_chip-structures-static-dri.patch pending-5.15/850-0007-PCI-aardvark-Make-msi_domain_info-structure-a-static.patch pending-5.15/850-0008-PCI-aardvark-Use-dev_fwnode-instead-of-of_node_to_fw.patch pending-5.15/850-0009-PCI-aardvark-Refactor-unmasking-summary-MSI-interrup.patch pending-5.15/850-0010-PCI-aardvark-Add-support-for-masking-MSI-interrupts.patch pending-5.15/850-0011-PCI-aardvark-Fix-setting-MSI-address.patc pending-5.15/850-0012-PCI-aardvark-Enable-MSI-X-support.patch pending-5.15/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch pending-5.15/850-0015-PCI-aardvark-Optimize-writing-PCI_EXP_RTCTL_PMEIE-an.patch pending-5.15/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch pending-5.15/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch pending-5.15/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch pending-5.15/850-0019-PCI-aardvark-Remove-irq_mask_ack-callback-for-INTx-i.patch pending-5.15/850-0020-PCI-aardvark-Don-t-mask-irq-when-mapping.patch pending-5.15/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch pending-5.15/850-0022-PCI-aardvark-Update-comment-about-link-going-down-af.patch All patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B, mt7622/RT3200 Run-tested: bcm2711/RPi4B, mt7622/RT3200 Signed-off-by: John Audia --- include/kernel-5.15 | 4 +- ...mul-Add-description-for-class_revisi.patch | 44 ----- ...mul-Add-definitions-for-missing-capa.patch | 73 -------- ...-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch | 61 ------- ...PCI-aardvark-Clear-all-MSIs-at-setup.patch | 59 ------ ...ment-actions-in-driver-remove-method.patch | 34 ---- ...able-bus-mastering-when-unbinding-dr.patch | 41 ----- ...k-all-interrupts-when-unbinding-driv.patch | 48 ----- ...ark-Fix-memory-leak-in-driver-unbind.patch | 33 ---- ...k-Assert-PERST-when-unbinding-driver.patch | 33 ---- ...able-link-training-when-unbinding-dr.patch | 34 ---- ...able-common-PHY-when-unbinding-drive.patch | 30 ---- ...lace-custom-PCIE_CORE_INT_-macros-wi.patch | 40 ----- ...rite-IRQ-code-to-chained-IRQ-handler.patch | 125 ------------- ...ck-return-value-of-generic_handle_do.patch | 31 ---- ...e-MSI-irq_chip-structures-static-dri.patch | 93 ---------- ...e-msi_domain_info-structure-a-static.patch | 64 ------- ...-dev_fwnode-instead-of-of_node_to_fw.patch | 40 ----- ...actor-unmasking-summary-MSI-interrup.patch | 44 ----- ...d-support-for-masking-MSI-interrupts.patch | 117 ------------ ...PCI-aardvark-Fix-setting-MSI-address.patch | 91 ---------- ...12-PCI-aardvark-Enable-MSI-X-support.patch | 38 ---- ...-support-for-ERR-interrupt-on-emulat.patch | 99 ---------- ...imize-writing-PCI_EXP_RTCTL_PMEIE-an.patch | 52 ------ ...dvark-Add-support-for-PME-interrupts.patch | 46 ----- ...-support-for-PME-requester-on-emulat.patch | 170 ------------------ ...-separate-INTA-interrupt-for-emulate.patch | 161 ----------------- ...ove-irq_mask_ack-callback-for-INTx-i.patch | 29 --- ...aardvark-Don-t-mask-irq-when-mapping.patch | 27 --- ...p-__maybe_unused-from-advk_pcie_disa.patch | 28 --- ...ate-comment-about-link-going-down-af.patch | 35 ---- ...ark-Fix-initialization-with-old-Marv.patch | 2 +- ...msm-use-sdhci_set_clock-instead-of-s.patch | 2 +- 33 files changed, 4 insertions(+), 1824 deletions(-) delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0001-PCI-pci-bridge-emul-Add-description-for-class_revisi.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0002-PCI-pci-bridge-emul-Add-definitions-for-missing-capa.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch delete mode 100644 target/linux/generic/backport-5.15/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch delete mode 100644 target/linux/generic/pending-5.15/850-0001-PCI-aardvark-Replace-custom-PCIE_CORE_INT_-macros-wi.patch delete mode 100644 target/linux/generic/pending-5.15/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch delete mode 100644 target/linux/generic/pending-5.15/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch delete mode 100644 target/linux/generic/pending-5.15/850-0006-PCI-aardvark-Make-MSI-irq_chip-structures-static-dri.patch delete mode 100644 target/linux/generic/pending-5.15/850-0007-PCI-aardvark-Make-msi_domain_info-structure-a-static.patch delete mode 100644 target/linux/generic/pending-5.15/850-0008-PCI-aardvark-Use-dev_fwnode-instead-of-of_node_to_fw.patch delete mode 100644 target/linux/generic/pending-5.15/850-0009-PCI-aardvark-Refactor-unmasking-summary-MSI-interrup.patch delete mode 100644 target/linux/generic/pending-5.15/850-0010-PCI-aardvark-Add-support-for-masking-MSI-interrupts.patch delete mode 100644 target/linux/generic/pending-5.15/850-0011-PCI-aardvark-Fix-setting-MSI-address.patch delete mode 100644 target/linux/generic/pending-5.15/850-0012-PCI-aardvark-Enable-MSI-X-support.patch delete mode 100644 target/linux/generic/pending-5.15/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch delete mode 100644 target/linux/generic/pending-5.15/850-0015-PCI-aardvark-Optimize-writing-PCI_EXP_RTCTL_PMEIE-an.patch delete mode 100644 target/linux/generic/pending-5.15/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch delete mode 100644 target/linux/generic/pending-5.15/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch delete mode 100644 target/linux/generic/pending-5.15/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch delete mode 100644 target/linux/generic/pending-5.15/850-0019-PCI-aardvark-Remove-irq_mask_ack-callback-for-INTx-i.patch delete mode 100644 target/linux/generic/pending-5.15/850-0020-PCI-aardvark-Don-t-mask-irq-when-mapping.patch delete mode 100644 target/linux/generic/pending-5.15/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch delete mode 100644 target/linux/generic/pending-5.15/850-0022-PCI-aardvark-Update-comment-about-link-going-down-af.patch diff --git a/include/kernel-5.15 b/include/kernel-5.15 index 1575a9ad0e..f1b66a8b30 100644 --- a/include/kernel-5.15 +++ b/include/kernel-5.15 @@ -1,2 +1,2 @@ -LINUX_VERSION-5.15 = .38 -LINUX_KERNEL_HASH-5.15.38 = 7e415d420990b88bfec038d56e920b9b28f99d54f31dbbd7aa82e66acca11052 +LINUX_VERSION-5.15 = .39 +LINUX_KERNEL_HASH-5.15.39 = 888641634f9e0e38cd0efcfec92ea3c126d381b24a514740d3fe3dc9988fd7ad diff --git a/target/linux/generic/backport-5.15/850-v5.17-0001-PCI-pci-bridge-emul-Add-description-for-class_revisi.patch b/target/linux/generic/backport-5.15/850-v5.17-0001-PCI-pci-bridge-emul-Add-description-for-class_revisi.patch deleted file mode 100644 index 19a4be2a9d..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0001-PCI-pci-bridge-emul-Add-description-for-class_revisi.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 9319230ac147067652b58fe849ffe0ceec098665 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:03 +0100 -Subject: [PATCH] PCI: pci-bridge-emul: Add description for class_revision - field -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The current assignment to the class_revision member - - class_revision |= cpu_to_le32(PCI_CLASS_BRIDGE_PCI << 16); - -can make the reader think that class is at high 16 bits of the member and -revision at low 16 bits. - -In reality, class is at high 24 bits, but the class for PCI Bridge Normal -Decode is PCI_CLASS_BRIDGE_PCI << 8. - -Change the assignment and add a comment to make this clearer. - -Link: https://lore.kernel.org/r/20211130172913.9727-2-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/pci-bridge-emul.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - ---- a/drivers/pci/pci-bridge-emul.c -+++ b/drivers/pci/pci-bridge-emul.c -@@ -284,7 +284,11 @@ int pci_bridge_emul_init(struct pci_brid - { - BUILD_BUG_ON(sizeof(bridge->conf) != PCI_BRIDGE_CONF_END); - -- bridge->conf.class_revision |= cpu_to_le32(PCI_CLASS_BRIDGE_PCI << 16); -+ /* -+ * class_revision: Class is high 24 bits and revision is low 8 bit of this member, -+ * while class for PCI Bridge Normal Decode has the 24-bit value: PCI_CLASS_BRIDGE_PCI << 8 -+ */ -+ bridge->conf.class_revision |= cpu_to_le32((PCI_CLASS_BRIDGE_PCI << 8) << 8); - bridge->conf.header_type = PCI_HEADER_TYPE_BRIDGE; - bridge->conf.cache_line_size = 0x10; - bridge->conf.status = cpu_to_le16(PCI_STATUS_CAP_LIST); diff --git a/target/linux/generic/backport-5.15/850-v5.17-0002-PCI-pci-bridge-emul-Add-definitions-for-missing-capa.patch b/target/linux/generic/backport-5.15/850-v5.17-0002-PCI-pci-bridge-emul-Add-definitions-for-missing-capa.patch deleted file mode 100644 index 3dd82710e6..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0002-PCI-pci-bridge-emul-Add-definitions-for-missing-capa.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 8ea673a8b30b4a32516b8adabb15e2a68ff02ec8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:04 +0100 -Subject: [PATCH] PCI: pci-bridge-emul: Add definitions for missing - capabilities registers -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -pci-bridge-emul driver already allocates buffer for capabilities up to the -PCI_EXP_SLTSTA2 register, but does not define bit access behavior for these -registers. Add these missing definitions. - -Link: https://lore.kernel.org/r/20211130172913.9727-3-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/pci-bridge-emul.c | 43 +++++++++++++++++++++++++++++++++++ - 1 file changed, 43 insertions(+) - ---- a/drivers/pci/pci-bridge-emul.c -+++ b/drivers/pci/pci-bridge-emul.c -@@ -270,6 +270,49 @@ struct pci_bridge_reg_behavior pcie_cap_ - .ro = GENMASK(15, 0) | PCI_EXP_RTSTA_PENDING, - .w1c = PCI_EXP_RTSTA_PME, - }, -+ -+ [PCI_EXP_DEVCAP2 / 4] = { -+ /* -+ * Device capabilities 2 register has reserved bits [30:27]. -+ * Also bits [26:24] are reserved for non-upstream ports. -+ */ -+ .ro = BIT(31) | GENMASK(23, 0), -+ }, -+ -+ [PCI_EXP_DEVCTL2 / 4] = { -+ /* -+ * Device control 2 register is RW. Bit 11 is reserved for -+ * non-upstream ports. -+ * -+ * Device status 2 register is reserved. -+ */ -+ .rw = GENMASK(15, 12) | GENMASK(10, 0), -+ }, -+ -+ [PCI_EXP_LNKCAP2 / 4] = { -+ /* Link capabilities 2 register has reserved bits [30:25] and 0. */ -+ .ro = BIT(31) | GENMASK(24, 1), -+ }, -+ -+ [PCI_EXP_LNKCTL2 / 4] = { -+ /* -+ * Link control 2 register is RW. -+ * -+ * Link status 2 register has bits 5, 15 W1C; -+ * bits 10, 11 reserved and others are RO. -+ */ -+ .rw = GENMASK(15, 0), -+ .w1c = (BIT(15) | BIT(5)) << 16, -+ .ro = (GENMASK(14, 12) | GENMASK(9, 6) | GENMASK(4, 0)) << 16, -+ }, -+ -+ [PCI_EXP_SLTCAP2 / 4] = { -+ /* Slot capabilities 2 register is reserved. */ -+ }, -+ -+ [PCI_EXP_SLTCTL2 / 4] = { -+ /* Both Slot control 2 and Slot status 2 registers are reserved. */ -+ }, - }; - - /* diff --git a/target/linux/generic/backport-5.15/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch b/target/linux/generic/backport-5.15/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch deleted file mode 100644 index 4a5b99bc2a..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 1d3e170344dff2cef8827db6c09909b78cbc11d7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:05 +0100 -Subject: [PATCH] PCI: aardvark: Add support for DEVCAP2, DEVCTL2, LNKCAP2 and - LNKCTL2 registers on emulated bridge -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -PCI aardvark hardware supports access to DEVCAP2, DEVCTL2, LNKCAP2 and -LNKCTL2 configuration registers of PCIe core via PCIE_CORE_PCIEXP_CAP. -Export them via emulated software root bridge. - -Link: https://lore.kernel.org/r/20211130172913.9727-4-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -876,8 +876,13 @@ advk_pci_bridge_emul_pcie_conf_read(stru - - case PCI_EXP_DEVCAP: - case PCI_EXP_DEVCTL: -+ case PCI_EXP_DEVCAP2: -+ case PCI_EXP_DEVCTL2: -+ case PCI_EXP_LNKCAP2: -+ case PCI_EXP_LNKCTL2: - *value = advk_readl(pcie, PCIE_CORE_PCIEXP_CAP + reg); - return PCI_BRIDGE_EMUL_HANDLED; -+ - default: - return PCI_BRIDGE_EMUL_NOT_HANDLED; - } -@@ -891,10 +896,6 @@ advk_pci_bridge_emul_pcie_conf_write(str - struct advk_pcie *pcie = bridge->data; - - switch (reg) { -- case PCI_EXP_DEVCTL: -- advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg); -- break; -- - case PCI_EXP_LNKCTL: - advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg); - if (new & PCI_EXP_LNKCTL_RL) -@@ -916,6 +917,12 @@ advk_pci_bridge_emul_pcie_conf_write(str - advk_writel(pcie, new, PCIE_ISR0_REG); - break; - -+ case PCI_EXP_DEVCTL: -+ case PCI_EXP_DEVCTL2: -+ case PCI_EXP_LNKCTL2: -+ advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg); -+ break; -+ - default: - break; - } diff --git a/target/linux/generic/backport-5.15/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch b/target/linux/generic/backport-5.15/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch deleted file mode 100644 index 61dd8b8733..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 7d8dc1f7cd007a7ce94c5b4c20d63a8b8d6d7751 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:06 +0100 -Subject: [PATCH] PCI: aardvark: Clear all MSIs at setup -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We already clear all the other interrupts (ISR0, ISR1, HOST_CTRL_INT). - -Define a new macro PCIE_MSI_ALL_MASK and do the same clearing for MSIs, -to ensure that we don't start receiving spurious interrupts. - -Use this new mask in advk_pcie_handle_msi(); - -Link: https://lore.kernel.org/r/20211130172913.9727-5-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -115,6 +115,7 @@ - #define PCIE_MSI_ADDR_HIGH_REG (CONTROL_BASE_ADDR + 0x54) - #define PCIE_MSI_STATUS_REG (CONTROL_BASE_ADDR + 0x58) - #define PCIE_MSI_MASK_REG (CONTROL_BASE_ADDR + 0x5C) -+#define PCIE_MSI_ALL_MASK GENMASK(31, 0) - #define PCIE_MSI_PAYLOAD_REG (CONTROL_BASE_ADDR + 0x9C) - #define PCIE_MSI_DATA_MASK GENMASK(15, 0) - -@@ -570,6 +571,7 @@ static void advk_pcie_setup_hw(struct ad - advk_writel(pcie, reg, PCIE_CORE_CTRL2_REG); - - /* Clear all interrupts */ -+ advk_writel(pcie, PCIE_MSI_ALL_MASK, PCIE_MSI_STATUS_REG); - advk_writel(pcie, PCIE_ISR0_ALL_MASK, PCIE_ISR0_REG); - advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG); - advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG); -@@ -582,7 +584,7 @@ static void advk_pcie_setup_hw(struct ad - advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_MASK_REG); - - /* Unmask all MSIs */ -- advk_writel(pcie, 0, PCIE_MSI_MASK_REG); -+ advk_writel(pcie, ~(u32)PCIE_MSI_ALL_MASK, PCIE_MSI_MASK_REG); - - /* Enable summary interrupt for GIC SPI source */ - reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK); -@@ -1389,7 +1391,7 @@ static void advk_pcie_handle_msi(struct - - msi_mask = advk_readl(pcie, PCIE_MSI_MASK_REG); - msi_val = advk_readl(pcie, PCIE_MSI_STATUS_REG); -- msi_status = msi_val & ~msi_mask; -+ msi_status = msi_val & ((~msi_mask) & PCIE_MSI_ALL_MASK); - - for (msi_idx = 0; msi_idx < MSI_IRQ_NUM; msi_idx++) { - if (!(BIT(msi_idx) & msi_status)) diff --git a/target/linux/generic/backport-5.15/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch b/target/linux/generic/backport-5.15/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch deleted file mode 100644 index a022f3ec6c..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch +++ /dev/null @@ -1,34 +0,0 @@ -From a4ca7948e1d47275f8f3e5023243440c40561916 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:07 +0100 -Subject: [PATCH] PCI: aardvark: Comment actions in driver remove method -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add two more comments into the advk_pcie_remove() method. - -Link: https://lore.kernel.org/r/20211130172913.9727-6-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1681,11 +1681,13 @@ static int advk_pcie_remove(struct platf - struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie); - int i; - -+ /* Remove PCI bus with all devices */ - pci_lock_rescan_remove(); - pci_stop_root_bus(bridge->bus); - pci_remove_root_bus(bridge->bus); - pci_unlock_rescan_remove(); - -+ /* Remove IRQ domains */ - advk_pcie_remove_msi_irq_domain(pcie); - advk_pcie_remove_irq_domain(pcie); - diff --git a/target/linux/generic/backport-5.15/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch b/target/linux/generic/backport-5.15/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch deleted file mode 100644 index 9b8ae26dfe..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch +++ /dev/null @@ -1,41 +0,0 @@ -From a46f2f6dd4093438d9615dfbf5c0fea2a9835dba Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:08 +0100 -Subject: [PATCH] PCI: aardvark: Disable bus mastering when unbinding driver -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Ensure that after driver unbind PCIe cards are not able to forward -memory and I/O requests in the upstream direction. - -Link: https://lore.kernel.org/r/20211130172913.9727-7-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 6 ++++++ - 1 file changed, 6 insertions(+) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1679,6 +1679,7 @@ static int advk_pcie_remove(struct platf - { - struct advk_pcie *pcie = platform_get_drvdata(pdev); - struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie); -+ u32 val; - int i; - - /* Remove PCI bus with all devices */ -@@ -1687,6 +1688,11 @@ static int advk_pcie_remove(struct platf - pci_remove_root_bus(bridge->bus); - pci_unlock_rescan_remove(); - -+ /* Disable Root Bridge I/O space, memory space and bus mastering */ -+ val = advk_readl(pcie, PCIE_CORE_CMD_STATUS_REG); -+ val &= ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); -+ advk_writel(pcie, val, PCIE_CORE_CMD_STATUS_REG); -+ - /* Remove IRQ domains */ - advk_pcie_remove_msi_irq_domain(pcie); - advk_pcie_remove_irq_domain(pcie); diff --git a/target/linux/generic/backport-5.15/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch b/target/linux/generic/backport-5.15/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch deleted file mode 100644 index 97173ee281..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 13bcdf07cb2ecff5d45d2c141df2539b15211448 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:09 +0100 -Subject: [PATCH] PCI: aardvark: Mask all interrupts when unbinding driver -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Ensure that no interrupt can be triggered after driver unbind. - -Link: https://lore.kernel.org/r/20211130172913.9727-8-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1693,6 +1693,27 @@ static int advk_pcie_remove(struct platf - val &= ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); - advk_writel(pcie, val, PCIE_CORE_CMD_STATUS_REG); - -+ /* Disable MSI */ -+ val = advk_readl(pcie, PCIE_CORE_CTRL2_REG); -+ val &= ~PCIE_CORE_CTRL2_MSI_ENABLE; -+ advk_writel(pcie, val, PCIE_CORE_CTRL2_REG); -+ -+ /* Clear MSI address */ -+ advk_writel(pcie, 0, PCIE_MSI_ADDR_LOW_REG); -+ advk_writel(pcie, 0, PCIE_MSI_ADDR_HIGH_REG); -+ -+ /* Mask all interrupts */ -+ advk_writel(pcie, PCIE_MSI_ALL_MASK, PCIE_MSI_MASK_REG); -+ advk_writel(pcie, PCIE_ISR0_ALL_MASK, PCIE_ISR0_MASK_REG); -+ advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_MASK_REG); -+ advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_MASK_REG); -+ -+ /* Clear all interrupts */ -+ advk_writel(pcie, PCIE_MSI_ALL_MASK, PCIE_MSI_STATUS_REG); -+ advk_writel(pcie, PCIE_ISR0_ALL_MASK, PCIE_ISR0_REG); -+ advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG); -+ advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG); -+ - /* Remove IRQ domains */ - advk_pcie_remove_msi_irq_domain(pcie); - advk_pcie_remove_irq_domain(pcie); diff --git a/target/linux/generic/backport-5.15/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch b/target/linux/generic/backport-5.15/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch deleted file mode 100644 index e8611c82fe..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 2f040a17f5061457ae95035326d3159eddc1e5cc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:10 +0100 -Subject: [PATCH] PCI: aardvark: Fix memory leak in driver unbind -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Free config space for emulated root bridge when unbinding driver to fix -memory leak. Do it after disabling and masking all interrupts, since -aardvark interrupt handler accesses config space of emulated root -bridge. - -Link: https://lore.kernel.org/r/20211130172913.9727-9-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1718,6 +1718,9 @@ static int advk_pcie_remove(struct platf - advk_pcie_remove_msi_irq_domain(pcie); - advk_pcie_remove_irq_domain(pcie); - -+ /* Free config space for emulated root bridge */ -+ pci_bridge_emul_cleanup(&pcie->bridge); -+ - /* Disable outbound address windows mapping */ - for (i = 0; i < OB_WIN_COUNT; i++) - advk_pcie_disable_ob_win(pcie, i); diff --git a/target/linux/generic/backport-5.15/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch b/target/linux/generic/backport-5.15/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch deleted file mode 100644 index 3e309159d0..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 1f54391be8ce0c981d312cb93acdc5608def576a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:11 +0100 -Subject: [PATCH] PCI: aardvark: Assert PERST# when unbinding driver -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Put the PCIe card into reset by asserting PERST# signal when unbinding -driver. It doesn't make sense to leave the card working if it can't -communicate with the host. This should also save some power. - -Link: https://lore.kernel.org/r/20211130172913.9727-10-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1721,6 +1721,10 @@ static int advk_pcie_remove(struct platf - /* Free config space for emulated root bridge */ - pci_bridge_emul_cleanup(&pcie->bridge); - -+ /* Assert PERST# signal which prepares PCIe card for power down */ -+ if (pcie->reset_gpio) -+ gpiod_set_value_cansleep(pcie->reset_gpio, 1); -+ - /* Disable outbound address windows mapping */ - for (i = 0; i < OB_WIN_COUNT; i++) - advk_pcie_disable_ob_win(pcie, i); diff --git a/target/linux/generic/backport-5.15/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch b/target/linux/generic/backport-5.15/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch deleted file mode 100644 index 1a5725121b..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 759dec2e3dfdbd261c41d2279f04f2351c971a49 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:12 +0100 -Subject: [PATCH] PCI: aardvark: Disable link training when unbinding driver -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Disable link training circuit in driver unbind sequence. We want to -leave link training in the same state as it was before the driver was -probed. - -Link: https://lore.kernel.org/r/20211130172913.9727-11-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1725,6 +1725,11 @@ static int advk_pcie_remove(struct platf - if (pcie->reset_gpio) - gpiod_set_value_cansleep(pcie->reset_gpio, 1); - -+ /* Disable link training */ -+ val = advk_readl(pcie, PCIE_CORE_CTRL0_REG); -+ val &= ~LINK_TRAINING_EN; -+ advk_writel(pcie, val, PCIE_CORE_CTRL0_REG); -+ - /* Disable outbound address windows mapping */ - for (i = 0; i < OB_WIN_COUNT; i++) - advk_pcie_disable_ob_win(pcie, i); diff --git a/target/linux/generic/backport-5.15/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch b/target/linux/generic/backport-5.15/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch deleted file mode 100644 index 4a4af186fd..0000000000 --- a/target/linux/generic/backport-5.15/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch +++ /dev/null @@ -1,30 +0,0 @@ -From fdbbe242c15a8f2cd0e3ad8a56cd0a447b771d0d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Tue, 30 Nov 2021 18:29:13 +0100 -Subject: [PATCH] PCI: aardvark: Disable common PHY when unbinding driver -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Disable the PCIe PHY when unbinding driver. This should save some power. - -Link: https://lore.kernel.org/r/20211130172913.9727-12-kabel@kernel.org -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún -Signed-off-by: Lorenzo Pieralisi ---- - drivers/pci/controller/pci-aardvark.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1734,6 +1734,9 @@ static int advk_pcie_remove(struct platf - for (i = 0; i < OB_WIN_COUNT; i++) - advk_pcie_disable_ob_win(pcie, i); - -+ /* Disable phy */ -+ advk_pcie_disable_phy(pcie); -+ - return 0; - } - diff --git a/target/linux/generic/pending-5.15/850-0001-PCI-aardvark-Replace-custom-PCIE_CORE_INT_-macros-wi.patch b/target/linux/generic/pending-5.15/850-0001-PCI-aardvark-Replace-custom-PCIE_CORE_INT_-macros-wi.patch deleted file mode 100644 index 70f994a5d4..0000000000 --- a/target/linux/generic/pending-5.15/850-0001-PCI-aardvark-Replace-custom-PCIE_CORE_INT_-macros-wi.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 43f3f187e6f62ca40802afe39495c8a3e20b4bfa Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Mon, 10 Jan 2022 01:50:50 +0100 -Subject: [PATCH] PCI: aardvark: Replace custom PCIE_CORE_INT_* macros with - PCI_INTERRUPT_* -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Header file linux/pci.h defines enum pci_interrupt_pin with corresponding -PCI_INTERRUPT_* values. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -38,10 +38,6 @@ - #define PCIE_CORE_ERR_CAPCTL_ECRC_CHK_TX_EN BIT(6) - #define PCIE_CORE_ERR_CAPCTL_ECRC_CHCK BIT(7) - #define PCIE_CORE_ERR_CAPCTL_ECRC_CHCK_RCV BIT(8) --#define PCIE_CORE_INT_A_ASSERT_ENABLE 1 --#define PCIE_CORE_INT_B_ASSERT_ENABLE 2 --#define PCIE_CORE_INT_C_ASSERT_ENABLE 3 --#define PCIE_CORE_INT_D_ASSERT_ENABLE 4 - /* PIO registers base address and register offsets */ - #define PIO_BASE_ADDR 0x4000 - #define PIO_CTRL (PIO_BASE_ADDR + 0x0) -@@ -961,7 +957,7 @@ static int advk_sw_pci_bridge_init(struc - bridge->conf.pref_mem_limit = cpu_to_le16(PCI_PREF_RANGE_TYPE_64); - - /* Support interrupt A for MSI feature */ -- bridge->conf.intpin = PCIE_CORE_INT_A_ASSERT_ENABLE; -+ bridge->conf.intpin = PCI_INTERRUPT_INTA; - - /* Aardvark HW provides PCIe Capability structure in version 2 */ - bridge->pcie_conf.cap = cpu_to_le16(2); diff --git a/target/linux/generic/pending-5.15/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch b/target/linux/generic/pending-5.15/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch deleted file mode 100644 index e3eaab61f9..0000000000 --- a/target/linux/generic/pending-5.15/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 0cd5141d1866afb23286fe90cd846441fe7aeb39 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Sat, 27 Mar 2021 14:44:11 +0100 -Subject: [PATCH] PCI: aardvark: Rewrite IRQ code to chained IRQ handler -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Rewrite the code to use irq_set_chained_handler_and_data() handler with -chained_irq_enter() and chained_irq_exit() processing instead of using -devm_request_irq(). - -advk_pcie_irq_handler() reads IRQ status bits and calls other functions -based on which bits are set. These functions then read its own IRQ status -bits and calls other aardvark functions based on these bits. Finally -generic_handle_domain_irq() with translated linux IRQ numbers are called. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 48 +++++++++++++++------------ - 1 file changed, 26 insertions(+), 22 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -268,6 +268,7 @@ struct advk_pcie { - u32 actions; - } wins[OB_WIN_COUNT]; - u8 wins_count; -+ int irq; - struct irq_domain *irq_domain; - struct irq_chip irq_chip; - raw_spinlock_t irq_lock; -@@ -1432,21 +1433,26 @@ static void advk_pcie_handle_int(struct - } - } - --static irqreturn_t advk_pcie_irq_handler(int irq, void *arg) -+static void advk_pcie_irq_handler(struct irq_desc *desc) - { -- struct advk_pcie *pcie = arg; -- u32 status; -+ struct advk_pcie *pcie = irq_desc_get_handler_data(desc); -+ struct irq_chip *chip = irq_desc_get_chip(desc); -+ u32 val, mask, status; - -- status = advk_readl(pcie, HOST_CTRL_INT_STATUS_REG); -- if (!(status & PCIE_IRQ_CORE_INT)) -- return IRQ_NONE; -+ chained_irq_enter(chip, desc); - -- advk_pcie_handle_int(pcie); -+ val = advk_readl(pcie, HOST_CTRL_INT_STATUS_REG); -+ mask = advk_readl(pcie, HOST_CTRL_INT_MASK_REG); -+ status = val & ((~mask) & PCIE_IRQ_ALL_MASK); - -- /* Clear interrupt */ -- advk_writel(pcie, PCIE_IRQ_CORE_INT, HOST_CTRL_INT_STATUS_REG); -+ if (status & PCIE_IRQ_CORE_INT) { -+ advk_pcie_handle_int(pcie); - -- return IRQ_HANDLED; -+ /* Clear interrupt */ -+ advk_writel(pcie, PCIE_IRQ_CORE_INT, HOST_CTRL_INT_STATUS_REG); -+ } -+ -+ chained_irq_exit(chip, desc); - } - - static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie) -@@ -1513,7 +1519,7 @@ static int advk_pcie_probe(struct platfo - struct advk_pcie *pcie; - struct pci_host_bridge *bridge; - struct resource_entry *entry; -- int ret, irq; -+ int ret; - - bridge = devm_pci_alloc_host_bridge(dev, sizeof(struct advk_pcie)); - if (!bridge) -@@ -1599,17 +1605,9 @@ static int advk_pcie_probe(struct platfo - if (IS_ERR(pcie->base)) - return PTR_ERR(pcie->base); - -- irq = platform_get_irq(pdev, 0); -- if (irq < 0) -- return irq; -- -- ret = devm_request_irq(dev, irq, advk_pcie_irq_handler, -- IRQF_SHARED | IRQF_NO_THREAD, "advk-pcie", -- pcie); -- if (ret) { -- dev_err(dev, "Failed to register interrupt\n"); -- return ret; -- } -+ pcie->irq = platform_get_irq(pdev, 0); -+ if (pcie->irq < 0) -+ return pcie->irq; - - pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node, - "reset-gpios", 0, -@@ -1658,11 +1656,14 @@ static int advk_pcie_probe(struct platfo - return ret; - } - -+ irq_set_chained_handler_and_data(pcie->irq, advk_pcie_irq_handler, pcie); -+ - bridge->sysdata = pcie; - bridge->ops = &advk_pcie_ops; - - ret = pci_host_probe(bridge); - if (ret < 0) { -+ irq_set_chained_handler_and_data(pcie->irq, NULL, NULL); - advk_pcie_remove_msi_irq_domain(pcie); - advk_pcie_remove_irq_domain(pcie); - return ret; -@@ -1710,6 +1711,9 @@ static int advk_pcie_remove(struct platf - advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG); - advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG); - -+ /* Remove IRQ handler */ -+ irq_set_chained_handler_and_data(pcie->irq, NULL, NULL); -+ - /* Remove IRQ domains */ - advk_pcie_remove_msi_irq_domain(pcie); - advk_pcie_remove_irq_domain(pcie); diff --git a/target/linux/generic/pending-5.15/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch b/target/linux/generic/pending-5.15/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch deleted file mode 100644 index fafcb3da2e..0000000000 --- a/target/linux/generic/pending-5.15/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 69c1f2c6f45a556361fd8e8d2d4eb20e2c8d3d95 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Thu, 18 Mar 2021 17:04:32 +0100 -Subject: [PATCH] PCI: aardvark: Check return value of - generic_handle_domain_irq() when processing INTx IRQ -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It is possible that we receive spurious INTx interrupt. Check for the -return value of generic_handle_domain_irq() when processing INTx IRQ. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1429,7 +1429,9 @@ static void advk_pcie_handle_int(struct - advk_writel(pcie, PCIE_ISR1_INTX_ASSERT(i), - PCIE_ISR1_REG); - -- generic_handle_domain_irq(pcie->irq_domain, i); -+ if (generic_handle_domain_irq(pcie->irq_domain, i) == -EINVAL) -+ dev_err_ratelimited(&pcie->pdev->dev, "unexpected INT%c IRQ\n", -+ (char)i + 'A'); - } - } - diff --git a/target/linux/generic/pending-5.15/850-0006-PCI-aardvark-Make-MSI-irq_chip-structures-static-dri.patch b/target/linux/generic/pending-5.15/850-0006-PCI-aardvark-Make-MSI-irq_chip-structures-static-dri.patch deleted file mode 100644 index 070809fa73..0000000000 --- a/target/linux/generic/pending-5.15/850-0006-PCI-aardvark-Make-MSI-irq_chip-structures-static-dri.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 5eb36a6b9508da442aac80f4df23e3951bbfa7aa Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Beh=C3=BAn?= -Date: Mon, 10 Jan 2022 00:03:41 +0100 -Subject: [PATCH] PCI: aardvark: Make MSI irq_chip structures static driver - structures -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Marc Zyngier says [1] that we should use struct irq_chip as a global -static struct in the driver. Even though the structure currently -contains a dynamic member (parent_device), Marc says [2] that he plans -to kill it and make the structure completely static. - -Convert Aardvark's priv->msi_bottom_irq_chip and priv->msi_irq_chip to -static driver structure. - -[1] https://lore.kernel.org/linux-pci/877dbcvngf.wl-maz@kernel.org/ -[2] https://lore.kernel.org/linux-pci/874k6gvkhz.wl-maz@kernel.org/ - -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 26 ++++++++++++-------------- - 1 file changed, 12 insertions(+), 14 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -274,8 +274,6 @@ struct advk_pcie { - raw_spinlock_t irq_lock; - struct irq_domain *msi_domain; - struct irq_domain *msi_inner_domain; -- struct irq_chip msi_bottom_irq_chip; -- struct irq_chip msi_irq_chip; - struct msi_domain_info msi_domain_info; - DECLARE_BITMAP(msi_used, MSI_IRQ_NUM); - struct mutex msi_used_lock; -@@ -1194,6 +1192,12 @@ static int advk_msi_set_affinity(struct - return -EINVAL; - } - -+static struct irq_chip advk_msi_bottom_irq_chip = { -+ .name = "MSI", -+ .irq_compose_msi_msg = advk_msi_irq_compose_msi_msg, -+ .irq_set_affinity = advk_msi_set_affinity, -+}; -+ - static int advk_msi_irq_domain_alloc(struct irq_domain *domain, - unsigned int virq, - unsigned int nr_irqs, void *args) -@@ -1210,7 +1214,7 @@ static int advk_msi_irq_domain_alloc(str - - for (i = 0; i < nr_irqs; i++) - irq_domain_set_info(domain, virq + i, hwirq + i, -- &pcie->msi_bottom_irq_chip, -+ &advk_msi_bottom_irq_chip, - domain->host_data, handle_simple_irq, - NULL, NULL); - -@@ -1280,29 +1284,23 @@ static const struct irq_domain_ops advk_ - .xlate = irq_domain_xlate_onecell, - }; - -+static struct irq_chip advk_msi_irq_chip = { -+ .name = "advk-MSI", -+}; -+ - static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie) - { - struct device *dev = &pcie->pdev->dev; - struct device_node *node = dev->of_node; -- struct irq_chip *bottom_ic, *msi_ic; - struct msi_domain_info *msi_di; - phys_addr_t msi_msg_phys; - - mutex_init(&pcie->msi_used_lock); - -- bottom_ic = &pcie->msi_bottom_irq_chip; -- -- bottom_ic->name = "MSI"; -- bottom_ic->irq_compose_msi_msg = advk_msi_irq_compose_msi_msg; -- bottom_ic->irq_set_affinity = advk_msi_set_affinity; -- -- msi_ic = &pcie->msi_irq_chip; -- msi_ic->name = "advk-MSI"; -- - msi_di = &pcie->msi_domain_info; - msi_di->flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | - MSI_FLAG_MULTI_PCI_MSI; -- msi_di->chip = msi_ic; -+ msi_di->chip = &advk_msi_irq_chip; - - msi_msg_phys = virt_to_phys(&pcie->msi_msg); - diff --git a/target/linux/generic/pending-5.15/850-0007-PCI-aardvark-Make-msi_domain_info-structure-a-static.patch b/target/linux/generic/pending-5.15/850-0007-PCI-aardvark-Make-msi_domain_info-structure-a-static.patch deleted file mode 100644 index 39760b9841..0000000000 --- a/target/linux/generic/pending-5.15/850-0007-PCI-aardvark-Make-msi_domain_info-structure-a-static.patch +++ /dev/null @@ -1,64 +0,0 @@ -From c092ab8994f1f777054c0179a9deb40b87ee606f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Beh=C3=BAn?= -Date: Mon, 10 Jan 2022 00:10:46 +0100 -Subject: [PATCH] PCI: aardvark: Make msi_domain_info structure a static driver - structure -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Make Aardvark's msi_domain_info structure into a private driver structure. -Domain info is same for every potential instatination of a controller. - -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -274,7 +274,6 @@ struct advk_pcie { - raw_spinlock_t irq_lock; - struct irq_domain *msi_domain; - struct irq_domain *msi_inner_domain; -- struct msi_domain_info msi_domain_info; - DECLARE_BITMAP(msi_used, MSI_IRQ_NUM); - struct mutex msi_used_lock; - u16 msi_msg; -@@ -1288,20 +1287,20 @@ static struct irq_chip advk_msi_irq_chip - .name = "advk-MSI", - }; - -+static struct msi_domain_info advk_msi_domain_info = { -+ .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | -+ MSI_FLAG_MULTI_PCI_MSI, -+ .chip = &advk_msi_irq_chip, -+}; -+ - static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie) - { - struct device *dev = &pcie->pdev->dev; - struct device_node *node = dev->of_node; -- struct msi_domain_info *msi_di; - phys_addr_t msi_msg_phys; - - mutex_init(&pcie->msi_used_lock); - -- msi_di = &pcie->msi_domain_info; -- msi_di->flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | -- MSI_FLAG_MULTI_PCI_MSI; -- msi_di->chip = &advk_msi_irq_chip; -- - msi_msg_phys = virt_to_phys(&pcie->msi_msg); - - advk_writel(pcie, lower_32_bits(msi_msg_phys), -@@ -1317,7 +1316,8 @@ static int advk_pcie_init_msi_irq_domain - - pcie->msi_domain = - pci_msi_create_irq_domain(of_node_to_fwnode(node), -- msi_di, pcie->msi_inner_domain); -+ &advk_msi_domain_info, -+ pcie->msi_inner_domain); - if (!pcie->msi_domain) { - irq_domain_remove(pcie->msi_inner_domain); - return -ENOMEM; diff --git a/target/linux/generic/pending-5.15/850-0008-PCI-aardvark-Use-dev_fwnode-instead-of-of_node_to_fw.patch b/target/linux/generic/pending-5.15/850-0008-PCI-aardvark-Use-dev_fwnode-instead-of-of_node_to_fw.patch deleted file mode 100644 index a72114d4d4..0000000000 --- a/target/linux/generic/pending-5.15/850-0008-PCI-aardvark-Use-dev_fwnode-instead-of-of_node_to_fw.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 59029739d42b439628e2f64f3d8f2db9be97deff Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Beh=C3=BAn?= -Date: Mon, 10 Jan 2022 00:15:17 +0100 -Subject: [PATCH] PCI: aardvark: Use dev_fwnode() instead of - of_node_to_fwnode(dev->of_node) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Use simple - dev_fwnode(dev) -instead of - struct device_node *node = dev->of_node; - of_node_to_fwnode(node) -especially since the node variable is not used elsewhere in the function. - -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1296,7 +1296,6 @@ static struct msi_domain_info advk_msi_d - static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie) - { - struct device *dev = &pcie->pdev->dev; -- struct device_node *node = dev->of_node; - phys_addr_t msi_msg_phys; - - mutex_init(&pcie->msi_used_lock); -@@ -1315,7 +1314,7 @@ static int advk_pcie_init_msi_irq_domain - return -ENOMEM; - - pcie->msi_domain = -- pci_msi_create_irq_domain(of_node_to_fwnode(node), -+ pci_msi_create_irq_domain(dev_fwnode(dev), - &advk_msi_domain_info, - pcie->msi_inner_domain); - if (!pcie->msi_domain) { diff --git a/target/linux/generic/pending-5.15/850-0009-PCI-aardvark-Refactor-unmasking-summary-MSI-interrup.patch b/target/linux/generic/pending-5.15/850-0009-PCI-aardvark-Refactor-unmasking-summary-MSI-interrup.patch deleted file mode 100644 index 7c36f7d2d6..0000000000 --- a/target/linux/generic/pending-5.15/850-0009-PCI-aardvark-Refactor-unmasking-summary-MSI-interrup.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 98feaf97bc64fc640a6c5b1394cd18fc7cd7dac8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Sun, 28 Mar 2021 14:34:49 +0200 -Subject: [PATCH] PCI: aardvark: Refactor unmasking summary MSI interrupt -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Refactor the masking of ISR0/1 Sources and unmasking of summary MSI interrupt -so that it corresponds to the comments: -- first mask all ISR0/1 -- then unmask all MSIs -- then unmask summary MSI interrupt - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -571,15 +571,17 @@ static void advk_pcie_setup_hw(struct ad - advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG); - - /* Disable All ISR0/1 Sources */ -- reg = PCIE_ISR0_ALL_MASK; -- reg &= ~PCIE_ISR0_MSI_INT_PENDING; -- advk_writel(pcie, reg, PCIE_ISR0_MASK_REG); -- -+ advk_writel(pcie, PCIE_ISR0_ALL_MASK, PCIE_ISR0_MASK_REG); - advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_MASK_REG); - - /* Unmask all MSIs */ - advk_writel(pcie, ~(u32)PCIE_MSI_ALL_MASK, PCIE_MSI_MASK_REG); - -+ /* Unmask summary MSI interrupt */ -+ reg = advk_readl(pcie, PCIE_ISR0_MASK_REG); -+ reg &= ~PCIE_ISR0_MSI_INT_PENDING; -+ advk_writel(pcie, reg, PCIE_ISR0_MASK_REG); -+ - /* Enable summary interrupt for GIC SPI source */ - reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK); - advk_writel(pcie, reg, HOST_CTRL_INT_MASK_REG); diff --git a/target/linux/generic/pending-5.15/850-0010-PCI-aardvark-Add-support-for-masking-MSI-interrupts.patch b/target/linux/generic/pending-5.15/850-0010-PCI-aardvark-Add-support-for-masking-MSI-interrupts.patch deleted file mode 100644 index 9be37134ce..0000000000 --- a/target/linux/generic/pending-5.15/850-0010-PCI-aardvark-Add-support-for-masking-MSI-interrupts.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 7f353accca6e4a3222991c65b1a6801503973bd3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Fri, 2 Jul 2021 16:44:10 +0200 -Subject: [PATCH] PCI: aardvark: Add support for masking MSI interrupts -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We should not unmask MSIs at setup, but only when kernel asks for them -to be unmasked. - -At setup, mask all MSIs, and implement IRQ chip callbacks for masking -and unmasking particular MSIs. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 54 ++++++++++++++++++++++++--- - 1 file changed, 49 insertions(+), 5 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -274,6 +274,7 @@ struct advk_pcie { - raw_spinlock_t irq_lock; - struct irq_domain *msi_domain; - struct irq_domain *msi_inner_domain; -+ raw_spinlock_t msi_irq_lock; - DECLARE_BITMAP(msi_used, MSI_IRQ_NUM); - struct mutex msi_used_lock; - u16 msi_msg; -@@ -570,12 +571,10 @@ static void advk_pcie_setup_hw(struct ad - advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG); - advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG); - -- /* Disable All ISR0/1 Sources */ -+ /* Disable All ISR0/1 and MSI Sources */ - advk_writel(pcie, PCIE_ISR0_ALL_MASK, PCIE_ISR0_MASK_REG); - advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_MASK_REG); -- -- /* Unmask all MSIs */ -- advk_writel(pcie, ~(u32)PCIE_MSI_ALL_MASK, PCIE_MSI_MASK_REG); -+ advk_writel(pcie, PCIE_MSI_ALL_MASK, PCIE_MSI_MASK_REG); - - /* Unmask summary MSI interrupt */ - reg = advk_readl(pcie, PCIE_ISR0_MASK_REG); -@@ -1193,10 +1192,52 @@ static int advk_msi_set_affinity(struct - return -EINVAL; - } - -+static void advk_msi_irq_mask(struct irq_data *d) -+{ -+ struct advk_pcie *pcie = d->domain->host_data; -+ irq_hw_number_t hwirq = irqd_to_hwirq(d); -+ unsigned long flags; -+ u32 mask; -+ -+ raw_spin_lock_irqsave(&pcie->msi_irq_lock, flags); -+ mask = advk_readl(pcie, PCIE_MSI_MASK_REG); -+ mask |= BIT(hwirq); -+ advk_writel(pcie, mask, PCIE_MSI_MASK_REG); -+ raw_spin_unlock_irqrestore(&pcie->msi_irq_lock, flags); -+} -+ -+static void advk_msi_irq_unmask(struct irq_data *d) -+{ -+ struct advk_pcie *pcie = d->domain->host_data; -+ irq_hw_number_t hwirq = irqd_to_hwirq(d); -+ unsigned long flags; -+ u32 mask; -+ -+ raw_spin_lock_irqsave(&pcie->msi_irq_lock, flags); -+ mask = advk_readl(pcie, PCIE_MSI_MASK_REG); -+ mask &= ~BIT(hwirq); -+ advk_writel(pcie, mask, PCIE_MSI_MASK_REG); -+ raw_spin_unlock_irqrestore(&pcie->msi_irq_lock, flags); -+} -+ -+static void advk_msi_top_irq_mask(struct irq_data *d) -+{ -+ pci_msi_mask_irq(d); -+ irq_chip_mask_parent(d); -+} -+ -+static void advk_msi_top_irq_unmask(struct irq_data *d) -+{ -+ pci_msi_unmask_irq(d); -+ irq_chip_unmask_parent(d); -+} -+ - static struct irq_chip advk_msi_bottom_irq_chip = { - .name = "MSI", - .irq_compose_msi_msg = advk_msi_irq_compose_msi_msg, - .irq_set_affinity = advk_msi_set_affinity, -+ .irq_mask = advk_msi_irq_mask, -+ .irq_unmask = advk_msi_irq_unmask, - }; - - static int advk_msi_irq_domain_alloc(struct irq_domain *domain, -@@ -1286,7 +1327,9 @@ static const struct irq_domain_ops advk_ - }; - - static struct irq_chip advk_msi_irq_chip = { -- .name = "advk-MSI", -+ .name = "advk-MSI", -+ .irq_mask = advk_msi_top_irq_mask, -+ .irq_unmask = advk_msi_top_irq_unmask, - }; - - static struct msi_domain_info advk_msi_domain_info = { -@@ -1300,6 +1343,7 @@ static int advk_pcie_init_msi_irq_domain - struct device *dev = &pcie->pdev->dev; - phys_addr_t msi_msg_phys; - -+ raw_spin_lock_init(&pcie->msi_irq_lock); - mutex_init(&pcie->msi_used_lock); - - msi_msg_phys = virt_to_phys(&pcie->msi_msg); diff --git a/target/linux/generic/pending-5.15/850-0011-PCI-aardvark-Fix-setting-MSI-address.patch b/target/linux/generic/pending-5.15/850-0011-PCI-aardvark-Fix-setting-MSI-address.patch deleted file mode 100644 index ebc700b93d..0000000000 --- a/target/linux/generic/pending-5.15/850-0011-PCI-aardvark-Fix-setting-MSI-address.patch +++ /dev/null @@ -1,91 +0,0 @@ -From fa73c200f181436eab859374657c53a73778d8ad Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Fri, 26 Mar 2021 17:35:44 +0100 -Subject: [PATCH] PCI: aardvark: Fix setting MSI address -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -MSI address for receiving MSI interrupts needs to be correctly set before -enabling processing of MSI interrupts. - -Move code for setting PCIE_MSI_ADDR_LOW_REG and PCIE_MSI_ADDR_HIGH_REG -from advk_pcie_init_msi_irq_domain() to advk_pcie_setup_hw(), before -enabling PCIE_CORE_CTRL2_MSI_ENABLE. - -After this we can remove the now unused member msi_msg, which was used -only for MSI doorbell address. MSI address can be any address which cannot -be used to DMA to. So change it to the address of the main struct advk_pcie. - -Fixes: 8c39d710363c ("PCI: aardvark: Add Aardvark PCI host controller driver") -Signed-off-by: Pali Rohár -Acked-by: Marc Zyngier -Signed-off-by: Marek Behún -Cc: stable@vger.kernel.org # f21a8b1b6837 ("PCI: aardvark: Move to MSI handling using generic MSI support") ---- - drivers/pci/controller/pci-aardvark.c | 21 +++++++++------------ - 1 file changed, 9 insertions(+), 12 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -277,7 +277,6 @@ struct advk_pcie { - raw_spinlock_t msi_irq_lock; - DECLARE_BITMAP(msi_used, MSI_IRQ_NUM); - struct mutex msi_used_lock; -- u16 msi_msg; - int link_gen; - struct pci_bridge_emul bridge; - struct gpio_desc *reset_gpio; -@@ -472,6 +471,7 @@ static void advk_pcie_disable_ob_win(str - - static void advk_pcie_setup_hw(struct advk_pcie *pcie) - { -+ phys_addr_t msi_addr; - u32 reg; - int i; - -@@ -560,6 +560,11 @@ static void advk_pcie_setup_hw(struct ad - reg |= LANE_COUNT_1; - advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG); - -+ /* Set MSI address */ -+ msi_addr = virt_to_phys(pcie); -+ advk_writel(pcie, lower_32_bits(msi_addr), PCIE_MSI_ADDR_LOW_REG); -+ advk_writel(pcie, upper_32_bits(msi_addr), PCIE_MSI_ADDR_HIGH_REG); -+ - /* Enable MSI */ - reg = advk_readl(pcie, PCIE_CORE_CTRL2_REG); - reg |= PCIE_CORE_CTRL2_MSI_ENABLE; -@@ -1179,10 +1184,10 @@ static void advk_msi_irq_compose_msi_msg - struct msi_msg *msg) - { - struct advk_pcie *pcie = irq_data_get_irq_chip_data(data); -- phys_addr_t msi_msg = virt_to_phys(&pcie->msi_msg); -+ phys_addr_t msi_addr = virt_to_phys(pcie); - -- msg->address_lo = lower_32_bits(msi_msg); -- msg->address_hi = upper_32_bits(msi_msg); -+ msg->address_lo = lower_32_bits(msi_addr); -+ msg->address_hi = upper_32_bits(msi_addr); - msg->data = data->hwirq; - } - -@@ -1341,18 +1346,10 @@ static struct msi_domain_info advk_msi_d - static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie) - { - struct device *dev = &pcie->pdev->dev; -- phys_addr_t msi_msg_phys; - - raw_spin_lock_init(&pcie->msi_irq_lock); - mutex_init(&pcie->msi_used_lock); - -- msi_msg_phys = virt_to_phys(&pcie->msi_msg); -- -- advk_writel(pcie, lower_32_bits(msi_msg_phys), -- PCIE_MSI_ADDR_LOW_REG); -- advk_writel(pcie, upper_32_bits(msi_msg_phys), -- PCIE_MSI_ADDR_HIGH_REG); -- - pcie->msi_inner_domain = - irq_domain_add_linear(NULL, MSI_IRQ_NUM, - &advk_msi_domain_ops, pcie); diff --git a/target/linux/generic/pending-5.15/850-0012-PCI-aardvark-Enable-MSI-X-support.patch b/target/linux/generic/pending-5.15/850-0012-PCI-aardvark-Enable-MSI-X-support.patch deleted file mode 100644 index eeca51438e..0000000000 --- a/target/linux/generic/pending-5.15/850-0012-PCI-aardvark-Enable-MSI-X-support.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 735a4ac9782b96fbe1543c578aa8334364f21abd Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Fri, 2 Apr 2021 14:05:24 +0200 -Subject: [PATCH] PCI: aardvark: Enable MSI-X support -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -According to PCI 3.0 specification, sending both MSI and MSI-X interrupts -is done by DWORD memory write operation to doorbell message address. The -write operation for MSI has zero upper 16 bits and the MSI interrupt number -in the lower 16 bits, while the write operation for MSI-X contains a 32-bit -value from MSI-X table. - -Since the driver only uses interrupt numbers from range 0..31, the upper -16 bits of the DWORD memory write operation to doorbell message address -are zero even for MSI-X interrupts. Thus we can enable MSI-X interrupts. - -Testing proves that kernel can correctly receive MSI-X interrupts from PCIe -cards which supports both MSI and MSI-X interrupts. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1339,7 +1339,7 @@ static struct irq_chip advk_msi_irq_chip - - static struct msi_domain_info advk_msi_domain_info = { - .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | -- MSI_FLAG_MULTI_PCI_MSI, -+ MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX, - .chip = &advk_msi_irq_chip, - }; - diff --git a/target/linux/generic/pending-5.15/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch b/target/linux/generic/pending-5.15/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch deleted file mode 100644 index 979f00c9a3..0000000000 --- a/target/linux/generic/pending-5.15/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 7f3e55a3890fa26d15e2e4e90213962d1a7f6df9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Fri, 12 Feb 2021 20:32:55 +0100 -Subject: [PATCH] PCI: aardvark: Add support for ERR interrupt on emulated - bridge -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -ERR interrupt is triggered when corresponding bit is unmasked in both ISR0 -and PCI_EXP_DEVCTL registers. Unmasking ERR bits in PCI_EXP_DEVCTL register -is not enough. This means that currently the ERR interrupt is never -triggered. - -Unmask ERR bits in ISR0 register at driver probe time. ERR interrupt is not -triggered until ERR bits are unmasked also in PCI_EXP_DEVCTL register, -which is done by AER driver. So it is safe to unconditionally unmask all -ERR bits in aardvark probe. - -Aardvark HW sets PCI_ERR_ROOT_AER_IRQ to zero and when corresponding bits -in ISR0 and PCI_EXP_DEVCTL are enabled, the HW triggers a generic interrupt -on GIC. Chain this interrupt to PCIe interrupt 0 with -generic_handle_domain_irq() to allow processing of ERR interrupts. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 36 ++++++++++++++++++++++++++- - 1 file changed, 35 insertions(+), 1 deletion(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -98,6 +98,10 @@ - #define PCIE_MSG_PM_PME_MASK BIT(7) - #define PCIE_ISR0_MASK_REG (CONTROL_BASE_ADDR + 0x44) - #define PCIE_ISR0_MSI_INT_PENDING BIT(24) -+#define PCIE_ISR0_CORR_ERR BIT(11) -+#define PCIE_ISR0_NFAT_ERR BIT(12) -+#define PCIE_ISR0_FAT_ERR BIT(13) -+#define PCIE_ISR0_ERR_MASK GENMASK(13, 11) - #define PCIE_ISR0_INTX_ASSERT(val) BIT(16 + (val)) - #define PCIE_ISR0_INTX_DEASSERT(val) BIT(20 + (val)) - #define PCIE_ISR0_ALL_MASK GENMASK(31, 0) -@@ -778,11 +782,15 @@ advk_pci_bridge_emul_base_conf_read(stru - case PCI_INTERRUPT_LINE: { - /* - * From the whole 32bit register we support reading from HW only -- * one bit: PCI_BRIDGE_CTL_BUS_RESET. -+ * two bits: PCI_BRIDGE_CTL_BUS_RESET and PCI_BRIDGE_CTL_SERR. - * Other bits are retrieved only from emulated config buffer. - */ - __le32 *cfgspace = (__le32 *)&bridge->conf; - u32 val = le32_to_cpu(cfgspace[PCI_INTERRUPT_LINE / 4]); -+ if (advk_readl(pcie, PCIE_ISR0_MASK_REG) & PCIE_ISR0_ERR_MASK) -+ val &= ~(PCI_BRIDGE_CTL_SERR << 16); -+ else -+ val |= PCI_BRIDGE_CTL_SERR << 16; - if (advk_readl(pcie, PCIE_CORE_CTRL1_REG) & HOT_RESET_GEN) - val |= PCI_BRIDGE_CTL_BUS_RESET << 16; - else -@@ -808,6 +816,19 @@ advk_pci_bridge_emul_base_conf_write(str - break; - - case PCI_INTERRUPT_LINE: -+ /* -+ * According to Figure 6-3: Pseudo Logic Diagram for Error -+ * Message Controls in PCIe base specification, SERR# Enable bit -+ * in Bridge Control register enable receiving of ERR_* messages -+ */ -+ if (mask & (PCI_BRIDGE_CTL_SERR << 16)) { -+ u32 val = advk_readl(pcie, PCIE_ISR0_MASK_REG); -+ if (new & (PCI_BRIDGE_CTL_SERR << 16)) -+ val &= ~PCIE_ISR0_ERR_MASK; -+ else -+ val |= PCIE_ISR0_ERR_MASK; -+ advk_writel(pcie, val, PCIE_ISR0_MASK_REG); -+ } - if (mask & (PCI_BRIDGE_CTL_BUS_RESET << 16)) { - u32 val = advk_readl(pcie, PCIE_CORE_CTRL1_REG); - if (new & (PCI_BRIDGE_CTL_BUS_RESET << 16)) -@@ -1457,6 +1478,18 @@ static void advk_pcie_handle_int(struct - isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG); - isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK); - -+ /* Process ERR interrupt */ -+ if (isr0_status & PCIE_ISR0_ERR_MASK) { -+ advk_writel(pcie, PCIE_ISR0_ERR_MASK, PCIE_ISR0_REG); -+ -+ /* -+ * Aardvark HW returns zero for PCI_ERR_ROOT_AER_IRQ, so use -+ * PCIe interrupt 0 -+ */ -+ if (generic_handle_domain_irq(pcie->irq_domain, 0) == -EINVAL) -+ dev_err_ratelimited(&pcie->pdev->dev, "unhandled ERR IRQ\n"); -+ } -+ - /* Process MSI interrupts */ - if (isr0_status & PCIE_ISR0_MSI_INT_PENDING) - advk_pcie_handle_msi(pcie); diff --git a/target/linux/generic/pending-5.15/850-0015-PCI-aardvark-Optimize-writing-PCI_EXP_RTCTL_PMEIE-an.patch b/target/linux/generic/pending-5.15/850-0015-PCI-aardvark-Optimize-writing-PCI_EXP_RTCTL_PMEIE-an.patch deleted file mode 100644 index f988bb3e62..0000000000 --- a/target/linux/generic/pending-5.15/850-0015-PCI-aardvark-Optimize-writing-PCI_EXP_RTCTL_PMEIE-an.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 3fe0073d116d9902df08761c1cf0d733dd4c38fc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Wed, 8 Dec 2021 06:03:50 +0100 -Subject: [PATCH] PCI: aardvark: Optimize writing PCI_EXP_RTCTL_PMEIE and - PCI_EXP_RTSTA_PME on emulated bridge -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -To optimize advk_pci_bridge_emul_pcie_conf_write() code, touch -PCIE_ISR0_REG and PCIE_ISR0_MASK_REG registers only when it is really -needed, when processing PCI_EXP_RTCTL_PMEIE and PCI_EXP_RTSTA_PME bits. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 20 +++++++++++--------- - 1 file changed, 11 insertions(+), 9 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -925,19 +925,21 @@ advk_pci_bridge_emul_pcie_conf_write(str - advk_pcie_wait_for_retrain(pcie); - break; - -- case PCI_EXP_RTCTL: { -+ case PCI_EXP_RTCTL: - /* Only mask/unmask PME interrupt */ -- u32 val = advk_readl(pcie, PCIE_ISR0_MASK_REG) & -- ~PCIE_MSG_PM_PME_MASK; -- if ((new & PCI_EXP_RTCTL_PMEIE) == 0) -- val |= PCIE_MSG_PM_PME_MASK; -- advk_writel(pcie, val, PCIE_ISR0_MASK_REG); -+ if (mask & PCI_EXP_RTCTL_PMEIE) { -+ u32 val = advk_readl(pcie, PCIE_ISR0_MASK_REG); -+ if (new & PCI_EXP_RTCTL_PMEIE) -+ val &= ~PCIE_MSG_PM_PME_MASK; -+ else -+ val |= PCIE_MSG_PM_PME_MASK; -+ advk_writel(pcie, val, PCIE_ISR0_MASK_REG); -+ } - break; -- } - - case PCI_EXP_RTSTA: -- new = (new & PCI_EXP_RTSTA_PME) >> 9; -- advk_writel(pcie, new, PCIE_ISR0_REG); -+ if (new & PCI_EXP_RTSTA_PME) -+ advk_writel(pcie, PCIE_MSG_PM_PME_MASK, PCIE_ISR0_REG); - break; - - case PCI_EXP_DEVCTL: diff --git a/target/linux/generic/pending-5.15/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch b/target/linux/generic/pending-5.15/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch deleted file mode 100644 index 3b4d21ec48..0000000000 --- a/target/linux/generic/pending-5.15/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 7acd8ef92e8789e10b5d736d73cea3b625087f26 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Wed, 8 Dec 2021 06:07:44 +0100 -Subject: [PATCH] PCI: aardvark: Add support for PME interrupts -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Currently enabling PCI_EXP_RTSTA_PME bit in PCI_EXP_RTCTL register does -nothing. This is because PCIe PME driver expects to receive PCIe interrupt -defined in PCI_EXP_FLAGS_IRQ register, but aardvark hardware does not -trigger PCIe INTx/MSI interrupt for PME event, rather it triggers custom -aardvark interrupt which this driver is not processing yet. - -Fix this issue by handling PME interrupt in advk_pcie_handle_int() and -chaining it to PCIe interrupt 0 with generic_handle_domain_irq() (since -aardvark sets PCI_EXP_FLAGS_IRQ to zero). With this change PCIe PME driver -finally starts receiving PME interrupt. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1480,6 +1480,18 @@ static void advk_pcie_handle_int(struct - isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG); - isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK); - -+ /* Process PME interrupt */ -+ if (isr0_status & PCIE_MSG_PM_PME_MASK) { -+ /* -+ * Do not clear PME interrupt bit in ISR0, it is cleared by IRQ -+ * receiver by writing to the PCI_EXP_RTSTA register of emulated -+ * root bridge. Aardvark HW returns zero for PCI_EXP_FLAGS_IRQ, -+ * so use PCIe interrupt 0. -+ */ -+ if (generic_handle_domain_irq(pcie->irq_domain, 0) == -EINVAL) -+ dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n"); -+ } -+ - /* Process ERR interrupt */ - if (isr0_status & PCIE_ISR0_ERR_MASK) { - advk_writel(pcie, PCIE_ISR0_ERR_MASK, PCIE_ISR0_REG); diff --git a/target/linux/generic/pending-5.15/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch b/target/linux/generic/pending-5.15/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch deleted file mode 100644 index 2ef9afea5b..0000000000 --- a/target/linux/generic/pending-5.15/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch +++ /dev/null @@ -1,170 +0,0 @@ -From 68727b545332327b4c2f9c0f8d006be8970e7832 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Fri, 19 Feb 2021 14:22:22 +0100 -Subject: [PATCH] PCI: aardvark: Fix support for PME requester on emulated - bridge -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Enable aardvark PME interrupt unconditionally by unmasking it and read PME -requester ID to emulated bridge config space immediately after receiving -interrupt. - -PME requester ID is stored in the PCIE_MSG_LOG_REG register, which contains -the last inbound message. So when new inbound message is received by HW -(including non-PM), the content in PCIE_MSG_LOG_REG register is replaced by -a new value. - -PCIe specification mandates that subsequent PMEs are kept pending until the -PME Status Register bit is cleared by software by writing a 1b. - -Support for masking/unmasking PME interrupt on emulated bridge via -PCI_EXP_RTCTL_PMEIE bit is now implemented only in emulated bridge config -space, to ensure that we do not miss any aardvark PME interrupt. - -Reading of PCI_EXP_RTCAP and PCI_EXP_RTSTA registers is simplified as final -value is now always stored into emulated bridge config space by the -interrupt handler, so there is no need to implement support for these -registers in read_pcie callback. - -Clearing of W1C bit PCI_EXP_RTSTA_PME is now also simplified as it is done -by pci-bridge-emul.c code for emulated bridge config space. So there is no -need to implement support for clearing this bit in write_pcie callback. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 94 +++++++++++++++------------ - 1 file changed, 52 insertions(+), 42 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -590,6 +590,11 @@ static void advk_pcie_setup_hw(struct ad - reg &= ~PCIE_ISR0_MSI_INT_PENDING; - advk_writel(pcie, reg, PCIE_ISR0_MASK_REG); - -+ /* Unmask PME interrupt for processing of PME requester */ -+ reg = advk_readl(pcie, PCIE_ISR0_MASK_REG); -+ reg &= ~PCIE_MSG_PM_PME_MASK; -+ advk_writel(pcie, reg, PCIE_ISR0_MASK_REG); -+ - /* Enable summary interrupt for GIC SPI source */ - reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK); - advk_writel(pcie, reg, HOST_CTRL_INT_MASK_REG); -@@ -856,22 +861,11 @@ advk_pci_bridge_emul_pcie_conf_read(stru - *value = PCI_EXP_SLTSTA_PDS << 16; - return PCI_BRIDGE_EMUL_HANDLED; - -- case PCI_EXP_RTCTL: { -- u32 val = advk_readl(pcie, PCIE_ISR0_MASK_REG); -- *value = (val & PCIE_MSG_PM_PME_MASK) ? 0 : PCI_EXP_RTCTL_PMEIE; -- *value |= le16_to_cpu(bridge->pcie_conf.rootctl) & PCI_EXP_RTCTL_CRSSVE; -- *value |= PCI_EXP_RTCAP_CRSVIS << 16; -- return PCI_BRIDGE_EMUL_HANDLED; -- } -- -- case PCI_EXP_RTSTA: { -- u32 isr0 = advk_readl(pcie, PCIE_ISR0_REG); -- u32 msglog = advk_readl(pcie, PCIE_MSG_LOG_REG); -- *value = msglog >> 16; -- if (isr0 & PCIE_MSG_PM_PME_MASK) -- *value |= PCI_EXP_RTSTA_PME; -- return PCI_BRIDGE_EMUL_HANDLED; -- } -+ /* -+ * PCI_EXP_RTCTL and PCI_EXP_RTSTA are also supported, but do not need -+ * to be handled here, because their values are stored in emulated -+ * config space buffer, and we read them from there when needed. -+ */ - - case PCI_EXP_LNKCAP: { - u32 val = advk_readl(pcie, PCIE_CORE_PCIEXP_CAP + reg); -@@ -925,22 +919,19 @@ advk_pci_bridge_emul_pcie_conf_write(str - advk_pcie_wait_for_retrain(pcie); - break; - -- case PCI_EXP_RTCTL: -- /* Only mask/unmask PME interrupt */ -- if (mask & PCI_EXP_RTCTL_PMEIE) { -- u32 val = advk_readl(pcie, PCIE_ISR0_MASK_REG); -- if (new & PCI_EXP_RTCTL_PMEIE) -- val &= ~PCIE_MSG_PM_PME_MASK; -- else -- val |= PCIE_MSG_PM_PME_MASK; -- advk_writel(pcie, val, PCIE_ISR0_MASK_REG); -- } -+ case PCI_EXP_RTCTL: { -+ u16 rootctl = le16_to_cpu(bridge->pcie_conf.rootctl); -+ /* Only emulation of PMEIE and CRSSVE bits is provided */ -+ rootctl &= PCI_EXP_RTCTL_PMEIE | PCI_EXP_RTCTL_CRSSVE; -+ bridge->pcie_conf.rootctl = cpu_to_le16(rootctl); - break; -+ } - -- case PCI_EXP_RTSTA: -- if (new & PCI_EXP_RTSTA_PME) -- advk_writel(pcie, PCIE_MSG_PM_PME_MASK, PCIE_ISR0_REG); -- break; -+ /* -+ * PCI_EXP_RTSTA is also supported, but does not need to be handled -+ * here, because its value is stored in emulated config space buffer, -+ * and we write it there when needed. -+ */ - - case PCI_EXP_DEVCTL: - case PCI_EXP_DEVCTL2: -@@ -1445,6 +1436,32 @@ static void advk_pcie_remove_irq_domain( - irq_domain_remove(pcie->irq_domain); - } - -+static void advk_pcie_handle_pme(struct advk_pcie *pcie) -+{ -+ u32 requester = advk_readl(pcie, PCIE_MSG_LOG_REG) >> 16; -+ -+ advk_writel(pcie, PCIE_MSG_PM_PME_MASK, PCIE_ISR0_REG); -+ -+ /* -+ * PCIE_MSG_LOG_REG contains the last inbound message, so store -+ * the requester ID only when PME was not asserted yet. -+ * Also do not trigger PME interrupt when PME is still asserted. -+ */ -+ if (!(le32_to_cpu(pcie->bridge.pcie_conf.rootsta) & PCI_EXP_RTSTA_PME)) { -+ pcie->bridge.pcie_conf.rootsta = cpu_to_le32(requester | PCI_EXP_RTSTA_PME); -+ -+ /* -+ * Trigger PME interrupt only if PMEIE bit in Root Control is set. -+ * Aardvark HW returns zero for PCI_EXP_FLAGS_IRQ, so use PCIe interrupt 0. -+ */ -+ if (!(le16_to_cpu(pcie->bridge.pcie_conf.rootctl) & PCI_EXP_RTCTL_PMEIE)) -+ return; -+ -+ if (generic_handle_domain_irq(pcie->irq_domain, 0) == -EINVAL) -+ dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n"); -+ } -+} -+ - static void advk_pcie_handle_msi(struct advk_pcie *pcie) - { - u32 msi_val, msi_mask, msi_status, msi_idx; -@@ -1480,17 +1497,9 @@ static void advk_pcie_handle_int(struct - isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG); - isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK); - -- /* Process PME interrupt */ -- if (isr0_status & PCIE_MSG_PM_PME_MASK) { -- /* -- * Do not clear PME interrupt bit in ISR0, it is cleared by IRQ -- * receiver by writing to the PCI_EXP_RTSTA register of emulated -- * root bridge. Aardvark HW returns zero for PCI_EXP_FLAGS_IRQ, -- * so use PCIe interrupt 0. -- */ -- if (generic_handle_domain_irq(pcie->irq_domain, 0) == -EINVAL) -- dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n"); -- } -+ /* Process PME interrupt as the first one to do not miss PME requester id */ -+ if (isr0_status & PCIE_MSG_PM_PME_MASK) -+ advk_pcie_handle_pme(pcie); - - /* Process ERR interrupt */ - if (isr0_status & PCIE_ISR0_ERR_MASK) { diff --git a/target/linux/generic/pending-5.15/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch b/target/linux/generic/pending-5.15/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch deleted file mode 100644 index d30b9bf639..0000000000 --- a/target/linux/generic/pending-5.15/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch +++ /dev/null @@ -1,161 +0,0 @@ -From db305233136f5aa2444a8287a279384e8458c458 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Thu, 1 Apr 2021 20:12:48 +0200 -Subject: [PATCH] PCI: aardvark: Use separate INTA interrupt for emulated root - bridge -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Emulated root bridge currently provides only one Legacy INTA interrupt -which is used for reporting PCIe PME and ERR events and handled by kernel -PCIe PME and AER drivers. - -Aardvark HW reports these PME and ERR events separately, so there is no -need to mix real INTA interrupt and emulated INTA interrupt for PCIe PME -and AER drivers. - -Register a new advk-RP (as in Root Port) irq chip and a new irq domain -for emulated root bridge and use this new separate irq domain for -providing INTA interrupt from emulated root bridge for PME and ERR events. - -The real INTA interrupt from real devices is now separate. - -A custom map_irq callback function on PCI host bridge structure is used to -allocate IRQ mapping for emulated root bridge from new irq domain. Original -callback of_irq_parse_and_map_pci() is used for all other devices as before. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 69 ++++++++++++++++++++++++++- - 1 file changed, 67 insertions(+), 2 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -273,6 +273,7 @@ struct advk_pcie { - } wins[OB_WIN_COUNT]; - u8 wins_count; - int irq; -+ struct irq_domain *rp_irq_domain; - struct irq_domain *irq_domain; - struct irq_chip irq_chip; - raw_spinlock_t irq_lock; -@@ -1436,6 +1437,44 @@ static void advk_pcie_remove_irq_domain( - irq_domain_remove(pcie->irq_domain); - } - -+static struct irq_chip advk_rp_irq_chip = { -+ .name = "advk-RP", -+}; -+ -+static int advk_pcie_rp_irq_map(struct irq_domain *h, -+ unsigned int virq, irq_hw_number_t hwirq) -+{ -+ struct advk_pcie *pcie = h->host_data; -+ -+ irq_set_chip_and_handler(virq, &advk_rp_irq_chip, handle_simple_irq); -+ irq_set_chip_data(virq, pcie); -+ -+ return 0; -+} -+ -+static const struct irq_domain_ops advk_pcie_rp_irq_domain_ops = { -+ .map = advk_pcie_rp_irq_map, -+ .xlate = irq_domain_xlate_onecell, -+}; -+ -+static int advk_pcie_init_rp_irq_domain(struct advk_pcie *pcie) -+{ -+ pcie->rp_irq_domain = irq_domain_add_linear(NULL, 1, -+ &advk_pcie_rp_irq_domain_ops, -+ pcie); -+ if (!pcie->rp_irq_domain) { -+ dev_err(&pcie->pdev->dev, "Failed to add Root Port IRQ domain\n"); -+ return -ENOMEM; -+ } -+ -+ return 0; -+} -+ -+static void advk_pcie_remove_rp_irq_domain(struct advk_pcie *pcie) -+{ -+ irq_domain_remove(pcie->rp_irq_domain); -+} -+ - static void advk_pcie_handle_pme(struct advk_pcie *pcie) - { - u32 requester = advk_readl(pcie, PCIE_MSG_LOG_REG) >> 16; -@@ -1457,7 +1496,7 @@ static void advk_pcie_handle_pme(struct - if (!(le16_to_cpu(pcie->bridge.pcie_conf.rootctl) & PCI_EXP_RTCTL_PMEIE)) - return; - -- if (generic_handle_domain_irq(pcie->irq_domain, 0) == -EINVAL) -+ if (generic_handle_domain_irq(pcie->rp_irq_domain, 0) == -EINVAL) - dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n"); - } - } -@@ -1509,7 +1548,7 @@ static void advk_pcie_handle_int(struct - * Aardvark HW returns zero for PCI_ERR_ROOT_AER_IRQ, so use - * PCIe interrupt 0 - */ -- if (generic_handle_domain_irq(pcie->irq_domain, 0) == -EINVAL) -+ if (generic_handle_domain_irq(pcie->rp_irq_domain, 0) == -EINVAL) - dev_err_ratelimited(&pcie->pdev->dev, "unhandled ERR IRQ\n"); - } - -@@ -1553,6 +1592,21 @@ static void advk_pcie_irq_handler(struct - chained_irq_exit(chip, desc); - } - -+static int advk_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) -+{ -+ struct advk_pcie *pcie = dev->bus->sysdata; -+ -+ /* -+ * Emulated root bridge has its own emulated irq chip and irq domain. -+ * Argument pin is the INTx pin (1=INTA, 2=INTB, 3=INTC, 4=INTD) and -+ * hwirq for irq_create_mapping() is indexed from zero. -+ */ -+ if (pci_is_root_bus(dev->bus)) -+ return irq_create_mapping(pcie->rp_irq_domain, pin - 1); -+ else -+ return of_irq_parse_and_map_pci(dev, slot, pin); -+} -+ - static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie) - { - phy_power_off(pcie->phy); -@@ -1754,14 +1808,24 @@ static int advk_pcie_probe(struct platfo - return ret; - } - -+ ret = advk_pcie_init_rp_irq_domain(pcie); -+ if (ret) { -+ dev_err(dev, "Failed to initialize irq\n"); -+ advk_pcie_remove_msi_irq_domain(pcie); -+ advk_pcie_remove_irq_domain(pcie); -+ return ret; -+ } -+ - irq_set_chained_handler_and_data(pcie->irq, advk_pcie_irq_handler, pcie); - - bridge->sysdata = pcie; - bridge->ops = &advk_pcie_ops; -+ bridge->map_irq = advk_pcie_map_irq; - - ret = pci_host_probe(bridge); - if (ret < 0) { - irq_set_chained_handler_and_data(pcie->irq, NULL, NULL); -+ advk_pcie_remove_rp_irq_domain(pcie); - advk_pcie_remove_msi_irq_domain(pcie); - advk_pcie_remove_irq_domain(pcie); - return ret; -@@ -1813,6 +1877,7 @@ static int advk_pcie_remove(struct platf - irq_set_chained_handler_and_data(pcie->irq, NULL, NULL); - - /* Remove IRQ domains */ -+ advk_pcie_remove_rp_irq_domain(pcie); - advk_pcie_remove_msi_irq_domain(pcie); - advk_pcie_remove_irq_domain(pcie); - diff --git a/target/linux/generic/pending-5.15/850-0019-PCI-aardvark-Remove-irq_mask_ack-callback-for-INTx-i.patch b/target/linux/generic/pending-5.15/850-0019-PCI-aardvark-Remove-irq_mask_ack-callback-for-INTx-i.patch deleted file mode 100644 index 49422f4c68..0000000000 --- a/target/linux/generic/pending-5.15/850-0019-PCI-aardvark-Remove-irq_mask_ack-callback-for-INTx-i.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 8c9eef96e24f34ff8b62b230700416b822691a37 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Thu, 1 Apr 2021 14:24:12 +0200 -Subject: [PATCH] PCI: aardvark: Remove irq_mask_ack callback for INTx - interrupts -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Callback for irq_mask_ack is the same as for irq_mask. As there is no -special handling for irq_ack, there is no need to define irq_mask_ack too. - -Signed-off-by: Pali Rohár -Acked-by: Marc Zyngier -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 1 - - 1 file changed, 1 deletion(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1415,7 +1415,6 @@ static int advk_pcie_init_irq_domain(str - } - - irq_chip->irq_mask = advk_pcie_irq_mask; -- irq_chip->irq_mask_ack = advk_pcie_irq_mask; - irq_chip->irq_unmask = advk_pcie_irq_unmask; - - pcie->irq_domain = diff --git a/target/linux/generic/pending-5.15/850-0020-PCI-aardvark-Don-t-mask-irq-when-mapping.patch b/target/linux/generic/pending-5.15/850-0020-PCI-aardvark-Don-t-mask-irq-when-mapping.patch deleted file mode 100644 index 803441293d..0000000000 --- a/target/linux/generic/pending-5.15/850-0020-PCI-aardvark-Don-t-mask-irq-when-mapping.patch +++ /dev/null @@ -1,27 +0,0 @@ -From dc01fca5a9d9c09ce9a3fb2bc2e7715c37ff3bd9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Pali=20Roh=C3=A1r?= -Date: Thu, 1 Apr 2021 14:30:06 +0200 -Subject: [PATCH] PCI: aardvark: Don't mask irq when mapping -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -By default, all Legacy INTx interrupts are masked, so there is no need to -mask this interrupt during irq_map callback. - -Signed-off-by: Pali Rohár -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 1 - - 1 file changed, 1 deletion(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1332,7 +1332,6 @@ static int advk_pcie_irq_map(struct irq_ - { - struct advk_pcie *pcie = h->host_data; - -- advk_pcie_irq_mask(irq_get_irq_data(virq)); - irq_set_status_flags(virq, IRQ_LEVEL); - irq_set_chip_and_handler(virq, &pcie->irq_chip, - handle_level_irq); diff --git a/target/linux/generic/pending-5.15/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch b/target/linux/generic/pending-5.15/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch deleted file mode 100644 index 434ecf8c80..0000000000 --- a/target/linux/generic/pending-5.15/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch +++ /dev/null @@ -1,28 +0,0 @@ -From a511c99262ce19ee06908d27212b39ec4c5aeb17 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Beh=C3=BAn?= -Date: Wed, 8 Dec 2021 04:40:29 +0100 -Subject: [PATCH] PCI: aardvark: Drop __maybe_unused from - advk_pcie_disable_phy() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This function is now always used in driver remove method, drop the -__maybe_unused attribute. - -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -1605,7 +1605,7 @@ static int advk_pcie_map_irq(const struc - return of_irq_parse_and_map_pci(dev, slot, pin); - } - --static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie) -+static void advk_pcie_disable_phy(struct advk_pcie *pcie) - { - phy_power_off(pcie->phy); - phy_exit(pcie->phy); diff --git a/target/linux/generic/pending-5.15/850-0022-PCI-aardvark-Update-comment-about-link-going-down-af.patch b/target/linux/generic/pending-5.15/850-0022-PCI-aardvark-Update-comment-about-link-going-down-af.patch deleted file mode 100644 index fc3efac283..0000000000 --- a/target/linux/generic/pending-5.15/850-0022-PCI-aardvark-Update-comment-about-link-going-down-af.patch +++ /dev/null @@ -1,35 +0,0 @@ -From bafda858364003a70b9cda84282f9761587f8033 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Beh=C3=BAn?= -Date: Mon, 10 Jan 2022 00:47:38 +0100 -Subject: [PATCH] PCI: aardvark: Update comment about link going down after - link-up -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Update the comment about what happens when link goes down after we have -checked for link-up. If a PIO request is done while link-down, we have -a serious problem. - -Signed-off-by: Marek Behún ---- - drivers/pci/controller/pci-aardvark.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - ---- a/drivers/pci/controller/pci-aardvark.c -+++ b/drivers/pci/controller/pci-aardvark.c -@@ -998,8 +998,12 @@ static bool advk_pcie_valid_device(struc - return false; - - /* -- * If the link goes down after we check for link-up, nothing bad -- * happens but the config access times out. -+ * If the link goes down after we check for link-up, we have a problem: -+ * if a PIO request is executed while link-down, the whole controller -+ * gets stuck in a non-functional state, and even after link comes up -+ * again, PIO requests won't work anymore, and a reset of the whole PCIe -+ * controller is needed. Therefore we need to prevent sending PIO -+ * requests while the link is down. - */ - if (!pci_is_root_bus(bus) && !advk_pcie_link_up(pcie)) - return false; diff --git a/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch b/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch index 8fee4d49de..3ac9269812 100644 --- a/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch +++ b/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch @@ -23,7 +23,7 @@ Acked-by: Miquel Raynal --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1622,9 +1622,7 @@ static int advk_pcie_enable_phy(struct a +@@ -1634,9 +1634,7 @@ static int advk_pcie_enable_phy(struct a } ret = phy_power_on(pcie->phy); diff --git a/target/linux/ipq40xx/patches-5.15/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch b/target/linux/ipq40xx/patches-5.15/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch index 843291e871..23fef71b2b 100644 --- a/target/linux/ipq40xx/patches-5.15/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch +++ b/target/linux/ipq40xx/patches-5.15/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch @@ -13,7 +13,7 @@ Signed-off-by: Robert Marko --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c -@@ -2445,7 +2445,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat +@@ -2446,7 +2446,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat static const struct sdhci_ops sdhci_msm_ops = { .reset = sdhci_msm_reset, From e156f1f862ff0c834df3b92a180598235e578e84 Mon Sep 17 00:00:00 2001 From: John Audia Date: Sun, 15 May 2022 17:33:44 -0400 Subject: [PATCH 28/29] kernel: bump 5.15 to 5.15.40 All patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B, mt7622/RT3200 Run-tested: bcm2711/RPi4B, mt7622/RT3200 Signed-off-by: John Audia --- include/kernel-5.15 | 4 ++-- target/linux/generic/hack-5.15/221-module_exports.patch | 2 +- .../linux/generic/hack-5.15/230-openwrt_lzma_options.patch | 2 +- .../generic/pending-5.15/203-kallsyms_uncompressed.patch | 2 +- ...-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch | 7 +------ ...ert-PCI-aardvark-Fix-initialization-with-old-Marv.patch | 2 +- 6 files changed, 7 insertions(+), 12 deletions(-) diff --git a/include/kernel-5.15 b/include/kernel-5.15 index f1b66a8b30..fed7f9dbfa 100644 --- a/include/kernel-5.15 +++ b/include/kernel-5.15 @@ -1,2 +1,2 @@ -LINUX_VERSION-5.15 = .39 -LINUX_KERNEL_HASH-5.15.39 = 888641634f9e0e38cd0efcfec92ea3c126d381b24a514740d3fe3dc9988fd7ad +LINUX_VERSION-5.15 = .40 +LINUX_KERNEL_HASH-5.15.40 = c787f7eecbabbfca4dd3224827292a5fb98e3370c6e04b859714fba25bb8c33b diff --git a/target/linux/generic/hack-5.15/221-module_exports.patch b/target/linux/generic/hack-5.15/221-module_exports.patch index 65cee1a541..0164eabac0 100644 --- a/target/linux/generic/hack-5.15/221-module_exports.patch +++ b/target/linux/generic/hack-5.15/221-module_exports.patch @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau "__kstrtabns_" #sym ": \n" \ --- a/scripts/Makefile.build +++ b/scripts/Makefile.build -@@ -385,7 +385,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa +@@ -396,7 +396,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa # Linker scripts preprocessor (.lds.S -> .lds) # --------------------------------------------------------------------------- quiet_cmd_cpp_lds_S = LDS $@ diff --git a/target/linux/generic/hack-5.15/230-openwrt_lzma_options.patch b/target/linux/generic/hack-5.15/230-openwrt_lzma_options.patch index 8aa5b7c579..f9361b060b 100644 --- a/target/linux/generic/hack-5.15/230-openwrt_lzma_options.patch +++ b/target/linux/generic/hack-5.15/230-openwrt_lzma_options.patch @@ -23,7 +23,7 @@ Signed-off-by: Imre Kaloz { {0x02, 0x21}, "lz4", unlz4 }, --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib -@@ -413,7 +413,7 @@ quiet_cmd_bzip2 = BZIP2 $@ +@@ -402,7 +402,7 @@ quiet_cmd_bzip2 = BZIP2 $@ # --------------------------------------------------------------------------- quiet_cmd_lzma = LZMA $@ diff --git a/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch index 370fc97eac..e05519d83c 100644 --- a/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch +++ b/target/linux/generic/pending-5.15/203-kallsyms_uncompressed.patch @@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau } --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh -@@ -260,6 +260,10 @@ kallsyms() +@@ -263,6 +263,10 @@ kallsyms() kallsymopt="${kallsymopt} --base-relative" fi diff --git a/target/linux/generic/pending-5.15/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch b/target/linux/generic/pending-5.15/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch index 54df828875..27c863b992 100644 --- a/target/linux/generic/pending-5.15/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch +++ b/target/linux/generic/pending-5.15/444-mtd-nand-rawnand-add-support-for-Toshiba-TC58NVG0S3H.patch @@ -17,11 +17,9 @@ Signed-off-by: Andreas Böhler drivers/mtd/nand/raw/nand_ids.c | 3 +++ 1 file changed, 3 insertions(+) -diff --git a/drivers/mtd/nand/raw/nand_ids.c b/drivers/mtd/nand/raw/nand_ids.c -index 6e41902be35f..d64adbd1ce6b 100644 --- a/drivers/mtd/nand/raw/nand_ids.c +++ b/drivers/mtd/nand/raw/nand_ids.c -@@ -29,6 +29,9 @@ struct nand_flash_dev nand_flash_ids[] = { +@@ -29,6 +29,9 @@ struct nand_flash_dev nand_flash_ids[] = {"TC58NVG0S3E 1G 3.3V 8-bit", { .id = {0x98, 0xd1, 0x90, 0x15, 0x76, 0x14, 0x01, 0x00} }, SZ_2K, SZ_128, SZ_128K, 0, 8, 64, NAND_ECC_INFO(1, SZ_512), }, @@ -31,6 +29,3 @@ index 6e41902be35f..d64adbd1ce6b 100644 {"TC58NVG2S0F 4G 3.3V 8-bit", { .id = {0x98, 0xdc, 0x90, 0x26, 0x76, 0x15, 0x01, 0x08} }, SZ_4K, SZ_512, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) }, --- -2.35.1 - diff --git a/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch b/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch index 3ac9269812..4d3bc62bad 100644 --- a/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch +++ b/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch @@ -23,7 +23,7 @@ Acked-by: Miquel Raynal --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1634,9 +1634,7 @@ static int advk_pcie_enable_phy(struct a +@@ -1633,9 +1633,7 @@ static int advk_pcie_enable_phy(struct a } ret = phy_power_on(pcie->phy); From 7400adae8d86dde3c60752bf66d487aa1b138bc1 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Tue, 17 May 2022 00:57:04 +0200 Subject: [PATCH 29/29] kernel: Add missing devm_regulator_get_exclusive() This backports a patch from Linux 5.10.116 to fix a compile problem introduced in 5.10.114. drivers/usb/phy/phy-generic.c could not find devm_regulator_get_exclusive(). Fixes: 8592df67f40b ("kernel: bump 5.10 to 5.10.114") Signed-off-by: Hauke Mehrtens --- ...er-Add-missing-stubs-to-regulator-co.patch | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 target/linux/generic/backport-5.10/900-regulator-consumer-Add-missing-stubs-to-regulator-co.patch diff --git a/target/linux/generic/backport-5.10/900-regulator-consumer-Add-missing-stubs-to-regulator-co.patch b/target/linux/generic/backport-5.10/900-regulator-consumer-Add-missing-stubs-to-regulator-co.patch new file mode 100644 index 0000000000..c5470e8b82 --- /dev/null +++ b/target/linux/generic/backport-5.10/900-regulator-consumer-Add-missing-stubs-to-regulator-co.patch @@ -0,0 +1,79 @@ +From a71658c7db0b2be9fcab3522aeabe11792a4f481 Mon Sep 17 00:00:00 2001 +From: Dmitry Osipenko +Date: Wed, 20 Jan 2021 23:58:44 +0300 +Subject: [PATCH] regulator: consumer: Add missing stubs to + regulator/consumer.h +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +commit 51dfb6ca3728bd0a0a3c23776a12d2a15a1d2457 upstream. + +Add missing stubs to regulator/consumer.h in order to fix COMPILE_TEST +of the kernel. In particular this should fix compile-testing of OPP core +because of a missing stub for regulator_sync_voltage(). + +Reported-by: kernel test robot +Signed-off-by: Dmitry Osipenko +Link: https://lore.kernel.org/r/20210120205844.12658-1-digetx@gmail.com +Signed-off-by: Mark Brown +Cc: Bjørn Mork +Cc: Sudip Mukherjee +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/regulator/consumer.h | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +--- a/include/linux/regulator/consumer.h ++++ b/include/linux/regulator/consumer.h +@@ -332,6 +332,12 @@ regulator_get_exclusive(struct device *d + } + + static inline struct regulator *__must_check ++devm_regulator_get_exclusive(struct device *dev, const char *id) ++{ ++ return ERR_PTR(-ENODEV); ++} ++ ++static inline struct regulator *__must_check + regulator_get_optional(struct device *dev, const char *id) + { + return ERR_PTR(-ENODEV); +@@ -486,6 +492,11 @@ static inline int regulator_get_voltage( + return -EINVAL; + } + ++static inline int regulator_sync_voltage(struct regulator *regulator) ++{ ++ return -EINVAL; ++} ++ + static inline int regulator_is_supported_voltage(struct regulator *regulator, + int min_uV, int max_uV) + { +@@ -578,6 +589,25 @@ static inline int devm_regulator_unregis + return 0; + } + ++static inline int regulator_suspend_enable(struct regulator_dev *rdev, ++ suspend_state_t state) ++{ ++ return -EINVAL; ++} ++ ++static inline int regulator_suspend_disable(struct regulator_dev *rdev, ++ suspend_state_t state) ++{ ++ return -EINVAL; ++} ++ ++static inline int regulator_set_suspend_voltage(struct regulator *regulator, ++ int min_uV, int max_uV, ++ suspend_state_t state) ++{ ++ return -EINVAL; ++} ++ + static inline void *regulator_get_drvdata(struct regulator *regulator) + { + return NULL;