Merge remote-tracking branch 'remotes/remote/master'
Some checks failed
Some checks failed
This commit is contained in:
commit
9b0ca6731d
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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))
|
||||||
|
@ -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/
|
||||||
|
@ -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
|
@ -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
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
}
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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' => {
|
||||||
|
@ -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
|
||||||
|
@ -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, },
|
|
||||||
{},
|
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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().
|
||||||
*/
|
*/
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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)
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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 */
|
||||||
|
|
||||||
|
@ -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 */
|
|
@ -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);
|
|
@ -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;
|
|
@ -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
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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, ð->state);
|
set_bit(MTK_RESETTING, ð->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 */
|
||||||
|
@ -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)
|
@ -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);
|
||||||
|
@ -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(ð->dummy_dev);
|
init_dummy_netdev(ð->dummy_dev);
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 = <®ulator_fixed_5p0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
vbus-supply = <®ulator_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";
|
||||||
|
};
|
@ -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 {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user