Merge Offical Source

This commit is contained in:
CN_SZTL 2020-02-14 01:29:22 +08:00
commit c9a2a8dc86
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
37 changed files with 385 additions and 152 deletions

View File

@ -588,7 +588,7 @@ define Device/Build/image
DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \
DEVICE_TITLE="$(DEVICE_TITLE)" \
TARGET="$(BOARD)" \
SUBTARGET="$(SUBTARGET)" \
SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \
VERSION_NUMBER="$(VERSION_NUMBER)" \
VERSION_CODE="$(VERSION_CODE)" \
SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \

View File

@ -64,92 +64,92 @@ define Download/ct-firmware-htt
URL_FILE:=$($(1)_FIRMWARE_FILE_CT_HTT)
endef
QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.014
QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.015
define Download/ath10k-firmware-qca988x-ct
$(call Download/ct-firmware,QCA988X,)
HASH:=19db86003509dedb8ace339c183813ca637d65af24d00666411d1590efe33e13
HASH:=a3a760d0d72707feffa496b6d2266bd9195f09806553b36420b60c0f12b8b87e
endef
$(eval $(call Download,ath10k-firmware-qca988x-ct))
QCA988X_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.014
QCA988X_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.015
define Download/ath10k-firmware-qca988x-ct-htt
$(call Download/ct-firmware-htt,QCA988X,)
HASH:=454e67dab545e720369a07be2fee16de008c76db4ab3119e7760bf9f7504c066
HASH:=3114a54103d2b492fa1ef903769721f59953c829020d62502a1ec411ab4146d5
endef
$(eval $(call Download,ath10k-firmware-qca988x-ct-htt))
QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.014
QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.015
define Download/ath10k-firmware-qca9887-ct
$(call Download/ct-firmware,QCA9887,ath10k-9887)
HASH:=b3c738328427e124701a5735d65cde0f60e4172ae5bc23b00e5b16df7995dbd4
HASH:=71e8b76dfd7c786d2f57bb7df207dcd13a91d3b492cfbd28916f084d0d1bb5e7
endef
$(eval $(call Download,ath10k-firmware-qca9887-ct))
QCA9887_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.014
QCA9887_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.015
define Download/ath10k-firmware-qca9887-ct-htt
$(call Download/ct-firmware-htt,QCA9887,ath10k-9887)
HASH:=4432ccee23133bbaa4a5552e50a1e7e889b257362603e05530e751b67c29b7b5
HASH:=b085e5d2239727b72bc647a76864431b8ac48438e6a33b1d55edc2222468f6ff
endef
$(eval $(call Download,ath10k-firmware-qca9887-ct-htt))
QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.014
QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.015
define Download/ath10k-firmware-qca99x0-ct
$(call Download/ct-firmware,QCA99X0,ath10k-10-4b)
HASH:=9a908f743604a468b651a5f73c49e6b0ba11a05c677b9726fbf041b849d88b25
HASH:=edebe2f6f169cdd05c81a8a78156fb3426a66f415e7946af2ae4b7310fca5fe3
endef
$(eval $(call Download,ath10k-firmware-qca99x0-ct))
QCA99X0_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.014
QCA99X0_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.015
define Download/ath10k-firmware-qca99x0-ct-htt
$(call Download/ct-firmware-htt,QCA99X0,ath10k-10-4b)
HASH:=800dd0816702aaca75f3eb5436c2ea724a6c24833838cd54399b9286b4d4fbe8
HASH:=1ef67fb07da9082886e4dd554dfc19256e10b500faf9e4b2a5774d0238130bae
endef
$(eval $(call Download,ath10k-firmware-qca99x0-ct-htt))
QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.014
QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.015
define Download/ath10k-firmware-qca9984-ct
$(call Download/ct-firmware,QCA9984,ath10k-9984-10-4b)
HASH:=a8b12dba478e8c9d4a215f82324382c7554a900e83c31775f8511af84e59fef7
HASH:=c2f04da3285aad37baef9c37c9905a31927175dd234cd4378fd56c106e5c9379
endef
$(eval $(call Download,ath10k-firmware-qca9984-ct))
QCA9984_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.014
QCA9984_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.015
define Download/ath10k-firmware-qca9984-ct-htt
$(call Download/ct-firmware-htt,QCA9984,ath10k-9984-10-4b)
HASH:=d185651b5d3d1f0082720bc6c2bbe43b2a00cdb6333403fac9336a720b1d93ae
HASH:=0c9ede1036750d68885e6481fa84f3cb72192b8440b47719344f7327a030f05d
endef
$(eval $(call Download,ath10k-firmware-qca9984-ct-htt))
QCA4019_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.014
QCA4019_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.015
define Download/ath10k-firmware-qca4019-ct
$(call Download/ct-firmware,QCA4019,ath10k-4019-10-4b)
HASH:=4c2e48835219f420b18dc58e31d1387dae0da70d8170c3fc5e7bce39c06cf355
HASH:=1acbb7e7a6300091715a3dfe1b248c7833734961de52cc3465c1ed231a4d84f1
endef
$(eval $(call Download,ath10k-firmware-qca4019-ct))
QCA4019_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.014
QCA4019_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.015
define Download/ath10k-firmware-qca4019-ct-htt
$(call Download/ct-firmware-htt,QCA4019,ath10k-4019-10-4b)
HASH:=743da4d537d094a7839bd8e1f792e4cb8b517101f66777c84fd84585f0b85e64
HASH:=1065e4d3e55da84ec9e69268a4c5dba55ea33827c48a7c14bb8f0c167eb11b4c
endef
$(eval $(call Download,ath10k-firmware-qca4019-ct-htt))
QCA9888_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.014
QCA9888_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.015
define Download/ath10k-firmware-qca9888-ct
$(call Download/ct-firmware,QCA9888,ath10k-9888-10-4b)
HASH:=5809c8a6b3bd81cbc829b5e90af3c0a3300488fe194524a90e260448158016b6
HASH:=559ebd16872a8b43443c51bb4b7d021e5b75e65893d333d9393f3f6012f4ac79
endef
$(eval $(call Download,ath10k-firmware-qca9888-ct))
QCA9888_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.014
QCA9888_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.015
define Download/ath10k-firmware-qca9888-ct-htt
$(call Download/ct-firmware-htt,QCA9888,ath10k-9888-10-4b)
HASH:=a284943c203ff66ec2e865f20ae2d2aa049b450801d7205b53c9163862228f15
HASH:=4feaf5e7c4c1745f499ba8c3125db41675800ebedaea455c418c117805c5b372
endef
$(eval $(call Download,ath10k-firmware-qca9888-ct-htt))

View File

@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2019-09-09
PKG_SOURCE_VERSION:=5e8cd86f90dac966d12df6ece84ac41458d0e95f
PKG_MIRROR_HASH:=dc1097f3a7b4b7e346918f206746d00a0b7df07ae3be9b89be55dfaef3cbbe45
PKG_SOURCE_DATE:=2020-01-29
PKG_SOURCE_VERSION:=3e3d0adb3cc6c6cf56a05ff661796948f09c5aa8
PKG_MIRROR_HASH:=6341de2d3b19b2a32205a1633bf9556815943a2cff38acbbe5f61c6c0164fdcc
# Build the 5.2 ath10k-ct driver version. Other option is "-4.19".
# Probably this should match as closely as

View File

@ -43,7 +43,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
static int ath10k_mac_get_max_vht_mcs_map(u16 mcs_map, int nss)
{
switch ((mcs_map >> (2 * nss)) & 0x3) {
@@ -6405,9 +6421,10 @@ static void ath10k_bss_info_changed(stru
@@ -6413,9 +6429,10 @@ static void ath10k_bss_info_changed(stru
struct cfg80211_chan_def def;
u32 vdev_param, pdev_param, slottime, preamble;
u16 bitrate, hw_value;
@ -56,7 +56,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
mutex_lock(&ar->conf_mutex);
@@ -6613,6 +6630,30 @@ static void ath10k_bss_info_changed(stru
@@ -6621,6 +6638,30 @@ static void ath10k_bss_info_changed(stru
arvif->vdev_id, ret);
}

View File

@ -26,7 +26,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
if (ath10k_rates[i].bitrate == bitrate)
return hw_value_prefix | ath10k_rates[i].hw_value;
}
@@ -6636,22 +6636,22 @@ static void ath10k_bss_info_changed(stru
@@ -6644,22 +6644,22 @@ static void ath10k_bss_info_changed(stru
return;
}

View File

@ -17,7 +17,7 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/
--- a/ath10k-4.19/mac.c
+++ b/ath10k-4.19/mac.c
@@ -6421,8 +6421,8 @@ static void ath10k_bss_info_changed(stru
@@ -6429,8 +6429,8 @@ static void ath10k_bss_info_changed(stru
struct cfg80211_chan_def def;
u32 vdev_param, pdev_param, slottime, preamble;
u16 bitrate, hw_value;
@ -28,7 +28,7 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/
enum nl80211_band band;
const struct ieee80211_supported_band *sband;
@@ -6595,7 +6595,11 @@ static void ath10k_bss_info_changed(stru
@@ -6603,7 +6603,11 @@ static void ath10k_bss_info_changed(stru
if (changed & BSS_CHANGED_MCAST_RATE &&
!WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) {
band = def.chan->band;

View File

@ -11,7 +11,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
--- a/ath10k-4.19/mac.c
+++ b/ath10k-4.19/mac.c
@@ -6617,6 +6617,7 @@ static void ath10k_bss_info_changed(stru
@@ -6625,6 +6625,7 @@ static void ath10k_bss_info_changed(stru
"mac vdev %d mcast_rate %x\n",
arvif->vdev_id, rate);
@ -19,7 +19,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
vdev_param = ar->wmi.vdev_param->mcast_data_rate;
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
vdev_param, rate);
@@ -6625,6 +6626,7 @@ static void ath10k_bss_info_changed(stru
@@ -6633,6 +6634,7 @@ static void ath10k_bss_info_changed(stru
"failed to set mcast rate on vdev %i: %d\n",
arvif->vdev_id, ret);
@ -27,7 +27,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
vdev_param = ar->wmi.vdev_param->bcast_data_rate;
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
vdev_param, rate);
@@ -6651,6 +6653,7 @@ static void ath10k_bss_info_changed(stru
@@ -6659,6 +6661,7 @@ static void ath10k_bss_info_changed(stru
return;
}
@ -37,7 +37,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
hw_rate_code);
--- a/ath10k-5.2/mac.c
+++ b/ath10k-5.2/mac.c
@@ -6732,6 +6732,7 @@ static void ath10k_bss_info_changed(stru
@@ -6742,6 +6742,7 @@ static void ath10k_bss_info_changed(stru
"mac vdev %d mcast_rate %x\n",
arvif->vdev_id, rate);
@ -45,7 +45,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
vdev_param = ar->wmi.vdev_param->mcast_data_rate;
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
vdev_param, rate);
@@ -6740,6 +6741,7 @@ static void ath10k_bss_info_changed(stru
@@ -6750,6 +6751,7 @@ static void ath10k_bss_info_changed(stru
"failed to set mcast rate on vdev %i: %d\n",
arvif->vdev_id, ret);
@ -53,7 +53,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
vdev_param = ar->wmi.vdev_param->bcast_data_rate;
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
vdev_param, rate);
@@ -6766,6 +6768,7 @@ static void ath10k_bss_info_changed(stru
@@ -6776,6 +6778,7 @@ static void ath10k_bss_info_changed(stru
return;
}

View File

@ -17,7 +17,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/ath10k-4.19/mac.c
+++ b/ath10k-4.19/mac.c
@@ -7775,7 +7775,8 @@ exit:
@@ -7783,7 +7783,8 @@ exit:
return ret;
}
@ -29,7 +29,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/ath10k-5.2/mac.c
+++ b/ath10k-5.2/mac.c
@@ -7883,7 +7883,8 @@ exit:
@@ -7893,7 +7893,8 @@ exit:
return ret;
}

View File

@ -161,7 +161,7 @@ v13:
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
@@ -3167,6 +3173,10 @@ int ath10k_core_start(struct ath10k *ar,
@@ -3170,6 +3176,10 @@ int ath10k_core_start(struct ath10k *ar,
ath10k_wmi_check_apply_board_power_ctl_table(ar);
}
@ -172,7 +172,7 @@ v13:
return 0;
err_hif_stop:
@@ -3421,9 +3431,18 @@ static void ath10k_core_register_work(st
@@ -3424,9 +3434,18 @@ static void ath10k_core_register_work(st
goto err_spectral_destroy;
}
@ -191,7 +191,7 @@ v13:
err_spectral_destroy:
ath10k_spectral_destroy(ar);
err_debug_destroy:
@@ -3481,6 +3500,8 @@ void ath10k_core_unregister(struct ath10
@@ -3484,6 +3503,8 @@ void ath10k_core_unregister(struct ath10
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
return;
@ -464,7 +464,7 @@ v13:
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
--- a/ath10k-4.19/wmi.c
+++ b/ath10k-4.19/wmi.c
@@ -8070,6 +8070,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
@@ -8071,6 +8071,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
return skb;
}
@ -514,7 +514,7 @@ v13:
static struct sk_buff *
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
enum wmi_sta_ps_mode psmode)
@@ -9821,6 +9864,9 @@ static const struct wmi_ops wmi_ops = {
@@ -9822,6 +9865,9 @@ static const struct wmi_ops wmi_ops = {
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@ -524,7 +524,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -9891,6 +9937,8 @@ static const struct wmi_ops wmi_10_1_ops
@@ -9892,6 +9938,8 @@ static const struct wmi_ops wmi_10_1_ops
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@ -533,7 +533,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -9969,6 +10017,8 @@ static const struct wmi_ops wmi_10_2_ops
@@ -9970,6 +10018,8 @@ static const struct wmi_ops wmi_10_2_ops
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
@ -542,7 +542,7 @@ v13:
/* .gen_pdev_enable_adaptive_cca not implemented */
};
@@ -10039,6 +10089,8 @@ static const struct wmi_ops wmi_10_2_4_o
@@ -10040,6 +10090,8 @@ static const struct wmi_ops wmi_10_2_4_o
.gen_pdev_enable_adaptive_cca =
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
@ -551,7 +551,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -10119,6 +10171,8 @@ static const struct wmi_ops wmi_10_4_ops
@@ -10120,6 +10172,8 @@ static const struct wmi_ops wmi_10_4_ops
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
.gen_echo = ath10k_wmi_op_gen_echo,
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
@ -683,7 +683,7 @@ v13:
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
@@ -3452,6 +3458,10 @@ int ath10k_core_start(struct ath10k *ar,
@@ -3497,6 +3503,10 @@ int ath10k_core_start(struct ath10k *ar,
ath10k_wmi_check_apply_board_power_ctl_table(ar);
}
@ -694,7 +694,7 @@ v13:
return 0;
err_hif_stop:
@@ -3708,9 +3718,18 @@ static void ath10k_core_register_work(st
@@ -3753,9 +3763,18 @@ static void ath10k_core_register_work(st
goto err_spectral_destroy;
}
@ -713,7 +713,7 @@ v13:
err_spectral_destroy:
ath10k_spectral_destroy(ar);
err_debug_destroy:
@@ -3770,6 +3789,8 @@ void ath10k_core_unregister(struct ath10
@@ -3815,6 +3834,8 @@ void ath10k_core_unregister(struct ath10
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
return;
@ -732,7 +732,7 @@ v13:
#include "htt.h"
#include "htc.h"
@@ -1441,6 +1442,13 @@ struct ath10k {
@@ -1447,6 +1448,13 @@ struct ath10k {
} testmode;
struct {
@ -978,7 +978,7 @@ v13:
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
--- a/ath10k-5.2/wmi.c
+++ b/ath10k-5.2/wmi.c
@@ -8286,6 +8286,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
@@ -8295,6 +8295,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
return skb;
}
@ -1028,7 +1028,7 @@ v13:
static struct sk_buff *
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
enum wmi_sta_ps_mode psmode)
@@ -10058,6 +10101,9 @@ static const struct wmi_ops wmi_ops = {
@@ -10067,6 +10110,9 @@ static const struct wmi_ops wmi_ops = {
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@ -1038,7 +1038,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -10128,6 +10174,8 @@ static const struct wmi_ops wmi_10_1_ops
@@ -10137,6 +10183,8 @@ static const struct wmi_ops wmi_10_1_ops
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@ -1047,7 +1047,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -10207,6 +10255,8 @@ static const struct wmi_ops wmi_10_2_ops
@@ -10216,6 +10264,8 @@ static const struct wmi_ops wmi_10_2_ops
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
@ -1056,7 +1056,7 @@ v13:
/* .gen_pdev_enable_adaptive_cca not implemented */
};
@@ -10278,6 +10328,8 @@ static const struct wmi_ops wmi_10_2_4_o
@@ -10287,6 +10337,8 @@ static const struct wmi_ops wmi_10_2_4_o
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
.gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing,
@ -1065,7 +1065,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -10359,6 +10411,8 @@ static const struct wmi_ops wmi_10_4_ops
@@ -10368,6 +10420,8 @@ static const struct wmi_ops wmi_10_4_ops
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
.gen_echo = ath10k_wmi_op_gen_echo,
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,

View File

@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
--- a/ath10k-4.19/core.h
+++ b/ath10k-4.19/core.h
@@ -1488,6 +1488,10 @@ struct ath10k {
@@ -1489,6 +1489,10 @@ struct ath10k {
u8 csi_data[4096];
u16 csi_data_len;
@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
if (ret)
--- a/ath10k-4.19/mac.c
+++ b/ath10k-4.19/mac.c
@@ -9983,7 +9983,7 @@ int ath10k_mac_register(struct ath10k *a
@@ -9987,7 +9987,7 @@ int ath10k_mac_register(struct ath10k *a
wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
#ifdef CPTCFG_MAC80211_LEDS
@ -53,7 +53,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
#endif
--- a/ath10k-5.2/core.h
+++ b/ath10k-5.2/core.h
@@ -1543,6 +1543,10 @@ struct ath10k {
@@ -1550,6 +1550,10 @@ struct ath10k {
u8 csi_data[4096];
u16 csi_data_len;
@ -79,7 +79,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
if (ret)
--- a/ath10k-5.2/mac.c
+++ b/ath10k-5.2/mac.c
@@ -10179,7 +10179,7 @@ int ath10k_mac_register(struct ath10k *a
@@ -10187,7 +10187,7 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
#ifdef CPTCFG_MAC80211_LEDS

View File

@ -29,7 +29,7 @@ Forwarded: https://patchwork.kernel.org/patch/10549245/
#include <net/mac80211.h>
#include <linux/etherdevice.h>
#include <linux/acpi.h>
@@ -9707,6 +9708,7 @@ int ath10k_mac_register(struct ath10k *a
@@ -9711,6 +9712,7 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->wiphy->bands[NL80211_BAND_5GHZ] = band;
}

View File

@ -70,7 +70,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
--- a/ath10k-5.2/htt_rx.c
+++ b/ath10k-5.2/htt_rx.c
@@ -2507,7 +2507,7 @@ do_generic:
@@ -2568,7 +2568,7 @@ do_generic:
spin_lock_bh(&ar->data_lock);
peer = ath10k_peer_find_by_id(ar, peer_id);

View File

@ -894,7 +894,7 @@ drv_mac80211_setup() {
staidx=0
[ -n "$chanbw" ] && {
for file in /sys/kernel/debug/ieee80211/$phy/ath9k/chanbw /sys/kernel/debug/ieee80211/$phy/ath5k/bwmode; do
for file in /sys/kernel/debug/ieee80211/$phy/ath9k*/chanbw /sys/kernel/debug/ieee80211/$phy/ath5k/bwmode; do
[ -f "$file" ] && echo "$chanbw" > "$file"
done
}

View File

@ -8,13 +8,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=uhttpd
PKG_RELEASE:=2
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uhttpd.git
PKG_SOURCE_DATE:=2019-12-22
PKG_SOURCE_VERSION:=5f9ae5738372aaa3a6be2f0a278933563d3f191a
PKG_MIRROR_HASH:=16977c2d7e68f6db3241f874df625af9bd3bafa06fe4499ecb3561c825321e5d
PKG_SOURCE_DATE:=2020-02-12
PKG_SOURCE_VERSION:=2ee323c01079248baa9465969df9e25b5fb68cdf
PKG_MIRROR_HASH:=ebec09286cf5f977cac893931a5a4f27ba891db88d5e44a9b0de9446ae431527
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=ISC

View File

@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git
PKG_SOURCE_DATE:=2020-02-04
PKG_SOURCE_VERSION:=bcb86554f1b454531e79dac82fcb0463d125f2fb
PKG_MIRROR_HASH:=a36de3a8a5849616d251403b6a89ffb078507e4278ce09e86fec2f9a0583a426
PKG_SOURCE_DATE:=2020-02-11
PKG_SOURCE_VERSION:=c30b23e3657a2838a99daa8bd2d16909c027a261
PKG_MIRROR_HASH:=cb105e0269d6fb5641ab636f36b943652302a3341bc0068eff38a646d34ae80d
CMAKE_INSTALL:=1
PKG_LICENSE:=GPL-2.0

View File

@ -32,10 +32,11 @@
};
};
leds {
leds: leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&switch_led_pins>;
pinctrl-0 = <&pinmux_switch_led_pins>;
led_system: system {
label = "tp-link:green:system";
@ -46,31 +47,6 @@
label = "tp-link:green:qss";
gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
};
lan1 {
label = "tp-link:green:lan1";
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
};
lan2 {
label = "tp-link:green:lan2";
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
};
lan3 {
label = "tp-link:green:lan3";
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
};
lan4 {
label = "tp-link:green:lan4";
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
};
wan {
label = "tp-link:green:wan";
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
};
};
ath9k-leds {
@ -105,7 +81,7 @@
read-only;
};
firmware: partition@20000 {
partition@20000 {
compatible = "tplink,firmware";
reg = <0x20000 0x3d0000>;
label = "firmware";
@ -120,25 +96,14 @@
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
};
&eth1 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>;
};
&pcie {
status = "okay";
ath9k: wifi@0,0 {
compatible = "pci168c,002b";
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
mtd-mac-address = <&uboot 0x1fc00>;
@ -148,7 +113,7 @@
};
&pinmux {
switch_led_pins: pinmux_switch_led_pins {
pinmux_switch_led_pins: switch_led_pins {
pinctrl-single,bits = <0x0 0x0 0xf8>;
};
};

View File

@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "ar7240_tplink.dtsi"
&leds {
lan {
label = "tp-link:green:lan";
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
};
};
&eth1 {
mtd-mac-address = <&uboot 0x1fc00>;
};
&ath9k {
compatible = "pci168c,002a";
};

View File

@ -0,0 +1,9 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "ar7240_tplink_tl-wa.dtsi"
/ {
model = "TP-Link TL-WA830RE v1";
compatible = "tplink,tl-wa830re-v1", "qca,ar7240";
};

View File

@ -0,0 +1,46 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "ar7240_tplink.dtsi"
&leds {
lan1 {
label = "tp-link:green:lan1";
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
};
lan2 {
label = "tp-link:green:lan2";
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
};
lan3 {
label = "tp-link:green:lan3";
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
};
lan4 {
label = "tp-link:green:lan4";
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
};
wan {
label = "tp-link:green:wan";
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <(-1)>;
};
&eth1 {
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>;
};
&ath9k {
compatible = "pci168c,002b";
};

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "ar7240_tplink_tl-wr74xn-v1.dtsi"
#include "ar7240_tplink_tl-wr.dtsi"
/ {
model = "TP-Link TL-WR740N v1/v2";

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "ar7240_tplink_tl-wr74xn-v1.dtsi"
#include "ar7240_tplink_tl-wr.dtsi"
/ {
model = "TP-Link TL-WR740N v3";

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "ar7240_tplink_tl-wr74xn-v1.dtsi"
#include "ar7240_tplink_tl-wr.dtsi"
/ {
model = "TP-Link TL-WR741N/ND v1/v2";

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "ar7240_tplink_tl-wr74xn-v1.dtsi"
#include "ar7240_tplink_tl-wr.dtsi"
/ {
model = "TP-Link TL-WR743ND v1";

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "ar7240_tplink_tl-wr74xn-v1.dtsi"
#include "ar7240_tplink_tl-wr.dtsi"
/ {
model = "TP-Link TL-WR841N/ND v5/v6";

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "ar7240_tplink_tl-wr74xn-v1.dtsi"
#include "ar7240_tplink_tl-wr.dtsi"
/ {
model = "TP-Link TL-WR941N/ND v4";

View File

@ -0,0 +1,35 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "tp9343_tplink_tl-wr94x.dtsi"
/ {
compatible = "tplink,tl-wr940n-v6", "qca,tp9343";
model = "TP-Link TL-WR940N v6";
aliases {
led-boot = &led_diag_orange;
led-failsafe = &led_diag_orange;
led-running = &led_diag_orange;
led-upgrade = &led_diag_orange;
};
leds {
compatible = "gpio-leds";
wan_blue {
label = "tp-link:blue:wan";
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
};
led_diag_orange: diag_orange {
label = "tp-link:orange:diag";
gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
default-state = "on";
};
};
};
&eth1 {
mtd-mac-address = <&uboot 0x1fc00>;
};

View File

@ -158,6 +158,7 @@ define Device/avm_fritz300e
append-squashfs-fakeroot-be | pad-to 256 | append-rootfs | pad-rootfs | \
append-metadata | check-size $$$$(IMAGE_SIZE)
DEVICE_PACKAGES := fritz-tffs rssileds -swconfig
SUPPORTED_DEVICES += fritz300e
endef
TARGET_DEVICES += avm_fritz300e

View File

@ -66,6 +66,16 @@ define Device/tplink_tl-mr3420-v2
endef
TARGET_DEVICES += tplink_tl-mr3420-v2
define Device/tplink_tl-wa830re-v1
$(Device/tplink-4m)
SOC := ar7240
DEVICE_MODEL := TL-WA830RE
DEVICE_VARIANT := v1
TPLINK_HWID := 0x08300010
SUPPORTED_DEVICES += tl-wa901nd
endef
TARGET_DEVICES += tplink_tl-wa830re-v1
define Device/tplink_tl-wa850re-v1
$(Device/tplink-4mlzma)
SOC := ar9341
@ -264,6 +274,20 @@ define Device/tplink_tl-wr940n-v4
endef
TARGET_DEVICES += tplink_tl-wr940n-v4
define Device/tplink_tl-wr940n-v6
$(Device/tplink-4mlzma)
SOC := tp9343
DEVICE_MODEL := TL-WR940N
DEVICE_VARIANT := v6
TPLINK_HWID := 0x09400006
SUPPORTED_DEVICES += tl-wr940n-v6
IMAGES += factory-us.bin factory-eu.bin factory-br.bin
IMAGE/factory-us.bin := tplink-v1-image factory -C US
IMAGE/factory-eu.bin := tplink-v1-image factory -C EU
IMAGE/factory-br.bin := tplink-v1-image factory -C BR
endef
TARGET_DEVICES += tplink_tl-wr940n-v6
define Device/tplink_tl-wr941-v2
$(Device/tplink-4m)
SOC := ar9132

View File

@ -41,7 +41,8 @@ on,n150r)
ucidef_set_led_switch "lan2" "LAN2" "netgear:green:lan2" "switch0" "0x04" "0x0f"
;;
tplink,tl-mr3020-v1|\
tplink,tl-mr3040-v2)
tplink,tl-mr3040-v2|\
tplink,tl-wa830re-v1)
ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0"
;;
tplink,tl-mr3420-v2|\
@ -95,6 +96,9 @@ tplink,tl-wr941nd-v6)
ucidef_set_led_switch "lan3" "LAN3" "tp-link:blue:lan3" "switch0" "0x04"
ucidef_set_led_switch "lan4" "LAN4" "tp-link:blue:lan4" "switch0" "0x02"
;;
tplink,tl-wr940n-v6)
ucidef_set_led_netdev "wan" "WAN" "tp-link:blue:wan" "eth1"
;;
esac
board_config_flush

View File

@ -32,6 +32,7 @@ ath79_setup_interfaces()
tplink,tl-mr10u|\
tplink,tl-mr3020-v1|\
tplink,tl-mr3040-v2|\
tplink,tl-wa830re-v1|\
tplink,tl-wa850re-v1|\
tplink,tl-wa850re-v2|\
tplink,tl-wa901nd-v2|\
@ -47,6 +48,7 @@ ath79_setup_interfaces()
tplink,tl-wr841-v12|\
tplink,tl-wr940n-v3|\
tplink,tl-wr940n-v4|\
tplink,tl-wr940n-v6|\
tplink,tl-wr941nd-v6)
ucidef_set_interface_wan "eth1"
ucidef_add_switch "switch0" \

View File

@ -10,6 +10,7 @@ case "$FIRMWARE" in
"ath9k-eeprom-pci-0000:00:00.0.bin")
case $board in
buffalo,whr-g301n|\
tplink,tl-wa830re-v1|\
tplink,tl-wr841-v5|\
tplink,tl-wr941-v4)
caldata_extract "art" 0x1000 0xeb8

View File

@ -591,12 +591,15 @@ swconfig_parse_ports(struct sk_buff *msg, struct nlattr *head,
port = &val->value.ports[val->len];
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)
if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla,
port_policy))
#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
if (nla_parse_nested_deprecated(tb, SWITCH_PORT_ATTR_MAX, nla,
port_policy, NULL))
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)
if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla,
port_policy, NULL))
#else
if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla,
port_policy))
#endif
return -EINVAL;
@ -618,10 +621,12 @@ swconfig_parse_link(struct sk_buff *msg, struct nlattr *nla,
{
struct nlattr *tb[SWITCH_LINK_ATTR_MAX + 1];
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)
if (nla_parse_nested(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy))
#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
if (nla_parse_nested_deprecated(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy, NULL))
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)
if (nla_parse_nested(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy, NULL))
#else
if (nla_parse_nested(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy))
#endif
return -EINVAL;
@ -1000,6 +1005,9 @@ swconfig_done(struct netlink_callback *cb)
static struct genl_ops swconfig_ops[] = {
{
.cmd = SWITCH_CMD_LIST_GLOBAL,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.doit = swconfig_list_attrs,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
.policy = switch_policy,
@ -1007,6 +1015,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_LIST_VLAN,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.doit = swconfig_list_attrs,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
.policy = switch_policy,
@ -1014,6 +1025,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_LIST_PORT,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.doit = swconfig_list_attrs,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
.policy = switch_policy,
@ -1021,6 +1035,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_GET_GLOBAL,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.doit = swconfig_get_attr,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
.policy = switch_policy,
@ -1028,6 +1045,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_GET_VLAN,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.doit = swconfig_get_attr,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
.policy = switch_policy,
@ -1035,6 +1055,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_GET_PORT,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.doit = swconfig_get_attr,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
.policy = switch_policy,
@ -1042,6 +1065,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_SET_GLOBAL,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.flags = GENL_ADMIN_PERM,
.doit = swconfig_set_attr,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
@ -1050,6 +1076,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_SET_VLAN,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.flags = GENL_ADMIN_PERM,
.doit = swconfig_set_attr,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
@ -1058,6 +1087,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_SET_PORT,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.flags = GENL_ADMIN_PERM,
.doit = swconfig_set_attr,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
@ -1066,6 +1098,9 @@ static struct genl_ops swconfig_ops[] = {
},
{
.cmd = SWITCH_CMD_GET_SWITCH,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
#endif
.dumpit = swconfig_dump_switches,
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
.policy = switch_policy,

View File

@ -20,44 +20,35 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
/*
* Given a pointer to the MTD object in the mtd_part structure, we can retrieve
@@ -762,6 +766,36 @@ int mtd_del_partition(struct mtd_info *m
@@ -762,6 +766,27 @@ int mtd_del_partition(struct mtd_info *m
}
EXPORT_SYMBOL_GPL(mtd_del_partition);
+static int
+run_parsers_by_type(struct mtd_part *slave, enum mtd_parser_type type)
+{
+ struct mtd_partition *parts;
+ int nr_parts;
+ int i;
+ struct mtd_partitions pparts = { };
+ int err;
+
+ nr_parts = parse_mtd_partitions_by_type(&slave->mtd, type, (const struct mtd_partition **)&parts,
+ NULL);
+ if (nr_parts <= 0)
+ return nr_parts;
+ pparts.nr_parts = parse_mtd_partitions_by_type(&slave->mtd, type,
+ &pparts.parts, NULL);
+ if (pparts.nr_parts <= 0)
+ return pparts.nr_parts;
+
+ if (WARN_ON(!parts))
+ if (WARN_ON(!pparts.parts))
+ return 0;
+
+ for (i = 0; i < nr_parts; i++) {
+ /* adjust partition offsets */
+ parts[i].offset += slave->offset;
+ err = add_mtd_partitions(&slave->mtd, pparts.parts, pparts.nr_parts);
+
+ mtd_add_partition(slave->parent,
+ parts[i].name,
+ parts[i].offset,
+ parts[i].size);
+ }
+ kfree(pparts.parts);
+
+ kfree(parts);
+
+ return nr_parts;
+ return err ? err : pparts.nr_parts;
+}
+
#ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
#define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME
#else
@@ -1147,6 +1181,61 @@ void mtd_part_parser_cleanup(struct mtd_
@@ -1147,6 +1172,61 @@ void mtd_part_parser_cleanup(struct mtd_
}
}

View File

@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -804,6 +804,7 @@ run_parsers_by_type(struct mtd_part *sla
@@ -795,6 +795,7 @@ run_parsers_by_type(struct mtd_part *sla
static void split_firmware(struct mtd_info *master, struct mtd_part *part)
{
@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
}
static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part)
@@ -813,6 +814,12 @@ static void mtd_partition_split(struct m
@@ -804,6 +805,12 @@ static void mtd_partition_split(struct m
if (rootfs_found)
return;

View File

@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -1260,6 +1260,24 @@ int mtd_is_partition(const struct mtd_in
@@ -1251,6 +1251,24 @@ int mtd_is_partition(const struct mtd_in
}
EXPORT_SYMBOL_GPL(mtd_is_partition);

View File

@ -81,6 +81,12 @@ define Build/iodata-mstc-header
)
endef
define Build/netis-tail
echo -n $(1) >> $@
echo -n $(UIMAGE_NAME)-yun | $(STAGING_DIR_HOST)/bin/mkhash md5 | \
sed 's/../\\\\x&/g' | xargs echo -ne >> $@
endef
define Build/ubnt-erx-factory-image
if [ -e $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) -a "$$(stat -c%s $@)" -lt "$(KERNEL_SIZE)" ]; then \
echo '21001:6' > $(1).compat; \
@ -631,6 +637,8 @@ define Device/netis_wf2881
KERNEL_SIZE := 4096k
IMAGE_SIZE := 129280k
UBINIZE_OPTS := -E 5
UIMAGE_NAME := WF2881_0.0.00
KERNEL_INITRAMFS := $(KERNEL_DTB) | netis-tail WF2881 | uImage lzma
IMAGES += factory.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \

View File

@ -0,0 +1,94 @@
From 120357ea176e420d313cf8cf2ff35fbe233d3bab Mon Sep 17 00:00:00 2001
From: Uenal Mutlu <um@mutluit.com>
Date: Mon, 13 May 2019 16:24:10 +0200
Subject: [PATCH] drivers: ata: ahci_sunxi: Increased SATA/AHCI DMA TX/RX FIFOs
Increasing the SATA/AHCI DMA TX/RX FIFOs (P0DMACR.TXTS and .RXTS, ie.
TX_TRANSACTION_SIZE and RX_TRANSACTION_SIZE) from default 0x0 each
to 0x3 each, gives a write performance boost of 120 MiB/s to 132 MiB/s
from lame 36 MiB/s to 45 MiB/s previously.
Read performance is above 200 MiB/s.
[tested on SSD using dd bs=4K/8K/12K/16K/20K/24K/32K: peak-perf at 12K]
Tested on the SBCs Banana Pi R1 (aka Lamobo R1) and Banana Pi M1 which
are based on the Allwinner A20 32bit-SoC (ARMv7-a / arm-linux-gnueabihf).
These devices are RaspberryPi-like small devices.
This problem of slow SATA write-speed with these small devices lasts
for about 7 years now (beginning with the A10 SoC). Many commentators
throughout the years wrongly assumed the slow write speed was a
hardware limitation. This patch finally solves the problem, which
in fact was just a hard-to-find software problem due to lack of
SATA/AHCI documentation by the SoC-maker Allwinner Technology.
Lists of the affected sunxi and other boards and SoCs with SATA using
the ahci_sunxi driver:
$ grep -i -e "^&ahci" arch/arm/boot/dts/sun*dts
and http://linux-sunxi.org/SATA#Devices_with_SATA_ports
See also http://linux-sunxi.org/Category:Devices_with_SATA_port
Tested-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Uenal Mutlu <um@mutluit.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
drivers/ata/ahci_sunxi.c | 47 ++++++++++++++++++++++++++++++++++++++--
1 file changed, 45 insertions(+), 2 deletions(-)
--- a/drivers/ata/ahci_sunxi.c
+++ b/drivers/ata/ahci_sunxi.c
@@ -157,8 +157,51 @@ static void ahci_sunxi_start_engine(stru
void __iomem *port_mmio = ahci_port_base(ap);
struct ahci_host_priv *hpriv = ap->host->private_data;
- /* Setup DMA before DMA start */
- sunxi_clrsetbits(hpriv->mmio + AHCI_P0DMACR, 0x0000ff00, 0x00004400);
+ /* Setup DMA before DMA start
+ *
+ * NOTE: A similar SoC with SATA/AHCI by Texas Instruments documents
+ * this Vendor Specific Port (P0DMACR, aka PxDMACR) in its
+ * User's Guide document (TMS320C674x/OMAP-L1x Processor
+ * Serial ATA (SATA) Controller, Literature Number: SPRUGJ8C,
+ * March 2011, Chapter 4.33 Port DMA Control Register (P0DMACR),
+ * p.68, https://www.ti.com/lit/ug/sprugj8c/sprugj8c.pdf)
+ * as equivalent to the following struct:
+ *
+ * struct AHCI_P0DMACR_t
+ * {
+ * unsigned TXTS : 4;
+ * unsigned RXTS : 4;
+ * unsigned TXABL : 4;
+ * unsigned RXABL : 4;
+ * unsigned Reserved : 16;
+ * };
+ *
+ * TXTS: Transmit Transaction Size (TX_TRANSACTION_SIZE).
+ * This field defines the DMA transaction size in DWORDs for
+ * transmit (system bus read, device write) operation. [...]
+ *
+ * RXTS: Receive Transaction Size (RX_TRANSACTION_SIZE).
+ * This field defines the Port DMA transaction size in DWORDs
+ * for receive (system bus write, device read) operation. [...]
+ *
+ * TXABL: Transmit Burst Limit.
+ * This field allows software to limit the VBUSP master read
+ * burst size. [...]
+ *
+ * RXABL: Receive Burst Limit.
+ * Allows software to limit the VBUSP master write burst
+ * size. [...]
+ *
+ * Reserved: Reserved.
+ *
+ *
+ * NOTE: According to the above document, the following alternative
+ * to the code below could perhaps be a better option
+ * (or preparation) for possible further improvements later:
+ * sunxi_clrsetbits(hpriv->mmio + AHCI_P0DMACR, 0x0000ffff,
+ * 0x00000033);
+ */
+ sunxi_clrsetbits(hpriv->mmio + AHCI_P0DMACR, 0x0000ffff, 0x00004433);
/* Start DMA */
sunxi_setbits(port_mmio + PORT_CMD, PORT_CMD_START);