Merge remote-tracking branch 'remotes/remote/master'
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled

This commit is contained in:
Nanako 2025-03-08 15:28:28 +08:00
commit 9b0ca6731d
66 changed files with 1214 additions and 962 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-6.6 = .79 LINUX_VERSION-6.6 = .80
LINUX_KERNEL_HASH-6.6.79 = 07a6f904470da1a099aa1683e3025a999dd82f2438f78b006b80c6ae2e9dfe8d LINUX_KERNEL_HASH-6.6.80 = 6cf911d01324f45c9dd2f44cf06f55bda0ecf383bc498f132a0c549768531327

View File

@ -8,6 +8,7 @@ touch /etc/config/ubootenv
board=$(board_name) board=$(board_name)
case "$board" in case "$board" in
linksys,mr5500|\
linksys,mx2000|\ linksys,mx2000|\
linksys,mx5500|\ linksys,mx5500|\
linksys,spnmx56) linksys,spnmx56)

View File

@ -39,6 +39,7 @@ ALLWIFIBOARDS:= \
edgecore_eap102 \ edgecore_eap102 \
edimax_cax1800 \ edimax_cax1800 \
linksys_homewrk \ linksys_homewrk \
linksys_mr5500 \
linksys_mr7350 \ linksys_mr7350 \
linksys_mx2000 \ linksys_mx2000 \
linksys_mx4200 \ linksys_mx4200 \
@ -179,6 +180,7 @@ $(eval $(call generate-ipq-wifi-package,dynalink_dl-wrx36,Dynalink DL-WRX36))
$(eval $(call generate-ipq-wifi-package,edgecore_eap102,Edgecore EAP102)) $(eval $(call generate-ipq-wifi-package,edgecore_eap102,Edgecore EAP102))
$(eval $(call generate-ipq-wifi-package,edimax_cax1800,Edimax CAX1800)) $(eval $(call generate-ipq-wifi-package,edimax_cax1800,Edimax CAX1800))
$(eval $(call generate-ipq-wifi-package,linksys_homewrk,Linksys HomeWRK)) $(eval $(call generate-ipq-wifi-package,linksys_homewrk,Linksys HomeWRK))
$(eval $(call generate-ipq-wifi-package,linksys_mr5500,Linksys MR5500))
$(eval $(call generate-ipq-wifi-package,linksys_mr7350,Linksys MR7350)) $(eval $(call generate-ipq-wifi-package,linksys_mr7350,Linksys MR7350))
$(eval $(call generate-ipq-wifi-package,linksys_mx2000,Linksys MX2000)) $(eval $(call generate-ipq-wifi-package,linksys_mx2000,Linksys MX2000))
$(eval $(call generate-ipq-wifi-package,linksys_mx4200,Linksys MX4200)) $(eval $(call generate-ipq-wifi-package,linksys_mx4200,Linksys MX4200))

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=libpcap PKG_NAME:=libpcap
PKG_VERSION:=1.10.5 PKG_VERSION:=1.10.5
PKG_RELEASE:=1 PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.tcpdump.org/release/ PKG_SOURCE_URL:=https://www.tcpdump.org/release/

View File

@ -0,0 +1,28 @@
From fcb2cbc3a306afcf7785a60a74dbea431e609d76 Mon Sep 17 00:00:00 2001
From: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Date: Thu, 6 Jan 2022 15:51:54 -0300
Subject: [PATCH 1/2] Add support for Realtek (Ethertype) DSA data
Realtek switchtag rtl4a (4 bytes long, protocol 0xA) and rtl8_4 (8 bytes
long, protocol 0x04) are Ethertype DSA tags, inserted in the Ethernet
header similar to an 802.1Q tag. Both shares the same Ethertype 0x8899
as other Realtek proprietary protocols.
Realtek switchtag rtl8_4t is identical to rtl8_4 but positioned before
the CRC, at the end of the Ethernet frame.
---
pcap-linux.c | 3 +++
1 file changed, 3 insertions(+)
--- a/pcap-linux.c
+++ b/pcap-linux.c
@@ -5281,6 +5281,9 @@ static struct dsa_proto {
{ "brcm-prepend", DLT_DSA_TAG_BRCM_PREPEND },
{ "dsa", DLT_DSA_TAG_DSA },
{ "edsa", DLT_DSA_TAG_EDSA },
+ { "rtl4a", DLT_EN10MB },
+ { "rtl8_4", DLT_EN10MB },
+ { "rtl8_4t", DLT_EN10MB },
};
static int

View File

@ -0,0 +1,322 @@
From 7d298976beff0cce310fb53a430f82b53f43a394 Mon Sep 17 00:00:00 2001
From: Guy Harris <gharris@sonic.net>
Date: Fri, 14 Feb 2025 19:12:24 -0800
Subject: [PATCH 2/2] Linux: handle other DSA tags.
Many of those entries need their own LINKTYPE_/DLT_? values, including
tcpdump and Wireshark support for same, but at least this lets you see
raw hex data from a capture.
Fixes #1367.
Supercedes #1451.
---
pcap-linux.c | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 280 insertions(+), 4 deletions(-)
--- a/pcap-linux.c
+++ b/pcap-linux.c
@@ -5267,23 +5267,299 @@ iface_get_offload(pcap_t *handle _U_)
}
#endif /* SIOCETHTOOL */
+/*
+ * As per
+ *
+ * https://www.kernel.org/doc/html/latest/networking/dsa/dsa.html#switch-tagging-protocols
+ *
+ * Type 1 means that the tag is prepended to the Ethernet packet.
+ * LINKTYPE_ETHERNET/DLT_EN10MB doesn't work, as it would try to
+ * dissect the tag data as the Ethernet header. These should get
+ * their own LINKTYPE_DLT_ values.
+ *
+ * Type 2 means that the tag is inserted into the Ethernet header
+ * after the source address and before the type/length field.
+ *
+ * Type 3 means that tag is a packet trailer. LINKTYPE_ETHERNET/DLT_EN10MB
+ * works, unless the next-layer protocol has no length field of its own,
+ * so that the tag might be treated as part of the payload. These should
+ * get their own LINKTYPE_/DLT_ values.
+ *
+ * If you get an "unsupported DSA tag" error, please add the tag to here,
+ * complete with a full comment indicating whether it's type 1, 2, or 3,
+ * and, for type 2, indicating whether it has an Ethertype and, if so
+ * what that type is, and whether it's registered with the IEEE or is
+ * self-assigned. Also, point to *something* that indicates the format
+ * of the tag.
+ */
static struct dsa_proto {
const char *name;
bpf_u_int32 linktype;
} dsa_protos[] = {
/*
- * None is special and indicates that the interface does not have
- * any tagging protocol configured, and is therefore a standard
- * Ethernet interface.
+ * Type 1. See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ar9331.c
+ */
+ { "ar9331", DLT_EN10MB },
+
+ /*
+ * Type 2, without an Ethertype at the beginning,
+ * assigned a LINKTYPE_/DLT_ value.
*/
- { "none", DLT_EN10MB },
{ "brcm", DLT_DSA_TAG_BRCM },
+
+ /*
+ * Type 2, with Ethertype 0x8874, assigned to Broadcom.
+ *
+ * This doies not require a LINKTYPE_/DLT_ value, it
+ * just requires that Ethertype 0x8874 be dissected
+ * properly.
+ */
+ { "brcm-legacy", DLT_EN10MB },
+
+ /*
+ * Type 1.
+ */
{ "brcm-prepend", DLT_DSA_TAG_BRCM_PREPEND },
+
+ /*
+ * Type 2, without an Etherype at he beginning,
+ * assigned a LINKTYPE_/DLT_ value.
+ */
{ "dsa", DLT_DSA_TAG_DSA },
+
+ /*
+ * Type 2, with an Ethertype field, but without
+ * an assigned Ethertype value that can be relied
+ * on; assigned a LINKTYPE_/DLT_ value.
+ */
{ "edsa", DLT_DSA_TAG_EDSA },
+
+ /*
+ * Type 1, with different transmit and receive headers,
+ * so can't really be handled well with the current
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
+ * to get the direction?
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_gswip.c
+ */
+ { "gswip", DLT_EN10MB },
+
+ /*
+ * Type 3. See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_hellcreek.c
+ */
+ { "hellcreek", DLT_EN10MB },
+
+ /*
+ * Type 3, with different transmit and receive headers,
+ * so can't really be handled well with the current
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
+ * to get the direction?
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ksz.c#L102
+ */
+ { "ksz8795", DLT_EN10MB },
+
+ /*
+ * Type 3, with different transmit and receive headers,
+ * so can't really be handled well with the current
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
+ * to get the direction?
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ksz.c#L160
+ */
+ { "ksz9477", DLT_EN10MB },
+
+ /*
+ * Type 3, with different transmit and receive headers,
+ * so can't really be handled well with the current
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
+ * to get the direction?
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ksz.c#L341
+ */
+ { "ksz9893", DLT_EN10MB },
+
+ /*
+ * Type 3, with different transmit and receive headers,
+ * so can't really be handled well with the current
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
+ * to get the direction?
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ksz.c#L386
+ */
+ { "lan937x", DLT_EN10MB },
+
+ /*
+ * Type 2, with Ethertype 0x8100; the VID can be interpreted
+ * as per
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_lan9303.c#L24
+ *
+ * so giving its own LINKTYPE_/DLT_ value would allow a
+ * dissector to do so.
+ */
+ { "lan9303", DLT_EN10MB },
+
+ /*
+ * Type 2, without an Etherype at he beginning,
+ * should be assigned a LINKTYPE_/DLT_ value.
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_mtk.c#L15
+ */
+ { "mtk", DLT_EN10MB },
+
+ /*
+ * None is special and indicates that the interface does not have
+ * any tagging protocol configured, and is therefore a standard
+ * Ethernet interface.
+ */
+ { "none", DLT_EN10MB },
+
+ /*
+ * Type 1.
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ocelot.c
+ */
+ { "ocelot", DLT_EN10MB },
+
+ /*
+ * Type 1.
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ocelot.c
+ */
+ { "seville", DLT_EN10MB },
+
+ /*
+ * Type 2, with Ethertype 0x8100; the VID can be interpreted
+ * as per
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_8021q.c#L15
+ *
+ * so giving its own LINKTYPE_/DLT_ value would allow a
+ * dissector to do so.
+ */
+ { "ocelot-8021q", DLT_EN10MB },
+
+ /*
+ * Type 2, without an Etherype at he beginning,
+ * should be assigned a LINKTYPE_/DLT_ value.
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_qca.c
+ */
+ { "qca", DLT_EN10MB },
+
+ /*
+ * Type 2, with Ethertype 0x8899, assigned to Realtek;
+ * they use it for several on-the-Ethernet protocols
+ * as well, but there are fields that allow the two
+ * tag formats, and all the protocols in question,
+ * to be distinguiished from one another.
+ *
+ * This doies not require a LINKTYPE_/DLT_ value, it
+ * just requires that Ethertype 0x8899 be dissected
+ * properly.
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_rtl4_a.c
+ *
+ * http://realtek.info/pdf/rtl8306sd%28m%29_datasheet_1.1.pdf
+ *
+ * and various pages in tcpdump's print-realtek.c and Wireshark's
+ * epan/dissectors/packet-realtek.c for the other protocols.
+ */
{ "rtl4a", DLT_EN10MB },
+
+ /*
+ * Type 2, with Ethertype 0x8899, assigned to Realtek;
+ * see above.
+ */
{ "rtl8_4", DLT_EN10MB },
+
+ /*
+ * Type 3, with the same tag format as rtl8_4.
+ */
{ "rtl8_4t", DLT_EN10MB },
+
+ /*
+ * Type 2, with Ethertype 0xe001; that's probably
+ * self-assigned, so this really should ahve its
+ * own LINKTYPE_/DLT_ value.
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_rzn1_a5psw.c
+ */
+ { "a5psw", DLT_EN10MB },
+
+ /*
+ * Type 2, with Ethertype 0x8100 or the self-assigned
+ * 0xdadb, so this really should ahve its own
+ * LINKTYPE_/DLT_ value; that would also allow the
+ * VID of the tag to be dissected as per
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_8021q.c#L15
+ */
+ { "sja1105", DLT_EN10MB },
+
+ /*
+ * Type "none of the above", with both a header and trailer,
+ * with different transmit and receive tags. Has
+ * Ethertype 0xdadc, which is probably self-assigned.
+ * This should really have its own LINKTYPE_/DLT_ value.
+ */
+ { "sja1110", DLT_EN10MB },
+
+ /*
+ * Type 3, as the name suggests.
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_trailer.c
+ */
+ { "trailer", DLT_EN10MB },
+
+ /*
+ * Type 2, with Ethertype 0x8100; the VID can be interpreted
+ * as per
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_8021q.c#L15
+ *
+ * so giving its own LINKTYPE_/DLT_ value would allow a
+ * dissector to do so.
+ */
+ { "vsc73xx-8021q", DLT_EN10MB },
+
+ /*
+ * Type 3.
+ *
+ * See
+ *
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_xrs700x.c
+ */
+ { "xrs700x", DLT_EN10MB },
};
static int

View File

@ -23,7 +23,7 @@ hostapd_ucode_bss_get_uval(struct hostapd_data *hapd)
uc_value_t *val; uc_value_t *val;
if (hapd->ucode.idx) if (hapd->ucode.idx)
return wpa_ucode_registry_get(bss_registry, hapd->ucode.idx); return ucv_get(wpa_ucode_registry_get(bss_registry, hapd->ucode.idx));
val = uc_resource_new(bss_type, hapd); val = uc_resource_new(bss_type, hapd);
hapd->ucode.idx = wpa_ucode_registry_add(bss_registry, val); hapd->ucode.idx = wpa_ucode_registry_add(bss_registry, val);
@ -37,7 +37,7 @@ hostapd_ucode_iface_get_uval(struct hostapd_iface *hapd)
uc_value_t *val; uc_value_t *val;
if (hapd->ucode.idx) if (hapd->ucode.idx)
return wpa_ucode_registry_get(iface_registry, hapd->ucode.idx); return ucv_get(wpa_ucode_registry_get(iface_registry, hapd->ucode.idx));
val = uc_resource_new(iface_type, hapd); val = uc_resource_new(iface_type, hapd);
hapd->ucode.idx = wpa_ucode_registry_add(iface_registry, val); hapd->ucode.idx = wpa_ucode_registry_add(iface_registry, val);
@ -54,12 +54,11 @@ hostapd_ucode_update_bss_list(struct hostapd_iface *iface, uc_value_t *if_bss, u
list = ucv_array_new(vm); list = ucv_array_new(vm);
for (i = 0; iface->bss && i < iface->num_bss; i++) { for (i = 0; iface->bss && i < iface->num_bss; i++) {
struct hostapd_data *hapd = iface->bss[i]; struct hostapd_data *hapd = iface->bss[i];
uc_value_t *val = hostapd_ucode_bss_get_uval(hapd);
ucv_array_set(list, i, ucv_get(ucv_string_new(hapd->conf->iface))); ucv_array_set(list, i, ucv_string_new(hapd->conf->iface));
ucv_object_add(bss, hapd->conf->iface, ucv_get(val)); ucv_object_add(bss, hapd->conf->iface, hostapd_ucode_bss_get_uval(hapd));
} }
ucv_object_add(if_bss, iface->phy, ucv_get(list)); ucv_object_add(if_bss, iface->phy, list);
} }
static void static void
@ -73,13 +72,14 @@ hostapd_ucode_update_interfaces(void)
for (i = 0; i < interfaces->count; i++) { for (i = 0; i < interfaces->count; i++) {
struct hostapd_iface *iface = interfaces->iface[i]; struct hostapd_iface *iface = interfaces->iface[i];
ucv_object_add(ifs, iface->phy, ucv_get(hostapd_ucode_iface_get_uval(iface))); ucv_object_add(ifs, iface->phy, hostapd_ucode_iface_get_uval(iface));
hostapd_ucode_update_bss_list(iface, if_bss, bss); hostapd_ucode_update_bss_list(iface, if_bss, bss);
} }
ucv_object_add(ucv_prototype_get(global), "interfaces", ucv_get(ifs)); ucv_object_add(ucv_prototype_get(global), "interfaces", ifs);
ucv_object_add(ucv_prototype_get(global), "interface_bss", ucv_get(if_bss)); ucv_object_add(ucv_prototype_get(global), "interface_bss", if_bss);
ucv_object_add(ucv_prototype_get(global), "bss", ucv_get(bss)); ucv_object_add(ucv_prototype_get(global), "bss", bss);
ucv_gc(vm); ucv_gc(vm);
} }
@ -362,6 +362,10 @@ uc_hostapd_iface_add_bss(uc_vm_t *vm, size_t nargs)
hapd->driver = iface->bss[0]->driver; hapd->driver = iface->bss[0]->driver;
hapd->drv_priv = iface->bss[0]->drv_priv; hapd->drv_priv = iface->bss[0]->drv_priv;
#ifdef CONFIG_IEEE80211BE
os_strlcpy(hapd->ctrl_sock_iface, hapd->conf->iface,
sizeof(hapd->ctrl_sock_iface));
#endif
if (interfaces->ctrl_iface_init && if (interfaces->ctrl_iface_init &&
interfaces->ctrl_iface_init(hapd) < 0) interfaces->ctrl_iface_init(hapd) < 0)
goto free_hapd; goto free_hapd;
@ -721,11 +725,10 @@ int hostapd_ucode_sta_auth(struct hostapd_data *hapd, struct sta_info *sta)
if (wpa_ucode_call_prepare("sta_auth")) if (wpa_ucode_call_prepare("sta_auth"))
return 0; return 0;
uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); uc_value_push(ucv_string_new(hapd->conf->iface));
snprintf(addr, sizeof(addr), MACSTR, MAC2STR(sta->addr)); snprintf(addr, sizeof(addr), MACSTR, MAC2STR(sta->addr));
val = ucv_string_new(addr); uc_value_push(ucv_string_new(addr));
uc_value_push(ucv_get(val));
val = wpa_ucode_call(2); val = wpa_ucode_call(2);
@ -787,16 +790,15 @@ void hostapd_ucode_sta_connected(struct hostapd_data *hapd, struct sta_info *sta
if (wpa_ucode_call_prepare("sta_connected")) if (wpa_ucode_call_prepare("sta_connected"))
return; return;
uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); uc_value_push(ucv_string_new(hapd->conf->iface));
snprintf(addr, sizeof(addr), MACSTR, MAC2STR(sta->addr)); snprintf(addr, sizeof(addr), MACSTR, MAC2STR(sta->addr));
val = ucv_string_new(addr); uc_value_push(ucv_string_new(addr));
uc_value_push(ucv_get(val));
val = ucv_object_new(vm); val = ucv_object_new(vm);
if (sta->psk_idx) if (sta->psk_idx)
ucv_object_add(val, "psk_idx", ucv_int64_new(sta->psk_idx - 1)); ucv_object_add(val, "psk_idx", ucv_int64_new(sta->psk_idx - 1));
uc_value_push(ucv_get(val)); uc_value_push(val);
val = wpa_ucode_call(3); val = wpa_ucode_call(3);
if (ucv_type(val) != UC_OBJECT) if (ucv_type(val) != UC_OBJECT)
@ -918,7 +920,7 @@ void hostapd_ucode_free(void)
void hostapd_ucode_free_iface(struct hostapd_iface *iface) void hostapd_ucode_free_iface(struct hostapd_iface *iface)
{ {
wpa_ucode_registry_remove(iface_registry, iface->ucode.idx); ucv_put(wpa_ucode_registry_remove(iface_registry, iface->ucode.idx));
} }
void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type) void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type)
@ -929,10 +931,11 @@ void hostapd_ucode_bss_cb(struct hostapd_data *hapd, const char *type)
return; return;
val = hostapd_ucode_bss_get_uval(hapd); val = hostapd_ucode_bss_get_uval(hapd);
uc_value_push(ucv_get(ucv_string_new(hapd->iface->phy))); uc_value_push(ucv_string_new(hapd->iface->phy));
uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); uc_value_push(ucv_string_new(hapd->conf->iface));
uc_value_push(ucv_get(val)); uc_value_push(ucv_get(val));
ucv_put(wpa_ucode_call(3)); ucv_put(wpa_ucode_call(3));
ucv_put(val);
ucv_gc(vm); ucv_gc(vm);
} }
@ -951,6 +954,8 @@ void hostapd_ucode_free_bss(struct hostapd_data *hapd)
uc_value_push(ucv_string_new(hapd->conf->iface)); uc_value_push(ucv_string_new(hapd->conf->iface));
uc_value_push(ucv_get(val)); uc_value_push(ucv_get(val));
ucv_put(wpa_ucode_call(2)); ucv_put(wpa_ucode_call(2));
ucv_put(val);
ucv_gc(vm); ucv_gc(vm);
} }
@ -963,10 +968,11 @@ void hostapd_ucode_apup_newpeer(struct hostapd_data *hapd, const char *ifname)
return; return;
val = hostapd_ucode_bss_get_uval(hapd); val = hostapd_ucode_bss_get_uval(hapd);
uc_value_push(ucv_get(ucv_string_new(hapd->conf->iface))); // BSS ifname uc_value_push(ucv_string_new(hapd->conf->iface)); // BSS ifname
uc_value_push(ucv_get(val)); uc_value_push(ucv_get(val));
uc_value_push(ucv_get(ucv_string_new(ifname))); // APuP peer ifname uc_value_push(ucv_string_new(ifname)); // APuP peer ifname
ucv_put(wpa_ucode_call(2)); ucv_put(wpa_ucode_call(2));
ucv_put(val);
ucv_gc(vm); ucv_gc(vm);
} }
#endif // def CONFIG_APUP #endif // def CONFIG_APUP

View File

@ -172,7 +172,7 @@ uc_value_t *uc_wpa_freq_info(uc_vm_t *vm, size_t nargs)
ucv_object_add(ret, "op_class", ucv_int64_new(op_class)); ucv_object_add(ret, "op_class", ucv_int64_new(op_class));
ucv_object_add(ret, "channel", ucv_int64_new(channel)); ucv_object_add(ret, "channel", ucv_int64_new(channel));
ucv_object_add(ret, "hw_mode", ucv_int64_new(hw_mode)); ucv_object_add(ret, "hw_mode", ucv_int64_new(hw_mode));
ucv_object_add(ret, "hw_mode_str", ucv_get(ucv_string_new(modestr))); ucv_object_add(ret, "hw_mode_str", ucv_string_new(modestr));
ucv_object_add(ret, "sec_channel", ucv_int64_new(sec_channel)); ucv_object_add(ret, "sec_channel", ucv_int64_new(sec_channel));
ucv_object_add(ret, "frequency", ucv_int64_new(freq_val)); ucv_object_add(ret, "frequency", ucv_int64_new(freq_val));
@ -426,7 +426,7 @@ uc_value_t *wpa_ucode_global_init(const char *name, uc_resource_type_t *global_t
uc_vm_registry_set(&vm, "hostap.global", global); uc_vm_registry_set(&vm, "hostap.global", global);
proto = ucv_prototype_get(global); proto = ucv_prototype_get(global);
ucv_object_add(proto, "data", ucv_get(ucv_object_new(&vm))); ucv_object_add(proto, "data", ucv_object_new(&vm));
#define ADD_CONST(x) ucv_object_add(proto, #x, ucv_int64_new(x)) #define ADD_CONST(x) ucv_object_add(proto, #x, ucv_int64_new(x))
ADD_CONST(MSG_EXCESSIVE); ADD_CONST(MSG_EXCESSIVE);
@ -471,6 +471,7 @@ uc_value_t *wpa_ucode_registry_remove(uc_value_t *reg, int idx)
if (!val) if (!val)
return NULL; return NULL;
ucv_get(val);
ucv_array_set(reg, idx - 1, NULL); ucv_array_set(reg, idx - 1, NULL);
dataptr = ucv_resource_dataptr(val, NULL); dataptr = ucv_resource_dataptr(val, NULL);
if (dataptr) if (dataptr)

View File

@ -20,7 +20,7 @@ wpas_ucode_iface_get_uval(struct wpa_supplicant *wpa_s)
uc_value_t *val; uc_value_t *val;
if (wpa_s->ucode.idx) if (wpa_s->ucode.idx)
return wpa_ucode_registry_get(iface_registry, wpa_s->ucode.idx); return ucv_get(wpa_ucode_registry_get(iface_registry, wpa_s->ucode.idx));
val = uc_resource_new(iface_type, wpa_s); val = uc_resource_new(iface_type, wpa_s);
wpa_s->ucode.idx = wpa_ucode_registry_add(iface_registry, val); wpa_s->ucode.idx = wpa_ucode_registry_add(iface_registry, val);
@ -36,9 +36,9 @@ wpas_ucode_update_interfaces(void)
int i; int i;
for (wpa_s = wpa_global->ifaces; wpa_s; wpa_s = wpa_s->next) for (wpa_s = wpa_global->ifaces; wpa_s; wpa_s = wpa_s->next)
ucv_object_add(ifs, wpa_s->ifname, ucv_get(wpas_ucode_iface_get_uval(wpa_s))); ucv_object_add(ifs, wpa_s->ifname, wpas_ucode_iface_get_uval(wpa_s));
ucv_object_add(ucv_prototype_get(global), "interfaces", ucv_get(ifs)); ucv_object_add(ucv_prototype_get(global), "interfaces", ifs);
ucv_gc(vm); ucv_gc(vm);
} }
@ -49,8 +49,8 @@ void wpas_ucode_add_bss(struct wpa_supplicant *wpa_s)
if (wpa_ucode_call_prepare("iface_add")) if (wpa_ucode_call_prepare("iface_add"))
return; return;
uc_value_push(ucv_get(ucv_string_new(wpa_s->ifname))); uc_value_push(ucv_string_new(wpa_s->ifname));
uc_value_push(ucv_get(wpas_ucode_iface_get_uval(wpa_s))); uc_value_push(wpas_ucode_iface_get_uval(wpa_s));
ucv_put(wpa_ucode_call(2)); ucv_put(wpa_ucode_call(2));
ucv_gc(vm); ucv_gc(vm);
} }
@ -67,9 +67,10 @@ void wpas_ucode_free_bss(struct wpa_supplicant *wpa_s)
if (wpa_ucode_call_prepare("iface_remove")) if (wpa_ucode_call_prepare("iface_remove"))
return; return;
uc_value_push(ucv_get(ucv_string_new(wpa_s->ifname))); uc_value_push(ucv_string_new(wpa_s->ifname));
uc_value_push(ucv_get(val)); uc_value_push(ucv_get(val));
ucv_put(wpa_ucode_call(2)); ucv_put(wpa_ucode_call(2));
ucv_put(val);
ucv_gc(vm); ucv_gc(vm);
} }
@ -86,9 +87,9 @@ void wpas_ucode_update_state(struct wpa_supplicant *wpa_s)
return; return;
state = wpa_supplicant_state_txt(wpa_s->wpa_state); state = wpa_supplicant_state_txt(wpa_s->wpa_state);
uc_value_push(ucv_get(ucv_string_new(wpa_s->ifname))); uc_value_push(ucv_string_new(wpa_s->ifname));
uc_value_push(ucv_get(val)); uc_value_push(ucv_get(val));
uc_value_push(ucv_get(ucv_string_new(state))); uc_value_push(ucv_string_new(state));
ucv_put(wpa_ucode_call(3)); ucv_put(wpa_ucode_call(3));
ucv_gc(vm); ucv_gc(vm);
} }
@ -108,9 +109,9 @@ void wpas_ucode_event(struct wpa_supplicant *wpa_s, int event, union wpa_event_d
if (wpa_ucode_call_prepare("event")) if (wpa_ucode_call_prepare("event"))
return; return;
uc_value_push(ucv_get(ucv_string_new(wpa_s->ifname))); uc_value_push(ucv_string_new(wpa_s->ifname));
uc_value_push(ucv_get(val)); uc_value_push(ucv_get(val));
uc_value_push(ucv_get(ucv_string_new(event_to_string(event)))); uc_value_push(ucv_string_new(event_to_string(event)));
val = ucv_object_new(vm); val = ucv_object_new(vm);
uc_value_push(ucv_get(val)); uc_value_push(ucv_get(val));
@ -212,15 +213,14 @@ uc_wpas_iface_status(uc_vm_t *vm, size_t nargs)
{ {
struct wpa_supplicant *wpa_s = uc_fn_thisval("wpas.iface"); struct wpa_supplicant *wpa_s = uc_fn_thisval("wpas.iface");
struct wpa_bss *bss; struct wpa_bss *bss;
uc_value_t *ret, *val; uc_value_t *ret;
if (!wpa_s) if (!wpa_s)
return NULL; return NULL;
ret = ucv_object_new(vm); ret = ucv_object_new(vm);
val = ucv_string_new(wpa_supplicant_state_txt(wpa_s->wpa_state)); ucv_object_add(ret, "state", ucv_string_new(wpa_supplicant_state_txt(wpa_s->wpa_state)));
ucv_object_add(ret, "state", ucv_get(val));
bss = wpa_s->current_bss; bss = wpa_s->current_bss;
if (bss) { if (bss) {

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=apk PKG_NAME:=apk
PKG_RELEASE:=1 PKG_RELEASE:=2
PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git

View File

@ -0,0 +1,27 @@
From a50f7ea2dd023ef124c5209b487608b37dbeea7c Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Sat, 1 Mar 2025 19:33:18 +0100
Subject: [PATCH] io_url_wget: correctly init wget_out on apk_io_url_init call
Commit fc7768c09497 ("io_url_wget: log wget output using apk_process
api") reworked the implementation but forgot to init the static wget_out
on calling apk_io_url_init. This cause APK to SIGFAULT on apk update or
apk add when actually using the WGET method to download remote packages.
Fix this by setting wget_out with the passed out from apk_io_url_init.
Reported-by: John Crispin <john@phrozen.org>
Fixes: fc7768c09497 ("io_url_wget: log wget output using apk_process api")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
src/io_url_wget.c | 1 +
1 file changed, 1 insertion(+)
--- a/src/io_url_wget.c
+++ b/src/io_url_wget.c
@@ -48,4 +48,5 @@ void apk_io_url_set_redirect_callback(vo
void apk_io_url_init(struct apk_out *out)
{
+ wget_out = out;
}

View File

@ -269,7 +269,7 @@ uc_cert_info(uc_vm_t *vm, size_t nargs)
uc_value_t *info = ucv_object_new(vm); uc_value_t *info = ucv_object_new(vm);
int len; int len;
ucv_array_push(ret, ucv_get(info)); ucv_array_push(ret, info);
ucv_object_add(info, "version", ucv_int64_new(cur->version)); ucv_object_add(info, "version", ucv_int64_new(cur->version));
uc_cert_info_add_name(info, "issuer", &cur->issuer); uc_cert_info_add_name(info, "issuer", &cur->issuer);

View File

@ -153,8 +153,7 @@ uc_uline_get_line(uc_vm_t *vm, size_t nargs)
uline_get_line2(&us->s, &line, &len); uline_get_line2(&us->s, &line, &len);
else else
uline_get_line(&us->s, &line, &len); uline_get_line(&us->s, &line, &len);
val = ucv_string_new_length(line, len); ucv_object_add(state, "line", ucv_string_new_length(line, len));
ucv_object_add(state, "line", ucv_get(val));
ucv_object_add(state, "pos", ucv_int64_new(us->s.line.pos)); ucv_object_add(state, "pos", ucv_int64_new(us->s.line.pos));
return state; return state;
@ -589,7 +588,7 @@ uc_uline_add_pos(uc_vm_t *vm, uc_value_t *list, ssize_t start, ssize_t end)
uc_value_t *val = ucv_array_new(vm); uc_value_t *val = ucv_array_new(vm);
ucv_array_push(val, ucv_int64_new(start)); ucv_array_push(val, ucv_int64_new(start));
ucv_array_push(val, ucv_int64_new(end)); ucv_array_push(val, ucv_int64_new(end));
ucv_array_push(list, ucv_get(val)); ucv_array_push(list, val);
} }
static uc_value_t * static uc_value_t *
@ -630,8 +629,8 @@ uc_uline_parse_args(uc_vm_t *vm, size_t nargs, bool check)
if (argp->line_sep) { if (argp->line_sep) {
args = ucv_array_new(vm); args = ucv_array_new(vm);
pos_args = ucv_array_new(vm); pos_args = ucv_array_new(vm);
ucv_array_push(args, ucv_get(list)); ucv_array_push(args, list);
ucv_array_push(pos_args, ucv_get(pos_list)); ucv_array_push(pos_args, pos_list);
} else { } else {
args = list; args = list;
pos_args = pos_list; pos_args = pos_list;
@ -692,10 +691,10 @@ uc_uline_parse_args(uc_vm_t *vm, size_t nargs, bool check)
buf = NULL; buf = NULL;
list = ucv_array_new(vm); list = ucv_array_new(vm);
ucv_array_push(args, ucv_get(list)); ucv_array_push(args, list);
pos_list = ucv_array_new(vm); pos_list = ucv_array_new(vm);
ucv_array_push(pos_args, ucv_get(pos_list)); ucv_array_push(pos_args, pos_list);
} }
} }
continue; continue;
@ -751,7 +750,7 @@ uc_uline_parse_args(uc_vm_t *vm, size_t nargs, bool check)
} }
if (buf) { if (buf) {
ucv_array_push(list, ucv_get(ucv_stringbuf_finish(buf))); ucv_array_push(list, ucv_stringbuf_finish(buf));
uc_uline_add_pos(vm, pos_list, start_idx, end_idx); uc_uline_add_pos(vm, pos_list, start_idx, end_idx);
} }
@ -762,10 +761,10 @@ uc_uline_parse_args(uc_vm_t *vm, size_t nargs, bool check)
return missing; return missing;
ret = ucv_object_new(vm); ret = ucv_object_new(vm);
ucv_object_add(ret, "args", ucv_get(args)); ucv_object_add(ret, "args", args);
ucv_object_add(ret, "pos", ucv_get(pos_args)); ucv_object_add(ret, "pos", pos_args);
if (missing) if (missing)
ucv_object_add(ret, "missing", ucv_get(missing)); ucv_object_add(ret, "missing", missing);
return ret; return ret;
} }

View File

@ -157,12 +157,12 @@ my %update_method = (
'src-git' => { 'src-git' => {
'init' => "git clone --depth 1 '%s' '%s'", 'init' => "git clone --depth 1 '%s' '%s'",
'init_branch' => "git clone --depth 1 --branch '%s' '%s' '%s'", 'init_branch' => "git clone --depth 1 --branch '%s' '%s' '%s'",
'init_commit' => "git clone '%s' '%s' && cd '%s' && git checkout -b '%s' '%s' && cd -", 'init_commit' => "git clone --depth 1 '%s' '%s' && cd '%s' && git fetch --depth=1 origin '%s' && git -c advice.detachedHead=false checkout '%s' && cd -",
'update' => "git pull --ff-only", 'update' => "git pull --ff-only",
'update_rebase' => "git pull --rebase=merges", 'update_rebase' => "git pull --rebase=merges",
'update_stash' => "git pull --rebase=merges --autostash", 'update_stash' => "git pull --rebase=merges --autostash",
'update_force' => "git pull --ff-only || (git reset --hard HEAD; git pull --ff-only; exit 1)", 'update_force' => "git pull --ff-only || (git reset --hard HEAD; git pull --ff-only; exit 1)",
'post_update' => "git submodule update --init --recursive", 'post_update' => "git submodule update --init --recursive --depth 1",
'controldir' => ".git", 'controldir' => ".git",
'revision' => "git rev-parse HEAD | tr -d '\n'"}, 'revision' => "git rev-parse HEAD | tr -d '\n'"},
'src-git-full' => { 'src-git-full' => {

View File

@ -9,7 +9,6 @@ CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FORCE_MAX_ORDER=10 CONFIG_ARCH_FORCE_MAX_ORDER=10
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
CONFIG_ARCH_MMAP_RND_BITS=18 CONFIG_ARCH_MMAP_RND_BITS=18
@ -20,64 +19,22 @@ CONFIG_ARCH_PROC_KCORE_TEXT=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_STACKWALK=y CONFIG_ARCH_STACKWALK=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
CONFIG_ARCH_USES_PG_ARCH_X=y
CONFIG_ARCH_WANTS_NO_INSTR=y CONFIG_ARCH_WANTS_NO_INSTR=y
CONFIG_ARCH_WANTS_THP_SWAP=y CONFIG_ARCH_WANTS_THP_SWAP=y
CONFIG_ARM64=y CONFIG_ARM64=y
CONFIG_ARM64_4K_PAGES=y CONFIG_ARM64_4K_PAGES=y
CONFIG_ARM64_AMU_EXTN=y
CONFIG_ARM64_BTI=y
CONFIG_ARM64_E0PD=y
CONFIG_ARM64_EPAN=y
CONFIG_ARM64_ERRATUM_1024718=y
CONFIG_ARM64_ERRATUM_1165522=y
CONFIG_ARM64_ERRATUM_1286807=y
CONFIG_ARM64_ERRATUM_1319367=y
CONFIG_ARM64_ERRATUM_1463225=y
CONFIG_ARM64_ERRATUM_1508412=y
CONFIG_ARM64_ERRATUM_1530923=y
CONFIG_ARM64_ERRATUM_1542419=y
CONFIG_ARM64_ERRATUM_2051678=y
CONFIG_ARM64_ERRATUM_2054223=y
CONFIG_ARM64_ERRATUM_2067961=y
CONFIG_ARM64_ERRATUM_2077057=y
CONFIG_ARM64_ERRATUM_2441007=y
CONFIG_ARM64_ERRATUM_2441009=y
CONFIG_ARM64_ERRATUM_2457168=y
CONFIG_ARM64_ERRATUM_2658417=y
CONFIG_ARM64_ERRATUM_819472=y
CONFIG_ARM64_ERRATUM_824069=y
CONFIG_ARM64_ERRATUM_826319=y
CONFIG_ARM64_ERRATUM_827319=y
CONFIG_ARM64_ERRATUM_832075=y
CONFIG_ARM64_ERRATUM_843419=y CONFIG_ARM64_ERRATUM_843419=y
CONFIG_ARM64_ERRATUM_858921=y
CONFIG_ARM64_HW_AFDBM=y
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
CONFIG_ARM64_MTE=y
CONFIG_ARM64_PAGE_SHIFT=12 CONFIG_ARM64_PAGE_SHIFT=12
CONFIG_ARM64_PA_BITS=48 CONFIG_ARM64_PA_BITS=48
CONFIG_ARM64_PA_BITS_48=y CONFIG_ARM64_PA_BITS_48=y
CONFIG_ARM64_PTR_AUTH=y
CONFIG_ARM64_PTR_AUTH_KERNEL=y
CONFIG_ARM64_RAS_EXTN=y
CONFIG_ARM64_SME=y
CONFIG_ARM64_SVE=y
# CONFIG_ARM64_SW_TTBR0_PAN is not set
CONFIG_ARM64_TAGGED_ADDR_ABI=y CONFIG_ARM64_TAGGED_ADDR_ABI=y
CONFIG_ARM64_TLB_RANGE=y
CONFIG_ARM64_VA_BITS=39 CONFIG_ARM64_VA_BITS=39
CONFIG_ARM64_VA_BITS_39=y CONFIG_ARM64_VA_BITS_39=y
CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y
CONFIG_ARM_AIROHA_SOC_CPUFREQ=y CONFIG_ARM_AIROHA_SOC_CPUFREQ=y
CONFIG_ARM_AMBA=y CONFIG_ARM_AMBA=y
CONFIG_ARM_ARCH_TIMER=y CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
CONFIG_ARM_GIC=y CONFIG_ARM_GIC=y
CONFIG_ARM_GIC_V2M=y CONFIG_ARM_GIC_V2M=y
CONFIG_ARM_GIC_V3=y CONFIG_ARM_GIC_V3=y
@ -90,142 +47,72 @@ CONFIG_ARM_SMCCC_SOC_ID=y
# CONFIG_ARM_SMMU is not set # CONFIG_ARM_SMMU is not set
# CONFIG_ARM_SMMU_V3 is not set # CONFIG_ARM_SMMU_V3 is not set
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
CONFIG_BINFMT_MISC=y
# CONFIG_BLK_CGROUP is not set
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_PCI=y
CONFIG_BLK_PM=y CONFIG_BLK_PM=y
CONFIG_BLOCK_LEGACY_AUTOLOAD=y
# CONFIG_BPF_JIT is not set
# CONFIG_BPF_SYSCALL is not set
# CONFIG_BRIDGE_VLAN_FILTERING is not set
CONFIG_BUFFER_HEAD=y CONFIG_BUFFER_HEAD=y
CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y
CONFIG_CAVIUM_ERRATUM_22375=y
CONFIG_CAVIUM_ERRATUM_23154=y
CONFIG_CAVIUM_ERRATUM_27456=y
CONFIG_CAVIUM_ERRATUM_30115=y
CONFIG_CAVIUM_TX2_ERRATUM_219=y
CONFIG_CC_HAVE_SHADOW_CALL_STACK=y CONFIG_CC_HAVE_SHADOW_CALL_STACK=y
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
# CONFIG_CFS_BANDWIDTH is not set
CONFIG_CGROUPS=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_DEBUG=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_FREEZER=y
# CONFIG_CGROUP_NET_CLASSID is not set
# CONFIG_CGROUP_NET_PRIO is not set
# CONFIG_CGROUP_PERF is not set
# CONFIG_CGROUP_PIDS is not set
# CONFIG_CGROUP_RDMA is not set
CONFIG_CGROUP_SCHED=y
CONFIG_CLONE_BACKWARDS=y CONFIG_CLONE_BACKWARDS=y
CONFIG_COMMON_CLK=y CONFIG_COMMON_CLK=y
CONFIG_COMMON_CLK_EN7523=y CONFIG_COMMON_CLK_EN7523=y
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
CONFIG_COMPAT_32BIT_TIME=y # CONFIG_COMPAT_32BIT_TIME is not set
CONFIG_CONTEXT_TRACKING=y CONFIG_CONTEXT_TRACKING=y
CONFIG_CONTEXT_TRACKING_IDLE=y CONFIG_CONTEXT_TRACKING_IDLE=y
CONFIG_COREDUMP=y
CONFIG_CPUFREQ_DT=y
CONFIG_CPUFREQ_DT_PLATDEV=y
CONFIG_CPUSETS=y
CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y CONFIG_CPU_FREQ_GOV_COMMON=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_CPU_ISOLATION=y
CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MITIGATIONS=y
CONFIG_CPU_PM=y
CONFIG_CPU_RMAP=y CONFIG_CPU_RMAP=y
CONFIG_CRC16=y CONFIG_CRC16=y
CONFIG_CRC_CCITT=y CONFIG_CRC_CCITT=y
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_CRYPTO_AUTHENC=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_DEV_EIP93=y CONFIG_CRYPTO_DEV_EIP93=y
CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_DRBG_HMAC=y CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_MENU=y CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_ECHAINIV=y
CONFIG_CRYPTO_GENIV=y
CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_HASH_INFO=y
CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_JITTERENTROPY=y CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
CONFIG_CRYPTO_LIB_DES=y
CONFIG_CRYPTO_LIB_GF128MUL=y CONFIG_CRYPTO_LIB_GF128MUL=y
CONFIG_CRYPTO_LIB_SHA1=y CONFIG_CRYPTO_LIB_SHA1=y
CONFIG_CRYPTO_LIB_SHA256=y CONFIG_CRYPTO_LIB_SHA256=y
CONFIG_CRYPTO_LIB_UTILS=y CONFIG_CRYPTO_LIB_UTILS=y
CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_LZO=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=y
# CONFIG_CRYPTO_PCRYPT is not set
CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=y CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_SEQIV=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA3=y CONFIG_CRYPTO_SHA3=y
CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_ZSTD=y CONFIG_CRYPTO_ZSTD=y
CONFIG_DCACHE_WORD_ACCESS=y CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_MISC=y CONFIG_DEBUG_MISC=y
CONFIG_DEVMEM=y
CONFIG_DMADEVICES=y CONFIG_DMADEVICES=y
CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y
CONFIG_DMA_DIRECT_REMAP=y CONFIG_DMA_DIRECT_REMAP=y
CONFIG_DMA_ENGINE=y CONFIG_DMA_ENGINE=y
CONFIG_DMA_OF=y CONFIG_DMA_OF=y
CONFIG_DMA_OPS=y
CONFIG_DTC=y CONFIG_DTC=y
CONFIG_EDAC_SUPPORT=y CONFIG_EDAC_SUPPORT=y
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4_FS=y CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_FAT_DEFAULT_CODEPAGE=936
CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
CONFIG_FAT_FS=y
CONFIG_FIXED_PHY=y CONFIG_FIXED_PHY=y
CONFIG_FIX_EARLYCON_MEM=y CONFIG_FIX_EARLYCON_MEM=y
# CONFIG_FORTIFY_SOURCE is not set
CONFIG_FRAME_POINTER=y CONFIG_FRAME_POINTER=y
CONFIG_FREEZER=y
CONFIG_FSL_ERRATUM_A008585=y
CONFIG_FS_IOMAP=y CONFIG_FS_IOMAP=y
CONFIG_FS_MBCACHE=y CONFIG_FS_MBCACHE=y
CONFIG_FS_POSIX_ACL=y
CONFIG_FUJITSU_ERRATUM_010001=y
CONFIG_FUNCTION_ALIGNMENT=4 CONFIG_FUNCTION_ALIGNMENT=4
CONFIG_FUNCTION_ALIGNMENT_4B=y CONFIG_FUNCTION_ALIGNMENT_4B=y
CONFIG_FWNODE_MDIO=y CONFIG_FWNODE_MDIO=y
@ -246,7 +133,6 @@ CONFIG_GENERIC_GETTIMEOFDAY=y
CONFIG_GENERIC_IDLE_POLL_SETUP=y CONFIG_GENERIC_IDLE_POLL_SETUP=y
CONFIG_GENERIC_IOREMAP=y CONFIG_GENERIC_IOREMAP=y
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
CONFIG_GENERIC_IRQ_MIGRATION=y
CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
@ -267,17 +153,11 @@ CONFIG_GPIO_CDEV=y
CONFIG_GPIO_EN7523=y CONFIG_GPIO_EN7523=y
CONFIG_GPIO_GENERIC=y CONFIG_GPIO_GENERIC=y
CONFIG_GRO_CELLS=y CONFIG_GRO_CELLS=y
# CONFIG_HARDENED_USERCOPY is not set
CONFIG_HARDIRQS_SW_RESEND=y CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_HAS_DMA=y CONFIG_HAS_DMA=y
CONFIG_HAS_IOMEM=y CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT=y
CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_IOPORT_MAP=y
CONFIG_HISILICON_ERRATUM_161010101=y
CONFIG_HISILICON_ERRATUM_161600802=y
CONFIG_HOTPLUG_CORE_SYNC=y
CONFIG_HOTPLUG_CORE_SYNC_DEAD=y
CONFIG_HOTPLUG_CPU=y
CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_AIROHA=y CONFIG_HW_RANDOM_AIROHA=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
@ -287,25 +167,6 @@ CONFIG_INET_ESP=y
CONFIG_INET_IPCOMP=y CONFIG_INET_IPCOMP=y
CONFIG_INET_TUNNEL=y CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_TUNNEL=y CONFIG_INET_XFRM_TUNNEL=y
CONFIG_INITRAMFS_PRESERVE_MTIME=y
CONFIG_INPUT=y
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_MISC is not set
CONFIG_INTERVAL_TREE=y
CONFIG_INTERVAL_TREE_SPAN_ITER=y
CONFIG_IOMMUFD=y
CONFIG_IOMMU_API=y
# CONFIG_IOMMU_DEBUGFS is not set
# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set
CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
CONFIG_IOMMU_DMA=y
CONFIG_IOMMU_IOVA=y
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
# CONFIG_IOMMU_IO_PGTABLE_DART is not set
# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
CONFIG_IOMMU_SUPPORT=y
CONFIG_IO_URING=y CONFIG_IO_URING=y
CONFIG_IPC_NS=y CONFIG_IPC_NS=y
CONFIG_IPV6=y CONFIG_IPV6=y
@ -324,25 +185,11 @@ CONFIG_IRQCHIP=y
CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_IRQ_FORCED_THREADING=y CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_MSI_IOMMU=y
CONFIG_IRQ_WORK=y CONFIG_IRQ_WORK=y
# CONFIG_ISDN is not set
CONFIG_JBD2=y CONFIG_JBD2=y
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
# CONFIG_JFFS2_FS_XATTR is not set
# CONFIG_JFFS2_SUMMARY is not set
CONFIG_JFFS2_ZLIB=y
CONFIG_KALLSYMS=y
CONFIG_LEGACY_DIRECT_IO=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=8
CONFIG_LIBCRC32C=y
CONFIG_LIBFDT=y CONFIG_LIBFDT=y
CONFIG_LOCALVERSION_AUTO=y
CONFIG_LOCK_DEBUGGING_SUPPORT=y CONFIG_LOCK_DEBUGGING_SUPPORT=y
CONFIG_LOCK_SPIN_ON_OWNER=y CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_LRU_GEN is not set
CONFIG_LZO_COMPRESS=y CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y CONFIG_LZO_DECOMPRESS=y
CONFIG_MDIO_BUS=y CONFIG_MDIO_BUS=y
@ -359,33 +206,19 @@ CONFIG_MMC_MTK=y
CONFIG_MMU_LAZY_TLB_REFCOUNT=y CONFIG_MMU_LAZY_TLB_REFCOUNT=y
CONFIG_MODULES_TREE_LOOKUP=y CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_MODULES_USE_ELF_RELA=y CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_MQ_IOSCHED_DEADLINE=y
CONFIG_MQ_IOSCHED_KYBER=y
CONFIG_MTD_CFI_ADV_OPTIONS=y
# CONFIG_MTD_CFI_AMDSTD is not set
CONFIG_MTD_CFI_GEOMETRY=y
# CONFIG_MTD_CFI_INTELEXT is not set
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_JEDECPROBE=y
CONFIG_MTD_NAND_CORE=y CONFIG_MTD_NAND_CORE=y
CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND_MTK_BMT=y CONFIG_MTD_NAND_MTK_BMT=y
CONFIG_MTD_OF_PARTS_AIROHA=y
CONFIG_MTD_RAW_NAND=y CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_SPI_NAND=y CONFIG_MTD_SPI_NAND=y
CONFIG_MTD_SPLIT_FIRMWARE=y CONFIG_MTD_SPLIT_FIRMWARE=y
CONFIG_MTD_SPLIT_FIRMWARE_NAME="tclinux"
CONFIG_MTD_SPLIT_FIT_FW=y CONFIG_MTD_SPLIT_FIT_FW=y
CONFIG_MTD_SPLIT_LZMA_FW=y
# CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set
CONFIG_MTD_UBI=y CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_BLOCK=y CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_NAMESPACES=y
CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_FLAGS=y
CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_NET_AIROHA=y CONFIG_NET_AIROHA=y
CONFIG_NET_DEVLINK=y CONFIG_NET_DEVLINK=y
@ -395,40 +228,26 @@ CONFIG_NET_DSA_MT7530_MDIO=y
CONFIG_NET_DSA_MT7530_MMIO=y CONFIG_NET_DSA_MT7530_MMIO=y
CONFIG_NET_DSA_TAG_MTK=y CONFIG_NET_DSA_TAG_MTK=y
CONFIG_NET_FLOW_LIMIT=y CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_KEY=y
CONFIG_NET_KEY_MIGRATE=y
# CONFIG_NET_MEDIATEK_SOC is not set # CONFIG_NET_MEDIATEK_SOC is not set
CONFIG_NET_NS=y
# CONFIG_NET_SCHED is not set
CONFIG_NET_SELFTESTS=y CONFIG_NET_SELFTESTS=y
CONFIG_NET_SWITCHDEV=y CONFIG_NET_SWITCHDEV=y
# CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_3COM is not set
CONFIG_NET_VENDOR_MEDIATEK=y CONFIG_NET_VENDOR_MEDIATEK=y
CONFIG_NLS=y CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NO_HZ_COMMON=y CONFIG_NO_HZ_COMMON=y
CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_IDLE=y
CONFIG_NR_CPUS=4 CONFIG_NR_CPUS=4
CONFIG_NTFS_DEBUG=y
CONFIG_NTFS_FS=y
CONFIG_NTFS_RW=y
CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
CONFIG_OF=y CONFIG_OF=y
CONFIG_OF_ADDRESS=y CONFIG_OF_ADDRESS=y
CONFIG_OF_EARLY_FLATTREE=y CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_FLATTREE=y CONFIG_OF_FLATTREE=y
CONFIG_OF_GPIO=y CONFIG_OF_GPIO=y
CONFIG_OF_IOMMU=y
CONFIG_OF_IRQ=y CONFIG_OF_IRQ=y
CONFIG_OF_KOBJ=y CONFIG_OF_KOBJ=y
CONFIG_OF_MDIO=y CONFIG_OF_MDIO=y
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
CONFIG_PAGE_POOL=y CONFIG_PAGE_POOL=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_PARTITION_PERCPU=y CONFIG_PARTITION_PERCPU=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCIEAER=y CONFIG_PCIEAER=y
@ -444,7 +263,6 @@ CONFIG_PCIE_PME=y
CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS=y
CONFIG_PCI_DOMAINS_GENERIC=y CONFIG_PCI_DOMAINS_GENERIC=y
CONFIG_PCI_MSI=y CONFIG_PCI_MSI=y
CONFIG_PCPU_DEV_REFCNT=y
CONFIG_PCS_MTK_LYNXI=y CONFIG_PCS_MTK_LYNXI=y
CONFIG_PERF_EVENTS=y CONFIG_PERF_EVENTS=y
CONFIG_PER_VMA_LOCK=y CONFIG_PER_VMA_LOCK=y
@ -454,7 +272,6 @@ CONFIG_PHYLIB_LEDS=y
CONFIG_PHYLINK=y CONFIG_PHYLINK=y
CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_PHY_AIROHA_PCIE=y CONFIG_PHY_AIROHA_PCIE=y
CONFIG_PID_NS=y
CONFIG_PINCTRL=y CONFIG_PINCTRL=y
CONFIG_PINCTRL_AIROHA=y CONFIG_PINCTRL_AIROHA=y
# CONFIG_PINCTRL_MT2712 is not set # CONFIG_PINCTRL_MT2712 is not set
@ -472,28 +289,17 @@ CONFIG_PINCTRL_AIROHA=y
CONFIG_PM=y CONFIG_PM=y
CONFIG_PM_CLK=y CONFIG_PM_CLK=y
CONFIG_PM_OPP=y CONFIG_PM_OPP=y
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_POWER_RESET=y CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_SYSCON=y CONFIG_POWER_RESET_SYSCON=y
CONFIG_POWER_SUPPLY=y CONFIG_POWER_SUPPLY=y
CONFIG_PREEMPT_NONE_BUILD=y CONFIG_PREEMPT_NONE_BUILD=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PROC_PID_CPUSET=y
CONFIG_PTP_1588_CLOCK_OPTIONAL=y CONFIG_PTP_1588_CLOCK_OPTIONAL=y
CONFIG_QCOM_FALKOR_ERRATUM_1003=y
CONFIG_QCOM_FALKOR_ERRATUM_1009=y
CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
CONFIG_QCOM_QDF2400_ERRATUM_0065=y
CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_RWLOCKS=y
CONFIG_QUEUED_SPINLOCKS=y CONFIG_QUEUED_SPINLOCKS=y
CONFIG_RANDSTRUCT_NONE=y CONFIG_RANDSTRUCT_NONE=y
CONFIG_RAS=y CONFIG_RAS=y
CONFIG_RATIONAL=y CONFIG_RATIONAL=y
CONFIG_RCU_CPU_STALL_TIMEOUT=21
CONFIG_REGMAP=y CONFIG_REGMAP=y
CONFIG_REGMAP_MMIO=y CONFIG_REGMAP_MMIO=y
CONFIG_REGULATOR=y CONFIG_REGULATOR=y
@ -503,18 +309,7 @@ CONFIG_RESET_CONTROLLER=y
CONFIG_RFS_ACCEL=y CONFIG_RFS_ACCEL=y
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
CONFIG_RPS=y CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_RWSEM_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y
# CONFIG_SCHED_CORE is not set
CONFIG_SCHED_DEBUG=y
CONFIG_SCHED_MM_CID=y
CONFIG_SCHED_SMT=y
# CONFIG_SCHED_STACK_END_CHECK is not set
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY_NETWORK is not set
CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_FSL=y
CONFIG_SERIAL_8250_NR_UARTS=5 CONFIG_SERIAL_8250_NR_UARTS=5
@ -522,16 +317,9 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=5
CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_MCTRL_GPIO=y CONFIG_SERIAL_MCTRL_GPIO=y
CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_SERIO=y
CONFIG_SERIO_LIBPS2=y
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SGL_ALLOC=y CONFIG_SGL_ALLOC=y
CONFIG_SKB_EXTENSIONS=y CONFIG_SKB_EXTENSIONS=y
# CONFIG_SLAB_FREELIST_HARDENED is not set
# CONFIG_SLAB_FREELIST_RANDOM is not set
CONFIG_SLUB_DEBUG=y
CONFIG_SMP=y CONFIG_SMP=y
CONFIG_SOCIONEXT_SYNQUACER_PREITS=y
CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_SOCK_RX_QUEUE_MAPPING=y
CONFIG_SOC_BUS=y CONFIG_SOC_BUS=y
CONFIG_SOFTIRQ_ON_OWN_STACK=y CONFIG_SOFTIRQ_ON_OWN_STACK=y
@ -546,56 +334,24 @@ CONFIG_SPI_AIROHA_SNFI=y
CONFIG_SPI_MASTER=y CONFIG_SPI_MASTER=y
CONFIG_SPI_MEM=y CONFIG_SPI_MEM=y
CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
# CONFIG_SQUASHFS_EMBEDDED is not set
CONFIG_SQUASHFS_FILE_CACHE=y
# CONFIG_SQUASHFS_FILE_DIRECT is not set
CONFIG_SQUASHFS_ZLIB=y
CONFIG_STACKDEPOT=y
CONFIG_STACKPROTECTOR=y
CONFIG_STACKPROTECTOR_PER_TASK=y
CONFIG_STACKPROTECTOR_STRONG=y
CONFIG_STACKTRACE=y
# CONFIG_STAGING is not set
# CONFIG_STRIP_ASM_SYMS is not set
CONFIG_SURFACE_PLATFORMS=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
# CONFIG_SWAP is not set
CONFIG_SWIOTLB=y CONFIG_SWIOTLB=y
CONFIG_SWPHY=y CONFIG_SWPHY=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_SYSFS_SYSCALL=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_MD5SIG=y
CONFIG_TEXTSEARCH_BM=y
CONFIG_TEXTSEARCH_FSM=y
CONFIG_TEXTSEARCH_KMP=y
CONFIG_THERMAL=y CONFIG_THERMAL=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_USER_SPACE=y
CONFIG_THERMAL_OF=y CONFIG_THERMAL_OF=y
CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THREAD_INFO_IN_TASK=y CONFIG_THREAD_INFO_IN_TASK=y
CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_TIMER_OF=y CONFIG_TIMER_OF=y
CONFIG_TIMER_PROBE=y CONFIG_TIMER_PROBE=y
CONFIG_TIME_NS=y
# CONFIG_TMPFS_XATTR is not set
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
CONFIG_TREE_RCU=y CONFIG_TREE_RCU=y
CONFIG_TREE_SRCU=y CONFIG_TREE_SRCU=y
CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS=y
CONFIG_UBIFS_FS_ADVANCED_COMPR=y # CONFIG_UNMAP_KERNEL_AT_EL0 is not set
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_UNMAP_KERNEL_AT_EL0=y
CONFIG_USELIB=y
CONFIG_USER_NS=y
CONFIG_UTS_NS=y
CONFIG_VFAT_FS=y
CONFIG_VMAP_STACK=y CONFIG_VMAP_STACK=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_WATCHDOG_CORE=y CONFIG_WATCHDOG_CORE=y
# CONFIG_WLAN is not set # CONFIG_WLAN is not set
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
@ -606,13 +362,6 @@ CONFIG_XFRM_IPCOMP=y
CONFIG_XFRM_MIGRATE=y CONFIG_XFRM_MIGRATE=y
CONFIG_XPS=y CONFIG_XPS=y
CONFIG_XXHASH=y CONFIG_XXHASH=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_BCJ=y
CONFIG_XZ_DEC_IA64=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
CONFIG_XZ_DEC_X86=y
CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_INFLATE=y
CONFIG_ZONE_DMA32=y CONFIG_ZONE_DMA32=y

View File

@ -1,170 +0,0 @@
From ca46c5834ba3a74595a93d7a491fa9c943be7c30 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Sun, 28 Jul 2024 12:15:53 +0200
Subject: [PATCH 3/3] mtd: parser: add support for Airoha parser
Add support for Airoha parser based on a post parse ofpart function.
Airoha partition table follow normal fixed-partition implementation
with a special implementation for the ART partition. This is always the
past partition and is placed from the end of the flash - the partition
size.
To enable this special implementation for ART partition, the relevant
node require the "airoha,dynamic-art" compatible. With that declared,
offset value is ignored and real offset is updated with the calculated
value.
Due to usage of specific bad block management driver, the MTD size might
vary hence the ART partition offset needs to be dynamically parsed and
can't be declared statically.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/mtd/parsers/Kconfig | 10 ++++++
drivers/mtd/parsers/Makefile | 1 +
drivers/mtd/parsers/ofpart_airoha.c | 56 +++++++++++++++++++++++++++++
drivers/mtd/parsers/ofpart_airoha.h | 18 ++++++++++
drivers/mtd/parsers/ofpart_core.c | 6 ++++
5 files changed, 91 insertions(+)
create mode 100644 drivers/mtd/parsers/ofpart_airoha.c
create mode 100644 drivers/mtd/parsers/ofpart_airoha.h
--- a/drivers/mtd/parsers/Kconfig
+++ b/drivers/mtd/parsers/Kconfig
@@ -93,6 +93,16 @@ config MTD_OF_PARTS
flash memory node, as described in
Documentation/devicetree/bindings/mtd/mtd.yaml.
+config MTD_OF_PARTS_AIROHA
+ bool "Airoha EN7815 partitioning support"
+ depends on MTD_OF_PARTS && (ARCH_AIROHA || COMPILE_TEST)
+ default ARCH_AIROHA
+ help
+ This provides partitions parser for Airoha EN7815 family devices
+ that can have dynamic "ART" partition at the end of the flash.
+ It takes care of finding the correct offset and update property
+ with it.
+
config MTD_OF_PARTS_BCM4908
bool "BCM4908 partitioning support"
depends on MTD_OF_PARTS && (ARCH_BCMBCA || COMPILE_TEST)
--- a/drivers/mtd/parsers/Makefile
+++ b/drivers/mtd/parsers/Makefile
@@ -7,6 +7,7 @@ obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdl
obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
ofpart-y += ofpart_core.o
+ofpart-$(CONFIG_MTD_OF_PARTS_AIROHA) += ofpart_airoha.o
ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o
ofpart-$(CONFIG_MTD_OF_PARTS_LINKSYS_NS)+= ofpart_linksys_ns.o
obj-$(CONFIG_MTD_PARSER_IMAGETAG) += parser_imagetag.o
--- /dev/null
+++ b/drivers/mtd/parsers/ofpart_airoha.c
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2024 Christian Marangi <ansuelsmth@gmail.com>
+ */
+
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include "ofpart_airoha.h"
+
+int airoha_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts)
+{
+ struct mtd_partition *part;
+ int len, a_cells, s_cells;
+ struct device_node *pp;
+ struct property *prop;
+ const __be32 *reg;
+ __be32 *new_reg;
+
+ part = &parts[nr_parts - 1];
+ pp = part->of_node;
+
+ /* Skip if ART partition have a valid offset instead of a dynamic one */
+ if (!of_device_is_compatible(pp, "airoha,dynamic-art"))
+ return 0;
+
+ /* ART partition is set at the end of flash - size */
+ part->offset = mtd->size - part->size;
+
+ /* Update the offset with the new calculate value in DT */
+ prop = kzalloc(sizeof(*prop), GFP_KERNEL);
+ if (!prop)
+ return -ENOMEM;
+
+ /* Reg already validated by fixed-partition parser */
+ reg = of_get_property(pp, "reg", &len);
+
+ /* Fixed partition */
+ a_cells = of_n_addr_cells(pp);
+ s_cells = of_n_size_cells(pp);
+
+ prop->name = "reg";
+ prop->length = (a_cells + s_cells) * sizeof(__be32);
+ prop->value = kmemdup(reg, (a_cells + s_cells) * sizeof(__be32),
+ GFP_KERNEL);
+ new_reg = prop->value;
+ memset(new_reg, 0, a_cells * sizeof(__be32));
+ new_reg[a_cells - 1] = cpu_to_be32(part->offset);
+ if (a_cells > 1)
+ new_reg[0] = cpu_to_be32(part->offset >> 32);
+ of_update_property(pp, prop);
+
+ return 0;
+}
--- /dev/null
+++ b/drivers/mtd/parsers/ofpart_airoha.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __OFPART_AIROHA_H
+#define __OFPART_AIROHA_H
+
+#ifdef CONFIG_MTD_OF_PARTS_AIROHA
+int airoha_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts);
+#else
+static inline int airoha_partitions_post_parse(struct mtd_info *mtd,
+ struct mtd_partition *parts,
+ int nr_parts)
+{
+ return -EOPNOTSUPP;
+}
+#endif
+
+#endif
--- a/drivers/mtd/parsers/ofpart_core.c
+++ b/drivers/mtd/parsers/ofpart_core.c
@@ -16,6 +16,7 @@
#include <linux/slab.h>
#include <linux/mtd/partitions.h>
+#include "ofpart_airoha.h"
#include "ofpart_bcm4908.h"
#include "ofpart_linksys_ns.h"
@@ -23,6 +24,10 @@ struct fixed_partitions_quirks {
int (*post_parse)(struct mtd_info *mtd, struct mtd_partition *parts, int nr_parts);
};
+static struct fixed_partitions_quirks airoha_partitions_quirks = {
+ .post_parse = airoha_partitions_post_parse,
+};
+
static struct fixed_partitions_quirks bcm4908_partitions_quirks = {
.post_parse = bcm4908_partitions_post_parse,
};
@@ -192,6 +197,7 @@ static const struct of_device_id parse_o
/* Generic */
{ .compatible = "fixed-partitions" },
/* Customized */
+ { .compatible = "airoha,fixed-partitions", .data = &airoha_partitions_quirks, },
{ .compatible = "brcm,bcm4908-partitions", .data = &bcm4908_partitions_quirks, },
{ .compatible = "linksys,ns-partitions", .data = &linksys_ns_partitions_quirks, },
{},

View File

@ -751,7 +751,7 @@ SVN-Revision: 35130
EXPORT_SYMBOL(xfrm_parse_spi); EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c --- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c
@@ -4262,14 +4262,16 @@ static bool tcp_parse_aligned_timestamp( @@ -4268,14 +4268,16 @@ static bool tcp_parse_aligned_timestamp(
{ {
const __be32 *ptr = (const __be32 *)(th + 1); const __be32 *ptr = (const __be32 *)(th + 1);

View File

@ -89,7 +89,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
commit->event = kzalloc(sizeof(*commit->event), commit->event = kzalloc(sizeof(*commit->event),
--- a/drivers/gpu/drm/i915/display/intel_display.c --- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7280,6 +7280,19 @@ int intel_atomic_commit(struct drm_devic @@ -7298,6 +7298,19 @@ int intel_atomic_commit(struct drm_devic
state->base.legacy_cursor_update = false; state->base.legacy_cursor_update = false;
} }

View File

@ -32,7 +32,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -4483,13 +4483,7 @@ static inline void ____napi_schedule(str @@ -4514,13 +4514,7 @@ static inline void ____napi_schedule(str
*/ */
thread = READ_ONCE(napi->thread); thread = READ_ONCE(napi->thread);
if (thread) { if (thread) {
@ -47,7 +47,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
wake_up_process(thread); wake_up_process(thread);
return; return;
} }
@@ -6645,8 +6639,6 @@ static int napi_poll(struct napi_struct @@ -6676,8 +6670,6 @@ static int napi_poll(struct napi_struct
static int napi_thread_wait(struct napi_struct *napi) static int napi_thread_wait(struct napi_struct *napi)
{ {
@ -56,7 +56,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
set_current_state(TASK_INTERRUPTIBLE); set_current_state(TASK_INTERRUPTIBLE);
while (!kthread_should_stop()) { while (!kthread_should_stop()) {
@@ -6655,15 +6647,13 @@ static int napi_thread_wait(struct napi_ @@ -6686,15 +6678,13 @@ static int napi_thread_wait(struct napi_
* Testing SCHED bit is not enough because SCHED bit might be * Testing SCHED bit is not enough because SCHED bit might be
* set by some other busy poll thread or by napi_disable(). * set by some other busy poll thread or by napi_disable().
*/ */

View File

@ -108,7 +108,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
static inline void rps_lock_irqsave(struct softnet_data *sd, static inline void rps_lock_irqsave(struct softnet_data *sd,
unsigned long *flags) unsigned long *flags)
{ {
@@ -4451,6 +4477,7 @@ EXPORT_SYMBOL(__dev_direct_xmit); @@ -4482,6 +4508,7 @@ EXPORT_SYMBOL(__dev_direct_xmit);
/************************************************************************* /*************************************************************************
* Receiver routines * Receiver routines
*************************************************************************/ *************************************************************************/
@ -116,7 +116,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
int netdev_max_backlog __read_mostly = 1000; int netdev_max_backlog __read_mostly = 1000;
EXPORT_SYMBOL(netdev_max_backlog); EXPORT_SYMBOL(netdev_max_backlog);
@@ -4483,12 +4510,16 @@ static inline void ____napi_schedule(str @@ -4514,12 +4541,16 @@ static inline void ____napi_schedule(str
*/ */
thread = READ_ONCE(napi->thread); thread = READ_ONCE(napi->thread);
if (thread) { if (thread) {
@ -133,7 +133,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
list_add_tail(&napi->poll_list, &sd->poll_list); list_add_tail(&napi->poll_list, &sd->poll_list);
WRITE_ONCE(napi->list_owner, smp_processor_id()); WRITE_ONCE(napi->list_owner, smp_processor_id());
/* If not called from net_rx_action() /* If not called from net_rx_action()
@@ -4734,6 +4765,11 @@ static void napi_schedule_rps(struct sof @@ -4765,6 +4796,11 @@ static void napi_schedule_rps(struct sof
#ifdef CONFIG_RPS #ifdef CONFIG_RPS
if (sd != mysd) { if (sd != mysd) {
@ -145,7 +145,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
sd->rps_ipi_next = mysd->rps_ipi_list; sd->rps_ipi_next = mysd->rps_ipi_list;
mysd->rps_ipi_list = sd; mysd->rps_ipi_list = sd;
@@ -5957,7 +5993,7 @@ static void net_rps_action_and_irq_enabl @@ -5988,7 +6024,7 @@ static void net_rps_action_and_irq_enabl
#ifdef CONFIG_RPS #ifdef CONFIG_RPS
struct softnet_data *remsd = sd->rps_ipi_list; struct softnet_data *remsd = sd->rps_ipi_list;
@ -154,7 +154,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
sd->rps_ipi_list = NULL; sd->rps_ipi_list = NULL;
local_irq_enable(); local_irq_enable();
@@ -5972,7 +6008,7 @@ static void net_rps_action_and_irq_enabl @@ -6003,7 +6039,7 @@ static void net_rps_action_and_irq_enabl
static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) static bool sd_has_rps_ipi_waiting(struct softnet_data *sd)
{ {
#ifdef CONFIG_RPS #ifdef CONFIG_RPS
@ -163,7 +163,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
#else #else
return false; return false;
#endif #endif
@@ -6016,7 +6052,7 @@ static int process_backlog(struct napi_s @@ -6047,7 +6083,7 @@ static int process_backlog(struct napi_s
* We can use a plain write instead of clear_bit(), * We can use a plain write instead of clear_bit(),
* and we dont need an smp_mb() memory barrier. * and we dont need an smp_mb() memory barrier.
*/ */
@ -172,7 +172,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
again = false; again = false;
} else { } else {
skb_queue_splice_tail_init(&sd->input_pkt_queue, skb_queue_splice_tail_init(&sd->input_pkt_queue,
@@ -6682,43 +6718,48 @@ static void skb_defer_free_flush(struct @@ -6713,43 +6749,48 @@ static void skb_defer_free_flush(struct
} }
} }
@ -250,7 +250,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
return 0; return 0;
} }
@@ -11303,7 +11344,7 @@ static int dev_cpu_dead(unsigned int old @@ -11334,7 +11375,7 @@ static int dev_cpu_dead(unsigned int old
list_del_init(&napi->poll_list); list_del_init(&napi->poll_list);
if (napi->poll == process_backlog) if (napi->poll == process_backlog)
@ -259,7 +259,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
else else
____napi_schedule(sd, napi); ____napi_schedule(sd, napi);
} }
@@ -11311,12 +11352,14 @@ static int dev_cpu_dead(unsigned int old @@ -11342,12 +11383,14 @@ static int dev_cpu_dead(unsigned int old
raise_softirq_irqoff(NET_TX_SOFTIRQ); raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable(); local_irq_enable();
@ -278,7 +278,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
/* Process offline CPU's input_pkt_queue */ /* Process offline CPU's input_pkt_queue */
while ((skb = __skb_dequeue(&oldsd->process_queue))) { while ((skb = __skb_dequeue(&oldsd->process_queue))) {
@@ -11579,6 +11622,38 @@ static struct pernet_operations __net_in @@ -11610,6 +11653,38 @@ static struct pernet_operations __net_in
* *
*/ */
@ -317,7 +317,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
/* /*
* This is called single threaded during boot, so no need * This is called single threaded during boot, so no need
* to take the rtnl semaphore. * to take the rtnl semaphore.
@@ -11629,7 +11704,10 @@ static int __init net_dev_init(void) @@ -11660,7 +11735,10 @@ static int __init net_dev_init(void)
init_gro_hash(&sd->backlog); init_gro_hash(&sd->backlog);
sd->backlog.poll = process_backlog; sd->backlog.poll = process_backlog;
sd->backlog.weight = weight_p; sd->backlog.weight = weight_p;

View File

@ -36,7 +36,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -3306,6 +3306,7 @@ static inline void dev_xmit_recursion_de @@ -3308,6 +3308,7 @@ static inline void dev_xmit_recursion_de
__this_cpu_dec(softnet_data.xmit.recursion); __this_cpu_dec(softnet_data.xmit.recursion);
} }
@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
spin_unlock_irq(&sd->input_pkt_queue.lock); spin_unlock_irq(&sd->input_pkt_queue.lock);
else if (!IS_ENABLED(CONFIG_PREEMPT_RT)) else if (!IS_ENABLED(CONFIG_PREEMPT_RT))
local_irq_enable(); local_irq_enable();
@@ -4784,6 +4784,23 @@ static void napi_schedule_rps(struct sof @@ -4815,6 +4815,23 @@ static void napi_schedule_rps(struct sof
__napi_schedule_irqoff(&mysd->backlog); __napi_schedule_irqoff(&mysd->backlog);
} }

View File

@ -67,7 +67,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
{ {
if (IS_ENABLED(CONFIG_RPS) || use_backlog_threads()) if (IS_ENABLED(CONFIG_RPS) || use_backlog_threads())
spin_unlock_irq(&sd->input_pkt_queue.lock); spin_unlock_irq(&sd->input_pkt_queue.lock);
@@ -4789,12 +4789,12 @@ void kick_defer_list_purge(struct softne @@ -4820,12 +4820,12 @@ void kick_defer_list_purge(struct softne
unsigned long flags; unsigned long flags;
if (use_backlog_threads()) { if (use_backlog_threads()) {
@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
} else if (!cmpxchg(&sd->defer_ipi_scheduled, 0, 1)) { } else if (!cmpxchg(&sd->defer_ipi_scheduled, 0, 1)) {
smp_call_function_single_async(cpu, &sd->defer_csd); smp_call_function_single_async(cpu, &sd->defer_csd);
@@ -4856,7 +4856,7 @@ static int enqueue_to_backlog(struct sk_ @@ -4887,7 +4887,7 @@ static int enqueue_to_backlog(struct sk_
reason = SKB_DROP_REASON_NOT_SPECIFIED; reason = SKB_DROP_REASON_NOT_SPECIFIED;
sd = &per_cpu(softnet_data, cpu); sd = &per_cpu(softnet_data, cpu);
@ -91,7 +91,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
if (!netif_running(skb->dev)) if (!netif_running(skb->dev))
goto drop; goto drop;
qlen = skb_queue_len(&sd->input_pkt_queue); qlen = skb_queue_len(&sd->input_pkt_queue);
@@ -4865,7 +4865,7 @@ static int enqueue_to_backlog(struct sk_ @@ -4896,7 +4896,7 @@ static int enqueue_to_backlog(struct sk_
enqueue: enqueue:
__skb_queue_tail(&sd->input_pkt_queue, skb); __skb_queue_tail(&sd->input_pkt_queue, skb);
input_queue_tail_incr_save(sd, qtail); input_queue_tail_incr_save(sd, qtail);
@ -100,7 +100,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
return NET_RX_SUCCESS; return NET_RX_SUCCESS;
} }
@@ -4880,7 +4880,7 @@ enqueue: @@ -4911,7 +4911,7 @@ enqueue:
drop: drop:
sd->dropped++; sd->dropped++;
@ -109,7 +109,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
dev_core_stats_rx_dropped_inc(skb->dev); dev_core_stats_rx_dropped_inc(skb->dev);
kfree_skb_reason(skb, reason); kfree_skb_reason(skb, reason);
@@ -5911,7 +5911,7 @@ static void flush_backlog(struct work_st @@ -5942,7 +5942,7 @@ static void flush_backlog(struct work_st
local_bh_disable(); local_bh_disable();
sd = this_cpu_ptr(&softnet_data); sd = this_cpu_ptr(&softnet_data);
@ -118,7 +118,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) { if (skb->dev->reg_state == NETREG_UNREGISTERING) {
__skb_unlink(skb, &sd->input_pkt_queue); __skb_unlink(skb, &sd->input_pkt_queue);
@@ -5919,7 +5919,7 @@ static void flush_backlog(struct work_st @@ -5950,7 +5950,7 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd); input_queue_head_incr(sd);
} }
} }
@ -127,7 +127,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
skb_queue_walk_safe(&sd->process_queue, skb, tmp) { skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) { if (skb->dev->reg_state == NETREG_UNREGISTERING) {
@@ -5937,14 +5937,14 @@ static bool flush_required(int cpu) @@ -5968,14 +5968,14 @@ static bool flush_required(int cpu)
struct softnet_data *sd = &per_cpu(softnet_data, cpu); struct softnet_data *sd = &per_cpu(softnet_data, cpu);
bool do_flush; bool do_flush;
@ -144,7 +144,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
return do_flush; return do_flush;
#endif #endif
@@ -6059,7 +6059,7 @@ static int process_backlog(struct napi_s @@ -6090,7 +6090,7 @@ static int process_backlog(struct napi_s
} }
@ -153,7 +153,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
if (skb_queue_empty(&sd->input_pkt_queue)) { if (skb_queue_empty(&sd->input_pkt_queue)) {
/* /*
* Inline a custom version of __napi_complete(). * Inline a custom version of __napi_complete().
@@ -6075,7 +6075,7 @@ static int process_backlog(struct napi_s @@ -6106,7 +6106,7 @@ static int process_backlog(struct napi_s
skb_queue_splice_tail_init(&sd->input_pkt_queue, skb_queue_splice_tail_init(&sd->input_pkt_queue,
&sd->process_queue); &sd->process_queue);
} }

View File

@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -9765,6 +9765,15 @@ static void netdev_sync_lower_features(s @@ -9796,6 +9796,15 @@ static void netdev_sync_lower_features(s
} }
} }
@ -36,7 +36,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
static netdev_features_t netdev_fix_features(struct net_device *dev, static netdev_features_t netdev_fix_features(struct net_device *dev,
netdev_features_t features) netdev_features_t features)
{ {
@@ -9846,15 +9855,9 @@ static netdev_features_t netdev_fix_feat @@ -9877,15 +9886,9 @@ static netdev_features_t netdev_fix_feat
features &= ~NETIF_F_LRO; features &= ~NETIF_F_LRO;
} }
@ -55,7 +55,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
} }
if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) { if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) {
@@ -9862,6 +9865,11 @@ static netdev_features_t netdev_fix_feat @@ -9893,6 +9896,11 @@ static netdev_features_t netdev_fix_feat
features &= ~NETIF_F_HW_TLS_RX; features &= ~NETIF_F_HW_TLS_RX;
} }

View File

@ -18,7 +18,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -10672,6 +10672,8 @@ struct rtnl_link_stats64 *dev_get_stats( @@ -10703,6 +10703,8 @@ struct rtnl_link_stats64 *dev_get_stats(
ops->ndo_get_stats64(dev, storage); ops->ndo_get_stats64(dev, storage);
} else if (ops->ndo_get_stats) { } else if (ops->ndo_get_stats) {
netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev)); netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev));

View File

@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h +++ b/include/linux/netdevice.h
@@ -4567,6 +4567,9 @@ static inline void netif_addr_unlock_bh( @@ -4569,6 +4569,9 @@ static inline void netif_addr_unlock_bh(
void ether_setup(struct net_device *dev); void ether_setup(struct net_device *dev);
@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
unsigned char name_assign_type, unsigned char name_assign_type,
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -10359,25 +10359,12 @@ err_free_name: @@ -10390,25 +10390,12 @@ err_free_name:
} }
EXPORT_SYMBOL(register_netdevice); EXPORT_SYMBOL(register_netdevice);
@ -79,7 +79,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* make sure we BUG if trying to hit standard /* make sure we BUG if trying to hit standard
* register/unregister code path * register/unregister code path
*/ */
@@ -10397,12 +10384,32 @@ int init_dummy_netdev(struct net_device @@ -10428,12 +10415,32 @@ int init_dummy_netdev(struct net_device
* because users of this 'device' dont need to change * because users of this 'device' dont need to change
* its refcount. * its refcount.
*/ */
@ -113,7 +113,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/** /**
* register_netdev - register a network device * register_netdev - register a network device
* @dev: device to register * @dev: device to register
@@ -10996,6 +11003,19 @@ void free_netdev(struct net_device *dev) @@ -11027,6 +11034,19 @@ void free_netdev(struct net_device *dev)
EXPORT_SYMBOL(free_netdev); EXPORT_SYMBOL(free_netdev);
/** /**

View File

@ -0,0 +1,144 @@
From 952d7325362ffbefa6ce5619fb4e53c2159ec7a7 Mon Sep 17 00:00:00 2001
From: Qingfang Deng <dqfext@gmail.com>
Date: Mon, 17 Feb 2025 17:40:21 +0800
Subject: [PATCH] net: ethernet: mediatek: add EEE support
Add EEE support to MediaTek SoC Ethernet. The register fields are
similar to the ones in MT7531, except that the LPI threshold is in
milliseconds.
Signed-off-by: Qingfang Deng <dqfext@gmail.com>
---
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 64 +++++++++++++++++++++
drivers/net/ethernet/mediatek/mtk_eth_soc.h | 11 ++++
2 files changed, 75 insertions(+)
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -786,6 +786,7 @@ static void mtk_mac_link_up(struct phyli
mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
mcr &= ~(MAC_MCR_SPEED_100 | MAC_MCR_SPEED_1000 |
+ MAC_MCR_EEE100M | MAC_MCR_EEE1G |
MAC_MCR_FORCE_DPX | MAC_MCR_FORCE_TX_FC |
MAC_MCR_FORCE_RX_FC);
@@ -811,6 +812,18 @@ static void mtk_mac_link_up(struct phyli
if (rx_pause)
mcr |= MAC_MCR_FORCE_RX_FC;
+ if (mode == MLO_AN_PHY && phy && phy_init_eee(phy, false) >= 0) {
+ switch (speed) {
+ case SPEED_2500:
+ case SPEED_1000:
+ mcr |= MAC_MCR_EEE1G;
+ break;
+ case SPEED_100:
+ mcr |= MAC_MCR_EEE100M;
+ break;
+ }
+ }
+
mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK;
mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
}
@@ -3956,6 +3969,7 @@ static int mtk_hw_init(struct mtk_eth *e
continue;
mtk_w32(eth, MAC_MCR_FORCE_LINK_DOWN, MTK_MAC_MCR(i));
+ mtk_w32(eth, FIELD_PREP(MAC_EEE_LPI_TXIDLE_THD, 1), MTK_MAC_EEECR(i));
mtk_set_mcr_max_rx(netdev_priv(dev),
dev->mtu + MTK_RX_ETH_HLEN);
}
@@ -4476,6 +4490,55 @@ static int mtk_set_pauseparam(struct net
return phylink_ethtool_set_pauseparam(mac->phylink, pause);
}
+static int mtk_get_eee(struct net_device *dev, struct ethtool_eee *eee)
+{
+ struct mtk_mac *mac = netdev_priv(dev);
+ u32 reg;
+ int ret;
+
+ ret = phylink_ethtool_get_eee(mac->phylink, eee);
+ if (ret)
+ return ret;
+
+ reg = mtk_r32(mac->hw, MTK_MAC_EEECR(mac->id));
+ eee->tx_lpi_enabled = !(reg & MAC_EEE_LPI_MODE);
+ eee->tx_lpi_timer = FIELD_GET(MAC_EEE_LPI_TXIDLE_THD, reg) * 1000;
+
+ return 0;
+}
+
+static int mtk_set_eee(struct net_device *dev, struct ethtool_eee *eee)
+{
+ struct mtk_mac *mac = netdev_priv(dev);
+ u32 txidle_thd_ms, reg;
+ int ret;
+
+ /* Tx idle timer in ms */
+ txidle_thd_ms = DIV_ROUND_UP(eee->tx_lpi_timer, 1000);
+ if (!FIELD_FIT(MAC_EEE_LPI_TXIDLE_THD, txidle_thd_ms))
+ return -EINVAL;
+
+ reg = FIELD_PREP(MAC_EEE_LPI_TXIDLE_THD, txidle_thd_ms);
+
+ /* PHY Wake-up time, this field does not have a reset value, so use the
+ * reset value from MT7531 (36us for 100BaseT and 17us for 1000BaseT).
+ */
+ reg |= FIELD_PREP(MAC_EEE_WAKEUP_TIME_1000, 17) |
+ FIELD_PREP(MAC_EEE_WAKEUP_TIME_100, 36);
+
+ if (!txidle_thd_ms)
+ /* Force LPI Mode without a delay */
+ reg |= MAC_EEE_LPI_MODE;
+
+ ret = phylink_ethtool_set_eee(mac->phylink, eee);
+ if (ret)
+ return ret;
+
+ mtk_w32(mac->hw, reg, MTK_MAC_EEECR(mac->id));
+
+ return 0;
+}
+
static u16 mtk_select_queue(struct net_device *dev, struct sk_buff *skb,
struct net_device *sb_dev)
{
@@ -4508,6 +4571,8 @@ static const struct ethtool_ops mtk_etht
.set_pauseparam = mtk_set_pauseparam,
.get_rxnfc = mtk_get_rxnfc,
.set_rxnfc = mtk_set_rxnfc,
+ .get_eee = mtk_get_eee,
+ .set_eee = mtk_set_eee,
};
static const struct net_device_ops mtk_netdev_ops = {
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -453,6 +453,8 @@
#define MAC_MCR_RX_FIFO_CLR_DIS BIT(12)
#define MAC_MCR_BACKOFF_EN BIT(9)
#define MAC_MCR_BACKPR_EN BIT(8)
+#define MAC_MCR_EEE1G BIT(7)
+#define MAC_MCR_EEE100M BIT(6)
#define MAC_MCR_FORCE_RX_FC BIT(5)
#define MAC_MCR_FORCE_TX_FC BIT(4)
#define MAC_MCR_SPEED_1000 BIT(3)
@@ -461,6 +463,15 @@
#define MAC_MCR_FORCE_LINK BIT(0)
#define MAC_MCR_FORCE_LINK_DOWN (MAC_MCR_FORCE_MODE)
+/* Mac EEE control registers */
+#define MTK_MAC_EEECR(x) (0x10104 + (x * 0x100))
+#define MAC_EEE_WAKEUP_TIME_1000 GENMASK(31, 24)
+#define MAC_EEE_WAKEUP_TIME_100 GENMASK(23, 16)
+#define MAC_EEE_LPI_TXIDLE_THD GENMASK(15, 8)
+#define MAC_EEE_CKG_TXIDLE BIT(3)
+#define MAC_EEE_CKG_RXLPI BIT(2)
+#define MAC_EEE_LPI_MODE BIT(0)
+
/* Mac status registers */
#define MTK_MAC_MSR(x) (0x10108 + (x * 0x100))
#define MAC_MSR_EEE1G BIT(7)

View File

@ -85,7 +85,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
/** /**
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -6612,7 +6612,7 @@ static int __napi_poll(struct napi_struc @@ -6643,7 +6643,7 @@ static int __napi_poll(struct napi_struc
* accidentally calling ->poll() when NAPI is not scheduled. * accidentally calling ->poll() when NAPI is not scheduled.
*/ */
work = 0; work = 0;

View File

@ -48,7 +48,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
mtd->nvmem = nvmem_register(&config); mtd->nvmem = nvmem_register(&config);
--- a/drivers/nvmem/core.c --- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c
@@ -940,7 +940,7 @@ struct nvmem_device *nvmem_register(cons @@ -918,7 +918,7 @@ struct nvmem_device *nvmem_register(cons
nvmem->nkeepout = config->nkeepout; nvmem->nkeepout = config->nkeepout;
if (config->of_node) if (config->of_node)
nvmem->dev.of_node = config->of_node; nvmem->dev.of_node = config->of_node;
@ -59,7 +59,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
switch (config->id) { switch (config->id) {
--- a/include/linux/nvmem-provider.h --- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h +++ b/include/linux/nvmem-provider.h
@@ -89,7 +89,6 @@ struct nvmem_cell_info { @@ -91,7 +91,6 @@ struct nvmem_cell_info {
* @read_only: Device is read-only. * @read_only: Device is read-only.
* @root_only: Device is accessibly to root only. * @root_only: Device is accessibly to root only.
* @of_node: If given, this will be used instead of the parent's of_node. * @of_node: If given, this will be used instead of the parent's of_node.
@ -67,7 +67,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* @reg_read: Callback to read data. * @reg_read: Callback to read data.
* @reg_write: Callback to write data. * @reg_write: Callback to write data.
* @size: Device size. * @size: Device size.
@@ -122,7 +121,6 @@ struct nvmem_config { @@ -126,7 +125,6 @@ struct nvmem_config {
bool ignore_wp; bool ignore_wp;
struct nvmem_layout *layout; struct nvmem_layout *layout;
struct device_node *of_node; struct device_node *of_node;

View File

@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
--- a/drivers/nvmem/core.c --- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c
@@ -846,14 +846,6 @@ static int nvmem_add_cells_from_layout(s @@ -823,14 +823,6 @@ static int nvmem_add_cells_from_layout(s
} }
#if IS_ENABLED(CONFIG_OF) #if IS_ENABLED(CONFIG_OF)
@ -65,7 +65,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
#endif /* ifndef _LINUX_NVMEM_CONSUMER_H */ #endif /* ifndef _LINUX_NVMEM_CONSUMER_H */
--- a/include/linux/nvmem-provider.h --- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h +++ b/include/linux/nvmem-provider.h
@@ -244,6 +244,27 @@ nvmem_layout_get_match_data(struct nvmem @@ -241,6 +241,27 @@ nvmem_layout_get_match_data(struct nvmem
#endif /* CONFIG_NVMEM */ #endif /* CONFIG_NVMEM */

View File

@ -1,91 +0,0 @@
From ec9c08a1cb8dc5e8e003f95f5f62de41dde235bb Mon Sep 17 00:00:00 2001
From: Miquel Raynal <miquel.raynal@bootlin.com>
Date: Fri, 15 Dec 2023 11:15:29 +0000
Subject: [PATCH] nvmem: Create a header for internal sharing
Before adding all the NVMEM layout bus infrastructure to the core, let's
move the main nvmem_device structure in an internal header, only
available to the core. This way all the additional code can be added in
a dedicated file in order to keep the current core file tidy.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20231215111536.316972-4-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/nvmem/core.c | 24 +-----------------------
drivers/nvmem/internals.h | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 36 insertions(+), 23 deletions(-)
create mode 100644 drivers/nvmem/internals.h
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -19,29 +19,7 @@
#include <linux/of.h>
#include <linux/slab.h>
-struct nvmem_device {
- struct module *owner;
- struct device dev;
- int stride;
- int word_size;
- int id;
- struct kref refcnt;
- size_t size;
- bool read_only;
- bool root_only;
- int flags;
- enum nvmem_type type;
- struct bin_attribute eeprom;
- struct device *base_dev;
- struct list_head cells;
- const struct nvmem_keepout *keepout;
- unsigned int nkeepout;
- nvmem_reg_read_t reg_read;
- nvmem_reg_write_t reg_write;
- struct gpio_desc *wp_gpio;
- struct nvmem_layout *layout;
- void *priv;
-};
+#include "internals.h"
#define to_nvmem_device(d) container_of(d, struct nvmem_device, dev)
--- /dev/null
+++ b/drivers/nvmem/internals.h
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef _LINUX_NVMEM_INTERNALS_H
+#define _LINUX_NVMEM_INTERNALS_H
+
+#include <linux/device.h>
+#include <linux/nvmem-consumer.h>
+#include <linux/nvmem-provider.h>
+
+struct nvmem_device {
+ struct module *owner;
+ struct device dev;
+ struct list_head node;
+ int stride;
+ int word_size;
+ int id;
+ struct kref refcnt;
+ size_t size;
+ bool read_only;
+ bool root_only;
+ int flags;
+ enum nvmem_type type;
+ struct bin_attribute eeprom;
+ struct device *base_dev;
+ struct list_head cells;
+ const struct nvmem_keepout *keepout;
+ unsigned int nkeepout;
+ nvmem_reg_read_t reg_read;
+ nvmem_reg_write_t reg_write;
+ struct gpio_desc *wp_gpio;
+ struct nvmem_layout *layout;
+ void *priv;
+};
+
+#endif /* ifndef _LINUX_NVMEM_INTERNALS_H */

View File

@ -1,79 +0,0 @@
From 1b7c298a4ecbc28cc6ee94005734bff55eb83d22 Mon Sep 17 00:00:00 2001
From: Miquel Raynal <miquel.raynal@bootlin.com>
Date: Fri, 15 Dec 2023 11:15:30 +0000
Subject: [PATCH] nvmem: Simplify the ->add_cells() hook
The layout entry is not used and will anyway be made useless by the new
layout bus infrastructure coming next, so drop it. While at it, clarify
the kdoc entry.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20231215111536.316972-5-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/nvmem/core.c | 2 +-
drivers/nvmem/layouts/onie-tlv.c | 3 +--
drivers/nvmem/layouts/sl28vpd.c | 3 +--
include/linux/nvmem-provider.h | 8 +++-----
4 files changed, 6 insertions(+), 10 deletions(-)
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -815,7 +815,7 @@ static int nvmem_add_cells_from_layout(s
int ret;
if (layout && layout->add_cells) {
- ret = layout->add_cells(&nvmem->dev, nvmem, layout);
+ ret = layout->add_cells(&nvmem->dev, nvmem);
if (ret)
return ret;
}
--- a/drivers/nvmem/layouts/onie-tlv.c
+++ b/drivers/nvmem/layouts/onie-tlv.c
@@ -182,8 +182,7 @@ static bool onie_tlv_crc_is_valid(struct
return true;
}
-static int onie_tlv_parse_table(struct device *dev, struct nvmem_device *nvmem,
- struct nvmem_layout *layout)
+static int onie_tlv_parse_table(struct device *dev, struct nvmem_device *nvmem)
{
struct onie_tlv_hdr hdr;
size_t table_len, data_len, hdr_len;
--- a/drivers/nvmem/layouts/sl28vpd.c
+++ b/drivers/nvmem/layouts/sl28vpd.c
@@ -80,8 +80,7 @@ static int sl28vpd_v1_check_crc(struct d
return 0;
}
-static int sl28vpd_add_cells(struct device *dev, struct nvmem_device *nvmem,
- struct nvmem_layout *layout)
+static int sl28vpd_add_cells(struct device *dev, struct nvmem_device *nvmem)
{
const struct nvmem_cell_info *pinfo;
struct nvmem_cell_info info = {0};
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
@@ -156,9 +156,8 @@ struct nvmem_cell_table {
*
* @name: Layout name.
* @of_match_table: Open firmware match table.
- * @add_cells: Will be called if a nvmem device is found which
- * has this layout. The function will add layout
- * specific cells with nvmem_add_one_cell().
+ * @add_cells: Called to populate the layout using
+ * nvmem_add_one_cell().
* @fixup_cell_info: Will be called before a cell is added. Can be
* used to modify the nvmem_cell_info.
* @owner: Pointer to struct module.
@@ -172,8 +171,7 @@ struct nvmem_cell_table {
struct nvmem_layout {
const char *name;
const struct of_device_id *of_match_table;
- int (*add_cells)(struct device *dev, struct nvmem_device *nvmem,
- struct nvmem_layout *layout);
+ int (*add_cells)(struct device *dev, struct nvmem_device *nvmem);
void (*fixup_cell_info)(struct nvmem_device *nvmem,
struct nvmem_layout *layout,
struct nvmem_cell_info *cell);

View File

@ -1,169 +0,0 @@
From 1172460e716784ac7e1049a537bdca8edbf97360 Mon Sep 17 00:00:00 2001
From: Miquel Raynal <miquel.raynal@bootlin.com>
Date: Fri, 15 Dec 2023 11:15:31 +0000
Subject: [PATCH] nvmem: Move and rename ->fixup_cell_info()
This hook is meant to be used by any provider and instantiating a layout
just for this is useless. Let's instead move this hook to the nvmem
device and add it to the config structure to be easily shared by the
providers.
While at moving this hook, rename it ->fixup_dt_cell_info() to clarify
its main intended purpose.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20231215111536.316972-6-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/nvmem/core.c | 6 +++---
drivers/nvmem/imx-ocotp.c | 11 +++--------
drivers/nvmem/internals.h | 2 ++
drivers/nvmem/mtk-efuse.c | 11 +++--------
include/linux/nvmem-provider.h | 9 ++++-----
5 files changed, 15 insertions(+), 24 deletions(-)
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -674,7 +674,6 @@ static int nvmem_validate_keepouts(struc
static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
{
- struct nvmem_layout *layout = nvmem->layout;
struct device *dev = &nvmem->dev;
struct device_node *child;
const __be32 *addr;
@@ -704,8 +703,8 @@ static int nvmem_add_cells_from_dt(struc
info.np = of_node_get(child);
- if (layout && layout->fixup_cell_info)
- layout->fixup_cell_info(nvmem, layout, &info);
+ if (nvmem->fixup_dt_cell_info)
+ nvmem->fixup_dt_cell_info(nvmem, &info);
ret = nvmem_add_one_cell(nvmem, &info);
kfree(info.name);
@@ -894,6 +893,7 @@ struct nvmem_device *nvmem_register(cons
kref_init(&nvmem->refcnt);
INIT_LIST_HEAD(&nvmem->cells);
+ nvmem->fixup_dt_cell_info = config->fixup_dt_cell_info;
nvmem->owner = config->owner;
if (!nvmem->owner && config->dev->driver)
--- a/drivers/nvmem/imx-ocotp.c
+++ b/drivers/nvmem/imx-ocotp.c
@@ -583,17 +583,12 @@ static const struct of_device_id imx_oco
};
MODULE_DEVICE_TABLE(of, imx_ocotp_dt_ids);
-static void imx_ocotp_fixup_cell_info(struct nvmem_device *nvmem,
- struct nvmem_layout *layout,
- struct nvmem_cell_info *cell)
+static void imx_ocotp_fixup_dt_cell_info(struct nvmem_device *nvmem,
+ struct nvmem_cell_info *cell)
{
cell->read_post_process = imx_ocotp_cell_pp;
}
-static struct nvmem_layout imx_ocotp_layout = {
- .fixup_cell_info = imx_ocotp_fixup_cell_info,
-};
-
static int imx_ocotp_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -619,7 +614,7 @@ static int imx_ocotp_probe(struct platfo
imx_ocotp_nvmem_config.size = 4 * priv->params->nregs;
imx_ocotp_nvmem_config.dev = dev;
imx_ocotp_nvmem_config.priv = priv;
- imx_ocotp_nvmem_config.layout = &imx_ocotp_layout;
+ imx_ocotp_nvmem_config.fixup_dt_cell_info = &imx_ocotp_fixup_dt_cell_info;
priv->config = &imx_ocotp_nvmem_config;
--- a/drivers/nvmem/internals.h
+++ b/drivers/nvmem/internals.h
@@ -23,6 +23,8 @@ struct nvmem_device {
struct bin_attribute eeprom;
struct device *base_dev;
struct list_head cells;
+ void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
+ struct nvmem_cell_info *cell);
const struct nvmem_keepout *keepout;
unsigned int nkeepout;
nvmem_reg_read_t reg_read;
--- a/drivers/nvmem/mtk-efuse.c
+++ b/drivers/nvmem/mtk-efuse.c
@@ -45,9 +45,8 @@ static int mtk_efuse_gpu_speedbin_pp(voi
return 0;
}
-static void mtk_efuse_fixup_cell_info(struct nvmem_device *nvmem,
- struct nvmem_layout *layout,
- struct nvmem_cell_info *cell)
+static void mtk_efuse_fixup_dt_cell_info(struct nvmem_device *nvmem,
+ struct nvmem_cell_info *cell)
{
size_t sz = strlen(cell->name);
@@ -61,10 +60,6 @@ static void mtk_efuse_fixup_cell_info(st
cell->read_post_process = mtk_efuse_gpu_speedbin_pp;
}
-static struct nvmem_layout mtk_efuse_layout = {
- .fixup_cell_info = mtk_efuse_fixup_cell_info,
-};
-
static int mtk_efuse_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -91,7 +86,7 @@ static int mtk_efuse_probe(struct platfo
econfig.priv = priv;
econfig.dev = dev;
if (pdata->uses_post_processing)
- econfig.layout = &mtk_efuse_layout;
+ econfig.fixup_dt_cell_info = &mtk_efuse_fixup_dt_cell_info;
nvmem = devm_nvmem_register(dev, &econfig);
return PTR_ERR_OR_ZERO(nvmem);
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
@@ -83,6 +83,8 @@ struct nvmem_cell_info {
* @cells: Optional array of pre-defined NVMEM cells.
* @ncells: Number of elements in cells.
* @add_legacy_fixed_of_cells: Read fixed NVMEM cells from old OF syntax.
+ * @fixup_dt_cell_info: Will be called before a cell is added. Can be
+ * used to modify the nvmem_cell_info.
* @keepout: Optional array of keepout ranges (sorted ascending by start).
* @nkeepout: Number of elements in the keepout array.
* @type: Type of the nvmem storage
@@ -113,6 +115,8 @@ struct nvmem_config {
const struct nvmem_cell_info *cells;
int ncells;
bool add_legacy_fixed_of_cells;
+ void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
+ struct nvmem_cell_info *cell);
const struct nvmem_keepout *keepout;
unsigned int nkeepout;
enum nvmem_type type;
@@ -158,8 +162,6 @@ struct nvmem_cell_table {
* @of_match_table: Open firmware match table.
* @add_cells: Called to populate the layout using
* nvmem_add_one_cell().
- * @fixup_cell_info: Will be called before a cell is added. Can be
- * used to modify the nvmem_cell_info.
* @owner: Pointer to struct module.
* @node: List node.
*
@@ -172,9 +174,6 @@ struct nvmem_layout {
const char *name;
const struct of_device_id *of_match_table;
int (*add_cells)(struct device *dev, struct nvmem_device *nvmem);
- void (*fixup_cell_info)(struct nvmem_device *nvmem,
- struct nvmem_layout *layout,
- struct nvmem_cell_info *cell);
/* private */
struct module *owner;

View File

@ -40,7 +40,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
} }
memcpy(val, ((u8 *)p) + skipbytes, bytes); memcpy(val, ((u8 *)p) + skipbytes, bytes);
@@ -157,8 +161,30 @@ static const struct ocotp_devtype_data i @@ -179,8 +183,30 @@ static const struct ocotp_devtype_data i
}, },
}; };

View File

@ -23,7 +23,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -10989,7 +10989,8 @@ void free_netdev(struct net_device *dev) @@ -11020,7 +11020,8 @@ void free_netdev(struct net_device *dev)
dev->xdp_bulkq = NULL; dev->xdp_bulkq = NULL;
/* Compatibility with error handling in drivers */ /* Compatibility with error handling in drivers */

View File

@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
help help
--- a/net/core/dev.c --- a/net/core/dev.c
+++ b/net/core/dev.c +++ b/net/core/dev.c
@@ -3597,6 +3597,11 @@ static int xmit_one(struct sk_buff *skb, @@ -3628,6 +3628,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev)) if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev); dev_queue_xmit_nit(skb, dev);

View File

@ -37,7 +37,7 @@ Signed-off-by: Bo-Cun Chen <bc-bocun.chen@mediatek.com>
.glo_cfg = 0x4604, .glo_cfg = 0x4604,
.rst_idx = 0x4608, .rst_idx = 0x4608,
.delay_irq = 0x460c, .delay_irq = 0x460c,
@@ -3885,6 +3888,56 @@ static void mtk_set_mcr_max_rx(struct mt @@ -3898,6 +3901,56 @@ static void mtk_set_mcr_max_rx(struct mt
mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id)); mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id));
} }
@ -94,7 +94,7 @@ Signed-off-by: Bo-Cun Chen <bc-bocun.chen@mediatek.com>
static void mtk_hw_reset(struct mtk_eth *eth) static void mtk_hw_reset(struct mtk_eth *eth)
{ {
u32 val; u32 val;
@@ -4344,6 +4397,8 @@ static void mtk_pending_work(struct work @@ -4358,6 +4411,8 @@ static void mtk_pending_work(struct work
rtnl_lock(); rtnl_lock();
set_bit(MTK_RESETTING, &eth->state); set_bit(MTK_RESETTING, &eth->state);
@ -105,7 +105,7 @@ Signed-off-by: Bo-Cun Chen <bc-bocun.chen@mediatek.com>
/* Run again reset preliminary configuration in order to avoid any /* Run again reset preliminary configuration in order to avoid any
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -1172,6 +1172,7 @@ struct mtk_reg_map { @@ -1183,6 +1183,7 @@ struct mtk_reg_map {
u32 rx_ptr; /* rx base pointer */ u32 rx_ptr; /* rx base pointer */
u32 rx_cnt_cfg; /* rx max count configuration */ u32 rx_cnt_cfg; /* rx max count configuration */
u32 qcrx_ptr; /* rx cpu pointer */ u32 qcrx_ptr; /* rx cpu pointer */

View File

@ -0,0 +1,63 @@
From linux-netdev Tue Dec 03 13:04:55 2024
From: Dominique Martinet <asmadeus () codewreck ! org>
Date: Tue, 03 Dec 2024 13:04:55 +0000
To: linux-netdev
Subject: [PATCH] net: usb: usbnet: restore usb%d name exception for local mac addresses
Message-Id: <20241203130457.904325-1-asmadeus () codewreck ! org>
X-MARC-Message: https://marc.info/?l=linux-netdev&m=173323431631309
From: Dominique Martinet <dominique.martinet@atmark-techno.com>
The previous commit assumed that local addresses always came from the
kernel, but some devices hand out local mac addresses so we ended up
with point-to-point devices with a mac set by the driver, renaming to
eth%d when they used to be named usb%d.
Userspace should not rely on device name, but for the sake of stability
restore the local mac address check portion of the naming exception:
point to point devices which either have no mac set by the driver or
have a local mac handed out by the driver will keep the usb%d name.
Fixes: 8a7d12d674ac ("net: usb: usbnet: fix name regression")
Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
---
drivers/net/usb/usbnet.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -178,6 +178,17 @@ int usbnet_get_ethernet_addr(struct usbn
}
EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr);
+static bool usbnet_needs_usb_name_format(struct usbnet *dev, struct net_device *net)
+{
+ /* Point to point devices which don't have a real MAC address
+ * (or report a fake local one) have historically used the usb%d
+ * naming. Preserve this..
+ */
+ return (dev->driver_info->flags & FLAG_POINTTOPOINT) != 0 &&
+ (is_zero_ether_addr(net->dev_addr) ||
+ is_local_ether_addr(net->dev_addr));
+}
+
static void intr_complete (struct urb *urb)
{
struct usbnet *dev = urb->context;
@@ -1766,13 +1777,10 @@ usbnet_probe (struct usb_interface *udev
if (status < 0)
goto out1;
- // heuristic: "usb%d" for links we know are two-host,
- // else "eth%d" when there's reasonable doubt. userspace
- // can rename the link if it knows better.
+ /* heuristic: rename to "eth%d" if we are not sure this link
+ * is two-host (these links keep "usb%d") */
if ((dev->driver_info->flags & FLAG_ETHER) != 0 &&
- ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 ||
- /* somebody touched it*/
- !is_zero_ether_addr(net->dev_addr)))
+ !usbnet_needs_usb_name_format(dev, net))
strscpy(net->name, "eth%d", sizeof(net->name));
/* WLAN devices should always be named "wlan%d" */
if ((dev->driver_info->flags & FLAG_WLAN) != 0)

View File

@ -31,7 +31,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
static inline void gro_normal_list(struct napi_struct *napi) static inline void gro_normal_list(struct napi_struct *napi)
--- a/include/net/tcp.h --- a/include/net/tcp.h
+++ b/include/net/tcp.h +++ b/include/net/tcp.h
@@ -2084,7 +2084,10 @@ void tcp_v4_destroy_sock(struct sock *sk @@ -2101,7 +2101,10 @@ void tcp_v4_destroy_sock(struct sock *sk
struct sk_buff *tcp_gso_segment(struct sk_buff *skb, struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
netdev_features_t features); netdev_features_t features);

View File

@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -5036,6 +5036,8 @@ static int mtk_probe(struct platform_dev @@ -5101,6 +5101,8 @@ static int mtk_probe(struct platform_dev
* for NAPI to work * for NAPI to work
*/ */
init_dummy_netdev(&eth->dummy_dev); init_dummy_netdev(&eth->dummy_dev);

View File

@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -3135,11 +3135,19 @@ static int mtk_dma_init(struct mtk_eth * @@ -3148,11 +3148,19 @@ static int mtk_dma_init(struct mtk_eth *
static void mtk_dma_free(struct mtk_eth *eth) static void mtk_dma_free(struct mtk_eth *eth)
{ {
const struct mtk_soc_data *soc = eth->soc; const struct mtk_soc_data *soc = eth->soc;

View File

@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -1336,6 +1336,22 @@ struct mtk_mac { @@ -1347,6 +1347,22 @@ struct mtk_mac {
/* the struct describing the SoC. these are declared in the soc_xyz.c files */ /* the struct describing the SoC. these are declared in the soc_xyz.c files */
extern const struct of_device_id of_mtk_match[]; extern const struct of_device_id of_mtk_match[];
@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static inline bool mtk_is_netsys_v1(struct mtk_eth *eth) static inline bool mtk_is_netsys_v1(struct mtk_eth *eth)
{ {
return eth->soc->version == 1; return eth->soc->version == 1;
@@ -1350,6 +1366,7 @@ static inline bool mtk_is_netsys_v3_or_g @@ -1361,6 +1377,7 @@ static inline bool mtk_is_netsys_v3_or_g
{ {
return eth->soc->version > 2; return eth->soc->version > 2;
} }

View File

@ -24,7 +24,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#include <net/page_pool/helpers.h> #include <net/page_pool/helpers.h>
#include "mtk_eth_soc.h" #include "mtk_eth_soc.h"
@@ -1596,12 +1597,28 @@ static void mtk_wake_queue(struct mtk_et @@ -1609,12 +1610,28 @@ static void mtk_wake_queue(struct mtk_et
} }
} }
@ -53,7 +53,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
bool gso = false; bool gso = false;
int tx_num; int tx_num;
@@ -1623,6 +1640,18 @@ static netdev_tx_t mtk_start_xmit(struct @@ -1636,6 +1653,18 @@ static netdev_tx_t mtk_start_xmit(struct
return NETDEV_TX_BUSY; return NETDEV_TX_BUSY;
} }
@ -72,7 +72,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* TSO: fill MSS info in tcp checksum field */ /* TSO: fill MSS info in tcp checksum field */
if (skb_is_gso(skb)) { if (skb_is_gso(skb)) {
if (skb_cow_head(skb, 0)) { if (skb_cow_head(skb, 0)) {
@@ -1638,8 +1667,14 @@ static netdev_tx_t mtk_start_xmit(struct @@ -1651,8 +1680,14 @@ static netdev_tx_t mtk_start_xmit(struct
} }
} }

View File

@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -2140,7 +2140,7 @@ static int mtk_poll_rx(struct napi_struc @@ -2153,7 +2153,7 @@ static int mtk_poll_rx(struct napi_struc
if (ret != XDP_PASS) if (ret != XDP_PASS)
goto skip_rx; goto skip_rx;
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (unlikely(!skb)) { if (unlikely(!skb)) {
page_pool_put_full_page(ring->page_pool, page_pool_put_full_page(ring->page_pool,
page, true); page, true);
@@ -2178,7 +2178,7 @@ static int mtk_poll_rx(struct napi_struc @@ -2191,7 +2191,7 @@ static int mtk_poll_rx(struct napi_struc
dma_unmap_single(eth->dma_dev, ((u64)trxd.rxd1 | addr64), dma_unmap_single(eth->dma_dev, ((u64)trxd.rxd1 | addr64),
ring->buf_size, DMA_FROM_DEVICE); ring->buf_size, DMA_FROM_DEVICE);

View File

@ -25,7 +25,7 @@ Signed-off-by: Chad Monroe <chad@monroe.io>
/* QDMA Flow Control Register */ /* QDMA Flow Control Register */
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -3309,12 +3309,14 @@ static int mtk_start_dma(struct mtk_eth @@ -3322,12 +3322,14 @@ static int mtk_start_dma(struct mtk_eth
MTK_TX_BT_32DWORDS | MTK_NDP_CO_PRO | MTK_TX_BT_32DWORDS | MTK_NDP_CO_PRO |
MTK_RX_2B_OFFSET | MTK_TX_WB_DDONE; MTK_RX_2B_OFFSET | MTK_TX_WB_DDONE;

View File

@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1172,7 +1172,7 @@ static int mtk_init_fq_dma(struct mtk_et @@ -1185,7 +1185,7 @@ static int mtk_init_fq_dma(struct mtk_et
if (unlikely(dma_mapping_error(eth->dma_dev, dma_addr))) if (unlikely(dma_mapping_error(eth->dma_dev, dma_addr)))
return -ENOMEM; return -ENOMEM;

View File

@ -426,7 +426,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
u32 mcr; u32 mcr;
mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id)); mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
@@ -816,9 +903,63 @@ static void mtk_mac_link_up(struct phyli @@ -829,9 +916,63 @@ static void mtk_mac_link_up(struct phyli
mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
} }
@ -490,7 +490,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
.mac_finish = mtk_mac_finish, .mac_finish = mtk_mac_finish,
.mac_link_down = mtk_mac_link_down, .mac_link_down = mtk_mac_link_down,
.mac_link_up = mtk_mac_link_up, .mac_link_up = mtk_mac_link_up,
@@ -3417,6 +3558,9 @@ static int mtk_open(struct net_device *d @@ -3430,6 +3571,9 @@ static int mtk_open(struct net_device *d
ppe_num = eth->soc->ppe_num; ppe_num = eth->soc->ppe_num;
@ -500,7 +500,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0);
if (err) { if (err) {
netdev_err(dev, "%s: could not attach PHY: %d\n", __func__, netdev_err(dev, "%s: could not attach PHY: %d\n", __func__,
@@ -3567,6 +3711,9 @@ static int mtk_stop(struct net_device *d @@ -3580,6 +3724,9 @@ static int mtk_stop(struct net_device *d
for (i = 0; i < ARRAY_SIZE(eth->ppe); i++) for (i = 0; i < ARRAY_SIZE(eth->ppe); i++)
mtk_ppe_stop(eth->ppe[i]); mtk_ppe_stop(eth->ppe[i]);
@ -510,7 +510,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
return 0; return 0;
} }
@@ -4580,6 +4727,7 @@ static const struct net_device_ops mtk_n @@ -4645,6 +4792,7 @@ static const struct net_device_ops mtk_n
static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
{ {
const __be32 *_id = of_get_property(np, "reg", NULL); const __be32 *_id = of_get_property(np, "reg", NULL);
@ -518,7 +518,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
phy_interface_t phy_mode; phy_interface_t phy_mode;
struct phylink *phylink; struct phylink *phylink;
struct mtk_mac *mac; struct mtk_mac *mac;
@@ -4616,16 +4764,41 @@ static int mtk_add_mac(struct mtk_eth *e @@ -4681,16 +4829,41 @@ static int mtk_add_mac(struct mtk_eth *e
mac->id = id; mac->id = id;
mac->hw = eth; mac->hw = eth;
mac->of_node = np; mac->of_node = np;
@ -568,7 +568,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
} }
memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip)); memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip));
@@ -4708,8 +4881,21 @@ static int mtk_add_mac(struct mtk_eth *e @@ -4773,8 +4946,21 @@ static int mtk_add_mac(struct mtk_eth *e
phy_interface_zero(mac->phylink_config.supported_interfaces); phy_interface_zero(mac->phylink_config.supported_interfaces);
__set_bit(PHY_INTERFACE_MODE_INTERNAL, __set_bit(PHY_INTERFACE_MODE_INTERNAL,
mac->phylink_config.supported_interfaces); mac->phylink_config.supported_interfaces);
@ -590,7 +590,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
phylink = phylink_create(&mac->phylink_config, phylink = phylink_create(&mac->phylink_config,
of_fwnode_handle(mac->of_node), of_fwnode_handle(mac->of_node),
phy_mode, &mtk_phylink_ops); phy_mode, &mtk_phylink_ops);
@@ -4760,6 +4946,26 @@ free_netdev: @@ -4825,6 +5011,26 @@ free_netdev:
return err; return err;
} }
@ -617,7 +617,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev) void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev)
{ {
struct net_device *dev, *tmp; struct net_device *dev, *tmp;
@@ -4906,7 +5112,8 @@ static int mtk_probe(struct platform_dev @@ -4971,7 +5177,8 @@ static int mtk_probe(struct platform_dev
regmap_write(cci, 0, 3); regmap_write(cci, 0, 3);
} }
@ -627,7 +627,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
err = mtk_sgmii_init(eth); err = mtk_sgmii_init(eth);
if (err) if (err)
@@ -5017,6 +5224,24 @@ static int mtk_probe(struct platform_dev @@ -5082,6 +5289,24 @@ static int mtk_probe(struct platform_dev
} }
} }
@ -652,7 +652,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) { if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) {
err = devm_request_irq(eth->dev, eth->irq[0], err = devm_request_irq(eth->dev, eth->irq[0],
mtk_handle_irq, 0, mtk_handle_irq, 0,
@@ -5120,6 +5345,11 @@ static int mtk_remove(struct platform_de @@ -5185,6 +5410,11 @@ static int mtk_remove(struct platform_de
mtk_stop(eth->netdev[i]); mtk_stop(eth->netdev[i]);
mac = netdev_priv(eth->netdev[i]); mac = netdev_priv(eth->netdev[i]);
phylink_disconnect_phy(mac->phylink); phylink_disconnect_phy(mac->phylink);
@ -674,7 +674,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#include <linux/rhashtable.h> #include <linux/rhashtable.h>
#include <linux/dim.h> #include <linux/dim.h>
#include <linux/bitfield.h> #include <linux/bitfield.h>
@@ -505,6 +506,21 @@ @@ -516,6 +517,21 @@
#define INTF_MODE_RGMII_1000 (TRGMII_MODE | TRGMII_CENTRAL_ALIGNED) #define INTF_MODE_RGMII_1000 (TRGMII_MODE | TRGMII_CENTRAL_ALIGNED)
#define INTF_MODE_RGMII_10_100 0 #define INTF_MODE_RGMII_10_100 0
@ -696,7 +696,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/* GPIO port control registers for GMAC 2*/ /* GPIO port control registers for GMAC 2*/
#define GPIO_OD33_CTRL8 0x4c0 #define GPIO_OD33_CTRL8 0x4c0
#define GPIO_BIAS_CTRL 0xed0 #define GPIO_BIAS_CTRL 0xed0
@@ -530,6 +546,7 @@ @@ -541,6 +557,7 @@
#define SYSCFG0_SGMII_GMAC2 ((3 << 8) & SYSCFG0_SGMII_MASK) #define SYSCFG0_SGMII_GMAC2 ((3 << 8) & SYSCFG0_SGMII_MASK)
#define SYSCFG0_SGMII_GMAC1_V2 BIT(9) #define SYSCFG0_SGMII_GMAC1_V2 BIT(9)
#define SYSCFG0_SGMII_GMAC2_V2 BIT(8) #define SYSCFG0_SGMII_GMAC2_V2 BIT(8)
@ -704,7 +704,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/* ethernet subsystem clock register */ /* ethernet subsystem clock register */
@@ -568,6 +585,11 @@ @@ -579,6 +596,11 @@
#define GEPHY_MAC_SEL BIT(1) #define GEPHY_MAC_SEL BIT(1)
/* Top misc registers */ /* Top misc registers */
@ -716,7 +716,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#define USB_PHY_SWITCH_REG 0x218 #define USB_PHY_SWITCH_REG 0x218
#define QPHY_SEL_MASK GENMASK(1, 0) #define QPHY_SEL_MASK GENMASK(1, 0)
#define SGMII_QPHY_SEL 0x2 #define SGMII_QPHY_SEL 0x2
@@ -592,6 +614,8 @@ @@ -603,6 +625,8 @@
#define MT7628_SDM_RBCNT (MT7628_SDM_OFFSET + 0x10c) #define MT7628_SDM_RBCNT (MT7628_SDM_OFFSET + 0x10c)
#define MT7628_SDM_CS_ERR (MT7628_SDM_OFFSET + 0x110) #define MT7628_SDM_CS_ERR (MT7628_SDM_OFFSET + 0x110)
@ -725,7 +725,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#define MTK_FE_CDM1_FSM 0x220 #define MTK_FE_CDM1_FSM 0x220
#define MTK_FE_CDM2_FSM 0x224 #define MTK_FE_CDM2_FSM 0x224
#define MTK_FE_CDM3_FSM 0x238 #define MTK_FE_CDM3_FSM 0x238
@@ -600,6 +624,11 @@ @@ -611,6 +635,11 @@
#define MTK_FE_CDM6_FSM 0x328 #define MTK_FE_CDM6_FSM 0x328
#define MTK_FE_GDM1_FSM 0x228 #define MTK_FE_GDM1_FSM 0x228
#define MTK_FE_GDM2_FSM 0x22C #define MTK_FE_GDM2_FSM 0x22C
@ -737,7 +737,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#define MTK_MAC_FSM(x) (0x1010C + ((x) * 0x100)) #define MTK_MAC_FSM(x) (0x1010C + ((x) * 0x100))
@@ -724,12 +753,8 @@ enum mtk_clks_map { @@ -735,12 +764,8 @@ enum mtk_clks_map {
MTK_CLK_ETHWARP_WOCPU2, MTK_CLK_ETHWARP_WOCPU2,
MTK_CLK_ETHWARP_WOCPU1, MTK_CLK_ETHWARP_WOCPU1,
MTK_CLK_ETHWARP_WOCPU0, MTK_CLK_ETHWARP_WOCPU0,
@ -750,7 +750,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
MTK_CLK_TOP_ETH_GMII_SEL, MTK_CLK_TOP_ETH_GMII_SEL,
MTK_CLK_TOP_ETH_REFCK_50M_SEL, MTK_CLK_TOP_ETH_REFCK_50M_SEL,
MTK_CLK_TOP_ETH_SYS_200M_SEL, MTK_CLK_TOP_ETH_SYS_200M_SEL,
@@ -800,19 +825,9 @@ enum mtk_clks_map { @@ -811,19 +836,9 @@ enum mtk_clks_map {
BIT_ULL(MTK_CLK_GP3) | BIT_ULL(MTK_CLK_XGP1) | \ BIT_ULL(MTK_CLK_GP3) | BIT_ULL(MTK_CLK_XGP1) | \
BIT_ULL(MTK_CLK_XGP2) | BIT_ULL(MTK_CLK_XGP3) | \ BIT_ULL(MTK_CLK_XGP2) | BIT_ULL(MTK_CLK_XGP3) | \
BIT_ULL(MTK_CLK_CRYPTO) | \ BIT_ULL(MTK_CLK_CRYPTO) | \
@ -770,7 +770,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
BIT_ULL(MTK_CLK_TOP_ETH_GMII_SEL) | \ BIT_ULL(MTK_CLK_TOP_ETH_GMII_SEL) | \
BIT_ULL(MTK_CLK_TOP_ETH_REFCK_50M_SEL) | \ BIT_ULL(MTK_CLK_TOP_ETH_REFCK_50M_SEL) | \
BIT_ULL(MTK_CLK_TOP_ETH_SYS_200M_SEL) | \ BIT_ULL(MTK_CLK_TOP_ETH_SYS_200M_SEL) | \
@@ -946,6 +961,8 @@ enum mkt_eth_capabilities { @@ -957,6 +972,8 @@ enum mkt_eth_capabilities {
MTK_RGMII_BIT = 0, MTK_RGMII_BIT = 0,
MTK_TRGMII_BIT, MTK_TRGMII_BIT,
MTK_SGMII_BIT, MTK_SGMII_BIT,
@ -779,7 +779,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
MTK_ESW_BIT, MTK_ESW_BIT,
MTK_GEPHY_BIT, MTK_GEPHY_BIT,
MTK_MUX_BIT, MTK_MUX_BIT,
@@ -966,8 +983,11 @@ enum mkt_eth_capabilities { @@ -977,8 +994,11 @@ enum mkt_eth_capabilities {
MTK_ETH_MUX_GDM1_TO_GMAC1_ESW_BIT, MTK_ETH_MUX_GDM1_TO_GMAC1_ESW_BIT,
MTK_ETH_MUX_GMAC2_GMAC0_TO_GEPHY_BIT, MTK_ETH_MUX_GMAC2_GMAC0_TO_GEPHY_BIT,
MTK_ETH_MUX_U3_GMAC2_TO_QPHY_BIT, MTK_ETH_MUX_U3_GMAC2_TO_QPHY_BIT,
@ -791,7 +791,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/* PATH BITS */ /* PATH BITS */
MTK_ETH_PATH_GMAC1_RGMII_BIT, MTK_ETH_PATH_GMAC1_RGMII_BIT,
@@ -975,14 +995,21 @@ enum mkt_eth_capabilities { @@ -986,14 +1006,21 @@ enum mkt_eth_capabilities {
MTK_ETH_PATH_GMAC1_SGMII_BIT, MTK_ETH_PATH_GMAC1_SGMII_BIT,
MTK_ETH_PATH_GMAC2_RGMII_BIT, MTK_ETH_PATH_GMAC2_RGMII_BIT,
MTK_ETH_PATH_GMAC2_SGMII_BIT, MTK_ETH_PATH_GMAC2_SGMII_BIT,
@ -813,7 +813,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#define MTK_ESW BIT_ULL(MTK_ESW_BIT) #define MTK_ESW BIT_ULL(MTK_ESW_BIT)
#define MTK_GEPHY BIT_ULL(MTK_GEPHY_BIT) #define MTK_GEPHY BIT_ULL(MTK_GEPHY_BIT)
#define MTK_MUX BIT_ULL(MTK_MUX_BIT) #define MTK_MUX BIT_ULL(MTK_MUX_BIT)
@@ -1005,10 +1032,16 @@ enum mkt_eth_capabilities { @@ -1016,10 +1043,16 @@ enum mkt_eth_capabilities {
BIT_ULL(MTK_ETH_MUX_GMAC2_GMAC0_TO_GEPHY_BIT) BIT_ULL(MTK_ETH_MUX_GMAC2_GMAC0_TO_GEPHY_BIT)
#define MTK_ETH_MUX_U3_GMAC2_TO_QPHY \ #define MTK_ETH_MUX_U3_GMAC2_TO_QPHY \
BIT_ULL(MTK_ETH_MUX_U3_GMAC2_TO_QPHY_BIT) BIT_ULL(MTK_ETH_MUX_U3_GMAC2_TO_QPHY_BIT)
@ -830,7 +830,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/* Supported path present on SoCs */ /* Supported path present on SoCs */
#define MTK_ETH_PATH_GMAC1_RGMII BIT_ULL(MTK_ETH_PATH_GMAC1_RGMII_BIT) #define MTK_ETH_PATH_GMAC1_RGMII BIT_ULL(MTK_ETH_PATH_GMAC1_RGMII_BIT)
@@ -1016,8 +1049,13 @@ enum mkt_eth_capabilities { @@ -1027,8 +1060,13 @@ enum mkt_eth_capabilities {
#define MTK_ETH_PATH_GMAC1_SGMII BIT_ULL(MTK_ETH_PATH_GMAC1_SGMII_BIT) #define MTK_ETH_PATH_GMAC1_SGMII BIT_ULL(MTK_ETH_PATH_GMAC1_SGMII_BIT)
#define MTK_ETH_PATH_GMAC2_RGMII BIT_ULL(MTK_ETH_PATH_GMAC2_RGMII_BIT) #define MTK_ETH_PATH_GMAC2_RGMII BIT_ULL(MTK_ETH_PATH_GMAC2_RGMII_BIT)
#define MTK_ETH_PATH_GMAC2_SGMII BIT_ULL(MTK_ETH_PATH_GMAC2_SGMII_BIT) #define MTK_ETH_PATH_GMAC2_SGMII BIT_ULL(MTK_ETH_PATH_GMAC2_SGMII_BIT)
@ -844,7 +844,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#define MTK_GMAC1_RGMII (MTK_ETH_PATH_GMAC1_RGMII | MTK_RGMII) #define MTK_GMAC1_RGMII (MTK_ETH_PATH_GMAC1_RGMII | MTK_RGMII)
#define MTK_GMAC1_TRGMII (MTK_ETH_PATH_GMAC1_TRGMII | MTK_TRGMII) #define MTK_GMAC1_TRGMII (MTK_ETH_PATH_GMAC1_TRGMII | MTK_TRGMII)
@@ -1025,7 +1063,12 @@ enum mkt_eth_capabilities { @@ -1036,7 +1074,12 @@ enum mkt_eth_capabilities {
#define MTK_GMAC2_RGMII (MTK_ETH_PATH_GMAC2_RGMII | MTK_RGMII) #define MTK_GMAC2_RGMII (MTK_ETH_PATH_GMAC2_RGMII | MTK_RGMII)
#define MTK_GMAC2_SGMII (MTK_ETH_PATH_GMAC2_SGMII | MTK_SGMII) #define MTK_GMAC2_SGMII (MTK_ETH_PATH_GMAC2_SGMII | MTK_SGMII)
#define MTK_GMAC2_GEPHY (MTK_ETH_PATH_GMAC2_GEPHY | MTK_GEPHY) #define MTK_GMAC2_GEPHY (MTK_ETH_PATH_GMAC2_GEPHY | MTK_GEPHY)
@ -857,7 +857,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/* MUXes present on SoCs */ /* MUXes present on SoCs */
/* 0: GDM1 -> GMAC1, 1: GDM1 -> ESW */ /* 0: GDM1 -> GMAC1, 1: GDM1 -> ESW */
@@ -1044,10 +1087,20 @@ enum mkt_eth_capabilities { @@ -1055,10 +1098,20 @@ enum mkt_eth_capabilities {
(MTK_ETH_MUX_GMAC1_GMAC2_TO_SGMII_RGMII | MTK_MUX | \ (MTK_ETH_MUX_GMAC1_GMAC2_TO_SGMII_RGMII | MTK_MUX | \
MTK_SHARED_SGMII) MTK_SHARED_SGMII)
@ -878,7 +878,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#define MTK_HAS_CAPS(caps, _x) (((caps) & (_x)) == (_x)) #define MTK_HAS_CAPS(caps, _x) (((caps) & (_x)) == (_x))
#define MT7621_CAPS (MTK_GMAC1_RGMII | MTK_GMAC1_TRGMII | \ #define MT7621_CAPS (MTK_GMAC1_RGMII | MTK_GMAC1_TRGMII | \
@@ -1079,8 +1132,12 @@ enum mkt_eth_capabilities { @@ -1090,8 +1143,12 @@ enum mkt_eth_capabilities {
MTK_MUX_GMAC12_TO_GEPHY_SGMII | MTK_QDMA | \ MTK_MUX_GMAC12_TO_GEPHY_SGMII | MTK_QDMA | \
MTK_RSTCTRL_PPE1 | MTK_SRAM) MTK_RSTCTRL_PPE1 | MTK_SRAM)
@ -893,7 +893,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
struct mtk_tx_dma_desc_info { struct mtk_tx_dma_desc_info {
dma_addr_t addr; dma_addr_t addr;
@@ -1325,6 +1382,9 @@ struct mtk_mac { @@ -1336,6 +1393,9 @@ struct mtk_mac {
struct device_node *of_node; struct device_node *of_node;
struct phylink *phylink; struct phylink *phylink;
struct phylink_config phylink_config; struct phylink_config phylink_config;
@ -903,7 +903,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
struct mtk_eth *hw; struct mtk_eth *hw;
struct mtk_hw_stats *hw_stats; struct mtk_hw_stats *hw_stats;
__be32 hwlro_ip[MTK_MAX_LRO_IP_CNT]; __be32 hwlro_ip[MTK_MAX_LRO_IP_CNT];
@@ -1448,6 +1508,19 @@ static inline u32 mtk_get_ib2_multicast_ @@ -1459,6 +1519,19 @@ static inline u32 mtk_get_ib2_multicast_
return MTK_FOE_IB2_MULTICAST; return MTK_FOE_IB2_MULTICAST;
} }
@ -923,7 +923,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/* read the hardware status register */ /* read the hardware status register */
void mtk_stats_update_mac(struct mtk_mac *mac); void mtk_stats_update_mac(struct mtk_mac *mac);
@@ -1456,8 +1529,10 @@ u32 mtk_r32(struct mtk_eth *eth, unsigne @@ -1467,8 +1540,10 @@ u32 mtk_r32(struct mtk_eth *eth, unsigne
u32 mtk_m32(struct mtk_eth *eth, u32 mask, u32 set, unsigned int reg); u32 mtk_m32(struct mtk_eth *eth, u32 mask, u32 set, unsigned int reg);
int mtk_gmac_sgmii_path_setup(struct mtk_eth *eth, int mac_id); int mtk_gmac_sgmii_path_setup(struct mtk_eth *eth, int mac_id);

View File

@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -5381,7 +5381,7 @@ static const struct mtk_soc_data mt2701_ @@ -5446,7 +5446,7 @@ static const struct mtk_soc_data mt2701_
.desc_size = sizeof(struct mtk_rx_dma), .desc_size = sizeof(struct mtk_rx_dma),
.irq_done_mask = MTK_RX_DONE_INT, .irq_done_mask = MTK_RX_DONE_INT,
.dma_l4_valid = RX_DMA_L4_VALID, .dma_l4_valid = RX_DMA_L4_VALID,
@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
.dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_max_len = MTK_TX_DMA_BUF_LEN,
.dma_len_offset = 16, .dma_len_offset = 16,
}, },
@@ -5409,7 +5409,7 @@ static const struct mtk_soc_data mt7621_ @@ -5474,7 +5474,7 @@ static const struct mtk_soc_data mt7621_
.desc_size = sizeof(struct mtk_rx_dma), .desc_size = sizeof(struct mtk_rx_dma),
.irq_done_mask = MTK_RX_DONE_INT, .irq_done_mask = MTK_RX_DONE_INT,
.dma_l4_valid = RX_DMA_L4_VALID, .dma_l4_valid = RX_DMA_L4_VALID,
@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
.dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_max_len = MTK_TX_DMA_BUF_LEN,
.dma_len_offset = 16, .dma_len_offset = 16,
}, },
@@ -5439,7 +5439,7 @@ static const struct mtk_soc_data mt7622_ @@ -5504,7 +5504,7 @@ static const struct mtk_soc_data mt7622_
.desc_size = sizeof(struct mtk_rx_dma), .desc_size = sizeof(struct mtk_rx_dma),
.irq_done_mask = MTK_RX_DONE_INT, .irq_done_mask = MTK_RX_DONE_INT,
.dma_l4_valid = RX_DMA_L4_VALID, .dma_l4_valid = RX_DMA_L4_VALID,
@ -57,7 +57,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
.dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_max_len = MTK_TX_DMA_BUF_LEN,
.dma_len_offset = 16, .dma_len_offset = 16,
}, },
@@ -5468,7 +5468,7 @@ static const struct mtk_soc_data mt7623_ @@ -5533,7 +5533,7 @@ static const struct mtk_soc_data mt7623_
.desc_size = sizeof(struct mtk_rx_dma), .desc_size = sizeof(struct mtk_rx_dma),
.irq_done_mask = MTK_RX_DONE_INT, .irq_done_mask = MTK_RX_DONE_INT,
.dma_l4_valid = RX_DMA_L4_VALID, .dma_l4_valid = RX_DMA_L4_VALID,
@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
.dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_max_len = MTK_TX_DMA_BUF_LEN,
.dma_len_offset = 16, .dma_len_offset = 16,
}, },
@@ -5494,7 +5494,7 @@ static const struct mtk_soc_data mt7629_ @@ -5559,7 +5559,7 @@ static const struct mtk_soc_data mt7629_
.desc_size = sizeof(struct mtk_rx_dma), .desc_size = sizeof(struct mtk_rx_dma),
.irq_done_mask = MTK_RX_DONE_INT, .irq_done_mask = MTK_RX_DONE_INT,
.dma_l4_valid = RX_DMA_L4_VALID, .dma_l4_valid = RX_DMA_L4_VALID,
@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
.dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_max_len = MTK_TX_DMA_BUF_LEN,
.dma_len_offset = 16, .dma_len_offset = 16,
}, },
@@ -5526,7 +5526,7 @@ static const struct mtk_soc_data mt7981_ @@ -5591,7 +5591,7 @@ static const struct mtk_soc_data mt7981_
.dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_l4_valid = RX_DMA_L4_VALID_V2,
.dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_max_len = MTK_TX_DMA_BUF_LEN,
.dma_len_offset = 16, .dma_len_offset = 16,
@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}, },
}; };
@@ -5556,7 +5556,7 @@ static const struct mtk_soc_data mt7986_ @@ -5621,7 +5621,7 @@ static const struct mtk_soc_data mt7986_
.dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_l4_valid = RX_DMA_L4_VALID_V2,
.dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_max_len = MTK_TX_DMA_BUF_LEN,
.dma_len_offset = 16, .dma_len_offset = 16,
@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}, },
}; };
@@ -5609,7 +5609,7 @@ static const struct mtk_soc_data rt5350_ @@ -5674,7 +5674,7 @@ static const struct mtk_soc_data rt5350_
.dma_l4_valid = RX_DMA_L4_VALID_PDMA, .dma_l4_valid = RX_DMA_L4_VALID_PDMA,
.dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_max_len = MTK_TX_DMA_BUF_LEN,
.dma_len_offset = 16, .dma_len_offset = 16,

View File

@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
help help
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -4552,6 +4552,7 @@ static int mtk_get_sset_count(struct net @@ -4566,6 +4566,7 @@ static int mtk_get_sset_count(struct net
static void mtk_ethtool_pp_stats(struct mtk_eth *eth, u64 *data) static void mtk_ethtool_pp_stats(struct mtk_eth *eth, u64 *data)
{ {
@ -33,7 +33,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct page_pool_stats stats = {}; struct page_pool_stats stats = {};
int i; int i;
@@ -4564,6 +4565,7 @@ static void mtk_ethtool_pp_stats(struct @@ -4578,6 +4579,7 @@ static void mtk_ethtool_pp_stats(struct
page_pool_get_stats(ring->page_pool, &stats); page_pool_get_stats(ring->page_pool, &stats);
} }
page_pool_ethtool_stats_get(data, &stats); page_pool_ethtool_stats_get(data, &stats);

View File

@ -57,7 +57,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
static int __qcom_scm_set_dload_mode(struct device *dev, bool enable) static int __qcom_scm_set_dload_mode(struct device *dev, bool enable)
{ {
struct qcom_scm_desc desc = { struct qcom_scm_desc desc = {
@@ -1473,6 +1496,13 @@ static int qcom_scm_probe(struct platfor @@ -1474,6 +1497,13 @@ static int qcom_scm_probe(struct platfor
__get_convention(); __get_convention();

View File

@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/drivers/firmware/qcom_scm.c --- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c
@@ -1528,7 +1528,8 @@ static int qcom_scm_probe(struct platfor @@ -1529,7 +1529,8 @@ static int qcom_scm_probe(struct platfor
static void qcom_scm_shutdown(struct platform_device *pdev) static void qcom_scm_shutdown(struct platform_device *pdev)
{ {
/* Clean shutdown, disable download mode to allow normal restart */ /* Clean shutdown, disable download mode to allow normal restart */

View File

@ -1,7 +1,7 @@
CONFIG_64BIT=y CONFIG_64BIT=y
# CONFIG_AHCI_MTK is not set # CONFIG_AHCI_MTK is not set
CONFIG_AIR_AN8855_PHY=y
CONFIG_AIROHA_EN8801SC_PHY=y CONFIG_AIROHA_EN8801SC_PHY=y
CONFIG_AIR_AN8855_PHY=y
CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y
@ -33,7 +33,6 @@ CONFIG_ARM64_VA_BITS_39=y
CONFIG_ARM_AMBA=y CONFIG_ARM_AMBA=y
CONFIG_ARM_ARCH_TIMER=y CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set
CONFIG_ARM_GIC=y CONFIG_ARM_GIC=y
CONFIG_ARM_GIC_V2M=y CONFIG_ARM_GIC_V2M=y
CONFIG_ARM_GIC_V3=y CONFIG_ARM_GIC_V3=y
@ -43,7 +42,6 @@ CONFIG_ARM_MEDIATEK_CPUFREQ=y
CONFIG_ARM_PMU=y CONFIG_ARM_PMU=y
CONFIG_ARM_PMUV3=y CONFIG_ARM_PMUV3=y
CONFIG_ARM_PSCI_FW=y CONFIG_ARM_PSCI_FW=y
# CONFIG_ARM_SMMU_V3_PMU is not set
CONFIG_ATA=y CONFIG_ATA=y
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP=y
@ -97,6 +95,7 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MITIGATIONS=y
CONFIG_CPU_RMAP=y CONFIG_CPU_RMAP=y
CONFIG_CPU_THERMAL=y CONFIG_CPU_THERMAL=y
CONFIG_CRC16=y CONFIG_CRC16=y
@ -167,7 +166,6 @@ CONFIG_FUNCTION_ALIGNMENT_4B=y
CONFIG_FWNODE_MDIO=y CONFIG_FWNODE_MDIO=y
CONFIG_FW_LOADER_PAGED_BUF=y CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_FW_LOADER_SYSFS=y CONFIG_FW_LOADER_SYSFS=y
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_ARCH_TOPOLOGY=y CONFIG_GENERIC_ARCH_TOPOLOGY=y
@ -235,19 +233,19 @@ CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y CONFIG_LZO_DECOMPRESS=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_MAXLINEAR_GPHY=y CONFIG_MAXLINEAR_GPHY=y
CONFIG_MDIO_AN8855=y
CONFIG_MDIO_BUS=y CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_DEVRES=y CONFIG_MDIO_DEVRES=y
CONFIG_MDIO_AN8855=y
CONFIG_MEDIATEK_2P5GE_PHY=y CONFIG_MEDIATEK_2P5GE_PHY=y
CONFIG_MEDIATEK_GE_PHY=y CONFIG_MEDIATEK_GE_PHY=y
CONFIG_MEDIATEK_GE_SOC_PHY=y CONFIG_MEDIATEK_GE_SOC_PHY=y
CONFIG_MEDIATEK_WATCHDOG=y CONFIG_MEDIATEK_WATCHDOG=y
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
CONFIG_MFD_SYSCON=y
CONFIG_MFD_AIROHA_AN8855=y CONFIG_MFD_AIROHA_AN8855=y
CONFIG_MFD_CORE=y
CONFIG_MFD_SYSCON=y
CONFIG_MIGRATION=y CONFIG_MIGRATION=y
# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
CONFIG_MMC=y CONFIG_MMC=y
CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK=y
CONFIG_MMC_CQHCI=y CONFIG_MMC_CQHCI=y
@ -281,6 +279,7 @@ CONFIG_MTK_HSDMA=y
CONFIG_MTK_INFRACFG=y CONFIG_MTK_INFRACFG=y
CONFIG_MTK_LVTS_THERMAL=y CONFIG_MTK_LVTS_THERMAL=y
CONFIG_MTK_LVTS_THERMAL_DEBUGFS=y CONFIG_MTK_LVTS_THERMAL_DEBUGFS=y
CONFIG_MTK_NET_PHYLIB=y
CONFIG_MTK_PMIC_WRAP=y CONFIG_MTK_PMIC_WRAP=y
CONFIG_MTK_REGULATOR_COUPLER=y CONFIG_MTK_REGULATOR_COUPLER=y
CONFIG_MTK_SCPSYS=y CONFIG_MTK_SCPSYS=y
@ -336,7 +335,6 @@ CONFIG_PAGE_POOL=y
CONFIG_PAGE_POOL_STATS=y CONFIG_PAGE_POOL_STATS=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
CONFIG_PARTITION_PERCPU=y CONFIG_PARTITION_PERCPU=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCIEAER=y CONFIG_PCIEAER=y
@ -414,6 +412,7 @@ CONFIG_RAS=y
CONFIG_RATIONAL=y CONFIG_RATIONAL=y
# CONFIG_RAVE_SP_CORE is not set # CONFIG_RAVE_SP_CORE is not set
CONFIG_REALTEK_PHY=y CONFIG_REALTEK_PHY=y
CONFIG_REALTEK_PHY_HWMON=y
CONFIG_REED_SOLOMON=y CONFIG_REED_SOLOMON=y
CONFIG_REED_SOLOMON_DEC8=y CONFIG_REED_SOLOMON_DEC8=y
CONFIG_REED_SOLOMON_ENC8=y CONFIG_REED_SOLOMON_ENC8=y

View File

@ -1,7 +1,7 @@
CONFIG_64BIT=y CONFIG_64BIT=y
# CONFIG_AHCI_MTK is not set # CONFIG_AHCI_MTK is not set
# CONFIG_AIR_AN8855_PHY is not set
# CONFIG_AIROHA_EN8801SC_PHY is not set # CONFIG_AIROHA_EN8801SC_PHY is not set
# CONFIG_AIR_AN8855_PHY is not set
CONFIG_AQUANTIA_PHY=y CONFIG_AQUANTIA_PHY=y
CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
@ -34,7 +34,6 @@ CONFIG_ARM64_VA_BITS_39=y
CONFIG_ARM_AMBA=y CONFIG_ARM_AMBA=y
CONFIG_ARM_ARCH_TIMER=y CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
# CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU is not set
CONFIG_ARM_GIC=y CONFIG_ARM_GIC=y
CONFIG_ARM_GIC_V2M=y CONFIG_ARM_GIC_V2M=y
CONFIG_ARM_GIC_V3=y CONFIG_ARM_GIC_V3=y
@ -44,13 +43,13 @@ CONFIG_ARM_MEDIATEK_CPUFREQ=y
CONFIG_ARM_PMU=y CONFIG_ARM_PMU=y
CONFIG_ARM_PMUV3=y CONFIG_ARM_PMUV3=y
CONFIG_ARM_PSCI_FW=y CONFIG_ARM_PSCI_FW=y
# CONFIG_ARM_SMMU_V3_PMU is not set
CONFIG_ATA=y CONFIG_ATA=y
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SD=y
CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_PCI=y
CONFIG_BLK_PM=y CONFIG_BLK_PM=y
CONFIG_BLOCK_NOTIFIERS=y
CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_BUFFER_HEAD=y CONFIG_BUFFER_HEAD=y
@ -105,6 +104,7 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MITIGATIONS=y
CONFIG_CPU_RMAP=y CONFIG_CPU_RMAP=y
CONFIG_CPU_THERMAL=y CONFIG_CPU_THERMAL=y
CONFIG_CRC16=y CONFIG_CRC16=y
@ -173,7 +173,6 @@ CONFIG_FUNCTION_ALIGNMENT_4B=y
CONFIG_FWNODE_MDIO=y CONFIG_FWNODE_MDIO=y
CONFIG_FW_LOADER_PAGED_BUF=y CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_FW_LOADER_SYSFS=y CONFIG_FW_LOADER_SYSFS=y
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_ARCH_TOPOLOGY=y CONFIG_GENERIC_ARCH_TOPOLOGY=y
@ -241,14 +240,13 @@ CONFIG_MAXLINEAR_GPHY=y
CONFIG_MDIO_BUS=y CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_DEVRES=y CONFIG_MDIO_DEVRES=y
# CONFIG_MDIO_AN8855 is not set
# CONFIG_MEDIATEK_2P5GE_PHY is not set # CONFIG_MEDIATEK_2P5GE_PHY is not set
CONFIG_MEDIATEK_GE_PHY=y CONFIG_MEDIATEK_GE_PHY=y
# CONFIG_MEDIATEK_GE_SOC_PHY is not set # CONFIG_MEDIATEK_GE_SOC_PHY is not set
CONFIG_MEDIATEK_WATCHDOG=y CONFIG_MEDIATEK_WATCHDOG=y
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
CONFIG_MFD_SYSCON=y
# CONFIG_MFD_AIROHA_AN8855 is not set # CONFIG_MFD_AIROHA_AN8855 is not set
CONFIG_MFD_SYSCON=y
CONFIG_MIGRATION=y CONFIG_MIGRATION=y
# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set # CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
CONFIG_MMC=y CONFIG_MMC=y
@ -283,6 +281,7 @@ CONFIG_MTK_CPUX_TIMER=y
CONFIG_MTK_HSDMA=y CONFIG_MTK_HSDMA=y
CONFIG_MTK_INFRACFG=y CONFIG_MTK_INFRACFG=y
# CONFIG_MTK_LVTS_THERMAL is not set # CONFIG_MTK_LVTS_THERMAL is not set
CONFIG_MTK_NET_PHYLIB=y
CONFIG_MTK_PMIC_WRAP=y CONFIG_MTK_PMIC_WRAP=y
CONFIG_MTK_REGULATOR_COUPLER=y CONFIG_MTK_REGULATOR_COUPLER=y
CONFIG_MTK_SCPSYS=y CONFIG_MTK_SCPSYS=y
@ -297,7 +296,6 @@ CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_NET_DEVLINK=y CONFIG_NET_DEVLINK=y
CONFIG_NET_DSA=y CONFIG_NET_DSA=y
# CONFIG_NET_DSA_AN8855 is not set
CONFIG_NET_DSA_MT7530=y CONFIG_NET_DSA_MT7530=y
CONFIG_NET_DSA_MT7530_MDIO=y CONFIG_NET_DSA_MT7530_MDIO=y
# CONFIG_NET_DSA_MT7530_MMIO is not set # CONFIG_NET_DSA_MT7530_MMIO is not set
@ -316,7 +314,6 @@ CONFIG_NO_HZ_COMMON=y
CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_IDLE=y
CONFIG_NR_CPUS=2 CONFIG_NR_CPUS=2
CONFIG_NVMEM=y CONFIG_NVMEM=y
# CONFIG_NVMEM_AN8855_EFUSE is not set
CONFIG_NVMEM_BLOCK=y CONFIG_NVMEM_BLOCK=y
CONFIG_NVMEM_LAYOUTS=y CONFIG_NVMEM_LAYOUTS=y
CONFIG_NVMEM_LAYOUT_ADTRAN=y CONFIG_NVMEM_LAYOUT_ADTRAN=y
@ -338,7 +335,6 @@ CONFIG_PAGE_POOL=y
CONFIG_PAGE_POOL_STATS=y CONFIG_PAGE_POOL_STATS=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
CONFIG_PARTITION_PERCPU=y CONFIG_PARTITION_PERCPU=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCIEAER=y CONFIG_PCIEAER=y
@ -388,6 +384,7 @@ CONFIG_PM_CLK=y
CONFIG_PM_GENERIC_DOMAINS=y CONFIG_PM_GENERIC_DOMAINS=y
CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_PM_GENERIC_DOMAINS_OF=y
CONFIG_PM_OPP=y CONFIG_PM_OPP=y
CONFIG_POLYNOMIAL=y
CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
CONFIG_POWER_RESET=y CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_SYSCON=y CONFIG_POWER_RESET_SYSCON=y
@ -411,6 +408,7 @@ CONFIG_RAS=y
CONFIG_RATIONAL=y CONFIG_RATIONAL=y
# CONFIG_RAVE_SP_CORE is not set # CONFIG_RAVE_SP_CORE is not set
CONFIG_REALTEK_PHY=y CONFIG_REALTEK_PHY=y
CONFIG_REALTEK_PHY_HWMON=y
CONFIG_REED_SOLOMON=y CONFIG_REED_SOLOMON=y
CONFIG_REED_SOLOMON_DEC8=y CONFIG_REED_SOLOMON_DEC8=y
CONFIG_REED_SOLOMON_ENC8=y CONFIG_REED_SOLOMON_ENC8=y

View File

@ -1,6 +1,6 @@
# CONFIG_AIO is not set # CONFIG_AIO is not set
# CONFIG_AIR_AN8855_PHY is not set
# CONFIG_AIROHA_EN8801SC_PHY is not set # CONFIG_AIROHA_EN8801SC_PHY is not set
# CONFIG_AIR_AN8855_PHY is not set
CONFIG_ALIGNMENT_TRAP=y CONFIG_ALIGNMENT_TRAP=y
CONFIG_ARCH_32BIT_OFF_T=y CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y
@ -106,6 +106,7 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_HAS_ASID=y CONFIG_CPU_HAS_ASID=y
CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MITIGATIONS=y
CONFIG_CPU_PABRT_V7=y CONFIG_CPU_PABRT_V7=y
CONFIG_CPU_PM=y CONFIG_CPU_PM=y
CONFIG_CPU_RMAP=y CONFIG_CPU_RMAP=y
@ -114,8 +115,6 @@ CONFIG_CPU_THUMB_CAPABLE=y
CONFIG_CPU_TLB_V7=y CONFIG_CPU_TLB_V7=y
CONFIG_CPU_V7=y CONFIG_CPU_V7=y
CONFIG_CRC16=y CONFIG_CRC16=y
# CONFIG_CRC32_SARWATE is not set
CONFIG_CRC32_SLICEBY8=y
CONFIG_CROSS_MEMORY_ATTACH=y CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_CRC32=y
CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_CRC32C=y
@ -188,17 +187,8 @@ CONFIG_DRM_MEDIATEK_HDMI=y
CONFIG_DRM_MIPI_DSI=y CONFIG_DRM_MIPI_DSI=y
CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL=y
CONFIG_DRM_PANEL_BRIDGE=y CONFIG_DRM_PANEL_BRIDGE=y
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_NEWVISION_NV3051D is not set
# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=y CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=y
# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set
# CONFIG_DRM_PANEL_STARTEK_KD070FHFID015 is not set
# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set
# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set
CONFIG_DRM_SCHED=y CONFIG_DRM_SCHED=y
CONFIG_DRM_SIMPLE_BRIDGE=y CONFIG_DRM_SIMPLE_BRIDGE=y
CONFIG_DTC=y CONFIG_DTC=y
@ -239,7 +229,6 @@ CONFIG_FWNODE_MDIO=y
CONFIG_FW_CACHE=y CONFIG_FW_CACHE=y
CONFIG_FW_LOADER_PAGED_BUF=y CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_FW_LOADER_SYSFS=y CONFIG_FW_LOADER_SYSFS=y
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS=y
@ -353,17 +342,16 @@ CONFIG_MDIO_BITBANG=y
CONFIG_MDIO_BUS=y CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_DEVRES=y CONFIG_MDIO_DEVRES=y
# CONFIG_MDIO_AN8855 is not set
CONFIG_MDIO_GPIO=y CONFIG_MDIO_GPIO=y
CONFIG_MEDIATEK_GE_PHY=y CONFIG_MEDIATEK_GE_PHY=y
CONFIG_MEDIATEK_MT6577_AUXADC=y CONFIG_MEDIATEK_MT6577_AUXADC=y
CONFIG_MEDIATEK_WATCHDOG=y CONFIG_MEDIATEK_WATCHDOG=y
CONFIG_MEMORY=y CONFIG_MEMORY=y
# CONFIG_MFD_AIROHA_AN8855 is not set
CONFIG_MFD_CORE=y CONFIG_MFD_CORE=y
# CONFIG_MFD_HI6421_SPMI is not set # CONFIG_MFD_HI6421_SPMI is not set
CONFIG_MFD_MT6397=y CONFIG_MFD_MT6397=y
CONFIG_MFD_SYSCON=y CONFIG_MFD_SYSCON=y
# CONFIG_MFD_AIROHA_AN8855 is not set
CONFIG_MIGHT_HAVE_CACHE_L2X0=y CONFIG_MIGHT_HAVE_CACHE_L2X0=y
CONFIG_MIGRATION=y CONFIG_MIGRATION=y
CONFIG_MMC=y CONFIG_MMC=y
@ -395,6 +383,7 @@ CONFIG_MTK_IOMMU=y
CONFIG_MTK_IOMMU_V1=y CONFIG_MTK_IOMMU_V1=y
# CONFIG_MTK_LVTS_THERMAL is not set # CONFIG_MTK_LVTS_THERMAL is not set
CONFIG_MTK_MMSYS=y CONFIG_MTK_MMSYS=y
CONFIG_MTK_NET_PHYLIB=y
CONFIG_MTK_PMIC_WRAP=y CONFIG_MTK_PMIC_WRAP=y
CONFIG_MTK_REGULATOR_COUPLER=y CONFIG_MTK_REGULATOR_COUPLER=y
CONFIG_MTK_SCPSYS=y CONFIG_MTK_SCPSYS=y
@ -413,7 +402,6 @@ CONFIG_NEED_SRCU_NMI_SAFE=y
CONFIG_NEON=y CONFIG_NEON=y
CONFIG_NET_DEVLINK=y CONFIG_NET_DEVLINK=y
CONFIG_NET_DSA=y CONFIG_NET_DSA=y
# CONFIG_NET_DSA_AN8855 is not set
CONFIG_NET_DSA_MT7530=y CONFIG_NET_DSA_MT7530=y
CONFIG_NET_DSA_MT7530_MDIO=y CONFIG_NET_DSA_MT7530_MDIO=y
# CONFIG_NET_DSA_MT7530_MMIO is not set # CONFIG_NET_DSA_MT7530_MMIO is not set
@ -435,7 +423,6 @@ CONFIG_NO_HZ_COMMON=y
CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_IDLE=y
CONFIG_NR_CPUS=4 CONFIG_NR_CPUS=4
CONFIG_NVMEM=y CONFIG_NVMEM=y
# CONFIG_NVMEM_AN8855_EFUSE is not set
CONFIG_NVMEM_LAYOUTS=y CONFIG_NVMEM_LAYOUTS=y
# CONFIG_NVMEM_LAYOUT_ADTRAN is not set # CONFIG_NVMEM_LAYOUT_ADTRAN is not set
CONFIG_NVMEM_MTK_EFUSE=y CONFIG_NVMEM_MTK_EFUSE=y
@ -461,7 +448,6 @@ CONFIG_PAGE_POOL=y
CONFIG_PAGE_POOL_STATS=y CONFIG_PAGE_POOL_STATS=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCIEAER=y CONFIG_PCIEAER=y
CONFIG_PCIEPORTBUS=y CONFIG_PCIEPORTBUS=y
@ -588,7 +574,6 @@ CONFIG_TIMER_PROBE=y
CONFIG_TOUCHSCREEN_EDT_FT5X06=y CONFIG_TOUCHSCREEN_EDT_FT5X06=y
CONFIG_TREE_RCU=y CONFIG_TREE_RCU=y
CONFIG_TREE_SRCU=y CONFIG_TREE_SRCU=y
# CONFIG_UACCE is not set
CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS=y
CONFIG_UEVENT_HELPER_PATH="" CONFIG_UEVENT_HELPER_PATH=""
CONFIG_UIMAGE_FIT_BLK=y CONFIG_UIMAGE_FIT_BLK=y

View File

@ -1,5 +1,5 @@
# CONFIG_AIR_AN8855_PHY is not set
# CONFIG_AIROHA_EN8801SC_PHY is not set # CONFIG_AIROHA_EN8801SC_PHY is not set
# CONFIG_AIR_AN8855_PHY is not set
CONFIG_ALIGNMENT_TRAP=y CONFIG_ALIGNMENT_TRAP=y
CONFIG_ARCH_32BIT_OFF_T=y CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y
@ -76,6 +76,7 @@ CONFIG_CPU_HAS_ASID=y
CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_MENU=y CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MITIGATIONS=y
CONFIG_CPU_PABRT_V7=y CONFIG_CPU_PABRT_V7=y
CONFIG_CPU_PM=y CONFIG_CPU_PM=y
CONFIG_CPU_RMAP=y CONFIG_CPU_RMAP=y
@ -112,7 +113,6 @@ CONFIG_FUNCTION_ALIGNMENT=0
CONFIG_FWNODE_MDIO=y CONFIG_FWNODE_MDIO=y
CONFIG_FW_LOADER_PAGED_BUF=y CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_FW_LOADER_SYSFS=y CONFIG_FW_LOADER_SYSFS=y
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_ALLOCATOR=y
CONFIG_GENERIC_ARCH_TOPOLOGY=y CONFIG_GENERIC_ARCH_TOPOLOGY=y
CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG=y
@ -182,11 +182,10 @@ CONFIG_MACH_MT7629=y
CONFIG_MDIO_BUS=y CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_DEVRES=y CONFIG_MDIO_DEVRES=y
# CONFIG_MDIO_AN8855 is not set
CONFIG_MEDIATEK_GE_PHY=y CONFIG_MEDIATEK_GE_PHY=y
CONFIG_MEDIATEK_WATCHDOG=y CONFIG_MEDIATEK_WATCHDOG=y
CONFIG_MFD_SYSCON=y
# CONFIG_MFD_AIROHA_AN8855 is not set # CONFIG_MFD_AIROHA_AN8855 is not set
CONFIG_MFD_SYSCON=y
CONFIG_MIGHT_HAVE_CACHE_L2X0=y CONFIG_MIGHT_HAVE_CACHE_L2X0=y
CONFIG_MIGRATION=y CONFIG_MIGRATION=y
CONFIG_MMU_LAZY_TLB_REFCOUNT=y CONFIG_MMU_LAZY_TLB_REFCOUNT=y
@ -208,6 +207,7 @@ CONFIG_MTD_UBI_WL_THRESHOLD=4096
# CONFIG_MTK_CMDQ is not set # CONFIG_MTK_CMDQ is not set
CONFIG_MTK_CPUX_TIMER=y CONFIG_MTK_CPUX_TIMER=y
CONFIG_MTK_INFRACFG=y CONFIG_MTK_INFRACFG=y
CONFIG_MTK_NET_PHYLIB=y
# CONFIG_MTK_PMIC_WRAP is not set # CONFIG_MTK_PMIC_WRAP is not set
CONFIG_MTK_SCPSYS=y CONFIG_MTK_SCPSYS=y
CONFIG_MTK_SCPSYS_PM_DOMAINS=y CONFIG_MTK_SCPSYS_PM_DOMAINS=y
@ -219,7 +219,6 @@ CONFIG_NETFILTER=y
CONFIG_NETFILTER_BPF_LINK=y CONFIG_NETFILTER_BPF_LINK=y
CONFIG_NET_DEVLINK=y CONFIG_NET_DEVLINK=y
CONFIG_NET_DSA=y CONFIG_NET_DSA=y
# CONFIG_NET_DSA_AN8855 is not set
CONFIG_NET_DSA_MT7530=y CONFIG_NET_DSA_MT7530=y
CONFIG_NET_DSA_MT7530_MDIO=y CONFIG_NET_DSA_MT7530_MDIO=y
# CONFIG_NET_DSA_MT7530_MMIO is not set # CONFIG_NET_DSA_MT7530_MMIO is not set
@ -238,7 +237,6 @@ CONFIG_NO_HZ_COMMON=y
CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_IDLE=y
CONFIG_NR_CPUS=2 CONFIG_NR_CPUS=2
CONFIG_NVMEM=y CONFIG_NVMEM=y
# CONFIG_NVMEM_AN8855_EFUSE is not set
CONFIG_NVMEM_LAYOUTS=y CONFIG_NVMEM_LAYOUTS=y
# CONFIG_NVMEM_LAYOUT_ADTRAN is not set # CONFIG_NVMEM_LAYOUT_ADTRAN is not set
# CONFIG_NVMEM_MTK_EFUSE is not set # CONFIG_NVMEM_MTK_EFUSE is not set
@ -261,7 +259,6 @@ CONFIG_PAGE_POOL=y
CONFIG_PAGE_POOL_STATS=y CONFIG_PAGE_POOL_STATS=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCIEAER=y CONFIG_PCIEAER=y
CONFIG_PCIEPORTBUS=y CONFIG_PCIEPORTBUS=y

View File

@ -13,6 +13,7 @@ define Device/globalscale_espressobin
DEVICE_VENDOR := Marvell DEVICE_VENDOR := Marvell
DEVICE_MODEL := ESPRESSObin DEVICE_MODEL := ESPRESSObin
DEVICE_VARIANT := Non-eMMC DEVICE_VARIANT := Non-eMMC
DEVICE_PACKAGES += kmod-dsa-mv88e6xxx
DEVICE_ALT0_VENDOR := Marvell DEVICE_ALT0_VENDOR := Marvell
DEVICE_ALT0_MODEL := Armada 3700 Community Board DEVICE_ALT0_MODEL := Armada 3700 Community Board
DEVICE_ALT0_VARIANT := Non-eMMC DEVICE_ALT0_VARIANT := Non-eMMC
@ -26,6 +27,7 @@ define Device/globalscale_espressobin-emmc
DEVICE_VENDOR := Marvell DEVICE_VENDOR := Marvell
DEVICE_MODEL := ESPRESSObin DEVICE_MODEL := ESPRESSObin
DEVICE_VARIANT := eMMC DEVICE_VARIANT := eMMC
DEVICE_PACKAGES += kmod-dsa-mv88e6xxx
DEVICE_ALT0_VENDOR := Marvell DEVICE_ALT0_VENDOR := Marvell
DEVICE_ALT0_MODEL := Armada 3700 Community Board DEVICE_ALT0_MODEL := Armada 3700 Community Board
DEVICE_ALT0_VARIANT := eMMC DEVICE_ALT0_VARIANT := eMMC
@ -50,6 +52,7 @@ define Device/globalscale_espressobin-v7
DEVICE_VENDOR := Marvell DEVICE_VENDOR := Marvell
DEVICE_MODEL := ESPRESSObin DEVICE_MODEL := ESPRESSObin
DEVICE_VARIANT := V7 Non-eMMC DEVICE_VARIANT := V7 Non-eMMC
DEVICE_PACKAGES += kmod-dsa-mv88e6xxx
DEVICE_ALT0_VENDOR := Marvell DEVICE_ALT0_VENDOR := Marvell
DEVICE_ALT0_MODEL := Armada 3700 Community Board DEVICE_ALT0_MODEL := Armada 3700 Community Board
DEVICE_ALT0_VARIANT := V7 Non-eMMC DEVICE_ALT0_VARIANT := V7 Non-eMMC
@ -63,6 +66,7 @@ define Device/globalscale_espressobin-v7-emmc
DEVICE_VENDOR := Marvell DEVICE_VENDOR := Marvell
DEVICE_MODEL := ESPRESSObin DEVICE_MODEL := ESPRESSObin
DEVICE_VARIANT := V7 eMMC DEVICE_VARIANT := V7 eMMC
DEVICE_PACKAGES += kmod-dsa-mv88e6xxx
DEVICE_ALT0_VENDOR := Marvell DEVICE_ALT0_VENDOR := Marvell
DEVICE_ALT0_MODEL := Armada 3700 Community Board DEVICE_ALT0_MODEL := Armada 3700 Community Board
DEVICE_ALT0_VARIANT := V7 eMMC DEVICE_ALT0_VARIANT := V7 eMMC

View File

@ -0,0 +1,387 @@
/dts-v1/;
#include "ipq5018.dtsi"
#include "ipq5018-mx-base.dtsi"
/ {
model = "Linksys MR5500";
compatible = "linksys,mr5500", "qcom,ipq5018";
gpio-leds {
compatible = "gpio-leds";
usb {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_USB;
gpios = <&tlmm 19 GPIO_ACTIVE_HIGH>;
trigger-sources = <&usb_port1>;
linux,default-trigger = "usbport";
};
};
regulator_fixed_5p0: regulator-s0500 {
compatible = "regulator-fixed";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <500000>;
regulator-name = "fixed_5p0";
gpio = <&tlmm 17 GPIO_ACTIVE_LOW>;
};
};
/*
* ===============================================================
* _______________________ _______________________
* | IPQ5018 | | QCA8337 |
* | +------+ +--------+ | | +--------+ +------+ |
* | | MAC0 |---| GE Phy | | | | Phy0 |---| MAC1 | |
* | +------+ +--------+ | | +--------+ +------+ |
* | +------+ +--------+ | | +--------+ +------+ |
* | | MAC1 |---| Uniphy |-+-SGMII-+-| SerDes |---| MAC6 | |
* | +------+ +--------+ | | +--------+ +------+ |
* |_______________________| |_______________________|
*
* ===============================================================
*/
&switch {
status = "okay";
switch_mac_mode = <MAC_MODE_SGMII_CHANNEL0>;
qcom,port_phyinfo {
// MAC0 -> GE Phy
port@0 {
port_id = <1>;
mdiobus = <&mdio0>;
phy_address = <7>;
};
// MAC1 ---SGMII---> QCA8337 SerDes
port@1 {
port_id = <2>;
forced-speed = <1000>;
forced-duplex = <1>;
};
};
};
// MAC1 ---SGMII---> QCA8337 SerDes
&dp2 {
status = "okay";
nvmem-cells = <&hw_mac_addr 0>;
nvmem-cell-names = "mac-address";
fixed-link {
speed = <1000>;
full-duplex;
};
};
&mdio0 {
status = "okay";
};
&mdio1 {
status = "okay";
pinctrl-0 = <&mdio1_pins>;
pinctrl-names = "default";
reset-gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
switch1: ethernet-switch@17 {
compatible = "qca,qca8337";
reg = <17>;
#address-cells = <1>;
#size-cells = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
reg = <1>;
label = "lan1";
phy-handle = <&qca8337_0>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@2 {
reg = <2>;
label = "lan2";
phy-handle = <&qca8337_1>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@3 {
reg = <3>;
label = "lan3";
phy-handle = <&qca8337_2>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@4 {
reg = <4>;
label = "lan4";
phy-handle = <&qca8337_3>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@5 {
reg = <5>;
label = "wan";
phy-handle = <&qca8337_4>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_WAN;
default-state = "keep";
};
};
};
port@6 {
reg = <6>;
label = "cpu";
phy-mode = "sgmii";
ethernet = <&dp2>;
qca,sgmii-enable-pll;
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
mdio {
#address-cells = <1>;
#size-cells = <0>;
// QCA8337 Phy0 -> LAN1
qca8337_0: ethernet-phy@0 {
reg = <0>;
};
// QCA8337 Phy1 -> LAN2
qca8337_1: ethernet-phy@1 {
reg = <1>;
};
// QCA8337 Phy2 -> LAN3
qca8337_2: ethernet-phy@2 {
reg = <2>;
};
// QCA8337 Phy3 -> LAN4
qca8337_3: ethernet-phy@3 {
reg = <3>;
};
// QCA8337 Phy4 -> WAN
qca8337_4: ethernet-phy@4 {
reg = <4>;
};
};
};
};
&usbphy0 {
status = "okay";
vdd-supply = <&regulator_fixed_5p0>;
};
&usb {
status = "okay";
vbus-supply = <&regulator_fixed_5p0>;
};
&usb_dwc {
address-cells = <1>;
#size-cells = <0>;
dr_mode = "host";
usb_port1: port@1 {
reg = <1>;
#trigger-source-cells = <0>;
};
};
&pcie0_phy {
status = "okay";
};
&pcie0 {
status = "okay";
perst-gpios = <&tlmm 15 GPIO_ACTIVE_LOW>;
bridge@0,0 {
reg = <0x00000000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;
wifi@1,0 {
status = "okay";
/* QCN9074: ath11k lacks DT compatible for PCI cards */
compatible = "pci17cb,1104";
reg = <0x00010000 0 0 0 0>;
qcom,ath11k-calibration-variant = "Linksys-MR5500";
};
};
};
&q6v5_wcss {
status = "okay";
memory-region = <&q6_mem_regions>;
firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
"ath11k/IPQ5018/hw1.0/m3_fw.mdt";
// IPQ5018
q6_wcss_pd1: pd-1 {
firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
resets =
<&gcc GCC_WCSSAON_RESET>,
<&gcc GCC_WCSS_BCR>,
<&gcc GCC_CE_BCR>;
reset-names =
"wcss_aon_reset",
"wcss_reset",
"ce_reset";
clocks =
<&gcc GCC_WCSS_AHB_S_CLK>,
<&gcc GCC_WCSS_ACMT_CLK>,
<&gcc GCC_WCSS_AXI_M_CLK>;
clock-names =
"gcc_wcss_ahb_s_clk",
"gcc_wcss_acmt_clk",
"gcc_wcss_axi_m_clk";
interrupts-extended =
<&wcss_smp2p_in 8 0>,
<&wcss_smp2p_in 9 0>,
<&wcss_smp2p_in 12 0>,
<&wcss_smp2p_in 11 0>;
interrupt-names =
"fatal",
"ready",
"spawn-ack",
"stop-ack";
qcom,smem-states =
<&wcss_smp2p_out 8>,
<&wcss_smp2p_out 9>,
<&wcss_smp2p_out 10>;
qcom,smem-state-names =
"shutdown",
"stop",
"spawn";
};
};
&wifi0 {
// IPQ5018
qcom,rproc = <&q6_wcss_pd1>;
qcom,ath11k-calibration-variant = "Linksys-MR5500";
qcom,ath11k-fw-memory-mode = <2>;
qcom,bdf-addr = <0x4c400000>;
status = "okay";
};

View File

@ -225,6 +225,8 @@
spi-max-frequency = <50000000>; spi-max-frequency = <50000000>;
partitions { partitions {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fixed-partitions"; compatible = "fixed-partitions";
partition@0 { partition@0 {

View File

@ -11,6 +11,17 @@ define Device/linksys_ipq50xx_mx_base
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=$$$$(DEVICE_MODEL) IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=$$$$(DEVICE_MODEL)
endef endef
define Device/linksys_mr5500
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := MR5500
DEVICE_DTS_CONFIG := config@mp03.1
DEVICE_PACKAGES := kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-linksys_mr5500 \
kmod-usb-ledtrig-usbport
endef
TARGET_DEVICES += linksys_mr5500
define Device/linksys_mx2000 define Device/linksys_mx2000
$(call Device/linksys_ipq50xx_mx_base) $(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := MX2000 DEVICE_MODEL := MX2000

View File

@ -0,0 +1,28 @@
#
# Copyright (C) 2015 OpenWrt.org
#
. /lib/functions/uci-defaults.sh
board_config_update
board=$(board_name)
case "$board" in
linksys,mr5500)
ucidef_set_led_netdev "lan1-port-link" "LAN1-PORT-LINK" "qca8k-0.0:00:green:lan" "lan1" "link_10 link_100 link_1000"
ucidef_set_led_netdev "lan1-port-activity" "LAN1-PORT-ACTIVITY" "qca8k-0.0:00:amber:lan" "lan1" "tx rx"
ucidef_set_led_netdev "lan2-port-link" "LAN2-PORT-LINK" "qca8k-0.0:01:green:lan" "lan2" "link_10 link_100 link_1000"
ucidef_set_led_netdev "lan2-port-activity" "LAN2-PORT-ACTIVITY" "qca8k-0.0:01:amber:lan" "lan2" "tx rx"
ucidef_set_led_netdev "lan3-port-link" "LAN3-PORT-LINK" "qca8k-0.0:02:green:lan" "lan3" "link_10 link_100 link_1000"
ucidef_set_led_netdev "lan3-port-activity" "LAN3-PORT-ACTIVITY" "qca8k-0.0:02:amber:lan" "lan3" "tx rx"
ucidef_set_led_netdev "lan4-port-link" "LAN4-PORT-LINK" "qca8k-0.0:03:green:lan" "lan4" "link_10 link_100 link_1000"
ucidef_set_led_netdev "lan4-port-activity" "LAN4-PORT-ACTIVITY" "qca8k-0.0:03:amber:lan" "lan4" "tx rx"
ucidef_set_led_netdev "wan-port-link" "WAN-PORT-LINK" "qca8k-0.0:04:green:wan" "wan" "link_10 link_100 link_1000"
ucidef_set_led_netdev "wan-port-activity" "WAN-PORT-ACTIVITY" "qca8k-0.0:04:amber:wan" "wan" "tx rx"
;;
esac
board_config_flush
exit 0

View File

@ -7,6 +7,9 @@ ipq50xx_setup_interfaces()
{ {
local board="$1" local board="$1"
case $board in case $board in
linksys,mr5500)
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
;;
linksys,mx2000|\ linksys,mx2000|\
linksys,mx5500|\ linksys,mx5500|\
linksys,spnmx56) linksys,spnmx56)

View File

@ -9,6 +9,7 @@ board=$(board_name)
case "$FIRMWARE" in case "$FIRMWARE" in
"ath11k/IPQ5018/hw1.0/cal-ahb-c000000.wifi.bin") "ath11k/IPQ5018/hw1.0/cal-ahb-c000000.wifi.bin")
case "$board" in case "$board" in
linksys,mr5500|\
linksys,mx2000|\ linksys,mx2000|\
linksys,mx5500|\ linksys,mx5500|\
linksys,spnmx56) linksys,spnmx56)
@ -33,6 +34,7 @@ case "$FIRMWARE" in
;; ;;
"ath11k/QCN9074/hw1.0/cal-pci-0001:01:00.0.bin") "ath11k/QCN9074/hw1.0/cal-pci-0001:01:00.0.bin")
case "$board" in case "$board" in
linksys,mr5500|\
linksys,mx5500|\ linksys,mx5500|\
linksys,spnmx56) linksys,spnmx56)
caldata_extract "0:ART" 0x26800 0x20000 caldata_extract "0:ART" 0x26800 0x20000

View File

@ -4,6 +4,7 @@ START=99
boot() { boot() {
case $(board_name) in case $(board_name) in
linksys,mr5500|\
linksys,mx2000|\ linksys,mx2000|\
linksys,mx5500|\ linksys,mx5500|\
linksys,spnmx56) linksys,spnmx56)

View File

@ -71,6 +71,7 @@ platform_check_image() {
platform_do_upgrade() { platform_do_upgrade() {
case "$(board_name)" in case "$(board_name)" in
linksys,mr5500|\
linksys,mx2000|\ linksys,mx2000|\
linksys,mx5500|\ linksys,mx5500|\
linksys,spnmx56) linksys,spnmx56)

View File

@ -7,6 +7,7 @@ CONFIG_MTD_SPI_NAND=y
CONFIG_NET_DEVLINK=y CONFIG_NET_DEVLINK=y
CONFIG_NET_DSA=y CONFIG_NET_DSA=y
CONFIG_NET_DSA_QCA8K=y CONFIG_NET_DSA_QCA8K=y
CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT=y
CONFIG_NET_DSA_TAG_QCA=y CONFIG_NET_DSA_TAG_QCA=y
CONFIG_PHYLINK=y CONFIG_PHYLINK=y
CONFIG_PHY_QCOM_M31_USB=y CONFIG_PHY_QCOM_M31_USB=y

View File

@ -57,7 +57,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
static int __qcom_scm_set_dload_mode(struct device *dev, bool enable) static int __qcom_scm_set_dload_mode(struct device *dev, bool enable)
{ {
struct qcom_scm_desc desc = { struct qcom_scm_desc desc = {
@@ -1473,6 +1496,13 @@ static int qcom_scm_probe(struct platfor @@ -1474,6 +1497,13 @@ static int qcom_scm_probe(struct platfor
__get_convention(); __get_convention();

View File

@ -234,7 +234,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
/* Format flags */ /* Format flags */
#define UVC_FMT_FLAG_COMPRESSED 0x00000001 #define UVC_FMT_FLAG_COMPRESSED 0x00000001
@@ -587,6 +589,7 @@ struct uvc_device { @@ -591,6 +593,7 @@ struct uvc_device {
struct input_dev *input; struct input_dev *input;
char input_phys[64]; char input_phys[64];