Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
fad8da597e
@ -141,21 +141,19 @@ $(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \
|
||||
|
||||
$(eval $(call CleanupPython2))
|
||||
|
||||
$(eval $(call SetupHostCommand,python,Please install Python >= 3.5, \
|
||||
$(eval $(call SetupHostCommand,python,Please install Python >= 3.6, \
|
||||
python3.9 -V 2>&1 | grep 'Python 3', \
|
||||
python3.8 -V 2>&1 | grep 'Python 3', \
|
||||
python3.7 -V 2>&1 | grep 'Python 3', \
|
||||
python3.6 -V 2>&1 | grep 'Python 3', \
|
||||
python3.5 -V 2>&1 | grep 'Python 3', \
|
||||
python3 -V 2>&1 | grep -E 'Python 3\.[5-9]\.?'))
|
||||
python3 -V 2>&1 | grep -E 'Python 3\.[6-9]\.?'))
|
||||
|
||||
$(eval $(call SetupHostCommand,python3,Please install Python >= 3.5, \
|
||||
$(eval $(call SetupHostCommand,python3,Please install Python >= 3.6, \
|
||||
python3.9 -V 2>&1 | grep 'Python 3', \
|
||||
python3.8 -V 2>&1 | grep 'Python 3', \
|
||||
python3.7 -V 2>&1 | grep 'Python 3', \
|
||||
python3.6 -V 2>&1 | grep 'Python 3', \
|
||||
python3.5 -V 2>&1 | grep 'Python 3', \
|
||||
python3 -V 2>&1 | grep -E 'Python 3\.[5-9]\.?'))
|
||||
python3 -V 2>&1 | grep -E 'Python 3\.[6-9]\.?'))
|
||||
|
||||
$(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \
|
||||
git --exec-path | xargs -I % -- grep -q -- --recursive %/git-submodule))
|
||||
|
||||
@ -24,6 +24,9 @@ case "$board" in
|
||||
ubootenv_add_uci_config "$envdev" "0x0" "0x80000" "0x80000" "1"
|
||||
ubootenv_add_uci_config "$envdev" "0x80000" "0x80000" "0x80000" "1"
|
||||
;;
|
||||
buffalo,wsr-2533dhp2)
|
||||
ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x1000" "0x1000"
|
||||
;;
|
||||
esac
|
||||
|
||||
config_load ubootenv
|
||||
|
||||
@ -12,19 +12,20 @@ include $(INCLUDE_DIR)/host-build.mk
|
||||
define U-Boot/Default
|
||||
BUILD_TARGET:=mediatek
|
||||
UBOOT_IMAGE:=u-boot-mtk.bin
|
||||
DEFAULT:=y
|
||||
endef
|
||||
|
||||
define U-Boot/mt7622_rfb1
|
||||
NAME:=MT7622 Reference Board 1
|
||||
BUILD_SUBTARGET:=mt7622
|
||||
UBOOT_CONFIG:=mt7622_rfb
|
||||
BUILD_DEVICES:=mediatek_mt7622-rfb1 mediatek_mt7622-rfb1-ubi
|
||||
BUILD_SUBTARGET:=mt7622
|
||||
endef
|
||||
|
||||
define U-Boot/mt7622_linksys_e8450
|
||||
NAME:=Linksys E8450
|
||||
BUILD_SUBTARGET:=mt7622
|
||||
UBOOT_CONFIG:=mt7622_linksys_e8450
|
||||
BUILD_DEVICES:=linksys_e8450-ubi
|
||||
BUILD_SUBTARGET:=mt7622
|
||||
UBOOT_IMAGE:=u-boot.fip
|
||||
BL2_BOOTDEV:=snand
|
||||
BL2_DDRBLOB:=1
|
||||
@ -33,8 +34,9 @@ endef
|
||||
|
||||
define U-Boot/mt7622_bananapi_bpi-r64-emmc
|
||||
NAME:=BananaPi R64 (eMMC)
|
||||
BUILD_SUBTARGET:=mt7622
|
||||
UBOOT_CONFIG:=mt7622_bananapi_bpi-r64-emmc
|
||||
BUILD_DEVICES:=bananapi_bpi-r64
|
||||
BUILD_SUBTARGET:=mt7622
|
||||
UBOOT_IMAGE:=u-boot.fip
|
||||
BL2_BOOTDEV:=emmc
|
||||
BL2_DDRBLOB:=2
|
||||
@ -43,8 +45,9 @@ endef
|
||||
|
||||
define U-Boot/mt7622_bananapi_bpi-r64-sdmmc
|
||||
NAME:=BananaPi R64 (SDMMC)
|
||||
BUILD_SUBTARGET:=mt7622
|
||||
UBOOT_CONFIG:=mt7622_bananapi_bpi-r64-sdmmc
|
||||
BUILD_DEVICES:=bananapi_bpi-r64
|
||||
BUILD_SUBTARGET:=mt7622
|
||||
UBOOT_IMAGE:=u-boot.fip
|
||||
BL2_BOOTDEV:=sdmmc
|
||||
BL2_DDRBLOB:=2
|
||||
@ -53,31 +56,34 @@ endef
|
||||
|
||||
define U-Boot/mt7623a_unielec_u7623
|
||||
NAME:=UniElec U7623 (mt7623)
|
||||
BUILD_DEVICES:=unielec_u7623-emmc unielec_u7623-02-emmc-512m-legacy
|
||||
BUILD_SUBTARGET:=mt7623
|
||||
UBOOT_CONFIG:=mt7623a_unielec_u7623_02
|
||||
endef
|
||||
|
||||
define U-Boot/mt7623n_bpir2
|
||||
NAME:=Banana Pi R2 (mt7623)
|
||||
BUILD_DEVICES:=bpi_bananapi-r2
|
||||
BUILD_SUBTARGET:=mt7623
|
||||
UBOOT_IMAGE:=u-boot.bin
|
||||
UBOOT_CONFIG:=mt7623n_bpir2
|
||||
endef
|
||||
|
||||
define U-Boot/mt7629
|
||||
NAME:=MT7629
|
||||
define U-Boot/mt7629_rfb
|
||||
NAME:=MT7629 Reference Board
|
||||
BUILD_SUBTARGET:=mt7629
|
||||
BUILD_DEVICES:=mediatek_mt7629-rfb
|
||||
UBOOT_CONFIG:=mt7629_rfb
|
||||
endef
|
||||
|
||||
UBOOT_TARGETS := \
|
||||
mt7629 \
|
||||
mt7622_bananapi_bpi-r64-emmc \
|
||||
mt7622_bananapi_bpi-r64-sdmmc \
|
||||
mt7622_linksys_e8450 \
|
||||
mt7622_rfb1 \
|
||||
mt7623n_bpir2 \
|
||||
mt7623a_unielec_u7623
|
||||
mt7623a_unielec_u7623 \
|
||||
mt7629_rfb
|
||||
|
||||
UBOOT_MAKE_FLAGS += $(UBOOT_IMAGE:.fip=.bin)
|
||||
|
||||
|
||||
@ -147,7 +147,7 @@
|
||||
+CONFIG_USB_STORAGE=y
|
||||
--- /dev/null
|
||||
+++ b/bananapi_bpi-r64-sdmmc_env
|
||||
@@ -0,0 +1,54 @@
|
||||
@@ -0,0 +1,57 @@
|
||||
+ipaddr=192.168.1.1
|
||||
+serverip=192.168.1.254
|
||||
+loadaddr=0x4007ff28
|
||||
@ -184,8 +184,11 @@
|
||||
+emmc_write_bl2=mmc dev 0 1 && mmc partconf 0 1 1 1 && mmc erase 0x0 0x400 && mmc write $loadaddr 0x0 0x100 ; mmc partconf 0 1 1 0
|
||||
+emmc_write_hdr=mmc dev 0 0 && mmc erase 0x0 0x40 && mmc write $loadaddr 0x0 0x40
|
||||
+emmc_write_bl3=mmc dev 0 0 && mmc erase 0x1000 0x800 && mmc write $loadaddr 0x1000 0x800
|
||||
+emmc_write_production=iminfo $loadaddr && mmc dev 0 && part start mmc 0 $part_default part_addr && part size mmc 0 $part_default part_size && run mmc_write_vol
|
||||
+emmc_write_recovery=iminfo $loadaddr && mmc dev 0 && part start mmc 0 $part_recovery part_addr && part size mmc 0 $part_recovery part_size && run mmc_write_vol
|
||||
+emmc_init=run sdmmc_read_emmc_bl2 && run emmc_write_bl2 && run sdmmc_read_emmc_hdr && run emmc_write_hdr && run sdmmc_read_emmc_bl3 && run emmc_write_bl3 && run sdmmc_read_recovery && run emmc_write_recovery ; env default bootcmd ; saveenv ; saveenv
|
||||
+emmc_init_bl=run sdmmc_read_emmc_bl2 && run emmc_write_bl2 && run sdmmc_read_emmc_hdr && run emmc_write_hdr && run sdmmc_read_emmc_bl3 && run emmc_write_bl3
|
||||
+emmc_init_openwrt=run sdmmc_read_recovery && run emmc_write_recovery ; run sdmmc_read_production && run emmc_write_production
|
||||
+emmc_init=run emmc_init_bl && run emmc_init_openwrt ; env default bootcmd ; saveenv ; saveenv
|
||||
+sdmmc_write_production=iminfo $fileaddr && mmc dev 1 && part start mmc 1 $part_default part_addr && part size mmc 1 $part_default part_size && run mmc_write_vol
|
||||
+sdmmc_write_recovery=iminfo $fileaddr && mmc dev 1 && part start mmc 1 $part_recovery part_addr && part size mmc 1 $part_recovery part_size && run mmc_write_vol
|
||||
+sdmmc_read_production=mmc dev 1 && part start mmc 1 $part_default part_addr && part size mmc 1 $part_default part_size && run mmc_read_vol
|
||||
|
||||
@ -138,6 +138,23 @@ endef
|
||||
$(eval $(call KernelPackage,mii))
|
||||
|
||||
|
||||
define KernelPackage/mdio-devres
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Supports MDIO device registration
|
||||
DEPENDS:=@LINUX_5_10 +kmod-libphy
|
||||
KCONFIG:=CONFIG_MDIO_DEVRES
|
||||
HIDDEN:=1
|
||||
FILES:=$(LINUX_DIR)/drivers/net/phy/mdio_devres.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mdio-devres)
|
||||
endef
|
||||
|
||||
define KernelPackage/mdio-devres/description
|
||||
Supports MDIO device registration
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mdio-devres))
|
||||
|
||||
|
||||
define KernelPackage/mdio-gpio
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:= Supports GPIO lib-based MDIO busses
|
||||
@ -545,8 +562,9 @@ $(eval $(call KernelPackage,8139cp))
|
||||
define KernelPackage/r8169
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=RealTek RTL-8169 PCI Gigabit Ethernet Adapter kernel support
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek
|
||||
KCONFIG:=CONFIG_R8169 \
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek +LINUX_5_10:kmod-mdio-devres
|
||||
KCONFIG:= \
|
||||
CONFIG_R8169 \
|
||||
CONFIG_R8169_NAPI=y \
|
||||
CONFIG_R8169_VLAN=n
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/realtek/r8169.ko
|
||||
@ -670,7 +688,7 @@ $(eval $(call KernelPackage,igbvf))
|
||||
define KernelPackage/ixgbe
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Intel(R) 82598/82599 PCI-Express 10 Gigabit Ethernet support
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp +kmod-hwmon-core +kmod-libphy
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp +kmod-hwmon-core +kmod-libphy +LINUX_5_10:kmod-mdio-devres
|
||||
KCONFIG:=CONFIG_IXGBE \
|
||||
CONFIG_IXGBE_VXLAN=n \
|
||||
CONFIG_IXGBE_HWMON=y \
|
||||
|
||||
@ -0,0 +1,301 @@
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Sun, 6 Dec 2020 14:54:42 +0200
|
||||
Subject: [PATCH] cfg80211: support immediate reconnect request hint
|
||||
|
||||
There are cases where it's necessary to disconnect, but an
|
||||
immediate reconnection is desired. Support a hint to userspace
|
||||
that this is the case, by including a new attribute in the
|
||||
deauth or disassoc event.
|
||||
|
||||
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
||||
Link: https://lore.kernel.org/r/iwlwifi.20201206145305.58d33941fb9d.I0e7168c205c7949529c8e3b86f3c9b12c01a7017@changeid
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -6410,13 +6410,15 @@ void cfg80211_abandon_assoc(struct net_d
|
||||
* @dev: network device
|
||||
* @buf: 802.11 frame (header + body)
|
||||
* @len: length of the frame data
|
||||
+ * @reconnect: immediate reconnect is desired (include the nl80211 attribute)
|
||||
*
|
||||
* This function is called whenever deauthentication has been processed in
|
||||
* station mode. This includes both received deauthentication frames and
|
||||
* locally generated ones. This function may sleep. The caller must hold the
|
||||
* corresponding wdev's mutex.
|
||||
*/
|
||||
-void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len);
|
||||
+void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len,
|
||||
+ bool reconnect);
|
||||
|
||||
/**
|
||||
* cfg80211_rx_unprot_mlme_mgmt - notification of unprotected mlme mgmt frame
|
||||
--- a/include/uapi/linux/nl80211.h
|
||||
+++ b/include/uapi/linux/nl80211.h
|
||||
@@ -2527,6 +2527,10 @@ enum nl80211_commands {
|
||||
* override mask. Used with NL80211_ATTR_S1G_CAPABILITY in
|
||||
* NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT.
|
||||
*
|
||||
+ * @NL80211_ATTR_RECONNECT_REQUESTED: flag attribute, used with deauth and
|
||||
+ * disassoc events to indicate that an immediate reconnect to the AP
|
||||
+ * is desired.
|
||||
+ *
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -3016,6 +3020,8 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_S1G_CAPABILITY,
|
||||
NL80211_ATTR_S1G_CAPABILITY_MASK,
|
||||
|
||||
+ NL80211_ATTR_RECONNECT_REQUESTED,
|
||||
+
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -2729,7 +2729,7 @@ static void ieee80211_report_disconnect(
|
||||
};
|
||||
|
||||
if (tx)
|
||||
- cfg80211_tx_mlme_mgmt(sdata->dev, buf, len);
|
||||
+ cfg80211_tx_mlme_mgmt(sdata->dev, buf, len, false);
|
||||
else
|
||||
cfg80211_rx_mlme_mgmt(sdata->dev, buf, len);
|
||||
|
||||
@@ -4716,7 +4716,8 @@ void ieee80211_mgd_quiesce(struct ieee80
|
||||
if (ifmgd->auth_data)
|
||||
ieee80211_destroy_auth_data(sdata, false);
|
||||
cfg80211_tx_mlme_mgmt(sdata->dev, frame_buf,
|
||||
- IEEE80211_DEAUTH_FRAME_LEN);
|
||||
+ IEEE80211_DEAUTH_FRAME_LEN,
|
||||
+ false);
|
||||
}
|
||||
|
||||
/* This is a bit of a hack - we should find a better and more generic
|
||||
--- a/net/wireless/mlme.c
|
||||
+++ b/net/wireless/mlme.c
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Copyright (c) 2009, Jouni Malinen <j@w1.fi>
|
||||
* Copyright (c) 2015 Intel Deutschland GmbH
|
||||
- * Copyright (C) 2019 Intel Corporation
|
||||
+ * Copyright (C) 2019-2020 Intel Corporation
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
@@ -81,7 +81,8 @@ static void cfg80211_process_auth(struct
|
||||
}
|
||||
|
||||
static void cfg80211_process_deauth(struct wireless_dev *wdev,
|
||||
- const u8 *buf, size_t len)
|
||||
+ const u8 *buf, size_t len,
|
||||
+ bool reconnect)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
|
||||
struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)buf;
|
||||
@@ -89,7 +90,7 @@ static void cfg80211_process_deauth(stru
|
||||
u16 reason_code = le16_to_cpu(mgmt->u.deauth.reason_code);
|
||||
bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr);
|
||||
|
||||
- nl80211_send_deauth(rdev, wdev->netdev, buf, len, GFP_KERNEL);
|
||||
+ nl80211_send_deauth(rdev, wdev->netdev, buf, len, reconnect, GFP_KERNEL);
|
||||
|
||||
if (!wdev->current_bss ||
|
||||
!ether_addr_equal(wdev->current_bss->pub.bssid, bssid))
|
||||
@@ -100,7 +101,8 @@ static void cfg80211_process_deauth(stru
|
||||
}
|
||||
|
||||
static void cfg80211_process_disassoc(struct wireless_dev *wdev,
|
||||
- const u8 *buf, size_t len)
|
||||
+ const u8 *buf, size_t len,
|
||||
+ bool reconnect)
|
||||
{
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
|
||||
struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)buf;
|
||||
@@ -108,7 +110,8 @@ static void cfg80211_process_disassoc(st
|
||||
u16 reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code);
|
||||
bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr);
|
||||
|
||||
- nl80211_send_disassoc(rdev, wdev->netdev, buf, len, GFP_KERNEL);
|
||||
+ nl80211_send_disassoc(rdev, wdev->netdev, buf, len, reconnect,
|
||||
+ GFP_KERNEL);
|
||||
|
||||
if (WARN_ON(!wdev->current_bss ||
|
||||
!ether_addr_equal(wdev->current_bss->pub.bssid, bssid)))
|
||||
@@ -133,9 +136,9 @@ void cfg80211_rx_mlme_mgmt(struct net_de
|
||||
if (ieee80211_is_auth(mgmt->frame_control))
|
||||
cfg80211_process_auth(wdev, buf, len);
|
||||
else if (ieee80211_is_deauth(mgmt->frame_control))
|
||||
- cfg80211_process_deauth(wdev, buf, len);
|
||||
+ cfg80211_process_deauth(wdev, buf, len, false);
|
||||
else if (ieee80211_is_disassoc(mgmt->frame_control))
|
||||
- cfg80211_process_disassoc(wdev, buf, len);
|
||||
+ cfg80211_process_disassoc(wdev, buf, len, false);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_rx_mlme_mgmt);
|
||||
|
||||
@@ -180,22 +183,23 @@ void cfg80211_abandon_assoc(struct net_d
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_abandon_assoc);
|
||||
|
||||
-void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len)
|
||||
+void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len,
|
||||
+ bool reconnect)
|
||||
{
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
struct ieee80211_mgmt *mgmt = (void *)buf;
|
||||
|
||||
ASSERT_WDEV_LOCK(wdev);
|
||||
|
||||
- trace_cfg80211_tx_mlme_mgmt(dev, buf, len);
|
||||
+ trace_cfg80211_tx_mlme_mgmt(dev, buf, len, reconnect);
|
||||
|
||||
if (WARN_ON(len < 2))
|
||||
return;
|
||||
|
||||
if (ieee80211_is_deauth(mgmt->frame_control))
|
||||
- cfg80211_process_deauth(wdev, buf, len);
|
||||
+ cfg80211_process_deauth(wdev, buf, len, reconnect);
|
||||
else
|
||||
- cfg80211_process_disassoc(wdev, buf, len);
|
||||
+ cfg80211_process_disassoc(wdev, buf, len, reconnect);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_tx_mlme_mgmt);
|
||||
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -732,6 +732,7 @@ static const struct nla_policy nl80211_p
|
||||
NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN),
|
||||
[NL80211_ATTR_S1G_CAPABILITY_MASK] =
|
||||
NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN),
|
||||
+ [NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -15899,7 +15900,7 @@ static void nl80211_send_mlme_event(stru
|
||||
const u8 *buf, size_t len,
|
||||
enum nl80211_commands cmd, gfp_t gfp,
|
||||
int uapsd_queues, const u8 *req_ies,
|
||||
- size_t req_ies_len)
|
||||
+ size_t req_ies_len, bool reconnect)
|
||||
{
|
||||
struct sk_buff *msg;
|
||||
void *hdr;
|
||||
@@ -15921,6 +15922,9 @@ static void nl80211_send_mlme_event(stru
|
||||
nla_put(msg, NL80211_ATTR_REQ_IE, req_ies_len, req_ies)))
|
||||
goto nla_put_failure;
|
||||
|
||||
+ if (reconnect && nla_put_flag(msg, NL80211_ATTR_RECONNECT_REQUESTED))
|
||||
+ goto nla_put_failure;
|
||||
+
|
||||
if (uapsd_queues >= 0) {
|
||||
struct nlattr *nla_wmm =
|
||||
nla_nest_start_noflag(msg, NL80211_ATTR_STA_WME);
|
||||
@@ -15949,7 +15953,8 @@ void nl80211_send_rx_auth(struct cfg8021
|
||||
size_t len, gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len,
|
||||
- NL80211_CMD_AUTHENTICATE, gfp, -1, NULL, 0);
|
||||
+ NL80211_CMD_AUTHENTICATE, gfp, -1, NULL, 0,
|
||||
+ false);
|
||||
}
|
||||
|
||||
void nl80211_send_rx_assoc(struct cfg80211_registered_device *rdev,
|
||||
@@ -15959,23 +15964,25 @@ void nl80211_send_rx_assoc(struct cfg802
|
||||
{
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len,
|
||||
NL80211_CMD_ASSOCIATE, gfp, uapsd_queues,
|
||||
- req_ies, req_ies_len);
|
||||
+ req_ies, req_ies_len, false);
|
||||
}
|
||||
|
||||
void nl80211_send_deauth(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *buf,
|
||||
- size_t len, gfp_t gfp)
|
||||
+ size_t len, bool reconnect, gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len,
|
||||
- NL80211_CMD_DEAUTHENTICATE, gfp, -1, NULL, 0);
|
||||
+ NL80211_CMD_DEAUTHENTICATE, gfp, -1, NULL, 0,
|
||||
+ reconnect);
|
||||
}
|
||||
|
||||
void nl80211_send_disassoc(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *buf,
|
||||
- size_t len, gfp_t gfp)
|
||||
+ size_t len, bool reconnect, gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len,
|
||||
- NL80211_CMD_DISASSOCIATE, gfp, -1, NULL, 0);
|
||||
+ NL80211_CMD_DISASSOCIATE, gfp, -1, NULL, 0,
|
||||
+ reconnect);
|
||||
}
|
||||
|
||||
void cfg80211_rx_unprot_mlme_mgmt(struct net_device *dev, const u8 *buf,
|
||||
@@ -16006,7 +16013,7 @@ void cfg80211_rx_unprot_mlme_mgmt(struct
|
||||
|
||||
trace_cfg80211_rx_unprot_mlme_mgmt(dev, buf, len);
|
||||
nl80211_send_mlme_event(rdev, dev, buf, len, cmd, GFP_ATOMIC, -1,
|
||||
- NULL, 0);
|
||||
+ NULL, 0, false);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_rx_unprot_mlme_mgmt);
|
||||
|
||||
--- a/net/wireless/nl80211.h
|
||||
+++ b/net/wireless/nl80211.h
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Portions of this file
|
||||
- * Copyright (C) 2018 Intel Corporation
|
||||
+ * Copyright (C) 2018, 2020 Intel Corporation
|
||||
*/
|
||||
#ifndef __NET_WIRELESS_NL80211_H
|
||||
#define __NET_WIRELESS_NL80211_H
|
||||
@@ -69,10 +69,12 @@ void nl80211_send_rx_assoc(struct cfg802
|
||||
const u8 *req_ies, size_t req_ies_len);
|
||||
void nl80211_send_deauth(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
- const u8 *buf, size_t len, gfp_t gfp);
|
||||
+ const u8 *buf, size_t len,
|
||||
+ bool reconnect, gfp_t gfp);
|
||||
void nl80211_send_disassoc(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
- const u8 *buf, size_t len, gfp_t gfp);
|
||||
+ const u8 *buf, size_t len,
|
||||
+ bool reconnect, gfp_t gfp);
|
||||
void nl80211_send_auth_timeout(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
const u8 *addr, gfp_t gfp);
|
||||
--- a/net/wireless/trace.h
|
||||
+++ b/net/wireless/trace.h
|
||||
@@ -2684,19 +2684,23 @@ DEFINE_EVENT(netdev_frame_event, cfg8021
|
||||
);
|
||||
|
||||
TRACE_EVENT(cfg80211_tx_mlme_mgmt,
|
||||
- TP_PROTO(struct net_device *netdev, const u8 *buf, int len),
|
||||
- TP_ARGS(netdev, buf, len),
|
||||
+ TP_PROTO(struct net_device *netdev, const u8 *buf, int len,
|
||||
+ bool reconnect),
|
||||
+ TP_ARGS(netdev, buf, len, reconnect),
|
||||
TP_STRUCT__entry(
|
||||
NETDEV_ENTRY
|
||||
__dynamic_array(u8, frame, len)
|
||||
+ __field(int, reconnect)
|
||||
),
|
||||
TP_fast_assign(
|
||||
NETDEV_ASSIGN;
|
||||
memcpy(__get_dynamic_array(frame), buf, len);
|
||||
+ __entry->reconnect = reconnect;
|
||||
),
|
||||
- TP_printk(NETDEV_PR_FMT ", ftype:0x%.2x",
|
||||
+ TP_printk(NETDEV_PR_FMT ", ftype:0x%.2x reconnect:%d",
|
||||
NETDEV_PR_ARG,
|
||||
- le16_to_cpup((__le16 *)__get_dynamic_array(frame)))
|
||||
+ le16_to_cpup((__le16 *)__get_dynamic_array(frame)),
|
||||
+ __entry->reconnect)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(netdev_mac_evt,
|
||||
@ -0,0 +1,271 @@
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Sun, 6 Dec 2020 14:54:43 +0200
|
||||
Subject: [PATCH] mac80211: support driver-based disconnect with reconnect hint
|
||||
|
||||
Support the driver indicating that a disconnection needs
|
||||
to be performed, and pass through the reconnect hint in
|
||||
this case.
|
||||
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
||||
Link: https://lore.kernel.org/r/iwlwifi.20201206145305.5c8dab7a22a0.I58459fdf6968b16c90cab9c574f0f04ca22b0c79@changeid
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -5885,6 +5885,17 @@ void ieee80211_beacon_loss(struct ieee80
|
||||
void ieee80211_connection_loss(struct ieee80211_vif *vif);
|
||||
|
||||
/**
|
||||
+ * ieee80211_disconnect - request disconnection
|
||||
+ *
|
||||
+ * @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
+ * @reconnect: immediate reconnect is desired
|
||||
+ *
|
||||
+ * Request disconnection from the current network and, if enabled, send a
|
||||
+ * hint to the higher layers that immediate reconnect is desired.
|
||||
+ */
|
||||
+void ieee80211_disconnect(struct ieee80211_vif *vif, bool reconnect);
|
||||
+
|
||||
+/**
|
||||
* ieee80211_resume_disconnect - disconnect from AP after resume
|
||||
*
|
||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -461,7 +461,9 @@ struct ieee80211_if_managed {
|
||||
unsigned long probe_timeout;
|
||||
int probe_send_count;
|
||||
bool nullfunc_failed;
|
||||
- bool connection_loss;
|
||||
+ u8 connection_loss:1,
|
||||
+ driver_disconnect:1,
|
||||
+ reconnect:1;
|
||||
|
||||
struct cfg80211_bss *associated;
|
||||
struct ieee80211_mgd_auth_data *auth_data;
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -2720,7 +2720,7 @@ EXPORT_SYMBOL(ieee80211_ap_probereq_get)
|
||||
|
||||
static void ieee80211_report_disconnect(struct ieee80211_sub_if_data *sdata,
|
||||
const u8 *buf, size_t len, bool tx,
|
||||
- u16 reason)
|
||||
+ u16 reason, bool reconnect)
|
||||
{
|
||||
struct ieee80211_event event = {
|
||||
.type = MLME_EVENT,
|
||||
@@ -2729,7 +2729,7 @@ static void ieee80211_report_disconnect(
|
||||
};
|
||||
|
||||
if (tx)
|
||||
- cfg80211_tx_mlme_mgmt(sdata->dev, buf, len, false);
|
||||
+ cfg80211_tx_mlme_mgmt(sdata->dev, buf, len, reconnect);
|
||||
else
|
||||
cfg80211_rx_mlme_mgmt(sdata->dev, buf, len);
|
||||
|
||||
@@ -2751,13 +2751,18 @@ static void __ieee80211_disconnect(struc
|
||||
|
||||
tx = !sdata->csa_block_tx;
|
||||
|
||||
- /* AP is probably out of range (or not reachable for another reason) so
|
||||
- * remove the bss struct for that AP.
|
||||
- */
|
||||
- cfg80211_unlink_bss(local->hw.wiphy, ifmgd->associated);
|
||||
+ if (!ifmgd->driver_disconnect) {
|
||||
+ /*
|
||||
+ * AP is probably out of range (or not reachable for another
|
||||
+ * reason) so remove the bss struct for that AP.
|
||||
+ */
|
||||
+ cfg80211_unlink_bss(local->hw.wiphy, ifmgd->associated);
|
||||
+ }
|
||||
|
||||
ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH,
|
||||
- WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY,
|
||||
+ ifmgd->driver_disconnect ?
|
||||
+ WLAN_REASON_DEAUTH_LEAVING :
|
||||
+ WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY,
|
||||
tx, frame_buf);
|
||||
mutex_lock(&local->mtx);
|
||||
sdata->vif.csa_active = false;
|
||||
@@ -2770,7 +2775,9 @@ static void __ieee80211_disconnect(struc
|
||||
mutex_unlock(&local->mtx);
|
||||
|
||||
ieee80211_report_disconnect(sdata, frame_buf, sizeof(frame_buf), tx,
|
||||
- WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY);
|
||||
+ WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY,
|
||||
+ ifmgd->reconnect);
|
||||
+ ifmgd->reconnect = false;
|
||||
|
||||
sdata_unlock(sdata);
|
||||
}
|
||||
@@ -2789,6 +2796,13 @@ static void ieee80211_beacon_connection_
|
||||
sdata_info(sdata, "Connection to AP %pM lost\n",
|
||||
ifmgd->bssid);
|
||||
__ieee80211_disconnect(sdata);
|
||||
+ ifmgd->connection_loss = false;
|
||||
+ } else if (ifmgd->driver_disconnect) {
|
||||
+ sdata_info(sdata,
|
||||
+ "Driver requested disconnection from AP %pM\n",
|
||||
+ ifmgd->bssid);
|
||||
+ __ieee80211_disconnect(sdata);
|
||||
+ ifmgd->driver_disconnect = false;
|
||||
} else {
|
||||
ieee80211_mgd_probe_ap(sdata, true);
|
||||
}
|
||||
@@ -2827,6 +2841,21 @@ void ieee80211_connection_loss(struct ie
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_connection_loss);
|
||||
|
||||
+void ieee80211_disconnect(struct ieee80211_vif *vif, bool reconnect)
|
||||
+{
|
||||
+ struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
|
||||
+ struct ieee80211_hw *hw = &sdata->local->hw;
|
||||
+
|
||||
+ trace_api_disconnect(sdata, reconnect);
|
||||
+
|
||||
+ if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION))
|
||||
+ return;
|
||||
+
|
||||
+ sdata->u.mgd.driver_disconnect = true;
|
||||
+ sdata->u.mgd.reconnect = reconnect;
|
||||
+ ieee80211_queue_work(hw, &sdata->u.mgd.beacon_connection_loss_work);
|
||||
+}
|
||||
+EXPORT_SYMBOL(ieee80211_disconnect);
|
||||
|
||||
static void ieee80211_destroy_auth_data(struct ieee80211_sub_if_data *sdata,
|
||||
bool assoc)
|
||||
@@ -3130,7 +3159,7 @@ static void ieee80211_rx_mgmt_deauth(str
|
||||
ieee80211_set_disassoc(sdata, 0, 0, false, NULL);
|
||||
|
||||
ieee80211_report_disconnect(sdata, (u8 *)mgmt, len, false,
|
||||
- reason_code);
|
||||
+ reason_code, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3179,7 +3208,8 @@ static void ieee80211_rx_mgmt_disassoc(s
|
||||
|
||||
ieee80211_set_disassoc(sdata, 0, 0, false, NULL);
|
||||
|
||||
- ieee80211_report_disconnect(sdata, (u8 *)mgmt, len, false, reason_code);
|
||||
+ ieee80211_report_disconnect(sdata, (u8 *)mgmt, len, false, reason_code,
|
||||
+ false);
|
||||
}
|
||||
|
||||
static void ieee80211_get_rates(struct ieee80211_supported_band *sband,
|
||||
@@ -4199,7 +4229,8 @@ static void ieee80211_rx_mgmt_beacon(str
|
||||
true, deauth_buf);
|
||||
ieee80211_report_disconnect(sdata, deauth_buf,
|
||||
sizeof(deauth_buf), true,
|
||||
- WLAN_REASON_DEAUTH_LEAVING);
|
||||
+ WLAN_REASON_DEAUTH_LEAVING,
|
||||
+ false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4344,7 +4375,7 @@ static void ieee80211_sta_connection_los
|
||||
tx, frame_buf);
|
||||
|
||||
ieee80211_report_disconnect(sdata, frame_buf, sizeof(frame_buf), true,
|
||||
- reason);
|
||||
+ reason, false);
|
||||
}
|
||||
|
||||
static int ieee80211_auth(struct ieee80211_sub_if_data *sdata)
|
||||
@@ -5431,7 +5462,8 @@ int ieee80211_mgd_auth(struct ieee80211_
|
||||
|
||||
ieee80211_report_disconnect(sdata, frame_buf,
|
||||
sizeof(frame_buf), true,
|
||||
- WLAN_REASON_UNSPECIFIED);
|
||||
+ WLAN_REASON_UNSPECIFIED,
|
||||
+ false);
|
||||
}
|
||||
|
||||
sdata_info(sdata, "authenticate with %pM\n", req->bss->bssid);
|
||||
@@ -5503,7 +5535,8 @@ int ieee80211_mgd_assoc(struct ieee80211
|
||||
|
||||
ieee80211_report_disconnect(sdata, frame_buf,
|
||||
sizeof(frame_buf), true,
|
||||
- WLAN_REASON_UNSPECIFIED);
|
||||
+ WLAN_REASON_UNSPECIFIED,
|
||||
+ false);
|
||||
}
|
||||
|
||||
if (ifmgd->auth_data && !ifmgd->auth_data->done) {
|
||||
@@ -5802,7 +5835,7 @@ int ieee80211_mgd_deauth(struct ieee8021
|
||||
ieee80211_destroy_auth_data(sdata, false);
|
||||
ieee80211_report_disconnect(sdata, frame_buf,
|
||||
sizeof(frame_buf), true,
|
||||
- req->reason_code);
|
||||
+ req->reason_code, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -5822,7 +5855,7 @@ int ieee80211_mgd_deauth(struct ieee8021
|
||||
ieee80211_destroy_assoc_data(sdata, false, true);
|
||||
ieee80211_report_disconnect(sdata, frame_buf,
|
||||
sizeof(frame_buf), true,
|
||||
- req->reason_code);
|
||||
+ req->reason_code, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5837,7 +5870,7 @@ int ieee80211_mgd_deauth(struct ieee8021
|
||||
req->reason_code, tx, frame_buf);
|
||||
ieee80211_report_disconnect(sdata, frame_buf,
|
||||
sizeof(frame_buf), true,
|
||||
- req->reason_code);
|
||||
+ req->reason_code, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5870,7 +5903,7 @@ int ieee80211_mgd_disassoc(struct ieee80
|
||||
frame_buf);
|
||||
|
||||
ieee80211_report_disconnect(sdata, frame_buf, sizeof(frame_buf), true,
|
||||
- req->reason_code);
|
||||
+ req->reason_code, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
--- a/net/mac80211/trace.h
|
||||
+++ b/net/mac80211/trace.h
|
||||
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* Portions of this file
|
||||
* Copyright(c) 2016-2017 Intel Deutschland GmbH
|
||||
-* Copyright (C) 2018 - 2019 Intel Corporation
|
||||
+* Copyright (C) 2018 - 2020 Intel Corporation
|
||||
*/
|
||||
|
||||
#if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
|
||||
@@ -2086,6 +2086,27 @@ TRACE_EVENT(api_connection_loss,
|
||||
)
|
||||
);
|
||||
|
||||
+TRACE_EVENT(api_disconnect,
|
||||
+ TP_PROTO(struct ieee80211_sub_if_data *sdata, bool reconnect),
|
||||
+
|
||||
+ TP_ARGS(sdata, reconnect),
|
||||
+
|
||||
+ TP_STRUCT__entry(
|
||||
+ VIF_ENTRY
|
||||
+ __field(int, reconnect)
|
||||
+ ),
|
||||
+
|
||||
+ TP_fast_assign(
|
||||
+ VIF_ASSIGN;
|
||||
+ __entry->reconnect = reconnect;
|
||||
+ ),
|
||||
+
|
||||
+ TP_printk(
|
||||
+ VIF_PR_FMT " reconnect:%d",
|
||||
+ VIF_PR_ARG, __entry->reconnect
|
||||
+ )
|
||||
+);
|
||||
+
|
||||
TRACE_EVENT(api_cqm_rssi_notify,
|
||||
TP_PROTO(struct ieee80211_sub_if_data *sdata,
|
||||
enum nl80211_cqm_rssi_threshold_event rssi_event,
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int fq_init(struct fq *fq, int flows_cnt)
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -855,7 +855,6 @@ enum txq_info_flags {
|
||||
@@ -857,7 +857,6 @@ enum txq_info_flags {
|
||||
*/
|
||||
struct txq_info {
|
||||
struct fq_tin tin;
|
||||
|
||||
@ -536,7 +536,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
};
|
||||
--- a/net/mac80211/trace.h
|
||||
+++ b/net/mac80211/trace.h
|
||||
@@ -2740,7 +2740,7 @@ DEFINE_EVENT(local_sdata_addr_evt, drv_u
|
||||
@@ -2761,7 +2761,7 @@ DEFINE_EVENT(local_sdata_addr_evt, drv_u
|
||||
TP_ARGS(local, sdata)
|
||||
);
|
||||
|
||||
@ -545,7 +545,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
TP_PROTO(struct ieee80211_local *local,
|
||||
struct ieee80211_sub_if_data *sdata,
|
||||
struct ieee80211_sta *sta, bool enabled),
|
||||
@@ -2767,6 +2767,22 @@ TRACE_EVENT(drv_sta_set_4addr,
|
||||
@@ -2788,6 +2788,22 @@ TRACE_EVENT(drv_sta_set_4addr,
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
@ -36,9 +36,9 @@
|
||||
u8 ps_dtim_period;
|
||||
--- a/include/uapi/linux/nl80211.h
|
||||
+++ b/include/uapi/linux/nl80211.h
|
||||
@@ -2527,6 +2527,9 @@ enum nl80211_commands {
|
||||
* override mask. Used with NL80211_ATTR_S1G_CAPABILITY in
|
||||
* NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT.
|
||||
@@ -2531,6 +2531,9 @@ enum nl80211_commands {
|
||||
* disassoc events to indicate that an immediate reconnect to the AP
|
||||
* is desired.
|
||||
*
|
||||
+ * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce
|
||||
+ * transmit power to stay within regulatory limits. u32, dBi.
|
||||
@ -46,9 +46,9 @@
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -3016,6 +3019,8 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_S1G_CAPABILITY,
|
||||
NL80211_ATTR_S1G_CAPABILITY_MASK,
|
||||
@@ -3022,6 +3025,8 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_RECONNECT_REQUESTED,
|
||||
|
||||
+ NL80211_ATTR_WIPHY_ANTENNA_GAIN,
|
||||
+
|
||||
@ -87,7 +87,7 @@
|
||||
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1401,6 +1401,7 @@ struct ieee80211_local {
|
||||
@@ -1403,6 +1403,7 @@ struct ieee80211_local {
|
||||
int dynamic_ps_forced_timeout;
|
||||
|
||||
int user_power_level; /* in dBm, for all interfaces */
|
||||
@ -129,15 +129,15 @@
|
||||
local->hw.max_mtu = IEEE80211_MAX_DATA_LEN;
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -732,6 +732,7 @@ static const struct nla_policy nl80211_p
|
||||
NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN),
|
||||
@@ -733,6 +733,7 @@ static const struct nla_policy nl80211_p
|
||||
[NL80211_ATTR_S1G_CAPABILITY_MASK] =
|
||||
NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN),
|
||||
[NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
|
||||
+ [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 },
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -3240,6 +3241,20 @@ static int nl80211_set_wiphy(struct sk_b
|
||||
@@ -3241,6 +3242,20 @@ static int nl80211_set_wiphy(struct sk_b
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2021-02-14
|
||||
PKG_SOURCE_VERSION:=289cd7804587dc48f776d450db9cd3762692a370
|
||||
PKG_MIRROR_HASH:=91885feca9d935586c6e33a8e3734bfa61991d869bf42ac0d1c8c3b19bfa9653
|
||||
PKG_SOURCE_DATE:=2021-03-15
|
||||
PKG_SOURCE_VERSION:=ca22cc221ae7c87535d6f24b12c0280f6b560b31
|
||||
PKG_MIRROR_HASH:=291f078568a83aa9e930e3d496a8b0e406feb720c472aafc82fefe01c921e04d
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
@ -406,6 +406,14 @@ define KernelPackage/mt7915e/install
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define KernelPackage/mt7921e/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
cp \
|
||||
$(PKG_BUILD_DIR)/firmware/WIFI_MT7961_patch_mcu_1_2_hdr.bin \
|
||||
$(PKG_BUILD_DIR)/firmware/WIFI_RAM_CODE_MT7961_1.bin \
|
||||
$(1)/lib/firmware/mediatek
|
||||
endef
|
||||
|
||||
define Package/mt76-test/install
|
||||
mkdir -p $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/mt76-test $(1)/usr/sbin
|
||||
|
||||
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gettext-full
|
||||
PKG_VERSION:=0.21
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=gettext-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@GNU/gettext
|
||||
|
||||
@ -84,7 +84,7 @@
|
||||
-e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
|
||||
-e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
|
||||
- -e 's,@''HAVE_NAMELESS_LOCALES''@,@HAVE_NAMELESS_LOCALES@,g' \
|
||||
+ -e 's,@''HAVE_NAMELESS_LOCALES''@,1,g' \
|
||||
+ -e 's,@''HAVE_NAMELESS_LOCALES''@,0,g' \
|
||||
-e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \
|
||||
< $(srcdir)/libgnuintl.in.h \
|
||||
| if test '@WOE32DLL@' = yes; then \
|
||||
@ -93,7 +93,7 @@
|
||||
-e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
|
||||
-e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
|
||||
- -e 's,@''HAVE_NAMELESS_LOCALES''@,@HAVE_NAMELESS_LOCALES@,g' \
|
||||
+ -e 's,@''HAVE_NAMELESS_LOCALES''@,1,g' \
|
||||
+ -e 's,@''HAVE_NAMELESS_LOCALES''@,0,g' \
|
||||
-e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \
|
||||
< $(srcdir)/libgnuintl.in.h > libintl.h
|
||||
MOSTLYCLEANFILES += libintl.h
|
||||
@ -278,7 +278,7 @@
|
||||
-e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
|
||||
-e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
|
||||
- -e 's,@''HAVE_NAMELESS_LOCALES''@,@HAVE_NAMELESS_LOCALES@,g' \
|
||||
+ -e 's,@''HAVE_NAMELESS_LOCALES''@,1,g' \
|
||||
+ -e 's,@''HAVE_NAMELESS_LOCALES''@,0,g' \
|
||||
-e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \
|
||||
< $(srcdir)/libgnuintl.in.h \
|
||||
| if test '@WOE32DLL@' = yes; then \
|
||||
@ -287,7 +287,7 @@
|
||||
-e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
|
||||
-e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
|
||||
- -e 's,@''HAVE_NAMELESS_LOCALES''@,@HAVE_NAMELESS_LOCALES@,g' \
|
||||
+ -e 's,@''HAVE_NAMELESS_LOCALES''@,1,g' \
|
||||
+ -e 's,@''HAVE_NAMELESS_LOCALES''@,0,g' \
|
||||
-e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \
|
||||
< $(srcdir)/libgnuintl.in.h > libintl.h
|
||||
MOSTLYCLEANFILES += libintl.h
|
||||
|
||||
@ -1,19 +1,25 @@
|
||||
--- a/nl80211.h
|
||||
+++ b/nl80211.h
|
||||
@@ -2527,6 +2527,9 @@ enum nl80211_commands {
|
||||
@@ -2527,6 +2527,13 @@ enum nl80211_commands {
|
||||
* override mask. Used with NL80211_ATTR_S1G_CAPABILITY in
|
||||
* NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT.
|
||||
*
|
||||
+ * @NL80211_ATTR_RECONNECT_REQUESTED: flag attribute, used with deauth and
|
||||
+ * disassoc events to indicate that an immediate reconnect to the AP
|
||||
+ * is desired.
|
||||
+ *
|
||||
+ * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce
|
||||
+ * transmit power to stay within regulatory limits. u32, dBi.
|
||||
+ *
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -3016,6 +3019,8 @@ enum nl80211_attrs {
|
||||
@@ -3016,6 +3023,10 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_S1G_CAPABILITY,
|
||||
NL80211_ATTR_S1G_CAPABILITY_MASK,
|
||||
|
||||
+ NL80211_ATTR_RECONNECT_REQUESTED,
|
||||
+
|
||||
+ NL80211_ATTR_WIPHY_ANTENNA_GAIN,
|
||||
+
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
@ -12,6 +12,7 @@ obj.gemini = $(obj.wrgg)
|
||||
obj.brcm = trx.o
|
||||
obj.bcm47xx = $(obj.brcm)
|
||||
obj.bcm53xx = $(obj.brcm) $(obj.seama)
|
||||
obj.mediatek = $(obj.brcm)
|
||||
obj.bcm63xx = imagetag.o
|
||||
obj.bmips = imagetag.o
|
||||
obj.ramips = $(obj.seama) $(obj.tpl) $(obj.wrg) linksys_bootcount.o
|
||||
|
||||
@ -94,6 +94,7 @@ int mtdsize = 0;
|
||||
int erasesize = 0;
|
||||
int jffs2_skip_bytes=0;
|
||||
int mtdtype = 0;
|
||||
uint32_t opt_trxmagic = TRX_MAGIC;
|
||||
|
||||
int mtd_open(const char *mtd, bool block)
|
||||
{
|
||||
@ -205,7 +206,7 @@ image_check(int imagefd, const char *mtd)
|
||||
|
||||
magic = ((uint32_t *)buf)[0];
|
||||
|
||||
if (be32_to_cpu(magic) == TRX_MAGIC)
|
||||
if (be32_to_cpu(magic) == opt_trxmagic)
|
||||
imageformat = MTD_IMAGE_FORMAT_TRX;
|
||||
else if (be32_to_cpu(magic) == SEAMA_MAGIC)
|
||||
imageformat = MTD_IMAGE_FORMAT_SEAMA;
|
||||
@ -810,6 +811,7 @@ static void usage(void)
|
||||
" -l <length> the length of data that we want to dump\n");
|
||||
if (mtd_fixtrx) {
|
||||
fprintf(stderr,
|
||||
" -M <magic> magic number of the image header in the partition (for fixtrx)\n"
|
||||
" -o offset offset of the image header in the partition(for fixtrx)\n");
|
||||
}
|
||||
if (mtd_fixtrx || mtd_fixseama || mtd_fixwrg || mtd_fixwrgg) {
|
||||
@ -877,7 +879,7 @@ int main (int argc, char **argv)
|
||||
#ifdef FIS_SUPPORT
|
||||
"F:"
|
||||
#endif
|
||||
"frnqe:d:s:j:p:o:c:t:l:")) != -1)
|
||||
"frnqe:d:s:j:p:o:c:t:l:M:")) != -1)
|
||||
switch (ch) {
|
||||
case 'f':
|
||||
force = 1;
|
||||
@ -929,6 +931,14 @@ int main (int argc, char **argv)
|
||||
usage();
|
||||
}
|
||||
break;
|
||||
case 'M':
|
||||
errno = 0;
|
||||
opt_trxmagic = strtoul(optarg, 0, 0);
|
||||
if (errno) {
|
||||
fprintf(stderr, "-M: illegal numeric string\n");
|
||||
usage();
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
errno = 0;
|
||||
offset = strtoul(optarg, 0, 0);
|
||||
|
||||
@ -12,6 +12,7 @@
|
||||
extern int quiet;
|
||||
extern int mtdsize;
|
||||
extern int erasesize;
|
||||
extern uint32_t opt_trxmagic;
|
||||
|
||||
extern int mtd_open(const char *mtd, bool block);
|
||||
extern int mtd_check_open(const char *mtd);
|
||||
|
||||
@ -35,7 +35,6 @@
|
||||
#include "mtd.h"
|
||||
#include "crc32.h"
|
||||
|
||||
#define TRX_MAGIC 0x30524448 /* "HDR0" */
|
||||
#define TRX_CRC32_DATA_OFFSET 12 /* First 12 bytes are not covered by CRC32 */
|
||||
#define TRX_CRC32_DATA_SIZE 16
|
||||
struct trx_header {
|
||||
@ -92,7 +91,7 @@ trx_fixup(int fd, const char *name)
|
||||
}
|
||||
|
||||
trx = ptr;
|
||||
if (trx->magic != TRX_MAGIC) {
|
||||
if (ntohl(trx->magic) != opt_trxmagic) {
|
||||
fprintf(stderr, "TRX header not found\n");
|
||||
goto err;
|
||||
}
|
||||
@ -127,7 +126,8 @@ trx_check(int imagefd, const char *mtd, char *buf, int *len)
|
||||
}
|
||||
}
|
||||
|
||||
if (trx->magic != TRX_MAGIC || trx->len < sizeof(struct trx_header)) {
|
||||
if (ntohl(trx->magic) != opt_trxmagic ||
|
||||
trx->len < sizeof(struct trx_header)) {
|
||||
if (quiet < 2) {
|
||||
fprintf(stderr, "Bad trx header\n");
|
||||
fprintf(stderr, "This is not the correct file format; refusing to flash.\n"
|
||||
@ -200,7 +200,7 @@ mtd_fixtrx(const char *mtd, size_t offset, size_t data_size)
|
||||
}
|
||||
|
||||
trx = (struct trx_header *)(first_block + offset);
|
||||
if (trx->magic != STORE32_LE(0x30524448)) {
|
||||
if (ntohl(trx->magic) != opt_trxmagic) {
|
||||
fprintf(stderr, "No trx magic found\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -14,9 +14,9 @@ PKG_FLAGS:=essential
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://git.openwrt.org/project/opkg-lede.git
|
||||
PKG_SOURCE_DATE:=2021-03-11
|
||||
PKG_SOURCE_VERSION:=d71856a4f137dc9fb890c5e777790e2c51fde921
|
||||
PKG_MIRROR_HASH:=4da8ef070474dbc3854435838fbec585d1bdf74f7c99a2fb27203798b7f93c19
|
||||
PKG_SOURCE_DATE:=2021-03-15
|
||||
PKG_SOURCE_VERSION:=5936c4f9660248284e8a9b040ea3153d3ea888de
|
||||
PKG_MIRROR_HASH:=b873c209baaf4f150c89646d58e4a0072f807d24b02c320ab8c7ae9180c13240
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@ -13,7 +13,6 @@ version=1.0
|
||||
FIND="$(command -v find)"
|
||||
FIND="${FIND:-$(command -v gfind)}"
|
||||
TAR="${TAR:-$(command -v tar)}"
|
||||
GZIP="$(command -v gzip)"
|
||||
|
||||
# try to use fixed source epoch
|
||||
if [ -n "$PKG_SOURCE_DATE_EPOCH" ]; then
|
||||
@ -31,40 +30,40 @@ ipkg_extract_value() {
|
||||
required_field() {
|
||||
field=$1
|
||||
|
||||
grep "^$field:" < $CONTROL/control | ipkg_extract_value
|
||||
grep "^$field:" < "$CONTROL/control" | ipkg_extract_value
|
||||
}
|
||||
|
||||
pkg_appears_sane() {
|
||||
local pkg_dir=$1
|
||||
local pkg_dir="$1"
|
||||
|
||||
local owd=$PWD
|
||||
cd $pkg_dir
|
||||
local owd="$PWD"
|
||||
cd "$pkg_dir"
|
||||
|
||||
PKG_ERROR=0
|
||||
pkg=`required_field Package`
|
||||
version=`required_field Version | sed 's/Version://; s/^.://g;'`
|
||||
arch=`required_field Architecture`
|
||||
pkg="$(required_field Package)"
|
||||
version="$(required_field Version | sed 's/Version://; s/^.://g;')"
|
||||
arch="$(required_field Architecture)"
|
||||
|
||||
if echo $pkg | grep '[^a-zA-Z0-9_.+-]'; then
|
||||
if echo "$pkg" | grep '[^a-zA-Z0-9_.+-]'; then
|
||||
echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
|
||||
PKG_ERROR=1;
|
||||
fi
|
||||
|
||||
if [ -f $CONTROL/conffiles ]; then
|
||||
rm -f $CONTROL/conffiles.resolved
|
||||
if [ -f "$CONTROL/conffiles" ]; then
|
||||
rm -f "$CONTROL/conffiles.resolved"
|
||||
|
||||
for cf in `$FIND $(sed -e "s!^/!$pkg_dir/!" $CONTROL/conffiles) -type f`; do
|
||||
echo "${cf#$pkg_dir}" >> $CONTROL/conffiles.resolved
|
||||
for cf in $($FIND $(sed -e "s!^/!$pkg_dir/!" "$CONTROL/conffiles") -type f); do
|
||||
echo "${cf#$pkg_dir}" >> "$CONTROL/conffiles.resolved"
|
||||
done
|
||||
|
||||
rm $CONTROL/conffiles
|
||||
if [ -f $CONTROL/conffiles.resolved ]; then
|
||||
mv $CONTROL/conffiles.resolved $CONTROL/conffiles
|
||||
chmod 0644 $CONTROL/conffiles
|
||||
rm "$CONTROL"/conffiles
|
||||
if [ -f "$CONTROL"/conffiles.resolved ]; then
|
||||
mv "$CONTROL"/conffiles.resolved "$CONTROL"/conffiles
|
||||
chmod 0644 "$CONTROL"/conffiles
|
||||
fi
|
||||
fi
|
||||
|
||||
cd $owd
|
||||
cd "$owd"
|
||||
return $PKG_ERROR
|
||||
}
|
||||
|
||||
@ -95,17 +94,17 @@ file_modes=""
|
||||
usage="Usage: $0 [-v] [-h] [-m] <pkg_directory> [<destination_directory>]"
|
||||
while getopts "hvm:" opt; do
|
||||
case $opt in
|
||||
v ) echo $version
|
||||
v ) echo "$version"
|
||||
exit 0
|
||||
;;
|
||||
h ) echo $usage >&2 ;;
|
||||
h ) echo "$usage" >&2 ;;
|
||||
m ) file_modes=$OPTARG ;;
|
||||
\? ) echo $usage >&2
|
||||
\? ) echo "$usage" >&2
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
shift $(($OPTIND - 1))
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
# continue on to process additional arguments
|
||||
|
||||
@ -115,42 +114,42 @@ case $# in
|
||||
;;
|
||||
2)
|
||||
dest_dir=$2
|
||||
if [ "$dest_dir" = "." -o "$dest_dir" = "./" ] ; then
|
||||
if [ "$dest_dir" = "." ] || [ "$dest_dir" = "./" ] ; then
|
||||
dest_dir=$PWD
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo $usage >&2
|
||||
echo "$usage" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
pkg_dir=$1
|
||||
pkg_dir="$(realpath "$1")"
|
||||
|
||||
if [ ! -d $pkg_dir ]; then
|
||||
if [ ! -d "$pkg_dir" ]; then
|
||||
echo "*** Error: Directory $pkg_dir does not exist" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# CONTROL is second so that it takes precedence
|
||||
CONTROL=
|
||||
[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL
|
||||
[ -d "$pkg_dir"/CONTROL ] && CONTROL=CONTROL
|
||||
if [ -z "$CONTROL" ]; then
|
||||
echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! pkg_appears_sane $pkg_dir; then
|
||||
if ! pkg_appears_sane "$pkg_dir"; then
|
||||
echo >&2
|
||||
echo "ipkg-build: Please fix the above errors and try again." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tmp_dir=$dest_dir/IPKG_BUILD.$$
|
||||
mkdir $tmp_dir
|
||||
mkdir "$tmp_dir"
|
||||
|
||||
echo $CONTROL > $tmp_dir/tarX
|
||||
cd $pkg_dir
|
||||
echo $CONTROL > "$tmp_dir"/tarX
|
||||
cd "$pkg_dir"
|
||||
for file_mode in $file_modes; do
|
||||
case $file_mode in
|
||||
/*:*:*:*)
|
||||
@ -179,22 +178,22 @@ for file_mode in $file_modes; do
|
||||
chown "$uid:$gid" "$pkg_dir/$path"
|
||||
chmod "$mode" "$pkg_dir/$path"
|
||||
done
|
||||
$TAR -X $tmp_dir/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/data.tar.gz
|
||||
$TAR -X "$tmp_dir"/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | gzip -n - > "$tmp_dir"/data.tar.gz
|
||||
|
||||
installed_size=`stat -c "%s" $tmp_dir/data.tar.gz`
|
||||
installed_size=$(stat -c "%s" "$tmp_dir"/data.tar.gz)
|
||||
sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \
|
||||
$pkg_dir/$CONTROL/control
|
||||
"$pkg_dir"/$CONTROL/control
|
||||
|
||||
( cd $pkg_dir/$CONTROL && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/control.tar.gz )
|
||||
rm $tmp_dir/tarX
|
||||
( cd "$pkg_dir"/$CONTROL && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | gzip -n - > "$tmp_dir"/control.tar.gz )
|
||||
rm "$tmp_dir"/tarX
|
||||
|
||||
echo "2.0" > $tmp_dir/debian-binary
|
||||
echo "2.0" > "$tmp_dir"/debian-binary
|
||||
|
||||
pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk
|
||||
rm -f $pkg_file
|
||||
( cd $tmp_dir && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | $GZIP -n - > $pkg_file )
|
||||
rm -f "$pkg_file"
|
||||
( cd "$tmp_dir" && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | gzip -n - > "$pkg_file" )
|
||||
|
||||
rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz
|
||||
rmdir $tmp_dir
|
||||
rm "$tmp_dir"/debian-binary "$tmp_dir"/data.tar.gz "$tmp_dir"/control.tar.gz
|
||||
rmdir "$tmp_dir"
|
||||
|
||||
echo "Packaged contents of $pkg_dir into $pkg_file"
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
From 961c38974fa5b34d6232d7485120e4392d279ab4 Mon Sep 17 00:00:00 2001
|
||||
From 527a3ac9bdf81da4b7160ce3cea57f28a0e5eb64 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Wed, 13 Jan 2021 12:14:06 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe internal switch
|
||||
@ -58,22 +58,22 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
+
|
||||
+&mdio {
|
||||
+ /* lan8 */
|
||||
+ phy@0 {
|
||||
+ ethernet-phy@0 {
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+
|
||||
+ /* lan7 */
|
||||
+ phy@1 {
|
||||
+ ethernet-phy@1 {
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+
|
||||
+ /* lan4 */
|
||||
+ phy@2 {
|
||||
+ ethernet-phy@2 {
|
||||
+ reg = <2>;
|
||||
+ };
|
||||
+
|
||||
+ /* lan3 */
|
||||
+ phy@3 {
|
||||
+ ethernet-phy@3 {
|
||||
+ reg = <3>;
|
||||
+ };
|
||||
+};
|
||||
@ -97,13 +97,13 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
status = "disabled";
|
||||
};
|
||||
+
|
||||
+ switch@80000 {
|
||||
+ ethernet-switch@80000 {
|
||||
+ compatible = "simple-bus";
|
||||
+ #size-cells = <1>;
|
||||
+ #address-cells = <1>;
|
||||
+ ranges = <0 0x80000 0x50000>;
|
||||
+
|
||||
+ switch@0 {
|
||||
+ ethernet-switch@0 {
|
||||
+ compatible = "brcm,bcm4908-switch";
|
||||
+ reg = <0x0 0x40000>,
|
||||
+ <0x40000 0x110>,
|
||||
@ -155,26 +155,26 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
+ compatible = "brcm,unimac-mdio";
|
||||
+ reg = <0x405c0 0x8>;
|
||||
+ reg-names = "mdio";
|
||||
+ #size-cells = <1>;
|
||||
+ #address-cells = <0>;
|
||||
+ #size-cells = <0>;
|
||||
+ #address-cells = <1>;
|
||||
+
|
||||
+ phy8: phy@8 {
|
||||
+ phy8: ethernet-phy@8 {
|
||||
+ reg = <8>;
|
||||
+ };
|
||||
+
|
||||
+ phy9: phy@9 {
|
||||
+ phy9: ethernet-phy@9 {
|
||||
+ reg = <9>;
|
||||
+ };
|
||||
+
|
||||
+ phy10: phy@a {
|
||||
+ phy10: ethernet-phy@a {
|
||||
+ reg = <10>;
|
||||
+ };
|
||||
+
|
||||
+ phy11: phy@b {
|
||||
+ phy11: ethernet-phy@b {
|
||||
+ reg = <11>;
|
||||
+ };
|
||||
+
|
||||
+ phy12: phy@c {
|
||||
+ phy12: ethernet-phy@c {
|
||||
+ reg = <12>;
|
||||
+ };
|
||||
+ };
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
From 3c321ba794ca6383a4aa68ea803e18cc6ad44412 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Mon, 15 Feb 2021 19:46:54 +0100
|
||||
Date: Fri, 19 Feb 2021 06:50:26 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe USB PHY
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
@ -9,6 +10,7 @@ BCM4908 uses slightly modified STB family USB PHY. It handles OHCI/EHCI
|
||||
and XHCI. It requires powering up using the PMB.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
.../bcm4908/bcm4906-netgear-r8000p.dts | 17 +++++++++++++
|
||||
.../bcm4908/bcm4908-asus-gt-ac5300.dts | 17 +++++++++++++
|
||||
@ -86,7 +88,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+ usb_phy: usb-phy@c200 {
|
||||
+ compatible = "brcm,bcm4908-usb-phy";
|
||||
+ reg = <0xc200 0x100>;
|
||||
+ reg-names = "crtl";
|
||||
+ reg-names = "ctrl";
|
||||
+ power-domains = <&pmb BCM_PMB_HOST_USB>;
|
||||
+ dr_mode = "host";
|
||||
+ brcm,has-xhci;
|
||||
@ -1,5 +1,6 @@
|
||||
From b1bbe48eec190b6a35f400c5a3ec6b0fc8fc3fe6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Mon, 15 Feb 2021 19:51:26 +0100
|
||||
Date: Fri, 19 Feb 2021 06:50:27 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe Ethernet controller
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
@ -8,9 +9,10 @@ Content-Transfer-Encoding: 8bit
|
||||
BCM4908 SoCs have an integrated Ethernet controller.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
.../boot/dts/broadcom/bcm4908/bcm4908.dtsi | 20 +++++++++++++++++++
|
||||
1 file changed, 20 insertions(+)
|
||||
.../boot/dts/broadcom/bcm4908/bcm4908.dtsi | 19 +++++++++++++++++++
|
||||
1 file changed, 19 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
|
||||
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
|
||||
@ -29,7 +31,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
usb_phy: usb-phy@c200 {
|
||||
compatible = "brcm,bcm4908-usb-phy";
|
||||
reg = <0xc200 0x100>;
|
||||
@@ -199,6 +207,18 @@
|
||||
@@ -199,6 +207,17 @@
|
||||
phy-mode = "internal";
|
||||
phy-handle = <&phy11>;
|
||||
};
|
||||
@ -38,7 +40,6 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+ reg = <8>;
|
||||
+ phy-mode = "internal";
|
||||
+ ethernet = <&enet>;
|
||||
+ brcm,use-bcm-hdr;
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
@ -1,5 +1,6 @@
|
||||
From 406e98afffe975982f63ea5d21bf9a47a81b56ee Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Mon, 15 Feb 2021 19:52:58 +0100
|
||||
Date: Fri, 19 Feb 2021 06:50:28 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe Netgear R8000P switch
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
@ -8,6 +9,7 @@ Content-Transfer-Encoding: 8bit
|
||||
R8000P model has 4 LAN ports and 1 WAN port.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
.../bcm4908/bcm4906-netgear-r8000p.dts | 25 +++++++++++++++++++
|
||||
1 file changed, 25 insertions(+)
|
||||
@ -1,5 +1,6 @@
|
||||
From 6224415c0389ba6661825746312163a64ece8f3a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Mon, 15 Feb 2021 20:05:41 +0100
|
||||
Date: Fri, 19 Feb 2021 06:50:29 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: add remaining Netgear R8000P
|
||||
LEDs
|
||||
MIME-Version: 1.0
|
||||
@ -10,9 +11,10 @@ There are a few more GPIO connected LEDs there didn't get described
|
||||
initially.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
.../bcm4908/bcm4906-netgear-r8000p.dts | 48 +++++++++++++++++++
|
||||
1 file changed, 48 insertions(+)
|
||||
.../bcm4908/bcm4906-netgear-r8000p.dts | 50 ++++++++++++++++++-
|
||||
1 file changed, 49 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
|
||||
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
|
||||
@ -20,55 +22,56 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
+ power-white {
|
||||
- wps {
|
||||
+ led-power-white {
|
||||
+ function = LED_FUNCTION_POWER;
|
||||
+ color = <LED_COLOR_ID_WHITE>;
|
||||
+ gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ power-amber {
|
||||
+ led-power-amber {
|
||||
+ function = LED_FUNCTION_POWER;
|
||||
+ color = <LED_COLOR_ID_AMBER>;
|
||||
+ gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
wps {
|
||||
+ led-wps {
|
||||
function = LED_FUNCTION_WPS;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
+
|
||||
+ 2ghz {
|
||||
+ led-2ghz {
|
||||
+ function = "2ghz";
|
||||
+ color = <LED_COLOR_ID_WHITE>;
|
||||
+ gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ 5ghz-1 {
|
||||
+ led-5ghz-1 {
|
||||
+ function = "5ghz-1";
|
||||
+ color = <LED_COLOR_ID_WHITE>;
|
||||
+ gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ 5ghz-2 {
|
||||
+ led-5ghz-2 {
|
||||
+ function = "5ghz-2";
|
||||
+ color = <LED_COLOR_ID_WHITE>;
|
||||
+ gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ usb2 {
|
||||
+ led-usb2 {
|
||||
+ function = "usb2";
|
||||
+ color = <LED_COLOR_ID_WHITE>;
|
||||
+ gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ usb3 {
|
||||
+ led-usb3 {
|
||||
+ function = "usb3";
|
||||
+ color = <LED_COLOR_ID_WHITE>;
|
||||
+ gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ wifi {
|
||||
+ led-wifi {
|
||||
+ function = "wifi";
|
||||
+ color = <LED_COLOR_ID_WHITE>;
|
||||
+ gpios = <&gpio0 56 GPIO_ACTIVE_LOW>;
|
||||
@ -1,5 +1,6 @@
|
||||
From cbaca2c467dc25a163107e14a53b7925214eab17 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Mon, 15 Feb 2021 20:30:09 +0100
|
||||
Date: Fri, 19 Feb 2021 06:50:30 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: describe firmware partitions
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
@ -9,6 +10,7 @@ BCM4908 bootloader supports multiple firmware partitions and has its own
|
||||
bindings defined for them.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
.../dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts | 1 +
|
||||
.../dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts | 12 +++++++++++-
|
||||
@ -0,0 +1,30 @@
|
||||
From a348ff97ffb840b9d74b0e64b3e0e6002187d224 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Tue, 9 Mar 2021 19:44:09 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: fix switch parent node name
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Ethernet switch and MDIO are grouped using "simple-bus". It's not
|
||||
allowed to use "ethernet-switch" node name as it isn't a switch. Replace
|
||||
it with "bus".
|
||||
|
||||
Fixes: 527a3ac9bdf8 ("arm64: dts: broadcom: bcm4908: describe internal switch")
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
|
||||
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
|
||||
@@ -156,7 +156,7 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
- ethernet-switch@80000 {
|
||||
+ bus@80000 {
|
||||
compatible = "simple-bus";
|
||||
#size-cells = <1>;
|
||||
#address-cells = <1>;
|
||||
@ -1,10 +1,16 @@
|
||||
From b3de2a12d1a61d90a4d86c9840acc7d05066137f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 5 Mar 2021 13:34:03 +0100
|
||||
Date: Wed, 10 Mar 2021 08:46:02 +0100
|
||||
Subject: [PATCH] dt-bindings: arm: bcm: document TP-Link Archer C2300 binding
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
One more BCM4906 based device.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
Documentation/devicetree/bindings/arm/bcm/brcm,bcm4908.yaml | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
@ -1,12 +1,17 @@
|
||||
From 6a30934a5470a0ce7ea32b0c6b600accfae94b1a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 5 Mar 2021 13:36:25 +0100
|
||||
Date: Wed, 10 Mar 2021 08:46:03 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: add TP-Link Archer C2300 V1
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Archer C2300 V1 is a home router based on the BCM4906 (2 CPU cores). It
|
||||
has 512 MiB of RAM, NAND flash, USB 2.0 and USB 3.0 ports, 4 LAN ports,
|
||||
1 WAN port.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/broadcom/bcm4908/Makefile | 1 +
|
||||
.../bcm4906-tplink-archer-c2300-v1.dts | 182 ++++++++++++++++++
|
||||
@ -43,61 +48,61 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ power-white {
|
||||
+ led-power {
|
||||
+ function = LED_FUNCTION_POWER;
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ 2ghz {
|
||||
+ led-2ghz {
|
||||
+ function = "2ghz";
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ 5ghz {
|
||||
+ led-5ghz {
|
||||
+ function = "5ghz";
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ wan-amber {
|
||||
+ led-wan-amber {
|
||||
+ function = LED_FUNCTION_WAN;
|
||||
+ color = <LED_COLOR_ID_AMBER>;
|
||||
+ gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ wan-blue {
|
||||
+ led-wan-blue {
|
||||
+ function = LED_FUNCTION_WAN;
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ lan {
|
||||
+ led-lan {
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ wps {
|
||||
+ led-wps {
|
||||
+ function = LED_FUNCTION_WPS;
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ usb-high-white {
|
||||
+ function = "usbup";
|
||||
+ led-usb2 {
|
||||
+ function = "usb2";
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ usb-low-white {
|
||||
+ function = "usbdown";
|
||||
+ led-usb3 {
|
||||
+ function = "usbd3";
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ brightness {
|
||||
+ led-brightness {
|
||||
+ function = LED_FUNCTION_BACKLIGHT;
|
||||
+ color = <LED_COLOR_ID_WHITE>;
|
||||
+ gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
|
||||
@ -0,0 +1,28 @@
|
||||
From 5ccb9f9cf05bbd729430c6d6d30d40c96a15c56a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 12 Mar 2021 12:01:20 +0100
|
||||
Subject: [PATCH] arm64: dts: broadcom: bcm4908: set Asus GT-AC5300 port 7 PHY
|
||||
mode
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Port 7 is connected to the external BCM53134S switch using RGMII.
|
||||
|
||||
Fixes: 527a3ac9bdf8 ("arm64: dts: broadcom: bcm4908: describe internal switch")
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
|
||||
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
|
||||
@@ -82,6 +82,7 @@
|
||||
port@7 {
|
||||
label = "sw";
|
||||
reg = <7>;
|
||||
+ phy-mode = "rgmii";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
@ -1,14 +1,23 @@
|
||||
From 73f63c66bf80bebd46d38a2660078dbe3fe11170 Mon Sep 17 00:00:00 2001
|
||||
From 261ab1fd5c5d2d7ff7d5bab3f5db3c69c4bcea58 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Thu, 14 Jan 2021 12:02:28 +0100
|
||||
Date: Fri, 5 Mar 2021 16:24:06 +0100
|
||||
Subject: [PATCH] phy: phy-brcm-usb: select SOC_BRCMSTB on brcmstb only
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
BCM4908 doesn't need brcmstb SoC stuff compiled.
|
||||
phy-brcm-usb has some conditional init code required on selected brcmstb
|
||||
devices. Execution of that code depends on family / product detected by
|
||||
brcmstb soc code.
|
||||
|
||||
For ARCH_BCM4908 brcmstb soc code always return 0 values as ids. Don't
|
||||
bother selecting & compiling that redundant driver.
|
||||
|
||||
Depends-on: 149ae80b1d50 ("soc: bcm: brcmstb: add stubs for getting platform IDs")
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20210305152406.2588-1-zajec5@gmail.com
|
||||
Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
---
|
||||
drivers/phy/broadcom/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
@ -0,0 +1,31 @@
|
||||
From d9de0cbd5b1f6b51c92a40937945f26a35d848ff Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Tue, 9 Mar 2021 19:26:16 +0100
|
||||
Subject: [PATCH] dt-bindings: phy: brcm,brcmstb-usb-phy: add power-domains
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
On BCM4908 USB PHY is managed using power controller so it needs
|
||||
describing properly using the power-domains.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20210309182616.25783-1-zajec5@gmail.com
|
||||
Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
---
|
||||
.../devicetree/bindings/phy/brcm,brcmstb-usb-phy.yaml | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/Documentation/devicetree/bindings/phy/brcm,brcmstb-usb-phy.yaml
|
||||
+++ b/Documentation/devicetree/bindings/phy/brcm,brcmstb-usb-phy.yaml
|
||||
@@ -42,6 +42,9 @@ properties:
|
||||
- const: usb_mdio
|
||||
- const: bdc_ec
|
||||
|
||||
+ power-domains:
|
||||
+ maxItems: 1
|
||||
+
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
|
||||
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
|
||||
@@ -281,7 +281,7 @@
|
||||
@@ -280,7 +280,7 @@
|
||||
gpio0: gpio-controller@500 {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg-names = "dirout", "dat";
|
||||
|
||||
@ -0,0 +1,109 @@
|
||||
From 7e2dc41c745f6d9c571919d98abed2d783fce8fb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Sun, 14 Mar 2021 22:43:32 +0100
|
||||
Subject: [PATCH] net: dsa: bcm_sf2: quick fix for RGMII reg access on BCM4908
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
BCM4908 has only 1 RGMII register and it's used for port 7.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
---
|
||||
drivers/net/dsa/bcm_sf2.c | 30 +++++++++++++++++++++++-------
|
||||
drivers/net/dsa/bcm_sf2_regs.h | 1 +
|
||||
2 files changed, 24 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/bcm_sf2.c
|
||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||
@@ -543,10 +543,19 @@ static void bcm_sf2_sw_mac_config(struct
|
||||
struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
|
||||
u32 id_mode_dis = 0, port_mode;
|
||||
u32 reg, offset;
|
||||
+ u32 rgmii_ctrl;
|
||||
|
||||
if (port == core_readl(priv, CORE_IMP0_PRT_ID))
|
||||
return;
|
||||
|
||||
+ if (priv->type == BCM4908_DEVICE_ID) {
|
||||
+ if (port != 7)
|
||||
+ return;
|
||||
+ rgmii_ctrl = REG_RGMII_11_CNTRL;
|
||||
+ } else {
|
||||
+ rgmii_ctrl = REG_RGMII_CNTRL_P(port);
|
||||
+ }
|
||||
+
|
||||
if (priv->type == BCM4908_DEVICE_ID ||
|
||||
priv->type == BCM7445_DEVICE_ID)
|
||||
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
||||
@@ -574,7 +583,7 @@ static void bcm_sf2_sw_mac_config(struct
|
||||
/* Clear id_mode_dis bit, and the existing port mode, let
|
||||
* RGMII_MODE_EN bet set by mac_link_{up,down}
|
||||
*/
|
||||
- reg = reg_readl(priv, REG_RGMII_CNTRL_P(port));
|
||||
+ reg = reg_readl(priv, rgmii_ctrl);
|
||||
reg &= ~ID_MODE_DIS;
|
||||
reg &= ~(PORT_MODE_MASK << PORT_MODE_SHIFT);
|
||||
reg &= ~(RX_PAUSE_EN | TX_PAUSE_EN);
|
||||
@@ -589,7 +598,7 @@ static void bcm_sf2_sw_mac_config(struct
|
||||
reg |= RX_PAUSE_EN;
|
||||
}
|
||||
|
||||
- reg_writel(priv, reg, REG_RGMII_CNTRL_P(port));
|
||||
+ reg_writel(priv, reg, rgmii_ctrl);
|
||||
|
||||
force_link:
|
||||
/* Force link settings detected from the PHY */
|
||||
@@ -615,6 +624,7 @@ static void bcm_sf2_sw_mac_link_set(stru
|
||||
phy_interface_t interface, bool link)
|
||||
{
|
||||
struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
|
||||
+ u32 rgmii_ctrl;
|
||||
u32 reg;
|
||||
|
||||
if (!phy_interface_mode_is_rgmii(interface) &&
|
||||
@@ -622,13 +632,21 @@ static void bcm_sf2_sw_mac_link_set(stru
|
||||
interface != PHY_INTERFACE_MODE_REVMII)
|
||||
return;
|
||||
|
||||
+ if (priv->type == BCM4908_DEVICE_ID) {
|
||||
+ if (port != 7)
|
||||
+ return;
|
||||
+ rgmii_ctrl = REG_RGMII_11_CNTRL;
|
||||
+ } else {
|
||||
+ rgmii_ctrl = REG_RGMII_CNTRL_P(port);
|
||||
+ }
|
||||
+
|
||||
/* If the link is down, just disable the interface to conserve power */
|
||||
- reg = reg_readl(priv, REG_RGMII_CNTRL_P(port));
|
||||
+ reg = reg_readl(priv, rgmii_ctrl);
|
||||
if (link)
|
||||
reg |= RGMII_MODE_EN;
|
||||
else
|
||||
reg &= ~RGMII_MODE_EN;
|
||||
- reg_writel(priv, reg, REG_RGMII_CNTRL_P(port));
|
||||
+ reg_writel(priv, reg, rgmii_ctrl);
|
||||
}
|
||||
|
||||
static void bcm_sf2_sw_mac_link_down(struct dsa_switch *ds, int port,
|
||||
@@ -999,9 +1017,7 @@ static const u16 bcm_sf2_4908_reg_offset
|
||||
[REG_PHY_REVISION] = 0x14,
|
||||
[REG_SPHY_CNTRL] = 0x24,
|
||||
[REG_CROSSBAR] = 0xc8,
|
||||
- [REG_RGMII_0_CNTRL] = 0xe0,
|
||||
- [REG_RGMII_1_CNTRL] = 0xec,
|
||||
- [REG_RGMII_2_CNTRL] = 0xf8,
|
||||
+ [REG_RGMII_11_CNTRL] = 0x014c,
|
||||
[REG_LED_0_CNTRL] = 0x40,
|
||||
[REG_LED_1_CNTRL] = 0x4c,
|
||||
[REG_LED_2_CNTRL] = 0x58,
|
||||
--- a/drivers/net/dsa/bcm_sf2_regs.h
|
||||
+++ b/drivers/net/dsa/bcm_sf2_regs.h
|
||||
@@ -21,6 +21,7 @@ enum bcm_sf2_reg_offs {
|
||||
REG_RGMII_0_CNTRL,
|
||||
REG_RGMII_1_CNTRL,
|
||||
REG_RGMII_2_CNTRL,
|
||||
+ REG_RGMII_11_CNTRL,
|
||||
REG_LED_0_CNTRL,
|
||||
REG_LED_1_CNTRL,
|
||||
REG_LED_2_CNTRL,
|
||||
@ -0,0 +1,339 @@
|
||||
From d0b16b9596468c29742049e26a866f559ec476bb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Tue, 9 Mar 2021 13:55:00 +0100
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: fix "reg" formatting in /memory node
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This fixes warnings/errors like:
|
||||
arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dt.yaml: /: memory@0:reg:0: [0, 134217728, 2281701376, 402653184] is too long
|
||||
From schema: /lib/python3.6/site-packages/dtschema/schemas/reg.yaml
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4708-netgear-r6250.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4709-linksys-ea9200.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4709-netgear-r7000.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm4709-netgear-r8000.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-linksys-panamera.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-netgear-r8500.dts | 4 ++--
|
||||
arch/arm/boot/dts/bcm47094-phicomm-k3.dts | 4 ++--
|
||||
23 files changed, 46 insertions(+), 46 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x18000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
spi {
|
||||
--- a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
|
||||
@@ -22,8 +22,8 @@
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
spi {
|
||||
--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
spi {
|
||||
--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x18000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
--- a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
@@ -32,8 +32,8 @@
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
nand: nand@18028000 {
|
||||
--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x18000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x18000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x18000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x08000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x18000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x18000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
--- a/arch/arm/boot/dts/bcm47094-phicomm-k3.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-phicomm-k3.dts
|
||||
@@ -15,8 +15,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
- reg = <0x00000000 0x08000000
|
||||
- 0x88000000 0x18000000>;
|
||||
+ reg = <0x00000000 0x08000000>,
|
||||
+ <0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
@ -0,0 +1,136 @@
|
||||
From 428ac8df021dd1cbcc693eb76636873d42327e5d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Wed, 10 Mar 2021 22:04:46 +0100
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Describe NVMEM NVRAM on Linksys & Luxul
|
||||
routers
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Provide access to NVRAM which contains device environment variables.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
---
|
||||
arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts | 5 +++++
|
||||
arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts | 5 +++++
|
||||
arch/arm/boot/dts/bcm4709-linksys-ea9200.dts | 5 +++++
|
||||
arch/arm/boot/dts/bcm47094-linksys-panamera.dts | 5 +++++
|
||||
arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts | 5 +++++
|
||||
arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts | 5 +++++
|
||||
arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts | 5 +++++
|
||||
arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts | 5 +++++
|
||||
8 files changed, 40 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
|
||||
@@ -21,6 +21,11 @@
|
||||
reg = <0x00000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1c080000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1c080000 0x180000>;
|
||||
+ };
|
||||
+
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
|
||||
@@ -21,6 +21,11 @@
|
||||
reg = <0x00000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1eff0000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1eff0000 0x10000>;
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
@@ -22,6 +22,11 @@
|
||||
<0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1c080000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1c080000 0x180000>;
|
||||
+ };
|
||||
+
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
|
||||
@@ -22,6 +22,11 @@
|
||||
<0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1c080000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1c080000 0x100000>;
|
||||
+ };
|
||||
+
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
|
||||
@@ -22,6 +22,11 @@
|
||||
<0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
+ nvram@1eff0000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1eff0000 0x10000>;
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
|
||||
@@ -22,6 +22,11 @@
|
||||
<0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
+ nvram@1eff0000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1eff0000 0x10000>;
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
|
||||
@@ -22,6 +22,11 @@
|
||||
<0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1eff0000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1eff0000 0x10000>;
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
|
||||
@@ -22,6 +22,11 @@
|
||||
<0x88000000 0x18000000>;
|
||||
};
|
||||
|
||||
+ nvram@1eff0000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1eff0000 0x10000>;
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x08000000
|
||||
reg = <0x00000000 0x08000000>,
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
@ -0,0 +1,88 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Mon, 8 Feb 2021 11:34:08 -0800
|
||||
Subject: [PATCH] net: extract napi poll functionality to __napi_poll()
|
||||
|
||||
This commit introduces a new function __napi_poll() which does the main
|
||||
logic of the existing napi_poll() function, and will be called by other
|
||||
functions in later commits.
|
||||
This idea and implementation is done by Felix Fietkau <nbd@nbd.name> and
|
||||
is proposed as part of the patch to move napi work to work_queue
|
||||
context.
|
||||
This commit by itself is a code restructure.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
Signed-off-by: Wei Wang <weiwan@google.com>
|
||||
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -6740,15 +6740,10 @@ void __netif_napi_del(struct napi_struct
|
||||
}
|
||||
EXPORT_SYMBOL(__netif_napi_del);
|
||||
|
||||
-static int napi_poll(struct napi_struct *n, struct list_head *repoll)
|
||||
+static int __napi_poll(struct napi_struct *n, bool *repoll)
|
||||
{
|
||||
- void *have;
|
||||
int work, weight;
|
||||
|
||||
- list_del_init(&n->poll_list);
|
||||
-
|
||||
- have = netpoll_poll_lock(n);
|
||||
-
|
||||
weight = n->weight;
|
||||
|
||||
/* This NAPI_STATE_SCHED test is for avoiding a race
|
||||
@@ -6768,7 +6763,7 @@ static int napi_poll(struct napi_struct
|
||||
n->poll, work, weight);
|
||||
|
||||
if (likely(work < weight))
|
||||
- goto out_unlock;
|
||||
+ return work;
|
||||
|
||||
/* Drivers must not modify the NAPI state if they
|
||||
* consume the entire weight. In such cases this code
|
||||
@@ -6777,7 +6772,7 @@ static int napi_poll(struct napi_struct
|
||||
*/
|
||||
if (unlikely(napi_disable_pending(n))) {
|
||||
napi_complete(n);
|
||||
- goto out_unlock;
|
||||
+ return work;
|
||||
}
|
||||
|
||||
if (n->gro_bitmask) {
|
||||
@@ -6795,12 +6790,29 @@ static int napi_poll(struct napi_struct
|
||||
if (unlikely(!list_empty(&n->poll_list))) {
|
||||
pr_warn_once("%s: Budget exhausted after napi rescheduled\n",
|
||||
n->dev ? n->dev->name : "backlog");
|
||||
- goto out_unlock;
|
||||
+ return work;
|
||||
}
|
||||
|
||||
- list_add_tail(&n->poll_list, repoll);
|
||||
+ *repoll = true;
|
||||
+
|
||||
+ return work;
|
||||
+}
|
||||
+
|
||||
+static int napi_poll(struct napi_struct *n, struct list_head *repoll)
|
||||
+{
|
||||
+ bool do_repoll = false;
|
||||
+ void *have;
|
||||
+ int work;
|
||||
+
|
||||
+ list_del_init(&n->poll_list);
|
||||
+
|
||||
+ have = netpoll_poll_lock(n);
|
||||
+
|
||||
+ work = __napi_poll(n, &do_repoll);
|
||||
+
|
||||
+ if (do_repoll)
|
||||
+ list_add_tail(&n->poll_list, repoll);
|
||||
|
||||
-out_unlock:
|
||||
netpoll_poll_unlock(have);
|
||||
|
||||
return work;
|
||||
@ -0,0 +1,261 @@
|
||||
From: Wei Wang <weiwan@google.com>
|
||||
Date: Mon, 8 Feb 2021 11:34:09 -0800
|
||||
Subject: [PATCH] net: implement threaded-able napi poll loop support
|
||||
|
||||
This patch allows running each napi poll loop inside its own
|
||||
kernel thread.
|
||||
The kthread is created during netif_napi_add() if dev->threaded
|
||||
is set. And threaded mode is enabled in napi_enable(). We will
|
||||
provide a way to set dev->threaded and enable threaded mode
|
||||
without a device up/down in the following patch.
|
||||
|
||||
Once that threaded mode is enabled and the kthread is
|
||||
started, napi_schedule() will wake-up such thread instead
|
||||
of scheduling the softirq.
|
||||
|
||||
The threaded poll loop behaves quite likely the net_rx_action,
|
||||
but it does not have to manipulate local irqs and uses
|
||||
an explicit scheduling point based on netdev_budget.
|
||||
|
||||
Co-developed-by: Paolo Abeni <pabeni@redhat.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
Co-developed-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Co-developed-by: Jakub Kicinski <kuba@kernel.org>
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
Signed-off-by: Wei Wang <weiwan@google.com>
|
||||
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -347,6 +347,7 @@ struct napi_struct {
|
||||
struct list_head dev_list;
|
||||
struct hlist_node napi_hash_node;
|
||||
unsigned int napi_id;
|
||||
+ struct task_struct *thread;
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -357,6 +358,7 @@ enum {
|
||||
NAPI_STATE_LISTED, /* NAPI added to system lists */
|
||||
NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
|
||||
NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
|
||||
+ NAPI_STATE_THREADED, /* The poll is performed inside its own thread*/
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -367,6 +369,7 @@ enum {
|
||||
NAPIF_STATE_LISTED = BIT(NAPI_STATE_LISTED),
|
||||
NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
|
||||
NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
|
||||
+ NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED),
|
||||
};
|
||||
|
||||
enum gro_result {
|
||||
@@ -497,20 +500,7 @@ static inline bool napi_complete(struct
|
||||
*/
|
||||
void napi_disable(struct napi_struct *n);
|
||||
|
||||
-/**
|
||||
- * napi_enable - enable NAPI scheduling
|
||||
- * @n: NAPI context
|
||||
- *
|
||||
- * Resume NAPI from being scheduled on this context.
|
||||
- * Must be paired with napi_disable.
|
||||
- */
|
||||
-static inline void napi_enable(struct napi_struct *n)
|
||||
-{
|
||||
- BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
|
||||
- smp_mb__before_atomic();
|
||||
- clear_bit(NAPI_STATE_SCHED, &n->state);
|
||||
- clear_bit(NAPI_STATE_NPSVC, &n->state);
|
||||
-}
|
||||
+void napi_enable(struct napi_struct *n);
|
||||
|
||||
/**
|
||||
* napi_synchronize - wait until NAPI is not running
|
||||
@@ -1835,6 +1825,8 @@ enum netdev_priv_flags {
|
||||
*
|
||||
* @wol_enabled: Wake-on-LAN is enabled
|
||||
*
|
||||
+ * @threaded: napi threaded mode is enabled
|
||||
+ *
|
||||
* @net_notifier_list: List of per-net netdev notifier block
|
||||
* that follow this device when it is moved
|
||||
* to another network namespace.
|
||||
@@ -2152,6 +2144,7 @@ struct net_device {
|
||||
struct lock_class_key *qdisc_running_key;
|
||||
bool proto_down;
|
||||
unsigned wol_enabled:1;
|
||||
+ unsigned threaded:1;
|
||||
|
||||
struct list_head net_notifier_list;
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -91,6 +91,7 @@
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/skbuff.h>
|
||||
+#include <linux/kthread.h>
|
||||
#include <linux/bpf.h>
|
||||
#include <linux/bpf_trace.h>
|
||||
#include <net/net_namespace.h>
|
||||
@@ -1488,6 +1489,27 @@ void netdev_notify_peers(struct net_devi
|
||||
}
|
||||
EXPORT_SYMBOL(netdev_notify_peers);
|
||||
|
||||
+static int napi_threaded_poll(void *data);
|
||||
+
|
||||
+static int napi_kthread_create(struct napi_struct *n)
|
||||
+{
|
||||
+ int err = 0;
|
||||
+
|
||||
+ /* Create and wake up the kthread once to put it in
|
||||
+ * TASK_INTERRUPTIBLE mode to avoid the blocked task
|
||||
+ * warning and work with loadavg.
|
||||
+ */
|
||||
+ n->thread = kthread_run(napi_threaded_poll, n, "napi/%s-%d",
|
||||
+ n->dev->name, n->napi_id);
|
||||
+ if (IS_ERR(n->thread)) {
|
||||
+ err = PTR_ERR(n->thread);
|
||||
+ pr_err("kthread_run failed with err %d\n", err);
|
||||
+ n->thread = NULL;
|
||||
+ }
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct net_device_ops *ops = dev->netdev_ops;
|
||||
@@ -4242,6 +4264,21 @@ int gro_normal_batch __read_mostly = 8;
|
||||
static inline void ____napi_schedule(struct softnet_data *sd,
|
||||
struct napi_struct *napi)
|
||||
{
|
||||
+ struct task_struct *thread;
|
||||
+
|
||||
+ if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
|
||||
+ /* Paired with smp_mb__before_atomic() in
|
||||
+ * napi_enable(). Use READ_ONCE() to guarantee
|
||||
+ * a complete read on napi->thread. Only call
|
||||
+ * wake_up_process() when it's not NULL.
|
||||
+ */
|
||||
+ thread = READ_ONCE(napi->thread);
|
||||
+ if (thread) {
|
||||
+ wake_up_process(thread);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
list_add_tail(&napi->poll_list, &sd->poll_list);
|
||||
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
|
||||
}
|
||||
@@ -6693,6 +6730,12 @@ void netif_napi_add(struct net_device *d
|
||||
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
||||
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
||||
napi_hash_add(napi);
|
||||
+ /* Create kthread for this napi if dev->threaded is set.
|
||||
+ * Clear dev->threaded if kthread creation failed so that
|
||||
+ * threaded mode will not be enabled in napi_enable().
|
||||
+ */
|
||||
+ if (dev->threaded && napi_kthread_create(napi))
|
||||
+ dev->threaded = 0;
|
||||
}
|
||||
EXPORT_SYMBOL(netif_napi_add);
|
||||
|
||||
@@ -6709,9 +6752,28 @@ void napi_disable(struct napi_struct *n)
|
||||
hrtimer_cancel(&n->timer);
|
||||
|
||||
clear_bit(NAPI_STATE_DISABLE, &n->state);
|
||||
+ clear_bit(NAPI_STATE_THREADED, &n->state);
|
||||
}
|
||||
EXPORT_SYMBOL(napi_disable);
|
||||
|
||||
+/**
|
||||
+ * napi_enable - enable NAPI scheduling
|
||||
+ * @n: NAPI context
|
||||
+ *
|
||||
+ * Resume NAPI from being scheduled on this context.
|
||||
+ * Must be paired with napi_disable.
|
||||
+ */
|
||||
+void napi_enable(struct napi_struct *n)
|
||||
+{
|
||||
+ BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
|
||||
+ smp_mb__before_atomic();
|
||||
+ clear_bit(NAPI_STATE_SCHED, &n->state);
|
||||
+ clear_bit(NAPI_STATE_NPSVC, &n->state);
|
||||
+ if (n->dev->threaded && n->thread)
|
||||
+ set_bit(NAPI_STATE_THREADED, &n->state);
|
||||
+}
|
||||
+EXPORT_SYMBOL(napi_enable);
|
||||
+
|
||||
static void flush_gro_hash(struct napi_struct *napi)
|
||||
{
|
||||
int i;
|
||||
@@ -6737,6 +6799,11 @@ void __netif_napi_del(struct napi_struct
|
||||
|
||||
flush_gro_hash(napi);
|
||||
napi->gro_bitmask = 0;
|
||||
+
|
||||
+ if (napi->thread) {
|
||||
+ kthread_stop(napi->thread);
|
||||
+ napi->thread = NULL;
|
||||
+ }
|
||||
}
|
||||
EXPORT_SYMBOL(__netif_napi_del);
|
||||
|
||||
@@ -6818,6 +6885,51 @@ static int napi_poll(struct napi_struct
|
||||
return work;
|
||||
}
|
||||
|
||||
+static int napi_thread_wait(struct napi_struct *napi)
|
||||
+{
|
||||
+ set_current_state(TASK_INTERRUPTIBLE);
|
||||
+
|
||||
+ while (!kthread_should_stop() && !napi_disable_pending(napi)) {
|
||||
+ if (test_bit(NAPI_STATE_SCHED, &napi->state)) {
|
||||
+ WARN_ON(!list_empty(&napi->poll_list));
|
||||
+ __set_current_state(TASK_RUNNING);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ schedule();
|
||||
+ set_current_state(TASK_INTERRUPTIBLE);
|
||||
+ }
|
||||
+ __set_current_state(TASK_RUNNING);
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+static int napi_threaded_poll(void *data)
|
||||
+{
|
||||
+ struct napi_struct *napi = data;
|
||||
+ void *have;
|
||||
+
|
||||
+ while (!napi_thread_wait(napi)) {
|
||||
+ for (;;) {
|
||||
+ bool repoll = false;
|
||||
+
|
||||
+ local_bh_disable();
|
||||
+
|
||||
+ have = netpoll_poll_lock(napi);
|
||||
+ __napi_poll(napi, &repoll);
|
||||
+ netpoll_poll_unlock(have);
|
||||
+
|
||||
+ __kfree_skb_flush();
|
||||
+ local_bh_enable();
|
||||
+
|
||||
+ if (!repoll)
|
||||
+ break;
|
||||
+
|
||||
+ cond_resched();
|
||||
+ }
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static __latent_entropy void net_rx_action(struct softirq_action *h)
|
||||
{
|
||||
struct softnet_data *sd = this_cpu_ptr(&softnet_data);
|
||||
@ -0,0 +1,177 @@
|
||||
From: Wei Wang <weiwan@google.com>
|
||||
Date: Mon, 8 Feb 2021 11:34:10 -0800
|
||||
Subject: [PATCH] net: add sysfs attribute to control napi threaded mode
|
||||
|
||||
This patch adds a new sysfs attribute to the network device class.
|
||||
Said attribute provides a per-device control to enable/disable the
|
||||
threaded mode for all the napi instances of the given network device,
|
||||
without the need for a device up/down.
|
||||
User sets it to 1 or 0 to enable or disable threaded mode.
|
||||
Note: when switching between threaded and the current softirq based mode
|
||||
for a napi instance, it will not immediately take effect if the napi is
|
||||
currently being polled. The mode switch will happen for the next time
|
||||
napi_schedule() is called.
|
||||
|
||||
Co-developed-by: Paolo Abeni <pabeni@redhat.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
Co-developed-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Co-developed-by: Felix Fietkau <nbd@nbd.name>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
Signed-off-by: Wei Wang <weiwan@google.com>
|
||||
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
--- a/Documentation/ABI/testing/sysfs-class-net
|
||||
+++ b/Documentation/ABI/testing/sysfs-class-net
|
||||
@@ -337,3 +337,18 @@ Contact: netdev@vger.kernel.org
|
||||
Description:
|
||||
32-bit unsigned integer counting the number of times the link has
|
||||
been down
|
||||
+
|
||||
+What: /sys/class/net/<iface>/threaded
|
||||
+Date: Jan 2021
|
||||
+KernelVersion: 5.12
|
||||
+Contact: netdev@vger.kernel.org
|
||||
+Description:
|
||||
+ Boolean value to control the threaded mode per device. User could
|
||||
+ set this value to enable/disable threaded mode for all napi
|
||||
+ belonging to this device, without the need to do device up/down.
|
||||
+
|
||||
+ Possible values:
|
||||
+ == ==================================
|
||||
+ 0 threaded mode disabled for this dev
|
||||
+ 1 threaded mode enabled for this dev
|
||||
+ == ==================================
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -491,6 +491,8 @@ static inline bool napi_complete(struct
|
||||
return napi_complete_done(n, 0);
|
||||
}
|
||||
|
||||
+int dev_set_threaded(struct net_device *dev, bool threaded);
|
||||
+
|
||||
/**
|
||||
* napi_disable - prevent NAPI from scheduling
|
||||
* @n: NAPI context
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -4268,8 +4268,9 @@ static inline void ____napi_schedule(str
|
||||
|
||||
if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
|
||||
/* Paired with smp_mb__before_atomic() in
|
||||
- * napi_enable(). Use READ_ONCE() to guarantee
|
||||
- * a complete read on napi->thread. Only call
|
||||
+ * napi_enable()/dev_set_threaded().
|
||||
+ * Use READ_ONCE() to guarantee a complete
|
||||
+ * read on napi->thread. Only call
|
||||
* wake_up_process() when it's not NULL.
|
||||
*/
|
||||
thread = READ_ONCE(napi->thread);
|
||||
@@ -6703,6 +6704,49 @@ static void init_gro_hash(struct napi_st
|
||||
napi->gro_bitmask = 0;
|
||||
}
|
||||
|
||||
+int dev_set_threaded(struct net_device *dev, bool threaded)
|
||||
+{
|
||||
+ struct napi_struct *napi;
|
||||
+ int err = 0;
|
||||
+
|
||||
+ if (dev->threaded == threaded)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (threaded) {
|
||||
+ list_for_each_entry(napi, &dev->napi_list, dev_list) {
|
||||
+ if (!napi->thread) {
|
||||
+ err = napi_kthread_create(napi);
|
||||
+ if (err) {
|
||||
+ threaded = false;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ dev->threaded = threaded;
|
||||
+
|
||||
+ /* Make sure kthread is created before THREADED bit
|
||||
+ * is set.
|
||||
+ */
|
||||
+ smp_mb__before_atomic();
|
||||
+
|
||||
+ /* Setting/unsetting threaded mode on a napi might not immediately
|
||||
+ * take effect, if the current napi instance is actively being
|
||||
+ * polled. In this case, the switch between threaded mode and
|
||||
+ * softirq mode will happen in the next round of napi_schedule().
|
||||
+ * This should not cause hiccups/stalls to the live traffic.
|
||||
+ */
|
||||
+ list_for_each_entry(napi, &dev->napi_list, dev_list) {
|
||||
+ if (threaded)
|
||||
+ set_bit(NAPI_STATE_THREADED, &napi->state);
|
||||
+ else
|
||||
+ clear_bit(NAPI_STATE_THREADED, &napi->state);
|
||||
+ }
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
|
||||
int (*poll)(struct napi_struct *, int), int weight)
|
||||
{
|
||||
--- a/net/core/net-sysfs.c
|
||||
+++ b/net/core/net-sysfs.c
|
||||
@@ -538,6 +538,45 @@ static ssize_t phys_switch_id_show(struc
|
||||
}
|
||||
static DEVICE_ATTR_RO(phys_switch_id);
|
||||
|
||||
+static ssize_t threaded_show(struct device *dev,
|
||||
+ struct device_attribute *attr, char *buf)
|
||||
+{
|
||||
+ struct net_device *netdev = to_net_dev(dev);
|
||||
+ ssize_t ret = -EINVAL;
|
||||
+
|
||||
+ if (!rtnl_trylock())
|
||||
+ return restart_syscall();
|
||||
+
|
||||
+ if (dev_isalive(netdev))
|
||||
+ ret = sprintf(buf, fmt_dec, netdev->threaded);
|
||||
+
|
||||
+ rtnl_unlock();
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int modify_napi_threaded(struct net_device *dev, unsigned long val)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ if (list_empty(&dev->napi_list))
|
||||
+ return -EOPNOTSUPP;
|
||||
+
|
||||
+ if (val != 0 && val != 1)
|
||||
+ return -EOPNOTSUPP;
|
||||
+
|
||||
+ ret = dev_set_threaded(dev, val);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static ssize_t threaded_store(struct device *dev,
|
||||
+ struct device_attribute *attr,
|
||||
+ const char *buf, size_t len)
|
||||
+{
|
||||
+ return netdev_store(dev, attr, buf, len, modify_napi_threaded);
|
||||
+}
|
||||
+static DEVICE_ATTR_RW(threaded);
|
||||
+
|
||||
static struct attribute *net_class_attrs[] __ro_after_init = {
|
||||
&dev_attr_netdev_group.attr,
|
||||
&dev_attr_type.attr,
|
||||
@@ -570,6 +609,7 @@ static struct attribute *net_class_attrs
|
||||
&dev_attr_proto_down.attr,
|
||||
&dev_attr_carrier_up_count.attr,
|
||||
&dev_attr_carrier_down_count.attr,
|
||||
+ &dev_attr_threaded.attr,
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(net_class);
|
||||
@ -0,0 +1,93 @@
|
||||
From: Wei Wang <weiwan@google.com>
|
||||
Date: Mon, 1 Mar 2021 17:21:13 -0800
|
||||
Subject: [PATCH] net: fix race between napi kthread mode and busy poll
|
||||
|
||||
Currently, napi_thread_wait() checks for NAPI_STATE_SCHED bit to
|
||||
determine if the kthread owns this napi and could call napi->poll() on
|
||||
it. However, if socket busy poll is enabled, it is possible that the
|
||||
busy poll thread grabs this SCHED bit (after the previous napi->poll()
|
||||
invokes napi_complete_done() and clears SCHED bit) and tries to poll
|
||||
on the same napi. napi_disable() could grab the SCHED bit as well.
|
||||
This patch tries to fix this race by adding a new bit
|
||||
NAPI_STATE_SCHED_THREADED in napi->state. This bit gets set in
|
||||
____napi_schedule() if the threaded mode is enabled, and gets cleared
|
||||
in napi_complete_done(), and we only poll the napi in kthread if this
|
||||
bit is set. This helps distinguish the ownership of the napi between
|
||||
kthread and other scenarios and fixes the race issue.
|
||||
|
||||
Fixes: 29863d41bb6e ("net: implement threaded-able napi poll loop support")
|
||||
Reported-by: Martin Zaharinov <micron10@gmail.com>
|
||||
Suggested-by: Jakub Kicinski <kuba@kernel.org>
|
||||
Signed-off-by: Wei Wang <weiwan@google.com>
|
||||
Cc: Alexander Duyck <alexanderduyck@fb.com>
|
||||
Cc: Eric Dumazet <edumazet@google.com>
|
||||
Cc: Paolo Abeni <pabeni@redhat.com>
|
||||
Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
---
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -359,6 +359,7 @@ enum {
|
||||
NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
|
||||
NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
|
||||
NAPI_STATE_THREADED, /* The poll is performed inside its own thread*/
|
||||
+ NAPI_STATE_SCHED_THREADED, /* Napi is currently scheduled in threaded mode */
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -370,6 +371,7 @@ enum {
|
||||
NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
|
||||
NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
|
||||
NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED),
|
||||
+ NAPIF_STATE_SCHED_THREADED = BIT(NAPI_STATE_SCHED_THREADED),
|
||||
};
|
||||
|
||||
enum gro_result {
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -4275,6 +4275,8 @@ static inline void ____napi_schedule(str
|
||||
*/
|
||||
thread = READ_ONCE(napi->thread);
|
||||
if (thread) {
|
||||
+ if (thread->state != TASK_INTERRUPTIBLE)
|
||||
+ set_bit(NAPI_STATE_SCHED_THREADED, &napi->state);
|
||||
wake_up_process(thread);
|
||||
return;
|
||||
}
|
||||
@@ -6495,7 +6497,8 @@ bool napi_complete_done(struct napi_stru
|
||||
|
||||
WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
|
||||
|
||||
- new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED);
|
||||
+ new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED |
|
||||
+ NAPIF_STATE_SCHED_THREADED);
|
||||
|
||||
/* If STATE_MISSED was set, leave STATE_SCHED set,
|
||||
* because we will call napi->poll() one more time.
|
||||
@@ -6931,16 +6934,25 @@ static int napi_poll(struct napi_struct
|
||||
|
||||
static int napi_thread_wait(struct napi_struct *napi)
|
||||
{
|
||||
+ bool woken = false;
|
||||
+
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
while (!kthread_should_stop() && !napi_disable_pending(napi)) {
|
||||
- if (test_bit(NAPI_STATE_SCHED, &napi->state)) {
|
||||
+ /* Testing SCHED_THREADED bit here to make sure the current
|
||||
+ * kthread owns this napi and could poll on this napi.
|
||||
+ * Testing SCHED bit is not enough because SCHED bit might be
|
||||
+ * set by some other busy poll thread or by napi_disable().
|
||||
+ */
|
||||
+ if (test_bit(NAPI_STATE_SCHED_THREADED, &napi->state) || woken) {
|
||||
WARN_ON(!list_empty(&napi->poll_list));
|
||||
__set_current_state(TASK_RUNNING);
|
||||
return 0;
|
||||
}
|
||||
|
||||
schedule();
|
||||
+ /* woken being true indicates this thread owns this napi. */
|
||||
+ woken = true;
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
}
|
||||
__set_current_state(TASK_RUNNING);
|
||||
@ -0,0 +1,84 @@
|
||||
From c3b8e07909dbe67b0d580416c1a5257643a73be7 Mon Sep 17 00:00:00 2001
|
||||
From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
||||
Date: Fri, 12 Mar 2021 00:07:03 -0800
|
||||
Subject: [PATCH] net: dsa: mt7530: setup core clock even in TRGMII mode
|
||||
|
||||
A recent change to MIPS ralink reset logic made it so mt7530 actually
|
||||
resets the switch on platforms such as mt7621 (where bit 2 is the reset
|
||||
line for the switch). That exposed an issue where the switch would not
|
||||
function properly in TRGMII mode after a reset.
|
||||
|
||||
Reconfigure core clock in TRGMII mode to fix the issue.
|
||||
|
||||
Tested on Ubiquiti ER-X (MT7621) with TRGMII mode enabled.
|
||||
|
||||
Fixes: 3f9ef7785a9c ("MIPS: ralink: manage low reset lines")
|
||||
Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/dsa/mt7530.c | 52 +++++++++++++++++++---------------------
|
||||
1 file changed, 25 insertions(+), 27 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -435,34 +435,32 @@ mt7530_pad_clk_setup(struct dsa_switch *
|
||||
TD_DM_DRVP(8) | TD_DM_DRVN(8));
|
||||
|
||||
/* Setup core clock for MT7530 */
|
||||
- if (!trgint) {
|
||||
- /* Disable MT7530 core clock */
|
||||
- core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
-
|
||||
- /* Disable PLL, since phy_device has not yet been created
|
||||
- * provided for phy_[read,write]_mmd_indirect is called, we
|
||||
- * provide our own core_write_mmd_indirect to complete this
|
||||
- * function.
|
||||
- */
|
||||
- core_write_mmd_indirect(priv,
|
||||
- CORE_GSWPLL_GRP1,
|
||||
- MDIO_MMD_VEND2,
|
||||
- 0);
|
||||
-
|
||||
- /* Set core clock into 500Mhz */
|
||||
- core_write(priv, CORE_GSWPLL_GRP2,
|
||||
- RG_GSWPLL_POSDIV_500M(1) |
|
||||
- RG_GSWPLL_FBKDIV_500M(25));
|
||||
-
|
||||
- /* Enable PLL */
|
||||
- core_write(priv, CORE_GSWPLL_GRP1,
|
||||
- RG_GSWPLL_EN_PRE |
|
||||
- RG_GSWPLL_POSDIV_200M(2) |
|
||||
- RG_GSWPLL_FBKDIV_200M(32));
|
||||
-
|
||||
- /* Enable MT7530 core clock */
|
||||
- core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
- }
|
||||
+ /* Disable MT7530 core clock */
|
||||
+ core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
+
|
||||
+ /* Disable PLL, since phy_device has not yet been created
|
||||
+ * provided for phy_[read,write]_mmd_indirect is called, we
|
||||
+ * provide our own core_write_mmd_indirect to complete this
|
||||
+ * function.
|
||||
+ */
|
||||
+ core_write_mmd_indirect(priv,
|
||||
+ CORE_GSWPLL_GRP1,
|
||||
+ MDIO_MMD_VEND2,
|
||||
+ 0);
|
||||
+
|
||||
+ /* Set core clock into 500Mhz */
|
||||
+ core_write(priv, CORE_GSWPLL_GRP2,
|
||||
+ RG_GSWPLL_POSDIV_500M(1) |
|
||||
+ RG_GSWPLL_FBKDIV_500M(25));
|
||||
+
|
||||
+ /* Enable PLL */
|
||||
+ core_write(priv, CORE_GSWPLL_GRP1,
|
||||
+ RG_GSWPLL_EN_PRE |
|
||||
+ RG_GSWPLL_POSDIV_200M(2) |
|
||||
+ RG_GSWPLL_FBKDIV_200M(32));
|
||||
+
|
||||
+ /* Enable MT7530 core clock */
|
||||
+ core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
|
||||
/* Setup the MT7530 TRGMII Tx Clock */
|
||||
core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
@ -0,0 +1,84 @@
|
||||
From c3b8e07909dbe67b0d580416c1a5257643a73be7 Mon Sep 17 00:00:00 2001
|
||||
From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
||||
Date: Fri, 12 Mar 2021 00:07:03 -0800
|
||||
Subject: [PATCH] net: dsa: mt7530: setup core clock even in TRGMII mode
|
||||
|
||||
A recent change to MIPS ralink reset logic made it so mt7530 actually
|
||||
resets the switch on platforms such as mt7621 (where bit 2 is the reset
|
||||
line for the switch). That exposed an issue where the switch would not
|
||||
function properly in TRGMII mode after a reset.
|
||||
|
||||
Reconfigure core clock in TRGMII mode to fix the issue.
|
||||
|
||||
Tested on Ubiquiti ER-X (MT7621) with TRGMII mode enabled.
|
||||
|
||||
Fixes: 3f9ef7785a9c ("MIPS: ralink: manage low reset lines")
|
||||
Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/dsa/mt7530.c | 52 +++++++++++++++++++---------------------
|
||||
1 file changed, 25 insertions(+), 27 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -427,34 +427,32 @@ mt7530_pad_clk_setup(struct dsa_switch *
|
||||
TD_DM_DRVP(8) | TD_DM_DRVN(8));
|
||||
|
||||
/* Setup core clock for MT7530 */
|
||||
- if (!trgint) {
|
||||
- /* Disable MT7530 core clock */
|
||||
- core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
-
|
||||
- /* Disable PLL, since phy_device has not yet been created
|
||||
- * provided for phy_[read,write]_mmd_indirect is called, we
|
||||
- * provide our own core_write_mmd_indirect to complete this
|
||||
- * function.
|
||||
- */
|
||||
- core_write_mmd_indirect(priv,
|
||||
- CORE_GSWPLL_GRP1,
|
||||
- MDIO_MMD_VEND2,
|
||||
- 0);
|
||||
-
|
||||
- /* Set core clock into 500Mhz */
|
||||
- core_write(priv, CORE_GSWPLL_GRP2,
|
||||
- RG_GSWPLL_POSDIV_500M(1) |
|
||||
- RG_GSWPLL_FBKDIV_500M(25));
|
||||
-
|
||||
- /* Enable PLL */
|
||||
- core_write(priv, CORE_GSWPLL_GRP1,
|
||||
- RG_GSWPLL_EN_PRE |
|
||||
- RG_GSWPLL_POSDIV_200M(2) |
|
||||
- RG_GSWPLL_FBKDIV_200M(32));
|
||||
-
|
||||
- /* Enable MT7530 core clock */
|
||||
- core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
- }
|
||||
+ /* Disable MT7530 core clock */
|
||||
+ core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
+
|
||||
+ /* Disable PLL, since phy_device has not yet been created
|
||||
+ * provided for phy_[read,write]_mmd_indirect is called, we
|
||||
+ * provide our own core_write_mmd_indirect to complete this
|
||||
+ * function.
|
||||
+ */
|
||||
+ core_write_mmd_indirect(priv,
|
||||
+ CORE_GSWPLL_GRP1,
|
||||
+ MDIO_MMD_VEND2,
|
||||
+ 0);
|
||||
+
|
||||
+ /* Set core clock into 500Mhz */
|
||||
+ core_write(priv, CORE_GSWPLL_GRP2,
|
||||
+ RG_GSWPLL_POSDIV_500M(1) |
|
||||
+ RG_GSWPLL_FBKDIV_500M(25));
|
||||
+
|
||||
+ /* Enable PLL */
|
||||
+ core_write(priv, CORE_GSWPLL_GRP1,
|
||||
+ RG_GSWPLL_EN_PRE |
|
||||
+ RG_GSWPLL_POSDIV_200M(2) |
|
||||
+ RG_GSWPLL_FBKDIV_200M(32));
|
||||
+
|
||||
+ /* Enable MT7530 core clock */
|
||||
+ core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
|
||||
/* Setup the MT7530 TRGMII Tx Clock */
|
||||
core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN);
|
||||
@ -2768,6 +2768,8 @@ CONFIG_JFFS2_SUMMARY=y
|
||||
# CONFIG_JME is not set
|
||||
CONFIG_JOLIET=y
|
||||
# CONFIG_JSA1212 is not set
|
||||
# CONFIG_JZ4740_WDT is not set
|
||||
# CONFIG_JZ4770_PHY is not set
|
||||
# CONFIG_JUMP_LABEL is not set
|
||||
# CONFIG_JZ4740_WDT is not set
|
||||
# CONFIG_JZ4770_PHY is not set
|
||||
@ -2787,6 +2789,7 @@ CONFIG_KASAN_STACK=1
|
||||
# CONFIG_KERNEL_LZ4 is not set
|
||||
# CONFIG_KERNEL_LZMA is not set
|
||||
# CONFIG_KERNEL_LZO is not set
|
||||
# CONFIG_KERNEL_ZSTD is not set
|
||||
CONFIG_KERNEL_MODE_NEON=y
|
||||
CONFIG_KERNEL_XZ=y
|
||||
CONFIG_KERNFS=y
|
||||
@ -3031,6 +3034,7 @@ CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
|
||||
# CONFIG_MACH_JZ4740 is not set
|
||||
# CONFIG_MACH_LOONGSON2EF is not set
|
||||
# CONFIG_MACH_LOONGSON32 is not set
|
||||
# CONFIG_MACH_LOONGSON2EF is not set
|
||||
# CONFIG_MACH_LOONGSON64 is not set
|
||||
# CONFIG_MACH_PIC32 is not set
|
||||
# CONFIG_MACH_PISTACHIO is not set
|
||||
@ -3094,7 +3098,7 @@ CONFIG_MAY_USE_DEVLINK=y
|
||||
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
|
||||
# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
|
||||
# CONFIG_MDIO_DEVICE is not set
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
# CONFIG_MDIO_DEVRES is not set
|
||||
# CONFIG_MDIO_HISI_FEMAC is not set
|
||||
# CONFIG_MDIO_IPQ4019 is not set
|
||||
# CONFIG_MDIO_IPQ8064 is not set
|
||||
@ -4498,6 +4502,7 @@ CONFIG_PROC_SYSCTL=y
|
||||
# CONFIG_PTP_1588_CLOCK_IXP46X is not set
|
||||
# CONFIG_PTP_1588_CLOCK_KVM is not set
|
||||
# CONFIG_PTP_1588_CLOCK_PCH is not set
|
||||
# CONFIG_PTP_1588_CLOCK_VMW is not set
|
||||
# CONFIG_PUBLIC_KEY_ALGO_RSA is not set
|
||||
# CONFIG_PVPANIC is not set
|
||||
# CONFIG_PWM is not set
|
||||
@ -5281,6 +5286,7 @@ CONFIG_SERIAL_EARLYCON=y
|
||||
# CONFIG_SGI_IP28 is not set
|
||||
# CONFIG_SGI_IP30 is not set
|
||||
# CONFIG_SGI_IP32 is not set
|
||||
# CONFIG_SGI_MFD_IOC3 is not set
|
||||
# CONFIG_SGI_PARTITION is not set
|
||||
# CONFIG_SG_POOL is not set
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
|
||||
@ -58,7 +58,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -833,6 +833,27 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||
@@ -827,6 +827,27 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||
struct sk_buff *skb,
|
||||
struct net_device *sb_dev);
|
||||
|
||||
@ -86,7 +86,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
enum tc_setup_type {
|
||||
TC_SETUP_QDISC_MQPRIO,
|
||||
TC_SETUP_CLSU32,
|
||||
@@ -1279,6 +1300,8 @@ struct netdev_net_notifier {
|
||||
@@ -1273,6 +1294,8 @@ struct netdev_net_notifier {
|
||||
* struct net_device *(*ndo_get_peer_dev)(struct net_device *dev);
|
||||
* If a device is paired with a peer device, return the peer instance.
|
||||
* The caller must be under RCU read context.
|
||||
@ -95,7 +95,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
*/
|
||||
struct net_device_ops {
|
||||
int (*ndo_init)(struct net_device *dev);
|
||||
@@ -1487,6 +1510,8 @@ struct net_device_ops {
|
||||
@@ -1481,6 +1504,8 @@ struct net_device_ops {
|
||||
int (*ndo_tunnel_ctl)(struct net_device *dev,
|
||||
struct ip_tunnel_parm *p, int cmd);
|
||||
struct net_device * (*ndo_get_peer_dev)(struct net_device *dev);
|
||||
@ -104,7 +104,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2798,6 +2823,8 @@ void dev_remove_offload(struct packet_of
|
||||
@@ -2795,6 +2820,8 @@ void dev_remove_offload(struct packet_of
|
||||
|
||||
int dev_get_iflink(const struct net_device *dev);
|
||||
int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb);
|
||||
@ -115,7 +115,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
struct net_device *dev_get_by_name(struct net *net, const char *name);
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -846,6 +846,52 @@ int dev_fill_metadata_dst(struct net_dev
|
||||
@@ -847,6 +847,52 @@ int dev_fill_metadata_dst(struct net_dev
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dev_fill_metadata_dst);
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -835,11 +835,18 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||
@@ -829,11 +829,18 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||
|
||||
enum net_device_path_type {
|
||||
DEV_PATH_ETHERNET = 0,
|
||||
|
||||
@ -9,7 +9,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -836,6 +836,7 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||
@@ -830,6 +830,7 @@ typedef u16 (*select_queue_fallback_t)(s
|
||||
enum net_device_path_type {
|
||||
DEV_PATH_ETHERNET = 0,
|
||||
DEV_PATH_VLAN,
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -847,10 +847,20 @@ struct net_device_path {
|
||||
@@ -841,10 +841,20 @@ struct net_device_path {
|
||||
u16 id;
|
||||
__be16 proto;
|
||||
} encap;
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
struct net_device_path_stack {
|
||||
int num_paths;
|
||||
@@ -860,6 +870,12 @@ struct net_device_path_stack {
|
||||
@@ -854,6 +864,12 @@ struct net_device_path_stack {
|
||||
struct net_device_path_ctx {
|
||||
const struct net_device *dev;
|
||||
const u8 *daddr;
|
||||
|
||||
@ -78,7 +78,7 @@ Pass on the PPPoE session ID and the real device.
|
||||
static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -837,6 +837,7 @@ enum net_device_path_type {
|
||||
@@ -831,6 +831,7 @@ enum net_device_path_type {
|
||||
DEV_PATH_ETHERNET = 0,
|
||||
DEV_PATH_VLAN,
|
||||
DEV_PATH_BRIDGE,
|
||||
|
||||
@ -7,7 +7,7 @@ Add .ndo_fill_forward_path for dsa slave port devices
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -838,6 +838,7 @@ enum net_device_path_type {
|
||||
@@ -832,6 +832,7 @@ enum net_device_path_type {
|
||||
DEV_PATH_VLAN,
|
||||
DEV_PATH_BRIDGE,
|
||||
DEV_PATH_PPPOE,
|
||||
@ -15,7 +15,7 @@ Add .ndo_fill_forward_path for dsa slave port devices
|
||||
};
|
||||
|
||||
struct net_device_path {
|
||||
@@ -857,6 +858,10 @@ struct net_device_path {
|
||||
@@ -851,6 +852,10 @@ struct net_device_path {
|
||||
u16 vlan_id;
|
||||
__be16 vlan_proto;
|
||||
} bridge;
|
||||
|
||||
@ -27,7 +27,7 @@ Subject: [PATCH] netfilter: flowtable: add pppoe support
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -848,6 +848,7 @@ struct net_device_path {
|
||||
@@ -842,6 +842,7 @@ struct net_device_path {
|
||||
struct {
|
||||
u16 id;
|
||||
__be16 proto;
|
||||
|
||||
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -855,6 +855,7 @@ struct net_device_path {
|
||||
@@ -849,6 +849,7 @@ struct net_device_path {
|
||||
DEV_PATH_BR_VLAN_KEEP,
|
||||
DEV_PATH_BR_VLAN_TAG,
|
||||
DEV_PATH_BR_VLAN_UNTAG,
|
||||
|
||||
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -2033,6 +2033,8 @@ struct net_device {
|
||||
@@ -2029,6 +2029,8 @@ struct net_device {
|
||||
struct netdev_hw_addr_list mc;
|
||||
struct netdev_hw_addr_list dev_addrs;
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u16 tc_index; /* traffic control index */
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5965,6 +5965,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -6005,6 +6005,9 @@ static enum gro_result dev_gro_receive(s
|
||||
int same_flow;
|
||||
int grow;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (netif_elide_gro(skb->dev))
|
||||
goto normal;
|
||||
|
||||
@@ -7793,6 +7796,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -7973,6 +7976,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info,
|
||||
@@ -7844,6 +7889,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -8024,6 +8069,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -7940,6 +7986,7 @@ static void __netdev_upper_dev_unlink(st
|
||||
@@ -8120,6 +8166,7 @@ static void __netdev_upper_dev_unlink(st
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
|
||||
@@ -8726,6 +8773,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -8906,6 +8953,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
||||
@ -1,301 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sun, 26 Jul 2020 14:03:21 +0200
|
||||
Subject: [PATCH] net: add support for threaded NAPI polling
|
||||
|
||||
For some drivers (especially 802.11 drivers), doing a lot of work in the NAPI
|
||||
poll function does not perform well. Since NAPI poll is bound to the CPU it
|
||||
was scheduled from, we can easily end up with a few very busy CPUs spending
|
||||
most of their time in softirq/ksoftirqd and some idle ones.
|
||||
|
||||
Introduce threaded NAPI for such drivers based on a workqueue. The API is the
|
||||
same except for using netif_threaded_napi_add instead of netif_napi_add.
|
||||
|
||||
In my tests with mt76 on MT7621 using threaded NAPI + a thread for tx scheduling
|
||||
improves LAN->WLAN bridging throughput by 10-50%. Throughput without threaded
|
||||
NAPI is wildly inconsistent, depending on the CPU that runs the tx scheduling
|
||||
thread.
|
||||
|
||||
With threaded NAPI, throughput seems stable and consistent (and higher than
|
||||
the best results I got without it).
|
||||
|
||||
Based on a patch by Hillf Danton
|
||||
|
||||
Cc: Hillf Danton <hdanton@sina.com>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -347,6 +347,7 @@ struct napi_struct {
|
||||
struct list_head dev_list;
|
||||
struct hlist_node napi_hash_node;
|
||||
unsigned int napi_id;
|
||||
+ struct work_struct work;
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -357,6 +358,7 @@ enum {
|
||||
NAPI_STATE_LISTED, /* NAPI added to system lists */
|
||||
NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
|
||||
NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
|
||||
+ NAPI_STATE_THREADED, /* Use threaded NAPI */
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -367,6 +369,7 @@ enum {
|
||||
NAPIF_STATE_LISTED = BIT(NAPI_STATE_LISTED),
|
||||
NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
|
||||
NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
|
||||
+ NAPIF_STATE_THREADED = BIT(NAPI_STATE_THREADED),
|
||||
};
|
||||
|
||||
enum gro_result {
|
||||
@@ -2211,6 +2214,7 @@ struct net_device {
|
||||
struct lock_class_key *qdisc_running_key;
|
||||
bool proto_down;
|
||||
unsigned wol_enabled:1;
|
||||
+ unsigned threaded:1;
|
||||
|
||||
struct list_head net_notifier_list;
|
||||
|
||||
@@ -2413,6 +2417,26 @@ void netif_napi_add(struct net_device *d
|
||||
int (*poll)(struct napi_struct *, int), int weight);
|
||||
|
||||
/**
|
||||
+ * netif_threaded_napi_add - initialize a NAPI context
|
||||
+ * @dev: network device
|
||||
+ * @napi: NAPI context
|
||||
+ * @poll: polling function
|
||||
+ * @weight: default weight
|
||||
+ *
|
||||
+ * This variant of netif_napi_add() should be used from drivers using NAPI
|
||||
+ * with CPU intensive poll functions.
|
||||
+ * This will schedule polling from a high priority workqueue
|
||||
+ */
|
||||
+static inline void netif_threaded_napi_add(struct net_device *dev,
|
||||
+ struct napi_struct *napi,
|
||||
+ int (*poll)(struct napi_struct *, int),
|
||||
+ int weight)
|
||||
+{
|
||||
+ set_bit(NAPI_STATE_THREADED, &napi->state);
|
||||
+ netif_napi_add(dev, napi, poll, weight);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
* netif_tx_napi_add - initialize a NAPI context
|
||||
* @dev: network device
|
||||
* @napi: NAPI context
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -159,6 +159,7 @@ static DEFINE_SPINLOCK(offload_lock);
|
||||
struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly;
|
||||
struct list_head ptype_all __read_mostly; /* Taps */
|
||||
static struct list_head offload_base __read_mostly;
|
||||
+static struct workqueue_struct *napi_workq __read_mostly;
|
||||
|
||||
static int netif_rx_internal(struct sk_buff *skb);
|
||||
static int call_netdevice_notifiers_info(unsigned long val,
|
||||
@@ -6407,6 +6408,11 @@ void __napi_schedule(struct napi_struct
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
+ if (test_bit(NAPI_STATE_THREADED, &n->state)) {
|
||||
+ queue_work(napi_workq, &n->work);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
local_irq_save(flags);
|
||||
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
||||
local_irq_restore(flags);
|
||||
@@ -6454,6 +6460,11 @@ EXPORT_SYMBOL(napi_schedule_prep);
|
||||
*/
|
||||
void __napi_schedule_irqoff(struct napi_struct *n)
|
||||
{
|
||||
+ if (test_bit(NAPI_STATE_THREADED, &n->state)) {
|
||||
+ queue_work(napi_workq, &n->work);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
____napi_schedule(this_cpu_ptr(&softnet_data), n);
|
||||
}
|
||||
EXPORT_SYMBOL(__napi_schedule_irqoff);
|
||||
@@ -6715,12 +6726,94 @@ static void init_gro_hash(struct napi_st
|
||||
napi->gro_bitmask = 0;
|
||||
}
|
||||
|
||||
+static int __napi_poll(struct napi_struct *n, bool *repoll)
|
||||
+{
|
||||
+ int work, weight;
|
||||
+
|
||||
+ weight = n->weight;
|
||||
+
|
||||
+ /* This NAPI_STATE_SCHED test is for avoiding a race
|
||||
+ * with netpoll's poll_napi(). Only the entity which
|
||||
+ * obtains the lock and sees NAPI_STATE_SCHED set will
|
||||
+ * actually make the ->poll() call. Therefore we avoid
|
||||
+ * accidentally calling ->poll() when NAPI is not scheduled.
|
||||
+ */
|
||||
+ work = 0;
|
||||
+ if (test_bit(NAPI_STATE_SCHED, &n->state)) {
|
||||
+ work = n->poll(n, weight);
|
||||
+ trace_napi_poll(n, work, weight);
|
||||
+ }
|
||||
+
|
||||
+ if (unlikely(work > weight))
|
||||
+ pr_err_once("NAPI poll function %pS returned %d, exceeding its budget of %d.\n",
|
||||
+ n->poll, work, weight);
|
||||
+
|
||||
+ if (likely(work < weight))
|
||||
+ return work;
|
||||
+
|
||||
+ /* Drivers must not modify the NAPI state if they
|
||||
+ * consume the entire weight. In such cases this code
|
||||
+ * still "owns" the NAPI instance and therefore can
|
||||
+ * move the instance around on the list at-will.
|
||||
+ */
|
||||
+ if (unlikely(napi_disable_pending(n))) {
|
||||
+ napi_complete(n);
|
||||
+ return work;
|
||||
+ }
|
||||
+
|
||||
+ if (n->gro_bitmask) {
|
||||
+ /* flush too old packets
|
||||
+ * If HZ < 1000, flush all packets.
|
||||
+ */
|
||||
+ napi_gro_flush(n, HZ >= 1000);
|
||||
+ }
|
||||
+
|
||||
+ gro_normal_list(n);
|
||||
+
|
||||
+ *repoll = true;
|
||||
+
|
||||
+ return work;
|
||||
+}
|
||||
+
|
||||
+static void napi_workfn(struct work_struct *work)
|
||||
+{
|
||||
+ struct napi_struct *n = container_of(work, struct napi_struct, work);
|
||||
+ void *have;
|
||||
+
|
||||
+ for (;;) {
|
||||
+ bool repoll = false;
|
||||
+
|
||||
+ local_bh_disable();
|
||||
+
|
||||
+ have = netpoll_poll_lock(n);
|
||||
+ __napi_poll(n, &repoll);
|
||||
+ netpoll_poll_unlock(have);
|
||||
+
|
||||
+ local_bh_enable();
|
||||
+
|
||||
+ if (!repoll)
|
||||
+ return;
|
||||
+
|
||||
+ if (!need_resched())
|
||||
+ continue;
|
||||
+
|
||||
+ /*
|
||||
+ * have to pay for the latency of task switch even if
|
||||
+ * napi is scheduled
|
||||
+ */
|
||||
+ queue_work(napi_workq, work);
|
||||
+ return;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
|
||||
int (*poll)(struct napi_struct *, int), int weight)
|
||||
{
|
||||
if (WARN_ON(test_and_set_bit(NAPI_STATE_LISTED, &napi->state)))
|
||||
return;
|
||||
|
||||
+ if (dev->threaded)
|
||||
+ set_bit(NAPI_STATE_THREADED, &napi->state);
|
||||
INIT_LIST_HEAD(&napi->poll_list);
|
||||
INIT_HLIST_NODE(&napi->napi_hash_node);
|
||||
hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED);
|
||||
@@ -6738,6 +6831,7 @@ void netif_napi_add(struct net_device *d
|
||||
#ifdef CONFIG_NETPOLL
|
||||
napi->poll_owner = -1;
|
||||
#endif
|
||||
+ INIT_WORK(&napi->work, napi_workfn);
|
||||
set_bit(NAPI_STATE_SCHED, &napi->state);
|
||||
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
||||
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
||||
@@ -6780,6 +6874,7 @@ void __netif_napi_del(struct napi_struct
|
||||
if (!test_and_clear_bit(NAPI_STATE_LISTED, &napi->state))
|
||||
return;
|
||||
|
||||
+ cancel_work_sync(&napi->work);
|
||||
napi_hash_del(napi);
|
||||
list_del_rcu(&napi->dev_list);
|
||||
napi_free_frags(napi);
|
||||
@@ -6791,53 +6886,19 @@ EXPORT_SYMBOL(__netif_napi_del);
|
||||
|
||||
static int napi_poll(struct napi_struct *n, struct list_head *repoll)
|
||||
{
|
||||
+ bool do_repoll = false;
|
||||
void *have;
|
||||
- int work, weight;
|
||||
+ int work;
|
||||
|
||||
list_del_init(&n->poll_list);
|
||||
|
||||
have = netpoll_poll_lock(n);
|
||||
|
||||
- weight = n->weight;
|
||||
+ work = __napi_poll(n, &do_repoll);
|
||||
|
||||
- /* This NAPI_STATE_SCHED test is for avoiding a race
|
||||
- * with netpoll's poll_napi(). Only the entity which
|
||||
- * obtains the lock and sees NAPI_STATE_SCHED set will
|
||||
- * actually make the ->poll() call. Therefore we avoid
|
||||
- * accidentally calling ->poll() when NAPI is not scheduled.
|
||||
- */
|
||||
- work = 0;
|
||||
- if (test_bit(NAPI_STATE_SCHED, &n->state)) {
|
||||
- work = n->poll(n, weight);
|
||||
- trace_napi_poll(n, work, weight);
|
||||
- }
|
||||
-
|
||||
- if (unlikely(work > weight))
|
||||
- pr_err_once("NAPI poll function %pS returned %d, exceeding its budget of %d.\n",
|
||||
- n->poll, work, weight);
|
||||
-
|
||||
- if (likely(work < weight))
|
||||
+ if (!do_repoll)
|
||||
goto out_unlock;
|
||||
|
||||
- /* Drivers must not modify the NAPI state if they
|
||||
- * consume the entire weight. In such cases this code
|
||||
- * still "owns" the NAPI instance and therefore can
|
||||
- * move the instance around on the list at-will.
|
||||
- */
|
||||
- if (unlikely(napi_disable_pending(n))) {
|
||||
- napi_complete(n);
|
||||
- goto out_unlock;
|
||||
- }
|
||||
-
|
||||
- if (n->gro_bitmask) {
|
||||
- /* flush too old packets
|
||||
- * If HZ < 1000, flush all packets.
|
||||
- */
|
||||
- napi_gro_flush(n, HZ >= 1000);
|
||||
- }
|
||||
-
|
||||
- gro_normal_list(n);
|
||||
-
|
||||
/* Some drivers may have called napi_schedule
|
||||
* prior to exhausting their budget.
|
||||
*/
|
||||
@@ -11333,6 +11394,10 @@ static int __init net_dev_init(void)
|
||||
sd->backlog.weight = weight_p;
|
||||
}
|
||||
|
||||
+ napi_workq = alloc_workqueue("napi_workq", WQ_UNBOUND | WQ_HIGHPRI,
|
||||
+ WQ_UNBOUND_MAX_ACTIVE | WQ_SYSFS);
|
||||
+ BUG_ON(!napi_workq);
|
||||
+
|
||||
dev_boot_phase = 0;
|
||||
|
||||
/* The loopback device is special if any other network devices
|
||||
@ -1,74 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 21 Aug 2020 15:07:54 +0200
|
||||
Subject: [PATCH] net: add sysfs attribute for enabling threaded NAPI
|
||||
|
||||
This can be used to enable threaded NAPI on drivers that did not explicitly
|
||||
request it.
|
||||
|
||||
Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/core/net-sysfs.c
|
||||
+++ b/net/core/net-sysfs.c
|
||||
@@ -472,6 +472,52 @@ static ssize_t proto_down_store(struct d
|
||||
}
|
||||
NETDEVICE_SHOW_RW(proto_down, fmt_dec);
|
||||
|
||||
+static int change_napi_threaded(struct net_device *dev, unsigned long val)
|
||||
+{
|
||||
+ struct napi_struct *napi;
|
||||
+
|
||||
+ if (list_empty(&dev->napi_list))
|
||||
+ return -EOPNOTSUPP;
|
||||
+
|
||||
+ list_for_each_entry(napi, &dev->napi_list, dev_list) {
|
||||
+ if (val)
|
||||
+ set_bit(NAPI_STATE_THREADED, &napi->state);
|
||||
+ else
|
||||
+ clear_bit(NAPI_STATE_THREADED, &napi->state);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static ssize_t napi_threaded_store(struct device *dev,
|
||||
+ struct device_attribute *attr,
|
||||
+ const char *buf, size_t len)
|
||||
+{
|
||||
+ return netdev_store(dev, attr, buf, len, change_napi_threaded);
|
||||
+}
|
||||
+
|
||||
+static ssize_t napi_threaded_show(struct device *dev,
|
||||
+ struct device_attribute *attr,
|
||||
+ char *buf)
|
||||
+{
|
||||
+ struct net_device *netdev = to_net_dev(dev);
|
||||
+ struct napi_struct *napi;
|
||||
+ bool enabled = false;
|
||||
+
|
||||
+ if (!rtnl_trylock())
|
||||
+ return restart_syscall();
|
||||
+
|
||||
+ list_for_each_entry(napi, &netdev->napi_list, dev_list) {
|
||||
+ if (test_bit(NAPI_STATE_THREADED, &napi->state))
|
||||
+ enabled = true;
|
||||
+ }
|
||||
+
|
||||
+ rtnl_unlock();
|
||||
+
|
||||
+ return sprintf(buf, fmt_dec, enabled);
|
||||
+}
|
||||
+static DEVICE_ATTR_RW(napi_threaded);
|
||||
+
|
||||
static ssize_t phys_port_id_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
@@ -564,6 +610,7 @@ static struct attribute *net_class_attrs
|
||||
&dev_attr_tx_queue_len.attr,
|
||||
&dev_attr_gro_flush_timeout.attr,
|
||||
&dev_attr_napi_defer_hard_irqs.attr,
|
||||
+ &dev_attr_napi_threaded.attr,
|
||||
&dev_attr_phys_port_id.attr,
|
||||
&dev_attr_phys_port_name.attr,
|
||||
&dev_attr_phys_switch_id.attr,
|
||||
@ -9,7 +9,7 @@ Content-Transfer-Encoding: 8bit
|
||||
Signed-off-by: René van Dorst <opensource@vdorst.com>
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -2266,9 +2266,13 @@ static void mt753x_phylink_mac_link_up(s
|
||||
@@ -2264,9 +2264,13 @@ static void mt753x_phylink_mac_link_up(s
|
||||
switch (speed) {
|
||||
case SPEED_1000:
|
||||
mcr |= PMCR_FORCE_SPEED_1000;
|
||||
@ -23,7 +23,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
|
||||
break;
|
||||
}
|
||||
if (duplex == DUPLEX_FULL) {
|
||||
@@ -2509,6 +2513,54 @@ mt753x_phy_write(struct dsa_switch *ds,
|
||||
@@ -2507,6 +2511,54 @@ mt753x_phy_write(struct dsa_switch *ds,
|
||||
return priv->info->phy_write(ds, port, regnum, val);
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
|
||||
static const struct dsa_switch_ops mt7530_switch_ops = {
|
||||
.get_tag_protocol = mtk_get_tag_protocol,
|
||||
.setup = mt753x_setup,
|
||||
@@ -2537,6 +2589,8 @@ static const struct dsa_switch_ops mt753
|
||||
@@ -2535,6 +2587,8 @@ static const struct dsa_switch_ops mt753
|
||||
.phylink_mac_an_restart = mt753x_phylink_mac_an_restart,
|
||||
.phylink_mac_link_down = mt753x_phylink_mac_link_down,
|
||||
.phylink_mac_link_up = mt753x_phylink_mac_link_up,
|
||||
|
||||
@ -9,7 +9,7 @@ Content-Transfer-Encoding: 8bit
|
||||
Signed-off-by: René van Dorst <opensource@vdorst.com>
|
||||
--- a/drivers/net/dsa/mt7530.c
|
||||
+++ b/drivers/net/dsa/mt7530.c
|
||||
@@ -1419,9 +1419,13 @@ static void mt7530_phylink_mac_config(st
|
||||
@@ -1417,9 +1417,13 @@ static void mt7530_phylink_mac_config(st
|
||||
switch (state->speed) {
|
||||
case SPEED_1000:
|
||||
mcr_new |= PMCR_FORCE_SPEED_1000;
|
||||
@ -23,7 +23,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
|
||||
break;
|
||||
}
|
||||
if (state->duplex == DUPLEX_FULL) {
|
||||
@@ -1557,6 +1561,54 @@ mt7530_phylink_mac_link_state(struct dsa
|
||||
@@ -1555,6 +1559,54 @@ mt7530_phylink_mac_link_state(struct dsa
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ Signed-off-by: René van Dorst <opensource@vdorst.com>
|
||||
static const struct dsa_switch_ops mt7530_switch_ops = {
|
||||
.get_tag_protocol = mtk_get_tag_protocol,
|
||||
.setup = mt7530_setup,
|
||||
@@ -1584,6 +1636,8 @@ static const struct dsa_switch_ops mt753
|
||||
@@ -1582,6 +1634,8 @@ static const struct dsa_switch_ops mt753
|
||||
.phylink_mac_config = mt7530_phylink_mac_config,
|
||||
.phylink_mac_link_down = mt7530_phylink_mac_link_down,
|
||||
.phylink_mac_link_up = mt7530_phylink_mac_link_up,
|
||||
|
||||
340
target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
Normal file
340
target/linux/mediatek/dts/mt7622-buffalo-wsr-2533dhp2.dts
Normal file
@ -0,0 +1,340 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
#include "mt7622.dtsi"
|
||||
#include "mt6380.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Buffalo WSR-2533DHP2";
|
||||
compatible = "buffalo,wsr-2533dhp2", "mediatek,mt7622";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
led-boot = &power_green;
|
||||
led-failsafe = &power_amber;
|
||||
led-running = &power_green;
|
||||
led-upgrade = &power_green;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8 swiotlb=512";
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0 0x40000000 0 0x0F000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
wireless_amber {
|
||||
label = "amber:wireless";
|
||||
gpios = <&pio 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
power_amber: power_amber {
|
||||
label = "amber:power";
|
||||
gpios = <&pio 3 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
power_green: power_green {
|
||||
label = "green:power";
|
||||
gpios = <&pio 4 GPIO_ACTIVE_LOW>;
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
wireless_green {
|
||||
label = "green:wireless";
|
||||
gpios = <&pio 15 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
internet {
|
||||
label = "green:internet";
|
||||
gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
router {
|
||||
label = "green:router";
|
||||
gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
poll-interval = <100>;
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&pio 0 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
|
||||
/* GPIO 1 and 16 are a tri-state switch button with
|
||||
* ROUTER / AP / WB.
|
||||
*/
|
||||
router {
|
||||
label = "router";
|
||||
gpios = <&pio 1 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_0>;
|
||||
linux,input-type = <EV_SW>;
|
||||
};
|
||||
|
||||
bridge {
|
||||
label = "wb";
|
||||
gpios = <&pio 16 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_1>;
|
||||
linux,input-type = <EV_SW>;
|
||||
};
|
||||
|
||||
/* GPIO 18 is a switch button with AUTO / MANUAL. */
|
||||
manual {
|
||||
label = "manual";
|
||||
gpios = <&pio 18 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_2>;
|
||||
linux,input-type = <EV_SW>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
gpios = <&pio 102 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
};
|
||||
};
|
||||
|
||||
rtkgsw: rtkgsw@0 {
|
||||
compatible = "mediatek,rtk-gsw";
|
||||
mediatek,ethsys = <ðsys>;
|
||||
mediatek,mdio = <&mdio>;
|
||||
mediatek,reset-pin = <&pio 54 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
proc-supply = <&mt6380_vcpu_reg>;
|
||||
sram-supply = <&mt6380_vm_reg>;
|
||||
};
|
||||
|
||||
&cpu1 {
|
||||
proc-supply = <&mt6380_vcpu_reg>;
|
||||
sram-supply = <&mt6380_vm_reg>;
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie0_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&slot0 {
|
||||
status = "okay";
|
||||
|
||||
wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
mediatek,mtd-eeprom = <&factory 0x5000>;
|
||||
ieee80211-freq-limit = <5000000 6000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&pio {
|
||||
eth_pins: eth-pins {
|
||||
mux {
|
||||
function = "eth";
|
||||
groups = "mdc_mdio", "rgmii_via_gmac2";
|
||||
};
|
||||
};
|
||||
|
||||
/* Parallel nand is shared pin with eMMC */
|
||||
parallel_nand_pins: parallel-nand-pins {
|
||||
mux {
|
||||
function = "flash";
|
||||
groups = "par_nand";
|
||||
};
|
||||
|
||||
conf-cmd-dat {
|
||||
pins = "NCEB", "NWEB", "NREB",
|
||||
"NDL4", "NDL5", "NDL6",
|
||||
"NDL7", "NRB", "NCLE",
|
||||
"NALE", "NDL0", "NDL1",
|
||||
"NDL2", "NDL3";
|
||||
input-enable;
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
pcie0_pins: pcie0-pins {
|
||||
mux {
|
||||
function = "pcie";
|
||||
groups = "pcie0_pad_perst",
|
||||
"pcie0_1_waken",
|
||||
"pcie0_1_clkreq";
|
||||
};
|
||||
};
|
||||
|
||||
pmic_bus_pins: pmic-bus-pins {
|
||||
mux {
|
||||
function = "pmic";
|
||||
groups = "pmic_bus";
|
||||
};
|
||||
};
|
||||
|
||||
pwm7_pins: pwm1-2-pins {
|
||||
mux {
|
||||
function = "pwm";
|
||||
groups = "pwm_ch7_2";
|
||||
};
|
||||
};
|
||||
|
||||
uart0_pins: uart0-pins {
|
||||
mux {
|
||||
function = "uart";
|
||||
groups = "uart0_0_tx_rx" ;
|
||||
};
|
||||
};
|
||||
|
||||
watchdog_pins: watchdog-pins {
|
||||
mux {
|
||||
function = "watchdog";
|
||||
groups = "watchdog";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&bch {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ð {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <ð_pins>;
|
||||
status = "okay";
|
||||
|
||||
gmac0: mac@0 {
|
||||
compatible = "mediatek,eth-mac";
|
||||
reg = <0>;
|
||||
|
||||
phy-connection-type = "2500base-x";
|
||||
|
||||
mtd-mac-address = <&factory 0x4>;
|
||||
mtd-mac-address-increment = <(-1)>;
|
||||
|
||||
fixed-link {
|
||||
speed = <2500>;
|
||||
full-duplex;
|
||||
pause;
|
||||
};
|
||||
};
|
||||
|
||||
mdio: mdio-bus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&nandc {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <¶llel_nand_pins>;
|
||||
status = "okay";
|
||||
|
||||
nand@0 {
|
||||
reg = <0>;
|
||||
nand-ecc-mode = "hw";
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "Preloader";
|
||||
reg = <0x0 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@80000 {
|
||||
label = "ATF";
|
||||
reg = <0x80000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@c0000 {
|
||||
label = "Bootloader";
|
||||
reg = <0xc0000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@140000 {
|
||||
label = "Config";
|
||||
reg = <0x140000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
factory: partition@1c0000 {
|
||||
label = "factory";
|
||||
reg = <0x1c0000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@200000 {
|
||||
compatible = "brcm,trx";
|
||||
trx-magic = <0x32504844>;
|
||||
label = "firmware";
|
||||
reg = <0x200000 0x3a00000>;
|
||||
};
|
||||
|
||||
partition@3C00000 {
|
||||
label = "Kernel2";
|
||||
reg = <0x3c00000 0x3a00000>;
|
||||
};
|
||||
|
||||
partition@7600000 {
|
||||
label = "glbcfg";
|
||||
reg = <0x7600000 0x200000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@7800000 {
|
||||
label = "board_data";
|
||||
reg = <0x7800000 0x200000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pwm {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm7_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwrap {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_bus_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&watchdog {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&watchdog_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wmac {
|
||||
status = "okay";
|
||||
|
||||
mediatek,mtd-eeprom = <&factory 0x0>;
|
||||
};
|
||||
|
||||
&rtc {
|
||||
status = "disabled";
|
||||
};
|
||||
@ -6,6 +6,28 @@ else
|
||||
KERNEL_LOADADDR := 0x44000000
|
||||
endif
|
||||
|
||||
define Image/Prepare
|
||||
# For UBI we want only one extra block
|
||||
rm -f $(KDIR)/ubi_mark
|
||||
echo -ne '\xde\xad\xc0\xde' > $(KDIR)/ubi_mark
|
||||
endef
|
||||
|
||||
define Build/buffalo-kernel-trx
|
||||
$(eval magic=$(word 1,$(1)))
|
||||
$(eval dummy=$(word 2,$(1)))
|
||||
$(eval kern_size=$(if $(KERNEL_SIZE),$(KERNEL_SIZE),0x400000))
|
||||
|
||||
$(if $(dummy),touch $(dummy))
|
||||
$(STAGING_DIR_HOST)/bin/otrx create $@.new \
|
||||
$(if $(magic),-M $(magic),) \
|
||||
-f $@ \
|
||||
$(if $(dummy),\
|
||||
-a 0x20000 \
|
||||
-b $$(( $(subst k, * 1024,$(kern_size)) )) \
|
||||
-f $(dummy),)
|
||||
mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/bl2
|
||||
cat $(STAGING_DIR_IMAGE)/mt7622-$1-bl2.img >> $@
|
||||
endef
|
||||
@ -15,35 +37,43 @@ define Build/bl31-uboot
|
||||
endef
|
||||
|
||||
define Build/mt7622-gpt
|
||||
cp $@ $@.tmp || true
|
||||
cp $@ $@.tmp 2>/dev/null || true
|
||||
ptgen -g -o $@.tmp -a 1 -l 1024 \
|
||||
$(if $(findstring sdmmc,$1), \
|
||||
-H \
|
||||
-t 0x83 -N bl2 -r -p 512k@512k \
|
||||
-t 0x83 -N bl2 -r -p 512k@512k \
|
||||
) \
|
||||
-t 0xef -N fip -r -p 1M@2M \
|
||||
-t 0x83 -N ubootenv -r -p 1M@4M \
|
||||
-N recovery -r -p 32M@6M \
|
||||
-t 0xef -N fip -r -p 1M@2M \
|
||||
-t 0x83 -N ubootenv -r -p 1M@4M \
|
||||
-N recovery -r -p 32M@6M \
|
||||
$(if $(findstring sdmmc,$1), \
|
||||
-t 0x2e -N production -p 216M@40M \
|
||||
-t 0x2e -N production -p 216M@40M \
|
||||
) \
|
||||
$(if $(findstring emmc,$1), \
|
||||
-t 0x2e -N production -p 980M@40M \
|
||||
-t 0x2e -N production -p 980M@40M \
|
||||
)
|
||||
cat $@.tmp >> $@
|
||||
rm $@.tmp
|
||||
endef
|
||||
|
||||
define Build/trx-nand
|
||||
# kernel: always use 4 MiB (-28 B or TRX header) to allow upgrades even
|
||||
# if it grows up between releases
|
||||
# root: UBI with one extra block containing UBI mark to trigger erasing
|
||||
# rest of partition
|
||||
$(STAGING_DIR_HOST)/bin/otrx create $@.new \
|
||||
-M 0x32504844 \
|
||||
-f $(IMAGE_KERNEL) -a 0x20000 -b 0x400000 \
|
||||
-f $@ \
|
||||
-A $(KDIR)/ubi_mark -a 0x20000
|
||||
mv $@.new $@
|
||||
endef
|
||||
|
||||
define Device/bananapi_bpi-r64
|
||||
DEVICE_VENDOR := Bananapi
|
||||
DEVICE_MODEL := BPi-R64
|
||||
DEVICE_DTS := mt7622-bananapi-bpi-r64
|
||||
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \
|
||||
kmod-mt7615e kmod-mt7615-firmware \
|
||||
uboot-mt7622_bananapi_bpi-r64-emmc \
|
||||
uboot-mt7622_bananapi_bpi-r64-sdmmc \
|
||||
e2fsprogs mkf2fs f2fsck \
|
||||
kmod-nls-cp437 kmod-nls-iso8859-1 kmod-vfat blockd
|
||||
DEVICE_PACKAGES := kmod-ata-ahci-mtk kmod-btmtkuart kmod-usb3 e2fsprogs mkf2fs f2fsck
|
||||
ARTIFACTS := sdcard.img
|
||||
IMAGES := sysupgrade.itb
|
||||
KERNEL_INITRAMFS_SUFFIX := -recovery.itb
|
||||
@ -56,13 +86,41 @@ define Device/bananapi_bpi-r64
|
||||
endef
|
||||
TARGET_DEVICES += bananapi_bpi-r64
|
||||
|
||||
define Device/buffalo_wsr-2533dhp2
|
||||
DEVICE_VENDOR := Buffalo
|
||||
DEVICE_MODEL := WSR-2533DHP2
|
||||
DEVICE_DTS := mt7622-buffalo-wsr-2533dhp2
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
IMAGE_SIZE := 59392k
|
||||
KERNEL_SIZE := 4096k
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
SUBPAGESIZE := 512
|
||||
UBINIZE_OPTS := -E 5
|
||||
BUFFALO_TAG_PLATFORM := MTK
|
||||
BUFFALO_TAG_VERSION := 9.99
|
||||
BUFFALO_TAG_MINOR := 9.99
|
||||
IMAGES += factory.bin factory-uboot.bin
|
||||
KERNEL_INITRAMFS := kernel-bin | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | \
|
||||
buffalo-kernel-trx
|
||||
IMAGE/factory.bin := append-ubi | trx-nand | \
|
||||
buffalo-enc WSR-2533DHP2 $$(BUFFALO_TAG_VERSION) -l | \
|
||||
buffalo-tag-dhp WSR-2533DHP2 JP JP | buffalo-enc-tag -l | buffalo-dhp-image
|
||||
IMAGE/factory-uboot.bin := append-ubi | trx-nand
|
||||
IMAGE/sysupgrade.bin := append-kernel | \
|
||||
buffalo-kernel-trx 0x32504844 $(KDIR)/tmp/$$(DEVICE_NAME).null | \
|
||||
sysupgrade-tar kernel=$$$$@ | append-metadata
|
||||
DEVICE_PACKAGES := swconfig
|
||||
endef
|
||||
TARGET_DEVICES += buffalo_wsr-2533dhp2
|
||||
|
||||
define Device/elecom_wrc-2533gent
|
||||
DEVICE_VENDOR := Elecom
|
||||
DEVICE_MODEL := WRC-2533GENT
|
||||
DEVICE_DTS := mt7622-elecom-wrc-2533gent
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-mt7615e \
|
||||
kmod-mt7615-firmware kmod-btmtkuart swconfig
|
||||
DEVICE_PACKAGES := kmod-btmtkuart kmod-usb3 swconfig
|
||||
endef
|
||||
TARGET_DEVICES += elecom_wrc-2533gent
|
||||
|
||||
@ -73,8 +131,7 @@ define Device/linksys_e8450
|
||||
DEVICE_ALT0_MODEL := RT3200
|
||||
DEVICE_DTS := mt7622-linksys-e8450
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \
|
||||
kmod-mt7615e kmod-mt7615-firmware kmod-mt7915e
|
||||
DEVICE_PACKAGES := kmod-mt7915e kmod-usb3
|
||||
endef
|
||||
TARGET_DEVICES += linksys_e8450
|
||||
|
||||
@ -87,6 +144,7 @@ define Device/linksys_e8450-ubi
|
||||
DEVICE_ALT0_VARIANT := UBI
|
||||
DEVICE_DTS := mt7622-linksys-e8450-ubi
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_PACKAGES := kmod-mt7915e kmod-usb3
|
||||
UBINIZE_OPTS := -E 5
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
@ -99,9 +157,6 @@ define Device/linksys_e8450-ubi
|
||||
KERNEL_INITRAMFS_SUFFIX := -recovery.itb
|
||||
IMAGES := sysupgrade.itb
|
||||
IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
|
||||
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \
|
||||
kmod-mt7615e kmod-mt7615-firmware kmod-mt7915e \
|
||||
u-boot-mt7622_linksys_e8450 uboot-envtools
|
||||
ARTIFACTS := preloader.bin bl31-uboot.fip
|
||||
ARTIFACT/preloader.bin := bl2 snand-1ddr
|
||||
ARTIFACT/bl31-uboot.fip := bl31-uboot linksys_e8450
|
||||
@ -112,7 +167,7 @@ define Device/mediatek_mt7622-rfb1
|
||||
DEVICE_VENDOR := MediaTek
|
||||
DEVICE_MODEL := MTK7622 rfb1 AP
|
||||
DEVICE_DTS := mt7622-rfb1
|
||||
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk
|
||||
DEVICE_PACKAGES := kmod-ata-ahci-mtk kmod-btmtkuart kmod-usb3
|
||||
endef
|
||||
TARGET_DEVICES += mediatek_mt7622-rfb1
|
||||
|
||||
@ -121,6 +176,7 @@ define Device/mediatek_mt7622-rfb1-ubi
|
||||
DEVICE_MODEL := MTK7622 rfb1 AP (UBI)
|
||||
DEVICE_DTS := mt7622-rfb1-ubi
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_PACKAGES := kmod-ata-ahci-mtk kmod-btmtkuart kmod-usb3
|
||||
UBINIZE_OPTS := -E 5
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
@ -130,7 +186,6 @@ define Device/mediatek_mt7622-rfb1-ubi
|
||||
IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \
|
||||
check-size $$$$(IMAGE_SIZE)
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk
|
||||
endef
|
||||
TARGET_DEVICES += mediatek_mt7622-rfb1-ubi
|
||||
|
||||
|
||||
@ -14,6 +14,10 @@ mediatek_setup_interfaces()
|
||||
mediatek,mt7622-rfb1)
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" wan
|
||||
;;
|
||||
buffalo,wsr-2533dhp2)
|
||||
ucidef_add_switch "switch0" \
|
||||
"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6@eth0"
|
||||
;;
|
||||
ubnt,unifi-6-lr)
|
||||
ucidef_set_interfaces_lan "eth0"
|
||||
;;
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
. /lib/functions.sh
|
||||
|
||||
kernel_size=$(sed -n 's/mtd[0-9]*: \([0-9a-f]*\).*"\(kernel\|linux\)".*/\1/p' /proc/mtd)
|
||||
|
||||
case "$(board_name)" in
|
||||
buffalo,wsr-2533dhp2)
|
||||
mtd -M 0x44485032 ${kernel_size:+-c 0x$kernel_size} fixtrx firmware && exit 0
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
126
target/linux/mediatek/mt7622/base-files/lib/upgrade/buffalo.sh
Normal file
126
target/linux/mediatek/mt7622/base-files/lib/upgrade/buffalo.sh
Normal file
@ -0,0 +1,126 @@
|
||||
# ======== dev note ========
|
||||
# for following buffalo MT7622 devices:
|
||||
#
|
||||
# - WSR-2533DHP2 (trx magic: "DHP2")
|
||||
# - WSR-2533DHP3 (trx magic: "DHP3")
|
||||
# - WSR-3200AX4S (trx magic: "DHP3")
|
||||
#
|
||||
# sysupgrade-tar image:
|
||||
#
|
||||
# This is for normal upgrading for OpenWrt.
|
||||
# use nand_do_upgrade with CI_KERNPART="firmware"
|
||||
#
|
||||
# - if the size of new kernel is not equal with the current kernel's
|
||||
# -> block upgrade and print a message about using TRX + UBI
|
||||
# formatted image
|
||||
# (should be flashed the new ubi contains rootfs + rootfs_data
|
||||
# with the offset (=new padded kernel's end) if this case? But
|
||||
# it maybe too hard for writing scripts...)
|
||||
#
|
||||
# TRX + UBI formatted image:
|
||||
#
|
||||
# This is for upgrading if the new kernel is larger than the
|
||||
# current kernel.
|
||||
#
|
||||
# ex:
|
||||
# - stock firmware is installed in the flash and booted with
|
||||
# OpenWrt initramfs image
|
||||
# - kernel partition is increased from 4MiB in OpenWrt in the
|
||||
# future
|
||||
#
|
||||
# packing TRX + UBI formatted image by tar is needed for image validation
|
||||
# with the metadata in the future?
|
||||
# ====== dev note end ======
|
||||
#
|
||||
# The mtd partitions "firmware" and "Kernel2" on NAND flash are os-image
|
||||
# partitions. These partitions are called as "Image1/Image2" in U-Boot
|
||||
# on WSR-2533DHP2, and they are checked conditions when booting.
|
||||
# "Image1" is always used for booting.
|
||||
#
|
||||
# == U-Boot Behaviors ==
|
||||
# - "Image1"/"Image2" images are good, images are different or
|
||||
# "Image2" image is broken
|
||||
# -> writes os-image to "Image2" from "Image1"
|
||||
#
|
||||
# - "Image1" image is broken
|
||||
# -> writes os-image to "Image1" from "Image2"
|
||||
#
|
||||
# - "Image1"/"Image2" images are broken
|
||||
# -> fall to U-Boot command line
|
||||
|
||||
buffalo_check_image() {
|
||||
local board="$1"
|
||||
local boardname="$(echo $board | tr ',' '_')"
|
||||
local magic="$2"
|
||||
local fw_image="$3"
|
||||
|
||||
# return error state if TRX + UBI formatted image specified
|
||||
# to notify about configurations
|
||||
if [ "$magic" = "44485032" -o "$magic" = "44485033" ]; then
|
||||
echo "Your configurations won't be saved if factory-uboot.bin image specified."
|
||||
echo "But if you want to upgrade, please execute sysupgrade with \"-F\" option."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check if valid tar file specifed
|
||||
if ! tar tf "$fw_image" &>/dev/null; then
|
||||
echo "Specified file is not a tar archive: $fw_image"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local control_len=$( (tar xf $fw_image sysupgrade-$boardname/CONTROL -O | wc -c) 2> /dev/null)
|
||||
|
||||
# check if valid sysupgrade tar archive
|
||||
if [ "$control_len" = "0" ]; then
|
||||
echo "Invalid sysupgrade file: $fw_image"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local kern_part_len=$(grep "\"linux\"" /proc/mtd | sed "s/mtd[0-9]*:[ \t]*\([^ \t]*\).*/\1/")
|
||||
[ -z "$kern_part_len" ] && {
|
||||
echo "Unable to get \"linux\" partition size"
|
||||
return 1
|
||||
}
|
||||
kern_part_len=$((0x$kern_part_len))
|
||||
|
||||
# this also checks if the sysupgrade image is for correct models
|
||||
local kern_bin_len=$( (tar xf $fw_image sysupgrade-${boardname}/kernel -O | wc -c) 2> /dev/null)
|
||||
if [ -z "$kern_bin_len" ]; then
|
||||
echo "Failed to get new kernel size, is valid sysupgrade image specified for the device?"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# kernel binary has a trx header (len: 28 (0x1c))
|
||||
kern_bin_len=$((kern_bin_len - 28))
|
||||
|
||||
if [ "$kern_bin_len" != "$kern_part_len" ]; then
|
||||
echo -n "The length of new kernel is invalid for current "
|
||||
echo "\"linux\" partition, please use factory-uboot.bin image."
|
||||
echo "\"linux\" partition: $kern_part_len, new kernel: $kern_bin_len"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# for TRX + UBI formatted image
|
||||
buffalo_upgrade_ubinized() {
|
||||
sync
|
||||
echo 3 > /proc/sys/vm/drop_caches
|
||||
|
||||
local mtdnum="$( find_mtd_index "ubi" )"
|
||||
# if no "ubi", don't return error for the purpose of recovery
|
||||
# ex: recovery after accidental erasing "firmware" partition
|
||||
if [ ! "$mtdnum" ]; then
|
||||
echo "cannot find ubi mtd partition \"ubi\", skip detachment"
|
||||
else
|
||||
ubidetach -m "$mtdnum"
|
||||
fi
|
||||
|
||||
# erase all data in "firmware"
|
||||
mtd erase "${PART_NAME}"
|
||||
# write TRX + UBI formatted image to "firmware"
|
||||
get_image "$1" | mtd $MTD_ARGS write - "${PART_NAME:-firmware}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to write the specified image."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
@ -56,6 +56,18 @@ platform_do_upgrade() {
|
||||
get_image "$1" | dd of=/dev/$fitpart
|
||||
echo $rootdev > /tmp/sysupgrade.rootdev
|
||||
;;
|
||||
buffalo,wsr-2533dhp2)
|
||||
local magic="$(get_magic_long "$1")"
|
||||
|
||||
# use "mtd write" if the magic is "DHP2 (0x44485032)"
|
||||
# or "DHP3 (0x44485033)"
|
||||
if [ "$magic" = "44485032" -o "$magic" = "44485033" ]; then
|
||||
buffalo_upgrade_ubinized "$1"
|
||||
else
|
||||
CI_KERNPART="firmware"
|
||||
nand_do_upgrade "$1"
|
||||
fi
|
||||
;;
|
||||
linksys,e8450-ubi|\
|
||||
mediatek,mt7622,ubi)
|
||||
CI_KERNPART="fit"
|
||||
@ -84,6 +96,9 @@ platform_check_image() {
|
||||
[ "$#" -gt 1 ] && return 1
|
||||
|
||||
case "$board" in
|
||||
buffalo,wsr-2533dhp2)
|
||||
buffalo_check_image "$board" "$magic" "$1" || return 1
|
||||
;;
|
||||
*)
|
||||
[ "$magic" != "d00dfeed" ] && {
|
||||
echo "Invalid image type."
|
||||
|
||||
@ -247,6 +247,7 @@ CONFIG_MTD_NAND_MTK_BMT=y
|
||||
CONFIG_MTD_RAW_NAND=y
|
||||
CONFIG_MTD_SPI_NAND=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_PARSER_TRX=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MTD_SPLIT_FIT_FW=y
|
||||
CONFIG_MTD_UBI=y
|
||||
|
||||
@ -0,0 +1,75 @@
|
||||
From 0600e3d81628002a5cd80cf83ee454851b0063c0 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Sun, 7 Mar 2021 18:19:26 +0100
|
||||
Subject: mtd: parsers: trx: Allow to specify trx-magic in DT
|
||||
|
||||
Buffalo uses a different TRX magic for every device, to be able to use
|
||||
this trx parser, make it possible to specify the TRX magic in device
|
||||
tree. If no TRX magic is specified in device tree, the standard value
|
||||
will be used. This value should only be specified if a vendor chooses to
|
||||
use a non standard TRX magic.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
.../bindings/mtd/partitions/brcm,trx.txt | 5 +++++
|
||||
drivers/mtd/parsers/parser_trx.c | 21 ++++++++++++++++++-
|
||||
2 files changed, 25 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
|
||||
+++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
|
||||
@@ -28,6 +28,11 @@ detected by a software parsing TRX heade
|
||||
Required properties:
|
||||
- compatible : (required) must be "brcm,trx"
|
||||
|
||||
+Optional properties:
|
||||
+
|
||||
+- trx-magic: TRX magic, if it is different from the default magic
|
||||
+ 0x30524448 as a u32.
|
||||
+
|
||||
Example:
|
||||
|
||||
flash@0 {
|
||||
--- a/drivers/mtd/parsers/parser_trx.c
|
||||
+++ b/drivers/mtd/parsers/parser_trx.c
|
||||
@@ -74,6 +74,24 @@ out_default:
|
||||
return "rootfs";
|
||||
}
|
||||
|
||||
+static uint32_t parser_trx_get_magic(struct mtd_info *mtd)
|
||||
+{
|
||||
+ uint32_t trx_magic = TRX_MAGIC;
|
||||
+ struct device_node *np;
|
||||
+ int err;
|
||||
+
|
||||
+ np = mtd_get_of_node(mtd);
|
||||
+ if (!np)
|
||||
+ return trx_magic;
|
||||
+
|
||||
+ /* Get different magic from device tree if specified */
|
||||
+ err = of_property_read_u32(np, "trx-magic", &trx_magic);
|
||||
+ if (err != 0 && err != -EINVAL)
|
||||
+ pr_err("failed to parse \"trx-magic\" DT attribute, use default: %d\n", err);
|
||||
+
|
||||
+ return trx_magic;
|
||||
+}
|
||||
+
|
||||
static int parser_trx_parse(struct mtd_info *mtd,
|
||||
const struct mtd_partition **pparts,
|
||||
struct mtd_part_parser_data *data)
|
||||
@@ -83,6 +101,7 @@ static int parser_trx_parse(struct mtd_i
|
||||
struct trx_header trx;
|
||||
size_t bytes_read;
|
||||
uint8_t curr_part = 0, i = 0;
|
||||
+ uint32_t trx_magic = parser_trx_get_magic(mtd);
|
||||
int err;
|
||||
|
||||
parts = kcalloc(TRX_PARSER_MAX_PARTS, sizeof(struct mtd_partition),
|
||||
@@ -97,7 +116,7 @@ static int parser_trx_parse(struct mtd_i
|
||||
return err;
|
||||
}
|
||||
|
||||
- if (trx.magic != TRX_MAGIC) {
|
||||
+ if (trx.magic != trx_magic) {
|
||||
kfree(parts);
|
||||
return -ENOENT;
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
From 63f0cf88ab5461acb0911252f12bb94ee3bf05a2 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Sun, 7 Mar 2021 18:23:29 +0100
|
||||
Subject: mtd: parsers: Remove dependency to BRCM architectures
|
||||
|
||||
Buffalo uses the TRX partition format also on Mediatek SoCs.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
drivers/mtd/parsers/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/mtd/parsers/Kconfig
|
||||
+++ b/drivers/mtd/parsers/Kconfig
|
||||
@@ -121,7 +121,7 @@ config MTD_AFS_PARTS
|
||||
|
||||
config MTD_PARSER_TRX
|
||||
tristate "Parser for TRX format partitions"
|
||||
- depends on MTD && (BCM47XX || ARCH_BCM_5301X || COMPILE_TEST)
|
||||
+ depends on MTD
|
||||
help
|
||||
TRX is a firmware format used by Broadcom on their devices. It
|
||||
may contain up to 3/4 partitions (depending on the version).
|
||||
@ -0,0 +1,36 @@
|
||||
From 4a4854761c9dedeedbf72c25d1317ab2e7600d4f Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Mon, 8 Mar 2021 23:16:17 +0100
|
||||
Subject: [PATCH] mtd: rawnand: mtk: Fix WAITRDY break condition and timeout
|
||||
|
||||
This fixes NAND_OP_WAITRDY_INSTR operation in the driver. Without this
|
||||
change the driver waits till the system is busy, but we should wait till
|
||||
the busy flag is cleared. The readl_poll_timeout() function gets a break
|
||||
condition, not a wait condition.
|
||||
|
||||
In addition fix the timeout. The timeout_ms is given in ms, but the
|
||||
readl_poll_timeout() function takes the timeout in us. Multiple the
|
||||
given timeout by 1000 to convert it.
|
||||
|
||||
Without this change, the driver does not work at all, it doesn't even
|
||||
identify the NAND chip.
|
||||
|
||||
Fixes: 5197360f9e09 ("mtd: rawnand: mtk: Convert the driver to exec_op()")
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
drivers/mtd/nand/raw/mtk_nand.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/nand/raw/mtk_nand.c
|
||||
+++ b/drivers/mtd/nand/raw/mtk_nand.c
|
||||
@@ -488,8 +488,8 @@ static int mtk_nfc_exec_instr(struct nan
|
||||
return 0;
|
||||
case NAND_OP_WAITRDY_INSTR:
|
||||
return readl_poll_timeout(nfc->regs + NFI_STA, status,
|
||||
- status & STA_BUSY, 20,
|
||||
- instr->ctx.waitrdy.timeout_ms);
|
||||
+ !(status & STA_BUSY), 20,
|
||||
+ instr->ctx.waitrdy.timeout_ms * 1000);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
From 0600e3d81628002a5cd80cf83ee454851b0063c0 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Sun, 7 Mar 2021 18:19:26 +0100
|
||||
Subject: mtd: parsers: trx: Allow to specify trx-magic in DT
|
||||
|
||||
Buffalo uses a different TRX magic for every device, to be able to use
|
||||
this trx parser, make it possible to specify the TRX magic in device
|
||||
tree. If no TRX magic is specified in device tree, the standard value
|
||||
will be used. This value should only be specified if a vendor chooses to
|
||||
use a non standard TRX magic.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
.../bindings/mtd/partitions/brcm,trx.txt | 5 +++++
|
||||
drivers/mtd/parsers/parser_trx.c | 21 ++++++++++++++++++-
|
||||
2 files changed, 25 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
|
||||
+++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
|
||||
@@ -28,6 +28,11 @@ detected by a software parsing TRX heade
|
||||
Required properties:
|
||||
- compatible : (required) must be "brcm,trx"
|
||||
|
||||
+Optional properties:
|
||||
+
|
||||
+- trx-magic: TRX magic, if it is different from the default magic
|
||||
+ 0x30524448 as a u32.
|
||||
+
|
||||
Example:
|
||||
|
||||
flash@0 {
|
||||
--- a/drivers/mtd/parsers/parser_trx.c
|
||||
+++ b/drivers/mtd/parsers/parser_trx.c
|
||||
@@ -74,6 +74,24 @@ out_default:
|
||||
return "rootfs";
|
||||
}
|
||||
|
||||
+static uint32_t parser_trx_get_magic(struct mtd_info *mtd)
|
||||
+{
|
||||
+ uint32_t trx_magic = TRX_MAGIC;
|
||||
+ struct device_node *np;
|
||||
+ int err;
|
||||
+
|
||||
+ np = mtd_get_of_node(mtd);
|
||||
+ if (!np)
|
||||
+ return trx_magic;
|
||||
+
|
||||
+ /* Get different magic from device tree if specified */
|
||||
+ err = of_property_read_u32(np, "trx-magic", &trx_magic);
|
||||
+ if (err != 0 && err != -EINVAL)
|
||||
+ pr_err("failed to parse \"trx-magic\" DT attribute, use default: %d\n", err);
|
||||
+
|
||||
+ return trx_magic;
|
||||
+}
|
||||
+
|
||||
static int parser_trx_parse(struct mtd_info *mtd,
|
||||
const struct mtd_partition **pparts,
|
||||
struct mtd_part_parser_data *data)
|
||||
@@ -83,6 +101,7 @@ static int parser_trx_parse(struct mtd_i
|
||||
struct trx_header trx;
|
||||
size_t bytes_read;
|
||||
uint8_t curr_part = 0, i = 0;
|
||||
+ uint32_t trx_magic = parser_trx_get_magic(mtd);
|
||||
int err;
|
||||
|
||||
parts = kcalloc(TRX_PARSER_MAX_PARTS, sizeof(struct mtd_partition),
|
||||
@@ -97,7 +116,7 @@ static int parser_trx_parse(struct mtd_i
|
||||
return err;
|
||||
}
|
||||
|
||||
- if (trx.magic != TRX_MAGIC) {
|
||||
+ if (trx.magic != trx_magic) {
|
||||
kfree(parts);
|
||||
return -ENOENT;
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
From 63f0cf88ab5461acb0911252f12bb94ee3bf05a2 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Sun, 7 Mar 2021 18:23:29 +0100
|
||||
Subject: mtd: parsers: Remove dependency to BRCM architectures
|
||||
|
||||
Buffalo uses the TRX partition format also on Mediatek SoCs.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
drivers/mtd/parsers/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/mtd/parsers/Kconfig
|
||||
+++ b/drivers/mtd/parsers/Kconfig
|
||||
@@ -121,7 +121,7 @@ config MTD_AFS_PARTS
|
||||
|
||||
config MTD_PARSER_TRX
|
||||
tristate "Parser for TRX format partitions"
|
||||
- depends on MTD && (BCM47XX || ARCH_BCM_5301X || COMPILE_TEST)
|
||||
+ depends on MTD
|
||||
help
|
||||
TRX is a firmware format used by Broadcom on their devices. It
|
||||
may contain up to 3/4 partitions (depending on the version).
|
||||
501
target/linux/x86/64/config-5.10
Normal file
501
target/linux/x86/64/config-5.10
Normal file
@ -0,0 +1,501 @@
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
# CONFIG_ACPI_BGRT is not set
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
# CONFIG_ACPI_CMPC is not set
|
||||
CONFIG_ACPI_CONTAINER=y
|
||||
CONFIG_ACPI_CPPC_LIB=y
|
||||
CONFIG_ACPI_CPU_FREQ_PSS=y
|
||||
# CONFIG_ACPI_DEBUG is not set
|
||||
# CONFIG_ACPI_DEBUGGER is not set
|
||||
# CONFIG_ACPI_DOCK is not set
|
||||
# CONFIG_ACPI_DPTF is not set
|
||||
# CONFIG_ACPI_EC_DEBUGFS is not set
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_HOTPLUG_CPU=y
|
||||
CONFIG_ACPI_HOTPLUG_IOAPIC=y
|
||||
# CONFIG_ACPI_I2C_OPREGION is not set
|
||||
CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
|
||||
CONFIG_ACPI_LPIT=y
|
||||
# CONFIG_ACPI_PCI_SLOT is not set
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
|
||||
CONFIG_ACPI_PROCESSOR_CSTATE=y
|
||||
CONFIG_ACPI_PROCESSOR_IDLE=y
|
||||
CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
|
||||
# CONFIG_ACPI_SBS is not set
|
||||
CONFIG_ACPI_SPCR_TABLE=y
|
||||
CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
|
||||
# CONFIG_ACPI_TAD is not set
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_ACPI_VIDEO=y
|
||||
# CONFIG_ACPI_WMI is not set
|
||||
# CONFIG_ACRN_GUEST is not set
|
||||
CONFIG_AGP=y
|
||||
# CONFIG_AGP_AMD64 is not set
|
||||
CONFIG_AGP_INTEL=y
|
||||
# CONFIG_AGP_SIS is not set
|
||||
# CONFIG_AGP_VIA is not set
|
||||
CONFIG_ARCH_CPUIDLE_HALTPOLL=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=28
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=32
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=28
|
||||
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
||||
CONFIG_ARCH_WANTS_THP_SWAP=y
|
||||
CONFIG_AUDIT_ARCH=y
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_BALLOON_COMPACTION=y
|
||||
CONFIG_BLK_DEV_INTEGRITY=y
|
||||
CONFIG_BLK_DEV_INTEGRITY_T10=y
|
||||
CONFIG_BLK_DEV_NVME=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_BLK_MQ_VIRTIO=y
|
||||
CONFIG_BLK_PM=y
|
||||
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
|
||||
CONFIG_BTT=y
|
||||
CONFIG_CDROM=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_AES_NI_INTEL=y
|
||||
# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set
|
||||
# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set
|
||||
# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set
|
||||
CONFIG_CRYPTO_CRCT10DIF=y
|
||||
# CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set
|
||||
CONFIG_CRYPTO_CRYPTD=y
|
||||
# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
CONFIG_CRYPTO_GF128MUL=y
|
||||
CONFIG_CRYPTO_GLUE_HELPER_X86=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
|
||||
CONFIG_CRYPTO_LRW=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
# CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set
|
||||
# CONFIG_CRYPTO_NHPOLY1305_SSE2 is not set
|
||||
CONFIG_CRYPTO_NULL2=y
|
||||
# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
|
||||
# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set
|
||||
# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
|
||||
# CONFIG_CRYPTO_SHA1_SSSE3 is not set
|
||||
# CONFIG_CRYPTO_SHA256_SSSE3 is not set
|
||||
# CONFIG_CRYPTO_SHA512_SSSE3 is not set
|
||||
CONFIG_CRYPTO_SIMD=y
|
||||
# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set
|
||||
# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
|
||||
# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set
|
||||
CONFIG_CRYPTO_XTS=y
|
||||
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
|
||||
CONFIG_DMA_ACPI=y
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_BOCHS=y
|
||||
CONFIG_DRM_BRIDGE=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||
CONFIG_DRM_GEM_SHMEM_HELPER=y
|
||||
CONFIG_DRM_I915=y
|
||||
CONFIG_DRM_I915_CAPTURE_ERROR=y
|
||||
CONFIG_DRM_I915_COMPRESS_ERROR=y
|
||||
# CONFIG_DRM_I915_DEBUG is not set
|
||||
# CONFIG_DRM_I915_DEBUG_GUC is not set
|
||||
# CONFIG_DRM_I915_DEBUG_MMIO is not set
|
||||
# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set
|
||||
# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
|
||||
CONFIG_DRM_I915_FENCE_TIMEOUT=10000
|
||||
CONFIG_DRM_I915_FORCE_PROBE=""
|
||||
CONFIG_DRM_I915_GVT=y
|
||||
CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
|
||||
# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
|
||||
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
|
||||
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
|
||||
# CONFIG_DRM_I915_SELFTEST is not set
|
||||
CONFIG_DRM_I915_STOP_TIMEOUT=100
|
||||
# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set
|
||||
# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set
|
||||
CONFIG_DRM_I915_TIMESLICE_DURATION=1
|
||||
CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
|
||||
CONFIG_DRM_I915_USERPTR=y
|
||||
# CONFIG_DRM_I915_WERROR is not set
|
||||
CONFIG_DRM_KMS_FB_HELPER=y
|
||||
CONFIG_DRM_KMS_HELPER=y
|
||||
CONFIG_DRM_MIPI_DSI=y
|
||||
CONFIG_DRM_PANEL=y
|
||||
CONFIG_DRM_PANEL_BRIDGE=y
|
||||
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
|
||||
CONFIG_DRM_TTM=y
|
||||
CONFIG_DRM_TTM_DMA_PAGE_POOL=y
|
||||
CONFIG_DRM_TTM_HELPER=y
|
||||
CONFIG_DRM_VIRTIO_GPU=y
|
||||
CONFIG_DRM_VRAM_HELPER=y
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFIVAR_FS=m
|
||||
# CONFIG_EFI_BOOTLOADER_CONTROL is not set
|
||||
# CONFIG_EFI_CAPSULE_LOADER is not set
|
||||
# CONFIG_EFI_CUSTOM_SSDT_OVERLAYS is not set
|
||||
# CONFIG_EFI_DISABLE_PCI_DMA is not set
|
||||
CONFIG_EFI_EARLYCON=y
|
||||
CONFIG_EFI_ESRT=y
|
||||
# CONFIG_EFI_FAKE_MEMMAP is not set
|
||||
CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y
|
||||
# CONFIG_EFI_MIXED is not set
|
||||
# CONFIG_EFI_PGT_DUMP is not set
|
||||
# CONFIG_EFI_RCI2_TABLE is not set
|
||||
CONFIG_EFI_RUNTIME_MAP=y
|
||||
CONFIG_EFI_RUNTIME_WRAPPERS=y
|
||||
CONFIG_EFI_STUB=y
|
||||
# CONFIG_EFI_TEST is not set
|
||||
# CONFIG_EFI_VARS is not set
|
||||
CONFIG_FAILOVER=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_CMDLINE=y
|
||||
CONFIG_FB_DEFERRED_IO=y
|
||||
CONFIG_FB_EFI=y
|
||||
CONFIG_FB_HYPERV=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_FB_SIMPLE=y
|
||||
CONFIG_FB_SYS_COPYAREA=y
|
||||
CONFIG_FB_SYS_FILLRECT=y
|
||||
CONFIG_FB_SYS_FOPS=y
|
||||
CONFIG_FB_SYS_IMAGEBLIT=y
|
||||
CONFIG_FB_TILEBLITTING=y
|
||||
# CONFIG_FB_VESA is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_FREEZER=y
|
||||
CONFIG_FW_CACHE=y
|
||||
CONFIG_GART_IOMMU=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CPU=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_PENDING_IRQ=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_ACPI=y
|
||||
CONFIG_GPIO_ICH=y
|
||||
CONFIG_GPIO_SCH=y
|
||||
CONFIG_HALTPOLL_CPUIDLE=y
|
||||
CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y
|
||||
CONFIG_HDMI=y
|
||||
CONFIG_HIBERNATE_CALLBACKS=y
|
||||
CONFIG_HID_BATTERY_STRENGTH=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
CONFIG_HID_HYPERV_MOUSE=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_ACPI=y
|
||||
# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# CONFIG_HOTPLUG_PCI_PCIE is not set
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_HOTPLUG_SMT=y
|
||||
CONFIG_HPET=y
|
||||
CONFIG_HPET_MMAP=y
|
||||
# CONFIG_HP_ACCEL is not set
|
||||
CONFIG_HVC_DRIVER=y
|
||||
CONFIG_HVC_IRQ=y
|
||||
CONFIG_HVC_XEN=y
|
||||
CONFIG_HVC_XEN_FRONTEND=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HWMON_VID=y
|
||||
CONFIG_HW_RANDOM_AMD=y
|
||||
CONFIG_HW_RANDOM_INTEL=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=y
|
||||
CONFIG_HYPERV=y
|
||||
CONFIG_HYPERVISOR_GUEST=y
|
||||
CONFIG_HYPERV_BALLOON=y
|
||||
CONFIG_HYPERV_KEYBOARD=y
|
||||
CONFIG_HYPERV_NET=y
|
||||
CONFIG_HYPERV_STORAGE=y
|
||||
# CONFIG_HYPERV_TESTING is not set
|
||||
CONFIG_HYPERV_TIMER=y
|
||||
CONFIG_HYPERV_UTILS=y
|
||||
# CONFIG_HYPERV_VSOCKETS is not set
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_AMD_MP2 is not set
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
# CONFIG_I2C_MULTI_INSTANTIATE is not set
|
||||
# CONFIG_IA32_EMULATION is not set
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set
|
||||
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
|
||||
# CONFIG_INTEL_ATOMISP2_LED is not set
|
||||
CONFIG_INTEL_GTT=y
|
||||
CONFIG_INTEL_IDLE=y
|
||||
# CONFIG_INTEL_IDXD is not set
|
||||
# CONFIG_INTEL_INT0002_VGPIO is not set
|
||||
# CONFIG_INTEL_IPS is not set
|
||||
# CONFIG_INTEL_MEI_HDCP is not set
|
||||
# CONFIG_INTEL_MENLOW is not set
|
||||
CONFIG_INTEL_PCH_THERMAL=y
|
||||
# CONFIG_INTEL_SCU_PLATFORM is not set
|
||||
CONFIG_INTEL_SOC_DTS_IOSF_CORE=y
|
||||
CONFIG_INTEL_SOC_DTS_THERMAL=y
|
||||
# CONFIG_INTEL_SPEED_SELECT_INTERFACE is not set
|
||||
# CONFIG_INTEL_TURBO_MAX_3 is not set
|
||||
# CONFIG_INTEL_UNCORE_FREQ_CONTROL is not set
|
||||
CONFIG_INTERVAL_TREE=y
|
||||
# CONFIG_IOMMU_DEBUG is not set
|
||||
CONFIG_IOMMU_HELPER=y
|
||||
CONFIG_IOSF_MBI=y
|
||||
# CONFIG_IOSF_MBI_DEBUG is not set
|
||||
# CONFIG_ISCSI_IBFT is not set
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
|
||||
CONFIG_KCMP=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
# CONFIG_LEGACY_VSYSCALL_EMULATE is not set
|
||||
CONFIG_LEGACY_VSYSCALL_NONE=y
|
||||
# CONFIG_LEGACY_VSYSCALL_XONLY is not set
|
||||
CONFIG_LIBNVDIMM=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LPC_ICH=y
|
||||
CONFIG_LPC_SCH=y
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAXSMP is not set
|
||||
CONFIG_MEMORY_BALLOON=y
|
||||
CONFIG_MEMREGION=y
|
||||
CONFIG_MFD_CORE=y
|
||||
# CONFIG_MFD_INTEL_LPSS_ACPI is not set
|
||||
# CONFIG_MFD_INTEL_PMC_BXT is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_CQHCI=y
|
||||
CONFIG_MMC_RICOH_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_ACPI=y
|
||||
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
||||
CONFIG_MMC_SDHCI_PCI=y
|
||||
# CONFIG_MMC_SDHCI_PLTFM is not set
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
# CONFIG_MMC_WBSD is not set
|
||||
CONFIG_MMU_NOTIFIER=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
# CONFIG_MPSC is not set
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_ND_BLK=y
|
||||
CONFIG_ND_BTT=y
|
||||
CONFIG_ND_CLAIM=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NET_FAILOVER=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
# CONFIG_NITRO_ENCLAVES is not set
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_NR_CPUS_DEFAULT=64
|
||||
CONFIG_NR_CPUS_RANGE_BEGIN=2
|
||||
CONFIG_NR_CPUS_RANGE_END=512
|
||||
CONFIG_NVME_CORE=y
|
||||
# CONFIG_NVME_HWMON is not set
|
||||
CONFIG_NVME_MULTIPATH=y
|
||||
# CONFIG_NVME_TCP is not set
|
||||
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_POOL=y
|
||||
CONFIG_PAGE_REPORTING=y
|
||||
CONFIG_PAGE_TABLE_ISOLATION=y
|
||||
CONFIG_PARAVIRT=y
|
||||
CONFIG_PARAVIRT_CLOCK=y
|
||||
# CONFIG_PARAVIRT_DEBUG is not set
|
||||
CONFIG_PARAVIRT_SPINLOCKS=y
|
||||
CONFIG_PARAVIRT_XXL=y
|
||||
CONFIG_PATA_AMD=y
|
||||
CONFIG_PATA_ATIIXP=y
|
||||
CONFIG_PATA_MPIIX=y
|
||||
CONFIG_PATA_OLDPIIX=y
|
||||
CONFIG_PATA_PLATFORM=y
|
||||
CONFIG_PATA_TIMINGS=y
|
||||
CONFIG_PATA_VIA=y
|
||||
CONFIG_PCC=y
|
||||
# CONFIG_PCENGINES_APU2 is not set
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_PME=y
|
||||
CONFIG_PCI_HYPERV=y
|
||||
CONFIG_PCI_HYPERV_INTERFACE=y
|
||||
# CONFIG_PCI_MMCONFIG is not set
|
||||
CONFIG_PCI_XEN=y
|
||||
CONFIG_PGTABLE_LEVELS=4
|
||||
CONFIG_PHYSICAL_ALIGN=0x1000000
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PINCTRL=y
|
||||
# CONFIG_PINCTRL_BAYTRAIL is not set
|
||||
# CONFIG_PINCTRL_BROXTON is not set
|
||||
# CONFIG_PINCTRL_CANNONLAKE is not set
|
||||
# CONFIG_PINCTRL_CHERRYVIEW is not set
|
||||
# CONFIG_PINCTRL_DENVERTON is not set
|
||||
# CONFIG_PINCTRL_EMMITSBURG is not set
|
||||
# CONFIG_PINCTRL_GEMINILAKE is not set
|
||||
# CONFIG_PINCTRL_JASPERLAKE is not set
|
||||
# CONFIG_PINCTRL_LEWISBURG is not set
|
||||
# CONFIG_PINCTRL_LYNXPOINT is not set
|
||||
# CONFIG_PINCTRL_SUNRISEPOINT is not set
|
||||
# CONFIG_PINCTRL_TIGERLAKE is not set
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PMIC_OPREGION is not set
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_PM_SLEEP_SMP=y
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PNPACPI=y
|
||||
CONFIG_PNP_DEBUG_MESSAGES=y
|
||||
CONFIG_PROC_EVENTS=y
|
||||
CONFIG_PVH=y
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_RCU_STALL_COMMON=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_RESET_ATTACK_MITIGATION=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
# CONFIG_SAMSUNG_Q10 is not set
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCHED_MC_PRIO=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_SCSI_VIRTIO=y
|
||||
# CONFIG_SENSORS_AMD_ENERGY is not set
|
||||
CONFIG_SENSORS_CORETEMP=y
|
||||
CONFIG_SENSORS_FAM15H_POWER=y
|
||||
CONFIG_SENSORS_I5500=y
|
||||
CONFIG_SENSORS_K10TEMP=y
|
||||
CONFIG_SENSORS_K8TEMP=y
|
||||
CONFIG_SENSORS_VIA_CPUTEMP=y
|
||||
CONFIG_SERIAL_8250_PNP=y
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_STACK_VALIDATION=y
|
||||
# CONFIG_SURFACE_3_POWER_OPREGION is not set
|
||||
# CONFIG_SURFACE_PRO3_BUTTON is not set
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWIOTLB_XEN=y
|
||||
CONFIG_SYNC_FILE=y
|
||||
# CONFIG_SYSTEM76_ACPI is not set
|
||||
CONFIG_SYS_HYPERVISOR=y
|
||||
CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
CONFIG_THERMAL_HWMON=y
|
||||
CONFIG_THERMAL_WRITABLE_TRIPS=y
|
||||
# CONFIG_TOSHIBA_BT_RFKILL is not set
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
# CONFIG_UCLAMP_TASK is not set
|
||||
CONFIG_UCS2_STRING=y
|
||||
# CONFIG_UNWINDER_ORC is not set
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_VIRTIO=y
|
||||
CONFIG_VIRTIO_BALLOON=y
|
||||
CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_VIRTIO_DMA_SHARED_BUFFER=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
|
||||
CONFIG_VIRTIO_NET=y
|
||||
CONFIG_VIRTIO_PCI=y
|
||||
CONFIG_VIRTIO_PCI_LEGACY=y
|
||||
# CONFIG_VIRTIO_PMEM is not set
|
||||
# CONFIG_VIRTIO_VSOCKETS is not set
|
||||
CONFIG_VIRTIO_VSOCKETS_COMMON=y
|
||||
CONFIG_VIRT_DRIVERS=y
|
||||
CONFIG_VMAP_PFN=y
|
||||
CONFIG_VMAP_STACK=y
|
||||
# CONFIG_VMD is not set
|
||||
CONFIG_VMWARE_BALLOON=y
|
||||
CONFIG_VMWARE_PVSCSI=y
|
||||
CONFIG_VMWARE_VMCI=y
|
||||
CONFIG_VMWARE_VMCI_VSOCKETS=y
|
||||
CONFIG_VMXNET3=y
|
||||
CONFIG_VSOCKETS=y
|
||||
CONFIG_VSOCKETS_LOOPBACK=y
|
||||
CONFIG_VT_CONSOLE_SLEEP=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
# CONFIG_X86_5LEVEL is not set
|
||||
CONFIG_X86_64=y
|
||||
CONFIG_X86_64_SMP=y
|
||||
CONFIG_X86_ACPI_CPUFREQ=y
|
||||
# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
|
||||
CONFIG_X86_AMD_FREQ_SENSITIVITY=y
|
||||
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
|
||||
CONFIG_X86_CPUID=y
|
||||
CONFIG_X86_DIRECT_GBPAGES=y
|
||||
CONFIG_X86_HV_CALLBACK_VECTOR=y
|
||||
CONFIG_X86_INTEL_LPSS=y
|
||||
# CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is not set
|
||||
CONFIG_X86_INTEL_PSTATE=y
|
||||
CONFIG_X86_MINIMUM_CPU_FAMILY=64
|
||||
# CONFIG_X86_PCC_CPUFREQ is not set
|
||||
CONFIG_X86_PKG_TEMP_THERMAL=y
|
||||
# CONFIG_X86_PMEM_LEGACY is not set
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
# CONFIG_X86_POWERNOW_K8 is not set
|
||||
# CONFIG_X86_VSYSCALL_EMULATION is not set
|
||||
CONFIG_X86_X2APIC=y
|
||||
# CONFIG_X86_X32 is not set
|
||||
CONFIG_XEN=y
|
||||
CONFIG_XENFS=y
|
||||
CONFIG_XEN_512GB=y
|
||||
CONFIG_XEN_ACPI=y
|
||||
CONFIG_XEN_ACPI_PROCESSOR=y
|
||||
CONFIG_XEN_AUTO_XLATE=y
|
||||
# CONFIG_XEN_BACKEND is not set
|
||||
CONFIG_XEN_BALLOON=y
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=y
|
||||
CONFIG_XEN_COMPAT_XENFS=y
|
||||
CONFIG_XEN_DEBUG_FS=y
|
||||
CONFIG_XEN_DEV_EVTCHN=y
|
||||
CONFIG_XEN_DOM0=y
|
||||
CONFIG_XEN_EFI=y
|
||||
CONFIG_XEN_FBDEV_FRONTEND=y
|
||||
CONFIG_XEN_GNTDEV=y
|
||||
CONFIG_XEN_GRANT_DEV_ALLOC=y
|
||||
CONFIG_XEN_HAVE_PVMMU=y
|
||||
CONFIG_XEN_HAVE_VPMU=y
|
||||
# CONFIG_XEN_MCE_LOG is not set
|
||||
CONFIG_XEN_NETDEV_FRONTEND=y
|
||||
CONFIG_XEN_PCIDEV_FRONTEND=y
|
||||
CONFIG_XEN_PRIVCMD=y
|
||||
CONFIG_XEN_PV=y
|
||||
CONFIG_XEN_PVH=y
|
||||
CONFIG_XEN_PVHVM=y
|
||||
CONFIG_XEN_PVHVM_SMP=y
|
||||
CONFIG_XEN_PV_SMP=y
|
||||
CONFIG_XEN_SAVE_RESTORE=y
|
||||
CONFIG_XEN_SCSI_FRONTEND=y
|
||||
CONFIG_XEN_SYMS=y
|
||||
CONFIG_XEN_SYS_HYPERVISOR=y
|
||||
CONFIG_XEN_WDT=y
|
||||
CONFIG_XEN_XENBUS_FRONTEND=y
|
||||
CONFIG_XPS=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_ZONE_DMA32=y
|
||||
@ -11,7 +11,7 @@ FEATURES:=squashfs ext4 vdi vmdk pcmcia targz fpu boot-part rootfs-part
|
||||
SUBTARGETS:=64 generic legacy geode
|
||||
|
||||
KERNEL_PATCHVER:=5.4
|
||||
KERNEL_TESTING_PATCHVER:=5.4
|
||||
KERNEL_TESTING_PATCHVER:=5.10
|
||||
|
||||
KERNELNAME:=bzImage
|
||||
|
||||
|
||||
432
target/linux/x86/config-5.10
Normal file
432
target/linux/x86/config-5.10
Normal file
@ -0,0 +1,432 @@
|
||||
# CONFIG_60XX_WDT is not set
|
||||
# CONFIG_64BIT is not set
|
||||
# CONFIG_ACPI is not set
|
||||
# CONFIG_ACQUIRE_WDT is not set
|
||||
# CONFIG_ADVANTECH_WDT is not set
|
||||
# CONFIG_ALIM1535_WDT is not set
|
||||
# CONFIG_ALIX is not set
|
||||
CONFIG_AMD_NB=y
|
||||
CONFIG_ARCH_32BIT_OFF_T=y
|
||||
CONFIG_ARCH_CLOCKSOURCE_INIT=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
|
||||
CONFIG_ARCH_RANDOM=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPLIT_ARG64=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARCH_USES_PG_UNCACHED=y
|
||||
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATA_GENERIC=y
|
||||
CONFIG_ATA_PIIX=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_SCSI_REQUEST=y
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_CLKBLD_I8253=y
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKEVT_I8253=y
|
||||
CONFIG_CLKSRC_I8253=y
|
||||
CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
|
||||
CONFIG_CLOCKSOURCE_WATCHDOG=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMPAT_32=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
# CONFIG_COMPAT_VDSO is not set
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
# CONFIG_CPU5_WDT is not set
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
||||
CONFIG_CPU_SUP_AMD=y
|
||||
CONFIG_CPU_SUP_CENTAUR=y
|
||||
CONFIG_CPU_SUP_CYRIX_32=y
|
||||
CONFIG_CPU_SUP_HYGON=y
|
||||
CONFIG_CPU_SUP_INTEL=y
|
||||
CONFIG_CPU_SUP_TRANSMETA_32=y
|
||||
CONFIG_CPU_SUP_UMC_32=y
|
||||
CONFIG_CPU_SUP_ZHAOXIN=y
|
||||
CONFIG_CRASH_CORE=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
# CONFIG_CRYPTO_CRC32_PCLMUL is not set
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
# CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
|
||||
# CONFIG_CX_ECAT is not set
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
# CONFIG_DCDBAS is not set
|
||||
# CONFIG_DEBUG_BOOT_PARAMS is not set
|
||||
# CONFIG_DEBUG_ENTRY is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
CONFIG_DEBUG_MISC=y
|
||||
# CONFIG_DEBUG_NMI_SELFTEST is not set
|
||||
# CONFIG_DEBUG_TLBFLUSH is not set
|
||||
CONFIG_DECOMPRESS_BZIP2=y
|
||||
CONFIG_DECOMPRESS_GZIP=y
|
||||
# CONFIG_DELL_RBU is not set
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMI=y
|
||||
CONFIG_DMIID=y
|
||||
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
|
||||
CONFIG_DMI_SYSFS=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
# CONFIG_EARLY_PRINTK_DBGP is not set
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
# CONFIG_EDD is not set
|
||||
# CONFIG_EISA is not set
|
||||
# CONFIG_EUROTECH_WDT is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_F2FS_FS=y
|
||||
# CONFIG_F71808E_WDT is not set
|
||||
CONFIG_FIRMWARE_MEMMAP=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FUSION=y
|
||||
# CONFIG_FUSION_CTL is not set
|
||||
# CONFIG_FUSION_LOGGING is not set
|
||||
CONFIG_FUSION_MAX_SGE=128
|
||||
CONFIG_FUSION_SPI=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_ENTRY=y
|
||||
CONFIG_GENERIC_FIND_FIRST_BIT=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_IOMAP=y
|
||||
CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y
|
||||
CONFIG_GENERIC_IRQ_RESERVATION_MODE=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
CONFIG_GENERIC_VDSO_32=y
|
||||
# CONFIG_GEOS is not set
|
||||
CONFIG_GLOB=y
|
||||
# CONFIG_HANGCHECK_TIMER is not set
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HID=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_HIGHMEM4G=y
|
||||
# CONFIG_HIGHMEM64G is not set
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HPET_EMULATE_RTC=y
|
||||
CONFIG_HPET_TIMER=y
|
||||
# CONFIG_HP_WATCHDOG is not set
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_GEODE=y
|
||||
CONFIG_HW_RANDOM_VIA=y
|
||||
# CONFIG_HYPERVISOR_GUEST is not set
|
||||
CONFIG_HZ=250
|
||||
CONFIG_HZ_250=y
|
||||
CONFIG_HZ_PERIODIC=y
|
||||
CONFIG_I8253_LOCK=y
|
||||
# CONFIG_I8K is not set
|
||||
CONFIG_IA32_FEAT_CTL=y
|
||||
# CONFIG_IB700_WDT is not set
|
||||
# CONFIG_IBMASR is not set
|
||||
# CONFIG_IBM_RTL is not set
|
||||
# CONFIG_IE6XX_WDT is not set
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_INPUT=y
|
||||
CONFIG_INPUT_KEYBOARD=y
|
||||
CONFIG_INSTRUCTION_DECODER=y
|
||||
# CONFIG_INTEL_PCH_THERMAL is not set
|
||||
# CONFIG_INTEL_POWERCLAMP is not set
|
||||
# CONFIG_INTEL_SCU_PCI is not set
|
||||
# CONFIG_IOSF_MBI is not set
|
||||
CONFIG_IO_DELAY_0X80=y
|
||||
# CONFIG_IO_DELAY_0XED is not set
|
||||
# CONFIG_IO_DELAY_NONE is not set
|
||||
# CONFIG_IO_DELAY_UDELAY is not set
|
||||
CONFIG_IO_URING=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
# CONFIG_ISA is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
# CONFIG_IT8712F_WDT is not set
|
||||
# CONFIG_IT87_WDT is not set
|
||||
# CONFIG_ITCO_WDT is not set
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_KEXEC_CORE=y
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_LEDS_CLEVO_MAIL is not set
|
||||
CONFIG_LLD_VERSION=0
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
# CONFIG_M486 is not set
|
||||
# CONFIG_M486SX is not set
|
||||
# CONFIG_M586 is not set
|
||||
# CONFIG_M586MMX is not set
|
||||
# CONFIG_M586TSC is not set
|
||||
CONFIG_M686=y
|
||||
# CONFIG_MACHZ_WDT is not set
|
||||
# CONFIG_MATOM is not set
|
||||
# CONFIG_MCORE2 is not set
|
||||
# CONFIG_MCRUSOE is not set
|
||||
# CONFIG_MCYRIXIII is not set
|
||||
# CONFIG_MEFFICEON is not set
|
||||
# CONFIG_MELAN is not set
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
# CONFIG_MFD_INTEL_LPSS_PCI is not set
|
||||
# CONFIG_MGEODEGX1 is not set
|
||||
# CONFIG_MGEODE_LX is not set
|
||||
CONFIG_MICROCODE=y
|
||||
CONFIG_MICROCODE_AMD=y
|
||||
CONFIG_MICROCODE_INTEL=y
|
||||
CONFIG_MICROCODE_OLD_INTERFACE=y
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_MK6 is not set
|
||||
# CONFIG_MK7 is not set
|
||||
# CONFIG_MK8 is not set
|
||||
# CONFIG_MODIFY_LDT_SYSCALL is not set
|
||||
CONFIG_MODULES_TREE_LOOKUP=y
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
# CONFIG_MPENTIUM4 is not set
|
||||
# CONFIG_MPENTIUMII is not set
|
||||
# CONFIG_MPENTIUMIII is not set
|
||||
# CONFIG_MPENTIUMM is not set
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_MTRR=y
|
||||
# CONFIG_MTRR_SANITIZER is not set
|
||||
# CONFIG_MVIAC3_2 is not set
|
||||
# CONFIG_MVIAC7 is not set
|
||||
# CONFIG_MWINCHIP3D is not set
|
||||
# CONFIG_MWINCHIPC6 is not set
|
||||
CONFIG_NAMESPACES=y
|
||||
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
|
||||
CONFIG_NEED_PER_CPU_KM=y
|
||||
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
# CONFIG_NET5501 is not set
|
||||
# CONFIG_NET_NS is not set
|
||||
CONFIG_NLS=y
|
||||
# CONFIG_NOHIGHMEM is not set
|
||||
CONFIG_NR_CPUS=1
|
||||
CONFIG_NR_CPUS_DEFAULT=1
|
||||
CONFIG_NR_CPUS_RANGE_BEGIN=1
|
||||
CONFIG_NR_CPUS_RANGE_END=1
|
||||
# CONFIG_NSC_GPIO is not set
|
||||
CONFIG_NVRAM=y
|
||||
# CONFIG_OF is not set
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
# CONFIG_OLPC is not set
|
||||
CONFIG_OPROFILE_NMI_TIMER=y
|
||||
CONFIG_OUTPUT_FORMAT="elf32-i386"
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PC104=y
|
||||
# CONFIG_PC8736x_GPIO is not set
|
||||
# CONFIG_PC87413_WDT is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_ATS=y
|
||||
CONFIG_PCI_BIOS=y
|
||||
CONFIG_PCI_DIRECT=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_GOANY=y
|
||||
# CONFIG_PCI_GOBIOS is not set
|
||||
# CONFIG_PCI_GODIRECT is not set
|
||||
# CONFIG_PCI_GOMMCONFIG is not set
|
||||
CONFIG_PCI_IOV=y
|
||||
CONFIG_PCI_LABEL=y
|
||||
CONFIG_PCI_LOCKLESS_CONFIG=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PCSPKR_PLATFORM=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_PERF_EVENTS_INTEL_CSTATE=y
|
||||
CONFIG_PERF_EVENTS_INTEL_RAPL=y
|
||||
CONFIG_PERF_EVENTS_INTEL_UNCORE=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PHYSICAL_ALIGN=0x100000
|
||||
CONFIG_PHYSICAL_START=0x1000000
|
||||
# CONFIG_PHY_INTEL_LGM_EMMC is not set
|
||||
CONFIG_PMC_ATOM=y
|
||||
CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_PROCESSOR_SELECT is not set
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_PROC_PID_ARCH_STATUS=y
|
||||
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
|
||||
# CONFIG_PUNIT_ATOM_DEBUG is not set
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_RD_BZIP2=y
|
||||
CONFIG_RD_GZIP=y
|
||||
CONFIG_RETPOLINE=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_MC146818_LIB=y
|
||||
CONFIG_SATA_HOST=y
|
||||
# CONFIG_SBC7240_WDT is not set
|
||||
# CONFIG_SBC8360_WDT is not set
|
||||
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
|
||||
# CONFIG_SC1200_WDT is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_SPI_ATTRS=y
|
||||
CONFIG_SCx200=y
|
||||
CONFIG_SCx200HR_TIMER=y
|
||||
# CONFIG_SCx200_GPIO is not set
|
||||
# CONFIG_SCx200_WDT is not set
|
||||
CONFIG_SERIAL_8250_PCI=y
|
||||
# CONFIG_SERIAL_LANTIQ is not set
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_I8042=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SG_POOL=y
|
||||
# CONFIG_SMSC37B787_WDT is not set
|
||||
# CONFIG_SMSC_SCH311X_WDT is not set
|
||||
CONFIG_SPARSEMEM_STATIC=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SRCU=y
|
||||
# CONFIG_STATIC_CALL_SELFTEST is not set
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
# CONFIG_TELCLOCK is not set
|
||||
# CONFIG_TEST_FPU is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TINY_SRCU=y
|
||||
# CONFIG_TOSHIBA is not set
|
||||
# CONFIG_TQMX86_WDT is not set
|
||||
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
|
||||
CONFIG_UNWINDER_FRAME_POINTER=y
|
||||
# CONFIG_UNWINDER_GUESS is not set
|
||||
CONFIG_UP_LATE_INIT=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_HCD_PLATFORM is not set
|
||||
CONFIG_USB_EHCI_PCI=y
|
||||
CONFIG_USB_HID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PCI=y
|
||||
# CONFIG_USB_OHCI_HCD_PLATFORM is not set
|
||||
CONFIG_USB_PCI=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_UHCI_HCD=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_PCI=y
|
||||
# CONFIG_USB_XHCI_PLATFORM is not set
|
||||
# CONFIG_USERIO is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
CONFIG_USER_STACKTRACE_SUPPORT=y
|
||||
CONFIG_VGA_CONSOLE=y
|
||||
# CONFIG_VIA_WDT is not set
|
||||
# CONFIG_VMWARE_VMCI is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_WAFER_WDT is not set
|
||||
CONFIG_X86=y
|
||||
CONFIG_X86_32=y
|
||||
# CONFIG_X86_32_IRIS is not set
|
||||
CONFIG_X86_32_LAZY_GS=y
|
||||
# CONFIG_X86_ANCIENT_MCE is not set
|
||||
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
|
||||
CONFIG_X86_CMOV=y
|
||||
CONFIG_X86_CMPXCHG64=y
|
||||
# CONFIG_X86_CPA_STATISTICS is not set
|
||||
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
|
||||
# CONFIG_X86_CPUID is not set
|
||||
# CONFIG_X86_CPU_RESCTRL is not set
|
||||
CONFIG_X86_DEBUGCTLMSR=y
|
||||
# CONFIG_X86_DEBUG_FPU is not set
|
||||
# CONFIG_X86_DECODER_SELFTEST is not set
|
||||
# CONFIG_X86_EXTENDED_PLATFORM is not set
|
||||
CONFIG_X86_FEATURE_NAMES=y
|
||||
CONFIG_X86_GENERIC=y
|
||||
# CONFIG_X86_GX_SUSPMOD is not set
|
||||
# CONFIG_X86_INTEL_PSTATE is not set
|
||||
# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
|
||||
CONFIG_X86_INTEL_TSX_MODE_OFF=y
|
||||
# CONFIG_X86_INTEL_TSX_MODE_ON is not set
|
||||
CONFIG_X86_INTEL_USERCOPY=y
|
||||
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
|
||||
CONFIG_X86_IOPL_IOPERM=y
|
||||
CONFIG_X86_IO_APIC=y
|
||||
CONFIG_X86_L1_CACHE_SHIFT=6
|
||||
# CONFIG_X86_LEGACY_VM86 is not set
|
||||
CONFIG_X86_LOCAL_APIC=y
|
||||
# CONFIG_X86_LONGRUN is not set
|
||||
CONFIG_X86_MCE=y
|
||||
# CONFIG_X86_MCELOG_LEGACY is not set
|
||||
CONFIG_X86_MCE_AMD=y
|
||||
# CONFIG_X86_MCE_INJECT is not set
|
||||
CONFIG_X86_MCE_INTEL=y
|
||||
CONFIG_X86_MCE_THRESHOLD=y
|
||||
CONFIG_X86_MINIMUM_CPU_FAMILY=6
|
||||
CONFIG_X86_MPPARSE=y
|
||||
CONFIG_X86_MSR=y
|
||||
# CONFIG_X86_P4_CLOCKMOD is not set
|
||||
CONFIG_X86_PAT=y
|
||||
CONFIG_X86_PLATFORM_DEVICES=y
|
||||
# CONFIG_X86_POWERNOW_K6 is not set
|
||||
# CONFIG_X86_POWERNOW_K7 is not set
|
||||
# CONFIG_X86_REBOOTFIXUPS is not set
|
||||
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
|
||||
CONFIG_X86_RESERVE_LOW=64
|
||||
CONFIG_X86_SMAP=y
|
||||
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
|
||||
# CONFIG_X86_SPEEDSTEP_ICH is not set
|
||||
# CONFIG_X86_SPEEDSTEP_SMI is not set
|
||||
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
|
||||
CONFIG_X86_THERMAL_VECTOR=y
|
||||
CONFIG_X86_TSC=y
|
||||
CONFIG_X86_UMIP=y
|
||||
CONFIG_X86_UP_APIC=y
|
||||
CONFIG_X86_UP_IOAPIC=y
|
||||
CONFIG_X86_USE_PPRO_CHECKSUM=y
|
||||
CONFIG_X86_VERBOSE_BOOTUP=y
|
||||
CONFIG_X86_VMX_FEATURE_NAMES=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_XZ_DEC_X86=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
459
target/linux/x86/generic/config-5.10
Normal file
459
target/linux/x86/generic/config-5.10
Normal file
@ -0,0 +1,459 @@
|
||||
# CONFIG_3C515 is not set
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
# CONFIG_ACPI_BGRT is not set
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
# CONFIG_ACPI_CMPC is not set
|
||||
CONFIG_ACPI_CONTAINER=y
|
||||
CONFIG_ACPI_CPU_FREQ_PSS=y
|
||||
# CONFIG_ACPI_DEBUG is not set
|
||||
# CONFIG_ACPI_DEBUGGER is not set
|
||||
# CONFIG_ACPI_DOCK is not set
|
||||
# CONFIG_ACPI_DPTF is not set
|
||||
# CONFIG_ACPI_EC_DEBUGFS is not set
|
||||
# CONFIG_ACPI_FAN is not set
|
||||
CONFIG_ACPI_HOTPLUG_CPU=y
|
||||
CONFIG_ACPI_HOTPLUG_IOAPIC=y
|
||||
# CONFIG_ACPI_I2C_OPREGION is not set
|
||||
CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
|
||||
# CONFIG_ACPI_PCI_SLOT is not set
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
|
||||
CONFIG_ACPI_PROCESSOR_CSTATE=y
|
||||
CONFIG_ACPI_PROCESSOR_IDLE=y
|
||||
CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
|
||||
# CONFIG_ACPI_SBS is not set
|
||||
CONFIG_ACPI_SPCR_TABLE=y
|
||||
CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
|
||||
CONFIG_ACPI_TAD=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_ACPI_VIDEO=y
|
||||
# CONFIG_ACPI_WMI is not set
|
||||
CONFIG_AGP=y
|
||||
# CONFIG_AGP_ALI is not set
|
||||
# CONFIG_AGP_AMD is not set
|
||||
# CONFIG_AGP_AMD64 is not set
|
||||
# CONFIG_AGP_ATI is not set
|
||||
# CONFIG_AGP_EFFICEON is not set
|
||||
CONFIG_AGP_INTEL=y
|
||||
# CONFIG_AGP_NVIDIA is not set
|
||||
# CONFIG_AGP_SIS is not set
|
||||
# CONFIG_AGP_SWORKS is not set
|
||||
# CONFIG_AGP_VIA is not set
|
||||
# CONFIG_APM is not set
|
||||
CONFIG_ARCH_CPUIDLE_HALTPOLL=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_BALLOON_COMPACTION=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_BLK_MQ_VIRTIO=y
|
||||
CONFIG_BLK_PM=y
|
||||
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
|
||||
CONFIG_BTT=y
|
||||
CONFIG_CDROM=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
CONFIG_CRYPTO_NULL2=y
|
||||
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
|
||||
CONFIG_DMA_ACPI=y
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_BOCHS=y
|
||||
CONFIG_DRM_BRIDGE=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||
CONFIG_DRM_GEM_SHMEM_HELPER=y
|
||||
CONFIG_DRM_I915=y
|
||||
CONFIG_DRM_I915_CAPTURE_ERROR=y
|
||||
CONFIG_DRM_I915_COMPRESS_ERROR=y
|
||||
# CONFIG_DRM_I915_DEBUG is not set
|
||||
# CONFIG_DRM_I915_DEBUG_GUC is not set
|
||||
# CONFIG_DRM_I915_DEBUG_MMIO is not set
|
||||
# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set
|
||||
# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
|
||||
CONFIG_DRM_I915_FENCE_TIMEOUT=10000
|
||||
CONFIG_DRM_I915_FORCE_PROBE=""
|
||||
CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
|
||||
# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
|
||||
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
|
||||
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
|
||||
# CONFIG_DRM_I915_SELFTEST is not set
|
||||
CONFIG_DRM_I915_STOP_TIMEOUT=100
|
||||
# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set
|
||||
# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set
|
||||
CONFIG_DRM_I915_TIMESLICE_DURATION=1
|
||||
CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
|
||||
CONFIG_DRM_I915_USERPTR=y
|
||||
# CONFIG_DRM_I915_WERROR is not set
|
||||
CONFIG_DRM_KMS_FB_HELPER=y
|
||||
CONFIG_DRM_KMS_HELPER=y
|
||||
CONFIG_DRM_MIPI_DSI=y
|
||||
CONFIG_DRM_PANEL=y
|
||||
CONFIG_DRM_PANEL_BRIDGE=y
|
||||
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
|
||||
CONFIG_DRM_TTM=y
|
||||
CONFIG_DRM_TTM_DMA_PAGE_POOL=y
|
||||
CONFIG_DRM_TTM_HELPER=y
|
||||
CONFIG_DRM_VIRTIO_GPU=y
|
||||
CONFIG_DRM_VRAM_HELPER=y
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFIVAR_FS=m
|
||||
# CONFIG_EFI_BOOTLOADER_CONTROL is not set
|
||||
# CONFIG_EFI_CAPSULE_LOADER is not set
|
||||
# CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH is not set
|
||||
# CONFIG_EFI_CUSTOM_SSDT_OVERLAYS is not set
|
||||
# CONFIG_EFI_DISABLE_PCI_DMA is not set
|
||||
CONFIG_EFI_EARLYCON=y
|
||||
CONFIG_EFI_ESRT=y
|
||||
# CONFIG_EFI_FAKE_MEMMAP is not set
|
||||
CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y
|
||||
# CONFIG_EFI_PGT_DUMP is not set
|
||||
# CONFIG_EFI_RCI2_TABLE is not set
|
||||
CONFIG_EFI_RUNTIME_MAP=y
|
||||
CONFIG_EFI_RUNTIME_WRAPPERS=y
|
||||
CONFIG_EFI_STUB=y
|
||||
# CONFIG_EFI_TEST is not set
|
||||
# CONFIG_EFI_VARS is not set
|
||||
# CONFIG_EL3 is not set
|
||||
CONFIG_FAILOVER=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_CMDLINE=y
|
||||
CONFIG_FB_DEFERRED_IO=y
|
||||
CONFIG_FB_EFI=y
|
||||
CONFIG_FB_HYPERV=y
|
||||
# CONFIG_FB_I810 is not set
|
||||
CONFIG_FB_SIMPLE=y
|
||||
CONFIG_FB_SYS_COPYAREA=y
|
||||
CONFIG_FB_SYS_FILLRECT=y
|
||||
CONFIG_FB_SYS_FOPS=y
|
||||
CONFIG_FB_SYS_IMAGEBLIT=y
|
||||
# CONFIG_FB_VESA is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_FREEZER=y
|
||||
CONFIG_FW_CACHE=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_PENDING_IRQ=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_ACPI=y
|
||||
CONFIG_GUP_GET_PTE_LOW_HIGH=y
|
||||
CONFIG_HALTPOLL_CPUIDLE=y
|
||||
CONFIG_HDMI=y
|
||||
CONFIG_HIBERNATE_CALLBACKS=y
|
||||
CONFIG_HID_BATTERY_STRENGTH=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
CONFIG_HID_HYPERV_MOUSE=y
|
||||
# CONFIG_HIGHMEM4G is not set
|
||||
CONFIG_HIGHMEM64G=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_ACPI=y
|
||||
# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
|
||||
# CONFIG_HOTPLUG_PCI_COMPAQ is not set
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# CONFIG_HOTPLUG_PCI_IBM is not set
|
||||
CONFIG_HOTPLUG_PCI_PCIE=y
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_HOTPLUG_SMT=y
|
||||
CONFIG_HPET=y
|
||||
CONFIG_HPET_MMAP=y
|
||||
# CONFIG_HP_ACCEL is not set
|
||||
CONFIG_HVC_DRIVER=y
|
||||
CONFIG_HVC_IRQ=y
|
||||
CONFIG_HVC_XEN=y
|
||||
CONFIG_HVC_XEN_FRONTEND=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HWMON_VID=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=y
|
||||
CONFIG_HYPERV=y
|
||||
CONFIG_HYPERVISOR_GUEST=y
|
||||
CONFIG_HYPERV_BALLOON=y
|
||||
CONFIG_HYPERV_KEYBOARD=y
|
||||
CONFIG_HYPERV_NET=y
|
||||
CONFIG_HYPERV_STORAGE=y
|
||||
# CONFIG_HYPERV_TESTING is not set
|
||||
CONFIG_HYPERV_TIMER=y
|
||||
CONFIG_HYPERV_UTILS=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_AMD_MP2 is not set
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
# CONFIG_I2C_MULTI_INSTANTIATE is not set
|
||||
# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
|
||||
CONFIG_INTEL_GTT=y
|
||||
CONFIG_INTEL_IDLE=y
|
||||
# CONFIG_INTEL_INT0002_VGPIO is not set
|
||||
# CONFIG_INTEL_IPS is not set
|
||||
# CONFIG_INTEL_MEI_HDCP is not set
|
||||
# CONFIG_INTEL_MENLOW is not set
|
||||
CONFIG_INTEL_PCH_THERMAL=y
|
||||
# CONFIG_INTEL_SCU_PLATFORM is not set
|
||||
CONFIG_INTEL_SOC_DTS_IOSF_CORE=y
|
||||
CONFIG_INTEL_SOC_DTS_THERMAL=y
|
||||
CONFIG_INTERVAL_TREE=y
|
||||
CONFIG_IOSF_MBI=y
|
||||
# CONFIG_IOSF_MBI_DEBUG is not set
|
||||
CONFIG_IRQ_BYPASS_MANAGER=y
|
||||
CONFIG_ISA=y
|
||||
CONFIG_ISAPNP=y
|
||||
CONFIG_ISA_BUS_API=y
|
||||
# CONFIG_ISCSI_IBFT is not set
|
||||
CONFIG_ISO9660_FS=y
|
||||
# CONFIG_JOLIET is not set
|
||||
CONFIG_KCMP=y
|
||||
CONFIG_KVM=y
|
||||
CONFIG_KVM_AMD=y
|
||||
CONFIG_KVM_ASYNC_PF=y
|
||||
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
CONFIG_KVM_INTEL=y
|
||||
CONFIG_KVM_MMIO=y
|
||||
CONFIG_KVM_VFIO=y
|
||||
# CONFIG_KVM_WERROR is not set
|
||||
CONFIG_KVM_XFER_TO_GUEST_WORK=y
|
||||
# CONFIG_LANCE is not set
|
||||
CONFIG_LIBNVDIMM=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
# CONFIG_M686 is not set
|
||||
# CONFIG_MDA_CONSOLE is not set
|
||||
CONFIG_MEMORY_BALLOON=y
|
||||
CONFIG_MEMREGION=y
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_INTEL_LPSS=y
|
||||
CONFIG_MFD_INTEL_LPSS_ACPI=y
|
||||
# CONFIG_MFD_INTEL_PMC_BXT is not set
|
||||
# CONFIG_MIXCOMWD is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_CQHCI=y
|
||||
CONFIG_MMC_RICOH_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
||||
CONFIG_MMC_SDHCI_PCI=y
|
||||
# CONFIG_MMC_SDHCI_PLTFM is not set
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
# CONFIG_MMC_WBSD is not set
|
||||
CONFIG_MMU_NOTIFIER=y
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
# CONFIG_MOUSE_CYAPA is not set
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
# CONFIG_MOUSE_PS2_BYD is not set
|
||||
# CONFIG_MOUSE_PS2_CYPRESS is not set
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
CONFIG_MOUSE_PS2_LIFEBOOK=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SMBUS=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_VMMOUSE is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_VSXXXAA is not set
|
||||
CONFIG_MPENTIUM4=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_ND_BLK=y
|
||||
CONFIG_ND_BTT=y
|
||||
CONFIG_ND_CLAIM=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NET_FAILOVER=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_NR_CPUS_DEFAULT=8
|
||||
CONFIG_NR_CPUS_RANGE_BEGIN=2
|
||||
CONFIG_NR_CPUS_RANGE_END=8
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_POOL=y
|
||||
CONFIG_PAGE_REPORTING=y
|
||||
CONFIG_PAGE_TABLE_ISOLATION=y
|
||||
CONFIG_PARAVIRT=y
|
||||
CONFIG_PARAVIRT_CLOCK=y
|
||||
# CONFIG_PARAVIRT_DEBUG is not set
|
||||
CONFIG_PARAVIRT_SPINLOCKS=y
|
||||
CONFIG_PATA_AMD=y
|
||||
CONFIG_PATA_ATIIXP=y
|
||||
CONFIG_PATA_MPIIX=y
|
||||
CONFIG_PATA_OLDPIIX=y
|
||||
CONFIG_PATA_PLATFORM=y
|
||||
CONFIG_PATA_SC1200=y
|
||||
CONFIG_PATA_TIMINGS=y
|
||||
CONFIG_PATA_VIA=y
|
||||
# CONFIG_PCENGINES_APU2 is not set
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_PME=y
|
||||
CONFIG_PCI_MMCONFIG=y
|
||||
CONFIG_PCI_XEN=y
|
||||
# CONFIG_PCWATCHDOG is not set
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_BAYTRAIL=y
|
||||
CONFIG_PINCTRL_BROXTON=y
|
||||
CONFIG_PINCTRL_CANNONLAKE=y
|
||||
CONFIG_PINCTRL_CHERRYVIEW=y
|
||||
CONFIG_PINCTRL_DENVERTON=y
|
||||
# CONFIG_PINCTRL_EMMITSBURG is not set
|
||||
CONFIG_PINCTRL_GEMINILAKE=y
|
||||
CONFIG_PINCTRL_INTEL=y
|
||||
# CONFIG_PINCTRL_JASPERLAKE is not set
|
||||
# CONFIG_PINCTRL_LEWISBURG is not set
|
||||
# CONFIG_PINCTRL_LYNXPOINT is not set
|
||||
CONFIG_PINCTRL_SUNRISEPOINT=y
|
||||
# CONFIG_PINCTRL_TIGERLAKE is not set
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PMIC_OPREGION is not set
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_PM_SLEEP_SMP=y
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PNPACPI=y
|
||||
# CONFIG_PNPBIOS is not set
|
||||
CONFIG_PNP_DEBUG_MESSAGES=y
|
||||
CONFIG_PREEMPT_NOTIFIERS=y
|
||||
CONFIG_PROC_EVENTS=y
|
||||
CONFIG_PVH=y
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_RCU_STALL_COMMON=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_RESET_ATTACK_MITIGATION=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
# CONFIG_SAMSUNG_Q10 is not set
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SATA_VIA=y
|
||||
CONFIG_SCHED_INFO=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
# CONFIG_SCSI_FDOMAIN_ISA is not set
|
||||
CONFIG_SCSI_VIRTIO=y
|
||||
# CONFIG_SENSORS_AMD_ENERGY is not set
|
||||
CONFIG_SENSORS_CORETEMP=y
|
||||
CONFIG_SENSORS_FAM15H_POWER=y
|
||||
CONFIG_SENSORS_I5500=y
|
||||
CONFIG_SENSORS_K10TEMP=y
|
||||
CONFIG_SENSORS_K8TEMP=y
|
||||
CONFIG_SENSORS_VIA_CPUTEMP=y
|
||||
CONFIG_SERIAL_8250_PNP=y
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_SURFACE_3_POWER_OPREGION is not set
|
||||
# CONFIG_SURFACE_PRO3_BUTTON is not set
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWIOTLB_XEN=y
|
||||
CONFIG_SYNC_FILE=y
|
||||
# CONFIG_SYSTEM76_ACPI is not set
|
||||
CONFIG_SYS_HYPERVISOR=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
CONFIG_THERMAL_HWMON=y
|
||||
CONFIG_THERMAL_WRITABLE_TRIPS=y
|
||||
# CONFIG_TOSHIBA_BT_RFKILL is not set
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
# CONFIG_UCLAMP_TASK is not set
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USER_RETURN_NOTIFIER=y
|
||||
CONFIG_VHOST=y
|
||||
CONFIG_VHOST_IOTLB=y
|
||||
CONFIG_VHOST_NET=y
|
||||
CONFIG_VIRTIO=y
|
||||
CONFIG_VIRTIO_BALLOON=y
|
||||
CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_VIRTIO_DMA_SHARED_BUFFER=y
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
|
||||
CONFIG_VIRTIO_NET=y
|
||||
CONFIG_VIRTIO_PCI=y
|
||||
CONFIG_VIRTIO_PCI_LEGACY=y
|
||||
# CONFIG_VIRTIO_PMEM is not set
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_VMAP_PFN=y
|
||||
CONFIG_VT_CONSOLE_SLEEP=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
# CONFIG_WDT is not set
|
||||
CONFIG_X86_32_SMP=y
|
||||
CONFIG_X86_ACPI_CPUFREQ=y
|
||||
# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
|
||||
CONFIG_X86_AMD_FREQ_SENSITIVITY=y
|
||||
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
|
||||
# CONFIG_X86_BIGSMP is not set
|
||||
CONFIG_X86_CPUID=y
|
||||
# CONFIG_X86_E_POWERSAVER is not set
|
||||
CONFIG_X86_HV_CALLBACK_VECTOR=y
|
||||
CONFIG_X86_INTEL_LPSS=y
|
||||
CONFIG_X86_INTEL_PSTATE=y
|
||||
CONFIG_X86_INTERNODE_CACHE_SHIFT=7
|
||||
CONFIG_X86_L1_CACHE_SHIFT=7
|
||||
# CONFIG_X86_LONGHAUL is not set
|
||||
CONFIG_X86_NEED_RELOCS=y
|
||||
CONFIG_X86_PAE=y
|
||||
# CONFIG_X86_PCC_CPUFREQ is not set
|
||||
CONFIG_X86_PKG_TEMP_THERMAL=y
|
||||
# CONFIG_X86_PMEM_LEGACY is not set
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
# CONFIG_X86_POWERNOW_K8 is not set
|
||||
CONFIG_XEN=y
|
||||
CONFIG_XENFS=y
|
||||
CONFIG_XEN_ACPI=y
|
||||
CONFIG_XEN_AUTO_XLATE=y
|
||||
# CONFIG_XEN_BACKEND is not set
|
||||
CONFIG_XEN_BALLOON=y
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=y
|
||||
CONFIG_XEN_COMPAT_XENFS=y
|
||||
CONFIG_XEN_DEBUG_FS=y
|
||||
CONFIG_XEN_DEV_EVTCHN=y
|
||||
CONFIG_XEN_FBDEV_FRONTEND=y
|
||||
CONFIG_XEN_GNTDEV=y
|
||||
CONFIG_XEN_GRANT_DEV_ALLOC=y
|
||||
CONFIG_XEN_NETDEV_FRONTEND=y
|
||||
CONFIG_XEN_PCIDEV_FRONTEND=y
|
||||
CONFIG_XEN_PRIVCMD=y
|
||||
CONFIG_XEN_PVH=y
|
||||
CONFIG_XEN_PVHVM=y
|
||||
CONFIG_XEN_PVHVM_SMP=y
|
||||
CONFIG_XEN_SAVE_RESTORE=y
|
||||
CONFIG_XEN_SCSI_FRONTEND=y
|
||||
CONFIG_XEN_SYS_HYPERVISOR=y
|
||||
CONFIG_XEN_WDT=y
|
||||
CONFIG_XEN_XENBUS_FRONTEND=y
|
||||
CONFIG_XPS=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
139
target/linux/x86/geode/config-5.10
Normal file
139
target/linux/x86/geode/config-5.10
Normal file
@ -0,0 +1,139 @@
|
||||
# CONFIG_3C515 is not set
|
||||
CONFIG_8139CP=y
|
||||
CONFIG_8139TOO=y
|
||||
CONFIG_8139TOO_8129=y
|
||||
CONFIG_8139TOO_PIO=y
|
||||
# CONFIG_8139TOO_TUNE_TWISTER is not set
|
||||
# CONFIG_8139_OLD_RX_RESET is not set
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
# CONFIG_ACPI_BATTERY is not set
|
||||
# CONFIG_ACPI_CMPC is not set
|
||||
# CONFIG_ACPI_CONTAINER is not set
|
||||
CONFIG_ACPI_CPU_FREQ_PSS=y
|
||||
# CONFIG_ACPI_DEBUG is not set
|
||||
# CONFIG_ACPI_DEBUGGER is not set
|
||||
# CONFIG_ACPI_DOCK is not set
|
||||
# CONFIG_ACPI_DPTF is not set
|
||||
# CONFIG_ACPI_EC_DEBUGFS is not set
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_HOTPLUG_IOAPIC=y
|
||||
CONFIG_ACPI_I2C_OPREGION=y
|
||||
CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
|
||||
# CONFIG_ACPI_PCI_SLOT is not set
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
|
||||
CONFIG_ACPI_PROCESSOR_CSTATE=y
|
||||
CONFIG_ACPI_PROCESSOR_IDLE=y
|
||||
CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
|
||||
# CONFIG_ACPI_SBS is not set
|
||||
CONFIG_ACPI_SPCR_TABLE=y
|
||||
CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
# CONFIG_ACPI_TINY_POWER_BUTTON is not set
|
||||
# CONFIG_ACPI_WMI is not set
|
||||
CONFIG_ALIX=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
|
||||
# CONFIG_ATA_PIIX is not set
|
||||
CONFIG_CS5535_CLOCK_EVENT_SRC=y
|
||||
CONFIG_CS5535_MFGPT=y
|
||||
CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
|
||||
CONFIG_DMA_ACPI=y
|
||||
# CONFIG_EL3 is not set
|
||||
CONFIG_GEODE_WDT=y
|
||||
CONFIG_GEOS=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_ACPI=y
|
||||
CONFIG_GPIO_CS5535=y
|
||||
# CONFIG_HPET is not set
|
||||
# CONFIG_HP_ACCEL is not set
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
CONFIG_I2C_ALGOPCA=y
|
||||
CONFIG_I2C_ALGOPCF=y
|
||||
# CONFIG_I2C_AMD_MP2 is not set
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
# CONFIG_I2C_MULTI_INSTANTIATE is not set
|
||||
# CONFIG_INTEL_ATOMISP2_LED is not set
|
||||
# CONFIG_INTEL_INT0002_VGPIO is not set
|
||||
# CONFIG_INTEL_IPS is not set
|
||||
# CONFIG_INTEL_MENLOW is not set
|
||||
# CONFIG_INTEL_SCU_PLATFORM is not set
|
||||
# CONFIG_INTEL_SOC_DTS_THERMAL is not set
|
||||
CONFIG_IOSF_MBI=y
|
||||
# CONFIG_IOSF_MBI_DEBUG is not set
|
||||
CONFIG_ISA=y
|
||||
# CONFIG_ISAPNP is not set
|
||||
CONFIG_ISA_BUS_API=y
|
||||
# CONFIG_ISCSI_IBFT is not set
|
||||
# CONFIG_LANCE is not set
|
||||
CONFIG_LEDS_GPIO=y
|
||||
# CONFIG_M686 is not set
|
||||
# CONFIG_MDA_CONSOLE is not set
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_CS5535=y
|
||||
# CONFIG_MFD_INTEL_LPSS_ACPI is not set
|
||||
# CONFIG_MFD_INTEL_PMC_BXT is not set
|
||||
CONFIG_MGEODEGX1=y
|
||||
# CONFIG_MIXCOMWD is not set
|
||||
CONFIG_NATSEMI=y
|
||||
CONFIG_NET5501=y
|
||||
CONFIG_NSC_GPIO=y
|
||||
CONFIG_PATA_CS5520=y
|
||||
CONFIG_PATA_CS5530=y
|
||||
CONFIG_PATA_CS5535=y
|
||||
CONFIG_PATA_CS5536=y
|
||||
CONFIG_PATA_SC1200=y
|
||||
CONFIG_PC8736x_GPIO=y
|
||||
# CONFIG_PCENGINES_APU2 is not set
|
||||
CONFIG_PCI_MMCONFIG=y
|
||||
# CONFIG_PCWATCHDOG is not set
|
||||
CONFIG_PINCTRL=y
|
||||
# CONFIG_PINCTRL_BAYTRAIL is not set
|
||||
# CONFIG_PINCTRL_BROXTON is not set
|
||||
# CONFIG_PINCTRL_CANNONLAKE is not set
|
||||
# CONFIG_PINCTRL_CHERRYVIEW is not set
|
||||
# CONFIG_PINCTRL_DENVERTON is not set
|
||||
# CONFIG_PINCTRL_EMMITSBURG is not set
|
||||
# CONFIG_PINCTRL_GEMINILAKE is not set
|
||||
# CONFIG_PINCTRL_JASPERLAKE is not set
|
||||
# CONFIG_PINCTRL_LEWISBURG is not set
|
||||
# CONFIG_PINCTRL_LYNXPOINT is not set
|
||||
# CONFIG_PINCTRL_SUNRISEPOINT is not set
|
||||
# CONFIG_PINCTRL_TIGERLAKE is not set
|
||||
# CONFIG_PMIC_OPREGION is not set
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PNPACPI=y
|
||||
# CONFIG_PNPBIOS is not set
|
||||
CONFIG_PNP_DEBUG_MESSAGES=y
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
# CONFIG_SAMSUNG_Q10 is not set
|
||||
CONFIG_SC1200_WDT=y
|
||||
# CONFIG_SCSI_FDOMAIN_ISA is not set
|
||||
CONFIG_SCx200_ACB=y
|
||||
CONFIG_SCx200_WDT=y
|
||||
# CONFIG_SENSORS_AMD_ENERGY is not set
|
||||
CONFIG_SENSORS_LM90=y
|
||||
CONFIG_SERIAL_8250_PNP=y
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
# CONFIG_SURFACE_3_POWER_OPREGION is not set
|
||||
# CONFIG_SURFACE_PRO3_BUTTON is not set
|
||||
# CONFIG_SYSTEM76_ACPI is not set
|
||||
# CONFIG_TOSHIBA_BT_RFKILL is not set
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
CONFIG_VIA_RHINE=y
|
||||
CONFIG_VIA_RHINE_MMIO=y
|
||||
# CONFIG_WDT is not set
|
||||
# CONFIG_X86_ACPI_CPUFREQ is not set
|
||||
CONFIG_X86_ALIGNMENT_16=y
|
||||
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
|
||||
CONFIG_X86_CPUID=y
|
||||
# CONFIG_X86_E_POWERSAVER is not set
|
||||
CONFIG_X86_INTEL_LPSS=y
|
||||
# CONFIG_X86_LONGHAUL is not set
|
||||
# CONFIG_X86_MCE is not set
|
||||
CONFIG_X86_MINIMUM_CPU_FAMILY=5
|
||||
# CONFIG_X86_PCC_CPUFREQ is not set
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
CONFIG_X86_REBOOTFIXUPS=y
|
||||
218
target/linux/x86/legacy/config-5.10
Normal file
218
target/linux/x86/legacy/config-5.10
Normal file
@ -0,0 +1,218 @@
|
||||
# CONFIG_3C515 is not set
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
# CONFIG_ACPI_CMPC is not set
|
||||
# CONFIG_ACPI_CONTAINER is not set
|
||||
CONFIG_ACPI_CPU_FREQ_PSS=y
|
||||
# CONFIG_ACPI_DEBUG is not set
|
||||
# CONFIG_ACPI_DEBUGGER is not set
|
||||
# CONFIG_ACPI_DOCK is not set
|
||||
# CONFIG_ACPI_DPTF is not set
|
||||
# CONFIG_ACPI_EC_DEBUGFS is not set
|
||||
# CONFIG_ACPI_FAN is not set
|
||||
CONFIG_ACPI_HOTPLUG_IOAPIC=y
|
||||
# CONFIG_ACPI_I2C_OPREGION is not set
|
||||
CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
|
||||
# CONFIG_ACPI_PCI_SLOT is not set
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
|
||||
CONFIG_ACPI_PROCESSOR_CSTATE=y
|
||||
CONFIG_ACPI_PROCESSOR_IDLE=y
|
||||
CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
|
||||
# CONFIG_ACPI_SBS is not set
|
||||
CONFIG_ACPI_SPCR_TABLE=y
|
||||
CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_ACPI_VIDEO=y
|
||||
# CONFIG_ACPI_WMI is not set
|
||||
CONFIG_AGP=y
|
||||
# CONFIG_AGP_ALI is not set
|
||||
# CONFIG_AGP_AMD is not set
|
||||
# CONFIG_AGP_AMD64 is not set
|
||||
# CONFIG_AGP_ATI is not set
|
||||
# CONFIG_AGP_EFFICEON is not set
|
||||
CONFIG_AGP_INTEL=y
|
||||
# CONFIG_AGP_NVIDIA is not set
|
||||
# CONFIG_AGP_SIS is not set
|
||||
# CONFIG_AGP_SWORKS is not set
|
||||
# CONFIG_AGP_VIA is not set
|
||||
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_CDROM=y
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_DMA_ACPI=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_AMDGPU=y
|
||||
# CONFIG_DRM_AMD_DC is not set
|
||||
# CONFIG_DRM_AMD_DC_SI is not set
|
||||
CONFIG_DRM_BOCHS=y
|
||||
CONFIG_DRM_BRIDGE=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||
CONFIG_DRM_I915=y
|
||||
CONFIG_DRM_I915_CAPTURE_ERROR=y
|
||||
CONFIG_DRM_I915_COMPRESS_ERROR=y
|
||||
# CONFIG_DRM_I915_DEBUG is not set
|
||||
# CONFIG_DRM_I915_DEBUG_GUC is not set
|
||||
# CONFIG_DRM_I915_DEBUG_MMIO is not set
|
||||
# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set
|
||||
# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
|
||||
CONFIG_DRM_I915_FENCE_TIMEOUT=10000
|
||||
CONFIG_DRM_I915_FORCE_PROBE=""
|
||||
CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
|
||||
# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
|
||||
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
|
||||
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
|
||||
# CONFIG_DRM_I915_SELFTEST is not set
|
||||
CONFIG_DRM_I915_STOP_TIMEOUT=100
|
||||
# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set
|
||||
# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set
|
||||
CONFIG_DRM_I915_TIMESLICE_DURATION=1
|
||||
CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
|
||||
CONFIG_DRM_I915_USERPTR=y
|
||||
# CONFIG_DRM_I915_WERROR is not set
|
||||
CONFIG_DRM_KMS_FB_HELPER=y
|
||||
CONFIG_DRM_KMS_HELPER=y
|
||||
CONFIG_DRM_MIPI_DSI=y
|
||||
CONFIG_DRM_PANEL=y
|
||||
CONFIG_DRM_PANEL_BRIDGE=y
|
||||
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
|
||||
CONFIG_DRM_RADEON=y
|
||||
CONFIG_DRM_SCHED=y
|
||||
CONFIG_DRM_TTM=y
|
||||
CONFIG_DRM_TTM_HELPER=y
|
||||
CONFIG_DRM_VRAM_HELPER=y
|
||||
# CONFIG_EL3 is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_CMDLINE=y
|
||||
CONFIG_FB_DEFERRED_IO=y
|
||||
# CONFIG_FB_I810 is not set
|
||||
CONFIG_FB_SYS_COPYAREA=y
|
||||
CONFIG_FB_SYS_FILLRECT=y
|
||||
CONFIG_FB_SYS_FOPS=y
|
||||
CONFIG_FB_SYS_IMAGEBLIT=y
|
||||
# CONFIG_FB_VESA is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_HDMI=y
|
||||
CONFIG_HID_BATTERY_STRENGTH=y
|
||||
# CONFIG_HIGHMEM4G is not set
|
||||
CONFIG_HPET=y
|
||||
CONFIG_HPET_MMAP=y
|
||||
# CONFIG_HP_ACCEL is not set
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_AMD_MP2 is not set
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
# CONFIG_I2C_MULTI_INSTANTIATE is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
CONFIG_INTEL_GTT=y
|
||||
CONFIG_INTEL_IDLE=y
|
||||
# CONFIG_INTEL_IPS is not set
|
||||
# CONFIG_INTEL_MEI_HDCP is not set
|
||||
# CONFIG_INTEL_MENLOW is not set
|
||||
# CONFIG_INTEL_SCU_PLATFORM is not set
|
||||
# CONFIG_INTEL_SOC_DTS_THERMAL is not set
|
||||
CONFIG_INTERVAL_TREE=y
|
||||
CONFIG_IOSF_MBI=y
|
||||
# CONFIG_IOSF_MBI_DEBUG is not set
|
||||
CONFIG_ISA=y
|
||||
CONFIG_ISAPNP=y
|
||||
CONFIG_ISA_BUS_API=y
|
||||
# CONFIG_ISCSI_IBFT is not set
|
||||
CONFIG_ISO9660_FS=y
|
||||
# CONFIG_JOLIET is not set
|
||||
CONFIG_KCMP=y
|
||||
# CONFIG_LANCE is not set
|
||||
CONFIG_M586MMX=y
|
||||
# CONFIG_M686 is not set
|
||||
# CONFIG_MDA_CONSOLE is not set
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_INTEL_LPSS=y
|
||||
CONFIG_MFD_INTEL_LPSS_ACPI=y
|
||||
# CONFIG_MFD_INTEL_PMC_BXT is not set
|
||||
# CONFIG_MIXCOMWD is not set
|
||||
CONFIG_MMU_NOTIFIER=y
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
# CONFIG_MOUSE_CYAPA is not set
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
# CONFIG_MOUSE_PS2_BYD is not set
|
||||
# CONFIG_MOUSE_PS2_CYPRESS is not set
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
CONFIG_MOUSE_PS2_LIFEBOOK=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SMBUS=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_VSXXXAA is not set
|
||||
CONFIG_NOHIGHMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_PATA_AMD=y
|
||||
CONFIG_PATA_ATIIXP=y
|
||||
CONFIG_PATA_LEGACY=y
|
||||
CONFIG_PATA_MPIIX=y
|
||||
CONFIG_PATA_OLDPIIX=y
|
||||
CONFIG_PATA_PLATFORM=y
|
||||
CONFIG_PATA_SC1200=y
|
||||
CONFIG_PATA_TIMINGS=y
|
||||
CONFIG_PATA_VIA=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCI_MMCONFIG=y
|
||||
# CONFIG_PCWATCHDOG is not set
|
||||
# CONFIG_PMIC_OPREGION is not set
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PNPACPI=y
|
||||
# CONFIG_PNPBIOS is not set
|
||||
CONFIG_PNP_DEBUG_MESSAGES=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
# CONFIG_SAMSUNG_Q10 is not set
|
||||
CONFIG_SATA_AHCI=y
|
||||
# CONFIG_SCSI_FDOMAIN_ISA is not set
|
||||
# CONFIG_SENSORS_AMD_ENERGY is not set
|
||||
CONFIG_SERIAL_8250_PNP=y
|
||||
# CONFIG_SURFACE_3_POWER_OPREGION is not set
|
||||
# CONFIG_SURFACE_PRO3_BUTTON is not set
|
||||
CONFIG_SYNC_FILE=y
|
||||
# CONFIG_SYSTEM76_ACPI is not set
|
||||
# CONFIG_TOSHIBA_BT_RFKILL is not set
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_VMAP_PFN=y
|
||||
# CONFIG_WDT is not set
|
||||
CONFIG_X86_ACPI_CPUFREQ=y
|
||||
# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
|
||||
CONFIG_X86_ALIGNMENT_16=y
|
||||
# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set
|
||||
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
|
||||
# CONFIG_X86_E_POWERSAVER is not set
|
||||
CONFIG_X86_F00F_BUG=y
|
||||
# CONFIG_X86_INTEL_LPSS is not set
|
||||
# CONFIG_X86_LONGHAUL is not set
|
||||
CONFIG_X86_MINIMUM_CPU_FAMILY=5
|
||||
# CONFIG_X86_PAE is not set
|
||||
# CONFIG_X86_PCC_CPUFREQ is not set
|
||||
CONFIG_X86_PM_TIMER=y
|
||||
# CONFIG_X86_POWERNOW_K8 is not set
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
22
target/linux/x86/patches-5.10/011-tune_lzma_options.patch
Normal file
22
target/linux/x86/patches-5.10/011-tune_lzma_options.patch
Normal file
@ -0,0 +1,22 @@
|
||||
--- a/scripts/Makefile.lib
|
||||
+++ b/scripts/Makefile.lib
|
||||
@@ -370,7 +370,7 @@ quiet_cmd_bzip2 = BZIP2 $@
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
quiet_cmd_lzma = LZMA $@
|
||||
- cmd_lzma = { cat $(real-prereqs) | $(LZMA) e -d20 -lc1 -lp2 -pb2 -eos -si -so; $(size_append); } > $@
|
||||
+ cmd_lzma = { cat $(real-prereqs) | $(LZMA) e -lc8 -eos -si -so; $(size_append); } > $@
|
||||
|
||||
quiet_cmd_lzo = LZO $@
|
||||
cmd_lzo = { cat $(real-prereqs) | $(KLZOP) -9; $(size_append); } > $@
|
||||
--- a/arch/x86/include/asm/boot.h
|
||||
+++ b/arch/x86/include/asm/boot.h
|
||||
@@ -24,7 +24,7 @@
|
||||
# error "Invalid value for CONFIG_PHYSICAL_ALIGN"
|
||||
#endif
|
||||
|
||||
-#if defined(CONFIG_KERNEL_BZIP2)
|
||||
+#if defined(CONFIG_KERNEL_BZIP2) || defined(CONFIG_KERNEL_LZMA)
|
||||
# define BOOT_HEAP_SIZE 0x400000
|
||||
#elif defined(CONFIG_KERNEL_ZSTD)
|
||||
/*
|
||||
@ -0,0 +1,50 @@
|
||||
From 3d00da1de3ea36ba44f4a7ba76c8c8b16f98204b Mon Sep 17 00:00:00 2001
|
||||
From: "Enrico Weigelt, metux IT consult" <info@metux.net>
|
||||
Date: Thu, 12 Dec 2019 14:27:56 +0100
|
||||
Subject: [PATCH] platform/x86: pcengines-apuv2: detect apuv4 board
|
||||
|
||||
GPIO stuff on APUv4 seems to be the same as on APUv2, so we just
|
||||
need to match on DMI data.
|
||||
|
||||
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
|
||||
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
---
|
||||
drivers/platform/x86/pcengines-apuv2.c | 27 ++++++++++++++++++++++++++
|
||||
1 file changed, 27 insertions(+)
|
||||
|
||||
--- a/drivers/platform/x86/pcengines-apuv2.c
|
||||
+++ b/drivers/platform/x86/pcengines-apuv2.c
|
||||
@@ -213,6 +213,33 @@ static const struct dmi_system_id apu_gp
|
||||
},
|
||||
.driver_data = (void *)&board_apu2,
|
||||
},
|
||||
+ /* APU4 w/ legacy bios < 4.0.8 */
|
||||
+ {
|
||||
+ .ident = "apu4",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "APU4")
|
||||
+ },
|
||||
+ .driver_data = (void *)&board_apu2,
|
||||
+ },
|
||||
+ /* APU4 w/ legacy bios >= 4.0.8 */
|
||||
+ {
|
||||
+ .ident = "apu4",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "apu4")
|
||||
+ },
|
||||
+ .driver_data = (void *)&board_apu2,
|
||||
+ },
|
||||
+ /* APU4 w/ mainline bios */
|
||||
+ {
|
||||
+ .ident = "apu4",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "PC Engines apu4")
|
||||
+ },
|
||||
+ .driver_data = (void *)&board_apu2,
|
||||
+ },
|
||||
{}
|
||||
};
|
||||
|
||||
13
target/linux/x86/patches-5.10/100-fix_cs5535_clockevt.patch
Normal file
13
target/linux/x86/patches-5.10/100-fix_cs5535_clockevt.patch
Normal file
@ -0,0 +1,13 @@
|
||||
--- a/drivers/clocksource/timer-cs5535.c
|
||||
+++ b/drivers/clocksource/timer-cs5535.c
|
||||
@@ -127,7 +127,9 @@ static irqreturn_t mfgpt_tick(int irq, v
|
||||
cs5535_mfgpt_write(cs5535_event_clock, MFGPT_REG_SETUP,
|
||||
MFGPT_SETUP_CNTEN | MFGPT_SETUP_CMP2);
|
||||
|
||||
- cs5535_clockevent.event_handler(&cs5535_clockevent);
|
||||
+ if (cs5535_clockevent.event_handler)
|
||||
+ cs5535_clockevent.event_handler(&cs5535_clockevent);
|
||||
+
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
--- a/arch/x86/kernel/reboot.c
|
||||
+++ b/arch/x86/kernel/reboot.c
|
||||
@@ -477,6 +477,16 @@ static const struct dmi_system_id reboot
|
||||
},
|
||||
},
|
||||
|
||||
+ /* PC Engines */
|
||||
+ { /* Handle problems with rebooting on PC Engines apu2 */
|
||||
+ .callback = set_pci_reboot,
|
||||
+ .ident = "PC Engines apu2",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_BOARD_VENDOR, "PC Engines"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "apu2"),
|
||||
+ },
|
||||
+ },
|
||||
+
|
||||
/* Sony */
|
||||
{ /* Handle problems with rebooting on Sony VGN-Z540N */
|
||||
.callback = set_bios_reboot,
|
||||
41
target/linux/x86/patches-5.10/300-pcengines_apu1_led.patch
Normal file
41
target/linux/x86/patches-5.10/300-pcengines_apu1_led.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From: Andreas Eberlein <foodeas@aeberlein.de>
|
||||
Subject: x86: add LED support for PC Engines APU1 with mainline bios
|
||||
|
||||
This adds support for the LEDs on PC Engines APU1 with the mainline bios.
|
||||
|
||||
Signed-off-by: Andreas Eberlein <foodeas@aeberlein.de>
|
||||
---
|
||||
--- a/drivers/leds/leds-apu.c
|
||||
+++ b/drivers/leds/leds-apu.c
|
||||
@@ -83,6 +83,7 @@ static const struct apu_led_profile apu1
|
||||
};
|
||||
|
||||
static const struct dmi_system_id apu_led_dmi_table[] __initconst = {
|
||||
+ /* PC Engines APU with "Legacy" bios < 4.0.8 */
|
||||
{
|
||||
.ident = "apu",
|
||||
.matches = {
|
||||
@@ -90,6 +91,14 @@ static const struct dmi_system_id apu_le
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "APU")
|
||||
}
|
||||
},
|
||||
+ /* PC Engines APU with "Mainline" bios >= 4.0.8 */
|
||||
+ {
|
||||
+ .ident = "apu",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "apu1")
|
||||
+ }
|
||||
+ },
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(dmi, apu_led_dmi_table);
|
||||
@@ -173,7 +182,7 @@ static int __init apu_led_init(void)
|
||||
int err;
|
||||
|
||||
if (!(dmi_match(DMI_SYS_VENDOR, "PC Engines") &&
|
||||
- dmi_match(DMI_PRODUCT_NAME, "APU"))) {
|
||||
+ (dmi_match(DMI_PRODUCT_NAME, "APU") || dmi_match(DMI_PRODUCT_NAME, "apu1")))) {
|
||||
pr_err("No PC Engines APUv1 board detected. For APUv2,3 support, enable CONFIG_PCENGINES_APU2\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
@ -287,7 +287,6 @@ static int otrx_create_write_hdr(FILE *trx, struct trx_header *hdr) {
|
||||
uint8_t buf[1024];
|
||||
uint32_t crc32;
|
||||
|
||||
hdr->magic = cpu_to_le32(TRX_MAGIC);
|
||||
hdr->version = 1;
|
||||
|
||||
fseek(trx, 0, SEEK_SET);
|
||||
@ -324,9 +323,13 @@ static int otrx_create(int argc, char **argv) {
|
||||
ssize_t sbytes;
|
||||
size_t curr_idx = 0;
|
||||
size_t curr_offset = sizeof(hdr);
|
||||
char *e;
|
||||
uint32_t magic;
|
||||
int c;
|
||||
int err = 0;
|
||||
|
||||
hdr.magic = cpu_to_le32(TRX_MAGIC);
|
||||
|
||||
if (argc < 3) {
|
||||
fprintf(stderr, "No TRX file passed\n");
|
||||
err = -EINVAL;
|
||||
@ -343,7 +346,7 @@ static int otrx_create(int argc, char **argv) {
|
||||
fseek(trx, curr_offset, SEEK_SET);
|
||||
|
||||
optind = 3;
|
||||
while ((c = getopt(argc, argv, "f:A:a:b:")) != -1) {
|
||||
while ((c = getopt(argc, argv, "f:A:a:b:M:")) != -1) {
|
||||
switch (c) {
|
||||
case 'f':
|
||||
if (curr_idx >= TRX_MAX_PARTS) {
|
||||
@ -400,6 +403,14 @@ static int otrx_create(int argc, char **argv) {
|
||||
curr_offset += sbytes;
|
||||
}
|
||||
break;
|
||||
case 'M':
|
||||
errno = 0;
|
||||
magic = strtoul(optarg, &e, 0);
|
||||
if (errno || (e == optarg) || *e)
|
||||
fprintf(stderr, "illegal magic string %s\n", optarg);
|
||||
else
|
||||
hdr.magic = cpu_to_le32(magic);
|
||||
break;
|
||||
}
|
||||
if (err)
|
||||
break;
|
||||
|
||||
@ -630,7 +630,6 @@ int main (int argc, char **argv)
|
||||
break;
|
||||
case 't':
|
||||
type = (char)strtoul(optarg, NULL, 16);
|
||||
part_guid = type_to_guid_and_name(type, &name);
|
||||
break;
|
||||
case 'a':
|
||||
active = (int)strtoul(optarg, NULL, 0);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user