brcm2708: add linux 4.19 support
[openwrt/staging/mkresin.git] / target / linux / brcm2708 / patches-4.19 / 950-0093-brcm-adds-support-for-BCM43341-wifi.patch
1 From fe1028f8aa31decab2a006c977598bd75eb42b40 Mon Sep 17 00:00:00 2001
2 From: Cheong2K <cheong@redbear.cc>
3 Date: Fri, 26 Feb 2016 18:20:10 +0800
4 Subject: [PATCH 093/703] brcm: adds support for BCM43341 wifi
5
6 brcmfmac: Disable power management
7
8 Disable wireless power saving in the brcmfmac WLAN driver. This is a
9 temporary measure until the connectivity loss resulting from power
10 saving is resolved.
11
12 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
13
14 brcmfmac: Use original country code as a fallback
15
16 Commit 73345fd212980d2e28a5c6d83801c903bd773680:
17
18 brcmfmac: Configure country code using device specific settings
19
20 prevents region codes from working on devices that lack a region code
21 translation table. In the event of an absent table, preserve the old
22 behaviour of using the provided code as-is.
23
24 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
25
26 brcmfmac: Plug memory leak in brcmf_fill_bss_param
27
28 See: https://github.com/raspberrypi/linux/issues/1471
29
30 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
31
32 brcmfmac: do not use internal roaming engine by default
33
34 Some evidence of curing disconnects with this disabled, so make it a default.
35 Can be overridden with module parameter roamoff=0
36 See: http://projectable.me/optimize-my-pi-wi-fi/
37
38 brcmfmac: Change stop_ap sequence
39
40 Patch from Broadcom/Cypress to resolve a customer error
41
42 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
43 ---
44 .../broadcom/brcm80211/brcmfmac/cfg80211.c | 22 ++++++++++++++-----
45 .../broadcom/brcm80211/brcmfmac/common.c | 2 +-
46 .../broadcom/brcm80211/brcmfmac/sdio.c | 3 ++-
47 3 files changed, 20 insertions(+), 7 deletions(-)
48
49 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
50 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
51 @@ -2697,6 +2697,8 @@ brcmf_cfg80211_set_power_mgmt(struct wip
52 * preference in cfg struct to apply this to
53 * FW later while initializing the dongle
54 */
55 + pr_info("power management disabled\n");
56 + enabled = false;
57 cfg->pwr_save = enabled;
58 if (!check_vif_up(ifp->vif)) {
59
60 @@ -6776,12 +6778,18 @@ static s32 brcmf_translate_country_code(
61 struct brcmfmac_pd_cc *country_codes;
62 struct brcmfmac_pd_cc_entry *cc;
63 s32 found_index;
64 + char ccode[BRCMF_COUNTRY_BUF_SZ];
65 + int rev;
66 int i;
67
68 + memcpy(ccode, alpha2, sizeof(ccode));
69 + rev = -1;
70 +
71 country_codes = drvr->settings->country_codes;
72 if (!country_codes) {
73 - brcmf_dbg(TRACE, "No country codes configured for device\n");
74 - return -EINVAL;
75 + brcmf_dbg(TRACE, "No country codes configured for device"
76 + " - use requested value\n");
77 + goto use_input_value;
78 }
79
80 if ((alpha2[0] == ccreq->country_abbrev[0]) &&
81 @@ -6805,10 +6813,14 @@ static s32 brcmf_translate_country_code(
82 brcmf_dbg(TRACE, "No country code match found\n");
83 return -EINVAL;
84 }
85 - memset(ccreq, 0, sizeof(*ccreq));
86 - ccreq->rev = cpu_to_le32(country_codes->table[found_index].rev);
87 - memcpy(ccreq->ccode, country_codes->table[found_index].cc,
88 + rev = country_codes->table[found_index].rev;
89 + memcpy(ccode, country_codes->table[found_index].cc,
90 BRCMF_COUNTRY_BUF_SZ);
91 +
92 +use_input_value:
93 + memset(ccreq, 0, sizeof(*ccreq));
94 + ccreq->rev = cpu_to_le32(rev);
95 + memcpy(ccreq->ccode, ccode, sizeof(ccode));
96 ccreq->country_abbrev[0] = alpha2[0];
97 ccreq->country_abbrev[1] = alpha2[1];
98 ccreq->country_abbrev[2] = 0;
99 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
100 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
101 @@ -70,7 +70,7 @@ static int brcmf_fcmode;
102 module_param_named(fcmode, brcmf_fcmode, int, 0);
103 MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control");
104
105 -static int brcmf_roamoff;
106 +static int brcmf_roamoff = 1;
107 module_param_named(roamoff, brcmf_roamoff, int, 0400);
108 MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine");
109
110 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
111 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
112 @@ -608,6 +608,7 @@ BRCMF_FW_DEF(4329, "brcmfmac4329-sdio");
113 BRCMF_FW_DEF(4330, "brcmfmac4330-sdio");
114 BRCMF_FW_DEF(4334, "brcmfmac4334-sdio");
115 BRCMF_FW_DEF(43340, "brcmfmac43340-sdio");
116 +BRCMF_FW_DEF(43341, "brcmfmac43341-sdio");
117 BRCMF_FW_DEF(4335, "brcmfmac4335-sdio");
118 BRCMF_FW_DEF(43362, "brcmfmac43362-sdio");
119 BRCMF_FW_DEF(4339, "brcmfmac4339-sdio");
120 @@ -628,7 +629,7 @@ static const struct brcmf_firmware_mappi
121 BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, 4330),
122 BRCMF_FW_ENTRY(BRCM_CC_4334_CHIP_ID, 0xFFFFFFFF, 4334),
123 BRCMF_FW_ENTRY(BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF, 43340),
124 - BRCMF_FW_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43340),
125 + BRCMF_FW_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43341),
126 BRCMF_FW_ENTRY(BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, 4335),
127 BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362),
128 BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339),