Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2024-08-13 15:44:14 +08:00
commit a3b7cd0483
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
88 changed files with 1267 additions and 1350 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-6.1 = .103
LINUX_KERNEL_HASH-6.1.103 = 5eb4706f898f50881552ff5146d892132d3ffc5298033bffe27087d3a44c4573
LINUX_VERSION-6.1 = .104
LINUX_KERNEL_HASH-6.1.104 = 5cfa326492241397e15c3601ccd3c9dfb72436674f364b470e9d1d5642759976

View File

@ -1,2 +1,2 @@
LINUX_VERSION-6.6 = .44
LINUX_KERNEL_HASH-6.6.44 = 93218296934915636fe6ba08e125948424cc270fd8948502c0ab91087a9fccd8
LINUX_VERSION-6.6 = .45
LINUX_KERNEL_HASH-6.6.45 = 121bed240767e4a0959c1609e78eeaaf3e0620d9d1a5ed1f6e36bdf609c4f179

View File

@ -85,6 +85,10 @@ ifneq ($(CONFIG_USE_APK),)
else
$(curdir)/compile: $(curdir)/system/opkg/host/compile
endif
else
ifneq ($(CONFIG_USE_APK),)
$(curdir)/compile: $(BUILD_KEY_APK_SEC) $(BUILD_KEY_APK_PUB)
endif
endif
$(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(curdir)/merge-index

View File

@ -196,7 +196,6 @@ export_bootdevice() {
done
;;
/dev/*)
[ "$rootpart" = "/dev/fit0" ] && rootpart="$(fitblk_get_bootdev)"
uevent="/sys/class/block/${rootpart##*/}/../uevent"
;;
0x[a-f0-9][a-f0-9][a-f0-9] | 0x[a-f0-9][a-f0-9][a-f0-9][a-f0-9] | \

View File

@ -9,7 +9,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=arm-trusted-firmware-mediatek
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=https://github.com/mtk-openwrt/arm-trusted-firmware.git

View File

@ -0,0 +1,27 @@
From 94802b344195d3574701ca6ab5122f6b7615a6eb Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Sun, 11 Aug 2024 23:12:33 +0100
Subject: [PATCH] mediatek: snfi: fix return code when reading
Return 0 on succesful read, which may contain correctable bitflips.
Fixes: #10
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
plat/mediatek/apsoc_common/bl2/bl2_dev_snfi_init.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/plat/mediatek/apsoc_common/bl2/bl2_dev_snfi_init.c
+++ b/plat/mediatek/apsoc_common/bl2/bl2_dev_snfi_init.c
@@ -29,8 +29,10 @@ static int snfi_mtd_read_page(struct nan
int ret;
ret = mtk_snand_read_page(snf, addr, (void *)buffer, NULL, false);
- if (ret == -EBADMSG)
+ if (ret > 0) {
+ NOTICE("corrected %d bitflips while reading page %u\n", ret, page);
ret = 0;
+ }
return ret;
}

View File

@ -56,7 +56,8 @@ ubnt,unifi-6-lr-v2-ubootmod|\
ubnt,unifi-6-lr-v3-ubootmod)
ubootenv_add_uci_config "/dev/mtd$(find_mtd_index "u-boot-env")" "0x0" "0x4000" "0x1000"
;;
ubnt,unifi-6-lr-v2)
ubnt,unifi-6-lr-v2|\
ubnt,unifi-6-lr-v3)
ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x1000" "0x1000" "1"
;;
xiaomi,redmi-router-ax6s)

View File

@ -0,0 +1,23 @@
#
# Copyright (C) 2024 OpenWrt.org
#
[ -e /etc/config/ubootenv ] && exit 0
touch /etc/config/ubootenv
. /lib/uboot-envtools.sh
. /lib/functions.sh
board=$(board_name)
case "$board" in
xunlong,orangepi-r1-plus|\
xunlong,orangepi-r1-plus-lts)
ubootenv_add_uci_config "/dev/mmcblk0" "0x3f8000" "0x8000"
;;
esac
config_load ubootenv
config_foreach ubootenv_add_app_config
exit 0

View File

@ -8,14 +8,14 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2024-03-03
PKG_SOURCE_VERSION:=eb3f488a200fafc46140fd51b5e21f737ee50f24
PKG_MIRROR_HASH:=368ed648dc7239dbcac3c6ba09be92c4b706118052d35e058cf5d1dae2917039
PKG_SOURCE_DATE:=2024-07-30
PKG_SOURCE_VERSION:=ac71b14dc93aef0af6f0f24808b0afb673eaa5f5
PKG_MIRROR_HASH:=f7774fc7002bbea450f543927acd528fb1bb6742f0e9ef28a402df3796893d93
# Build the 6.7 ath10k-ct driver version.
# Build the 6.9 ath10k-ct driver version.
# Probably this should match as closely as
# possible to whatever mac80211 backports version is being used.
CT_KVER="-6.7"
CT_KVER="-6.9"
PKG_MAINTAINER:=Ben Greear <greearb@candelatech.com>
PKG_BUILD_PARALLEL:=1

View File

@ -0,0 +1,11 @@
--- a/ath10k-6.9/pci.c
+++ b/ath10k-6.9/pci.c
@@ -3871,7 +3871,7 @@ static int __ath10k_pci_probe(struct pci
int (*pci_hard_reset)(struct ath10k *ar);
u32 (*targ_cpu_to_ce_addr)(struct ath10k *ar, u32 addr);
- printk(KERN_INFO "ath10k 6.7 driver, optimized for CT firmware, probing pci device: 0x%x.\n",
+ printk(KERN_INFO "ath10k 6.9 driver, optimized for CT firmware, probing pci device: 0x%x.\n",
pci_dev->device);
switch (pci_dev->device) {

View File

@ -1,35 +0,0 @@
--- a/ath10k-6.7/mac.c
+++ b/ath10k-6.7/mac.c
@@ -2304,8 +2304,8 @@ static void ath10k_mac_vif_ap_csa_count_
if (!arvif->is_up)
return;
- if (!ieee80211_beacon_cntdwn_is_complete(vif)) {
- ieee80211_beacon_update_cntdwn(vif);
+ if (!ieee80211_beacon_cntdwn_is_complete(vif, 0)) {
+ ieee80211_beacon_update_cntdwn(vif, 0);
ret = ath10k_mac_setup_bcn_tmpl(arvif);
if (ret)
@@ -2317,7 +2317,7 @@ static void ath10k_mac_vif_ap_csa_count_
ath10k_warn(ar, "failed to update prb tmpl during csa: %d\n",
ret);
} else {
- ieee80211_csa_finish(vif);
+ ieee80211_csa_finish(vif, 0);
}
}
--- a/ath10k-6.7/wmi.c
+++ b/ath10k-6.7/wmi.c
@@ -4292,8 +4292,8 @@ void ath10k_wmi_event_host_swba(struct a
* actual channel switch is done
*/
if (arvif->vif->bss_conf.csa_active &&
- ieee80211_beacon_cntdwn_is_complete(arvif->vif)) {
- ieee80211_csa_finish(arvif->vif);
+ ieee80211_beacon_cntdwn_is_complete(arvif->vif, 0)) {
+ ieee80211_csa_finish(arvif->vif, 0);
continue;
}

View File

@ -39,9 +39,9 @@ that the feature is properly initialized:
Signed-off-by: Vincent Tremblay <vincent@vtremblay.dev>
--- a/ath10k-6.7/core.c
+++ b/ath10k-6.7/core.c
@@ -2869,14 +2869,14 @@ done:
--- a/ath10k-6.9/core.c
+++ b/ath10k-6.9/core.c
@@ -2889,14 +2889,14 @@ done:
static void ath10k_core_fetch_btcoex_dt(struct ath10k *ar)
{
struct device_node *node;

View File

@ -20,25 +20,25 @@ Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
---
ath10k-6.7/Kconfig | 6 ++
ath10k-6.7/Makefile | 1 +
ath10k-6.7/core.c | 32 ++++++++
ath10k-6.7/core.h | 8 ++
ath10k-6.7/hw.h | 1 +
ath10k-6.7/leds.c | 90 +++++++++++++++++++++++
ath10k-6.7/leds.h | 34 +++++++++
ath10k-6.7/mac.c | 1 +
ath10k-6.7/wmi-ops.h | 32 ++++++++
ath10k-6.7/wmi-tlv.c | 2 +
ath10k-6.7/wmi.c | 54 ++++++++++++++
ath10k-6.7/wmi.h | 35 +++++++++
ath10k-6.9/Kconfig | 6 ++
ath10k-6.9/Makefile | 1 +
ath10k-6.9/core.c | 32 ++++++++
ath10k-6.9/core.h | 8 ++
ath10k-6.9/hw.h | 1 +
ath10k-6.9/leds.c | 90 +++++++++++++++++++++++
ath10k-6.9/leds.h | 34 +++++++++
ath10k-6.9/mac.c | 1 +
ath10k-6.9/wmi-ops.h | 32 ++++++++
ath10k-6.9/wmi-tlv.c | 2 +
ath10k-6.9/wmi.c | 54 ++++++++++++++
ath10k-6.9/wmi.h | 35 +++++++++
12 files changed, 296 insertions(+)
create mode 100644 ath10k-6.7/leds.c
create mode 100644 ath10k-6.7/leds.h
create mode 100644 ath10k-6.9/leds.c
create mode 100644 ath10k-6.9/leds.h
--- a/ath10k-6.7/Kconfig
+++ b/ath10k-6.7/Kconfig
@@ -67,6 +67,12 @@ config ATH10K_DEBUGFS
--- a/ath10k-6.9/Kconfig
+++ b/ath10k-6.9/Kconfig
@@ -68,6 +68,12 @@ config ATH10K_DEBUGFS
If unsure, say Y to make it easier to debug problems.
@ -51,8 +51,8 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
config ATH10K_SPECTRAL
bool "Atheros ath10k spectral scan support"
depends on ATH10K_DEBUGFS
--- a/ath10k-6.7/Makefile
+++ b/ath10k-6.7/Makefile
--- a/ath10k-6.9/Makefile
+++ b/ath10k-6.9/Makefile
@@ -20,6 +20,7 @@ ath10k_core-$(CONFIG_ATH10K_SPECTRAL) +=
ath10k_core-$(CONFIG_NL80211_TESTMODE) += testmode.o
ath10k_core-$(CONFIG_ATH10K_TRACING) += trace.o
@ -61,9 +61,9 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
ath10k_core-$(CONFIG_MAC80211_DEBUGFS) += debugfs_sta.o
ath10k_core-$(CONFIG_PM) += wow.o
ath10k_core-$(CONFIG_ATH10K_CE) += ce.o
--- a/ath10k-6.7/core.c
+++ b/ath10k-6.7/core.c
@@ -28,6 +28,7 @@
--- a/ath10k-6.9/core.c
+++ b/ath10k-6.9/core.c
@@ -29,6 +29,7 @@
#include "testmode.h"
#include "wmi-ops.h"
#include "coredump.h"
@ -71,7 +71,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
/* Disable ath10k-ct DBGLOG output by default */
unsigned int ath10k_debug_mask = ATH10K_DBG_NO_DBGLOG;
@@ -80,6 +81,7 @@ static const struct ath10k_hw_params ath
@@ -81,6 +82,7 @@ static const struct ath10k_hw_params ath
.name = "qca988x hw2.0",
.patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
@ -79,7 +79,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
@@ -120,6 +122,7 @@ static const struct ath10k_hw_params ath
@@ -122,6 +124,7 @@ static const struct ath10k_hw_params ath
.name = "qca988x hw2.0 ubiquiti",
.patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
@ -87,7 +87,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
@@ -161,6 +164,7 @@ static const struct ath10k_hw_params ath
@@ -164,6 +167,7 @@ static const struct ath10k_hw_params ath
.name = "qca9887 hw1.0",
.patch_load_addr = QCA9887_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
@ -95,7 +95,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
@@ -202,6 +206,7 @@ static const struct ath10k_hw_params ath
@@ -206,6 +210,7 @@ static const struct ath10k_hw_params ath
.name = "qca6174 hw3.2 sdio",
.patch_load_addr = QCA6174_HW_3_0_PATCH_LOAD_ADDR,
.uart_pin = 19,
@ -103,7 +103,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
.max_probe_resp_desc_thres = 0,
@@ -238,6 +243,7 @@ static const struct ath10k_hw_params ath
@@ -243,6 +248,7 @@ static const struct ath10k_hw_params ath
.name = "qca6164 hw2.1",
.patch_load_addr = QCA6174_HW_2_1_PATCH_LOAD_ADDR,
.uart_pin = 6,
@ -111,7 +111,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
.max_probe_resp_desc_thres = 0,
@@ -278,6 +284,7 @@ static const struct ath10k_hw_params ath
@@ -284,6 +290,7 @@ static const struct ath10k_hw_params ath
.name = "qca6174 hw2.1",
.patch_load_addr = QCA6174_HW_2_1_PATCH_LOAD_ADDR,
.uart_pin = 6,
@ -119,7 +119,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
.max_probe_resp_desc_thres = 0,
@@ -318,6 +325,7 @@ static const struct ath10k_hw_params ath
@@ -325,6 +332,7 @@ static const struct ath10k_hw_params ath
.name = "qca6174 hw3.0",
.patch_load_addr = QCA6174_HW_3_0_PATCH_LOAD_ADDR,
.uart_pin = 6,
@ -127,7 +127,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
.max_probe_resp_desc_thres = 0,
@@ -358,6 +366,7 @@ static const struct ath10k_hw_params ath
@@ -366,6 +374,7 @@ static const struct ath10k_hw_params ath
.name = "qca6174 hw3.2",
.patch_load_addr = QCA6174_HW_3_0_PATCH_LOAD_ADDR,
.uart_pin = 6,
@ -135,7 +135,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
.max_probe_resp_desc_thres = 0,
@@ -402,6 +411,7 @@ static const struct ath10k_hw_params ath
@@ -411,6 +420,7 @@ static const struct ath10k_hw_params ath
.name = "qca99x0 hw2.0",
.patch_load_addr = QCA99X0_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
@ -143,7 +143,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0x00000700,
.continuous_frag_desc = true,
.cck_rate_map_rev2 = true,
@@ -448,6 +458,7 @@ static const struct ath10k_hw_params ath
@@ -458,6 +468,7 @@ static const struct ath10k_hw_params ath
.name = "qca9984/qca9994 hw1.0",
.patch_load_addr = QCA9984_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
@ -151,7 +151,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
.otp_exe_param = 0x00000700,
.continuous_frag_desc = true,
@@ -501,6 +512,7 @@ static const struct ath10k_hw_params ath
@@ -512,6 +523,7 @@ static const struct ath10k_hw_params ath
.name = "qca9888 hw2.0",
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
@ -159,7 +159,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
.otp_exe_param = 0x00000700,
.continuous_frag_desc = true,
@@ -551,6 +563,7 @@ static const struct ath10k_hw_params ath
@@ -563,6 +575,7 @@ static const struct ath10k_hw_params ath
.name = "qca9377 hw1.0",
.patch_load_addr = QCA9377_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 6,
@ -167,7 +167,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
.max_probe_resp_desc_thres = 0,
@@ -591,6 +604,7 @@ static const struct ath10k_hw_params ath
@@ -604,6 +617,7 @@ static const struct ath10k_hw_params ath
.name = "qca9377 hw1.1",
.patch_load_addr = QCA9377_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 6,
@ -175,7 +175,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
.max_probe_resp_desc_thres = 0,
@@ -633,6 +647,7 @@ static const struct ath10k_hw_params ath
@@ -647,6 +661,7 @@ static const struct ath10k_hw_params ath
.name = "qca9377 hw1.1 sdio",
.patch_load_addr = QCA9377_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 19,
@ -183,7 +183,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.otp_exe_param = 0,
.channel_counters_freq_hz = 88000,
.max_probe_resp_desc_thres = 0,
@@ -666,6 +681,7 @@ static const struct ath10k_hw_params ath
@@ -681,6 +696,7 @@ static const struct ath10k_hw_params ath
.name = "qca4019 hw1.0",
.patch_load_addr = QCA4019_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
@ -191,7 +191,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
.otp_exe_param = 0x0010000,
.continuous_frag_desc = true,
@@ -711,6 +727,7 @@ static const struct ath10k_hw_params ath
@@ -727,6 +743,7 @@ static const struct ath10k_hw_params ath
.dev_id = 0,
.bus = ATH10K_BUS_SNOC,
.name = "wcn3990 hw1.0",
@ -199,7 +199,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
.continuous_frag_desc = true,
.tx_chain_mask = 0x7,
.rx_chain_mask = 0x7,
@@ -4071,6 +4088,10 @@ int ath10k_core_start(struct ath10k *ar,
@@ -4091,6 +4108,10 @@ int ath10k_core_start(struct ath10k *ar,
ath10k_wmi_check_apply_board_power_ctl_table(ar);
}
@ -210,7 +210,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
return 0;
err_hif_stop:
@@ -4332,9 +4353,18 @@ static void ath10k_core_register_work(st
@@ -4352,9 +4373,18 @@ static void ath10k_core_register_work(st
goto err_spectral_destroy;
}
@ -229,7 +229,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
err_spectral_destroy:
ath10k_spectral_destroy(ar);
err_debug_destroy:
@@ -4394,6 +4424,8 @@ void ath10k_core_unregister(struct ath10
@@ -4414,6 +4444,8 @@ void ath10k_core_unregister(struct ath10
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
return;
@ -238,9 +238,9 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
ath10k_thermal_unregister(ar);
/* Stop spectral before unregistering from mac80211 to remove the
* relayfs debugfs file cleanly. Otherwise the parent debugfs tree
--- a/ath10k-6.7/core.h
+++ b/ath10k-6.7/core.h
@@ -14,6 +14,7 @@
--- a/ath10k-6.9/core.h
+++ b/ath10k-6.9/core.h
@@ -15,6 +15,7 @@
#include <linux/pci.h>
#include <linux/uuid.h>
#include <linux/time.h>
@ -248,7 +248,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
#include "htt.h"
#include "htc.h"
@@ -1589,6 +1590,13 @@ struct ath10k {
@@ -1590,6 +1591,13 @@ struct ath10k {
} testmode;
struct {
@ -262,9 +262,9 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
/* protected by data_lock */
u32 rx_crc_err_drop;
u32 fw_crash_counter;
--- a/ath10k-6.7/hw.h
+++ b/ath10k-6.7/hw.h
@@ -523,6 +523,7 @@ struct ath10k_hw_params {
--- a/ath10k-6.9/hw.h
+++ b/ath10k-6.9/hw.h
@@ -525,6 +525,7 @@ struct ath10k_hw_params {
const char *name;
u32 patch_load_addr;
int uart_pin;
@ -273,7 +273,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
/* Type of hw cycle counter wraparound logic, for more info
--- /dev/null
+++ b/ath10k-6.7/leds.c
+++ b/ath10k-6.9/leds.c
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: ISC
+/*
@ -366,7 +366,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
+}
+
--- /dev/null
+++ b/ath10k-6.7/leds.h
+++ b/ath10k-6.9/leds.h
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: ISC */
+/*
@ -402,9 +402,9 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
+
+#endif
+#endif /* _LEDS_H_ */
--- a/ath10k-6.7/mac.c
+++ b/ath10k-6.7/mac.c
@@ -25,6 +25,7 @@
--- a/ath10k-6.9/mac.c
+++ b/ath10k-6.9/mac.c
@@ -26,6 +26,7 @@
#include "wmi-tlv.h"
#include "wmi-ops.h"
#include "wow.h"
@ -412,8 +412,8 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
/*********/
/* Rates */
--- a/ath10k-6.7/wmi-ops.h
+++ b/ath10k-6.7/wmi-ops.h
--- a/ath10k-6.9/wmi-ops.h
+++ b/ath10k-6.9/wmi-ops.h
@@ -228,7 +228,10 @@ struct wmi_ops {
const struct wmi_bb_timing_cfg_arg *arg);
struct sk_buff *(*gen_per_peer_per_tid_cfg)(struct ath10k *ar,
@ -461,9 +461,9 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
static inline int
ath10k_wmi_dbglog_cfg(struct ath10k *ar, u64 module_enable, u32 log_level)
{
--- a/ath10k-6.7/wmi-tlv.c
+++ b/ath10k-6.7/wmi-tlv.c
@@ -4601,6 +4601,8 @@ static const struct wmi_ops wmi_tlv_ops
--- a/ath10k-6.9/wmi-tlv.c
+++ b/ath10k-6.9/wmi-tlv.c
@@ -4606,6 +4606,8 @@ static const struct wmi_ops wmi_tlv_ops
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
@ -472,9 +472,9 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
};
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
--- a/ath10k-6.7/wmi.c
+++ b/ath10k-6.7/wmi.c
@@ -8446,6 +8446,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
--- a/ath10k-6.9/wmi.c
+++ b/ath10k-6.9/wmi.c
@@ -8467,6 +8467,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
return skb;
}
@ -524,7 +524,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
static struct sk_buff *
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
enum wmi_sta_ps_mode psmode)
@@ -10255,6 +10298,9 @@ static const struct wmi_ops wmi_ops = {
@@ -10274,6 +10317,9 @@ static const struct wmi_ops wmi_ops = {
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@ -534,7 +534,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -10325,6 +10371,8 @@ static const struct wmi_ops wmi_10_1_ops
@@ -10344,6 +10390,8 @@ static const struct wmi_ops wmi_10_1_ops
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@ -543,7 +543,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -10404,6 +10452,8 @@ static const struct wmi_ops wmi_10_2_ops
@@ -10423,6 +10471,8 @@ static const struct wmi_ops wmi_10_2_ops
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
@ -552,7 +552,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
/* .gen_pdev_enable_adaptive_cca not implemented */
};
@@ -10475,6 +10525,8 @@ static const struct wmi_ops wmi_10_2_4_o
@@ -10494,6 +10544,8 @@ static const struct wmi_ops wmi_10_2_4_o
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
.gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing,
@ -561,7 +561,7 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -10557,6 +10609,8 @@ static const struct wmi_ops wmi_10_4_ops
@@ -10576,6 +10628,8 @@ static const struct wmi_ops wmi_10_4_ops
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
.gen_echo = ath10k_wmi_op_gen_echo,
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
@ -570,9 +570,9 @@ Link: https://msgid.link/20230611080505.17393-1-ansuelsmth@gmail.com
};
int ath10k_wmi_attach(struct ath10k *ar)
--- a/ath10k-6.7/wmi.h
+++ b/ath10k-6.7/wmi.h
@@ -3133,6 +3133,41 @@ enum wmi_10_4_feature_mask {
--- a/ath10k-6.9/wmi.h
+++ b/ath10k-6.9/wmi.h
@@ -3137,6 +3137,41 @@ enum wmi_10_4_feature_mask {
};

View File

@ -14,9 +14,9 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
ath10k-6.7/mac.c | 2 +-
3 files changed, 6 insertions(+), 4 deletions(-)
--- a/ath10k-6.7/core.h
+++ b/ath10k-6.7/core.h
@@ -1704,6 +1704,10 @@ struct ath10k {
--- a/ath10k-6.9/core.h
+++ b/ath10k-6.9/core.h
@@ -1705,6 +1705,10 @@ struct ath10k {
u8 csi_data[4096];
u16 csi_data_len;
@ -27,8 +27,8 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
/* must be last */
u8 drv_priv[] __aligned(sizeof(void *));
};
--- a/ath10k-6.7/leds.c
+++ b/ath10k-6.7/leds.c
--- a/ath10k-6.9/leds.c
+++ b/ath10k-6.9/leds.c
@@ -70,7 +70,7 @@ int ath10k_leds_register(struct ath10k *
ar->leds.cdev.name = ar->leds.label;
@ -38,9 +38,9 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
ret = led_classdev_register(wiphy_dev(ar->hw->wiphy), &ar->leds.cdev);
if (ret)
--- a/ath10k-6.7/mac.c
+++ b/ath10k-6.7/mac.c
@@ -11622,7 +11622,7 @@ int ath10k_mac_register(struct ath10k *a
--- a/ath10k-6.9/mac.c
+++ b/ath10k-6.9/mac.c
@@ -11631,7 +11631,7 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
#ifdef CPTCFG_MAC80211_LEDS

View File

@ -1,6 +1,6 @@
--- a/ath10k-6.7/wmi.h
+++ b/ath10k-6.7/wmi.h
@@ -6341,7 +6341,7 @@ struct qca9880_set_ctl_table_cmd {
--- a/ath10k-6.9/wmi.h
+++ b/ath10k-6.9/wmi.h
@@ -6310,7 +6310,7 @@ struct qca9880_set_ctl_table_cmd {
__le32 ctl_len; /* in bytes. This may be ignored in firmware,
* make sure ctl_info data is sizeof(qca9880_power_ctl) */
/** ctl array (len adjusted to number of words) */

View File

@ -1,6 +1,6 @@
--- a/ath10k-6.7/htt.h
+++ b/ath10k-6.7/htt.h
@@ -237,7 +237,11 @@ enum htt_rx_ring_flags {
--- a/ath10k-6.9/htt.h
+++ b/ath10k-6.9/htt.h
@@ -238,7 +238,11 @@ enum htt_rx_ring_flags {
};
#define HTT_RX_RING_SIZE_MIN 128

View File

@ -1,6 +1,6 @@
--- a/ath10k-6.7/pci.c
+++ b/ath10k-6.7/pci.c
@@ -131,7 +131,11 @@ static const struct ce_attr pci_host_ce_
--- a/ath10k-6.9/pci.c
+++ b/ath10k-6.9/pci.c
@@ -132,7 +132,11 @@ static const struct ce_attr pci_host_ce_
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,
@ -12,7 +12,7 @@
.recv_cb = ath10k_pci_htt_htc_rx_cb,
},
@@ -140,7 +144,11 @@ static const struct ce_attr pci_host_ce_
@@ -141,7 +145,11 @@ static const struct ce_attr pci_host_ce_
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,
@ -24,7 +24,7 @@
.recv_cb = ath10k_pci_htc_rx_cb,
},
@@ -167,7 +175,11 @@ static const struct ce_attr pci_host_ce_
@@ -168,7 +176,11 @@ static const struct ce_attr pci_host_ce_
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 512,
@ -36,7 +36,7 @@
.recv_cb = ath10k_pci_htt_rx_cb,
},
@@ -192,7 +204,11 @@ static const struct ce_attr pci_host_ce_
@@ -193,7 +205,11 @@ static const struct ce_attr pci_host_ce_
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,

View File

@ -13,12 +13,12 @@ own loss detection mechanism.
Signed-off-by: David Bauer <mail@david-bauer.net>
---
ath10k-6.7/mac.c | 1 -
ath10k-6.9/mac.c | 1 -
1 file changed, 1 deletion(-)
--- a/ath10k-6.7/mac.c
+++ b/ath10k-6.7/mac.c
@@ -11311,7 +11311,6 @@ int ath10k_mac_register(struct ath10k *a
--- a/ath10k-6.9/mac.c
+++ b/ath10k-6.9/mac.c
@@ -11316,7 +11316,6 @@ int ath10k_mac_register(struct ath10k *a
ieee80211_hw_set(ar->hw, CHANCTX_STA_CSA);
ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);

View File

@ -1,33 +1,27 @@
# Attribution: https://gist.github.com/lenew/9b41ba901c3393047ede0766760f9d55
#Put this source to 'package/kernel/r8125' folder of OpenWRT/LEDE SDK
#Build(make menuconfig, make defconfig, make)
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=r8125
PKG_VERSION:=9.013.02-2
PKG_VERSION:=9.013.02
PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/awesometic/realtek-r8125-dkms/tar.gz/$(PKG_VERSION)?
PKG_HASH:=eae10100680de13e8119602c50a1748b8a0669eccd61d9a4515b4c846deb3960
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/realtek-$(PKG_NAME)-dkms-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILE:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://github.com/Noltari/rtl8125/releases/download/$(PKG_VERSION)
PKG_HASH:=d36410ee99c956f250d9cd08340d8c36567d190f420a8ee128ff6e51225aac0c
PKG_BUILD_PARALLEL:=1
PKG_LICENSE:=GPL-2.0-only
PKG_MAINTAINER:=Alvaro Fernandez Rojas <noltari@gmail.com>
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
define KernelPackage/r8125
TITLE:=Driver for Realtek r8125 chipsets
SUBMENU:=Network Devices
TITLE:=Realtek RTL8125 PCI 2.5 Gigabit Ethernet driver
DEPENDS:=@PCI_SUPPORT
FILES:= $(PKG_BUILD_DIR)/src/r8125.ko
FILES:=$(PKG_BUILD_DIR)/src/r8125.ko
AUTOLOAD:=$(call AutoProbe,r8125)
PROVIDES:=kmod-r8169
endef
define KernelPackage/r8125/description

View File

@ -1,31 +1,27 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2024 ImmortalWrt.org
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=r8126
PKG_VERSION:=10.013.00
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@IMMORTALWRT
PKG_SOURCE_URL:=https://github.com/Noltari/rtl8126/releases/download/$(PKG_VERSION)
PKG_HASH:=b41bda6ff3bbb7d9bc5b81c5c21355f031587d3a3a5862abcd4d766e942272e7
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_LICENSE:=GPL-2.0-only
PKG_BUILD_PARALLEL:=1
PKG_LICENSE:=GPL-2.0-only
PKG_MAINTAINER:=Alvaro Fernandez Rojas <noltari@gmail.com>
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
define KernelPackage/r8126
TITLE:=Driver for Realtek r8126 chipsets
SUBMENU:=Network Devices
TITLE:=Realtek RTL8126 PCI 5 Gigabit Ethernet driver
DEPENDS:=@PCI_SUPPORT
FILES:= $(PKG_BUILD_DIR)/src/r8126.ko
FILES:=$(PKG_BUILD_DIR)/src/r8126.ko
AUTOLOAD:=$(call AutoProbe,r8126)
PROVIDES:=kmod-r8169
endef
define KernelPackage/r8126/description

View File

@ -0,0 +1,21 @@
From 9649df50a239d1379cc8d9febd4854a0c7ca0731 Mon Sep 17 00:00:00 2001
From: Mieczyslaw Nalewaj <namiltd@poczta.onet.pl>
Date: Sat, 10 Aug 2024 17:42:44 +0200
Subject: [PATCH] r8126.h: use BIT_ULL
Fixes compilation on 32 bit systems.
---
r8126.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/src/r8126.h
+++ b/src/r8126.h
@@ -678,7 +678,7 @@ This is free software, and you are welco
#ifndef ADVERTISED_2500baseX_Full
#define ADVERTISED_2500baseX_Full 0x8000
#endif
-#define RTK_ADVERTISED_5000baseX_Full BIT(48)
+#define RTK_ADVERTISED_5000baseX_Full BIT_ULL(48)
#define RTK_ADVERTISE_2500FULL 0x80
#define RTK_ADVERTISE_5000FULL 0x100

View File

@ -26,7 +26,7 @@ define KernelPackage/usb-net-rtl8152-vendor
SUBMENU:=USB Support
DEPENDS:=+kmod-usb-net
CONFLICTS:=kmod-usb-net-rtl8152
FILES:= $(PKG_BUILD_DIR)/r8152.ko
FILES:=$(PKG_BUILD_DIR)/r8152.ko
AUTOLOAD:=$(call AutoProbe,r8152)
endef

View File

@ -1,32 +1,27 @@
#
# Download realtek r8168 linux driver from official site:
# [https://www.realtek.com/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software]
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=r8168
PKG_VERSION:=8.053.00
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/mtorromeo/r8168/tar.gz/$(PKG_VERSION)?
PKG_HASH:=7c00cc13f17c45e1d1002e4c390f118204b04d42caba9d04d8ae95e953770857
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_LICENSE:=GPL-2.0-only
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://github.com/Noltari/rtl8168/releases/download/$(PKG_VERSION)
PKG_HASH:=52f1e6200672b598a04d4ac21ac92a8a9e128b38208c7b03a464bfa93bbfcc8f
PKG_BUILD_PARALLEL:=1
PKG_LICENSE:=GPL-2.0-only
PKG_MAINTAINER:=Alvaro Fernandez Rojas <noltari@gmail.com>
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
define KernelPackage/r8168
TITLE:=Driver for Realtek r8168 chipsets
SUBMENU:=Network Devices
TITLE:=Realtek RTL8168 PCI Gigabit Ethernet driver
DEPENDS:=@PCI_SUPPORT
FILES:= $(PKG_BUILD_DIR)/src/r8168.ko
FILES:=$(PKG_BUILD_DIR)/src/r8168.ko
AUTOLOAD:=$(call AutoProbe,r8168)
PROVIDES:=kmod-r8169
endef
define KernelPackage/r8168/description

View File

@ -0,0 +1,28 @@
From c0e1ae03f564f0e3db492ef2f25357b5da7977d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
Date: Sat, 10 Aug 2024 20:12:40 +0200
Subject: [PATCH] r8168_n: fix proc_dump_rx_desc_2 on 32 bits
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
src/r8168_n.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/src/r8168_n.c
+++ b/src/r8168_n.c
@@ -1655,9 +1655,9 @@ static int proc_dump_rx_desc_2(struct se
j, k);
for (i=0; i<(tp->RxDescLength/4); i++) {
if (!(i % 4))
- seq_printf(m, "\n%04llx ",
- ((u64)pdword + (i * 4) -
- (u64)tp->RxDescArray));
+ seq_printf(m, "\n%04x ",
+ (u32) ((uintptr_t)pdword + (i * 4) -
+ (uintptr_t)tp->RxDescArray));
seq_printf(m, "%08x ", pdword[i]);
}
}

View File

@ -385,6 +385,9 @@ hostapd_common_add_bss_config() {
config_add_string fils_dhcp
config_add_int ocv
config_add_boolean apup
config_add_string apup_peer_ifname_prefix
}
hostapd_set_vlan_file() {
@ -571,7 +574,7 @@ hostapd_set_bss_options() {
ppsk airtime_bss_weight airtime_bss_limit airtime_sta_weight \
multicast_to_unicast_all proxy_arp per_sta_vif \
eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id \
vendor_elements fils ocv
vendor_elements fils ocv apup
set_default fils 0
set_default isolate 0
@ -595,6 +598,7 @@ hostapd_set_bss_options() {
set_default airtime_bss_weight 0
set_default airtime_bss_limit 0
set_default eap_server 0
set_default apup 0
/usr/sbin/hostapd -vfils || fils=0
@ -1165,6 +1169,16 @@ hostapd_set_bss_options() {
append bss_conf "per_sta_vif=$per_sta_vif" "$N"
fi
if [ "$apup" -gt 0 ]; then
append bss_conf "apup=$apup" "$N"
local apup_peer_ifname_prefix
json_get_vars apup_peer_ifname_prefix
if [ -n "$apup_peer_ifname_prefix" ] ; then
append bss_conf "apup_peer_ifname_prefix=$apup_peer_ifname_prefix" "$N"
fi
fi
json_get_values opts hostapd_bss_options
for val in $opts; do
append bss_conf "$val" "$N"

View File

@ -87,7 +87,7 @@ DRIVER_MAKEOPTS= \
CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \
CONFIG_IEEE80211AX=$(HOSTAPD_IEEE80211AX) \
CONFIG_MBO=$(CONFIG_WPA_MBO_SUPPORT) \
CONFIG_UCODE=y
CONFIG_UCODE=y CONFIG_APUP=y
ifeq ($(SSL_VARIANT),openssl)
DRIVER_MAKEOPTS += CONFIG_TLS=openssl CONFIG_SAE=y

View File

@ -0,0 +1,460 @@
From 40041ecea334c0106c0e840a32aef92b0cbb004b Mon Sep 17 00:00:00 2001
From: Gioacchino Mazzurco <gio@polymathes.cc>
Date: Mon, 6 May 2024 13:53:48 +0200
Subject: [PATCH 1/3] Implement APuP Access Point Micro Peering
Access Point Micro Peering is a simpler and hopefully more useful successor to
Ad Hoc, Wireless Distribution System, 802.11s mesh mode, Multi-AP and EasyMesh.
When enabled almost plain APs communicate between them via 4-address mode,
like in WDS but all of them are AP, so they can eventually communicate also with
plain stations and more AP nodes in sight, without more trickery.
APuP has low hardware requirements, just AP mode support + 4-address mode, and
no more unnecessary complications, like hardcoded bridging or routing algorithm
in WiFi stack.
For each AP in sight an interface is created, and then it can be used as
convenient in each case, bridging, routing etc.
Those interfaces could be simply bridged in a trivial topology (which happens
automatically if wds_bridge is not an empty string), or feeded to a
routing daemon.
Signed-off-by: Gioacchino Mazzurco <gio@polymathes.cc>
---
hostapd/Makefile | 5 ++
hostapd/config_file.c | 9 +++
src/ap/ap_config.h | 29 +++++++
src/ap/ap_drv_ops.c | 26 ++++++
src/ap/ap_drv_ops.h | 3 +
src/ap/apup.c | 152 +++++++++++++++++++++++++++++++++++
src/ap/apup.h | 24 ++++++
src/ap/ieee802_11.c | 14 +++-
src/ap/ieee802_11.h | 2 +
src/drivers/driver.h | 2 +-
src/drivers/driver_nl80211.c | 14 +---
11 files changed, 264 insertions(+), 16 deletions(-)
create mode 100644 src/ap/apup.c
create mode 100644 src/ap/apup.h
diff --git a/hostapd/Makefile b/hostapd/Makefile
index 73048c1297..c890a7f29c 100644
--- a/hostapd/Makefile
+++ b/hostapd/Makefile
@@ -1415,6 +1415,11 @@ ifdef CONFIG_NO_TKIP
CFLAGS += -DCONFIG_NO_TKIP
endif
+ifdef CONFIG_APUP
+CFLAGS += -DCONFIG_APUP
+OBJS += ../src/ap/apup.o
+endif
+
$(DESTDIR)$(BINDIR)/%: %
install -D $(<) $(@)
diff --git a/hostapd/config_file.c b/hostapd/config_file.c
index bba5b19164..ef906199ec 100644
--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
@@ -5058,6 +5058,15 @@ static int hostapd_config_fill(struct hostapd_config *conf,
bss->mld_indicate_disabled = atoi(pos);
#endif /* CONFIG_TESTING_OPTIONS */
#endif /* CONFIG_IEEE80211BE */
+#ifdef CONFIG_APUP
+ } else if (os_strcmp(buf, "apup") == 0) {
+ bss->apup = !!atoi(pos);
+ if (bss->apup)
+ bss->wds_sta = 1;
+ } else if (os_strcmp(buf, "apup_peer_ifname_prefix") == 0) {
+ os_strlcpy(bss->apup_peer_ifname_prefix,
+ pos, sizeof(bss->apup_peer_ifname_prefix));
+#endif // def CONFIG_APUP
} else {
wpa_printf(MSG_ERROR,
"Line %d: unknown configuration item '%s'",
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
index 0e52a9990d..9102db5ed0 100644
--- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h
@@ -970,6 +970,35 @@ struct hostapd_bss_config {
bool mld_indicate_disabled;
#endif /* CONFIG_TESTING_OPTIONS */
#endif /* CONFIG_IEEE80211BE */
+
+#ifdef CONFIG_APUP
+ /**
+ * Access Point Micro Peering
+ * A simpler and more useful successor to Ad Hoc,
+ * Wireless Distribution System, 802.11s mesh mode, Multi-AP and EasyMesh.
+ *
+ * Almost plain APs communicate between them via 4-address mode, like in WDS
+ * but all of them are AP, so they can eventually communicate also with
+ * plain stations and more AP nodes in sight.
+ * Low hardware requirements, just AP mode support + 4-address mode, and no
+ * more unnecessary complications, like hardcoded bridging or routing
+ * algorithm in WiFi stack.
+ * For each AP in sight an interface is created, and then it can be used as
+ * convenient in each case, bridging, routing etc.
+ */
+ bool apup;
+
+ /**
+ * In 4-address mode each peer AP in sight is associated to its own
+ * interface so we have more flexibility in "user-space".
+ * Those interfaces could be simply bridged in a trivial topology (which
+ * happens automatically if wds_bridge is not an empty string), or feeded to
+ * a routing daemon.
+ *
+ * If not defined interface names are generated following the WDS convention.
+ */
+ char apup_peer_ifname_prefix[IFNAMSIZ + 1];
+#endif /* CONFIG_APUP */
};
/**
diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c
index e7396d9aea..05460e3d73 100644
--- a/src/ap/ap_drv_ops.c
+++ b/src/ap/ap_drv_ops.c
@@ -382,9 +382,35 @@ int hostapd_set_wds_sta(struct hostapd_data *hapd, char *ifname_wds,
const u8 *addr, int aid, int val)
{
const char *bridge = NULL;
+ char ifName[IFNAMSIZ + 1];
+
+ int mRet = 0;
if (hapd->driver == NULL || hapd->driver->set_wds_sta == NULL)
return -1;
+
+#ifdef CONFIG_APUP
+ if (hapd->conf->apup && hapd->conf->apup_peer_ifname_prefix[0]) {
+ mRet = os_snprintf(
+ ifName, sizeof(ifName), "%s%d",
+ hapd->conf->apup_peer_ifname_prefix, aid);
+ }
+ else
+#endif // def CONFIG_APUP
+ mRet = os_snprintf(
+ ifName, sizeof(ifName), "%s.sta%d",
+ hapd->conf->iface, aid);
+
+ if (mRet >= (int) sizeof(ifName))
+ wpa_printf(MSG_WARNING,
+ "nl80211: WDS interface name was truncated");
+ else if (mRet < 0)
+ return mRet;
+
+ // Pass back to the caller the resulting interface name
+ if (ifname_wds)
+ os_strlcpy(ifname_wds, ifName, IFNAMSIZ + 1);
+
if (hapd->conf->wds_bridge[0])
bridge = hapd->conf->wds_bridge;
return hapd->driver->set_wds_sta(hapd->drv_priv, addr, aid, val,
diff --git a/src/ap/ap_drv_ops.h b/src/ap/ap_drv_ops.h
index fa89d2398e..ab4dc8eb16 100644
--- a/src/ap/ap_drv_ops.h
+++ b/src/ap/ap_drv_ops.h
@@ -33,6 +33,9 @@ int hostapd_set_drv_ieee8021x(struct hostapd_data *hapd, const char *ifname,
int enabled);
int hostapd_vlan_if_add(struct hostapd_data *hapd, const char *ifname);
int hostapd_vlan_if_remove(struct hostapd_data *hapd, const char *ifname);
+
+/** @param val as per nl80211 driver implementation, 1 means add 0 means remove
+ */
int hostapd_set_wds_sta(struct hostapd_data *hapd, char *ifname_wds,
const u8 *addr, int aid, int val);
diff --git a/src/ap/apup.c b/src/ap/apup.c
new file mode 100644
index 0000000000..3575f1b6c6
--- /dev/null
+++ b/src/ap/apup.c
@@ -0,0 +1,152 @@
+/*
+ * hostapd / APuP Access Point Micro Peering
+ *
+ * Copyright (C) 2023-2024 Gioacchino Mazzurco <gio@polymathes.cc>
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+/* Be extremely careful altering include order, move just one in the wrong place
+ * and you will start getting a bunch of error of undefined bool, size_t etc. */
+
+#include "utils/includes.h"
+#include "utils/common.h"
+#include "utils/os.h"
+
+#include "apup.h"
+
+#include "drivers/driver.h"
+#include "wpa_auth.h"
+#include "ap_mlme.h"
+#include "ieee802_11.h"
+#include "ap_drv_ops.h"
+#include "sta_info.h"
+
+void apup_process_beacon(struct hostapd_data *hapd,
+ const struct ieee80211_mgmt *mgmt, size_t len,
+ const struct ieee802_11_elems *elems )
+{
+ if (!os_memcmp(hapd->own_addr, mgmt->bssid, ETH_ALEN))
+ {
+ wpa_printf(MSG_WARNING,
+ "apup_process_beacon(...) own beacon elems.ssid %.*s",
+ (int) elems->ssid_len, elems->ssid);
+ return;
+ }
+
+ if (elems->ssid_len != hapd->conf->ssid.ssid_len ||
+ os_memcmp(elems->ssid, hapd->conf->ssid.ssid, elems->ssid_len))
+ return;
+
+ struct sta_info* sta_ret = ap_get_sta(hapd, mgmt->bssid);
+ if (sta_ret)
+ return;
+
+ sta_ret = ap_sta_add(hapd, mgmt->bssid);
+
+ /* TODO: this has been added just to making compiler happy after breaking
+ * changes introduced in 11a607d121df512e010148bedcb4263a03329dc7 to support
+ * IEEE80211BE Multi Link Operation. Look at that commit with more time and
+ * understand what could be a proper implementation in this context too
+ */
+ const u8 *mld_link_addr = NULL;
+ bool mld_link_sta = false;
+
+ /* First add the station without more information */
+ int aRet = hostapd_sta_add(
+ hapd, mgmt->bssid, sta_ret->aid, 0,
+ NULL, 0, 0, NULL, NULL, NULL, 0, NULL, 0, NULL,
+ sta_ret->flags, 0, 0, 0,
+ 0, // 0 add, 1 set
+ mld_link_addr, mld_link_sta);
+
+ sta_ret->flags |= WLAN_STA_AUTH;
+ wpa_auth_sm_event(sta_ret->wpa_sm, WPA_AUTH);
+
+ /* TODO: Investigate if supporting WPA or other encryption method is
+ * possible */
+ sta_ret->auth_alg = WLAN_AUTH_OPEN;
+ mlme_authenticate_indication(hapd, sta_ret);
+
+ sta_ret->capability = le_to_host16(mgmt->u.beacon.capab_info);
+
+ if (sta_ret->capability & WLAN_CAPABILITY_SHORT_PREAMBLE)
+ sta_ret->flags |= WLAN_STA_SHORT_PREAMBLE;
+ else
+ sta_ret->flags &= ~WLAN_STA_SHORT_PREAMBLE;
+
+ hostapd_copy_supp_rates(hapd, sta_ret, elems);
+
+ /* Whithout this flag copy_sta_[v]ht_capab will disable [V]HT
+ * capabilities even if available */
+ if (elems->ht_capabilities || elems->vht_capabilities)
+ sta_ret->flags |= WLAN_STA_WMM;
+
+ copy_sta_ht_capab(hapd, sta_ret, elems->ht_capabilities);
+#ifdef CONFIG_IEEE80211AC
+ copy_sta_vht_capab(hapd, sta_ret, elems->vht_capabilities);
+ copy_sta_vht_oper(hapd, sta_ret, elems->vht_operation);
+ copy_sta_vendor_vht(hapd, sta_ret, elems->vendor_vht, elems->vendor_vht_len);
+#endif // def CONFIG_IEEE80211AC
+#ifdef CONFIG_IEEE80211AX
+ copy_sta_he_capab(hapd, sta_ret, IEEE80211_MODE_AP,
+ elems->he_capabilities, elems->he_capabilities_len);
+ copy_sta_he_6ghz_capab(hapd, sta_ret, elems->he_6ghz_band_cap);
+#endif // def CONFIG_IEEE80211AX
+#ifdef CONFIG_IEEE80211BE
+ copy_sta_eht_capab(hapd, sta_ret,
+ IEEE80211_MODE_AP, // TODO: Make sure is the right value
+ elems->he_capabilities, elems->he_capabilities_len,
+ elems->eht_capabilities, elems->eht_capabilities_len);
+#endif //def CONFIG_IEEE80211BE
+
+ update_ht_state(hapd, sta_ret);
+
+ if (hostapd_get_aid(hapd, sta_ret) < 0)
+ {
+ wpa_printf(MSG_INFO, "apup_process_beacon(...) No room for more AIDs");
+ return;
+ }
+
+ sta_ret->flags |= WLAN_STA_ASSOC_REQ_OK;
+
+ /* Make sure that the previously registered inactivity timer will not
+ * remove the STA immediately. */
+ sta_ret->timeout_next = STA_NULLFUNC;
+
+ sta_ret->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;
+
+ /* Then set the paramethers */
+ int sRet = hostapd_sta_add(
+ hapd, mgmt->bssid, sta_ret->aid,
+ sta_ret->capability,
+ sta_ret->supported_rates, sta_ret->supported_rates_len,
+ 0, // u16 listen_interval TODO ?
+ sta_ret->ht_capabilities,
+ sta_ret->vht_capabilities,
+ sta_ret->he_capab, sta_ret->he_capab_len,
+ sta_ret->eht_capab, sta_ret->eht_capab_len,
+ sta_ret->he_6ghz_capab,
+ sta_ret->flags,
+ 0, // u8 qosinfo
+ sta_ret->vht_opmode,
+ 0, // int supp_p2p_ps
+ 1, // 0 add, 1 set
+ mld_link_addr, mld_link_sta);
+
+ ap_sta_set_authorized(hapd, sta_ret, 1);
+ hostapd_set_sta_flags(hapd, sta_ret);
+
+ char mIfname[IFNAMSIZ + 1];
+ os_memset(mIfname, 0, IFNAMSIZ + 1);
+
+ // last param 1 means add 0 means remove
+ int mRet = hostapd_set_wds_sta(
+ hapd, mIfname, mgmt->bssid, sta_ret->aid, 1);
+
+ wpa_printf(MSG_INFO,
+ "apup_process_beacon(...) Added APuP peer at %s with flags: %d,"
+ " capabilities %d",
+ mIfname, sta_ret->flags, sta_ret->capability);
+}
diff --git a/src/ap/apup.h b/src/ap/apup.h
new file mode 100644
index 0000000000..a14a283bb4
--- /dev/null
+++ b/src/ap/apup.h
@@ -0,0 +1,24 @@
+/*
+ * hostapd / APuP Access Point Micro Peering
+ *
+ * Copyright (C) 2023-2024 Gioacchino Mazzurco <gio@polymathes.cc>
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+/* Be extremely careful altering include order, move just one in the wrong place
+ * and you will start getting a bunch of error of undefined bool, size_t etc. */
+
+#include "utils/includes.h"
+#include "utils/common.h"
+
+#include "hostapd.h"
+#include "common/ieee802_11_defs.h"
+
+/** When beacons from other Access Point are received, if the SSID is matching
+ * add them as APuP peers (aka WDS STA to our own AP) the same happens on the
+ * peer when receiving our beacons */
+void apup_process_beacon(struct hostapd_data *hapd,
+ const struct ieee80211_mgmt *mgmt, size_t len,
+ const struct ieee802_11_elems *elems );
diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
index 1c4dd22da1..09254f18f2 100644
--- a/src/ap/ieee802_11.c
+++ b/src/ap/ieee802_11.c
@@ -59,6 +59,9 @@
#include "nan_usd_ap.h"
#include "pasn/pasn_common.h"
+#ifdef CONFIG_APUP
+# include "apup.h"
+#endif // def CONFIG_APUP
#ifdef CONFIG_FILS
static struct wpabuf *
@@ -3469,8 +3472,8 @@ static u16 check_multi_ap(struct hostapd_data *hapd, struct sta_info *sta,
}
-static u16 copy_supp_rates(struct hostapd_data *hapd, struct sta_info *sta,
- struct ieee802_11_elems *elems)
+u16 hostapd_copy_supp_rates(struct hostapd_data *hapd, struct sta_info *sta,
+ const struct ieee802_11_elems *elems)
{
/* Supported rates not used in IEEE 802.11ad/DMG */
if (hapd->iface->current_mode &&
@@ -3855,7 +3858,7 @@ static int __check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
elems->ext_capab_len);
if (resp != WLAN_STATUS_SUCCESS)
return resp;
- resp = copy_supp_rates(hapd, sta, elems);
+ resp = hostapd_copy_supp_rates(hapd, sta, elems);
if (resp != WLAN_STATUS_SUCCESS)
return resp;
@@ -5927,6 +5930,11 @@ static void handle_beacon(struct hostapd_data *hapd,
0);
ap_list_process_beacon(hapd->iface, mgmt, &elems, fi);
+
+#ifdef CONFIG_APUP
+ if (hapd->conf->apup)
+ apup_process_beacon(hapd, mgmt, len, &elems);
+#endif // def CONFIG_APUP
}
diff --git a/src/ap/ieee802_11.h b/src/ap/ieee802_11.h
index a35486d464..0861bef82e 100644
--- a/src/ap/ieee802_11.h
+++ b/src/ap/ieee802_11.h
@@ -108,6 +108,8 @@ int hostapd_process_ml_assoc_req_addr(struct hostapd_data *hapd,
const u8 *basic_mle, size_t basic_mle_len,
u8 *mld_addr);
int hostapd_get_aid(struct hostapd_data *hapd, struct sta_info *sta);
+u16 hostapd_copy_supp_rates(struct hostapd_data *hapd, struct sta_info *sta,
+ const struct ieee802_11_elems *elems);
u16 copy_sta_ht_capab(struct hostapd_data *hapd, struct sta_info *sta,
const u8 *ht_capab);
u16 copy_sta_vendor_vht(struct hostapd_data *hapd, struct sta_info *sta,
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 1bbb9672cd..8d26561e97 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -3976,7 +3976,7 @@ struct wpa_driver_ops {
* Returns: 0 on success, -1 on failure
*/
int (*set_wds_sta)(void *priv, const u8 *addr, int aid, int val,
- const char *bridge_ifname, char *ifname_wds);
+ const char *bridge_ifname, const char *ifname_wds);
/**
* send_action - Transmit an Action frame
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index aeb1e6beef..b6e4ddd86d 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -8415,24 +8415,14 @@ static int have_ifidx(struct wpa_driver_nl80211_data *drv, int ifidx,
static int i802_set_wds_sta(void *priv, const u8 *addr, int aid, int val,
- const char *bridge_ifname, char *ifname_wds)
+ const char *bridge_ifname, const char *ifname_wds)
{
struct i802_bss *bss = priv;
struct wpa_driver_nl80211_data *drv = bss->drv;
- char name[IFNAMSIZ + 1];
+ const char *name = ifname_wds; // Kept to reduce changes to the minimum
union wpa_event_data event;
int ret;
- ret = os_snprintf(name, sizeof(name), "%s.sta%d", bss->ifname, aid);
- if (ret >= (int) sizeof(name))
- wpa_printf(MSG_WARNING,
- "nl80211: WDS interface name was truncated");
- else if (ret < 0)
- return ret;
-
- if (ifname_wds)
- os_strlcpy(ifname_wds, name, IFNAMSIZ + 1);
-
wpa_printf(MSG_DEBUG, "nl80211: Set WDS STA addr=" MACSTR
" aid=%d val=%d name=%s", MAC2STR(addr), aid, val, name);
if (val) {
--
2.44.2

View File

@ -0,0 +1,81 @@
From 9a265f70b5e4e048c568564aed5f9ac4a4fd76b0 Mon Sep 17 00:00:00 2001
From: Gioacchino Mazzurco <gio@polymathes.cc>
Date: Tue, 7 May 2024 10:37:54 +0200
Subject: [PATCH 2/3] APuP add ubus notification when a peer comes up
The notification ones get looks like
{ "apup-newpeer": {"address":"02:0a:ab:45:5a:ab","ifname":"wlan0.peer1"} }
Signed-off-by: Gioacchino Mazzurco <gio@polymathes.cc>
---
src/ap/apup.c | 8 ++++++++
src/ap/ubus.c | 15 +++++++++++++++
src/ap/ubus.h | 5 +++++
3 files changed, 28 insertions(+)
diff --git a/src/ap/apup.c b/src/ap/apup.c
index 3575f1b6c6..3a3991f4d6 100644
--- a/src/ap/apup.c
+++ b/src/ap/apup.c
@@ -23,6 +23,10 @@
#include "ap_drv_ops.h"
#include "sta_info.h"
+#ifdef UBUS_SUPPORT
+# include "ubus.h"
+#endif
+
void apup_process_beacon(struct hostapd_data *hapd,
const struct ieee80211_mgmt *mgmt, size_t len,
const struct ieee802_11_elems *elems )
@@ -149,4 +153,8 @@ void apup_process_beacon(struct hostapd_data *hapd,
"apup_process_beacon(...) Added APuP peer at %s with flags: %d,"
" capabilities %d",
mIfname, sta_ret->flags, sta_ret->capability);
+
+#ifdef UBUS_SUPPORT
+ hostapd_ubus_notify_apup_newpeer(hapd, mgmt->bssid, mIfname);
+#endif
}
diff --git a/src/ap/ubus.c b/src/ap/ubus.c
index 8689494bcf..f21516fc3c 100644
--- a/src/ap/ubus.c
+++ b/src/ap/ubus.c
@@ -2004,3 +2004,18 @@ int hostapd_ubus_notify_bss_transition_query(
return ureq.resp;
#endif
}
+
+#ifdef CONFIG_APUP
+void hostapd_ubus_notify_apup_newpeer(
+ struct hostapd_data *hapd, const u8 *addr, const char *ifname)
+{
+ if (!hapd->ubus.obj.has_subscribers)
+ return;
+
+ blob_buf_init(&b, 0);
+ blobmsg_add_macaddr(&b, "address", addr);
+ blobmsg_add_string(&b, "ifname", ifname);
+
+ ubus_notify(ctx, &hapd->ubus.obj, "apup-newpeer", b.head, -1);
+}
+#endif // def CONFIG_APUP
diff --git a/src/ap/ubus.h b/src/ap/ubus.h
index 22767d67ee..1c65e4dcb9 100644
--- a/src/ap/ubus.h
+++ b/src/ap/ubus.h
@@ -71,6 +71,11 @@ int hostapd_ubus_notify_bss_transition_query(
void hostapd_ubus_notify_authorized(struct hostapd_data *hapd, struct sta_info *sta,
const char *auth_alg);
+#ifdef CONFIG_APUP
+void hostapd_ubus_notify_apup_newpeer(
+ struct hostapd_data *hapd, const u8 *addr, const char *ifname);
+#endif // def CONFIG_APUP
+
#else
struct hostapd_ubus_bss {};
--
2.44.2

View File

@ -0,0 +1,79 @@
From aaeb60b39a72774c651187208ec47efd0daeb75b Mon Sep 17 00:00:00 2001
From: Gioacchino Mazzurco <gio@polymathes.cc>
Date: Tue, 7 May 2024 11:54:23 +0200
Subject: [PATCH 3/3] APuP add ucode hook for when a peer comes up
Signed-off-by: Gioacchino Mazzurco <gio@polymathes.cc>
---
src/ap/apup.c | 8 ++++++++
src/ap/ucode.c | 17 +++++++++++++++++
src/ap/ucode.h | 4 ++++
3 files changed, 29 insertions(+)
diff --git a/src/ap/apup.c b/src/ap/apup.c
index 3a3991f4d6..f736ddc8e3 100644
--- a/src/ap/apup.c
+++ b/src/ap/apup.c
@@ -27,6 +27,10 @@
# include "ubus.h"
#endif
+#ifdef UCODE_SUPPORT
+# include "ucode.h"
+#endif
+
void apup_process_beacon(struct hostapd_data *hapd,
const struct ieee80211_mgmt *mgmt, size_t len,
const struct ieee802_11_elems *elems )
@@ -157,4 +161,8 @@ void apup_process_beacon(struct hostapd_data *hapd,
#ifdef UBUS_SUPPORT
hostapd_ubus_notify_apup_newpeer(hapd, mgmt->bssid, mIfname);
#endif
+
+#ifdef UCODE_SUPPORT
+ hostapd_ucode_apup_newpeer(hapd, mIfname);
+#endif
}
diff --git a/src/ap/ucode.c b/src/ap/ucode.c
index d344190208..391002feae 100644
--- a/src/ap/ucode.c
+++ b/src/ap/ucode.c
@@ -811,3 +811,20 @@ void hostapd_ucode_free_bss(struct hostapd_data *hapd)
ucv_put(wpa_ucode_call(2));
ucv_gc(vm);
}
+
+#ifdef CONFIG_APUP
+void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname)
+{
+ uc_value_t *val;
+
+ if (wpa_ucode_call_prepare("apup_newpeer"))
+ return;
+
+ val = hostapd_ucode_bss_get_uval(hapd);
+ uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); // BSS ifname
+ uc_value_push(ucv_get(val));
+ uc_value_push(ucv_get(ucv_string_new(ifname))); // APuP peer ifname
+ ucv_put(wpa_ucode_call(2));
+ ucv_gc(vm);
+}
+#endif // def CONFIG_APUP
diff --git a/src/ap/ucode.h b/src/ap/ucode.h
index d00b787169..c9bdde6516 100644
--- a/src/ap/ucode.h
+++ b/src/ap/ucode.h
@@ -27,6 +27,10 @@ void hostapd_ucode_add_bss(struct hostapd_data *hapd);
void hostapd_ucode_free_bss(struct hostapd_data *hapd);
void hostapd_ucode_reload_bss(struct hostapd_data *hapd);
+#ifdef CONFIG_APUP
+void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname);
+#endif // def CONFIG_APUP
+
#else
static inline int hostapd_ucode_init(struct hapd_interfaces *ifaces)
--
2.44.2

View File

@ -350,7 +350,7 @@ SVN-Revision: 35130
list_for_each_entry(p, head, list) {
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -620,48 +620,53 @@ static void tcp_options_write(struct tcp
@@ -622,48 +622,53 @@ static void tcp_options_write(struct tcp
u16 options = opts->options; /* mungable copy */
if (unlikely(OPTION_MD5 & options)) {
@ -427,7 +427,7 @@ SVN-Revision: 35130
}
if (unlikely(opts->num_sack_blocks)) {
@@ -669,16 +674,17 @@ static void tcp_options_write(struct tcp
@@ -671,16 +676,17 @@ static void tcp_options_write(struct tcp
tp->duplicate_sack : tp->selective_acks;
int this_sack;
@ -451,7 +451,7 @@ SVN-Revision: 35130
}
tp->rx_opt.dsack = 0;
@@ -691,13 +697,14 @@ static void tcp_options_write(struct tcp
@@ -693,13 +699,14 @@ static void tcp_options_write(struct tcp
if (foc->exp) {
len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len;
@ -751,7 +751,7 @@ SVN-Revision: 35130
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -4214,14 +4214,16 @@ static bool tcp_parse_aligned_timestamp(
@@ -4225,14 +4225,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);

View File

@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -4672,6 +4672,7 @@ static const struct {
@@ -4693,6 +4693,7 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
int ret = 0;
bool invalid_bdaddr;
size_t i;
@@ -4700,7 +4701,8 @@ static int hci_dev_setup_sync(struct hci
@@ -4721,7 +4722,8 @@ static int hci_dev_setup_sync(struct hci
test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
if (!ret) {
if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) &&

View File

@ -361,7 +361,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
static void mem_cgroup_css_free(struct cgroup_subsys_state *css)
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -7949,6 +7949,7 @@ static void __init free_area_init_node(i
@@ -7956,6 +7956,7 @@ static void __init free_area_init_node(i
pgdat_set_deferred_range(pgdat);
free_area_init_core(pgdat);

View File

@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
int current_brightness;
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -527,6 +527,16 @@ static inline void *led_get_trigger_data
@@ -525,6 +525,16 @@ led_trigger_get_brightness(const struct
#endif /* CONFIG_LEDS_TRIGGERS */

View File

@ -230,7 +230,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
/* base state is ON (link present) */
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -530,6 +530,9 @@ static inline void *led_get_trigger_data
@@ -528,6 +528,9 @@ led_trigger_get_brightness(const struct
/* Trigger specific enum */
enum led_trigger_netdev_modes {
TRIGGER_NETDEV_LINK = 0,

View File

@ -127,7 +127,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
/* base state is ON (link present) */
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -533,6 +533,8 @@ enum led_trigger_netdev_modes {
@@ -531,6 +531,8 @@ enum led_trigger_netdev_modes {
TRIGGER_NETDEV_LINK_10,
TRIGGER_NETDEV_LINK_100,
TRIGGER_NETDEV_LINK_1000,

View File

@ -32,7 +32,7 @@ Link: https://lore.kernel.org/r/20230526204802.3081168-4-robimarko@gmail.com
enum _msm8996_version {
MSM8996_V3,
@@ -153,12 +148,12 @@ static enum _msm8996_version qcom_cpufre
@@ -157,12 +152,12 @@ static enum _msm8996_version qcom_cpufre
msm_id++;
switch ((enum _msm_id)*msm_id) {

View File

@ -36,7 +36,7 @@ Link: https://lore.kernel.org/r/20230526204802.3081168-5-robimarko@gmail.com
struct qcom_cpufreq_drv;
struct qcom_cpufreq_match_data {
@@ -134,60 +126,32 @@ static void get_krait_bin_format_b(struc
@@ -138,60 +130,32 @@ static void get_krait_bin_format_b(struc
dev_dbg(cpu_dev, "PVS version: %d\n", *pvs_ver);
}

View File

@ -99,7 +99,7 @@ Signed-off-by: Lee Jones <lee@kernel.org>
interval = jiffies_to_msecs(
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -533,6 +533,9 @@ enum led_trigger_netdev_modes {
@@ -531,6 +531,9 @@ enum led_trigger_netdev_modes {
TRIGGER_NETDEV_LINK_10,
TRIGGER_NETDEV_LINK_100,
TRIGGER_NETDEV_LINK_1000,

View File

@ -1,48 +0,0 @@
From 225990c487c1023e7b3aa89beb6a68011fbc0461 Mon Sep 17 00:00:00 2001
From: Mark Mentovai <mark@mentovai.com>
Date: Thu, 25 Jul 2024 16:41:44 -0400
Subject: [PATCH] net: phy: realtek: add support for RTL8366S Gigabit PHY
The PHY built in to the Realtek RTL8366S switch controller was
previously supported by genphy_driver. This PHY does not implement MMD
operations. Since commit 9b01c885be36 ("net: phy: c22: migrate to
genphy_c45_write_eee_adv()"), MMD register reads have been made during
phy_probe to determine EEE support. For genphy_driver, these reads are
transformed into 802.3 annex 22D clause 45-over-clause 22
mmd_phy_indirect operations that perform MII register writes to
MII_MMD_CTRL and MII_MMD_DATA. This overwrites those two MII registers,
which on this PHY are reserved and have another function, rendering the
PHY unusable while so configured.
Proper support for this PHY is restored by providing a phy_driver that
declares MMD operations as unsupported by using the helper functions
provided for that purpose, while remaining otherwise identical to
genphy_driver.
Fixes: 9b01c885be36 ("net: phy: c22: migrate to genphy_c45_write_eee_adv()")
Reported-by: Russell Senior <russell@personaltelco.net>
Closes: https://github.com/openwrt/openwrt/issues/15981
Link: https://github.com/openwrt/openwrt/issues/15739
Signed-off-by: Mark Mentovai <mark@mentovai.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/phy/realtek.c | 7 +++++++
1 file changed, 7 insertions(+)
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -1083,6 +1083,13 @@ static struct phy_driver realtek_drvs[]
.handle_interrupt = genphy_handle_interrupt_no_ack,
.suspend = genphy_suspend,
.resume = genphy_resume,
+ }, {
+ PHY_ID_MATCH_EXACT(0x001cc960),
+ .name = "RTL8366S Gigabit Ethernet",
+ .suspend = genphy_suspend,
+ .resume = genphy_resume,
+ .read_mmd = genphy_read_mmd_unsupported,
+ .write_mmd = genphy_write_mmd_unsupported,
},
};

View File

@ -296,7 +296,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
static void r8168fp_adjust_ocp_cmd(struct rtl8169_private *tp, u32 *cmd, int type)
{
/* based on RTL8168FP_OOBMAC_BASE in vendor driver */
@@ -5258,6 +5316,7 @@ static int rtl_init_one(struct pci_dev *
@@ -5254,6 +5312,7 @@ static int rtl_init_one(struct pci_dev *
raw_spin_lock_init(&tp->cfg9346_usage_lock);
raw_spin_lock_init(&tp->config25_lock);
raw_spin_lock_init(&tp->mac_ocp_lock);
@ -304,7 +304,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
dev->tstats = devm_netdev_alloc_pcpu_stats(&pdev->dev,
struct pcpu_sw_netstats);
@@ -5414,6 +5473,12 @@ static int rtl_init_one(struct pci_dev *
@@ -5410,6 +5469,12 @@ static int rtl_init_one(struct pci_dev *
if (rc)
return rc;

View File

@ -59,7 +59,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
obj-$(CONFIG_R8169) += r8169.o
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -5473,11 +5473,10 @@ static int rtl_init_one(struct pci_dev *
@@ -5469,11 +5469,10 @@ static int rtl_init_one(struct pci_dev *
if (rc)
return rc;

View File

@ -321,7 +321,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
padto = max_t(unsigned int, padto, ETH_ZLEN);
break;
default:
@@ -5225,7 +5282,7 @@ static void rtl_hw_initialize(struct rtl
@@ -5221,7 +5278,7 @@ static void rtl_hw_initialize(struct rtl
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
rtl_hw_init_8168g(tp);
break;

View File

@ -225,7 +225,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
void r8169_get_led_name(struct rtl8169_private *tp, int idx,
char *buf, int buf_len)
{
@@ -5530,10 +5581,12 @@ static int rtl_init_one(struct pci_dev *
@@ -5526,10 +5577,12 @@ static int rtl_init_one(struct pci_dev *
if (rc)
return rc;

View File

@ -124,7 +124,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
u32 ocp_base;
};
@@ -5126,6 +5128,8 @@ static void rtl_remove_one(struct pci_de
@@ -5122,6 +5124,8 @@ static void rtl_remove_one(struct pci_de
cancel_work_sync(&tp->wk.work);
@ -133,7 +133,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
unregister_netdev(tp->dev);
if (tp->dash_type != RTL_DASH_NONE)
@@ -5586,9 +5590,9 @@ static int rtl_init_one(struct pci_dev *
@@ -5582,9 +5586,9 @@ static int rtl_init_one(struct pci_dev *
if (IS_ENABLED(CONFIG_R8169_LEDS)) {
if (rtl_is_8125(tp))

View File

@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -5128,7 +5128,8 @@ static void rtl_remove_one(struct pci_de
@@ -5124,7 +5124,8 @@ static void rtl_remove_one(struct pci_de
cancel_work_sync(&tp->wk.work);

View File

@ -99,7 +99,7 @@ Signed-off-by: Lee Jones <lee@kernel.org>
interval = jiffies_to_msecs(
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -588,6 +588,9 @@ enum led_trigger_netdev_modes {
@@ -586,6 +586,9 @@ enum led_trigger_netdev_modes {
TRIGGER_NETDEV_LINK_10,
TRIGGER_NETDEV_LINK_100,
TRIGGER_NETDEV_LINK_1000,

View File

@ -4858,6 +4858,7 @@ CONFIG_PCI_SYSCALL=y
# CONFIG_PCMCIA_XIRC2PS is not set
# CONFIG_PCMCIA_XIRCOM is not set
# CONFIG_PCNET32 is not set
CONFIG_PCP_BATCH_SCALE_MAX=5
# CONFIG_PCPU_DEV_REFCNT is not set
# CONFIG_PCSPKR_PLATFORM is not set
# CONFIG_PCS_MTK_USXGMII is not set

View File

@ -4568,6 +4568,7 @@ CONFIG_PCI_SYSCALL=y
# CONFIG_PCMCIA_XIRCOM is not set
# CONFIG_PCNET32 is not set
# CONFIG_PCPU_DEV_REFCNT is not set
CONFIG_PCP_BATCH_SCALE_MAX=5
# CONFIG_PCSPKR_PLATFORM is not set
# CONFIG_PCS_MTK_USXGMII is not set
# CONFIG_PCS_XPCS is not set

View File

@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -2013,7 +2013,7 @@ config PADATA
@@ -2014,7 +2014,7 @@ config PADATA
bool
config ASN1

View File

@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1989,7 +1989,7 @@ config PADATA
@@ -1990,7 +1990,7 @@ config PADATA
bool
config ASN1

View File

@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -7903,7 +7903,7 @@ static void __init alloc_node_mem_map(st
@@ -7910,7 +7910,7 @@ static void __init alloc_node_mem_map(st
if (pgdat == NODE_DATA(0)) {
mem_map = NODE_DATA(0)->node_mem_map;
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)

View File

@ -0,0 +1,63 @@
From patchwork Mon Aug 12 01:56:41 2024
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
X-Patchwork-Id: 1971406
Return-Path:
<linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>
X-Original-To: incoming@patchwork.ozlabs.org
Delivered-To: patchwork-incoming@legolas.ozlabs.org
Date: Mon, 12 Aug 2024 02:56:41 +0100
From: Daniel Golle <daniel@makrotopia.org>
To: Miquel Raynal <miquel.raynal@bootlin.com>,
Richard Weinberger <richard@nod.at>,
Vignesh Raghavendra <vigneshr@ti.com>,
Tudor Ambarus <tudor.ambarus@linaro.org>,
Daniel Golle <daniel@makrotopia.org>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Chia-Lin Kao <acelan.kao@canonical.com>,
Martin Kurbanov <mmkurbanov@salutedevices.com>,
linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH] mtd: spinand: set bitflip_threshold to 75% of ECC strength
Message-ID:
<2117e387260b0a96f95b8e1652ff79e0e2d71d53.1723427450.git.daniel@makrotopia.org>
MIME-Version: 1.0
Content-Disposition: inline
X-BeenThere: linux-mtd@lists.infradead.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: Linux MTD discussion mailing list <linux-mtd.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-mtd>,
<mailto:linux-mtd-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-mtd/>
List-Post: <mailto:linux-mtd@lists.infradead.org>
List-Help: <mailto:linux-mtd-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-mtd>,
<mailto:linux-mtd-request@lists.infradead.org?subject=subscribe>
Sender: "linux-mtd" <linux-mtd-bounces@lists.infradead.org>
Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org
Reporting an unclean read from SPI-NAND only when the maximum number
of correctable bitflip errors has been hit seems a bit late.
UBI LEB scrubbing, which depends on the lower MTD device reporting
correctable bitflips, then only kicks in when it's almost too late.
Set bitflip_threshold to 75% of the ECC strength, which is also the
default for raw NAND.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
drivers/mtd/nand/spi/core.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
@@ -1286,6 +1286,7 @@ static int spinand_init(struct spinand_d
/* Propagate ECC information to mtd_info */
mtd->ecc_strength = nanddev_get_ecc_conf(nand)->strength;
mtd->ecc_step_size = nanddev_get_ecc_conf(nand)->step_size;
+ mtd->bitflip_threshold = DIV_ROUND_UP(mtd->ecc_strength * 3, 4);
ret = spinand_create_dirmaps(spinand);
if (ret) {

View File

@ -0,0 +1,63 @@
From 446daf20b0a6790751459cdde0ff9fc8813e54d1 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
Date: Mon, 29 Jul 2024 14:09:16 +0200
Subject: [PATCH] mtd: spinand: winbond: add support for W25N01KV
Add support for Winbond W25N01KV 1Gbit SPI-NAND.
It has 4-bit on-die ECC.
Signed-off-by: Robert Marko <robimarko@gmail.com>
---
drivers/mtd/nand/spi/winbond.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
--- a/drivers/mtd/nand/spi/winbond.c
+++ b/drivers/mtd/nand/spi/winbond.c
@@ -74,6 +74,18 @@ static int w25m02gv_select_target(struct
return spi_mem_exec_op(spinand->spimem, &op);
}
+static int w25n01kv_ooblayout_ecc(struct mtd_info *mtd, int section,
+ struct mtd_oob_region *region)
+{
+ if (section > 3)
+ return -ERANGE;
+
+ region->offset = 64 + (8 * section);
+ region->length = 7;
+
+ return 0;
+}
+
static int w25n02kv_ooblayout_ecc(struct mtd_info *mtd, int section,
struct mtd_oob_region *region)
{
@@ -98,6 +110,11 @@ static int w25n02kv_ooblayout_free(struc
return 0;
}
+static const struct mtd_ooblayout_ops w25n01kv_ooblayout = {
+ .ecc = w25n01kv_ooblayout_ecc,
+ .free = w25n02kv_ooblayout_free,
+};
+
static const struct mtd_ooblayout_ops w25n02kv_ooblayout = {
.ecc = w25n02kv_ooblayout_ecc,
.free = w25n02kv_ooblayout_free,
@@ -160,6 +177,15 @@ static const struct spinand_info winbond
&update_cache_variants),
0,
SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)),
+ SPINAND_INFO("W25N01KV",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xae, 0x21),
+ NAND_MEMORG(1, 2048, 96, 64, 1024, 20, 1, 1, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
+ &update_cache_variants),
+ 0,
+ SPINAND_ECCINFO(&w25n01kv_ooblayout, w25n02kv_ecc_get_status)),
SPINAND_INFO("W25N02KV",
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x22),
NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),

View File

@ -9,8 +9,7 @@ BOARDNAME:=NXP i.MX
FEATURES:=audio display fpu gpio pcie rtc usb usbgadget squashfs targz nand ubifs boot-part rootfs-part
SUBTARGETS:=cortexa7 cortexa9 cortexa53
KERNEL_PATCHVER:=6.1
KERNEL_TESTING_PATCHVER:=6.6
KERNEL_PATCHVER:=6.6
include $(INCLUDE_DIR)/target.mk

View File

@ -1,486 +0,0 @@
CONFIG_ALIGNMENT_TRAP=y
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_ARCH_MMAP_RND_BITS_MAX=15
CONFIG_ARCH_MULTIPLATFORM=y
CONFIG_ARCH_MULTI_V6_V7=y
CONFIG_ARCH_MULTI_V7=y
CONFIG_ARCH_MXC=y
CONFIG_ARCH_NR_GPIO=0
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARM=y
CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
CONFIG_ARM_ERRATA_754322=y
CONFIG_ARM_ERRATA_764369=y
CONFIG_ARM_ERRATA_775420=y
CONFIG_ARM_ERRATA_814220=y
CONFIG_ARM_HAS_GROUP_RELOCS=y
CONFIG_ARM_HEAVY_MB=y
# CONFIG_ARM_IMX6Q_CPUFREQ is not set
# CONFIG_ARM_IMX_CPUFREQ_DT is not set
CONFIG_ARM_L1_CACHE_SHIFT=6
CONFIG_ARM_L1_CACHE_SHIFT_6=y
CONFIG_ARM_PATCH_IDIV=y
CONFIG_ARM_PATCH_PHYS_VIRT=y
CONFIG_ARM_THUMB=y
CONFIG_ARM_UNWIND=y
CONFIG_ARM_VIRT_EXT=y
CONFIG_ASN1=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_ATA=y
CONFIG_ATAGS=y
# CONFIG_ATA_SFF is not set
CONFIG_AUTO_ZRELADDR=y
CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_PM=y
CONFIG_CACHE_L2X0=y
CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
CONFIG_CC_NO_ARRAY_BOUNDS=y
CONFIG_CLKSRC_IMX_GPT=y
CONFIG_CLKSRC_MMIO=y
# CONFIG_CLK_IMX8MM is not set
# CONFIG_CLK_IMX8MN is not set
# CONFIG_CLK_IMX8MP is not set
# CONFIG_CLK_IMX8MQ is not set
# CONFIG_CLK_IMX8ULP is not set
# CONFIG_CLK_IMX93 is not set
CONFIG_CLONE_BACKWARDS=y
CONFIG_CLZ_TAB=y
CONFIG_COMMON_CLK=y
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
CONFIG_COMPAT_32BIT_TIME=y
CONFIG_CONTEXT_TRACKING=y
CONFIG_CONTEXT_TRACKING_IDLE=y
CONFIG_CPUFREQ_DT=y
CONFIG_CPUFREQ_DT_PLATDEV=y
CONFIG_CPU_32v6K=y
CONFIG_CPU_32v7=y
CONFIG_CPU_ABRT_EV7=y
CONFIG_CPU_CACHE_V7=y
CONFIG_CPU_CACHE_VIPT=y
CONFIG_CPU_COPY_V6=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_THERMAL=y
CONFIG_CPU_HAS_ASID=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_PABRT_V7=y
CONFIG_CPU_RMAP=y
CONFIG_CPU_SPECTRE=y
CONFIG_CPU_THERMAL=y
CONFIG_CPU_THUMB_CAPABLE=y
CONFIG_CPU_TLB_V7=y
CONFIG_CPU_V7=y
CONFIG_CRC16=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_AES_ARM_BS=y
CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y
CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
CONFIG_CRYPTO_AUTHENC=y
CONFIG_CRYPTO_BLAKE2S_ARM=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CHACHA20=y
CONFIG_CRYPTO_CHACHA20_NEON=y
CONFIG_CRYPTO_CRC32=y
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_CRC32_ARM_CE=y
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_DEV_FSL_CAAM=y
CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y
CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y
CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y
# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
CONFIG_CRYPTO_DEV_FSL_CAAM_PRNG_API=y
CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ENGINE=y
CONFIG_CRYPTO_HASH_INFO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
CONFIG_CRYPTO_LIB_DES=y
CONFIG_CRYPTO_LIB_SHA1=y
CONFIG_CRYPTO_LIB_SHA256=y
CONFIG_CRYPTO_LIB_UTILS=y
CONFIG_CRYPTO_LZO=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_RSA=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA1_ARM=y
CONFIG_CRYPTO_SHA1_ARM_NEON=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA256_ARM=y
CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_SHA512_ARM=y
CONFIG_CRYPTO_SIMD=y
CONFIG_CRYPTO_XTS=y
CONFIG_CRYPTO_ZSTD=y
CONFIG_CURRENT_POINTER_IN_TPIDRURO=y
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
CONFIG_DEBUG_MISC=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_LZO=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DMADEVICES=y
CONFIG_DMA_ENGINE=y
CONFIG_DMA_OF=y
CONFIG_DMA_OPS=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
# CONFIG_DRM_FSL_LDB is not set
# CONFIG_DRM_IMX8QM_LDB is not set
# CONFIG_DRM_IMX8QXP_LDB is not set
# CONFIG_DRM_IMX8QXP_PIXEL_COMBINER is not set
# CONFIG_DRM_IMX8QXP_PIXEL_LINK_TO_DPI is not set
# CONFIG_DRM_DW_HDMI_GP_AUDIO is not set
# CONFIG_VIDEO_IMX_MIPI_CSIS is not set
# CONFIG_VIDEO_DW100 is not set
# CONFIG_VIDEO_ROCKCHIP_ISP1 is not set
# CONFIG_VIDEO_HANTRO is not set
CONFIG_DTC=y
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_ENCRYPTED_KEYS=y
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
CONFIG_EXTCON=y
CONFIG_F2FS_FS=y
CONFIG_FEC=y
CONFIG_FIXED_PHY=y
CONFIG_FIX_EARLYCON_MEM=y
# CONFIG_FSL_DPAA2_SWITCH is not set
CONFIG_FSL_GUTS=y
CONFIG_FS_ENCRYPTION=y
CONFIG_FS_ENCRYPTION_ALGS=y
CONFIG_FS_IOMAP=y
CONFIG_FS_MBCACHE=y
CONFIG_FS_POSIX_ACL=y
CONFIG_FWNODE_MDIO=y
CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_FW_LOADER_SYSFS=y
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_ARCH_TOPOLOGY=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_CPU_VULNERABILITIES=y
CONFIG_GENERIC_EARLY_IOREMAP=y
CONFIG_GENERIC_GETTIMEOFDAY=y
CONFIG_GENERIC_IDLE_POLL_SETUP=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
CONFIG_GENERIC_MSI_IRQ=y
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_PINCONF=y
CONFIG_GENERIC_PINCTRL_GROUPS=y
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_VDSO_32=y
# CONFIG_GIANFAR is not set
CONFIG_GLOB=y
CONFIG_GPIOLIB_IRQCHIP=y
CONFIG_GPIO_CDEV=y
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_MXC=y
CONFIG_GPIO_VF610=y
CONFIG_GRO_CELLS=y
CONFIG_HARDEN_BRANCH_PREDICTOR=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_HAS_DMA=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAVE_SMP=y
CONFIG_HWMON=y
CONFIG_HW_RANDOM=y
CONFIG_HZ_FIXED=0
CONFIG_HZ_PERIODIC=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_IMX=y
# CONFIG_I2C_IMX_LPI2C is not set
CONFIG_I2C_SLAVE=y
# CONFIG_I2C_SLAVE_TESTUNIT is not set
CONFIG_IMX2_WDT=y
# CONFIG_IMX7ULP_WDT is not set
# CONFIG_IMX8MM_THERMAL is not set
CONFIG_IMX_DMA=y
# CONFIG_IMX_GPCV2_PM_DOMAINS is not set
CONFIG_IMX_INTMUX=y
CONFIG_IMX_IRQSTEER=y
CONFIG_IMX_MU_MSI=m
CONFIG_IMX_SDMA=y
CONFIG_IMX_THERMAL=y
# CONFIG_IMX_WEIM is not set
CONFIG_INITRAMFS_SOURCE=""
CONFIG_IRQCHIP=y
CONFIG_IRQSTACKS=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_WORK=y
CONFIG_JBD2=y
# CONFIG_JFFS2_FS is not set
CONFIG_KEYS=y
CONFIG_LIBFDT=y
CONFIG_LOCK_DEBUGGING_SUPPORT=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_DEVRES=y
CONFIG_MEMFD_CREATE=y
CONFIG_MFD_SYSCON=y
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
CONFIG_MIGRATION=y
CONFIG_MMC=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_CQHCI=y
# CONFIG_MMC_MXC is not set
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_ESDHC_IMX=y
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
CONFIG_MMC_SDHCI_OF_ESDHC=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MODULES_USE_ELF_REL=y
CONFIG_MPILIB=y
CONFIG_MTD_NAND_CORE=y
CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_NAND_GPMI_NAND=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MUTEX_SPIN_ON_OWNER=y
# CONFIG_MX3_IPU is not set
CONFIG_MXC_CLK=y
CONFIG_MXS_DMA=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEON=y
CONFIG_NET_DEVLINK=y
CONFIG_NET_DSA=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_DSA_COMMON=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_PTP_CLASSIFY=y
CONFIG_NET_SELFTESTS=y
CONFIG_NET_SWITCHDEV=y
CONFIG_NLS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NR_CPUS=4
CONFIG_NVMEM=y
# CONFIG_NVMEM_IMX_IIM is not set
CONFIG_NVMEM_IMX_OCOTP=y
# CONFIG_NVMEM_IMX_OCOTP_ELE is not set
CONFIG_NVMEM_LAYOUTS=y
# CONFIG_NVMEM_SNVS_LPGPR is not set
CONFIG_NVMEM_SYSFS=y
CONFIG_OF=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_FLATTREE=y
CONFIG_OF_GPIO=y
CONFIG_OF_IRQ=y
CONFIG_OF_KOBJ=y
CONFIG_OF_MDIO=y
CONFIG_OLD_SIGACTION=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OUTER_CACHE=y
CONFIG_OUTER_CACHE_SYNC=y
CONFIG_PADATA=y
CONFIG_PAGE_OFFSET=0x80000000
CONFIG_PAGE_POOL=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_PGTABLE_LEVELS=2
CONFIG_PHYLIB=y
CONFIG_PHYLINK=y
CONFIG_PINCTRL=y
# CONFIG_PINCTRL_IMX8ULP is not set
# CONFIG_PINCTRL_IMX93 is not set
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
CONFIG_PL310_ERRATA_769419=y
CONFIG_PM=y
CONFIG_PM_CLK=y
CONFIG_PM_OPP=y
CONFIG_PPS=y
CONFIG_PREEMPT_NONE_BUILD=y
CONFIG_PTP_1588_CLOCK=y
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
CONFIG_PWM=y
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=y
# CONFIG_PWM_IMX_TPM is not set
CONFIG_PWM_SYSFS=y
CONFIG_RANDSTRUCT_NONE=y
CONFIG_RAS=y
CONFIG_RATIONAL=y
CONFIG_RD_BZIP2=y
CONFIG_RD_GZIP=y
CONFIG_RD_LZO=y
CONFIG_RD_XZ=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_MMIO=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_ANATOP=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_PFUZE100=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RFS_ACCEL=y
CONFIG_RPS=y
CONFIG_RTC_CLASS=y
# CONFIG_RTC_DRV_CMOS is not set
# CONFIG_RTC_DRV_IMXDI is not set
# CONFIG_RTC_DRV_MXC is not set
# CONFIG_RTC_DRV_MXC_V2 is not set
CONFIG_RTC_I2C_AND_SPI=y
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_SCHED_THERMAL_PRESSURE=y
CONFIG_SCSI=y
CONFIG_SCSI_COMMON=y
CONFIG_SERIAL_8250_FSL=y
CONFIG_SERIAL_IMX=y
CONFIG_SERIAL_IMX_CONSOLE=y
CONFIG_SERIAL_IMX_EARLYCON=y
CONFIG_SERIAL_MCTRL_GPIO=y
CONFIG_SGL_ALLOC=y
CONFIG_SG_POOL=y
CONFIG_SMP=y
CONFIG_SMP_ON_UP=y
CONFIG_SOCK_RX_QUEUE_MAPPING=y
CONFIG_SOC_BUS=y
# CONFIG_SOC_IMX50 is not set
# CONFIG_SOC_IMX51 is not set
# CONFIG_SOC_IMX53 is not set
# CONFIG_SOC_IMX6Q is not set
# CONFIG_SOC_IMX6SL is not set
# CONFIG_SOC_IMX6SLL is not set
# CONFIG_SOC_IMX6SX is not set
# CONFIG_SOC_IMX6UL is not set
# CONFIG_SOC_IMX7D is not set
# CONFIG_SOC_IMX7ULP is not set
# CONFIG_SOC_IMX8M is not set
# CONFIG_SOC_IMX9 is not set
# CONFIG_SOC_LS1021A is not set
# CONFIG_SOC_VF610 is not set
CONFIG_SOFTIRQ_ON_OWN_STACK=y
CONFIG_SPARSE_IRQ=y
CONFIG_SPI=y
CONFIG_SPI_BITBANG=y
# CONFIG_SPI_FSL_LPSPI is not set
# CONFIG_SPI_FSL_QUADSPI is not set
CONFIG_SPI_IMX=y
CONFIG_SPI_MASTER=y
CONFIG_SRAM=y
CONFIG_SRAM_EXEC=y
CONFIG_SRCU=y
CONFIG_STMP_DEVICE=y
CONFIG_SWPHY=y
CONFIG_SWP_EMULATE=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_THERMAL=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_THERMAL_OF=y
CONFIG_THREAD_INFO_IN_TASK=y
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_TIMER_OF=y
CONFIG_TIMER_PROBE=y
CONFIG_TREE_RCU=y
CONFIG_TREE_SRCU=y
CONFIG_UBIFS_FS=y
# CONFIG_UCLAMP_TASK is not set
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
CONFIG_UNWINDER_ARM=y
CONFIG_USB=y
CONFIG_USB_CHIPIDEA=y
CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_USB_CHIPIDEA_IMX=y
CONFIG_USB_CHIPIDEA_UDC=y
CONFIG_USB_COMMON=y
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_HCD_PLATFORM is not set
CONFIG_USB_GADGET=y
CONFIG_USB_MXS_PHY=y
CONFIG_USB_OTG=y
CONFIG_USB_PHY=y
CONFIG_USB_ROLE_SWITCH=y
CONFIG_USB_STORAGE=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_ULPI_BUS=y
CONFIG_USE_OF=y
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VMSPLIT_2G=y
# CONFIG_VMSPLIT_3G is not set
CONFIG_WATCHDOG_CORE=y
CONFIG_XPS=y
CONFIG_XXHASH=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_BCJ=y
CONFIG_ZBOOT_ROM_BSS=0
CONFIG_ZBOOT_ROM_TEXT=0
CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZSTD_COMMON=y
CONFIG_ZSTD_COMPRESS=y
CONFIG_ZSTD_DECOMPRESS=y

View File

@ -10,9 +10,7 @@ define Device/Default
KERNEL_NAME := zImage
KERNEL := kernel-bin | uImage none
KERNEL_LOADADDR := 0x80008000
ifdef CONFIG_LINUX_6_6
DTS_DIR := $(DTS_DIR)/nxp/imx
endif
IMAGES :=
endef

View File

@ -84,9 +84,7 @@ define Device/Default
KERNEL_NAME := zImage
KERNEL := kernel-bin | uImage none
KERNEL_LOADADDR := 0x10008000
ifdef CONFIG_LINUX_6_6
DTS_DIR := $(DTS_DIR)/nxp/imx
endif
IMAGES :=
endef

View File

@ -1,49 +0,0 @@
From ffcbb4ccd357eeb649036e379a34bf5fb8d4f47c Mon Sep 17 00:00:00 2001
From: Richard Zhu <hongxing.zhu@nxp.com>
Date: Thu, 13 Oct 2022 09:47:00 +0800
Subject: [PATCH 1/3] phy: freescale: imx8m-pcie: Refine register definitions
No function changes, refine PHY register definitions.
- Keep align with other CMN PHY registers, refine the definitions of
PHY_CMN_REG75.
- Remove two BIT definitions that are not used at all.
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Tested-by: Marek Vasut <marex@denx.de>
Tested-by: Richard Leitner <richard.leitner@skidata.com>
Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
---
drivers/phy/freescale/phy-fsl-imx8m-pcie.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
--- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
+++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
@@ -32,12 +32,10 @@
#define IMX8MM_PCIE_PHY_CMN_REG065 0x194
#define ANA_AUX_RX_TERM (BIT(7) | BIT(4))
#define ANA_AUX_TX_LVL GENMASK(3, 0)
-#define IMX8MM_PCIE_PHY_CMN_REG75 0x1D4
-#define PCIE_PHY_CMN_REG75_PLL_DONE 0x3
+#define IMX8MM_PCIE_PHY_CMN_REG075 0x1D4
+#define ANA_PLL_DONE 0x3
#define PCIE_PHY_TRSV_REG5 0x414
-#define PCIE_PHY_TRSV_REG5_GEN1_DEEMP 0x2D
#define PCIE_PHY_TRSV_REG6 0x418
-#define PCIE_PHY_TRSV_REG6_GEN2_DEEMP 0xF
#define IMX8MM_GPR_PCIE_REF_CLK_SEL GENMASK(25, 24)
#define IMX8MM_GPR_PCIE_REF_CLK_PLL FIELD_PREP(IMX8MM_GPR_PCIE_REF_CLK_SEL, 0x3)
@@ -152,9 +150,8 @@ static int imx8_pcie_phy_power_on(struct
}
/* Polling to check the phy is ready or not. */
- ret = readl_poll_timeout(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG75,
- val, val == PCIE_PHY_CMN_REG75_PLL_DONE,
- 10, 20000);
+ ret = readl_poll_timeout(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG075,
+ val, val == ANA_PLL_DONE, 10, 20000);
return ret;
}

View File

@ -1,99 +0,0 @@
From bf03b9281b119bcdc167b2dd6ac98294587eb5ff Mon Sep 17 00:00:00 2001
From: Richard Zhu <hongxing.zhu@nxp.com>
Date: Thu, 13 Oct 2022 09:47:02 +0800
Subject: [PATCH 3/3] phy: freescale: imx8m-pcie: Add i.MX8MP PCIe PHY support
Add i.MX8MP PCIe PHY support.
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Tested-by: Marek Vasut <marex@denx.de>
Tested-by: Richard Leitner <richard.leitner@skidata.com>
Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
drivers/phy/freescale/phy-fsl-imx8m-pcie.c | 25 ++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
--- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
+++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
@@ -48,6 +48,7 @@
enum imx8_pcie_phy_type {
IMX8MM,
+ IMX8MP,
};
struct imx8_pcie_phy_drvdata {
@@ -60,6 +61,7 @@ struct imx8_pcie_phy {
struct clk *clk;
struct phy *phy;
struct regmap *iomuxc_gpr;
+ struct reset_control *perst;
struct reset_control *reset;
u32 refclk_pad_mode;
u32 tx_deemph_gen1;
@@ -74,11 +76,11 @@ static int imx8_pcie_phy_power_on(struct
u32 val, pad_mode;
struct imx8_pcie_phy *imx8_phy = phy_get_drvdata(phy);
- reset_control_assert(imx8_phy->reset);
-
pad_mode = imx8_phy->refclk_pad_mode;
switch (imx8_phy->drvdata->variant) {
case IMX8MM:
+ reset_control_assert(imx8_phy->reset);
+
/* Tune PHY de-emphasis setting to pass PCIe compliance. */
if (imx8_phy->tx_deemph_gen1)
writel(imx8_phy->tx_deemph_gen1,
@@ -87,6 +89,8 @@ static int imx8_pcie_phy_power_on(struct
writel(imx8_phy->tx_deemph_gen2,
imx8_phy->base + PCIE_PHY_TRSV_REG6);
break;
+ case IMX8MP: /* Do nothing. */
+ break;
}
if (pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ||
@@ -143,6 +147,9 @@ static int imx8_pcie_phy_power_on(struct
IMX8MM_GPR_PCIE_CMN_RST);
switch (imx8_phy->drvdata->variant) {
+ case IMX8MP:
+ reset_control_deassert(imx8_phy->perst);
+ fallthrough;
case IMX8MM:
reset_control_deassert(imx8_phy->reset);
usleep_range(200, 500);
@@ -183,8 +190,14 @@ static const struct imx8_pcie_phy_drvdat
.variant = IMX8MM,
};
+static const struct imx8_pcie_phy_drvdata imx8mp_drvdata = {
+ .gpr = "fsl,imx8mp-iomuxc-gpr",
+ .variant = IMX8MP,
+};
+
static const struct of_device_id imx8_pcie_phy_of_match[] = {
{.compatible = "fsl,imx8mm-pcie-phy", .data = &imx8mm_drvdata, },
+ {.compatible = "fsl,imx8mp-pcie-phy", .data = &imx8mp_drvdata, },
{ },
};
MODULE_DEVICE_TABLE(of, imx8_pcie_phy_of_match);
@@ -240,6 +253,14 @@ static int imx8_pcie_phy_probe(struct pl
return PTR_ERR(imx8_phy->reset);
}
+ if (imx8_phy->drvdata->variant == IMX8MP) {
+ imx8_phy->perst =
+ devm_reset_control_get_exclusive(dev, "perst");
+ if (IS_ERR(imx8_phy->perst))
+ dev_err_probe(dev, PTR_ERR(imx8_phy->perst),
+ "Failed to get PCIE PHY PERST control\n");
+ }
+
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
imx8_phy->base = devm_ioremap_resource(dev, res);
if (IS_ERR(imx8_phy->base))

View File

@ -1,11 +0,0 @@
--- a/arch/arm/boot/dts/imx6dl-wandboard.dts
+++ b/arch/arm/boot/dts/imx6dl-wandboard.dts
@@ -16,4 +16,8 @@
device_type = "memory";
reg = <0x10000000 0x40000000>;
};
+
+ chosen {
+ bootargs = "console=ttymxc0,115200";
+ };
};

View File

@ -1,96 +0,0 @@
From 68604e89335ccb3e893b5a05b2c0d5cd2eaaf6ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
Date: Tue, 3 Mar 2020 15:14:40 +0100
Subject: [PATCH] ARM: dts: imx6q-apalis: ixora: add status LEDs aliases
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Štetiar <ynezz@true.cz>
---
arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts | 16 ++++++++++------
arch/arm/boot/dts/imx6q-apalis-ixora.dts | 12 ++++++++----
2 files changed, 18 insertions(+), 10 deletions(-)
--- a/arch/arm/boot/dts/imx6q-apalis-ixora.dts
+++ b/arch/arm/boot/dts/imx6q-apalis-ixora.dts
@@ -24,6 +24,10 @@
i2c2 = &i2c2;
rtc0 = &rtc_i2c;
rtc1 = &snvs_rtc;
+ led-boot = &led_boot;
+ led-failsafe = &led_failsafe;
+ led-running = &led_running;
+ led-upgrade = &led_upgrade;
};
chosen {
@@ -35,22 +39,22 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_leds_ixora>;
- led4-green {
+ led_running: led4-green {
gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
label = "LED_4_GREEN";
};
- led4-red {
+ led_upgrade: led4-red {
gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
label = "LED_4_RED";
};
- led5-green {
+ led_boot: led5-green {
gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
label = "LED_5_GREEN";
};
- led5-red {
+ led_failsafe: led5-red {
gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
label = "LED_5_RED";
};
--- a/arch/arm/boot/dts/imx6q-apalis-ixora-v1.2.dts
+++ b/arch/arm/boot/dts/imx6q-apalis-ixora-v1.2.dts
@@ -24,6 +24,10 @@
i2c2 = &i2c2;
rtc0 = &rtc_i2c;
rtc1 = &snvs_rtc;
+ led-boot = &led_boot;
+ led-failsafe = &led_failsafe;
+ led-running = &led_running;
+ led-upgrade = &led_upgrade;
};
chosen {
@@ -36,22 +40,22 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_leds_ixora>;
- led4-green {
- gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
+ led_running: led4-green {
+ gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
label = "LED_4_GREEN";
};
- led4-red {
- gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+ led_upgrade: led4-red {
+ gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
label = "LED_4_RED";
};
- led5-green {
+ led_boot: led5-green {
gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
label = "LED_5_GREEN";
};
- led5-red {
+ led_failsafe: led5-red {
gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
label = "LED_5_RED";
};

View File

@ -1,78 +0,0 @@
From b6764bb27c819cdcf854371db485a43d71f579f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
Date: Tue, 3 Mar 2020 15:15:57 +0100
Subject: [PATCH] ARM: dts: imx6q-apalis: ixora: make switch3 reset button
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Štetiar <ynezz@true.cz>
---
arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts | 15 ++++++++++++++-
arch/arm/boot/dts/imx6q-apalis-ixora.dts | 15 ++++++++++++++-
2 files changed, 28 insertions(+), 2 deletions(-)
--- a/arch/arm/boot/dts/imx6q-apalis-ixora.dts
+++ b/arch/arm/boot/dts/imx6q-apalis-ixora.dts
@@ -59,6 +59,17 @@
label = "LED_5_RED";
};
};
+
+ gpio-keys {
+ pinctrl-0 = <&pinctrl_gpio_keys &pinctrl_switch3_ixora>;
+
+ reset {
+ label = "reset";
+ gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <10>;
+ };
+ };
};
&can1 {
@@ -181,4 +192,10 @@
MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x1b0b0
>;
};
+
+ pinctrl_switch3_ixora: switch3ixora {
+ fsl,pins = <
+ MX6QDL_PAD_SD1_DAT0__GPIO1_IO16 0x1b0b0
+ >;
+ };
};
--- a/arch/arm/boot/dts/imx6q-apalis-ixora-v1.2.dts
+++ b/arch/arm/boot/dts/imx6q-apalis-ixora-v1.2.dts
@@ -61,6 +61,17 @@
};
};
+ gpio-keys {
+ pinctrl-0 = <&pinctrl_gpio_keys &pinctrl_switch3_ixora>;
+
+ reset {
+ label = "reset";
+ gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <10>;
+ };
+ };
+
reg_3v3_vmmc: regulator-3v3-vmmc {
compatible = "regulator-fixed";
enable-active-high;
@@ -262,6 +273,12 @@
>;
};
+ pinctrl_switch3_ixora: switch3ixora {
+ fsl,pins = <
+ MX6QDL_PAD_SD1_DAT0__GPIO1_IO16 0x1b0b0
+ >;
+ };
+
pinctrl_mmc_cd_sleep: mmccdslpgrp {
fsl,pins = <
/* MMC1 CD */

View File

@ -1,24 +0,0 @@
--- a/arch/arm/boot/dts/imx7d-pico-pi.dts
+++ b/arch/arm/boot/dts/imx7d-pico-pi.dts
@@ -8,12 +8,20 @@
model = "TechNexion PICO-IMX7D Board and PI baseboard";
compatible = "technexion,imx7d-pico-pi", "fsl,imx7d";
+ aliases {
+ led-boot = &led_system;
+ led-failsafe = &led_system;
+ led-running = &led_system;
+ led-upgrade = &led_system;
+ label-mac-device = &fec1;
+ };
+
leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_leds>;
- led {
+ led_system: led {
label = "gpio-led";
gpios = <&gpio2 6 GPIO_ACTIVE_HIGH>;
};

View File

@ -1,23 +0,0 @@
From 6e8e5ccfbee7a531b035ffce3f95f3901946fa9d Mon Sep 17 00:00:00 2001
From: Robert Nelson <robertcnelson@gmail.com>
Date: Wed, 9 Jan 2019 14:33:24 -0600
Subject: [PATCH] ARM: imx7d-pico-pi.dts: add default stdout-path
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
---
arch/arm/boot/dts/imx7d-pico-pi.dts | 4 ++++
1 file changed, 4 insertions(+)
--- a/arch/arm/boot/dts/imx7d-pico-pi.dts
+++ b/arch/arm/boot/dts/imx7d-pico-pi.dts
@@ -16,6 +16,10 @@
label-mac-device = &fec1;
};
+ chosen {
+ stdout-path = "serial4:115200n8";
+ };
+
leds {
compatible = "gpio-leds";
pinctrl-names = "default";

View File

@ -135,6 +135,10 @@
macaddr_boardconfig_16: macaddr@16 {
reg = <0x16 0x6>;
};
eeprom_boardconfig_410: eeprom@410 {
reg = <0x410 0x200>;
};
};
};
};
@ -152,7 +156,8 @@
wifi@0,0 {
compatible = "pci0,0";
reg = <0x7000 0 0 0 0>;
ralink,mtd-eeprom = <&boardconfig 0x410>;
nvmem-cells = <&eeprom_boardconfig_410>;
nvmem-cell-names = "eeprom";
};
};

View File

@ -5524,7 +5524,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
(transaction layer end-to-end CRC checking).
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1600,6 +1600,8 @@ void pci_walk_bus_locked(struct pci_bus
@@ -1602,6 +1602,8 @@ void pci_walk_bus_locked(struct pci_bus
void *userdata);
int pci_cfg_space_size(struct pci_dev *dev);
unsigned char pci_bus_max_busnr(struct pci_bus *bus);

View File

@ -0,0 +1,16 @@
#!/bin/sh
trigger_fip_scrubbing() {
local vol voltype volname
for vol in /sys/class/ubi/ubi*_*; do
[ -e "$vol" ] || continue
voltype="$(cat "$vol"/type)"
volname="$(cat "$vol"/name)"
if [ "$voltype" = "static" ] && [ "$volname" = "fip" ]; then
cat "/dev/${vol##*/}" > /dev/null
break
fi
done
}
boot_hook_add preinit_main trigger_fip_scrubbing

View File

@ -15,6 +15,7 @@
led-failsafe = &led_green;
led-running = &led_green;
led-upgrade = &led_green;
label-mac-device = &gmac1;
};
chosen {

View File

@ -1,4 +1,5 @@
REQUIRE_IMAGE_METADATA=1
RAMFS_COPY_BIN='fitblk'
# Legacy full system upgrade including preloader for MediaTek SoCs on eMMC or SD
legacy_mtk_mmc_full_upgrade() {
@ -83,11 +84,7 @@ platform_do_upgrade() {
case "$board" in
bananapi,bpi-r2|\
unielec,u7623-02)
[ -e /dev/fit0 ] && fitblk /dev/fit0
[ -e /dev/fitrw ] && fitblk /dev/fitrw
bootdev="$(fitblk_get_bootdev)"
EMMC_KERN_DEV="/dev/$bootdev"
emmc_do_upgrade "$1"
fit_do_upgrade "$1"
;;
unielec,u7623-02-emmc-512m)
local magic="$(get_magic_long "$1")"

View File

@ -8,7 +8,7 @@
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
{
@@ -1345,6 +1346,7 @@ static int spinand_probe(struct spi_mem
@@ -1346,6 +1347,7 @@ static int spinand_probe(struct spi_mem
if (ret)
return ret;
@ -16,7 +16,7 @@
ret = mtd_device_register(mtd, NULL, 0);
if (ret)
goto err_spinand_cleanup;
@@ -1352,6 +1354,7 @@ static int spinand_probe(struct spi_mem
@@ -1353,6 +1355,7 @@ static int spinand_probe(struct spi_mem
return 0;
err_spinand_cleanup:
@ -24,7 +24,7 @@
spinand_cleanup(spinand);
return ret;
@@ -1370,6 +1373,7 @@ static int spinand_remove(struct spi_mem
@@ -1371,6 +1374,7 @@ static int spinand_remove(struct spi_mem
if (ret)
return ret;

View File

@ -1,161 +0,0 @@
From 9471c6ebf176284108115f60e22a176e70b97c0b Mon Sep 17 00:00:00 2001
From: Chen Minqiang <ptpt52@gmail.com>
Date: Thu, 12 Oct 2023 06:51:40 +0800
Subject: [PATCH] mtd: spinand: winbond: Support for W25MxxGV W25NxxKV series
---
drivers/mtd/nand/spi/winbond.c | 115 +++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+)
--- a/drivers/mtd/nand/spi/winbond.c
+++ b/drivers/mtd/nand/spi/winbond.c
@@ -15,6 +15,23 @@
#define WINBOND_CFG_BUF_READ BIT(3)
+#define W25N02_N04KV_STATUS_ECC_MASK (3 << 4)
+#define W25N02_N04KV_STATUS_ECC_NO_BITFLIPS (0 << 4)
+#define W25N02_N04KV_STATUS_ECC_1_4_BITFLIPS (1 << 4)
+#define W25N02_N04KV_STATUS_ECC_5_8_BITFLIPS (3 << 4)
+#define W25N02_N04KV_STATUS_ECC_UNCOR_ERROR (2 << 4)
+
+#define W25N01_M02GV_STATUS_ECC_MASK (3 << 4)
+#define W25N01_M02GV_STATUS_ECC_NO_BITFLIPS (0 << 4)
+#define W25N01_M02GV_STATUS_ECC_1_BITFLIPS (1 << 4)
+#define W25N01_M02GV_STATUS_ECC_UNCOR_ERROR (2 << 4)
+
+#define W25N01KV_STATUS_ECC_MASK (3 << 4)
+#define W25N01KV_STATUS_ECC_NO_BITFLIPS (0 << 4)
+#define W25N01KV_STATUS_ECC_1_3_BITFLIPS (1 << 4)
+#define W25N01KV_STATUS_ECC_4_BITFLIPS (3 << 4)
+#define W25N01KV_STATUS_ECC_UNCOR_ERROR (2 << 4)
+
static SPINAND_OP_VARIANTS(read_cache_variants,
SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
@@ -31,6 +48,29 @@ static SPINAND_OP_VARIANTS(update_cache_
SPINAND_PROG_LOAD_X4(false, 0, NULL, 0),
SPINAND_PROG_LOAD(false, 0, NULL, 0));
+static int w25n02kv_n04kv_ooblayout_ecc(struct mtd_info *mtd, int section,
+ struct mtd_oob_region *region)
+{
+ return -ERANGE;
+}
+
+static int w25n02kv_n04kv_ooblayout_free(struct mtd_info *mtd, int section,
+ struct mtd_oob_region *region)
+{
+ if (section > 3)
+ return -ERANGE;
+
+ region->offset = (16 * section) + 2;
+ region->length = 14;
+
+ return 0;
+}
+
+static const struct mtd_ooblayout_ops w25n02kv_n04kv_ooblayout = {
+ .ecc = w25n02kv_n04kv_ooblayout_ecc,
+ .free = w25n02kv_n04kv_ooblayout_free,
+};
+
static int w25m02gv_ooblayout_ecc(struct mtd_info *mtd, int section,
struct mtd_oob_region *region)
{
@@ -140,6 +180,58 @@ static int w25n02kv_ecc_get_status(struc
return -EINVAL;
}
+static int w25n01kv_ecc_get_status(struct spinand_device *spinand,
+ u8 status)
+{
+ switch (status & W25N01KV_STATUS_ECC_MASK) {
+ case W25N01KV_STATUS_ECC_NO_BITFLIPS:
+ return 0;
+
+ case W25N01KV_STATUS_ECC_1_3_BITFLIPS:
+ return 3;
+
+ case W25N01KV_STATUS_ECC_4_BITFLIPS:
+ return 4;
+
+ case W25N01KV_STATUS_ECC_UNCOR_ERROR:
+ return -EBADMSG;
+
+ default:
+ break;
+ }
+
+ return -EINVAL;
+}
+
+static int w25n02kv_n04kv_ecc_get_status(struct spinand_device *spinand,
+ u8 status)
+{
+ switch (status & W25N02_N04KV_STATUS_ECC_MASK) {
+ case W25N02_N04KV_STATUS_ECC_NO_BITFLIPS:
+ return 0;
+
+ case W25N02_N04KV_STATUS_ECC_1_4_BITFLIPS:
+ return 3;
+
+ case W25N02_N04KV_STATUS_ECC_5_8_BITFLIPS:
+ return 4;
+
+ /* W25N02_N04KV_use internal 8bit ECC algorithm.
+ * But the ECC strength is 4 bit requried.
+ * Return 3 if the bit bit flip count less than 5.
+ * Return 4 if the bit bit flip count more than 5 to 8.
+ */
+
+ case W25N02_N04KV_STATUS_ECC_UNCOR_ERROR:
+ return -EBADMSG;
+
+ default:
+ break;
+ }
+
+ return -EINVAL;
+}
+
static const struct spinand_info winbond_spinand_table[] = {
SPINAND_INFO("W25M02GV",
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xab, 0x21),
@@ -151,6 +243,16 @@ static const struct spinand_info winbond
0,
SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL),
SPINAND_SELECT_TARGET(w25m02gv_select_target)),
+ SPINAND_INFO("W25N01KV",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xae, 0x21),
+ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
+ NAND_ECCREQ(4, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
+ &update_cache_variants),
+ 0,
+ SPINAND_ECCINFO(&w25n02kv_n04kv_ooblayout,
+ w25n01kv_ecc_get_status)),
SPINAND_INFO("W25N01GV",
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x21),
NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
@@ -169,6 +271,19 @@ static const struct spinand_info winbond
&update_cache_variants),
0,
SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)),
+ /* W25N04KV has 2-die(lun), however, it can select die automatically.
+ * Treat it as single die here and double block size.
+ */
+ SPINAND_INFO("W25N04KV",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x23),
+ NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 2, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
+ &update_cache_variants),
+ 0,
+ SPINAND_ECCINFO(&w25n02kv_n04kv_ooblayout,
+ w25n02kv_n04kv_ecc_get_status)),
};
static int winbond_spinand_init(struct spinand_device *spinand)

View File

@ -0,0 +1,59 @@
From 3da41fe88ff52c578f3155550bcbe0ecf388f079 Mon Sep 17 00:00:00 2001
From: Zheng Zhang <everything411@qq.com>
Date: Sat, 10 Aug 2024 12:01:56 +0800
Subject: [PATCH] net: ethernet: mtk_wed: fix use-after-free panic in
mtk_wed_setup_tc_block_cb()
When there are multiple ap interfaces on one band and with WED on,
turning the interface down will cause a kernel panic on MT798X.
Previously, cb_priv was freed in mtk_wed_setup_tc_block() without
marking NULL,and mtk_wed_setup_tc_block_cb() didn't check the value, too.
Assign NULL after free cb_priv in mtk_wed_setup_tc_block() and check NULL
in mtk_wed_setup_tc_block_cb().
----------
Unable to handle kernel paging request at virtual address 0072460bca32b4f5
Call trace:
mtk_wed_setup_tc_block_cb+0x4/0x38
0xffffffc0794084bc
tcf_block_playback_offloads+0x70/0x1e8
tcf_block_unbind+0x6c/0xc8
...
---------
Fixes: 799684448e3e ("net: ethernet: mtk_wed: introduce wed wo support")
Signed-off-by: Zheng Zhang <everything411@qq.com>
---
drivers/net/ethernet/mediatek/mtk_wed.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/drivers/net/ethernet/mediatek/mtk_wed.c
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c
@@ -2685,14 +2685,15 @@ mtk_wed_setup_tc_block_cb(enum tc_setup_
{
struct mtk_wed_flow_block_priv *priv = cb_priv;
struct flow_cls_offload *cls = type_data;
- struct mtk_wed_hw *hw = priv->hw;
+ struct mtk_wed_hw *hw = NULL;
- if (!tc_can_offload(priv->dev))
+ if (!priv || !tc_can_offload(priv->dev))
return -EOPNOTSUPP;
if (type != TC_SETUP_CLSFLOWER)
return -EOPNOTSUPP;
+ hw = priv->hw;
return mtk_flow_offload_cmd(hw->eth, cls, hw->index);
}
@@ -2748,6 +2749,7 @@ mtk_wed_setup_tc_block(struct mtk_wed_hw
flow_block_cb_remove(block_cb, f);
list_del(&block_cb->driver_list);
kfree(block_cb->cb_priv);
+ block_cb->cb_priv = NULL;
}
return 0;
default:

View File

@ -44,7 +44,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
struct qcom_cpufreq_drv;
struct qcom_cpufreq_match_data {
@@ -203,6 +205,57 @@ len_error:
@@ -207,6 +209,57 @@ len_error:
return ret;
}
@ -102,7 +102,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
static const struct qcom_cpufreq_match_data match_data_kryo = {
.get_version = qcom_cpufreq_kryo_name_version,
};
@@ -217,6 +270,10 @@ static const struct qcom_cpufreq_match_d
@@ -221,6 +274,10 @@ static const struct qcom_cpufreq_match_d
.genpd_names = qcs404_genpd_names,
};
@ -113,7 +113,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
static int qcom_cpufreq_probe(struct platform_device *pdev)
{
struct qcom_cpufreq_drv *drv;
@@ -359,6 +416,7 @@ static const struct of_device_id qcom_cp
@@ -353,6 +410,7 @@ static const struct of_device_id qcom_cp
{ .compatible = "qcom,apq8096", .data = &match_data_kryo },
{ .compatible = "qcom,msm8996", .data = &match_data_kryo },
{ .compatible = "qcom,qcs404", .data = &match_data_qcs404 },

View File

@ -47,7 +47,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
struct qcom_cpufreq_drv;
struct qcom_cpufreq_match_data {
@@ -256,6 +261,44 @@ static int qcom_cpufreq_ipq6018_name_ver
@@ -260,6 +265,44 @@ static int qcom_cpufreq_ipq6018_name_ver
return 0;
}
@ -92,7 +92,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
static const struct qcom_cpufreq_match_data match_data_kryo = {
.get_version = qcom_cpufreq_kryo_name_version,
};
@@ -274,6 +317,10 @@ static const struct qcom_cpufreq_match_d
@@ -278,6 +321,10 @@ static const struct qcom_cpufreq_match_d
.get_version = qcom_cpufreq_ipq6018_name_version,
};
@ -103,7 +103,7 @@ Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
static int qcom_cpufreq_probe(struct platform_device *pdev)
{
struct qcom_cpufreq_drv *drv;
@@ -418,6 +465,7 @@ static const struct of_device_id qcom_cp
@@ -412,6 +459,7 @@ static const struct of_device_id qcom_cp
{ .compatible = "qcom,qcs404", .data = &match_data_qcs404 },
{ .compatible = "qcom,ipq6018", .data = &match_data_ipq6018 },
{ .compatible = "qcom,ipq8064", .data = &match_data_krait },

View File

@ -19,7 +19,7 @@ Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
@@ -721,8 +721,8 @@
@@ -723,8 +723,8 @@
compatible = "qcom,ipq8074-apcs-apps-global",
"qcom,ipq6018-apcs-apps-global";
reg = <0x0b111000 0x1000>;

View File

@ -79,7 +79,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
power-domains = <&gcc USB0_GDSC>;
resets = <&gcc GCC_USB0_BCR>;
@@ -674,6 +681,13 @@
@@ -675,6 +682,13 @@
<133330000>,
<19200000>;

View File

@ -12,7 +12,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
@@ -755,7 +755,7 @@
@@ -757,7 +757,7 @@
reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
ranges = <0 0xb00a000 0xffd>;
@ -21,7 +21,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
compatible = "arm,gic-v2m-frame";
msi-controller;
reg = <0x0 0xffd>;
@@ -868,8 +868,7 @@
@@ -870,8 +870,7 @@
ranges = <0x81000000 0x0 0x00000000 0x10200000 0x0 0x10000>, /* I/O */
<0x82000000 0x0 0x10220000 0x10220000 0x0 0xfde0000>; /* MEM */
@ -31,7 +31,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0x7>;
interrupt-map = <0 0 0 1 &intc 0 0 142
@@ -930,8 +929,7 @@
@@ -932,8 +931,7 @@
ranges = <0x81000000 0x0 0x00000000 0x20200000 0x0 0x10000>, /* I/O */
<0x82000000 0x0 0x20220000 0x20220000 0x0 0xfde0000>; /* MEM */

View File

@ -61,7 +61,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
spmi_bus: spmi@200f000 {
compatible = "qcom,spmi-pmic-arb";
reg = <0x0200f000 0x001000>,
@@ -970,6 +1001,56 @@
@@ -972,6 +1003,56 @@
"axi_s_sticky";
status = "disabled";
};

View File

@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
@@ -1051,6 +1051,117 @@
@@ -1053,6 +1053,117 @@
};
};
};

View File

@ -0,0 +1,94 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include <dt-bindings/leds/common.h>
#include "mt7628an_xiaomi_mi-router-4.dtsi"
/ {
compatible = "xiaomi,mi-router-4a-100m-intl-v2", "mediatek,mt7628an-soc";
model = "Xiaomi Mi Router 4A (100M International Edition V2)";
aliases {
led-boot = &led_power_yellow;
led-failsafe = &led_power_yellow;
led-running = &led_power_blue;
led-upgrade = &led_power_yellow;
label-mac-device = &ethernet;
};
leds {
compatible = "gpio-leds";
led_power_blue: power_blue {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_POWER;
gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
};
led_power_yellow: power_yellow {
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_POWER;
gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
};
wan {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_WAN;
gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
};
};
};
&partitions {
partition@60000 {
label = "overlay";
reg = <0x60000 0x100000>;
read-only;
};
partition@160000 {
label = "firmware";
reg = <0x160000 0xea0000>;
compatible = "denx,uimage";
};
};
&pcie {
status = "okay";
};
&eeprom_factory_8000 {
/* MT7613 has different eeprom size '0x4da8' */
/* See https://github.com/openwrt/openwrt/pull/13587 */
/* You can also see this in mt76/mt7615/eeprom.h: */
/* MT7615_EEPROM_FULL_SIZE = MT7615_EEPROM_TXDPD_OFFSET + \ */
/* MT7615_EEPROM_TXDPD_COUNT * MT7615_EEPROM_TXDPD_SIZE */
/* where MT7615_EEPROM_TXDPD_OFFSET is 1024 + 256 * 34 = 9728: */
/* MT7615_EEPROM_SIZE(1024 defined in mt7615.h) + \ */
/* MT7615_EEPROM_DCOC_COUNT(34) * MT7615_EEPROM_DCOC_SIZE(256)*/
/* where MT7615_EEPROM_TXDPD_COUNT = 44 + 3 = 47 */
/* and MT7615_EEPROM_TXDPD_SIZE = 216. */
/* Altogether it will be 19880 or 0x4da8. */
reg = <0x8000 0x4da8>;
};
&pcie0 {
wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
nvmem-cells = <&eeprom_factory_8000>;
nvmem-cell-names = "eeprom";
ieee80211-freq-limit = <5000000 6000000>;
};
};
&ethernet {
nvmem-cells = <&macaddr_factory_4 (-1)>;
nvmem-cell-names = "mac-address";
};
&esw {
mediatek,portmap = <0x3e>;
mediatek,portdisable = <0x2a>;
};

View File

@ -1290,44 +1290,28 @@ static int mt7621_nfc_probe(struct platform_device *pdev)
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nfi");
nfc->nfi_base = res->start;
nfc->nfi_regs = devm_ioremap_resource(dev, res);
if (IS_ERR(nfc->nfi_regs)) {
ret = PTR_ERR(nfc->nfi_regs);
return ret;
}
if (IS_ERR(nfc->nfi_regs))
return PTR_ERR(nfc->nfi_regs);
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ecc");
nfc->ecc_regs = devm_ioremap_resource(dev, res);
if (IS_ERR(nfc->ecc_regs)) {
ret = PTR_ERR(nfc->ecc_regs);
return ret;
}
if (IS_ERR(nfc->ecc_regs))
return PTR_ERR(nfc->ecc_regs);
nfc->nfi_clk = devm_clk_get(dev, "nfi_clk");
if (IS_ERR(nfc->nfi_clk)) {
nfc->nfi_clk = devm_clk_get_optional_enabled(dev, "nfi_clk");
if (IS_ERR(nfc->nfi_clk))
return PTR_ERR(nfc->nfi_clk);
if (!nfc->nfi_clk)
dev_warn(dev, "nfi clk not provided\n");
nfc->nfi_clk = NULL;
} else {
ret = clk_prepare_enable(nfc->nfi_clk);
if (ret) {
dev_err(dev, "Failed to enable nfi core clock\n");
return ret;
}
}
platform_set_drvdata(pdev, nfc);
ret = mt7621_nfc_init_chip(nfc);
if (ret) {
dev_err(dev, "Failed to initialize nand chip\n");
goto clk_disable;
}
if (ret)
return dev_err_probe(dev, ret, "Failed to initialize nand chip\n");
return 0;
clk_disable:
clk_disable_unprepare(nfc->nfi_clk);
return ret;
}
static int mt7621_nfc_remove(struct platform_device *pdev)
@ -1339,7 +1323,6 @@ static int mt7621_nfc_remove(struct platform_device *pdev)
mtk_bmt_detach(mtd);
mtd_device_unregister(mtd);
nand_cleanup(nand);
clk_disable_unprepare(nfc->nfi_clk);
return 0;
}

View File

@ -1097,6 +1097,15 @@ define Device/xiaomi_mi-router-4a-100m-intl
endef
TARGET_DEVICES += xiaomi_mi-router-4a-100m-intl
define Device/xiaomi_mi-router-4a-100m-intl-v2
IMAGE_SIZE := 14976k
DEVICE_VENDOR := Xiaomi
DEVICE_MODEL := Mi Router 4A
DEVICE_VARIANT := 100M International Edition V2
DEVICE_PACKAGES := kmod-mt7615e kmod-mt7663-firmware-ap
endef
TARGET_DEVICES += xiaomi_mi-router-4a-100m-intl-v2
define Device/xiaomi_mi-router-4c
IMAGE_SIZE := 14976k
DEVICE_VENDOR := Xiaomi

View File

@ -171,7 +171,8 @@ wavlink,wl-wn578a2)
ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10"
;;
xiaomi,mi-router-4a-100m|\
xiaomi,mi-router-4a-100m-intl)
xiaomi,mi-router-4a-100m-intl|\
xiaomi,mi-router-4a-100m-intl-v2)
ucidef_set_led_switch "wan" "WAN" "blue:wan" "switch0" "0x01"
;;
xiaomi,mi-router-4c)

View File

@ -186,7 +186,8 @@ ramips_setup_interfaces()
"0:wan" "3:lan" "4:lan" "6@eth0"
;;
xiaomi,mi-router-4a-100m|\
xiaomi,mi-router-4a-100m-intl)
xiaomi,mi-router-4a-100m-intl|\
xiaomi,mi-router-4a-100m-intl-v2)
ucidef_add_switch "switch0" \
"4:lan:1" "2:lan:2" "0:wan" "6@eth0"
;;
@ -323,6 +324,7 @@ ramips_setup_macs()
;;
xiaomi,mi-router-4a-100m|\
xiaomi,mi-router-4a-100m-intl|\
xiaomi,mi-router-4a-100m-intl-v2|\
xiaomi,mi-router-4c)
wan_mac=$(mtd_get_mac_binary factory 0x4)
;;

View File

@ -61,6 +61,9 @@ CONFIG_ARM64_VA_BITS=48
# CONFIG_ARM64_VA_BITS_39 is not set
CONFIG_ARM64_VA_BITS_48=y
CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
CONFIG_ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD=y
CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y
CONFIG_ARM_AMBA=y
CONFIG_ARM_ARCH_TIMER=y
@ -174,6 +177,7 @@ CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
CONFIG_CPU_ISOLATION=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MITIGATIONS=y
CONFIG_CPU_PM=y
CONFIG_CPU_RMAP=y
CONFIG_CPU_THERMAL=y

View File

@ -15,7 +15,7 @@ config GCC_VERSION
default EXTERNAL_GCC_VERSION if EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "11.3.0" if GCC_VERSION_11
default "12.3.0" if GCC_VERSION_12
default "14.1.0" if GCC_VERSION_14
default "14.2.0" if GCC_VERSION_14
default "13.3.0"
config GCC_USE_DEFAULT_VERSION

View File

@ -42,8 +42,8 @@ ifeq ($(PKG_VERSION),13.3.0)
PKG_HASH:=0845e9621c9543a13f484e94584a49ffc0129970e9914624235fc1d061a0c083
endif
ifeq ($(PKG_VERSION),14.1.0)
PKG_HASH:=e283c654987afe3de9d8080bc0bd79534b5ca0d681a73a11ff2b5d3767426840
ifeq ($(PKG_VERSION),14.2.0)
PKG_HASH:=a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9
endif
PATCH_DIR=../patches-$(GCC_MAJOR_VERSION).x

View File

@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/gcc/config/mips/mips.cc
+++ b/gcc/config/mips/mips.cc
@@ -20444,7 +20444,7 @@ mips_option_override (void)
@@ -20453,7 +20453,7 @@ mips_option_override (void)
flag_pcc_struct_return = 0;
/* Decide which rtx_costs structure to use. */