From 2b6772c82c6a4a498a7e5427b39ead2d60a42762 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 20 Jun 2024 23:22:01 +0200 Subject: [PATCH 01/31] firmware-utils: update to Git HEAD (2024-06-20) 224d497dd94f srec2bin: drop unused "dum" variable 6777b2d51961 uimage_sgehdr: use "char" type for header struct strings 81db3025aac5 uimage_sgehdr: drop unused "ltmp" variable bd7fcc74b43e pc1crypt: make decrypt/encrypt functions take void * as argument 6ac44974185a linksys: add magic header generation tool for e8350 v1 Signed-off-by: Christian Marangi --- package/utils/firmware-utils/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/utils/firmware-utils/Makefile b/package/utils/firmware-utils/Makefile index 3a6467503c..2d9dbc5fce 100644 --- a/package/utils/firmware-utils/Makefile +++ b/package/utils/firmware-utils/Makefile @@ -7,9 +7,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git -PKG_SOURCE_DATE:=2024-03-23 -PKG_SOURCE_VERSION:=6b242991a995c41769977efb010dc9f4e4ec3da2 -PKG_MIRROR_HASH:=00ff2661fda2eb299ccbfaa07dff8fbcf46b3441a6e9f6f46eaa119e66dbe142 +PKG_SOURCE_DATE:=2024-06-20 +PKG_SOURCE_VERSION:=6ac44974185a3e7dc7848e97b964339948e817a7 +PKG_MIRROR_HASH:=ee5b29f45593750a6806cfa7cad3fd766b321b44107a6b481b890efe82a7dbf5 PKG_BUILD_DEPENDS:=openssl zlib From 3984fb0582083c5c0f511ed3a33eb17908eccb08 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 14 Jun 2024 14:43:39 +0200 Subject: [PATCH 02/31] hostapd: fix crash on interface setup failure Add a missing NULL pointer check when deleting beacons Signed-off-by: Felix Fietkau --- ...crash-when-adding-an-interface-fails.patch | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 package/network/services/hostapd/patches/060-nl80211-fix-crash-when-adding-an-interface-fails.patch diff --git a/package/network/services/hostapd/patches/060-nl80211-fix-crash-when-adding-an-interface-fails.patch b/package/network/services/hostapd/patches/060-nl80211-fix-crash-when-adding-an-interface-fails.patch new file mode 100644 index 0000000000..1df2eff387 --- /dev/null +++ b/package/network/services/hostapd/patches/060-nl80211-fix-crash-when-adding-an-interface-fails.patch @@ -0,0 +1,21 @@ +From: Felix Fietkau +Date: Fri, 14 Jun 2024 14:41:16 +0200 +Subject: [PATCH] nl80211: fix crash when adding an interface fails + +When adding an interface fails early, the bss link is still NULL. +Avoid crashing on deleting beacons. + +Signed-off-by: Felix Fietkau +--- + +--- a/src/drivers/driver_nl80211.c ++++ b/src/drivers/driver_nl80211.c +@@ -3071,7 +3071,7 @@ static int wpa_driver_nl80211_del_beacon + struct wpa_driver_nl80211_data *drv = bss->drv; + struct i802_link *link = nl80211_get_link(bss, link_id); + +- if (!link->beacon_set) ++ if (!link || !link->beacon_set) + return 0; + + wpa_printf(MSG_DEBUG, "nl80211: Remove beacon (ifindex=%d)", From 032d3fcf7a861b140435b6507b2b0b66361c92f8 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 14 Jun 2024 14:17:57 +0200 Subject: [PATCH 03/31] hostapd: use strdup on string passed to hostapd_add_iface The data is modified within hostapd_add_iface Signed-off-by: Felix Fietkau --- package/network/services/hostapd/src/src/ap/ucode.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/package/network/services/hostapd/src/src/ap/ucode.c b/package/network/services/hostapd/src/src/ap/ucode.c index d344190208..68fb450884 100644 --- a/package/network/services/hostapd/src/src/ap/ucode.c +++ b/package/network/services/hostapd/src/src/ap/ucode.c @@ -86,12 +86,16 @@ static uc_value_t * uc_hostapd_add_iface(uc_vm_t *vm, size_t nargs) { uc_value_t *iface = uc_fn_arg(0); + char *data; int ret; if (ucv_type(iface) != UC_STRING) return ucv_int64_new(-1); - ret = hostapd_add_iface(interfaces, ucv_string_get(iface)); + data = strdup(ucv_string_get(iface)); + ret = hostapd_add_iface(interfaces, data); + free(data); + hostapd_ucode_update_interfaces(); return ucv_int64_new(ret); From a6e1c5f01e19bdd66d4d5b76d217e31ef9f290c5 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 10 Jun 2024 20:50:38 +0200 Subject: [PATCH 04/31] iw: update to version 6.9 Signed-off-by: Felix Fietkau --- package/network/utils/iw/Makefile | 4 +- ...ow-specifying-CFLAGS-LIBS-externally.patch | 4 +- .../utils/iw/patches/200-reduce_size.patch | 91 ++++++++++--------- 3 files changed, 52 insertions(+), 47 deletions(-) diff --git a/package/network/utils/iw/Makefile b/package/network/utils/iw/Makefile index 528f6868b2..1237c106a9 100644 --- a/package/network/utils/iw/Makefile +++ b/package/network/utils/iw/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iw -PKG_VERSION:=5.19 +PKG_VERSION:=6.9 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/software/network/iw -PKG_HASH:=f167bbe947dd53bb9ebc0c1dcef5db6ad73ac1d6084f2c6f9376c5c360cc4d4e +PKG_HASH:=3f2db22ad41c675242b98ae3942dbf3112548c60a42ff739210f2de4e98e4894 PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=GPL-2.0 diff --git a/package/network/utils/iw/patches/010-Revert-iw-allow-specifying-CFLAGS-LIBS-externally.patch b/package/network/utils/iw/patches/010-Revert-iw-allow-specifying-CFLAGS-LIBS-externally.patch index 1254efa9c7..1c93f00900 100644 --- a/package/network/utils/iw/patches/010-Revert-iw-allow-specifying-CFLAGS-LIBS-externally.patch +++ b/package/network/utils/iw/patches/010-Revert-iw-allow-specifying-CFLAGS-LIBS-externally.patch @@ -16,7 +16,7 @@ Signed-off-by: Hauke Mehrtens --- a/Makefile +++ b/Makefile -@@ -45,30 +45,30 @@ NLLIBNAME = libnl-1 +@@ -46,30 +46,30 @@ NLLIBNAME = libnl-1 endif ifeq ($(NL2FOUND),Y) @@ -55,7 +55,7 @@ Signed-off-by: Hauke Mehrtens NLLIBNAME = libnl-3.1 endif -@@ -76,8 +76,8 @@ ifeq ($(NLLIBNAME),) +@@ -77,8 +77,8 @@ ifeq ($(NLLIBNAME),) $(error Cannot find development files for any supported version of libnl) endif diff --git a/package/network/utils/iw/patches/200-reduce_size.patch b/package/network/utils/iw/patches/200-reduce_size.patch index 8621994524..9924ffa077 100644 --- a/package/network/utils/iw/patches/200-reduce_size.patch +++ b/package/network/utils/iw/patches/200-reduce_size.patch @@ -1,6 +1,6 @@ --- a/event.c +++ b/event.c -@@ -971,6 +971,7 @@ static int print_event(struct nl_msg *ms +@@ -973,6 +973,7 @@ static int print_event(struct nl_msg *ms } switch (gnlh->cmd) { @@ -8,7 +8,7 @@ case NL80211_CMD_NEW_WIPHY: printf("renamed to %s\n", nla_get_string(tb[NL80211_ATTR_WIPHY_NAME])); break; -@@ -1006,6 +1007,7 @@ static int print_event(struct nl_msg *ms +@@ -1008,6 +1009,7 @@ static int print_event(struct nl_msg *ms case NL80211_CMD_SCHED_SCAN_RESULTS: printf("got scheduled scan results\n"); break; @@ -16,7 +16,7 @@ case NL80211_CMD_WIPHY_REG_CHANGE: case NL80211_CMD_REG_CHANGE: if (gnlh->cmd == NL80211_CMD_WIPHY_REG_CHANGE) -@@ -1088,6 +1090,7 @@ static int print_event(struct nl_msg *ms +@@ -1090,6 +1092,7 @@ static int print_event(struct nl_msg *ms mac_addr_n2a(macbuf, nla_data(tb[NL80211_ATTR_MAC])); printf("del station %s\n", macbuf); break; @@ -24,7 +24,7 @@ case NL80211_CMD_JOIN_IBSS: mac_addr_n2a(macbuf, nla_data(tb[NL80211_ATTR_MAC])); printf("IBSS %s joined\n", macbuf); -@@ -1295,9 +1298,9 @@ static int print_event(struct nl_msg *ms +@@ -1297,9 +1300,9 @@ static int print_event(struct nl_msg *ms case NL80211_CMD_ASSOC_COMEBACK: /* 147 */ parse_assoc_comeback(tb, gnlh->cmd); break; @@ -38,7 +38,7 @@ --- a/info.c +++ b/info.c -@@ -309,6 +309,7 @@ next: +@@ -446,6 +446,7 @@ next: } } @@ -46,7 +46,7 @@ if (tb_band[NL80211_BAND_ATTR_RATES]) { printf("\t\tBitrates (non-HT):\n"); nla_for_each_nested(nl_rate, tb_band[NL80211_BAND_ATTR_RATES], rem_rate) { -@@ -325,6 +326,7 @@ next: +@@ -462,6 +463,7 @@ next: printf("\n"); } } @@ -54,7 +54,7 @@ } } -@@ -390,6 +392,7 @@ next: +@@ -527,6 +529,7 @@ next: printf("\tCoverage class: %d (up to %dm)\n", coverage, 450 * coverage); } @@ -62,7 +62,7 @@ if (tb_msg[NL80211_ATTR_CIPHER_SUITES]) { int num = nla_len(tb_msg[NL80211_ATTR_CIPHER_SUITES]) / sizeof(__u32); int i; -@@ -401,6 +404,7 @@ next: +@@ -538,6 +541,7 @@ next: cipher_name(ciphers[i])); } } @@ -70,7 +70,7 @@ if (tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX] && tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX]) -@@ -418,9 +422,11 @@ next: +@@ -555,9 +559,11 @@ next: print_iftype_list("\tSupported interface modes", "\t\t", tb_msg[NL80211_ATTR_SUPPORTED_IFTYPES]); @@ -82,7 +82,7 @@ if (tb_msg[NL80211_ATTR_INTERFACE_COMBINATIONS]) { struct nlattr *nl_combi; -@@ -510,6 +516,7 @@ broken_combination: +@@ -647,6 +653,7 @@ broken_combination: printf("\tinterface combinations are not supported\n"); } @@ -90,7 +90,7 @@ if (tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS]) { printf("\tSupported commands:\n"); nla_for_each_nested(nl_cmd, tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS], rem_cmd) -@@ -607,6 +614,7 @@ broken_combination: +@@ -744,6 +751,7 @@ broken_combination: printf("\t\t * wake up on TCP connection\n"); } } @@ -98,7 +98,7 @@ if (tb_msg[NL80211_ATTR_ROAM_SUPPORT]) printf("\tDevice supports roaming.\n"); -@@ -645,6 +653,7 @@ broken_combination: +@@ -782,6 +790,7 @@ broken_combination: } } @@ -106,7 +106,7 @@ if (tb_msg[NL80211_ATTR_FEATURE_FLAGS]) { unsigned int features = nla_get_u32(tb_msg[NL80211_ATTR_FEATURE_FLAGS]); -@@ -709,6 +718,7 @@ broken_combination: +@@ -846,6 +855,7 @@ broken_combination: if (features & NL80211_FEATURE_ND_RANDOM_MAC_ADDR) printf("\tDevice supports randomizing MAC-addr in net-detect scans.\n"); } @@ -114,7 +114,7 @@ if (tb_msg[NL80211_ATTR_TDLS_SUPPORT]) printf("\tDevice supports T-DLS.\n"); -@@ -774,6 +784,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP +@@ -914,6 +924,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP "List all wireless devices and their capabilities."); TOPLEVEL(phy, NULL, NL80211_CMD_GET_WIPHY, NLM_F_DUMP, CIB_NONE, handle_info, NULL); @@ -122,7 +122,7 @@ static int handle_commands(struct nl80211_state *state, struct nl_msg *msg, int argc, char **argv, enum id_input id) { -@@ -785,6 +796,7 @@ static int handle_commands(struct nl8021 +@@ -925,6 +936,7 @@ static int handle_commands(struct nl8021 } TOPLEVEL(commands, NULL, NL80211_CMD_GET_WIPHY, 0, CIB_NONE, handle_commands, "list all known commands and their decimal & hex value"); @@ -132,7 +132,7 @@ { --- a/scan.c +++ b/scan.c -@@ -1306,6 +1306,9 @@ static void print_ht_op(const uint8_t ty +@@ -1308,6 +1308,9 @@ static void print_ht_op(const uint8_t ty printf("\t\t * secondary channel offset: %s\n", ht_secondary_offset[data[1] & 0x3]); printf("\t\t * STA channel width: %s\n", sta_chan_width[(data[1] & 0x4)>>2]); @@ -142,10 +142,11 @@ printf("\t\t * RIFS: %d\n", (data[1] & 0x8)>>3); printf("\t\t * HT protection: %s\n", protection[data[2] & 0x3]); printf("\t\t * non-GF present: %d\n", (data[2] & 0x4) >> 2); -@@ -1716,6 +1719,14 @@ static void print_ie(const struct ie_pri - +@@ -1818,30 +1821,31 @@ static void print_ie(const struct ie_pri static const struct ie_print ieprinters[] = { - [0] = { "SSID", print_ssid, 0, 32, BIT(PRINT_SCAN) | BIT(PRINT_LINK), }, + [0] = { "SSID", print_ssid, 0, 32, + BIT(PRINT_SCAN) | BIT(PRINT_LINK) | BIT(PRINT_LINK_MLO_MLD), }, ++ [11] = { "BSS Load", print_bss_load, 5, 5, BIT(PRINT_SCAN), }, + [45] = { "HT capabilities", print_ht_capa, 26, 26, BIT(PRINT_SCAN), }, + [48] = { "RSN", print_rsn, 2, 255, BIT(PRINT_SCAN), }, + [61] = { "HT operation", print_ht_op, 22, 22, BIT(PRINT_SCAN), }, @@ -157,7 +158,9 @@ [1] = { "Supported rates", print_supprates, 0, 255, BIT(PRINT_SCAN), }, [3] = { "DS Parameter set", print_ds, 1, 1, BIT(PRINT_SCAN), }, [5] = { "TIM", print_tim, 4, 255, BIT(PRINT_SCAN), }, -@@ -1725,26 +1736,20 @@ static const struct ie_print ieprinters[ + [6] = { "IBSS ATIM window", print_ibssatim, 2, 2, BIT(PRINT_SCAN), }, + [7] = { "Country", print_country, 3, 255, BIT(PRINT_SCAN), }, +- [11] = { "BSS Load", print_bss_load, 5, 5, BIT(PRINT_SCAN), }, [32] = { "Power constraint", print_powerconstraint, 1, 1, BIT(PRINT_SCAN), }, [35] = { "TPC report", print_tpcreport, 2, 2, BIT(PRINT_SCAN), }, [42] = { "ERP", print_erp, 1, 255, BIT(PRINT_SCAN), }, @@ -179,13 +182,15 @@ [127] = { "Extended capabilities", print_capabilities, 0, 255, BIT(PRINT_SCAN), }, [107] = { "802.11u Interworking", print_interworking, 0, 255, BIT(PRINT_SCAN), }, [108] = { "802.11u Advertisement", print_11u_advert, 0, 255, BIT(PRINT_SCAN), }, - [111] = { "802.11u Roaming Consortium", print_11u_rcon, 2, 255, BIT(PRINT_SCAN), }, - [195] = { "Transmit Power Envelope", print_tx_power_envelope, 2, 5, BIT(PRINT_SCAN), }, +@@ -1850,6 +1854,7 @@ static const struct ie_print ieprinters[ + [214] = { "Short beacon interval", print_short_beacon_int, 2, 2, BIT(PRINT_SCAN), }, + [217] = { "S1G capabilities", print_s1g_capa, 15, 15, BIT(PRINT_SCAN), }, + [232] = { "S1G operation", print_s1g_oper, 6, 6, BIT(PRINT_SCAN), }, +#endif }; static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data, -@@ -2080,8 +2085,10 @@ static void print_wifi_wps(const uint8_t +@@ -2185,8 +2190,10 @@ static void print_wifi_wps(const uint8_t static const struct ie_print wifiprinters[] = { [1] = { "WPA", print_wifi_wpa, 2, 255, BIT(PRINT_SCAN), }, @@ -196,7 +201,7 @@ }; static inline void print_p2p(const uint8_t type, uint8_t len, -@@ -2244,6 +2251,10 @@ static void print_vendor(unsigned char l +@@ -2349,6 +2356,10 @@ static void print_vendor(unsigned char l return; } @@ -207,7 +212,7 @@ if (len >= 4 && memcmp(data, wfa_oui, 3) == 0) { if (data[3] < ARRAY_SIZE(wfa_printers) && wfa_printers[data[3]].name && -@@ -2377,6 +2388,7 @@ static void print_capa_non_dmg(__u16 cap +@@ -2483,6 +2494,7 @@ static void print_capa_non_dmg(__u16 cap printf(" ESS"); if (capa & WLAN_CAPABILITY_IBSS) printf(" IBSS"); @@ -215,7 +220,7 @@ if (capa & WLAN_CAPABILITY_CF_POLLABLE) printf(" CfPollable"); if (capa & WLAN_CAPABILITY_CF_POLL_REQUEST) -@@ -2405,6 +2417,7 @@ static void print_capa_non_dmg(__u16 cap +@@ -2511,6 +2523,7 @@ static void print_capa_non_dmg(__u16 cap printf(" DelayedBACK"); if (capa & WLAN_CAPABILITY_IMM_BACK) printf(" ImmediateBACK"); @@ -223,10 +228,10 @@ } static int print_bss_handler(struct nl_msg *msg, void *arg) -@@ -2489,8 +2502,10 @@ static int print_bss_handler(struct nl_m - if (bss[NL80211_BSS_FREQUENCY]) { - int freq = nla_get_u32(bss[NL80211_BSS_FREQUENCY]); - printf("\tfreq: %d\n", freq); +@@ -2601,8 +2614,10 @@ static int print_bss_handler(struct nl_m + else + printf("\tfreq: %d\n", freq); + +#ifdef IW_FULL if (freq > 45000) is_dmg = true; @@ -234,7 +239,7 @@ } if (bss[NL80211_BSS_BEACON_INTERVAL]) printf("\tbeacon interval: %d TUs\n", -@@ -2684,6 +2699,7 @@ static int handle_stop_sched_scan(struct +@@ -2796,6 +2811,7 @@ static int handle_stop_sched_scan(struct return 0; } @@ -242,7 +247,7 @@ COMMAND(scan, sched_start, SCHED_SCAN_OPTIONS, NL80211_CMD_START_SCHED_SCAN, 0, CIB_NETDEV, handle_start_sched_scan, -@@ -2694,3 +2710,4 @@ COMMAND(scan, sched_start, +@@ -2806,3 +2822,4 @@ COMMAND(scan, sched_start, COMMAND(scan, sched_stop, "", NL80211_CMD_STOP_SCHED_SCAN, 0, CIB_NETDEV, handle_stop_sched_scan, "Stop an ongoing scheduled scan."); @@ -265,7 +270,7 @@ int ieee80211_channel_to_frequency(int chan, enum nl80211_band band) { -@@ -311,6 +313,9 @@ int parse_keys(struct nl_msg *msg, char +@@ -313,6 +315,9 @@ int parse_keys(struct nl_msg *msg, char char keybuf[13]; int pos = 0; @@ -277,7 +282,7 @@ --- a/Makefile +++ b/Makefile -@@ -23,6 +23,12 @@ _OBJS := $(sort $(patsubst %.c,%.o,$(wil +@@ -24,6 +24,12 @@ _OBJS := $(sort $(patsubst %.c,%.o,$(wil VERSION_OBJS := $(filter-out version.o, $(_OBJS)) OBJS := $(VERSION_OBJS) version.o @@ -292,7 +297,7 @@ ifeq ($(NO_PKG_CONFIG),) --- a/station.c +++ b/station.c -@@ -791,10 +791,12 @@ static int handle_station_set_plink(stru +@@ -801,10 +801,12 @@ static int handle_station_set_plink(stru nla_put_failure: return -ENOBUFS; } @@ -305,7 +310,7 @@ static int handle_station_set_vlan(struct nl80211_state *state, struct nl_msg *msg, -@@ -889,11 +891,13 @@ static int handle_station_set_mesh_power +@@ -899,11 +901,13 @@ static int handle_station_set_mesh_power nla_put_failure: return -ENOBUFS; } @@ -321,7 +326,7 @@ struct nl_msg *msg, --- a/interface.c +++ b/interface.c -@@ -629,9 +629,11 @@ static int handle_interface_wds_peer(str +@@ -668,9 +668,11 @@ static int handle_interface_wds_peer(str nla_put_failure: return -ENOBUFS; } @@ -333,7 +338,7 @@ static int set_mcast_rate(struct nl80211_state *state, struct nl_msg *msg, -@@ -721,6 +723,7 @@ static int handle_chan(struct nl80211_st +@@ -760,6 +762,7 @@ static int handle_chan(struct nl80211_st return handle_chanfreq(state, msg, true, argc, argv, id); } @@ -341,14 +346,14 @@ SECTION(switch); COMMAND(switch, freq, " [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz] [beacons ] [block-tx]\n" -@@ -992,3 +995,4 @@ COMMAND(set, tidconf, "[peer [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz]\n" "freq [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz]\n" "freq [5|10|20|40|80|80+80|160] [ []]", -@@ -380,6 +381,7 @@ COMMAND(cac, trigger, - NL80211_CMD_RADAR_DETECT, 0, CIB_NETDEV, handle_cac_trigger, - "Start or trigger a channel availability check (CAC) looking to look for\n" +@@ -422,6 +423,7 @@ COMMAND(cac, background, + NL80211_CMD_RADAR_DETECT, 0, CIB_NETDEV, handle_cac_background, + "Start background channel availability check (CAC) looking to look for\n" "radars on the given channel."); +#endif From 33420f039d3d3357e1a5943e8756b9d22359cc11 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 19 Jun 2024 13:50:21 +0200 Subject: [PATCH 05/31] ucode: update to Git HEAD (2024-06-18) 8cf816d615fd socket: fix potential memory leak in connect() 8f5f231d66cd socket: optimize poll() argument handling 36f106056069 socket: remove wrong documentation fragment 525fca224012 socket: uv_to_sockaddr(): fix length calculation for AF_UNIX addresses 3938645ad9e3 socket: support IPv6 addresses in struct conversion routines 3a586dc7ddbe socket: improve uc_socket_connect() behavior 7b269f1cd3d2 socket: improve uc_socket_listen() behavior fc6f2b89febf socket: handle further socket option value types d6f25797dad1 socket: add IPv6 socket options 7611487b9a05 socket: implement recvmsg(), sendmsg() and cmsg support d2e44bfa8b54 core-lib: improved documentation e0bab40c8578 fs: add truncate() file method 5d305cfb2ab7 fs: add lock() file method 8b0318f7fabe lib: introduce zlib library Signed-off-by: Felix Fietkau --- package/utils/ucode/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/utils/ucode/Makefile b/package/utils/ucode/Makefile index ac23161c5e..40dba3b46c 100644 --- a/package/utils/ucode/Makefile +++ b/package/utils/ucode/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=https://github.com/jow-/ucode.git -PKG_SOURCE_DATE:=2024-05-09 -PKG_SOURCE_VERSION:=0d823e702bfe5f2bb5be694030a98afedf34aa6b -PKG_MIRROR_HASH:=c52d499d2490e958e36ed80c32e8fd6d94cacf3b43b9d14c45c68a25bc44d536 +PKG_SOURCE_DATE:=2024-06-18 +PKG_SOURCE_VERSION:=4dd98370ef558a62a9afd10ad6aa1cc658cf7339 +PKG_MIRROR_HASH:=c2cf650a3597457203040feebd6a9bff21be2dc55f80553cf998cff2c0d00244 PKG_MAINTAINER:=Jo-Philipp Wich PKG_LICENSE:=ISC From 31aa61503e519b546539ad4d145faec86fcb4666 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 11 Jun 2024 11:34:27 +0200 Subject: [PATCH 06/31] wifi-scripts: add default channel to board.json in wifi-detect.uc Preparation for avoiding iw calls in /lib/wifi/mac80211.sh Signed-off-by: Felix Fietkau --- .../files/usr/share/hostap/wifi-detect.uc | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/package/network/config/wifi-scripts/files/usr/share/hostap/wifi-detect.uc b/package/network/config/wifi-scripts/files/usr/share/hostap/wifi-detect.uc index 5f375880d2..109b6a33cf 100644 --- a/package/network/config/wifi-scripts/files/usr/share/hostap/wifi-detect.uc +++ b/package/network/config/wifi-scripts/files/usr/share/hostap/wifi-detect.uc @@ -53,6 +53,26 @@ function wiphy_get_entry(phy, path) { return wlan[phy]; } +function freq_to_channel(freq) { + if (freq < 1000) + return 0; + if (freq == 2484) + return 14; + if (freq == 5935) + return 2; + if (freq < 2484) + return (freq - 2407) / 5; + if (freq >= 4910 && freq <= 4980) + return (freq - 4000) / 5; + if (freq < 5950) + return (freq - 5000) / 5; + if (freq <= 45000) + return (freq - 5950) / 5; + if (freq >= 58320 && freq <= 70200) + return (freq - 56160) / 2160; + return 0; +} + function wiphy_detect() { let phys = nl.request(nl.const.NL80211_CMD_GET_WIPHY, nl.const.NLM_F_DUMP, { split_wiphy_dump: true }); if (!phys) @@ -80,8 +100,10 @@ function wiphy_detect() { band_name = "6G"; else if (freq > 4000) band_name = "5G"; - else + else if (freq > 2000) band_name = "2G"; + else + continue; bands[band_name] = band_info; if (band.ht_capa > 0) band_info.ht = true; @@ -124,6 +146,16 @@ function wiphy_detect() { if (he_phy_cap & 0x2) push(modes, "HE40"); + for (let freq in band.freqs) { + if (freq.disabled) + continue; + let chan = freq_to_channel(freq.freq); + if (!chan) + continue; + band_info.default_channel = chan; + break; + } + if (band_name == "2G") continue; if (band_info.vht) From 4a3ed518b2d07ea3194d06d35fe0da77826a1c3a Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 11 Jun 2024 17:29:22 +0200 Subject: [PATCH 07/31] wifi-scripts: rewrite wifi detect code in ucode Rely entirely on /etc/board.json instead of screen scraping iw cli output Signed-off-by: Felix Fietkau --- .../wifi-scripts/files/lib/wifi/mac80211.sh | 217 ------------------ .../wifi-scripts/files/lib/wifi/mac80211.uc | 94 ++++++++ .../config/wifi-scripts/files/sbin/wifi | 1 + 3 files changed, 95 insertions(+), 217 deletions(-) delete mode 100644 package/network/config/wifi-scripts/files/lib/wifi/mac80211.sh create mode 100644 package/network/config/wifi-scripts/files/lib/wifi/mac80211.uc diff --git a/package/network/config/wifi-scripts/files/lib/wifi/mac80211.sh b/package/network/config/wifi-scripts/files/lib/wifi/mac80211.sh deleted file mode 100644 index e24a2a634e..0000000000 --- a/package/network/config/wifi-scripts/files/lib/wifi/mac80211.sh +++ /dev/null @@ -1,217 +0,0 @@ -#!/bin/sh - -append DRIVERS "mac80211" - -check_mac80211_device() { - local device="$1" - local path="$2" - local macaddr="$3" - - [ -n "$found" ] && return 0 - - phy_path= - config_get phy "$device" phy - json_select wlan - [ -n "$phy" ] && case "$phy" in - phy*) - [ -d /sys/class/ieee80211/$phy ] && \ - phy_path="$(iwinfo nl80211 path "$dev")" - ;; - *) - if json_is_a "$phy" object; then - json_select "$phy" - json_get_var phy_path path - json_select .. - elif json_is_a "${phy%.*}" object; then - json_select "${phy%.*}" - json_get_var phy_path path - json_select .. - phy_path="$phy_path+${phy##*.}" - fi - ;; - esac - json_select .. - [ -n "$phy_path" ] || config_get phy_path "$device" path - [ -n "$path" -a "$phy_path" = "$path" ] && { - found=1 - return 0 - } - - config_get dev_macaddr "$device" macaddr - - [ -n "$macaddr" -a "$dev_macaddr" = "$macaddr" ] && found=1 - - return 0 -} - - -__get_band_defaults() { - local phy="$1" - - ( iw phy "$phy" info; echo ) | awk ' -BEGIN { - bands = "" -} - -($1 == "Band" || $1 == "") && band { - if (channel) { - mode="NOHT" - if (ht) mode="HT20" - if (vht && band != "1:") mode="VHT80" - if (he) mode="HE80" - if (he && band == "1:") mode="HE20" - sub("\\[", "", channel) - sub("\\]", "", channel) - bands = bands band channel ":" mode " " - } - band="" -} - -$1 == "Band" { - band = $2 - channel = "" - vht = "" - ht = "" - he = "" -} - -$0 ~ "Capabilities:" { - ht=1 -} - -$0 ~ "VHT Capabilities" { - vht=1 -} - -$0 ~ "HE Iftypes" { - he=1 -} - -$1 == "*" && $3 == "MHz" && $0 !~ /disabled/ && band && !channel { - channel = $4 -} - -END { - print bands -}' -} - -get_band_defaults() { - local phy="$1" - - for c in $(__get_band_defaults "$phy"); do - local band="${c%%:*}" - c="${c#*:}" - local chan="${c%%:*}" - c="${c#*:}" - local mode="${c%%:*}" - - case "$band" in - 1) band=2g;; - 2) band=5g;; - 3) band=60g;; - 4) band=6g;; - *) band="";; - esac - - [ -n "$band" ] || continue - [ -n "$mode_band" -a "$band" = "6g" ] && return - - mode_band="$band" - channel="$chan" - htmode="$mode" - done -} - -check_devidx() { - case "$1" in - radio[0-9]*) - local idx="${1#radio}" - [ "$devidx" -ge "${1#radio}" ] && devidx=$((idx + 1)) - ;; - esac -} - -check_board_phy() { - local name="$2" - - json_select "$name" - json_get_var phy_path path - json_select .. - - if [ "$path" = "$phy_path" ]; then - board_dev="$name" - elif [ "${path%+*}" = "$phy_path" ]; then - fallback_board_dev="$name.${path#*+}" - fi -} - -detect_mac80211() { - devidx=0 - config_load wireless - config_foreach check_devidx wifi-device - - json_load_file /etc/board.json - - for _dev in /sys/class/ieee80211/*; do - [ -e "$_dev" ] || continue - - dev="${_dev##*/}" - - mode_band="" - channel="" - htmode="" - ht_capab="" - - get_band_defaults "$dev" - - path="$(iwinfo nl80211 path "$dev")" - macaddr="$(cat /sys/class/ieee80211/${dev}/macaddress)" - - # work around phy rename related race condition - [ -n "$path" -o -n "$macaddr" ] || continue - - board_dev= - fallback_board_dev= - json_for_each_item check_board_phy wlan - [ -n "$board_dev" ] || board_dev="$fallback_board_dev" - [ -n "$board_dev" ] && dev="$board_dev" - - found= - config_foreach check_mac80211_device wifi-device "$path" "$macaddr" - [ -n "$found" ] && continue - - name="radio${devidx}" - devidx=$(($devidx + 1)) - case "$dev" in - phy*) - if [ -n "$path" ]; then - dev_id="set wireless.${name}.path='$path'" - else - dev_id="set wireless.${name}.macaddr='$macaddr'" - fi - ;; - *) - dev_id="set wireless.${name}.phy='$dev'" - ;; - esac - - uci -q batch <<-EOF - set wireless.${name}=wifi-device - set wireless.${name}.type=mac80211 - ${dev_id} - set wireless.${name}.channel=${channel} - set wireless.${name}.band=${mode_band} - set wireless.${name}.htmode=$htmode - set wireless.${name}.disabled=1 - - set wireless.default_${name}=wifi-iface - set wireless.default_${name}.device=${name} - set wireless.default_${name}.network=lan - set wireless.default_${name}.mode=ap - set wireless.default_${name}.ssid=OpenWrt - set wireless.default_${name}.encryption=none -EOF - uci -q commit wireless - done -} diff --git a/package/network/config/wifi-scripts/files/lib/wifi/mac80211.uc b/package/network/config/wifi-scripts/files/lib/wifi/mac80211.uc new file mode 100644 index 0000000000..8f25a791b3 --- /dev/null +++ b/package/network/config/wifi-scripts/files/lib/wifi/mac80211.uc @@ -0,0 +1,94 @@ +#!/usr/bin/env ucode +import { readfile } from "fs"; +import * as uci from 'uci'; + +const bands_order = [ "6G", "5G", "2G" ]; +const htmode_order = [ "HE", "VHT", "HT" ]; + +let board = json(readfile("/etc/board.json")); +if (!board.wlan) + exit(0); + +let idx = 0; +let commit; + +let config = uci.cursor().get_all("wireless") ?? {}; + +function radio_exists(path, macaddr, phy) { + for (let name, s in config) { + if (s[".type"] != "wifi-device") + continue; + if (s.macaddr & lc(s.macaddr) == lc(macaddr)) + return true; + if (s.phy == phy) + return true; + if (!s.path || !path) + continue; + if (substr(s.path, -length(path)) == path) + return true; + } +} + +for (let phy_name, phy in board.wlan) { + let info = phy.info; + if (!info || !length(info.bands)) + continue; + + while (config[`radio${idx}`]) + idx++; + let name = "radio" + idx++; + + let s = "wireless." + name; + let si = "wireless.default_" + name; + + let band_name = filter(bands_order, (b) => info.bands[b])[0]; + if (!band_name) + continue; + + let band = info.bands[band_name]; + let channel = band.default_channel ?? "auto"; + + let width = band.max_width; + if (band_name == "2G") + width = 20; + else if (width > 80) + width = 80; + + let htmode = filter(htmode_order, (m) => band[lc(m)])[0]; + if (htmode) + htmode += width; + else + htmode = "NOHT"; + + if (!phy.path) + continue; + + let macaddr = trim(readfile(`/sys/class/ieee80211/${phy_name}/macaddress`)); + if (radio_exists(phy.path, macaddr, phy_name)) + continue; + + let id = `phy='${phy_name}'`; + if (match(phy_name, /^phy[0-9]/)) + id = `path='${phy.path}'`; + + print(`set ${s}=wifi-device +set ${s}.type='mac80211' +set ${s}.${id} +set ${s}.band='${lc(band_name)}' +set ${s}.channel='${channel}' +set ${s}.htmode='${htmode}' +set ${s}.disabled='1' + +set ${si}=wifi-iface +set ${si}.device='${name}' +set ${si}.network='lan' +set ${si}.mode='ap' +set ${si}.ssid='OpenWrt' +set ${si}.encryption='none' + +`); + commit = true; +} + +if (commit) + print("commit wireless\n"); diff --git a/package/network/config/wifi-scripts/files/sbin/wifi b/package/network/config/wifi-scripts/files/sbin/wifi index 27cbad3781..f937dba7e6 100755 --- a/package/network/config/wifi-scripts/files/sbin/wifi +++ b/package/network/config/wifi-scripts/files/sbin/wifi @@ -178,6 +178,7 @@ wifi_config() { [ -e /tmp/.config_pending ] && return ucode /usr/share/hostap/wifi-detect.uc [ ! -f /etc/config/wireless ] && touch /etc/config/wireless + ucode /lib/wifi/mac80211.uc | uci -q batch for driver in $DRIVERS; do ( if eval "type detect_$driver" 2>/dev/null >/dev/null; then From 66edb2f9ad89206ac6f608ec76fad161b53683a7 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 21 Jun 2024 13:34:32 +0200 Subject: [PATCH 08/31] tools: firmware-utils: update to Git HEAD (2024-06-20) 224d497dd94f srec2bin: drop unused "dum" variable 6777b2d51961 uimage_sgehdr: use "char" type for header struct strings 81db3025aac5 uimage_sgehdr: drop unused "ltmp" variable bd7fcc74b43e pc1crypt: make decrypt/encrypt functions take void * as argument 6ac44974185a linksys: add magic header generation tool for e8350 v1 Signed-off-by: Christian Marangi --- tools/firmware-utils/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile index e22f7a7b9a..f5fdc76e0f 100644 --- a/tools/firmware-utils/Makefile +++ b/tools/firmware-utils/Makefile @@ -11,9 +11,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git -PKG_SOURCE_DATE:=2024-03-23 -PKG_SOURCE_VERSION:=6b242991a995c41769977efb010dc9f4e4ec3da2 -PKG_MIRROR_HASH:=00ff2661fda2eb299ccbfaa07dff8fbcf46b3441a6e9f6f46eaa119e66dbe142 +PKG_SOURCE_DATE:=2024-06-20 +PKG_SOURCE_VERSION:=6ac44974185a3e7dc7848e97b964339948e817a7 +PKG_MIRROR_HASH:=ee5b29f45593750a6806cfa7cad3fd766b321b44107a6b481b890efe82a7dbf5 include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/cmake.mk From dcc4307205ad592f7310c5df26a329ad1ae0435c Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Fri, 21 Jun 2024 13:41:33 +0200 Subject: [PATCH 09/31] qoriq: use 6.1 by default and drop 5.15 qoriq has had kernel 6.1 as testing for 2 months now, so lets default to it and drop 5.15 support. Link: https://github.com/openwrt/openwrt/pull/15767 Signed-off-by: Robert Marko --- target/linux/qoriq/Makefile | 3 +- target/linux/qoriq/config-5.15 | 395 --------------------------------- 2 files changed, 1 insertion(+), 397 deletions(-) delete mode 100644 target/linux/qoriq/config-5.15 diff --git a/target/linux/qoriq/Makefile b/target/linux/qoriq/Makefile index b87e863513..50d3187d84 100644 --- a/target/linux/qoriq/Makefile +++ b/target/linux/qoriq/Makefile @@ -11,8 +11,7 @@ CPU_TYPE:=e5500 FEATURES:=boot-part ext4 fpu legacy-sdcard powerpc64 ramdisk rootfs-part rtc source-only SUBTARGETS:=generic -KERNEL_PATCHVER:=5.15 -KERNEL_TESTING_PATCHVER:=6.1 +KERNEL_PATCHVER:=6.1 KERNELNAME:=zImage diff --git a/target/linux/qoriq/config-5.15 b/target/linux/qoriq/config-5.15 deleted file mode 100644 index 247bbdf2d3..0000000000 --- a/target/linux/qoriq/config-5.15 +++ /dev/null @@ -1,395 +0,0 @@ -CONFIG_64BIT=y -CONFIG_ALTIVEC=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_KEEP_MEMBLOCK=y -CONFIG_ARCH_MAY_HAVE_PC_FDC=y -CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y -CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y -CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_ARCH_MMAP_RND_BITS_MAX=32 -CONFIG_ARCH_MMAP_RND_BITS_MIN=18 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_STACKWALK=y -CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y -CONFIG_ASN1=y -CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y -CONFIG_AUDIT_ARCH=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_MQ_PCI=y -CONFIG_BLK_PM=y -CONFIG_BOOKE=y -CONFIG_BOOKE_WDT=y -CONFIG_CLK_QORIQ=y -CONFIG_CLONE_BACKWARDS=y -CONFIG_CLZ_TAB=y -CONFIG_COMMON_CLK=y -# CONFIG_COMPAT_32BIT_TIME is not set -CONFIG_CONSOLE_TRANSLATIONS=y -CONFIG_CORENET_GENERIC=y -# CONFIG_CPUFREQ_DT is not set -CONFIG_CPU_BIG_ENDIAN=y -CONFIG_CPU_FREQ=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=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 is not set -CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_GOV_TEO=y -CONFIG_CPU_ISOLATION=y -CONFIG_CPU_RMAP=y -CONFIG_CRC16=y -CONFIG_CRYPTO_AUTHENC=y -CONFIG_CRYPTO_CRC32=y -CONFIG_CRYPTO_CRC32C=y -# CONFIG_CRYPTO_CRC32C_VPMSUM is not set -CONFIG_CRYPTO_DES=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_CRYPTO_API_QI=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_RINGSIZE=9 -CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y -# CONFIG_CRYPTO_DEV_NX is not set -CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_ENGINE=y -CONFIG_CRYPTO_HW=y -CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y -CONFIG_CRYPTO_LIB_DES=y -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 -# CONFIG_CRYPTO_MD5_PPC is not set -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RSA=y -# CONFIG_CRYPTO_SHA1_PPC is not set -CONFIG_CRYPTO_XTS=y -CONFIG_DATA_SHIFT=12 -CONFIG_DEBUG_INFO=y -CONFIG_DEFAULT_UIMAGE=y -CONFIG_DMADEVICES=y -CONFIG_DMA_ENGINE=y -CONFIG_DMA_OF=y -CONFIG_DMA_OPS=y -CONFIG_DMA_OPS_BYPASS=y -CONFIG_DTC=y -CONFIG_DUMMY_CONSOLE=y -CONFIG_E500=y -# CONFIG_E5500_CPU is not set -CONFIG_E6500_CPU=y -CONFIG_EARLY_PRINTK=y -CONFIG_EDAC=y -CONFIG_EDAC_ATOMIC_SCRUB=y -# CONFIG_EDAC_CPC925 is not set -# CONFIG_EDAC_DEBUG is not set -CONFIG_EDAC_LEGACY_SYSFS=y -CONFIG_EDAC_MPC85XX=y -CONFIG_EDAC_SUPPORT=y -CONFIG_EPAPR_PARAVIRT=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_F2FS_FS=y -CONFIG_FIXED_PHY=y -CONFIG_FORCE_MAX_ZONEORDER=13 -# CONFIG_FSL_BMAN_TEST is not set -CONFIG_FSL_CORENET_CF=y -CONFIG_FSL_CORENET_RCPM=y -CONFIG_FSL_DMA=y -CONFIG_FSL_DPAA=y -# CONFIG_FSL_DPAA_CHECKING is not set -CONFIG_FSL_DPAA_ETH=y -CONFIG_FSL_EMB_PERFMON=y -CONFIG_FSL_FMAN=y -CONFIG_FSL_GUTS=y -CONFIG_FSL_IFC=y -CONFIG_FSL_LBC=y -CONFIG_FSL_MPIC_TIMER_WAKEUP=y -CONFIG_FSL_PAMU=y -CONFIG_FSL_PCI=y -# CONFIG_FSL_QMAN_TEST is not set -CONFIG_FSL_SOC=y -CONFIG_FSL_SOC_BOOKE=y -CONFIG_FSL_XGMAC_MDIO=y -CONFIG_FS_IOMAP=y -CONFIG_FS_MBCACHE=y -CONFIG_FS_POSIX_ACL=y -CONFIG_FTL=y -CONFIG_FUNCTION_ALIGNMENT=0 -CONFIG_FUNCTION_ERROR_INJECTION=y -CONFIG_FWNODE_MDIO=y -CONFIG_FW_LOADER_PAGED_BUF=y -CONFIG_GENERIC_ALLOCATOR=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y -CONFIG_GENERIC_CMOS_UPDATE=y -# CONFIG_GENERIC_CPU is not set -CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_GENERIC_CPU_VULNERABILITIES=y -CONFIG_GENERIC_EARLY_IOREMAP=y -CONFIG_GENERIC_GETTIMEOFDAY=y -CONFIG_GENERIC_IRQ_MIGRATION=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_SHOW_LEVEL=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_MSI_IRQ=y -CONFIG_GENERIC_MSI_IRQ_DOMAIN=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_GENERIC_PHY=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GENERIC_STRNCPY_FROM_USER=y -CONFIG_GENERIC_STRNLEN_USER=y -CONFIG_GENERIC_TIME_VSYSCALL=y -# CONFIG_GEN_RTC is not set -# CONFIG_GIANFAR is not set -CONFIG_GLOB=y -CONFIG_GPIO_CDEV=y -CONFIG_GPIO_GENERIC=y -CONFIG_GPIO_MPC8XXX=y -CONFIG_GRO_CELLS=y -# CONFIG_HANGCHECK_TIMER is not set -CONFIG_HAS_DMA=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT_MAP=y -CONFIG_HWMON=y -CONFIG_HW_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_MPC=y -CONFIG_ILLEGAL_POINTER_VALUE=0x5deadbeef0000000 -CONFIG_INITRAMFS_SOURCE="" -CONFIG_INPUT=y -CONFIG_IOMMU_API=y -# CONFIG_IOMMU_DEBUGFS is not set -CONFIG_IOMMU_DEFAULT_DMA_STRICT=y -CONFIG_IOMMU_HELPER=y -CONFIG_IOMMU_SUPPORT=y -CONFIG_IRQCHIP=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_DOMAIN_HIERARCHY=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_IRQ_WORK=y -CONFIG_ISA_DMA_API=y -CONFIG_JBD2=y -CONFIG_JUMP_LABEL=y -CONFIG_JUMP_LABEL_FEATURE_CHECKS=y -# CONFIG_JUMP_LABEL_FEATURE_CHECK_DEBUG is not set -CONFIG_KALLSYMS=y -CONFIG_KERNEL_GZIP=y -CONFIG_KERNEL_START=0xc000000000000000 -CONFIG_KPROBES=y -CONFIG_KRETPROBES=y -CONFIG_LIBFDT=y -CONFIG_LOCK_DEBUGGING_SUPPORT=y -CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_MARVELL_PHY=y -CONFIG_MATH_EMULATION=y -# CONFIG_MATH_EMULATION_FULL is not set -CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED=y -CONFIG_MDIO_BUS=y -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_DEVRES=y -CONFIG_MEMFD_CREATE=y -CONFIG_MEMORY=y -CONFIG_MIGRATION=y -CONFIG_MMC=y -CONFIG_MMC_BLOCK=y -CONFIG_MMC_DEBUG=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_IO_ACCESSORS=y -CONFIG_MMC_SDHCI_OF_ESDHC=y -# CONFIG_MMC_SDHCI_PCI is not set -CONFIG_MMC_SDHCI_PLTFM=y -# CONFIG_MMC_WBSD is not set -CONFIG_MMIOWB=y -CONFIG_MMU_GATHER_PAGE_SIZE=y -CONFIG_MODULES_USE_ELF_RELA=y -CONFIG_MPIC=y -CONFIG_MPIC_MSGR=y -CONFIG_MPIC_TIMER=y -CONFIG_MPILIB=y -CONFIG_MTD_NAND_CORE=y -CONFIG_MTD_NAND_ECC=y -CONFIG_MTD_NAND_ECC_SW_HAMMING=y -CONFIG_MTD_NAND_FSL_IFC=y -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_RAW_NAND=y -CONFIG_MUTEX_SPIN_ON_OWNER=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y -CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y -CONFIG_NEED_SG_DMA_LENGTH=y -CONFIG_NET_DEVLINK=y -CONFIG_NET_DSA=y -CONFIG_NET_DSA_MV88E6XXX=y -CONFIG_NET_DSA_TAG_DSA=y -CONFIG_NET_DSA_TAG_DSA_COMMON=y -CONFIG_NET_DSA_TAG_EDSA=y -CONFIG_NET_DSA_TAG_OCELOT=y -CONFIG_NET_DSA_TAG_TRAILER=y -CONFIG_NET_FLOW_LIMIT=y -CONFIG_NET_PTP_CLASSIFY=y -CONFIG_NET_SELFTESTS=y -CONFIG_NET_SWITCHDEV=y -CONFIG_NLS=y -CONFIG_NONSTATIC_KERNEL=y -CONFIG_NO_HZ_COMMON=y -CONFIG_NO_HZ_IDLE=y -CONFIG_NR_CPUS=24 -CONFIG_NR_IRQS=512 -CONFIG_OF=y -CONFIG_OF_ADDRESS=y -CONFIG_OF_DMA_DEFAULT_COHERENT=y -CONFIG_OF_EARLY_FLATTREE=y -CONFIG_OF_FLATTREE=y -CONFIG_OF_GPIO=y -CONFIG_OF_IOMMU=y -CONFIG_OF_IRQ=y -CONFIG_OF_KOBJ=y -CONFIG_OF_MDIO=y -CONFIG_OLD_SIGSUSPEND=y -CONFIG_OPTPROBES=y -CONFIG_PACKING=y -CONFIG_PADATA=y -CONFIG_PAGE_OFFSET=0xc000000000000000 -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_MSI=y -CONFIG_PCI_MSI_ARCH_FALLBACKS=y -CONFIG_PCI_MSI_IRQ_DOMAIN=y -CONFIG_PGTABLE_LEVELS=4 -CONFIG_PHYLIB=y -CONFIG_PHYLINK=y -CONFIG_PHYSICAL_START=0x00000000 -CONFIG_PHYS_64BIT=y -CONFIG_PHYS_ADDR_T_64BIT=y -CONFIG_PM=y -# CONFIG_PMU_SYSFS is not set -CONFIG_PM_CLK=y -CONFIG_PPC=y -CONFIG_PPC64=y -CONFIG_PPC_ADV_DEBUG_DACS=2 -CONFIG_PPC_ADV_DEBUG_DVCS=0 -CONFIG_PPC_ADV_DEBUG_IACS=2 -CONFIG_PPC_ADV_DEBUG_REGS=y -CONFIG_PPC_BARRIER_NOSPEC=y -CONFIG_PPC_BOOK3E=y -CONFIG_PPC_BOOK3E_64=y -CONFIG_PPC_BOOK3E_MMU=y -# CONFIG_PPC_BOOK3S_64 is not set -CONFIG_PPC_DAWR=y -CONFIG_PPC_DOORBELL=y -CONFIG_PPC_E500MC=y -# CONFIG_PPC_EARLY_DEBUG is not set -CONFIG_PPC_EPAPR_HV_PIC=y -CONFIG_PPC_FPU=y -CONFIG_PPC_FPU_REGS=y -CONFIG_PPC_FSL_BOOK3E=y -CONFIG_PPC_INDIRECT_PCI=y -# CONFIG_PPC_IRQ_SOFT_MASK_DEBUG is not set -CONFIG_PPC_MMU_NOHASH=y -CONFIG_PPC_MSI_BITMAP=y -CONFIG_PPC_OF_BOOT_TRAMPOLINE=y -CONFIG_PPC_PAGE_SHIFT=12 -# CONFIG_PPC_QEMU_E500 is not set -CONFIG_PPC_QUEUED_SPINLOCKS=y -CONFIG_PPC_SMP_MUXED_IPI=y -CONFIG_PPC_UDBG_16550=y -CONFIG_PPC_WERROR=y -CONFIG_PPS=y -CONFIG_PTE_64BIT=y -CONFIG_PTP_1588_CLOCK=y -CONFIG_PTP_1588_CLOCK_OPTIONAL=y -CONFIG_PTP_1588_CLOCK_QORIQ=y -CONFIG_QORIQ_CPUFREQ=y -CONFIG_QORIQ_THERMAL=y -CONFIG_QUEUED_RWLOCKS=y -CONFIG_QUEUED_SPINLOCKS=y -CONFIG_RAS=y -CONFIG_RATIONAL=y -# CONFIG_RAVE_SP_CORE is not set -CONFIG_REGMAP=y -CONFIG_REGMAP_MMIO=y -CONFIG_RELOCATABLE=y -# CONFIG_RELOCATABLE_TEST is not set -CONFIG_RFS_ACCEL=y -CONFIG_RPS=y -CONFIG_RWSEM_SPIN_ON_OWNER=y -# CONFIG_SCOM_DEBUGFS is not set -CONFIG_SCSI=y -CONFIG_SCSI_COMMON=y -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_FSL=y -CONFIG_SERIAL_8250_NR_UARTS=4 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_DEV_BUS=y -CONFIG_SERIAL_DEV_CTRL_TTYPORT=y -CONFIG_SERIAL_FSL_LINFLEXUART=y -CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y -CONFIG_SERIAL_FSL_LPUART=y -CONFIG_SERIAL_FSL_LPUART_CONSOLE=y -CONFIG_SERIAL_MCTRL_GPIO=y -CONFIG_SG_POOL=y -CONFIG_SMP=y -CONFIG_SOCK_RX_QUEUE_MAPPING=y -CONFIG_SOC_BUS=y -CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y -CONFIG_SPARSE_IRQ=y -CONFIG_SPI=y -CONFIG_SPI_FSL_ESPI=y -CONFIG_SPI_MASTER=y -CONFIG_SRCU=y -CONFIG_SWIOTLB=y -CONFIG_SWPHY=y -CONFIG_SYSCTL_EXCEPTION_TRACE=y -CONFIG_TARGET_CPU_BOOL=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_THREAD_SHIFT=14 -CONFIG_TREE_RCU=y -CONFIG_TREE_SRCU=y -# CONFIG_UACCE is not set -# CONFIG_UCLAMP_TASK is not set -CONFIG_USB=y -CONFIG_USB_COMMON=y -CONFIG_USB_EHCI_FSL=y -CONFIG_USB_EHCI_HCD=y -# CONFIG_USB_EHCI_HCD_PLATFORM is not set -CONFIG_USB_STORAGE=y -CONFIG_USB_SUPPORT=y -CONFIG_USB_UAS=y -CONFIG_VGA_CONSOLE=y -CONFIG_VIRT_CPU_ACCOUNTING=y -CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -# CONFIG_VT_HW_CONSOLE_BINDING is not set -CONFIG_WATCHDOG_CORE=y -# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set -CONFIG_XPS=y -CONFIG_ZLIB_DEFLATE=y From d648ee4c580fbd18f3c29ccfb39284a1a9929bed Mon Sep 17 00:00:00 2001 From: Sean Khan Date: Fri, 21 Jun 2024 20:01:22 -0400 Subject: [PATCH 10/31] wifi-scripts: ensure get_freq returns int (iw-6.9) With `iw` version 6.9 frequencies are now being reported as float, which is incompatible with wpa_supplicant's config option 'frequency' which expects an integer. iwinfo phy0 info output: Version: 5.19 ``` Frequencies: * 5180 MHz [36] (30.0 dBm) * 5200 MHz [40] (30.0 dBm) * 5220 MHz [44] (30.0 dBm) * 5240 MHz [48] (30.0 dBm) * 5260 MHz [52] (24.0 dBm) * 5280 MHz [56] (24.0 dBm) * 5300 MHz [60] (24.0 dBm) * 5320 MHz [64] (24.0 dBm) * 5500 MHz [100] (24.0 dBm) * 5520 MHz [104] (24.0 dBm) * 5540 MHz [108] (24.0 dBm) * 5560 MHz [112] (24.0 dBm) * 5580 MHz [116] (24.0 dBm) * 5600 MHz [120] (24.0 dBm) * 5620 MHz [124] (24.0 dBm) * 5640 MHz [128] (24.0 dBm) * 5660 MHz [132] (24.0 dBm) * 5680 MHz [136] (24.0 dBm) * 5700 MHz [140] (24.0 dBm) * 5720 MHz [144] (24.0 dBm) * 5745 MHz [149] (30.0 dBm) * 5765 MHz [153] (30.0 dBm) * 5785 MHz [157] (30.0 dBm) * 5805 MHz [161] (30.0 dBm) * 5825 MHz [165] (30.0 dBm) * 5845 MHz [169] (disabled) * 5865 MHz [173] (disabled) * 5885 MHz [177] (disabled) ``` Version: 6.9 ``` Frequencies: * 5180.0 MHz [36] (30.0 dBm) * 5200.0 MHz [40] (30.0 dBm) * 5220.0 MHz [44] (30.0 dBm) * 5240.0 MHz [48] (30.0 dBm) * 5260.0 MHz [52] (24.0 dBm) * 5280.0 MHz [56] (24.0 dBm) * 5300.0 MHz [60] (24.0 dBm) * 5320.0 MHz [64] (24.0 dBm) * 5500.0 MHz [100] (24.0 dBm) * 5520.0 MHz [104] (24.0 dBm) * 5540.0 MHz [108] (24.0 dBm) * 5560.0 MHz [112] (24.0 dBm) * 5580.0 MHz [116] (24.0 dBm) * 5600.0 MHz [120] (24.0 dBm) * 5620.0 MHz [124] (24.0 dBm) * 5640.0 MHz [128] (24.0 dBm) * 5660.0 MHz [132] (24.0 dBm) * 5680.0 MHz [136] (24.0 dBm) * 5700.0 MHz [140] (24.0 dBm) * 5720.0 MHz [144] (24.0 dBm) * 5745.0 MHz [149] (30.0 dBm) * 5765.0 MHz [153] (30.0 dBm) * 5785.0 MHz [157] (30.0 dBm) * 5805.0 MHz [161] (30.0 dBm) * 5825.0 MHz [165] (30.0 dBm) * 5845.0 MHz [169] (disabled) * 5865.0 MHz [173] (disabled) * 5885.0 MHz [177] (disabled) ``` Error reported from wpa_supplicant ```console Fri Jun 21 14:07:22 2024 daemon.err wpa_supplicant[2866]: Line 10: invalid number "5320.0" Fri Jun 21 14:07:22 2024 daemon.err wpa_supplicant[2866]: Line 10: failed to parse frequency '5320.0'. Fri Jun 21 14:07:22 2024 daemon.err wpa_supplicant[2866]: Line 16: failed to parse network block. Fri Jun 21 14:07:22 2024 daemon.err wpa_supplicant[2866]: Failed to read or parse configuration '/var/run/wpa_supplicant-phy1-mesh0.conf'. ``` This affects mesh, adhoc, and client-mode WDS. Until hostapd/wpa_supplicant is updated (or patched) to support float frequencies, ensure `get_freq` prints out an integer. Signed-off-by: Sean Khan Link: https://github.com/openwrt/openwrt/pull/15770 Signed-off-by: Robert Marko --- .../config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh index bc59c303b9..0079c498e7 100755 --- a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh +++ b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh @@ -1021,7 +1021,7 @@ $1 ~ /Band/ { } band_match && $3 == "MHz" && $4 == channel { - print $2 + print int($2) exit } ' From 176b8df7016ed322f4295ba88465b1132db4d80e Mon Sep 17 00:00:00 2001 From: Tim Harvey Date: Tue, 21 May 2024 11:44:34 -0700 Subject: [PATCH 11/31] imx: coretexa53: fix network configuration for GW74xx The GW74xx's first RJ45 is eth0 which should be the WAN adapter, not eth1 which is the CPU uplink port to the switch. Signed-off-by: Tim Harvey Link: https://github.com/openwrt/openwrt/pull/15736 Signed-off-by: Robert Marko --- target/linux/imx/cortexa53/base-files/etc/board.d/02_network | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/imx/cortexa53/base-files/etc/board.d/02_network b/target/linux/imx/cortexa53/base-files/etc/board.d/02_network index c6049824e0..f5dbbb09b9 100644 --- a/target/linux/imx/cortexa53/base-files/etc/board.d/02_network +++ b/target/linux/imx/cortexa53/base-files/etc/board.d/02_network @@ -18,7 +18,7 @@ gw,imx8mm-gw7901) gateworks,imx8mp-gw74xx) ucidef_set_network_device_path "eth0" "platform/soc@0/30800000.bus/30bf0000.ethernet" ucidef_set_network_device_path "eth1" "platform/soc@0/30800000.bus/30be0000.ethernet" - ucidef_set_interfaces_lan_wan 'lan1 lan2 lan3 lan4' 'eth1' + ucidef_set_interfaces_lan_wan 'lan1 lan2 lan3 lan4' 'eth0' ;; esac From 5f307b29cd6a34e64f594429f57d08e790fe6940 Mon Sep 17 00:00:00 2001 From: Tim Harvey Date: Tue, 21 May 2024 12:18:50 -0700 Subject: [PATCH 12/31] imx: 6.6: add upstream patches for imx8m{m,n,p} venice Add a set of upstream patches for the imx8m{m,n,p} based Venice boards. Signed-off-by: Tim Harvey Link: https://github.com/openwrt/openwrt/pull/15736 Signed-off-by: Robert Marko --- ...x8mp-add-imx8mp-venice-gw74xx-imx219.patch | 136 ++++++++++++++++++ ...-imx8mm-venice-gw73xx-add-TPM-device.patch | 39 +++++ ...-imx8mp-venice-gw73xx-add-TPM-device.patch | 39 +++++ ...-imx8mm-venice-gw72xx-add-TPM-device.patch | 39 +++++ ...-imx8mp-venice-gw72xx-add-TPM-device.patch | 39 +++++ ...-imx8mm-venice-gw71xx-add-TPM-device.patch | 39 +++++ ...-imx8mp-venice-gw71xx-add-TPM-device.patch | 39 +++++ ...x8mm-venice-gw7901-add-digital-I-O-d.patch | 34 +++++ ...-imx8mm-venice-gw7901-add-TPM-device.patch | 45 ++++++ ...eescale-imx8mp-venice-gw72xx-2x-fix-.patch | 38 +++++ ...eescale-imx8mp-venice-gw73xx-2x-fix-.patch | 38 +++++ ...mx8mp-venice-gw74xx-add-ADC-rail-for.patch | 30 ++++ ...mx8mp-venice-gw72xx-add-mac-addr-for.patch | 80 +++++++++++ ...mx8mp-venice-gw73xx-add-mac-addr-for.patch | 82 +++++++++++ 14 files changed, 717 insertions(+) create mode 100644 target/linux/imx/patches-6.6/400-6.7-arm64-dts-imx8mp-add-imx8mp-venice-gw74xx-imx219.patch create mode 100644 target/linux/imx/patches-6.6/401-6.7-arm64-dts-imx8mm-venice-gw73xx-add-TPM-device.patch create mode 100644 target/linux/imx/patches-6.6/402-6.7-arm64-dts-imx8mp-venice-gw73xx-add-TPM-device.patch create mode 100644 target/linux/imx/patches-6.6/403-6.8-arm64-dts-imx8mm-venice-gw72xx-add-TPM-device.patch create mode 100644 target/linux/imx/patches-6.6/404-6.8-arm64-dts-imx8mp-venice-gw72xx-add-TPM-device.patch create mode 100644 target/linux/imx/patches-6.6/405-6.9-arm64-dts-imx8mm-venice-gw71xx-add-TPM-device.patch create mode 100644 target/linux/imx/patches-6.6/406-6.9-arm64-dts-imx8mp-venice-gw71xx-add-TPM-device.patch create mode 100644 target/linux/imx/patches-6.6/407-6.9-arm64-dts-imx8mm-venice-gw7901-add-digital-I-O-d.patch create mode 100644 target/linux/imx/patches-6.6/408-6.9-arm64-dts-imx8mm-venice-gw7901-add-TPM-device.patch create mode 100644 target/linux/imx/patches-6.6/409-6.9-arm64-dts-freescale-imx8mp-venice-gw72xx-2x-fix-.patch create mode 100644 target/linux/imx/patches-6.6/410-6.9-arm64-dts-freescale-imx8mp-venice-gw73xx-2x-fix-.patch create mode 100644 target/linux/imx/patches-6.6/411-6.10-arm64-dts-imx8mp-venice-gw74xx-add-ADC-rail-for.patch create mode 100644 target/linux/imx/patches-6.6/412-6.10-arm64-dts-imx8mp-venice-gw72xx-add-mac-addr-for.patch create mode 100644 target/linux/imx/patches-6.6/413-6.10-arm64-dts-imx8mp-venice-gw73xx-add-mac-addr-for.patch diff --git a/target/linux/imx/patches-6.6/400-6.7-arm64-dts-imx8mp-add-imx8mp-venice-gw74xx-imx219.patch b/target/linux/imx/patches-6.6/400-6.7-arm64-dts-imx8mp-add-imx8mp-venice-gw74xx-imx219.patch new file mode 100644 index 0000000000..36025a185c --- /dev/null +++ b/target/linux/imx/patches-6.6/400-6.7-arm64-dts-imx8mp-add-imx8mp-venice-gw74xx-imx219.patch @@ -0,0 +1,136 @@ +From 60fd951029603a0a6e019f16d53fb329dbd001f4 Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Fri, 7 Jul 2023 16:24:19 -0700 +Subject: [PATCH 400/413] 6.7: arm64: dts: imx8mp: add + imx8mp-venice-gw74xx-imx219 overlay for rpi v2 camera + +Add support for the RaspberryPi Camera v2 which is an IMX219 8MP module: + - https://datasheets.raspberrypi.com/camera/camera-v2-schematics.pdf + - has its own on-board 24MHz osc so no clock required from baseboard + - pin 11 enables 1.8V and 2.8V LDO which is connected to + GW74xx MIPI_GPIO4 (IMX8MP GPIO1_IO4) so we use this as a gpio + +Support is added via a device-tree overlay. + +The IMX219 supports RAW8/RAW10 image formats. + +Example configuration: +media-ctl -l "'imx219 3-0010':0->'csis-32e40000.csi':0[1]" +media-ctl -v -V "'imx219 3-0010':0 [fmt:SRGGB8/640x480 field:none]" +media-ctl -v -V "'crossbar':0 [fmt:SRGGB8/640x480 field:none]" +media-ctl -v -V "'mxc_isi.0':0 [fmt:SRGGB8/640x480 field:none]" +v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=RGGB +v4l2-ctl --stream-mmap --stream-to=frame.raw --stream-count=1 +convert -size 640x480 -depth 8 gray:frame.raw frame.png +gst-launch-1.0 v4l2src ! \ + video/x-bayer,format=rggb,width=640,height=480,framerate=10/1 ! \ + bayer2rgb ! fbdevsink + +Signed-off-by: Tim Harvey +--- + arch/arm64/boot/dts/freescale/Makefile | 2 + + .../imx8mp-venice-gw74xx-imx219.dtso | 80 +++++++++++++++++++ + 2 files changed, 82 insertions(+) + create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-imx219.dtso + +--- a/arch/arm64/boot/dts/freescale/Makefile ++++ b/arch/arm64/boot/dts/freescale/Makefile +@@ -159,6 +159,7 @@ imx8mm-venice-gw73xx-0x-rpidsi-dtbs := i + imx8mm-venice-gw73xx-0x-rs232-rts-dtbs := imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs232-rts.dtbo + imx8mm-venice-gw73xx-0x-rs422-dtbs := imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs422.dtbo + imx8mm-venice-gw73xx-0x-rs485-dtbs := imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs485.dtbo ++imx8mp-venice-gw74xx-imx219-dtbs := imx8mp-venice-gw74xx.dtb imx8mp-venice-gw74xx-imx219.dtbo + imx8mp-venice-gw74xx-rpidsi-dtbs := imx8mp-venice-gw74xx.dtb imx8mp-venice-gw74xx-rpidsi.dtbo + + dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw72xx-0x-imx219.dtb +@@ -171,6 +172,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice- + dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs232-rts.dtb + dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs422.dtb + dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs485.dtb ++dtb-$(CONFIG_ARCH_MXC) += imx8mp-venice-gw74xx-imx219.dtb + dtb-$(CONFIG_ARCH_MXC) += imx8mp-venice-gw74xx-rpidsi.dtb + + dtb-$(CONFIG_ARCH_S32) += s32g274a-evb.dtb +--- /dev/null ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-imx219.dtso +@@ -0,0 +1,80 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright 2023 Gateworks Corporation ++ */ ++ ++#include ++ ++#include "imx8mp-pinfunc.h" ++ ++/dts-v1/; ++/plugin/; ++ ++&{/} { ++ compatible = "gw,imx8mp-gw74xx", "fsl,imx8mp"; ++ ++ reg_cam: regulator-cam { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_reg_cam>; ++ compatible = "regulator-fixed"; ++ regulator-name = "reg_cam"; ++ gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>; ++ enable-active-high; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ }; ++ ++ cam24m: cam24m { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <24000000>; ++ clock-output-names = "cam24m"; ++ }; ++}; ++ ++&i2c4 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ imx219: sensor@10 { ++ compatible = "sony,imx219"; ++ reg = <0x10>; ++ clocks = <&cam24m>; ++ VDIG-supply = <®_cam>; ++ ++ port { ++ /* MIPI CSI-2 bus endpoint */ ++ imx219_to_mipi_csi2: endpoint { ++ remote-endpoint = <&mipi_csi_0_in>; ++ clock-lanes = <0>; ++ data-lanes = <1 2>; ++ link-frequencies = /bits/ 64 <456000000>; ++ }; ++ }; ++ }; ++}; ++ ++&isi_0 { ++ status = "okay"; ++}; ++ ++&mipi_csi_0 { ++ status = "okay"; ++ ++ ports { ++ port@0 { ++ mipi_csi_0_in: endpoint { ++ remote-endpoint = <&imx219_to_mipi_csi2>; ++ data-lanes = <1 2>; ++ }; ++ }; ++ }; ++}; ++ ++&iomuxc { ++ pinctrl_reg_cam: regcamgrp { ++ fsl,pins = < ++ MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04 0x41 ++ >; ++ }; ++}; diff --git a/target/linux/imx/patches-6.6/401-6.7-arm64-dts-imx8mm-venice-gw73xx-add-TPM-device.patch b/target/linux/imx/patches-6.6/401-6.7-arm64-dts-imx8mm-venice-gw73xx-add-TPM-device.patch new file mode 100644 index 0000000000..782573f6d0 --- /dev/null +++ b/target/linux/imx/patches-6.6/401-6.7-arm64-dts-imx8mm-venice-gw73xx-add-TPM-device.patch @@ -0,0 +1,39 @@ +From 816e40232faaa4aa0364ca8da7f86eaf27b0d9ff Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Mon, 26 Jun 2023 11:51:13 -0700 +Subject: [PATCH 401/413] 6.7: arm64: dts: imx8mm-venice-gw73xx: add TPM device + +Add the TPM device found on the GW73xx revision F PCB. + +Signed-off-by: Tim Harvey +--- + .../arm64/boot/dts/freescale/imx8mm-venice-gw73xx.dtsi | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx.dtsi +@@ -104,8 +104,15 @@ + &ecspi2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi2>; +- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; ++ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>, ++ <&gpio1 10 GPIO_ACTIVE_LOW>; + status = "okay"; ++ ++ tpm@1 { ++ compatible = "tcg,tpm_tis-spi"; ++ reg = <0x1>; ++ spi-max-frequency = <36000000>; ++ }; + }; + + &gpio1 { +@@ -362,6 +369,7 @@ + MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0xd6 + MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0xd6 + MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0xd6 ++ MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0xd6 + >; + }; + diff --git a/target/linux/imx/patches-6.6/402-6.7-arm64-dts-imx8mp-venice-gw73xx-add-TPM-device.patch b/target/linux/imx/patches-6.6/402-6.7-arm64-dts-imx8mp-venice-gw73xx-add-TPM-device.patch new file mode 100644 index 0000000000..a106c0bc21 --- /dev/null +++ b/target/linux/imx/patches-6.6/402-6.7-arm64-dts-imx8mp-venice-gw73xx-add-TPM-device.patch @@ -0,0 +1,39 @@ +From 916ffc08e8cdd3beccd78291eac9dc5592d83de1 Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Thu, 24 Aug 2023 11:07:48 -0700 +Subject: [PATCH 402/413] 6.7: arm64: dts: imx8mp-venice-gw73xx: add TPM device + +Add the TPM device found on the GW73xx revision F PCB. + +Signed-off-by: Tim Harvey +--- + .../arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi +@@ -95,8 +95,15 @@ + &ecspi2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi2>; +- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; ++ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>, ++ <&gpio1 10 GPIO_ACTIVE_LOW>; + status = "okay"; ++ ++ tpm@1 { ++ compatible = "tcg,tpm_tis-spi"; ++ reg = <0x1>; ++ spi-max-frequency = <36000000>; ++ }; + }; + + &gpio4 { +@@ -327,6 +334,7 @@ + MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x140 + MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x140 + MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x140 ++ MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x140 + >; + }; + diff --git a/target/linux/imx/patches-6.6/403-6.8-arm64-dts-imx8mm-venice-gw72xx-add-TPM-device.patch b/target/linux/imx/patches-6.6/403-6.8-arm64-dts-imx8mm-venice-gw72xx-add-TPM-device.patch new file mode 100644 index 0000000000..01b79e26e8 --- /dev/null +++ b/target/linux/imx/patches-6.6/403-6.8-arm64-dts-imx8mm-venice-gw72xx-add-TPM-device.patch @@ -0,0 +1,39 @@ +From 0adf19579692623d9d9202d2868aa7cd81451148 Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Thu, 28 Sep 2023 14:10:39 -0700 +Subject: [PATCH 403/413] 6.8: arm64: dts: imx8mm-venice-gw72xx: add TPM device + +Add the TPM device found on the GW72xx revision F PCB. + +Signed-off-by: Tim Harvey +--- + .../arm64/boot/dts/freescale/imx8mm-venice-gw72xx.dtsi | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw72xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw72xx.dtsi +@@ -84,8 +84,15 @@ + &ecspi2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi2>; +- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; ++ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>, ++ <&gpio1 10 GPIO_ACTIVE_LOW>; + status = "okay"; ++ ++ tpm@1 { ++ compatible = "tcg,tpm_tis-spi"; ++ reg = <0x1>; ++ spi-max-frequency = <36000000>; ++ }; + }; + + &gpio1 { +@@ -313,6 +320,7 @@ + MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0xd6 + MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0xd6 + MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0xd6 ++ MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0xd6 + >; + }; + diff --git a/target/linux/imx/patches-6.6/404-6.8-arm64-dts-imx8mp-venice-gw72xx-add-TPM-device.patch b/target/linux/imx/patches-6.6/404-6.8-arm64-dts-imx8mp-venice-gw72xx-add-TPM-device.patch new file mode 100644 index 0000000000..1e399f72f5 --- /dev/null +++ b/target/linux/imx/patches-6.6/404-6.8-arm64-dts-imx8mp-venice-gw72xx-add-TPM-device.patch @@ -0,0 +1,39 @@ +From 9d3932717327f6086a9a81a41df5bf5250aee782 Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Thu, 28 Sep 2023 14:11:01 -0700 +Subject: [PATCH 404/413] 6.8: arm64: dts: imx8mp-venice-gw72xx: add TPM device + +Add the TPM device found on the GW72xx revision F PCB. + +Signed-off-by: Tim Harvey +--- + .../arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi +@@ -83,8 +83,15 @@ + &ecspi2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi2>; +- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; ++ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>, ++ <&gpio1 10 GPIO_ACTIVE_LOW>; + status = "okay"; ++ ++ tpm@1 { ++ compatible = "tcg,tpm_tis-spi"; ++ reg = <0x1>; ++ spi-max-frequency = <36000000>; ++ }; + }; + + &gpio4 { +@@ -286,6 +293,7 @@ + MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x140 + MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x140 + MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x140 ++ MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x140 + >; + }; + diff --git a/target/linux/imx/patches-6.6/405-6.9-arm64-dts-imx8mm-venice-gw71xx-add-TPM-device.patch b/target/linux/imx/patches-6.6/405-6.9-arm64-dts-imx8mm-venice-gw71xx-add-TPM-device.patch new file mode 100644 index 0000000000..57ad826668 --- /dev/null +++ b/target/linux/imx/patches-6.6/405-6.9-arm64-dts-imx8mm-venice-gw71xx-add-TPM-device.patch @@ -0,0 +1,39 @@ +From 6cea7c46172eca323e9ce7e6aab8f8506eb92b4b Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Wed, 29 Nov 2023 09:53:04 -0800 +Subject: [PATCH 405/413] 6.9: arm64: dts: imx8mm-venice-gw71xx: add TPM device + +Add the TPM device found on the GW71xx revision E PCB. + +Signed-off-by: Tim Harvey +--- + .../arm64/boot/dts/freescale/imx8mm-venice-gw71xx.dtsi | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw71xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw71xx.dtsi +@@ -53,8 +53,15 @@ + &ecspi2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi2>; +- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; ++ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>, ++ <&gpio1 10 GPIO_ACTIVE_LOW>; + status = "okay"; ++ ++ tpm@1 { ++ compatible = "tcg,tpm_tis-spi"; ++ reg = <0x1>; ++ spi-max-frequency = <36000000>; ++ }; + }; + + &gpio1 { +@@ -201,6 +208,7 @@ + MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0xd6 + MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0xd6 + MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0xd6 ++ MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0xd6 + >; + }; + diff --git a/target/linux/imx/patches-6.6/406-6.9-arm64-dts-imx8mp-venice-gw71xx-add-TPM-device.patch b/target/linux/imx/patches-6.6/406-6.9-arm64-dts-imx8mp-venice-gw71xx-add-TPM-device.patch new file mode 100644 index 0000000000..b96fc907a4 --- /dev/null +++ b/target/linux/imx/patches-6.6/406-6.9-arm64-dts-imx8mp-venice-gw71xx-add-TPM-device.patch @@ -0,0 +1,39 @@ +From 9095a68c0b7084a7819e697ef38d0c987531c8ab Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Wed, 29 Nov 2023 17:11:51 -0800 +Subject: [PATCH 406/413] 6.9: arm64: dts: imx8mp-venice-gw71xx: add TPM device + +Add the TPM device found on the GW71xx revision E PCB. + +Signed-off-by: Tim Harvey +--- + .../arm64/boot/dts/freescale/imx8mp-venice-gw71xx.dtsi | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw71xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw71xx.dtsi +@@ -48,8 +48,15 @@ + &ecspi2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi2>; +- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; ++ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>, ++ <&gpio1 10 GPIO_ACTIVE_LOW>; + status = "okay"; ++ ++ tpm@1 { ++ compatible = "tcg,tpm_tis-spi"; ++ reg = <0x1>; ++ spi-max-frequency = <36000000>; ++ }; + }; + + &gpio4 { +@@ -217,6 +224,7 @@ + MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x140 + MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x140 + MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x140 ++ MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x140 + >; + }; + diff --git a/target/linux/imx/patches-6.6/407-6.9-arm64-dts-imx8mm-venice-gw7901-add-digital-I-O-d.patch b/target/linux/imx/patches-6.6/407-6.9-arm64-dts-imx8mm-venice-gw7901-add-digital-I-O-d.patch new file mode 100644 index 0000000000..ebee3c4be1 --- /dev/null +++ b/target/linux/imx/patches-6.6/407-6.9-arm64-dts-imx8mm-venice-gw7901-add-digital-I-O-d.patch @@ -0,0 +1,34 @@ +From e5bc89e60590581b0d31e8c6c6361c6caf5583bb Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Tue, 21 Nov 2023 11:12:24 -0800 +Subject: [PATCH 407/413] 6.9: arm64: dts: imx8mm-venice-gw7901: add digital + I/O direction control GPIO's + +The GW7901 has GPIO's to configure the direction of its isolated +digital I/O signals. Add the GPIO pinmux and line names. + +Signed-off-by: Tim Harvey +--- + arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts ++++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts +@@ -319,7 +319,7 @@ + + &gpio4 { + gpio-line-names = "", "", "", "", +- "", "", "uart3_rs232#", "uart3_rs422#", ++ "dig1_ctl", "dig2_ctl", "uart3_rs232#", "uart3_rs422#", + "uart3_rs485#", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", + "", "", "", "uart4_rs485#", "", "sim1det#", "sim2det#", ""; +@@ -842,6 +842,8 @@ + + pinctrl_hog: hoggrp { + fsl,pins = < ++ MX8MM_IOMUXC_SAI1_RXD2_GPIO4_IO4 0x40000041 /* DIG1_CTL */ ++ MX8MM_IOMUXC_SAI1_RXD3_GPIO4_IO5 0x40000041 /* DIG2_CTL */ + MX8MM_IOMUXC_SPDIF_TX_GPIO5_IO3 0x40000041 /* DIG2_OUT */ + MX8MM_IOMUXC_SPDIF_RX_GPIO5_IO4 0x40000041 /* DIG2_IN */ + MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x40000041 /* DIG1_IN */ diff --git a/target/linux/imx/patches-6.6/408-6.9-arm64-dts-imx8mm-venice-gw7901-add-TPM-device.patch b/target/linux/imx/patches-6.6/408-6.9-arm64-dts-imx8mm-venice-gw7901-add-TPM-device.patch new file mode 100644 index 0000000000..e86c29fbb8 --- /dev/null +++ b/target/linux/imx/patches-6.6/408-6.9-arm64-dts-imx8mm-venice-gw7901-add-TPM-device.patch @@ -0,0 +1,45 @@ +From f905e9a03cdf8edf6fa719ba89f37e6138c33834 Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Tue, 21 Nov 2023 11:44:38 -0800 +Subject: [PATCH 408/413] 6.9: arm64: dts: imx8mm-venice-gw7901: add TPM device + +Add the TPM device found on the GW7901 revision D PCB. + +Signed-off-by: Tim Harvey +--- + arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts ++++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts +@@ -285,7 +285,8 @@ + &ecspi1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi1>; +- cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>; ++ cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>, ++ <&gpio4 24 GPIO_ACTIVE_LOW>; + status = "okay"; + + flash@0 { +@@ -294,6 +295,12 @@ + spi-max-frequency = <40000000>; + status = "okay"; + }; ++ ++ tpm@1 { ++ compatible = "tcg,tpm_tis-spi"; ++ reg = <0x1>; ++ spi-max-frequency = <36000000>; ++ }; + }; + + &fec1 { +@@ -989,6 +996,7 @@ + MX8MM_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI 0x82 + MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO 0x82 + MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x140 ++ MX8MM_IOMUXC_SAI2_TXFS_GPIO4_IO24 0x140 + >; + }; + diff --git a/target/linux/imx/patches-6.6/409-6.9-arm64-dts-freescale-imx8mp-venice-gw72xx-2x-fix-.patch b/target/linux/imx/patches-6.6/409-6.9-arm64-dts-freescale-imx8mp-venice-gw72xx-2x-fix-.patch new file mode 100644 index 0000000000..2c63d7c339 --- /dev/null +++ b/target/linux/imx/patches-6.6/409-6.9-arm64-dts-freescale-imx8mp-venice-gw72xx-2x-fix-.patch @@ -0,0 +1,38 @@ +From fddb089c2ccfb8bc4bd3aba605f7eadfd9f36cfd Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Wed, 28 Feb 2024 10:22:11 -0800 +Subject: [PATCH 409/413] 6.9: arm64: dts: freescale: imx8mp-venice-gw72xx-2x: + fix USB vbus regulator + +When using usb-conn-gpio to control USB role and VBUS, the vbus-supply +property must be present in the usb-conn-gpio node. Additionally it +should not be present in the phy node as that isn't what controls vbus +and will upset the use count. + +This resolves an issue where VBUS is enabled with OTG in peripheral +mode. + +Fixes: 86c43ae03ab9 ("arm64: dts: freescale: Add imx8mp-venice-gw72xx-2x") +Signed-off-by: Tim Harvey +--- + arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi +@@ -169,7 +169,6 @@ + }; + + &usb3_phy0 { +- vbus-supply = <®_usb1_vbus>; + status = "okay"; + }; + +@@ -189,6 +188,7 @@ + pinctrl-0 = <&pinctrl_usbcon1>; + type = "micro"; + label = "otg"; ++ vbus-supply = <®_usb1_vbus>; + id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; + }; + }; diff --git a/target/linux/imx/patches-6.6/410-6.9-arm64-dts-freescale-imx8mp-venice-gw73xx-2x-fix-.patch b/target/linux/imx/patches-6.6/410-6.9-arm64-dts-freescale-imx8mp-venice-gw73xx-2x-fix-.patch new file mode 100644 index 0000000000..53851b9d1b --- /dev/null +++ b/target/linux/imx/patches-6.6/410-6.9-arm64-dts-freescale-imx8mp-venice-gw73xx-2x-fix-.patch @@ -0,0 +1,38 @@ +From 69e3ce6d0c2f518bf9574112f3d4cc619c38602c Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Wed, 28 Feb 2024 10:24:19 -0800 +Subject: [PATCH 410/413] 6.9: arm64: dts: freescale: imx8mp-venice-gw73xx-2x: + fix USB vbus regulator + +When using usb-conn-gpio to control USB role and VBUS, the vbus-supply +property must be present in the usb-conn-gpio node. Additionally it +should not be present in the phy node as that isn't what controls vbus +and will upset the use count. + +This resolves an issue where VBUS is enabled with OTG in peripheral +mode. + +Fixes: 716ced308234 ("arm64: dts: freescale: Add imx8mp-venice-gw73xx-2x") +Signed-off-by: Tim Harvey +--- + arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi +@@ -188,7 +188,6 @@ + }; + + &usb3_phy0 { +- vbus-supply = <®_usb1_vbus>; + status = "okay"; + }; + +@@ -208,6 +207,7 @@ + pinctrl-0 = <&pinctrl_usbcon1>; + type = "micro"; + label = "otg"; ++ vbus-supply = <®_usb1_vbus>; + id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; + }; + }; diff --git a/target/linux/imx/patches-6.6/411-6.10-arm64-dts-imx8mp-venice-gw74xx-add-ADC-rail-for.patch b/target/linux/imx/patches-6.6/411-6.10-arm64-dts-imx8mp-venice-gw74xx-add-ADC-rail-for.patch new file mode 100644 index 0000000000..afebad1748 --- /dev/null +++ b/target/linux/imx/patches-6.6/411-6.10-arm64-dts-imx8mp-venice-gw74xx-add-ADC-rail-for.patch @@ -0,0 +1,30 @@ +From 9d75bdd797d32c859d0dd9f54acc30de63831eb1 Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Mon, 29 Jan 2024 15:28:39 -0800 +Subject: [PATCH 411/413] 6.10: arm64: dts: imx8mp-venice-gw74xx: add ADC rail + for VDD_1P0 + +The imx8mp-venice-gw74xx revB PCB added an ADC rail for +VDD_1P0. Add it to the GSC ADC rails. + +Fixes: 531936b218d8 ("arm64: dts: imx8mp-venice-gw74xx: update to revB PCB") +Signed-off-by: Tim Harvey +--- + arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts +@@ -391,6 +391,12 @@ + label = "vdd_dram"; + }; + ++ channel@9e { ++ gw,mode = <2>; ++ reg = <0x9e>; ++ label = "vdd_1p0"; ++ }; ++ + channel@a2 { + gw,mode = <2>; + reg = <0xa2>; diff --git a/target/linux/imx/patches-6.6/412-6.10-arm64-dts-imx8mp-venice-gw72xx-add-mac-addr-for.patch b/target/linux/imx/patches-6.6/412-6.10-arm64-dts-imx8mp-venice-gw72xx-add-mac-addr-for.patch new file mode 100644 index 0000000000..567571c15e --- /dev/null +++ b/target/linux/imx/patches-6.6/412-6.10-arm64-dts-imx8mp-venice-gw72xx-add-mac-addr-for.patch @@ -0,0 +1,80 @@ +From 482fe0cb90d3376051304531a01edccac9ca1868 Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Thu, 29 Feb 2024 10:05:26 -0800 +Subject: [PATCH 412/413] 6.10: arm64: dts: imx8mp-venice-gw72xx: add mac addr + for eth1 + +Add the PCI bus topology for eth1 so that boot firmware can set the +local-mac-address property. + +The eth1 device is behind a PCI switch: + # lspci -n + 00:00.0 0604: 16c3:abcd (rev 01) + 01:00.0 0604: 12d8:b404 (rev 01) + 02:01.0 0604: 12d8:b404 (rev 01) + 02:02.0 0604: 12d8:b404 (rev 01) + 02:03.0 0604: 12d8:b404 (rev 01) + 05:00.0 0200: 11ab:4380 + # lspci -t + -[0000:00]---00.0-[01-ff]----00.0-[02-05]--+-01.0-[03]-- + +-02.0-[04]-- + \-03.0-[05]----00.0 + +Signed-off-by: Tim Harvey +--- + .../dts/freescale/imx8mp-venice-gw72xx.dtsi | 37 +++++++++++++++++++ + 1 file changed, 37 insertions(+) + +--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi +@@ -8,6 +8,10 @@ + #include + + / { ++ aliases { ++ ethernet1 = ð1; ++ }; ++ + led-controller { + compatible = "gpio-leds"; + pinctrl-names = "default"; +@@ -137,6 +141,39 @@ + pinctrl-0 = <&pinctrl_pcie0>; + reset-gpio = <&gpio4 29 GPIO_ACTIVE_LOW>; + status = "okay"; ++ ++ pcie@0,0 { ++ reg = <0x0000 0 0 0 0>; ++ device_type = "pci"; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ pcie@0,0 { ++ reg = <0x0000 0 0 0 0>; ++ device_type = "pci"; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ pcie@3,0 { ++ reg = <0x1800 0 0 0 0>; ++ device_type = "pci"; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ eth1: ethernet@0,0 { ++ reg = <0x0000 0 0 0 0>; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ local-mac-address = [00 00 00 00 00 00]; ++ }; ++ }; ++ }; ++ }; + }; + + /* GPS */ diff --git a/target/linux/imx/patches-6.6/413-6.10-arm64-dts-imx8mp-venice-gw73xx-add-mac-addr-for.patch b/target/linux/imx/patches-6.6/413-6.10-arm64-dts-imx8mp-venice-gw73xx-add-mac-addr-for.patch new file mode 100644 index 0000000000..faf9373ec3 --- /dev/null +++ b/target/linux/imx/patches-6.6/413-6.10-arm64-dts-imx8mp-venice-gw73xx-add-mac-addr-for.patch @@ -0,0 +1,82 @@ +From caac9b614ee63f875b290fda429706f6ef36e2f1 Mon Sep 17 00:00:00 2001 +From: Tim Harvey +Date: Thu, 29 Feb 2024 10:12:49 -0800 +Subject: [PATCH 413/413] 6.10: arm64: dts: imx8mp-venice-gw73xx: add mac addr + for eth1 + +Add the PCI bus topology for eth1 so that boot firmware can set the +local-mac-address property. + +The eth1 device is behind a PCI switch: + # lspci -n + 00:00.0 0604: 16c3:abcd (rev 01) + 01:00.0 0604: 12d8:2608 + 02:01.0 0604: 12d8:2608 + 02:02.0 0604: 12d8:2608 + 02:03.0 0604: 12d8:2608 + 02:04.0 0604: 12d8:2608 + c0:00.0 0200: 1055:7430 (rev 11) + # lspci -t + -[0000:00]---00.0-[01-ff]----00.0-[02-fe]--+-01.0-[03-41]-- + +-02.0-[42-80]-- + +-03.0-[81-bf]-- + \-04.0-[c0-fe]----00.0 + +Signed-off-by: Tim Harvey +--- + .../dts/freescale/imx8mp-venice-gw73xx.dtsi | 37 +++++++++++++++++++ + 1 file changed, 37 insertions(+) + +--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi ++++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi +@@ -8,6 +8,10 @@ + #include + + / { ++ aliases { ++ ethernet1 = ð1; ++ }; ++ + led-controller { + compatible = "gpio-leds"; + pinctrl-names = "default"; +@@ -149,6 +153,39 @@ + pinctrl-0 = <&pinctrl_pcie0>; + reset-gpio = <&gpio4 29 GPIO_ACTIVE_LOW>; + status = "okay"; ++ ++ pcie@0,0 { ++ reg = <0x0000 0 0 0 0>; ++ device_type = "pci"; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ pcie@0,0 { ++ reg = <0x0000 0 0 0 0>; ++ device_type = "pci"; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ pcie@4,0 { ++ reg = <0x2000 0 0 0 0>; ++ device_type = "pci"; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ eth1: ethernet@0,0 { ++ reg = <0x0000 0 0 0 0>; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ ranges; ++ ++ local-mac-address = [00 00 00 00 00 00]; ++ }; ++ }; ++ }; ++ }; + }; + + /* GPS */ From 31ec4515c3c14704d669156d87e2af5eeb5420e4 Mon Sep 17 00:00:00 2001 From: Sean Khan Date: Sat, 8 Jun 2024 21:02:30 -0400 Subject: [PATCH 13/31] openssl: conditionally disable engine section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, the build option to enable/disable engine support isn't reflected in the final '/etc/ssl/openssl.cnf' config. It assumes `engines` is always enabled, producing an error whenever running any commands in openssl util or programs that explicitly use settings from '/etc/ssl/openssl.cnf'. ``` ➤ openssl version FATAL: Startup failure (dev note: apps_startup()) for openssl 307D1EA97F000000:error:12800067:lib(37):dlfcn_load:reason(103):crypto/dso/dso_dlfcn.c:118:filename(libengines.so): Error loading shared library libengines.so: No such file or directory 307D1EA97F000000:error:12800067:lib(37):DSO_load:reason(103):crypto/dso/dso_lib.c:152: 307D1EA97F000000:error:0700006E:lib(14):module_load_dso:reason(110):crypto/conf/conf_mod.c:321:module=engines, path=engines 307D1EA97F000000:error:07000071:lib(14):module_run:reason(113):crypto/conf/conf_mod.c:266:module=engines ``` Build should check for the `CONFIG_OPENSSL_ENGINE` option, and comment out `engines` if not explicitly enabled. Example: ``` [openssl_init] providers = provider_sect ``` After this change, openssl util works correctly. ``` ➤ openssl version OpenSSL 3.0.14 4 Jun 2024 (Library: OpenSSL 3.0.14 4 Jun 2024) ``` Signed-off-by: Sean Khan Link: https://github.com/openwrt/openwrt/pull/15661 Signed-off-by: Robert Marko --- package/libs/openssl/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile index b134839bb6..82784dddde 100644 --- a/package/libs/openssl/Makefile +++ b/package/libs/openssl/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=openssl PKG_VERSION:=3.0.14 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto PKG_BUILD_PARALLEL:=1 @@ -416,6 +416,8 @@ define Package/libopenssl-conf/install $(INSTALL_BIN) ./files/openssl.init $(1)/etc/init.d/openssl $(SED) 's!%ENGINES_DIR%!/usr/lib/$(ENGINES_DIR)!' $(1)/etc/init.d/openssl touch $(1)/etc/config/openssl + $(if $(CONFIG_OPENSSL_ENGINE),, + $(SED) 's!engines = engines_sect!#&!' $(1)/etc/ssl/openssl.cnf) $(if $(CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO), $(CP) ./files/devcrypto.cnf $(1)/etc/ssl/modules.cnf.d/ echo -e "config engine 'devcrypto'\n\toption enabled '1'\n\toption builtin '1'" >> $(1)/etc/config/openssl) From 832e2f6dd0ca356c2b349e3384979602ef76f927 Mon Sep 17 00:00:00 2001 From: John Audia Date: Fri, 21 Jun 2024 10:02:58 -0400 Subject: [PATCH 14/31] kernel: bump 6.6 to 6.6.35 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.35 Removed upstreamed: bcm27xx/patches-6.6/950-1135-ax25-Fix-refcount-imbalance-on-inbound-connections.patch[1] Removed no longer needed: generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch[2] All other patches automatically rebased. Build system: x86/64 Build-tested: x86/64/AMD Cezanne, flogic/glinet_gl-mt6000, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Run-tested: x86/64/AMD Cezanne, flogic/glinet_gl-mt6000, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.35&id=52100fd74ad07b53a4666feafff1cd11436362d3 2. As suggested by @DragonBluep, "This patch can be removed. It will never return false. And the upstream commit should fix the same issue: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit?h=v6.6.35&id=924f7bbfc5cfd029e417c56357ca01eae681fba6" Signed-off-by: John Audia --- include/kernel-6.6 | 4 +- ...ci-add-quirk-for-host-controllers-th.patch | 2 +- ...ore-event-ring-segment-table-entries.patch | 2 +- ...-quirks-add-link-TRB-quirk-for-VL805.patch | 4 +- ...upstream-TRB_FETCH-quirk-on-VL805-ho.patch | 2 +- ...b-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch | 4 +- ...5-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch | 12 +-- ...unt-imbalance-on-inbound-connections.patch | 85 ------------------- ...support-for-performing-fake-doorbell.patch | 2 +- .../generic/hack-6.6/204-module_strip.patch | 12 +-- .../790-SFP-GE-T-ignore-TX_FAULT.patch | 4 +- ...ng-with-source-address-failed-policy.patch | 18 ++-- ...-t-learn-non-unicast-L2-destinations.patch | 30 ------- ...are-qcom_scm-disable-SDI-if-required.patch | 2 +- ...qcom_scm-Clear-download-bit-during-r.patch | 2 +- 15 files changed, 35 insertions(+), 150 deletions(-) delete mode 100644 target/linux/bcm27xx/patches-6.6/950-1135-ax25-Fix-refcount-imbalance-on-inbound-connections.patch delete mode 100644 target/linux/generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch diff --git a/include/kernel-6.6 b/include/kernel-6.6 index b7e602675d..1d73f76874 100644 --- a/include/kernel-6.6 +++ b/include/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .34 -LINUX_KERNEL_HASH-6.6.34 = c4e0ec8f593aa3717e85abad940466e7d7cbc362989426eb37f499330a461ba0 +LINUX_VERSION-6.6 = .35 +LINUX_KERNEL_HASH-6.6.35 = fce3ee728712ed063aa8c14a8756c8ff8c7a46ba3827f61d2b04a73c7cf5dd9e diff --git a/target/linux/bcm27xx/patches-6.6/950-0061-Revert-Revert-xhci-add-quirk-for-host-controllers-th.patch b/target/linux/bcm27xx/patches-6.6/950-0061-Revert-Revert-xhci-add-quirk-for-host-controllers-th.patch index 7876818c39..cbaf6ac1e2 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0061-Revert-Revert-xhci-add-quirk-for-host-controllers-th.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0061-Revert-Revert-xhci-add-quirk-for-host-controllers-th.patch @@ -14,7 +14,7 @@ We don't agree with upstream revert so undo it. --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -479,8 +479,10 @@ static void xhci_pci_quirks(struct devic +@@ -486,8 +486,10 @@ static void xhci_pci_quirks(struct devic pdev->device == 0x3432) xhci->quirks |= XHCI_BROKEN_STREAMS; diff --git a/target/linux/bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch b/target/linux/bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch index a454300558..f9fa454aeb 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch @@ -52,7 +52,7 @@ Signed-off-by: Jonathan Bell erst_base = xhci_read_64(xhci, &ir->ir_set->erst_base); --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1679,8 +1679,9 @@ struct urb_priv { +@@ -1680,8 +1680,9 @@ struct urb_priv { * Each segment table entry is 4*32bits long. 1K seems like an ok size: * (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table, * meaning 64 ring segments. diff --git a/target/linux/bcm27xx/patches-6.6/950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/target/linux/bcm27xx/patches-6.6/950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch index 344e206df6..65d04a01ee 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch @@ -24,7 +24,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -482,6 +482,7 @@ static void xhci_pci_quirks(struct devic +@@ -489,6 +489,7 @@ static void xhci_pci_quirks(struct devic if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; @@ -52,7 +52,7 @@ Signed-off-by: Jonathan Bell addr = xhci_trb_virt_to_dma(new_seg, new_deq); --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1914,6 +1914,9 @@ struct xhci_hcd { +@@ -1915,6 +1915,9 @@ struct xhci_hcd { #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45) #define XHCI_ZHAOXIN_HOST BIT_ULL(46) diff --git a/target/linux/bcm27xx/patches-6.6/950-0483-usb-xhci-borrow-upstream-TRB_FETCH-quirk-on-VL805-ho.patch b/target/linux/bcm27xx/patches-6.6/950-0483-usb-xhci-borrow-upstream-TRB_FETCH-quirk-on-VL805-ho.patch index 488629c334..fa7a10e316 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0483-usb-xhci-borrow-upstream-TRB_FETCH-quirk-on-VL805-ho.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0483-usb-xhci-borrow-upstream-TRB_FETCH-quirk-on-VL805-ho.patch @@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -483,6 +483,7 @@ static void xhci_pci_quirks(struct devic +@@ -490,6 +490,7 @@ static void xhci_pci_quirks(struct devic xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; diff --git a/target/linux/bcm27xx/patches-6.6/950-0484-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch b/target/linux/bcm27xx/patches-6.6/950-0484-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch index 766b4f5bf1..ef0ef47969 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0484-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0484-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch @@ -90,7 +90,7 @@ Signed-off-by: Jonathan Bell /* Allow 3 retries for everything but isoc, set CErr = 3 */ --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -484,6 +484,7 @@ static void xhci_pci_quirks(struct devic +@@ -491,6 +491,7 @@ static void xhci_pci_quirks(struct devic xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH; @@ -100,7 +100,7 @@ Signed-off-by: Jonathan Bell if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1916,6 +1916,7 @@ struct xhci_hcd { +@@ -1917,6 +1917,7 @@ struct xhci_hcd { /* Downstream VLI fixes */ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56) diff --git a/target/linux/bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch b/target/linux/bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch index 97c88f8231..e1846dc8f5 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch @@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell /* Device for a quirk */ #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73 #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000 -@@ -290,6 +292,16 @@ static int xhci_pci_reinit(struct xhci_h +@@ -291,6 +293,16 @@ static int xhci_pci_reinit(struct xhci_h return 0; } @@ -64,7 +64,7 @@ Signed-off-by: Jonathan Bell static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) { struct pci_dev *pdev = to_pci_dev(dev); -@@ -485,6 +497,8 @@ static void xhci_pci_quirks(struct devic +@@ -492,6 +504,8 @@ static void xhci_pci_quirks(struct devic xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH; xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG; @@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3626,6 +3626,48 @@ static int xhci_align_td(struct xhci_hcd +@@ -3657,6 +3657,48 @@ static int xhci_align_td(struct xhci_hcd return 1; } @@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell /* This is very similar to what ehci-q.c qtd_fill() does */ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, struct urb *urb, int slot_id, unsigned int ep_index) -@@ -3782,6 +3824,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3813,6 +3855,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * } check_trb_math(urb, enqd_len); @@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id, start_cycle, start_trb); return 0; -@@ -3917,6 +3961,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3948,6 +3992,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * /* Event on completion */ field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state); @@ -144,7 +144,7 @@ Signed-off-by: Jonathan Bell return 0; --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1917,6 +1917,7 @@ struct xhci_hcd { +@@ -1918,6 +1918,7 @@ struct xhci_hcd { /* Downstream VLI fixes */ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56) #define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(57) diff --git a/target/linux/bcm27xx/patches-6.6/950-1135-ax25-Fix-refcount-imbalance-on-inbound-connections.patch b/target/linux/bcm27xx/patches-6.6/950-1135-ax25-Fix-refcount-imbalance-on-inbound-connections.patch deleted file mode 100644 index da945d2d05..0000000000 --- a/target/linux/bcm27xx/patches-6.6/950-1135-ax25-Fix-refcount-imbalance-on-inbound-connections.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 333b34fa4845022d563e83f01a60af0abd080679 Mon Sep 17 00:00:00 2001 -From: Lars Kellogg-Stedman -Date: Wed, 29 May 2024 17:02:43 -0400 -Subject: [PATCH 1135/1135] ax25: Fix refcount imbalance on inbound connections - -commit 3c34fb0bd4a4237592c5ecb5b2e2531900c55774 upstream. - -When releasing a socket in ax25_release(), we call netdev_put() to -decrease the refcount on the associated ax.25 device. However, the -execution path for accepting an incoming connection never calls -netdev_hold(). This imbalance leads to refcount errors, and ultimately -to kernel crashes. - -A typical call trace for the above situation will start with one of the -following errors: - - refcount_t: decrement hit 0; leaking memory. - refcount_t: underflow; use-after-free. - -And will then have a trace like: - - Call Trace: - - ? show_regs+0x64/0x70 - ? __warn+0x83/0x120 - ? refcount_warn_saturate+0xb2/0x100 - ? report_bug+0x158/0x190 - ? prb_read_valid+0x20/0x30 - ? handle_bug+0x3e/0x70 - ? exc_invalid_op+0x1c/0x70 - ? asm_exc_invalid_op+0x1f/0x30 - ? refcount_warn_saturate+0xb2/0x100 - ? refcount_warn_saturate+0xb2/0x100 - ax25_release+0x2ad/0x360 - __sock_release+0x35/0xa0 - sock_close+0x19/0x20 - [...] - -On reboot (or any attempt to remove the interface), the kernel gets -stuck in an infinite loop: - - unregister_netdevice: waiting for ax0 to become free. Usage count = 0 - -This patch corrects these issues by ensuring that we call netdev_hold() -and ax25_dev_hold() for new connections in ax25_accept(). This makes the -logic leading to ax25_accept() match the logic for ax25_bind(): in both -cases we increment the refcount, which is ultimately decremented in -ax25_release(). - -Fixes: 9fd75b66b8f6 ("ax25: Fix refcount leaks caused by ax25_cb_del()") -Signed-off-by: Lars Kellogg-Stedman -Tested-by: Duoming Zhou -Tested-by: Dan Cross -Tested-by: Chris Maness -Reviewed-by: Dan Carpenter -Link: https://lore.kernel.org/r/20240529210242.3346844-2-lars@oddbit.com -Signed-off-by: Jakub Kicinski ---- - net/ax25/af_ax25.c | 6 ++++++ - 1 file changed, 6 insertions(+) - ---- a/net/ax25/af_ax25.c -+++ b/net/ax25/af_ax25.c -@@ -1378,8 +1378,10 @@ static int ax25_accept(struct socket *so - { - struct sk_buff *skb; - struct sock *newsk; -+ ax25_dev *ax25_dev; - DEFINE_WAIT(wait); - struct sock *sk; -+ ax25_cb *ax25; - int err = 0; - - if (sock->state != SS_UNCONNECTED) -@@ -1434,6 +1436,10 @@ static int ax25_accept(struct socket *so - kfree_skb(skb); - sk_acceptq_removed(sk); - newsock->state = SS_CONNECTED; -+ ax25 = sk_to_ax25(newsk); -+ ax25_dev = ax25->ax25_dev; -+ netdev_hold(ax25_dev->dev, &ax25->dev_tracker, GFP_ATOMIC); -+ ax25_dev_hold(ax25_dev); - - out: - release_sock(sk); diff --git a/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch index 8b2f86de01..eb6317a2d1 100644 --- a/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch +++ b/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch @@ -103,7 +103,7 @@ it on BCM4708 family. if (xhci->quirks & XHCI_NEC_HOST) --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1912,6 +1912,7 @@ struct xhci_hcd { +@@ -1913,6 +1913,7 @@ struct xhci_hcd { #define XHCI_RESET_TO_DEFAULT BIT_ULL(44) #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45) #define XHCI_ZHAOXIN_HOST BIT_ULL(46) diff --git a/target/linux/generic/hack-6.6/204-module_strip.patch b/target/linux/generic/hack-6.6/204-module_strip.patch index 8619c29073..403ee11513 100644 --- a/target/linux/generic/hack-6.6/204-module_strip.patch +++ b/target/linux/generic/hack-6.6/204-module_strip.patch @@ -141,7 +141,7 @@ Signed-off-by: Felix Fietkau if (err) --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c -@@ -1692,7 +1692,9 @@ static void read_symbols(const char *mod +@@ -1693,7 +1693,9 @@ static void read_symbols(const char *mod symname = remove_dot(info.strtab + sym->st_name); handle_symbol(mod, &info, sym, symname); @@ -151,7 +151,7 @@ Signed-off-by: Felix Fietkau } check_sec_ref(mod, &info); -@@ -1865,8 +1867,10 @@ static void add_header(struct buffer *b, +@@ -1866,8 +1868,10 @@ static void add_header(struct buffer *b, buf_printf(b, "BUILD_SALT;\n"); buf_printf(b, "BUILD_LTO_INFO;\n"); buf_printf(b, "\n"); @@ -162,7 +162,7 @@ Signed-off-by: Felix Fietkau buf_printf(b, "\n"); buf_printf(b, "__visible struct module __this_module\n"); buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n"); -@@ -1880,8 +1884,10 @@ static void add_header(struct buffer *b, +@@ -1881,8 +1885,10 @@ static void add_header(struct buffer *b, buf_printf(b, "\t.arch = MODULE_ARCH_INIT,\n"); buf_printf(b, "};\n"); @@ -173,7 +173,7 @@ Signed-off-by: Felix Fietkau buf_printf(b, "\n" -@@ -1889,8 +1895,10 @@ static void add_header(struct buffer *b, +@@ -1890,8 +1896,10 @@ static void add_header(struct buffer *b, "MODULE_INFO(retpoline, \"Y\");\n" "#endif\n"); @@ -184,7 +184,7 @@ Signed-off-by: Felix Fietkau if (strstarts(mod->name, "tools/testing")) buf_printf(b, "\nMODULE_INFO(test, \"Y\");\n"); -@@ -2000,11 +2008,13 @@ static void add_depends(struct buffer *b +@@ -2001,11 +2009,13 @@ static void add_depends(struct buffer *b static void add_srcversion(struct buffer *b, struct module *mod) { @@ -198,7 +198,7 @@ Signed-off-by: Felix Fietkau } static void write_buf(struct buffer *b, const char *fname) -@@ -2087,7 +2097,9 @@ static void write_mod_c_file(struct modu +@@ -2088,7 +2098,9 @@ static void write_mod_c_file(struct modu add_exported_symbols(&buf, mod); add_versions(&buf, mod); add_depends(&buf, mod); diff --git a/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch b/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch index d48f382ce5..a4d84f8b7d 100644 --- a/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch +++ b/target/linux/generic/hack-6.6/790-SFP-GE-T-ignore-TX_FAULT.patch @@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle // Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report // 2500MBd NRZ in their EEPROM SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex), -@@ -2587,7 +2590,8 @@ static void sfp_sm_main(struct sfp *sfp, +@@ -2586,7 +2589,8 @@ static void sfp_sm_main(struct sfp *sfp, * or t_start_up, so assume there is a fault. */ sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT, @@ -46,7 +46,7 @@ Signed-off-by: Daniel Golle } else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) { init_done: /* Create mdiobus and start trying for PHY */ -@@ -2841,10 +2845,12 @@ static void sfp_check_state(struct sfp * +@@ -2840,10 +2844,12 @@ static void sfp_check_state(struct sfp * mutex_lock(&sfp->st_mutex); state = sfp_get_state(sfp); changed = state ^ sfp->state; diff --git a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 334460f9e6..77a16bad9a 100644 --- a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski case RTN_THROW: case RTN_UNREACHABLE: default: -@@ -4543,6 +4562,17 @@ static int ip6_pkt_prohibit_out(struct n +@@ -4544,6 +4563,17 @@ static int ip6_pkt_prohibit_out(struct n return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -5034,7 +5064,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -5035,7 +5065,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -6281,6 +6312,8 @@ static int ip6_route_dev_notify(struct n +@@ -6282,6 +6313,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -6292,6 +6325,7 @@ static int ip6_route_dev_notify(struct n +@@ -6293,6 +6326,7 @@ static int ip6_route_dev_notify(struct n in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); #ifdef CONFIG_IPV6_MULTIPLE_TABLES in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); #endif } -@@ -6492,6 +6526,8 @@ static int __net_init ip6_route_net_init +@@ -6493,6 +6527,8 @@ static int __net_init ip6_route_net_init #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.fib6_has_custom_rules = false; @@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, sizeof(*net->ipv6.ip6_prohibit_entry), GFP_KERNEL); -@@ -6502,11 +6538,21 @@ static int __net_init ip6_route_net_init +@@ -6503,11 +6539,21 @@ static int __net_init ip6_route_net_init ip6_template_metrics, true); INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached); @@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); -@@ -6533,6 +6579,8 @@ out: +@@ -6534,6 +6580,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -6552,6 +6600,7 @@ static void __net_exit ip6_route_net_exi +@@ -6553,6 +6601,7 @@ static void __net_exit ip6_route_net_exi kfree(net->ipv6.ip6_null_entry); #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); @@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski kfree(net->ipv6.ip6_blk_hole_entry); #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); -@@ -6635,6 +6684,9 @@ void __init ip6_route_init_special_entri +@@ -6636,6 +6685,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch b/target/linux/generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch deleted file mode 100644 index 551855a229..0000000000 --- a/target/linux/generic/pending-6.6/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 3f1a227cb071f65f6ecc4db9f399649869735a7c Mon Sep 17 00:00:00 2001 -From: David Bauer -Date: Sat, 17 Feb 2024 22:34:59 +0100 -Subject: [PATCH] net vxlan: don't learn non-unicast L2 destinations - -This patch avoids learning non-unicast targets in the vxlan FDB. -They are non-unicast and thus should be sent to the broadcast-IPv6 -instead of a unicast address. - -Link: https://lore.kernel.org/netdev/15ee0cc7-9252-466b-8ce7-5225d605dde8@david-bauer.net/ -Link: https://github.com/freifunk-gluon/gluon/issues/3191 - -Signed-off-by: David Bauer ---- - drivers/net/vxlan.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/drivers/net/vxlan/vxlan_core.c -+++ b/drivers/net/vxlan/vxlan_core.c -@@ -1446,6 +1446,10 @@ static bool vxlan_snoop(struct net_devic - struct vxlan_fdb *f; - u32 ifindex = 0; - -+ /* Don't learn broadcast packets */ -+ if (is_multicast_ether_addr(src_mac) || is_zero_ether_addr(src_mac)) -+ return false; -+ - #if IS_ENABLED(CONFIG_IPV6) - if (src_ip->sa.sa_family == AF_INET6 && - (ipv6_addr_type(&src_ip->sin6.sin6_addr) & IPV6_ADDR_LINKLOCAL)) diff --git a/target/linux/ipq40xx/patches-6.6/004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch b/target/linux/ipq40xx/patches-6.6/004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch index a296d8c9a2..9df758ae1b 100644 --- a/target/linux/ipq40xx/patches-6.6/004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch +++ b/target/linux/ipq40xx/patches-6.6/004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch @@ -57,7 +57,7 @@ Signed-off-by: Bjorn Andersson static int __qcom_scm_set_dload_mode(struct device *dev, bool enable) { struct qcom_scm_desc desc = { -@@ -1467,6 +1490,13 @@ static int qcom_scm_probe(struct platfor +@@ -1473,6 +1496,13 @@ static int qcom_scm_probe(struct platfor __get_convention(); diff --git a/target/linux/ipq40xx/patches-6.6/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch b/target/linux/ipq40xx/patches-6.6/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch index 8cb424c050..26cd0e0309 100644 --- a/target/linux/ipq40xx/patches-6.6/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch +++ b/target/linux/ipq40xx/patches-6.6/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch @@ -15,7 +15,7 @@ Signed-off-by: Robert Marko --- a/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c -@@ -1522,7 +1522,8 @@ static int qcom_scm_probe(struct platfor +@@ -1528,7 +1528,8 @@ static int qcom_scm_probe(struct platfor static void qcom_scm_shutdown(struct platform_device *pdev) { /* Clean shutdown, disable download mode to allow normal restart */ From f864b83b1dffaf4e4fcba4abf0142146975af4a9 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Sat, 22 Jun 2024 00:58:39 -0400 Subject: [PATCH 15/31] tools/fakeroot: fix check for whether to wrap time64 functions Fakeroot uses an egrep configure check to look for the string "time64" within a preprocessed include of the sys/stat.h header in order to decide whether or not to create declarations and internal functions used for wrapping the native functions stat64_time64 fstat64_time64 lstat64_time64 and fstatat64_time64. On specific older versions of glibc these functions are not included, but there are some references to "time64" unrelated to functions, like aliasing the time64_t typedef to the standard time_t typedef when the size of a word is 64 bits or defining it if not. In this case, a grep for "stat64" of the preprocessed sys/stat.h header matches nothing, however, the grep for "time64" in the configure check of the preprocessed sys/stat.h header matches a line that has nothing to do with the functions that will be wrapped as a result of successful matching. __extension__ typedef __int64_t __time64_t; This causes the attempt to wrap the functions to occur, which fails due to some of the corresponding macros being empty since the native declarations they are based on do not exist, causing a common error claiming that a part of the syntax is missing. error: expected '=', ',', ';', 'asm' or '__attribute__' before ... Fix this by making the testing regular expression more complex in order to match actual function names ending in "_time64" with or without a set of preceding underscores, but none after. Signed-off-by: Michael Pratt Link: https://github.com/openwrt/openwrt/pull/15773 Signed-off-by: Robert Marko --- tools/fakeroot/patches/300-time64-hack.patch | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 tools/fakeroot/patches/300-time64-hack.patch diff --git a/tools/fakeroot/patches/300-time64-hack.patch b/tools/fakeroot/patches/300-time64-hack.patch new file mode 100644 index 0000000000..540724fb5a --- /dev/null +++ b/tools/fakeroot/patches/300-time64-hack.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -386,7 +386,7 @@ dnl Digital Unix: stat + time64_hack=no + AH_TEMPLATE([TIME64_HACK], [time64 shuffle]) + AC_MSG_CHECKING([if we need to cope with time64]) +-AC_EGREP_CPP([time64],[ ++AC_EGREP_CPP([_*[a-z0-9]+_time64[^_]],[ + #include + #if __WORDSIZE == 32 + #define __USE_TIME_BITS64 1 From 0ed72c271b13078d2daff45349368ed80d4a1fd5 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Sat, 22 Jun 2024 21:57:23 +0200 Subject: [PATCH 16/31] uml: fix glibc-static check with GCC14 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Running the glibc-static check with GCC14 as the host compiler will fail: Please install a static glibc package. (Missing libutil.a, librt.a or libpthread.a) However, this error will get printed even with the required static libraries installed when GCC14 is used. Manually running the check exposes the real error: : In function ‘main’: :1:45: error: implicit declaration of function ‘timer_gettime’ [-Wimplicit-function-declaration] GCC14 now errors on implicit declarations by default, so lets add the required time.h header to fix compilation and thus the check. Link: https://github.com/openwrt/openwrt/pull/15778 Signed-off-by: Robert Marko --- target/linux/uml/image/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/uml/image/Makefile b/target/linux/uml/image/Makefile index 45ab0cfbcd..f00ccab0e4 100644 --- a/target/linux/uml/image/Makefile +++ b/target/linux/uml/image/Makefile @@ -30,4 +30,4 @@ $(eval $(call BuildImage)) $(eval $(call TestHostCommand,glibc-static, \ Please install a static glibc package. (Missing libutil.a, librt.a or libpthread.a), \ echo 'int main(int argc, char **argv) { login(0); timer_gettime(0, 0); return 0; }' | \ - gcc -include utmp.h -x c -o $(TMP_DIR)/a.out - -static -lutil -lrt)) + gcc -include utmp.h -include time.h -x c -o $(TMP_DIR)/a.out - -static -lutil -lrt)) From 98793e02f7e2f4e212edb12dcedd1afe62802dce Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Thu, 20 Jun 2024 15:15:41 +0100 Subject: [PATCH 17/31] kernel: catch up rxrpc New dependencies required for the module to be useful, and correct IPv6 support Signed-off-by: Nathaniel Wesley Filardo Link: https://github.com/openwrt/openwrt/pull/15761 Signed-off-by: Robert Marko --- package/kernel/linux/modules/netsupport.mk | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk index 0ee58fada4..e56defad38 100644 --- a/package/kernel/linux/modules/netsupport.mk +++ b/package/kernel/linux/modules/netsupport.mk @@ -1297,13 +1297,20 @@ define KernelPackage/rxrpc HIDDEN:=1 KCONFIG:= \ CONFIG_AF_RXRPC \ - CONFIG_RXKAD=m \ + CONFIG_AF_RXRPC_IPV6=y \ + CONFIG_RXKAD \ CONFIG_AF_RXRPC_DEBUG=n FILES:= \ $(LINUX_DIR)/net/rxrpc/rxrpc.ko - AUTOLOAD:=$(call AutoLoad,30,rxrpc.ko) - DEPENDS:= +kmod-crypto-manager +kmod-crypto-pcbc +kmod-crypto-fcrypt \ - +kmod-udptunnel4 +kmod-udptunnel6 + AUTOLOAD:=$(call AutoLoad,30,rxrpc) + DEPENDS:= \ + +kmod-crypto-fcrypt \ + +kmod-crypto-hmac \ + +kmod-crypto-manager \ + +kmod-crypto-md5 \ + +kmod-crypto-pcbc \ + +kmod-udptunnel4 \ + +IPV6:kmod-udptunnel6 endef define KernelPackage/rxrpc/description From 7d71c03ab188a58d74d6cdbeabb38b70ead2c74b Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Thu, 20 Jun 2024 15:15:50 +0100 Subject: [PATCH 18/31] kernel: crypto: remove FCRYPT from miscellany It has its own dedicated knob Signed-off-by: Nathaniel Wesley Filardo Link: https://github.com/openwrt/openwrt/pull/15761 Signed-off-by: Robert Marko --- package/kernel/linux/modules/crypto.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk index 638182d712..5f5bb62986 100644 --- a/package/kernel/linux/modules/crypto.mk +++ b/package/kernel/linux/modules/crypto.mk @@ -752,7 +752,6 @@ define KernelPackage/crypto-misc CONFIG_CRYPTO_CAMELLIA \ CONFIG_CRYPTO_CAST5 \ CONFIG_CRYPTO_CAST6 \ - CONFIG_CRYPTO_FCRYPT \ CONFIG_CRYPTO_KHAZAD \ CONFIG_CRYPTO_SERPENT \ CONFIG_CRYPTO_TEA \ From 4468c2f4bd054be02f91d68ab42f9f08e79d199e Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Mon, 18 Mar 2024 10:51:21 +1100 Subject: [PATCH 19/31] kernel/armsr: disable NXP i.MX9 PMU related option This PMU (performance management unit) related kernel option can appear under certain kernel configurations (such as KVM being enabled). Disable them, as we do with other PMU-related options. Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.6 | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/armsr/armv8/config-6.6 b/target/linux/armsr/armv8/config-6.6 index aa5774a7b6..720af27da6 100644 --- a/target/linux/armsr/armv8/config-6.6 +++ b/target/linux/armsr/armv8/config-6.6 @@ -320,6 +320,7 @@ CONFIG_FRAME_POINTER=y # CONFIG_FSL_DPAA2_QDMA is not set CONFIG_FSL_ERRATUM_A008585=y # CONFIG_FSL_IMX8_DDR_PMU is not set +# CONFIG_FSL_IMX9_DDR_PMU is not set # CONFIG_FSL_PQ_MDIO is not set CONFIG_FUJITSU_ERRATUM_010001=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y From ea7383e7215c36e47a769f34c57aa458300b8bc2 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Sun, 26 May 2024 14:12:58 +1000 Subject: [PATCH 20/31] armsr: enable framebuffer emulation for virtio-gpu/drm displays This was discovered when trying to run OpenWrt on Hetzner Cloud's Arm-based instances. Hetzner uses QEMU/KVM with virtio-gpu as the main display device, together with an ACPI firmware. This was not displaying a console previously. This setup can be emulated by qemu using options below: qemu-system-aarch64 \ -machine virt \ -bios QEMU_EFI.fd \ -device virtio-gpu \ -usb \ -device qemu-xhci,id=xhci \ -device usb-tablet,bus=xhci.0 \ -device usb-kbd,bus=xhci.0 \ -vnc :0 Signed-off-by: Mathew McBride --- target/linux/armsr/config-6.6 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/linux/armsr/config-6.6 b/target/linux/armsr/config-6.6 index 8b4f291c9f..304602ebbd 100644 --- a/target/linux/armsr/config-6.6 +++ b/target/linux/armsr/config-6.6 @@ -105,6 +105,9 @@ CONFIG_DMA_REMAP=y CONFIG_DMI=y CONFIG_DMIID=y CONFIG_DMI_SYSFS=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_LOAD_EDID_FIRMWARE=y CONFIG_DTC=y CONFIG_EDAC_SUPPORT=y CONFIG_EFI=y From 8ef5d561212be86a2c68e1189e48bdfa3cdd6f5e Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Wed, 29 May 2024 09:04:13 +1000 Subject: [PATCH 21/31] armsr: armv8: enable NXP i.MX8MQ/P USB phy Support for 'fsl,imx8mq-usb-phy' is needed for USB to work on NXP i.MX8MQ and i.MX8MP platforms. Tested with a Google Coral "Phanbell" board. Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.6 | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/armsr/armv8/config-6.6 b/target/linux/armsr/armv8/config-6.6 index 720af27da6..3ce25c60d8 100644 --- a/target/linux/armsr/armv8/config-6.6 +++ b/target/linux/armsr/armv8/config-6.6 @@ -530,6 +530,7 @@ CONFIG_PHY_BCM_SR_PCIE=y CONFIG_PHY_BCM_SR_USB=y CONFIG_PHY_BRCM_SATA=y CONFIG_PHY_BRCM_USB=y +CONFIG_PHY_FSL_IMX8MQ_USB=y CONFIG_PHY_FSL_IMX8M_PCIE=y # CONFIG_PHY_FSL_LYNX_28G is not set CONFIG_PHY_HI3660_USB=y From bcbdde00c3a81a53d11ddc6101517185ae426691 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Wed, 29 May 2024 09:09:17 +1000 Subject: [PATCH 22/31] armsr: add realtek and smsc ethernet phy drivers to the default image This adds two more common PHY brands to the image. Realtek is used on the Google Coral "Phanbell" board (i.MX8MQ). SMSC has been used on various Raspberry Pi boards. Signed-off-by: Mathew McBride --- target/linux/armsr/image/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/linux/armsr/image/Makefile b/target/linux/armsr/image/Makefile index aec5d0a8c9..7d04a2e8f6 100644 --- a/target/linux/armsr/image/Makefile +++ b/target/linux/armsr/image/Makefile @@ -108,7 +108,8 @@ define Device/generic kmod-fsl-enetc-net kmod-dwmac-imx kmod-fsl-fec kmod-thunderx-net \ kmod-dwmac-rockchip kmod-dwmac-sun8i kmod-phy-aquantia kmod-phy-broadcom \ kmod-phy-marvell kmod-phy-marvell-10g kmod-sfp kmod-atlantic \ - kmod-bcmgenet kmod-octeontx2-net kmod-renesas-net-avb + kmod-bcmgenet kmod-octeontx2-net kmod-renesas-net-avb \ + kmod-phy-realtek kmod-phy-smsc endef TARGET_DEVICES += generic From ed6935613effcac8a13c3941d92c679b1a3c8a79 Mon Sep 17 00:00:00 2001 From: Zxl hhyccc Date: Sat, 22 Jun 2024 13:50:31 +0800 Subject: [PATCH 23/31] kernel: bump 6.1 to 6.1.95 https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.95 Removed upstreamed: generic/pending-6.1/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch reference: This patch can be removed. It will never return false. And the upstream commit should fix the same issue: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.95&id=a31d0e5deb1abe7c57c6457ae2502f278063126e All other patches automatically rebased. Build system: Kirkwood bcm53xx Signed-off-by: Zxl hhyccc --- include/kernel-6.1 | 4 +-- ...support-for-performing-fake-doorbell.patch | 2 +- ...-support-for-setting-signalling-rate.patch | 4 +-- .../790-SFP-GE-T-ignore-TX_FAULT.patch | 4 +-- .../generic/hack-6.1/902-debloat_proc.patch | 2 +- ...ng-with-source-address-failed-policy.patch | 18 +++++------ ...-t-learn-non-unicast-L2-destinations.patch | 30 ------------------- ...dd-starfive-jh7100-hsuart-compatible.patch | 2 +- 8 files changed, 18 insertions(+), 48 deletions(-) delete mode 100644 target/linux/generic/pending-6.1/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch diff --git a/include/kernel-6.1 b/include/kernel-6.1 index 4634403e51..93a76f81fe 100644 --- a/include/kernel-6.1 +++ b/include/kernel-6.1 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.1 = .94 -LINUX_KERNEL_HASH-6.1.94 = 38ea71ad22ae0187fd8ee5ff879b33b0d9bd58161ac9a3e868ae0b4c66b95369 +LINUX_VERSION-6.1 = .95 +LINUX_KERNEL_HASH-6.1.95 = 2960f0aa1d75665f39114ad3c272a999c54796e553a2355d0379f5188d14dfbd diff --git a/target/linux/bcm53xx/patches-6.1/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-6.1/180-usb-xhci-add-support-for-performing-fake-doorbell.patch index 9c769880a0..ac5a48283d 100644 --- a/target/linux/bcm53xx/patches-6.1/180-usb-xhci-add-support-for-performing-fake-doorbell.patch +++ b/target/linux/bcm53xx/patches-6.1/180-usb-xhci-add-support-for-performing-fake-doorbell.patch @@ -108,7 +108,7 @@ it on BCM4708 family. if (xhci->quirks & XHCI_NEC_HOST) --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1907,6 +1907,7 @@ struct xhci_hcd { +@@ -1908,6 +1908,7 @@ struct xhci_hcd { #define XHCI_RESET_TO_DEFAULT BIT_ULL(44) #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45) #define XHCI_ZHAOXIN_HOST BIT_ULL(46) diff --git a/target/linux/generic/backport-6.1/715-16-v6.5-net-sfp-add-support-for-setting-signalling-rate.patch b/target/linux/generic/backport-6.1/715-16-v6.5-net-sfp-add-support-for-setting-signalling-rate.patch index 79de6122b7..f9670539fc 100644 --- a/target/linux/generic/backport-6.1/715-16-v6.5-net-sfp-add-support-for-setting-signalling-rate.patch +++ b/target/linux/generic/backport-6.1/715-16-v6.5-net-sfp-add-support-for-setting-signalling-rate.patch @@ -96,7 +96,7 @@ Signed-off-by: Jakub Kicinski * --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -2474,6 +2474,10 @@ static void sfp_stop(struct sfp *sfp) +@@ -2473,6 +2473,10 @@ static void sfp_stop(struct sfp *sfp) sfp_sm_event(sfp, SFP_E_DEV_DOWN); } @@ -107,7 +107,7 @@ Signed-off-by: Jakub Kicinski static int sfp_module_info(struct sfp *sfp, struct ethtool_modinfo *modinfo) { /* locking... and check module is present */ -@@ -2552,6 +2556,7 @@ static const struct sfp_socket_ops sfp_m +@@ -2551,6 +2555,7 @@ static const struct sfp_socket_ops sfp_m .detach = sfp_detach, .start = sfp_start, .stop = sfp_stop, diff --git a/target/linux/generic/hack-6.1/790-SFP-GE-T-ignore-TX_FAULT.patch b/target/linux/generic/hack-6.1/790-SFP-GE-T-ignore-TX_FAULT.patch index bb21bb39d3..53f199d09b 100644 --- a/target/linux/generic/hack-6.1/790-SFP-GE-T-ignore-TX_FAULT.patch +++ b/target/linux/generic/hack-6.1/790-SFP-GE-T-ignore-TX_FAULT.patch @@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle // Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report // 2500MBd NRZ in their EEPROM SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex), -@@ -2344,7 +2347,8 @@ static void sfp_sm_main(struct sfp *sfp, +@@ -2343,7 +2346,8 @@ static void sfp_sm_main(struct sfp *sfp, * or t_start_up, so assume there is a fault. */ sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT, @@ -46,7 +46,7 @@ Signed-off-by: Daniel Golle } else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) { init_done: /* Create mdiobus and start trying for PHY */ -@@ -2578,10 +2582,12 @@ static void sfp_check_state(struct sfp * +@@ -2577,10 +2581,12 @@ static void sfp_check_state(struct sfp * mutex_lock(&sfp->st_mutex); state = sfp_get_state(sfp); changed = state ^ sfp->state; diff --git a/target/linux/generic/hack-6.1/902-debloat_proc.patch b/target/linux/generic/hack-6.1/902-debloat_proc.patch index b4aba2d9d6..06b3a04f7a 100644 --- a/target/linux/generic/hack-6.1/902-debloat_proc.patch +++ b/target/linux/generic/hack-6.1/902-debloat_proc.patch @@ -235,7 +235,7 @@ Signed-off-by: Felix Fietkau if (!pe) --- a/mm/vmalloc.c +++ b/mm/vmalloc.c -@@ -4205,6 +4205,8 @@ static const struct seq_operations vmall +@@ -4222,6 +4222,8 @@ static const struct seq_operations vmall static int __init proc_vmalloc_init(void) { diff --git a/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 3247094691..7ffb6dd1d1 100644 --- a/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski case RTN_THROW: case RTN_UNREACHABLE: default: -@@ -4544,6 +4563,17 @@ static int ip6_pkt_prohibit_out(struct n +@@ -4545,6 +4564,17 @@ static int ip6_pkt_prohibit_out(struct n return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -5037,7 +5067,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -5038,7 +5068,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -6284,6 +6315,8 @@ static int ip6_route_dev_notify(struct n +@@ -6285,6 +6316,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -6295,6 +6328,7 @@ static int ip6_route_dev_notify(struct n +@@ -6296,6 +6329,7 @@ static int ip6_route_dev_notify(struct n in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); #ifdef CONFIG_IPV6_MULTIPLE_TABLES in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); #endif } -@@ -6486,6 +6520,8 @@ static int __net_init ip6_route_net_init +@@ -6487,6 +6521,8 @@ static int __net_init ip6_route_net_init #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.fib6_has_custom_rules = false; @@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, sizeof(*net->ipv6.ip6_prohibit_entry), GFP_KERNEL); -@@ -6496,11 +6532,21 @@ static int __net_init ip6_route_net_init +@@ -6497,11 +6533,21 @@ static int __net_init ip6_route_net_init ip6_template_metrics, true); INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached); @@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); -@@ -6527,6 +6573,8 @@ out: +@@ -6528,6 +6574,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -6546,6 +6594,7 @@ static void __net_exit ip6_route_net_exi +@@ -6547,6 +6595,7 @@ static void __net_exit ip6_route_net_exi kfree(net->ipv6.ip6_null_entry); #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); @@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski kfree(net->ipv6.ip6_blk_hole_entry); #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); -@@ -6629,6 +6678,9 @@ void __init ip6_route_init_special_entri +@@ -6630,6 +6679,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/pending-6.1/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch b/target/linux/generic/pending-6.1/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch deleted file mode 100644 index 6c1f596759..0000000000 --- a/target/linux/generic/pending-6.1/779-net-vxlan-don-t-learn-non-unicast-L2-destinations.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 3f1a227cb071f65f6ecc4db9f399649869735a7c Mon Sep 17 00:00:00 2001 -From: David Bauer -Date: Sat, 17 Feb 2024 22:34:59 +0100 -Subject: [PATCH] net vxlan: don't learn non-unicast L2 destinations - -This patch avoids learning non-unicast targets in the vxlan FDB. -They are non-unicast and thus should be sent to the broadcast-IPv6 -instead of a unicast address. - -Link: https://lore.kernel.org/netdev/15ee0cc7-9252-466b-8ce7-5225d605dde8@david-bauer.net/ -Link: https://github.com/freifunk-gluon/gluon/issues/3191 - -Signed-off-by: David Bauer ---- - drivers/net/vxlan.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/drivers/net/vxlan/vxlan_core.c -+++ b/drivers/net/vxlan/vxlan_core.c -@@ -1493,6 +1493,10 @@ static bool vxlan_snoop(struct net_devic - struct vxlan_fdb *f; - u32 ifindex = 0; - -+ /* Don't learn broadcast packets */ -+ if (is_multicast_ether_addr(src_mac) || is_zero_ether_addr(src_mac)) -+ return false; -+ - #if IS_ENABLED(CONFIG_IPV6) - if (src_ip->sa.sa_family == AF_INET6 && - (ipv6_addr_type(&src_ip->sin6.sin6_addr) & IPV6_ADDR_LINKLOCAL)) diff --git a/target/linux/starfive/patches-6.1/1002-serial-8250_dw-Add-starfive-jh7100-hsuart-compatible.patch b/target/linux/starfive/patches-6.1/1002-serial-8250_dw-Add-starfive-jh7100-hsuart-compatible.patch index 3a5b8fe593..4a68ebdff8 100644 --- a/target/linux/starfive/patches-6.1/1002-serial-8250_dw-Add-starfive-jh7100-hsuart-compatible.patch +++ b/target/linux/starfive/patches-6.1/1002-serial-8250_dw-Add-starfive-jh7100-hsuart-compatible.patch @@ -15,7 +15,7 @@ Signed-off-by: Emil Renner Berthing --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c -@@ -777,6 +777,7 @@ static const struct of_device_id dw8250_ +@@ -780,6 +780,7 @@ static const struct of_device_id dw8250_ { .compatible = "cavium,octeon-3860-uart", .data = &dw8250_octeon_3860_data }, { .compatible = "marvell,armada-38x-uart", .data = &dw8250_armada_38x_data }, { .compatible = "renesas,rzn1-uart", .data = &dw8250_renesas_rzn1_data }, From 87a45ea432075ac9c01223148e5cc1feff914bf2 Mon Sep 17 00:00:00 2001 From: Kristian Skramstad Date: Sat, 22 Jun 2024 00:00:15 +0200 Subject: [PATCH 24/31] kernel: qca-ssdk: update 12.5 to 2024-06-13 There are some new commits, so refresh and update patches. Some build warnings have been fixed upstream too. Add backport target/linux/generic/backport-6.6/722-v6.10-dt-bindings-arm-qcom-ids-Add-SoC-ID-for-IPQ5321.patch. Removed upstream: [-] qca-ssdk/patches/101-hsl_phy-add-support-for-detection-PSGMII-PHY-mode.patch [-] qca-ssdk/patches/201-fix-compile-warnings.patch List of changes: 2024-04-16 -c451136b- qca-ssdk: strip MRPPE code 2024-06-05 -f455a820- [qca-ssdk]: fix enum-int-mismatch warnings 2024-05-31 -bbfc0fa9- Merge "[qca-ssdk]: update eee status of phydev" 2024-05-31 -adbe9dc5- Merge "[qca-ssdk]: support psgmii and uqsxgmii mode of kernel" 2024-05-31 -d06ca777- Merge "[qca-ssdk]: fix 5G issue with the AQR FW that use 5gbaser for 5G speed" 2024-05-31 -c6f539a5- Merge "qca-ssdk: support mrppe pktedit padding functions" 2024-04-29 -c321e2a9- qca-ssdk: support mrppe pktedit padding functions 2024-05-24 -ee6e201e- qca-ssdk: Fix the big endian compile error 2024-05-15 -8c116bb9- [qca-ssdk]: update eee status of phydev 2024-05-20 -f0341a2c- Merge "qca-ssdk: Enable igmp for PPE MINI profile" 2024-05-16 -44a0ce93- qca-ssdk: Enable igmp for PPE MINI profile 2024-05-15 -8b91bbf6- [qca-ssdk]: support psgmii and uqsxgmii mode of kernel 2024-05-14 -7eec1658- [qca-ssdk]: fix 5G issue with the AQR FW that use 5gbaser for 5G speed 2024-05-12 -b9f5ea0e- [qca-ssdk]: ethtool support, do not change wake-up timer when the requested timer is 0 2024-05-09 -5e2c15ed- Merge "[qca-ssdk]: remove check when mht clock enable" 2024-05-09 -a1563b90- Merge "[qca-ssdk] support new sku IPQ5321" 2024-04-23 -f04b7680- [qca-ssdk]: show unknown status when link down 2024-03-22 -33b91b30- [qca-ssdk]: remove check when mht clock enable 2024-04-29 -b6362f2b- Merge "qca-ssdk:fix bug in marina nptv6 iid cal" 2024-04-29 -097033ae- Merge "[qca-ssdk] support cypress uniphy0 connecting MHT switch port0" 2024-04-24 -d45560fd- qca-ssdk:fix bug in marina nptv6 iid cal 2024-04-24 -7d7a42af- qca-ssdk: enable policer counter on low memory profile 2024-04-18 -e36cf6ea- Merge "[qca-ssdk]: change portvlan egress mode initial value as untouched" 2024-04-18 -27817881- Merge "[qca-ssdk]: update the aqr phy supported ability" 2024-04-18 -5a3a693c- Merge "qca-ssdk:support marina nptv6" 2024-04-16 -129fe9b3- Merge "qca-ssdk: support tunnel fields and innner fields inverse" 2024-01-09 -fc8f6abd- qca-ssdk:support marina nptv6 Signed-off-by: Kristian Skramstad Link: https://github.com/openwrt/openwrt/pull/15771 Signed-off-by: Robert Marko --- package/kernel/qca-ssdk/Makefile | 8 ++--- ...upport-for-detection-PSGMII-PHY-mode.patch | 25 --------------- .../patches/200-allow-parallel-build.patch | 2 +- .../patches/201-fix-compile-warnings.patch | 31 ------------------- ...-arm-qcom-ids-Add-SoC-ID-for-IPQ5321.patch | 28 +++++++++++++++++ 5 files changed, 33 insertions(+), 61 deletions(-) delete mode 100644 package/kernel/qca-ssdk/patches/101-hsl_phy-add-support-for-detection-PSGMII-PHY-mode.patch delete mode 100644 package/kernel/qca-ssdk/patches/201-fix-compile-warnings.patch create mode 100644 target/linux/generic/backport-6.6/722-v6.10-dt-bindings-arm-qcom-ids-Add-SoC-ID-for-IPQ5321.patch diff --git a/package/kernel/qca-ssdk/Makefile b/package/kernel/qca-ssdk/Makefile index de262e6578..9c5d4925b8 100644 --- a/package/kernel/qca-ssdk/Makefile +++ b/package/kernel/qca-ssdk/Makefile @@ -1,13 +1,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qca-ssdk -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2024-04-17 -PKG_SOURCE_VERSION:=3d060f7ad70d087f6b0452abe79ab6d042e8cd53 -PKG_MIRROR_HASH:=6f5e390b294e699491584094f5d7eb941de6237ad8c5320191e9e306fbcd8eb5 +PKG_SOURCE_DATE:=2024-06-13 +PKG_SOURCE_VERSION:=c451136ba69d51d60f770365b6d6d60ff2801998 +PKG_MIRROR_HASH:=4c54f2d77b5abeb96bddceb4a9eb58aa2c8fb12b58d5d666196224a35ac107dc PKG_FLAGS:=nonshared PKG_BUILD_PARALLEL:=1 diff --git a/package/kernel/qca-ssdk/patches/101-hsl_phy-add-support-for-detection-PSGMII-PHY-mode.patch b/package/kernel/qca-ssdk/patches/101-hsl_phy-add-support-for-detection-PSGMII-PHY-mode.patch deleted file mode 100644 index 9d028992a7..0000000000 --- a/package/kernel/qca-ssdk/patches/101-hsl_phy-add-support-for-detection-PSGMII-PHY-mode.patch +++ /dev/null @@ -1,25 +0,0 @@ -From e3763fd77e41b2f2495672c6a5898d69892fbf9f Mon Sep 17 00:00:00 2001 -From: Christian Marangi -Date: Wed, 15 Nov 2023 00:57:41 +0100 -Subject: [PATCH] hsl_phy: add support for detection PSGMII PHY mode - -Add support for detection of PSGMII PHY mode to correctly detect qca807x -PHY upstream driver. - -Signed-off-by: Christian Marangi ---- - src/hsl/phy/hsl_phy.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/src/hsl/phy/hsl_phy.c -+++ b/src/hsl/phy/hsl_phy.c -@@ -1322,6 +1322,9 @@ hsl_port_phydev_interface_mode_status_ge - case PHY_INTERFACE_MODE_10GKR: - *interface_mode_status = PORT_10GBASE_R; - break; -+ case PHY_INTERFACE_MODE_PSGMII: -+ *interface_mode_status = PHY_PSGMII_BASET; -+ break; - case PHY_INTERFACE_MODE_QSGMII: - *interface_mode_status = PORT_QSGMII; - break; diff --git a/package/kernel/qca-ssdk/patches/200-allow-parallel-build.patch b/package/kernel/qca-ssdk/patches/200-allow-parallel-build.patch index 6c28e0ff2e..2a3735a736 100644 --- a/package/kernel/qca-ssdk/patches/200-allow-parallel-build.patch +++ b/package/kernel/qca-ssdk/patches/200-allow-parallel-build.patch @@ -40,7 +40,7 @@ kslib_c: --- a/make/linux_opt.mk +++ b/make/linux_opt.mk -@@ -778,6 +778,6 @@ LOCAL_CFLAGS += $(CPU_CFLAG) -D"KBUILD_M +@@ -782,6 +782,6 @@ LOCAL_CFLAGS += $(CPU_CFLAG) -D"KBUILD_M #################################################################### # cflags for LNX Modules-Style Makefile #################################################################### diff --git a/package/kernel/qca-ssdk/patches/201-fix-compile-warnings.patch b/package/kernel/qca-ssdk/patches/201-fix-compile-warnings.patch deleted file mode 100644 index 5b57f41975..0000000000 --- a/package/kernel/qca-ssdk/patches/201-fix-compile-warnings.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- a/src/fal/fal_port_ctrl.c -+++ b/src/fal/fal_port_ctrl.c -@@ -2089,7 +2089,7 @@ fal_port_hibernate_get (a_uint32_t dev_i - */ - sw_error_t - fal_port_cdt (a_uint32_t dev_id, fal_port_t port_id, a_uint32_t mdi_pair, -- a_uint32_t * cable_status, a_uint32_t * cable_len) -+ fal_cable_status_t * cable_status, a_uint32_t * cable_len) - { - sw_error_t rv; - ---- a/src/fal/fal_portvlan.c -+++ b/src/fal/fal_portvlan.c -@@ -2173,7 +2173,7 @@ fal_netisolate_get(a_uint32_t dev_id, a_ - * @return SW_OK or error code - */ - sw_error_t --fal_eg_trans_filter_bypass_en_set(a_uint32_t dev_id, a_bool_t enable) -+fal_eg_trans_filter_bypass_en_set(a_uint32_t dev_id, a_uint32_t enable) - { - sw_error_t rv; - -@@ -2190,7 +2190,7 @@ fal_eg_trans_filter_bypass_en_set(a_uint - * @return SW_OK or error code - */ - sw_error_t --fal_eg_trans_filter_bypass_en_get(a_uint32_t dev_id, a_bool_t* enable) -+fal_eg_trans_filter_bypass_en_get(a_uint32_t dev_id, a_uint32_t* enable) - { - sw_error_t rv; - diff --git a/target/linux/generic/backport-6.6/722-v6.10-dt-bindings-arm-qcom-ids-Add-SoC-ID-for-IPQ5321.patch b/target/linux/generic/backport-6.6/722-v6.10-dt-bindings-arm-qcom-ids-Add-SoC-ID-for-IPQ5321.patch new file mode 100644 index 0000000000..b05648aeab --- /dev/null +++ b/target/linux/generic/backport-6.6/722-v6.10-dt-bindings-arm-qcom-ids-Add-SoC-ID-for-IPQ5321.patch @@ -0,0 +1,28 @@ +From 27c42e925323b975a64429e313b0cf5c0c02a411 Mon Sep 17 00:00:00 2001 +From: Kathiravan Thirumoorthy +Date: Mon, 25 Mar 2024 21:19:48 +0530 +Subject: dt-bindings: arm: qcom,ids: Add SoC ID for IPQ5321 + +Add the ID for the Qualcomm IPQ5321 SoC. + +Acked-by: Krzysztof Kozlowski +Reviewed-by: Mukesh Ojha +Signed-off-by: Kathiravan Thirumoorthy +Link: https://lore.kernel.org/r/20240325-ipq5321-sku-support-v2-1-f30ce244732f@quicinc.com +Signed-off-by: Bjorn Andersson +--- + include/dt-bindings/arm/qcom,ids.h | 1 + + 1 file changed, 1 insertion(+) + +(limited to 'include/dt-bindings/arm/qcom,ids.h') + +--- a/include/dt-bindings/arm/qcom,ids.h ++++ b/include/dt-bindings/arm/qcom,ids.h +@@ -260,6 +260,7 @@ + #define QCOM_ID_IPQ5312 594 + #define QCOM_ID_IPQ5302 595 + #define QCOM_ID_IPQ5300 624 ++#define QCOM_ID_IPQ5321 650 + + /* + * The board type and revision information, used by Qualcomm bootloaders and From de5d1f44aeac0b11cdc74b203ef88f837a5f414a Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Sun, 23 Jun 2024 17:24:57 +0200 Subject: [PATCH 25/31] qca-ssdk: fix compiling for ipq60xx Trying to compile for ipq60xx will fail with: ERROR: modpost: "qca808x_phy_reset" [build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/qca-ssdk-2024.06.13~c451136b/qca-ssdk.ko] undefined! So, lets fix this by disabling Manhattan switch and PHY support as this is the new 2.5G quad port switch that is not present on ipq60xx boards. Fixes: 87a45ea43207 ("kernel: qca-ssdk: update 12.5 to 2024-06-13") Signed-off-by: Robert Marko --- package/kernel/qca-ssdk/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package/kernel/qca-ssdk/Makefile b/package/kernel/qca-ssdk/Makefile index 9c5d4925b8..16b2b4477d 100644 --- a/package/kernel/qca-ssdk/Makefile +++ b/package/kernel/qca-ssdk/Makefile @@ -47,8 +47,9 @@ MAKE_FLAGS+= \ SoC=$(CONFIG_TARGET_SUBTARGET) \ SHELL="$(BASH)" \ PTP_FEATURE=disable SWCONFIG_FEATURE=disable \ - ISISC_ENABLE=disable IN_QCA803X_PHY=FALSE \ - IN_QCA808X_PHY=FALSE IN_MALIBU_PHY=FALSE \ + ISISC_ENABLE=disable MHT_ENABLE=disable \ + IN_QCA803X_PHY=FALSE IN_QCA808X_PHY=FALSE \ + IN_MALIBU_PHY=FALSE \ $(LNX_CONFIG_OPTS) ifeq ($(CONFIG_TARGET_SUBTARGET), "ipq807x") From f444dea428cdcafd78fb75004a942da24cabd48c Mon Sep 17 00:00:00 2001 From: Shiji Yang Date: Sat, 22 Jun 2024 14:58:16 +0000 Subject: [PATCH 26/31] ath79: remove GPIO driver earlier registration hack After porting the ar71xx target to the new ath79 target, we are now using the device tree instead of the device mach file. And the platform drivers already support deferred probe. So there is no need to keep it. Signed-off-by: Shiji Yang --- .../340-register_gpio_driver_earlier.patch | 26 ------------------- 1 file changed, 26 deletions(-) delete mode 100644 target/linux/ath79/patches-6.6/340-register_gpio_driver_earlier.patch diff --git a/target/linux/ath79/patches-6.6/340-register_gpio_driver_earlier.patch b/target/linux/ath79/patches-6.6/340-register_gpio_driver_earlier.patch deleted file mode 100644 index 32c90ef2fc..0000000000 --- a/target/linux/ath79/patches-6.6/340-register_gpio_driver_earlier.patch +++ /dev/null @@ -1,26 +0,0 @@ -From: John Crispin -Subject: ath79: Register GPIO driver earlier - -HACK: register the GPIO driver earlier to ensure that gpio_request calls -from mach files succeed. - -Submitted-by: John Crispin ---- - drivers/gpio/gpio-ath79.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - ---- a/drivers/gpio/gpio-ath79.c -+++ b/drivers/gpio/gpio-ath79.c -@@ -302,7 +302,11 @@ static struct platform_driver ath79_gpio - .probe = ath79_gpio_probe, - }; - --module_platform_driver(ath79_gpio_driver); -+static int __init ath79_gpio_init(void) -+{ -+ return platform_driver_register(&ath79_gpio_driver); -+} -+postcore_initcall(ath79_gpio_init); - - MODULE_DESCRIPTION("Atheros AR71XX/AR724X/AR913X GPIO API support"); - MODULE_LICENSE("GPL v2"); From 354690ebc96807e7465f8911dc591f8a4678ac89 Mon Sep 17 00:00:00 2001 From: Shiji Yang Date: Sat, 22 Jun 2024 14:58:56 +0000 Subject: [PATCH 27/31] ath79: remove SPI driver link order hack This hack is used to make sure that the mfd device starts before the mtd driver[1]. Now the linux driver framework "struct spi_driver {}" can always ensure this. [1] 47f8fd1dde5d ("ar71xx: rewrite SPI drivers for the RB4xx boards") Signed-off-by: Shiji Yang --- .../420-drivers-link-spi-before-mtd.patch | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 target/linux/ath79/patches-6.6/420-drivers-link-spi-before-mtd.patch diff --git a/target/linux/ath79/patches-6.6/420-drivers-link-spi-before-mtd.patch b/target/linux/ath79/patches-6.6/420-drivers-link-spi-before-mtd.patch deleted file mode 100644 index 2e9d3c3e94..0000000000 --- a/target/linux/ath79/patches-6.6/420-drivers-link-spi-before-mtd.patch +++ /dev/null @@ -1,20 +0,0 @@ -From: Gabor Juhos -Subject: [PATCH] ar71xx: Link SPI before MTD - -SVN-Revision: 22863 ---- - drivers/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/Makefile -+++ b/drivers/Makefile -@@ -87,8 +87,8 @@ obj-y += scsi/ - obj-y += nvme/ - obj-$(CONFIG_ATA) += ata/ - obj-$(CONFIG_TARGET_CORE) += target/ --obj-$(CONFIG_MTD) += mtd/ - obj-$(CONFIG_SPI) += spi/ -+obj-$(CONFIG_MTD) += mtd/ - obj-$(CONFIG_SPMI) += spmi/ - obj-$(CONFIG_HSI) += hsi/ - obj-$(CONFIG_SLIMBUS) += slimbus/ From 2f5c57ced6e11eb71fe29c25b795ff7b9d2ca605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Sun, 23 Jun 2024 18:40:34 +0200 Subject: [PATCH 28/31] linux-firmware: add RTL8126 firmware MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit adds RTL8126 firmwares to r8169-firmware package. Signed-off-by: Álvaro Fernández Rojas --- package/firmware/linux-firmware/realtek.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/firmware/linux-firmware/realtek.mk b/package/firmware/linux-firmware/realtek.mk index e070725160..5ba679d404 100644 --- a/package/firmware/linux-firmware/realtek.mk +++ b/package/firmware/linux-firmware/realtek.mk @@ -13,7 +13,7 @@ define Package/r8169-firmware/install $(INSTALL_DIR) $(1)/lib/firmware/rtl_nic $(CP) \ $(PKG_BUILD_DIR)/rtl_nic/rtl810* \ - $(PKG_BUILD_DIR)/rtl_nic/rtl8125* \ + $(PKG_BUILD_DIR)/rtl_nic/rtl812* \ $(PKG_BUILD_DIR)/rtl_nic/rtl8168* \ $(PKG_BUILD_DIR)/rtl_nic/rtl84* \ $(1)/lib/firmware/rtl_nic From a47650e4cb947fd494964a1f25726a901d5cb92b Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Sun, 23 Jun 2024 18:02:09 +0200 Subject: [PATCH 29/31] qualcommax: get rid of custom socinfo.h header Now that SSDK has been updated to use in-kernel SMEM ID-s to identify the SoC its running on instead of relying on the downstream socinfo.h header we can move the read_ipq_soc_version_major() function directly to cpr3-util.c as its the only user of anything from the header and drop it. Link: https://github.com/openwrt/openwrt/pull/15786 Signed-off-by: Robert Marko --- ...egulator-add-Qualcomm-CPR-regulators.patch | 482 +----------------- 1 file changed, 13 insertions(+), 469 deletions(-) diff --git a/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch b/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch index 9b2772c01a..c85be0357c 100644 --- a/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch +++ b/target/linux/qualcommax/patches-6.6/0901-regulator-add-Qualcomm-CPR-regulators.patch @@ -7103,7 +7103,7 @@ Signed-off-by: Robert Marko +#endif /* __REGULATOR_CPR_REGULATOR_H__ */ --- /dev/null +++ b/drivers/regulator/cpr3-util.c -@@ -0,0 +1,2750 @@ +@@ -0,0 +1,2760 @@ +/* + * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. + * @@ -7133,8 +7133,6 @@ Signed-off-by: Robert Marko +#include +#include + -+#include -+ +#include "cpr3-regulator.h" + +#define BYTES_PER_FUSE_ROW 8 @@ -7152,6 +7150,18 @@ Signed-off-by: Robert Marko +/* This constant has units of uV/mV so 1000 corresponds to 100%. */ +#define CPR3_AGING_DERATE_UNITY 1000 + ++static inline int read_ipq_soc_version_major(void) ++{ ++ const int *prop; ++ prop = of_get_property(of_find_node_by_path("/"), "soc_version_major", ++ NULL); ++ ++ if (!prop) ++ return -EINVAL; ++ ++ return le32_to_cpu(*prop); ++} ++ +/** + * cpr3_allocate_regulators() - allocate and initialize CPR3 regulators for a + * given thread based upon device tree data @@ -11676,469 +11686,3 @@ Signed-off-by: Robert Marko + +arch_initcall(cpr4_regulator_init); +module_exit(cpr4_regulator_exit); ---- /dev/null -+++ b/include/soc/qcom/socinfo.h -@@ -0,0 +1,463 @@ -+/* Copyright (c) 2009-2014, 2016, 2020, The Linux Foundation. All rights reserved. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 and -+ * only version 2 as published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ */ -+ -+#ifndef _ARCH_ARM_MACH_MSM_SOCINFO_H_ -+#define _ARCH_ARM_MACH_MSM_SOCINFO_H_ -+ -+#include -+ -+#define CPU_IPQ8074 323 -+#define CPU_IPQ8072 342 -+#define CPU_IPQ8076 343 -+#define CPU_IPQ8078 344 -+#define CPU_IPQ8070 375 -+#define CPU_IPQ8071 376 -+ -+#define CPU_IPQ8072A 389 -+#define CPU_IPQ8074A 390 -+#define CPU_IPQ8076A 391 -+#define CPU_IPQ8078A 392 -+#define CPU_IPQ8070A 395 -+#define CPU_IPQ8071A 396 -+ -+#define CPU_IPQ8172 397 -+#define CPU_IPQ8173 398 -+#define CPU_IPQ8174 399 -+ -+#define CPU_IPQ6018 402 -+#define CPU_IPQ6028 403 -+#define CPU_IPQ6000 421 -+#define CPU_IPQ6010 422 -+#define CPU_IPQ6005 453 -+ -+#define CPU_IPQ5010 446 -+#define CPU_IPQ5018 447 -+#define CPU_IPQ5028 448 -+#define CPU_IPQ5000 503 -+#define CPU_IPQ0509 504 -+#define CPU_IPQ0518 505 -+ -+#define CPU_IPQ9514 510 -+#define CPU_IPQ9554 512 -+#define CPU_IPQ9570 513 -+#define CPU_IPQ9574 514 -+#define CPU_IPQ9550 511 -+#define CPU_IPQ9510 521 -+ -+static inline int read_ipq_soc_version_major(void) -+{ -+ const int *prop; -+ prop = of_get_property(of_find_node_by_path("/"), "soc_version_major", -+ NULL); -+ -+ if (!prop) -+ return -EINVAL; -+ -+ return le32_to_cpu(*prop); -+} -+ -+static inline int read_ipq_cpu_type(void) -+{ -+ const int *prop; -+ prop = of_get_property(of_find_node_by_path("/"), "cpu_type", NULL); -+ /* -+ * Return Default CPU type if "cpu_type" property is not found in DTSI -+ */ -+ if (!prop) -+ return CPU_IPQ8074; -+ -+ return le32_to_cpu(*prop); -+} -+ -+static inline int cpu_is_ipq8070(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8070; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8071(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8071; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8072(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8072; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8074(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8074; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8076(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8076; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8078(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8078; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8072a(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8072A; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8074a(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8074A; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8076a(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8076A; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8078a(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8078A; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8070a(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8070A; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8071a(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8071A; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8172(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8172; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8173(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8173; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq8174(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ8174; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq6018(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ6018; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq6028(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ6028; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq6000(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ6000; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq6010(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ6010; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq6005(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ6005; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq5010(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ5010; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq5018(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ5018; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq5028(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ5028; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq5000(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ5000; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq0509(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ0509; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq0518(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ0518; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq9514(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ9514; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq9554(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ9554; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq9570(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ9570; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq9574(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ9574; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq9550(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ9550; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq9510(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return read_ipq_cpu_type() == CPU_IPQ9510; -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq807x(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return cpu_is_ipq8072() || cpu_is_ipq8074() || -+ cpu_is_ipq8076() || cpu_is_ipq8078() || -+ cpu_is_ipq8070() || cpu_is_ipq8071() || -+ cpu_is_ipq8072a() || cpu_is_ipq8074a() || -+ cpu_is_ipq8076a() || cpu_is_ipq8078a() || -+ cpu_is_ipq8070a() || cpu_is_ipq8071a() || -+ cpu_is_ipq8172() || cpu_is_ipq8173() || -+ cpu_is_ipq8174(); -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq60xx(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return cpu_is_ipq6018() || cpu_is_ipq6028() || -+ cpu_is_ipq6000() || cpu_is_ipq6010() || -+ cpu_is_ipq6005(); -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq50xx(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return cpu_is_ipq5010() || cpu_is_ipq5018() || -+ cpu_is_ipq5028() || cpu_is_ipq5000() || -+ cpu_is_ipq0509() || cpu_is_ipq0518(); -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_ipq95xx(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return cpu_is_ipq9514() || cpu_is_ipq9554() || -+ cpu_is_ipq9570() || cpu_is_ipq9574() || -+ cpu_is_ipq9550() || cpu_is_ipq9510(); -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_nss_crypto_enabled(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return cpu_is_ipq807x() || cpu_is_ipq60xx() || -+ cpu_is_ipq50xx() || cpu_is_ipq9570() || -+ cpu_is_ipq9550() || cpu_is_ipq9574() || -+ cpu_is_ipq9554(); -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_internal_wifi_enabled(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return cpu_is_ipq807x() || cpu_is_ipq60xx() || -+ cpu_is_ipq50xx() || cpu_is_ipq9514() || -+ cpu_is_ipq9554() || cpu_is_ipq9574(); -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_uniphy1_enabled(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return cpu_is_ipq807x() || cpu_is_ipq60xx() || -+ cpu_is_ipq9554() || cpu_is_ipq9570() || -+ cpu_is_ipq9574() || cpu_is_ipq9550(); -+#else -+ return 0; -+#endif -+} -+ -+static inline int cpu_is_uniphy2_enabled(void) -+{ -+#ifdef CONFIG_ARCH_QCOM -+ return cpu_is_ipq807x() || cpu_is_ipq9570() || -+ cpu_is_ipq9574(); -+#else -+ return 0; -+#endif -+} -+ -+#endif /* _ARCH_ARM_MACH_MSM_SOCINFO_H_ */ From ea2ff25d4cb437fa3223f4508e7b7bcd26902e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Sun, 23 Jun 2024 19:19:47 +0200 Subject: [PATCH 30/31] generic: 6.6: backport upstream r8169 patches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport a bunch of upstream r8169 patches: - RTL8168/RTL8101 LEDs support. - RTL8126A support. - RTL8125/RTL8126 LEDs support. - RTL8168M support. Signed-off-by: Álvaro Fernández Rojas --- package/kernel/linux/modules/netdevices.mk | 3 +- ...upport-for-LED-s-on-RTL8168-RTL8101.patch} | 6 +- ...ix-building-with-CONFIG_LEDS_CLASS-m.patch | 75 ++++ ...-v6.9-r8169-add-support-for-RTL8126A.patch | 355 ++++++++++++++++++ ...improve-checking-for-valid-LED-modes.patch | 81 ++++ ...-add-LED-support-for-RTL8125-RTL8126.patch | 244 ++++++++++++ ...d-MODULE_FIRMWARE-entry-for-RTL8126A.patch | 25 ++ ...v6.10-r8169-add-support-for-RTL8168M.patch | 30 ++ ...D-related-deadlock-on-module-removal.patch | 147 ++++++++ ...g-conditional-compiling-for-call-to-.patch | 31 ++ target/linux/generic/config-6.6 | 1 + 11 files changed, 992 insertions(+), 6 deletions(-) rename target/linux/{bcm27xx/patches-6.6/950-0832-r8169-add-support-for-LED-s-on-RTL8168-RTL8101.patch => generic/backport-6.6/780-01-v6.8-r8169-add-support-for-LED-s-on-RTL8168-RTL8101.patch} (97%) create mode 100644 target/linux/generic/backport-6.6/780-02-v6.8-r8169-fix-building-with-CONFIG_LEDS_CLASS-m.patch create mode 100644 target/linux/generic/backport-6.6/780-03-v6.9-r8169-add-support-for-RTL8126A.patch create mode 100644 target/linux/generic/backport-6.6/780-04-v6.9-r8169-improve-checking-for-valid-LED-modes.patch create mode 100644 target/linux/generic/backport-6.6/780-05-v6.9-r8169-add-LED-support-for-RTL8125-RTL8126.patch create mode 100644 target/linux/generic/backport-6.6/780-06-v6.9-r8169-add-MODULE_FIRMWARE-entry-for-RTL8126A.patch create mode 100644 target/linux/generic/backport-6.6/780-07-v6.10-r8169-add-support-for-RTL8168M.patch create mode 100644 target/linux/generic/backport-6.6/780-08-v6.10-r8169-fix-LED-related-deadlock-on-module-removal.patch create mode 100644 target/linux/generic/backport-6.6/780-09-v6.10-r8169-add-missing-conditional-compiling-for-call-to-.patch diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk index 06bae6a7ed..c1188351dc 100644 --- a/package/kernel/linux/modules/netdevices.mk +++ b/package/kernel/linux/modules/netdevices.mk @@ -779,8 +779,7 @@ define KernelPackage/r8169 DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek +kmod-mdio-devres KCONFIG:= \ CONFIG_R8169 \ - CONFIG_R8169_NAPI=y \ - CONFIG_R8169_VLAN=n + CONFIG_R8169_LEDS=y@ge6.6 FILES:=$(LINUX_DIR)/drivers/net/ethernet/realtek/r8169.ko AUTOLOAD:=$(call AutoProbe,r8169) endef diff --git a/target/linux/bcm27xx/patches-6.6/950-0832-r8169-add-support-for-LED-s-on-RTL8168-RTL8101.patch b/target/linux/generic/backport-6.6/780-01-v6.8-r8169-add-support-for-LED-s-on-RTL8168-RTL8101.patch similarity index 97% rename from target/linux/bcm27xx/patches-6.6/950-0832-r8169-add-support-for-LED-s-on-RTL8168-RTL8101.patch rename to target/linux/generic/backport-6.6/780-01-v6.8-r8169-add-support-for-LED-s-on-RTL8168-RTL8101.patch index 65c75abe31..3345ebf6c6 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0832-r8169-add-support-for-LED-s-on-RTL8168-RTL8101.patch +++ b/target/linux/generic/backport-6.6/780-01-v6.8-r8169-add-support-for-LED-s-on-RTL8168-RTL8101.patch @@ -1,9 +1,7 @@ -From acf5e70f3b261a2308bb3a1db985e2f3a423a5e5 Mon Sep 17 00:00:00 2001 +From 18764b883e157e28126b54e7d4ba9dd487d5bf54 Mon Sep 17 00:00:00 2001 From: Heiner Kallweit Date: Sat, 16 Dec 2023 20:58:10 +0100 -Subject: [PATCH 0832/1085] r8169: add support for LED's on RTL8168/RTL8101 - -commit 18764b883e157e28126b54e7d4ba9dd487d5bf54 upstream. +Subject: [PATCH] r8169: add support for LED's on RTL8168/RTL8101 This adds support for the LED's on most chip versions. Excluded are the old non-PCIe versions and RTL8125. RTL8125 has a different LED diff --git a/target/linux/generic/backport-6.6/780-02-v6.8-r8169-fix-building-with-CONFIG_LEDS_CLASS-m.patch b/target/linux/generic/backport-6.6/780-02-v6.8-r8169-fix-building-with-CONFIG_LEDS_CLASS-m.patch new file mode 100644 index 0000000000..cea88c042a --- /dev/null +++ b/target/linux/generic/backport-6.6/780-02-v6.8-r8169-fix-building-with-CONFIG_LEDS_CLASS-m.patch @@ -0,0 +1,75 @@ +From a2634a5ffcafc31c343c6153ae487eb184c433a6 Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Wed, 3 Jan 2024 16:52:04 +0100 +Subject: [PATCH] r8169: fix building with CONFIG_LEDS_CLASS=m + +When r8169 is built-in but LED support is a loadable module, the new +code to drive the LED causes a link failure: + +ld: drivers/net/ethernet/realtek/r8169_leds.o: in function `rtl8168_init_leds': +r8169_leds.c:(.text+0x36c): undefined reference to `devm_led_classdev_register_ext' + +LED support is an optional feature, so fix this issue by adding a Kconfig +symbol R8169_LEDS that is guaranteed to be false if r8169 is built-in +and LED core support is a module. As a positive side effect of this change +r8169_leds.o no longer is built under this configuration. + +Fixes: 18764b883e15 ("r8169: add support for LED's on RTL8168/RTL8101") +Reported-by: kernel test robot +Closes: https://lore.kernel.org/oe-kbuild-all/202312281159.9TPeXbNd-lkp@intel.com/ +Suggested-by: Arnd Bergmann +Signed-off-by: Heiner Kallweit +Reviewed-by: Simon Horman +Tested-by: Simon Horman # build-tested +Tested-by: Arnd Bergmann +Link: https://lore.kernel.org/r/d055aeb5-fe5c-4ccf-987f-5af93a17537b@gmail.com +Signed-off-by: Jakub Kicinski +--- + drivers/net/ethernet/realtek/Kconfig | 7 +++++++ + drivers/net/ethernet/realtek/Makefile | 6 ++---- + drivers/net/ethernet/realtek/r8169_main.c | 5 ++--- + 3 files changed, 11 insertions(+), 7 deletions(-) + +--- a/drivers/net/ethernet/realtek/Kconfig ++++ b/drivers/net/ethernet/realtek/Kconfig +@@ -113,4 +113,11 @@ config R8169 + To compile this driver as a module, choose M here: the module + will be called r8169. This is recommended. + ++config R8169_LEDS ++ def_bool R8169 && LEDS_TRIGGER_NETDEV ++ depends on !(R8169=y && LEDS_CLASS=m) ++ help ++ Optional support for controlling the NIC LED's with the netdev ++ LED trigger. ++ + endif # NET_VENDOR_REALTEK +--- a/drivers/net/ethernet/realtek/Makefile ++++ b/drivers/net/ethernet/realtek/Makefile +@@ -6,8 +6,6 @@ + obj-$(CONFIG_8139CP) += 8139cp.o + obj-$(CONFIG_8139TOO) += 8139too.o + obj-$(CONFIG_ATP) += atp.o +-r8169-objs += r8169_main.o r8169_firmware.o r8169_phy_config.o +-ifdef CONFIG_LEDS_TRIGGER_NETDEV +-r8169-objs += r8169_leds.o +-endif ++r8169-y += r8169_main.o r8169_firmware.o r8169_phy_config.o ++r8169-$(CONFIG_R8169_LEDS) += r8169_leds.o + 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 * + if (rc) + return rc; + +-#if IS_REACHABLE(CONFIG_LEDS_CLASS) && IS_ENABLED(CONFIG_LEDS_TRIGGER_NETDEV) +- if (tp->mac_version > RTL_GIGA_MAC_VER_06 && ++ if (IS_ENABLED(CONFIG_R8169_LEDS) && ++ tp->mac_version > RTL_GIGA_MAC_VER_06 && + tp->mac_version < RTL_GIGA_MAC_VER_61) + rtl8168_init_leds(dev); +-#endif + + netdev_info(dev, "%s, %pM, XID %03x, IRQ %d\n", + rtl_chip_infos[chipset].name, dev->dev_addr, xid, tp->irq); diff --git a/target/linux/generic/backport-6.6/780-03-v6.9-r8169-add-support-for-RTL8126A.patch b/target/linux/generic/backport-6.6/780-03-v6.9-r8169-add-support-for-RTL8126A.patch new file mode 100644 index 0000000000..5ab160855a --- /dev/null +++ b/target/linux/generic/backport-6.6/780-03-v6.9-r8169-add-support-for-RTL8126A.patch @@ -0,0 +1,355 @@ +From 3907f1ffc0ecf466d5c04aadc44c4b9203f3ec9a Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Thu, 1 Feb 2024 22:38:01 +0100 +Subject: [PATCH] r8169: add support for RTL8126A + +This adds support for the RTL8126A found on Asus z790 Maximus Formula. +It was successfully tested w/o the firmware at 1000Mbps. Firmware file +has been provided by Realtek and submitted to linux-firmware. +2.5G and 5G modes are untested. + +Signed-off-by: Heiner Kallweit +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/realtek/r8169.h | 1 + + drivers/net/ethernet/realtek/r8169_main.c | 105 ++++++++++++++---- + .../net/ethernet/realtek/r8169_phy_config.c | 7 ++ + 3 files changed, 89 insertions(+), 24 deletions(-) + +--- a/drivers/net/ethernet/realtek/r8169.h ++++ b/drivers/net/ethernet/realtek/r8169.h +@@ -68,6 +68,7 @@ enum mac_version { + /* support for RTL_GIGA_MAC_VER_60 has been removed */ + RTL_GIGA_MAC_VER_61, + RTL_GIGA_MAC_VER_63, ++ RTL_GIGA_MAC_VER_65, + RTL_GIGA_MAC_NONE + }; + +--- a/drivers/net/ethernet/realtek/r8169_main.c ++++ b/drivers/net/ethernet/realtek/r8169_main.c +@@ -55,6 +55,7 @@ + #define FIRMWARE_8107E_2 "rtl_nic/rtl8107e-2.fw" + #define FIRMWARE_8125A_3 "rtl_nic/rtl8125a-3.fw" + #define FIRMWARE_8125B_2 "rtl_nic/rtl8125b-2.fw" ++#define FIRMWARE_8126A_2 "rtl_nic/rtl8126a-2.fw" + + /* Maximum number of multicast addresses to filter (vs. Rx-all-multicast). + The RTL chips use a 64 element hash table based on the Ethernet CRC. */ +@@ -140,6 +141,7 @@ static const struct { + [RTL_GIGA_MAC_VER_61] = {"RTL8125A", FIRMWARE_8125A_3}, + /* reserve 62 for CFG_METHOD_4 in the vendor driver */ + [RTL_GIGA_MAC_VER_63] = {"RTL8125B", FIRMWARE_8125B_2}, ++ [RTL_GIGA_MAC_VER_65] = {"RTL8126A", FIRMWARE_8126A_2}, + }; + + static const struct pci_device_id rtl8169_pci_tbl[] = { +@@ -162,6 +164,7 @@ static const struct pci_device_id rtl816 + { PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 }, + { 0x0001, 0x8168, PCI_ANY_ID, 0x2410 }, + { PCI_VDEVICE(REALTEK, 0x8125) }, ++ { PCI_VDEVICE(REALTEK, 0x8126) }, + { PCI_VDEVICE(REALTEK, 0x3000) }, + {} + }; +@@ -331,8 +334,12 @@ enum rtl8168_registers { + }; + + enum rtl8125_registers { ++ INT_CFG0_8125 = 0x34, ++#define INT_CFG0_ENABLE_8125 BIT(0) ++#define INT_CFG0_CLKREQEN BIT(3) + IntrMask_8125 = 0x38, + IntrStatus_8125 = 0x3c, ++ INT_CFG1_8125 = 0x7a, + TxPoll_8125 = 0x90, + MAC0_BKP = 0x19e0, + EEE_TXIDLE_TIMER_8125 = 0x6048, +@@ -1144,7 +1151,7 @@ static void rtl_writephy(struct rtl8169_ + case RTL_GIGA_MAC_VER_31: + r8168dp_2_mdio_write(tp, location, val); + break; +- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65: + r8168g_mdio_write(tp, location, val); + break; + default: +@@ -1159,7 +1166,7 @@ static int rtl_readphy(struct rtl8169_pr + case RTL_GIGA_MAC_VER_28: + case RTL_GIGA_MAC_VER_31: + return r8168dp_2_mdio_read(tp, location); +- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65: + return r8168g_mdio_read(tp, location); + default: + return r8169_mdio_read(tp, location); +@@ -1368,7 +1375,7 @@ static void rtl_set_d3_pll_down(struct r + case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26: + case RTL_GIGA_MAC_VER_29 ... RTL_GIGA_MAC_VER_30: + case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_37: +- case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65: + if (enable) + RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) & ~D3_NO_PLL_DOWN); + else +@@ -1535,7 +1542,7 @@ static void __rtl8169_set_wol(struct rtl + break; + case RTL_GIGA_MAC_VER_34: + case RTL_GIGA_MAC_VER_37: +- case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65: + if (wolopts) + rtl_mod_config2(tp, 0, PME_SIGNAL); + else +@@ -2122,6 +2129,9 @@ static enum mac_version rtl8169_get_mac_ + u16 val; + enum mac_version ver; + } mac_info[] = { ++ /* 8126A family. */ ++ { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 }, ++ + /* 8125B family. */ + { 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 }, + +@@ -2392,6 +2402,7 @@ static void rtl_init_rxcfg(struct rtl816 + RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST); + break; + case RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_65: + RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST | + RX_PAUSE_SLOT_ON); + break; +@@ -2578,7 +2589,7 @@ static void rtl_wait_txrx_fifo_empty(str + case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_61: + rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42); + break; +- case RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_65: + RTL_W8(tp, ChipCmd, RTL_R8(tp, ChipCmd) | StopReq); + rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42); + rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond_2, 100, 42); +@@ -2822,7 +2833,7 @@ static void rtl_enable_exit_l1(struct rt + case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38: + rtl_eri_set_bits(tp, 0xd4, 0x0c00); + break; +- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65: + r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80); + break; + default: +@@ -2836,7 +2847,7 @@ static void rtl_disable_exit_l1(struct r + case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38: + rtl_eri_clear_bits(tp, 0xd4, 0x1f00); + break; +- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65: + r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0); + break; + default: +@@ -2846,6 +2857,8 @@ static void rtl_disable_exit_l1(struct r + + static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable) + { ++ u8 val8; ++ + if (tp->mac_version < RTL_GIGA_MAC_VER_32) + return; + +@@ -2859,11 +2872,19 @@ static void rtl_hw_aspm_clkreq_enable(st + return; + + rtl_mod_config5(tp, 0, ASPM_en); +- rtl_mod_config2(tp, 0, ClkReqEn); ++ switch (tp->mac_version) { ++ case RTL_GIGA_MAC_VER_65: ++ val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN; ++ RTL_W8(tp, INT_CFG0_8125, val8); ++ break; ++ default: ++ rtl_mod_config2(tp, 0, ClkReqEn); ++ break; ++ } + + switch (tp->mac_version) { + case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48: +- case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65: + /* reset ephy tx/rx disable timer */ + r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0); + /* chip can trigger L1.2 */ +@@ -2875,14 +2896,22 @@ static void rtl_hw_aspm_clkreq_enable(st + } else { + switch (tp->mac_version) { + case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48: +- case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65: + r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0); + break; + default: + break; + } + +- rtl_mod_config2(tp, ClkReqEn, 0); ++ switch (tp->mac_version) { ++ case RTL_GIGA_MAC_VER_65: ++ val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN; ++ RTL_W8(tp, INT_CFG0_8125, val8); ++ break; ++ default: ++ rtl_mod_config2(tp, ClkReqEn, 0); ++ break; ++ } + rtl_mod_config5(tp, ASPM_en, 0); + } + } +@@ -3678,10 +3707,15 @@ static void rtl_hw_start_8125_common(str + /* disable new tx descriptor format */ + r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000); + +- if (tp->mac_version == RTL_GIGA_MAC_VER_63) ++ if (tp->mac_version == RTL_GIGA_MAC_VER_65) ++ RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02); ++ ++ if (tp->mac_version == RTL_GIGA_MAC_VER_65) ++ r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400); ++ else if (tp->mac_version == RTL_GIGA_MAC_VER_63) + r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200); + else +- r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400); ++ r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300); + + if (tp->mac_version == RTL_GIGA_MAC_VER_63) + r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000); +@@ -3694,6 +3728,10 @@ static void rtl_hw_start_8125_common(str + r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030); + r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000); + r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001); ++ if (tp->mac_version == RTL_GIGA_MAC_VER_65) ++ r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000); ++ else ++ r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000); + r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403); + r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068); + r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f); +@@ -3708,10 +3746,10 @@ static void rtl_hw_start_8125_common(str + + rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10); + +- if (tp->mac_version == RTL_GIGA_MAC_VER_63) +- rtl8125b_config_eee_mac(tp); +- else ++ if (tp->mac_version == RTL_GIGA_MAC_VER_61) + rtl8125a_config_eee_mac(tp); ++ else ++ rtl8125b_config_eee_mac(tp); + + rtl_disable_rxdvgate(tp); + } +@@ -3755,6 +3793,12 @@ static void rtl_hw_start_8125b(struct rt + rtl_hw_start_8125_common(tp); + } + ++static void rtl_hw_start_8126a(struct rtl8169_private *tp) ++{ ++ rtl_set_def_aspm_entry_latency(tp); ++ rtl_hw_start_8125_common(tp); ++} ++ + static void rtl_hw_config(struct rtl8169_private *tp) + { + static const rtl_generic_fct hw_configs[] = { +@@ -3797,6 +3841,7 @@ static void rtl_hw_config(struct rtl8169 + [RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117, + [RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2, + [RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b, ++ [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a, + }; + + if (hw_configs[tp->mac_version]) +@@ -3807,9 +3852,23 @@ static void rtl_hw_start_8125(struct rtl + { + int i; + ++ RTL_W8(tp, INT_CFG0_8125, 0x00); ++ + /* disable interrupt coalescing */ +- for (i = 0xa00; i < 0xb00; i += 4) +- RTL_W32(tp, i, 0); ++ switch (tp->mac_version) { ++ case RTL_GIGA_MAC_VER_61: ++ for (i = 0xa00; i < 0xb00; i += 4) ++ RTL_W32(tp, i, 0); ++ break; ++ case RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_65: ++ for (i = 0xa00; i < 0xa80; i += 4) ++ RTL_W32(tp, i, 0); ++ RTL_W16(tp, INT_CFG1_8125, 0x0000); ++ break; ++ default: ++ break; ++ } + + rtl_hw_config(tp); + } +@@ -3887,8 +3946,7 @@ static int rtl8169_change_mtu(struct net + rtl_jumbo_config(tp); + + switch (tp->mac_version) { +- case RTL_GIGA_MAC_VER_61: +- case RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65: + rtl8125_set_eee_txidle_timer(tp); + break; + default: +@@ -4037,7 +4095,7 @@ static void rtl8169_cleanup(struct rtl81 + RTL_W8(tp, ChipCmd, RTL_R8(tp, ChipCmd) | StopReq); + rtl_loop_wait_high(tp, &rtl_txcfg_empty_cond, 100, 666); + break; +- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65: + rtl_enable_rxdvgate(tp); + fsleep(2000); + break; +@@ -4188,8 +4246,7 @@ static unsigned int rtl_quirk_packet_pad + + switch (tp->mac_version) { + case RTL_GIGA_MAC_VER_34: +- case RTL_GIGA_MAC_VER_61: +- case RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65: + padto = max_t(unsigned int, padto, ETH_ZLEN); + break; + default: +@@ -5225,7 +5282,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; +- case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63: ++ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65: + rtl_hw_init_8125(tp); + break; + default: +--- a/drivers/net/ethernet/realtek/r8169_phy_config.c ++++ b/drivers/net/ethernet/realtek/r8169_phy_config.c +@@ -1102,6 +1102,12 @@ static void rtl8125b_hw_phy_config(struc + rtl8125b_config_eee_phy(phydev); + } + ++static void rtl8126a_hw_phy_config(struct rtl8169_private *tp, ++ struct phy_device *phydev) ++{ ++ r8169_apply_firmware(tp); ++} ++ + void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev, + enum mac_version ver) + { +@@ -1152,6 +1158,7 @@ void r8169_hw_phy_config(struct rtl8169_ + [RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config, + [RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config, + [RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config, ++ [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config, + }; + + if (phy_configs[ver]) diff --git a/target/linux/generic/backport-6.6/780-04-v6.9-r8169-improve-checking-for-valid-LED-modes.patch b/target/linux/generic/backport-6.6/780-04-v6.9-r8169-improve-checking-for-valid-LED-modes.patch new file mode 100644 index 0000000000..ae0c821267 --- /dev/null +++ b/target/linux/generic/backport-6.6/780-04-v6.9-r8169-improve-checking-for-valid-LED-modes.patch @@ -0,0 +1,81 @@ +From 4c49b6824a607af4760fac4f5c0b9954ab902cef Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Wed, 7 Feb 2024 08:16:40 +0100 +Subject: [PATCH] r8169: improve checking for valid LED modes + +After 3a2746320403 ("leds: trigger: netdev: Display only supported link +speed attribute") the check for valid link modes can be simplified. +In addition factor it out, so that it can be re-used by the upcoming +LED support for RTL8125. + +Signed-off-by: Heiner Kallweit +Reviewed-by: Simon Horman +Link: https://lore.kernel.org/r/8876a9f4-7a2d-48c3-8eae-0d834f5c27c5@gmail.com +Signed-off-by: Jakub Kicinski +--- + drivers/net/ethernet/realtek/r8169_leds.c | 38 ++++++++++++----------- + 1 file changed, 20 insertions(+), 18 deletions(-) + +--- a/drivers/net/ethernet/realtek/r8169_leds.c ++++ b/drivers/net/ethernet/realtek/r8169_leds.c +@@ -20,11 +20,6 @@ + + #define RTL8168_NUM_LEDS 3 + +-#define RTL8168_SUPPORTED_MODES \ +- (BIT(TRIGGER_NETDEV_LINK_1000) | BIT(TRIGGER_NETDEV_LINK_100) | \ +- BIT(TRIGGER_NETDEV_LINK_10) | BIT(TRIGGER_NETDEV_RX) | \ +- BIT(TRIGGER_NETDEV_TX)) +- + struct r8169_led_classdev { + struct led_classdev led; + struct net_device *ndev; +@@ -33,28 +28,35 @@ struct r8169_led_classdev { + + #define lcdev_to_r8169_ldev(lcdev) container_of(lcdev, struct r8169_led_classdev, led) + ++static bool r8169_trigger_mode_is_valid(unsigned long flags) ++{ ++ bool rx, tx; ++ ++ if (flags & BIT(TRIGGER_NETDEV_HALF_DUPLEX)) ++ return false; ++ if (flags & BIT(TRIGGER_NETDEV_FULL_DUPLEX)) ++ return false; ++ ++ rx = flags & BIT(TRIGGER_NETDEV_RX); ++ tx = flags & BIT(TRIGGER_NETDEV_TX); ++ ++ return rx == tx; ++} ++ + static int rtl8168_led_hw_control_is_supported(struct led_classdev *led_cdev, + unsigned long flags) + { + struct r8169_led_classdev *ldev = lcdev_to_r8169_ldev(led_cdev); + struct rtl8169_private *tp = netdev_priv(ldev->ndev); + int shift = ldev->index * 4; +- bool rx, tx; + +- if (flags & ~RTL8168_SUPPORTED_MODES) +- goto nosupp; +- +- rx = flags & BIT(TRIGGER_NETDEV_RX); +- tx = flags & BIT(TRIGGER_NETDEV_TX); +- if (rx != tx) +- goto nosupp; ++ if (!r8169_trigger_mode_is_valid(flags)) { ++ /* Switch LED off to indicate that mode isn't supported */ ++ rtl8168_led_mod_ctrl(tp, 0x000f << shift, 0); ++ return -EOPNOTSUPP; ++ } + + return 0; +- +-nosupp: +- /* Switch LED off to indicate that mode isn't supported */ +- rtl8168_led_mod_ctrl(tp, 0x000f << shift, 0); +- return -EOPNOTSUPP; + } + + static int rtl8168_led_hw_control_set(struct led_classdev *led_cdev, diff --git a/target/linux/generic/backport-6.6/780-05-v6.9-r8169-add-LED-support-for-RTL8125-RTL8126.patch b/target/linux/generic/backport-6.6/780-05-v6.9-r8169-add-LED-support-for-RTL8125-RTL8126.patch new file mode 100644 index 0000000000..742ee578b2 --- /dev/null +++ b/target/linux/generic/backport-6.6/780-05-v6.9-r8169-add-LED-support-for-RTL8125-RTL8126.patch @@ -0,0 +1,244 @@ +From be51ed104ba9929c741afb718ef7198dbcecef94 Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Mon, 12 Feb 2024 19:44:11 +0100 +Subject: [PATCH] r8169: add LED support for RTL8125/RTL8126 + +This adds LED support for RTL8125/RTL8126. + +Note: Due to missing datasheets changing the 5Gbps link mode isn't +supported for RTL8126. + +Signed-off-by: Heiner Kallweit +Reviewed-by: Andrew Lunn +Link: https://lore.kernel.org/r/f982602c-9de3-4ca6-85a3-2c1d118dcb15@gmail.com +Signed-off-by: Jakub Kicinski +--- + drivers/net/ethernet/realtek/r8169.h | 3 + + drivers/net/ethernet/realtek/r8169_leds.c | 106 ++++++++++++++++++++++ + drivers/net/ethernet/realtek/r8169_main.c | 61 ++++++++++++- + 3 files changed, 166 insertions(+), 4 deletions(-) + +--- a/drivers/net/ethernet/realtek/r8169.h ++++ b/drivers/net/ethernet/realtek/r8169.h +@@ -85,3 +85,6 @@ void r8169_get_led_name(struct rtl8169_p + int rtl8168_get_led_mode(struct rtl8169_private *tp); + int rtl8168_led_mod_ctrl(struct rtl8169_private *tp, u16 mask, u16 val); + void rtl8168_init_leds(struct net_device *ndev); ++int rtl8125_get_led_mode(struct rtl8169_private *tp, int index); ++int rtl8125_set_led_mode(struct rtl8169_private *tp, int index, u16 mode); ++void rtl8125_init_leds(struct net_device *ndev); +--- a/drivers/net/ethernet/realtek/r8169_leds.c ++++ b/drivers/net/ethernet/realtek/r8169_leds.c +@@ -18,7 +18,14 @@ + #define RTL8168_LED_CTRL_LINK_100 BIT(1) + #define RTL8168_LED_CTRL_LINK_10 BIT(0) + ++#define RTL8125_LED_CTRL_ACT BIT(9) ++#define RTL8125_LED_CTRL_LINK_2500 BIT(5) ++#define RTL8125_LED_CTRL_LINK_1000 BIT(3) ++#define RTL8125_LED_CTRL_LINK_100 BIT(1) ++#define RTL8125_LED_CTRL_LINK_10 BIT(0) ++ + #define RTL8168_NUM_LEDS 3 ++#define RTL8125_NUM_LEDS 4 + + struct r8169_led_classdev { + struct led_classdev led; +@@ -157,3 +164,102 @@ void rtl8168_init_leds(struct net_device + for (i = 0; i < RTL8168_NUM_LEDS; i++) + rtl8168_setup_ldev(leds + i, ndev, i); + } ++ ++static int rtl8125_led_hw_control_is_supported(struct led_classdev *led_cdev, ++ unsigned long flags) ++{ ++ struct r8169_led_classdev *ldev = lcdev_to_r8169_ldev(led_cdev); ++ struct rtl8169_private *tp = netdev_priv(ldev->ndev); ++ ++ if (!r8169_trigger_mode_is_valid(flags)) { ++ /* Switch LED off to indicate that mode isn't supported */ ++ rtl8125_set_led_mode(tp, ldev->index, 0); ++ return -EOPNOTSUPP; ++ } ++ ++ return 0; ++} ++ ++static int rtl8125_led_hw_control_set(struct led_classdev *led_cdev, ++ unsigned long flags) ++{ ++ struct r8169_led_classdev *ldev = lcdev_to_r8169_ldev(led_cdev); ++ struct rtl8169_private *tp = netdev_priv(ldev->ndev); ++ u16 mode = 0; ++ ++ if (flags & BIT(TRIGGER_NETDEV_LINK_10)) ++ mode |= RTL8125_LED_CTRL_LINK_10; ++ if (flags & BIT(TRIGGER_NETDEV_LINK_100)) ++ mode |= RTL8125_LED_CTRL_LINK_100; ++ if (flags & BIT(TRIGGER_NETDEV_LINK_1000)) ++ mode |= RTL8125_LED_CTRL_LINK_1000; ++ if (flags & BIT(TRIGGER_NETDEV_LINK_2500)) ++ mode |= RTL8125_LED_CTRL_LINK_2500; ++ if (flags & (BIT(TRIGGER_NETDEV_TX) | BIT(TRIGGER_NETDEV_RX))) ++ mode |= RTL8125_LED_CTRL_ACT; ++ ++ return rtl8125_set_led_mode(tp, ldev->index, mode); ++} ++ ++static int rtl8125_led_hw_control_get(struct led_classdev *led_cdev, ++ unsigned long *flags) ++{ ++ struct r8169_led_classdev *ldev = lcdev_to_r8169_ldev(led_cdev); ++ struct rtl8169_private *tp = netdev_priv(ldev->ndev); ++ int mode; ++ ++ mode = rtl8125_get_led_mode(tp, ldev->index); ++ if (mode < 0) ++ return mode; ++ ++ if (mode & RTL8125_LED_CTRL_LINK_10) ++ *flags |= BIT(TRIGGER_NETDEV_LINK_10); ++ if (mode & RTL8125_LED_CTRL_LINK_100) ++ *flags |= BIT(TRIGGER_NETDEV_LINK_100); ++ if (mode & RTL8125_LED_CTRL_LINK_1000) ++ *flags |= BIT(TRIGGER_NETDEV_LINK_1000); ++ if (mode & RTL8125_LED_CTRL_LINK_2500) ++ *flags |= BIT(TRIGGER_NETDEV_LINK_2500); ++ if (mode & RTL8125_LED_CTRL_ACT) ++ *flags |= BIT(TRIGGER_NETDEV_TX) | BIT(TRIGGER_NETDEV_RX); ++ ++ return 0; ++} ++ ++static void rtl8125_setup_led_ldev(struct r8169_led_classdev *ldev, ++ struct net_device *ndev, int index) ++{ ++ struct rtl8169_private *tp = netdev_priv(ndev); ++ struct led_classdev *led_cdev = &ldev->led; ++ char led_name[LED_MAX_NAME_SIZE]; ++ ++ ldev->ndev = ndev; ++ ldev->index = index; ++ ++ r8169_get_led_name(tp, index, led_name, LED_MAX_NAME_SIZE); ++ led_cdev->name = led_name; ++ led_cdev->hw_control_trigger = "netdev"; ++ led_cdev->flags |= LED_RETAIN_AT_SHUTDOWN; ++ led_cdev->hw_control_is_supported = rtl8125_led_hw_control_is_supported; ++ led_cdev->hw_control_set = rtl8125_led_hw_control_set; ++ led_cdev->hw_control_get = rtl8125_led_hw_control_get; ++ led_cdev->hw_control_get_device = r8169_led_hw_control_get_device; ++ ++ /* ignore errors */ ++ devm_led_classdev_register(&ndev->dev, led_cdev); ++} ++ ++void rtl8125_init_leds(struct net_device *ndev) ++{ ++ /* bind resource mgmt to netdev */ ++ struct device *dev = &ndev->dev; ++ struct r8169_led_classdev *leds; ++ int i; ++ ++ leds = devm_kcalloc(dev, RTL8125_NUM_LEDS, sizeof(*leds), GFP_KERNEL); ++ if (!leds) ++ return; ++ ++ for (i = 0; i < RTL8125_NUM_LEDS; i++) ++ rtl8125_setup_led_ldev(leds + i, ndev, i); ++} +--- a/drivers/net/ethernet/realtek/r8169_main.c ++++ b/drivers/net/ethernet/realtek/r8169_main.c +@@ -334,17 +334,23 @@ enum rtl8168_registers { + }; + + enum rtl8125_registers { ++ LEDSEL0 = 0x18, + INT_CFG0_8125 = 0x34, + #define INT_CFG0_ENABLE_8125 BIT(0) + #define INT_CFG0_CLKREQEN BIT(3) + IntrMask_8125 = 0x38, + IntrStatus_8125 = 0x3c, + INT_CFG1_8125 = 0x7a, ++ LEDSEL2 = 0x84, ++ LEDSEL1 = 0x86, + TxPoll_8125 = 0x90, ++ LEDSEL3 = 0x96, + MAC0_BKP = 0x19e0, + EEE_TXIDLE_TIMER_8125 = 0x6048, + }; + ++#define LEDSEL_MASK_8125 0x23f ++ + #define RX_VLAN_INNER_8125 BIT(22) + #define RX_VLAN_OUTER_8125 BIT(23) + #define RX_VLAN_8125 (RX_VLAN_INNER_8125 | RX_VLAN_OUTER_8125) +@@ -835,6 +841,51 @@ int rtl8168_get_led_mode(struct rtl8169_ + return ret; + } + ++static int rtl8125_get_led_reg(int index) ++{ ++ static const int led_regs[] = { LEDSEL0, LEDSEL1, LEDSEL2, LEDSEL3 }; ++ ++ return led_regs[index]; ++} ++ ++int rtl8125_set_led_mode(struct rtl8169_private *tp, int index, u16 mode) ++{ ++ int reg = rtl8125_get_led_reg(index); ++ struct device *dev = tp_to_dev(tp); ++ int ret; ++ u16 val; ++ ++ ret = pm_runtime_resume_and_get(dev); ++ if (ret < 0) ++ return ret; ++ ++ mutex_lock(&tp->led_lock); ++ val = RTL_R16(tp, reg) & ~LEDSEL_MASK_8125; ++ RTL_W16(tp, reg, val | mode); ++ mutex_unlock(&tp->led_lock); ++ ++ pm_runtime_put_sync(dev); ++ ++ return 0; ++} ++ ++int rtl8125_get_led_mode(struct rtl8169_private *tp, int index) ++{ ++ int reg = rtl8125_get_led_reg(index); ++ struct device *dev = tp_to_dev(tp); ++ int ret; ++ ++ ret = pm_runtime_resume_and_get(dev); ++ if (ret < 0) ++ return ret; ++ ++ ret = RTL_R16(tp, reg); ++ ++ pm_runtime_put_sync(dev); ++ ++ return ret; ++} ++ + 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 * + if (rc) + return rc; + +- if (IS_ENABLED(CONFIG_R8169_LEDS) && +- tp->mac_version > RTL_GIGA_MAC_VER_06 && +- tp->mac_version < RTL_GIGA_MAC_VER_61) +- rtl8168_init_leds(dev); ++ if (IS_ENABLED(CONFIG_R8169_LEDS)) { ++ if (rtl_is_8125(tp)) ++ rtl8125_init_leds(dev); ++ else if (tp->mac_version > RTL_GIGA_MAC_VER_06) ++ rtl8168_init_leds(dev); ++ } + + netdev_info(dev, "%s, %pM, XID %03x, IRQ %d\n", + rtl_chip_infos[chipset].name, dev->dev_addr, xid, tp->irq); diff --git a/target/linux/generic/backport-6.6/780-06-v6.9-r8169-add-MODULE_FIRMWARE-entry-for-RTL8126A.patch b/target/linux/generic/backport-6.6/780-06-v6.9-r8169-add-MODULE_FIRMWARE-entry-for-RTL8126A.patch new file mode 100644 index 0000000000..a6175c824e --- /dev/null +++ b/target/linux/generic/backport-6.6/780-06-v6.9-r8169-add-MODULE_FIRMWARE-entry-for-RTL8126A.patch @@ -0,0 +1,25 @@ +From f4d3e595c0000ce39dec7e4799ea42ce42ab6867 Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Sat, 17 Feb 2024 15:48:23 +0100 +Subject: [PATCH] r8169: add MODULE_FIRMWARE entry for RTL8126A + +Add the missing MODULE_FIRMWARE entry for RTL8126A. + +Signed-off-by: Heiner Kallweit +Reviewed-by: Simon Horman +Link: https://lore.kernel.org/r/47ef79d2-59c4-4d44-9595-366c70c4ad87@gmail.com +Signed-off-by: Jakub Kicinski +--- + drivers/net/ethernet/realtek/r8169_main.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/ethernet/realtek/r8169_main.c ++++ b/drivers/net/ethernet/realtek/r8169_main.c +@@ -680,6 +680,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3); + MODULE_FIRMWARE(FIRMWARE_8107E_2); + MODULE_FIRMWARE(FIRMWARE_8125A_3); + MODULE_FIRMWARE(FIRMWARE_8125B_2); ++MODULE_FIRMWARE(FIRMWARE_8126A_2); + + static inline struct device *tp_to_dev(struct rtl8169_private *tp) + { diff --git a/target/linux/generic/backport-6.6/780-07-v6.10-r8169-add-support-for-RTL8168M.patch b/target/linux/generic/backport-6.6/780-07-v6.10-r8169-add-support-for-RTL8168M.patch new file mode 100644 index 0000000000..557b8b1491 --- /dev/null +++ b/target/linux/generic/backport-6.6/780-07-v6.10-r8169-add-support-for-RTL8168M.patch @@ -0,0 +1,30 @@ +From 39f59c72ad3a1eaab9a60f0671bc94d2bc826d21 Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Sun, 7 Apr 2024 23:19:25 +0200 +Subject: [PATCH] r8169: add support for RTL8168M +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +A user reported an unknown chip version. According to the r8168 vendor +driver it's called RTL8168M, but handling is identical to RTL8168H. +So let's simply treat it as RTL8168H. + +Tested-by: Евгений +Signed-off-by: Heiner Kallweit +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/realtek/r8169_main.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/net/ethernet/realtek/r8169_main.c ++++ b/drivers/net/ethernet/realtek/r8169_main.c +@@ -2212,6 +2212,8 @@ static enum mac_version rtl8169_get_mac_ + * the wild. Let's disable detection. + * { 0x7cf, 0x540, RTL_GIGA_MAC_VER_45 }, + */ ++ /* Realtek calls it RTL8168M, but it's handled like RTL8168H */ ++ { 0x7cf, 0x6c0, RTL_GIGA_MAC_VER_46 }, + + /* 8168G family. */ + { 0x7cf, 0x5c8, RTL_GIGA_MAC_VER_44 }, diff --git a/target/linux/generic/backport-6.6/780-08-v6.10-r8169-fix-LED-related-deadlock-on-module-removal.patch b/target/linux/generic/backport-6.6/780-08-v6.10-r8169-fix-LED-related-deadlock-on-module-removal.patch new file mode 100644 index 0000000000..52019869a8 --- /dev/null +++ b/target/linux/generic/backport-6.6/780-08-v6.10-r8169-fix-LED-related-deadlock-on-module-removal.patch @@ -0,0 +1,147 @@ +From 19fa4f2a85d777a8052e869c1b892a2f7556569d Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Mon, 8 Apr 2024 20:47:40 +0200 +Subject: [PATCH] r8169: fix LED-related deadlock on module removal + +Binding devm_led_classdev_register() to the netdev is problematic +because on module removal we get a RTNL-related deadlock. Fix this +by avoiding the device-managed LED functions. + +Note: We can safely call led_classdev_unregister() for a LED even +if registering it failed, because led_classdev_unregister() detects +this and is a no-op in this case. + +Fixes: 18764b883e15 ("r8169: add support for LED's on RTL8168/RTL8101") +Cc: stable@vger.kernel.org +Reported-by: Lukas Wunner +Signed-off-by: Heiner Kallweit +Reviewed-by: Andrew Lunn +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/realtek/r8169.h | 6 ++-- + drivers/net/ethernet/realtek/r8169_leds.c | 35 +++++++++++++++-------- + drivers/net/ethernet/realtek/r8169_main.c | 8 ++++-- + 3 files changed, 33 insertions(+), 16 deletions(-) + +--- a/drivers/net/ethernet/realtek/r8169.h ++++ b/drivers/net/ethernet/realtek/r8169.h +@@ -73,6 +73,7 @@ enum mac_version { + }; + + struct rtl8169_private; ++struct r8169_led_classdev; + + void r8169_apply_firmware(struct rtl8169_private *tp); + u16 rtl8168h_2_get_adc_bias_ioffset(struct rtl8169_private *tp); +@@ -84,7 +85,8 @@ void r8169_get_led_name(struct rtl8169_p + char *buf, int buf_len); + int rtl8168_get_led_mode(struct rtl8169_private *tp); + int rtl8168_led_mod_ctrl(struct rtl8169_private *tp, u16 mask, u16 val); +-void rtl8168_init_leds(struct net_device *ndev); ++struct r8169_led_classdev *rtl8168_init_leds(struct net_device *ndev); + int rtl8125_get_led_mode(struct rtl8169_private *tp, int index); + int rtl8125_set_led_mode(struct rtl8169_private *tp, int index, u16 mode); +-void rtl8125_init_leds(struct net_device *ndev); ++struct r8169_led_classdev *rtl8125_init_leds(struct net_device *ndev); ++void r8169_remove_leds(struct r8169_led_classdev *leds); +--- a/drivers/net/ethernet/realtek/r8169_leds.c ++++ b/drivers/net/ethernet/realtek/r8169_leds.c +@@ -147,22 +147,22 @@ static void rtl8168_setup_ldev(struct r8 + led_cdev->hw_control_get_device = r8169_led_hw_control_get_device; + + /* ignore errors */ +- devm_led_classdev_register(&ndev->dev, led_cdev); ++ led_classdev_register(&ndev->dev, led_cdev); + } + +-void rtl8168_init_leds(struct net_device *ndev) ++struct r8169_led_classdev *rtl8168_init_leds(struct net_device *ndev) + { +- /* bind resource mgmt to netdev */ +- struct device *dev = &ndev->dev; + struct r8169_led_classdev *leds; + int i; + +- leds = devm_kcalloc(dev, RTL8168_NUM_LEDS, sizeof(*leds), GFP_KERNEL); ++ leds = kcalloc(RTL8168_NUM_LEDS + 1, sizeof(*leds), GFP_KERNEL); + if (!leds) +- return; ++ return NULL; + + for (i = 0; i < RTL8168_NUM_LEDS; i++) + rtl8168_setup_ldev(leds + i, ndev, i); ++ ++ return leds; + } + + static int rtl8125_led_hw_control_is_supported(struct led_classdev *led_cdev, +@@ -246,20 +246,31 @@ static void rtl8125_setup_led_ldev(struc + led_cdev->hw_control_get_device = r8169_led_hw_control_get_device; + + /* ignore errors */ +- devm_led_classdev_register(&ndev->dev, led_cdev); ++ led_classdev_register(&ndev->dev, led_cdev); + } + +-void rtl8125_init_leds(struct net_device *ndev) ++struct r8169_led_classdev *rtl8125_init_leds(struct net_device *ndev) + { +- /* bind resource mgmt to netdev */ +- struct device *dev = &ndev->dev; + struct r8169_led_classdev *leds; + int i; + +- leds = devm_kcalloc(dev, RTL8125_NUM_LEDS, sizeof(*leds), GFP_KERNEL); ++ leds = kcalloc(RTL8125_NUM_LEDS + 1, sizeof(*leds), GFP_KERNEL); + if (!leds) +- return; ++ return NULL; + + for (i = 0; i < RTL8125_NUM_LEDS; i++) + rtl8125_setup_led_ldev(leds + i, ndev, i); ++ ++ return leds; ++} ++ ++void r8169_remove_leds(struct r8169_led_classdev *leds) ++{ ++ if (!leds) ++ return; ++ ++ for (struct r8169_led_classdev *l = leds; l->ndev; l++) ++ led_classdev_unregister(&l->led); ++ ++ kfree(leds); + } +--- a/drivers/net/ethernet/realtek/r8169_main.c ++++ b/drivers/net/ethernet/realtek/r8169_main.c +@@ -651,6 +651,8 @@ struct rtl8169_private { + const char *fw_name; + struct rtl_fw *rtl_fw; + ++ struct r8169_led_classdev *leds; ++ + u32 ocp_base; + }; + +@@ -5126,6 +5128,8 @@ static void rtl_remove_one(struct pci_de + + cancel_work_sync(&tp->wk.work); + ++ r8169_remove_leds(tp->leds); ++ + unregister_netdev(tp->dev); + + if (tp->dash_type != RTL_DASH_NONE) +@@ -5586,9 +5590,9 @@ static int rtl_init_one(struct pci_dev * + + if (IS_ENABLED(CONFIG_R8169_LEDS)) { + if (rtl_is_8125(tp)) +- rtl8125_init_leds(dev); ++ tp->leds = rtl8125_init_leds(dev); + else if (tp->mac_version > RTL_GIGA_MAC_VER_06) +- rtl8168_init_leds(dev); ++ tp->leds = rtl8168_init_leds(dev); + } + + netdev_info(dev, "%s, %pM, XID %03x, IRQ %d\n", diff --git a/target/linux/generic/backport-6.6/780-09-v6.10-r8169-add-missing-conditional-compiling-for-call-to-.patch b/target/linux/generic/backport-6.6/780-09-v6.10-r8169-add-missing-conditional-compiling-for-call-to-.patch new file mode 100644 index 0000000000..cfe552046e --- /dev/null +++ b/target/linux/generic/backport-6.6/780-09-v6.10-r8169-add-missing-conditional-compiling-for-call-to-.patch @@ -0,0 +1,31 @@ +From 97e176fcbbf3c0f2bd410c9b241177c051f57176 Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Wed, 10 Apr 2024 15:11:28 +0200 +Subject: [PATCH] r8169: add missing conditional compiling for call to + r8169_remove_leds + +Add missing dependency on CONFIG_R8169_LEDS. As-is a link error occurs +if config option CONFIG_R8169_LEDS isn't enabled. + +Fixes: 19fa4f2a85d7 ("r8169: fix LED-related deadlock on module removal") +Reported-by: Venkat Rao Bagalkote +Signed-off-by: Heiner Kallweit +Tested-By: Venkat Rao Bagalkote +Link: https://lore.kernel.org/r/d080038c-eb6b-45ac-9237-b8c1cdd7870f@gmail.com +Signed-off-by: Jakub Kicinski +--- + drivers/net/ethernet/realtek/r8169_main.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- 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 + + cancel_work_sync(&tp->wk.work); + +- r8169_remove_leds(tp->leds); ++ if (IS_ENABLED(CONFIG_R8169_LEDS)) ++ r8169_remove_leds(tp->leds); + + unregister_netdev(tp->dev); + diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6 index c51cc3b0ce..20fe98099f 100644 --- a/target/linux/generic/config-6.6 +++ b/target/linux/generic/config-6.6 @@ -4813,6 +4813,7 @@ CONFIG_PWRSEQ_SIMPLE=y # CONFIG_QUOTA_NETLINK_INTERFACE is not set # CONFIG_R6040 is not set # CONFIG_R8169 is not set +# CONFIG_R8169_LEDS is not set # CONFIG_R8712U is not set # CONFIG_RADIO_ADAPTERS is not set # CONFIG_RADIO_AZTECH is not set From 6d29378eb5ae568ec7d47be7214f7c2b70a3dd9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Mon, 24 Jun 2024 05:48:44 +0200 Subject: [PATCH 31/31] bcm27xx: drop upstream patch that breaks rpi5 wifi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As reported in the following issue, this patch breaks wifi on the RPi 5. https://github.com/raspberrypi/linux/issues/6237 Signed-off-by: Álvaro Fernández Rojas --- ...i-brcmstb-improve-bcm2712-card-remov.patch | 52 ------------------- 1 file changed, 52 deletions(-) delete mode 100644 target/linux/bcm27xx/patches-6.6/950-1133-drivers-mmc-sdhci-brcmstb-improve-bcm2712-card-remov.patch diff --git a/target/linux/bcm27xx/patches-6.6/950-1133-drivers-mmc-sdhci-brcmstb-improve-bcm2712-card-remov.patch b/target/linux/bcm27xx/patches-6.6/950-1133-drivers-mmc-sdhci-brcmstb-improve-bcm2712-card-remov.patch deleted file mode 100644 index 132fcd9b80..0000000000 --- a/target/linux/bcm27xx/patches-6.6/950-1133-drivers-mmc-sdhci-brcmstb-improve-bcm2712-card-remov.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 5c0f94088e0694220a2f0d8ad6e8216b50a80f2e Mon Sep 17 00:00:00 2001 -From: Jonathan Bell -Date: Thu, 13 Jun 2024 15:01:02 +0100 -Subject: [PATCH 1133/1135] drivers: mmc: sdhci-brcmstb: improve bcm2712 card - removal handling - -If the controller is being reset, then the CQE needs to be reset as well. - -For removable cards, CQHCI_SSC1 must specify a polling mode (CBC=0) -otherwise it's possible that the controller stops emitting periodic -CMD13s on card removal, without raising an error status interrupt. - -Signed-off-by: Jonathan Bell ---- - drivers/mmc/host/sdhci-brcmstb.c | 19 ++++++++++++++++--- - 1 file changed, 16 insertions(+), 3 deletions(-) - ---- a/drivers/mmc/host/sdhci-brcmstb.c -+++ b/drivers/mmc/host/sdhci-brcmstb.c -@@ -365,8 +365,21 @@ static void sdhci_brcmstb_cqe_enable(str - - sdhci_cqe_enable(mmc); - -- /* Reset CMD13 polling timer back to eMMC specification default */ -- cqhci_writel(cq_host, 0x00011000, CQHCI_SSC1); -+ /* -+ * The controller resets this register to a very short default interval -+ * whenever CQHCI is disabled. -+ * -+ * For removable cards CBC needs to be clear or card removal can hang -+ * the CQE. In polling mode, a CIT of 0x4000 "cycles" seems to produce the best -+ * throughput. -+ * -+ * For nonremovable cards, the specification default of CBC=1 CIT=0x1000 -+ * suffices. -+ */ -+ if (mmc->caps & MMC_CAP_NONREMOVABLE) -+ cqhci_writel(cq_host, 0x00011000, CQHCI_SSC1); -+ else -+ cqhci_writel(cq_host, 0x00004000, CQHCI_SSC1); - } - - static const struct cqhci_host_ops sdhci_brcmstb_cqhci_ops = { -@@ -386,7 +399,7 @@ static struct sdhci_ops sdhci_brcmstb_op - .set_clock = sdhci_bcm2712_set_clock, - .set_power = sdhci_brcmstb_set_power, - .set_bus_width = sdhci_set_bus_width, -- .reset = sdhci_reset, -+ .reset = brcmstb_reset, - .set_uhs_signaling = sdhci_set_uhs_signaling, - .init_sd_express = bcm2712_init_sd_express, - };