From bb04b7ced7047c93e907134ede6b74b0cf438aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Thu, 1 Mar 2018 18:00:19 +0100 Subject: mac80211: brcmfmac: restructuring sdio access functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rafał Miłecki --- ...gister-sizes-on-hardware-are-not-dependen.patch | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 package/kernel/mac80211/patches/311-v4.16-0002-brcmfmac-Register-sizes-on-hardware-are-not-dependen.patch (limited to 'package/kernel/mac80211/patches/311-v4.16-0002-brcmfmac-Register-sizes-on-hardware-are-not-dependen.patch') diff --git a/package/kernel/mac80211/patches/311-v4.16-0002-brcmfmac-Register-sizes-on-hardware-are-not-dependen.patch b/package/kernel/mac80211/patches/311-v4.16-0002-brcmfmac-Register-sizes-on-hardware-are-not-dependen.patch new file mode 100644 index 0000000000..719268f8fe --- /dev/null +++ b/package/kernel/mac80211/patches/311-v4.16-0002-brcmfmac-Register-sizes-on-hardware-are-not-dependen.patch @@ -0,0 +1,105 @@ +From 1e6f676f43aa4270ebc5cff8e32a55f72362e042 Mon Sep 17 00:00:00 2001 +From: Ian Molton +Date: Mon, 13 Nov 2017 21:35:39 +0100 +Subject: [PATCH] brcmfmac: Register sizes on hardware are not dependent on + compiler types + +The 4 IO functions in this patch are incorrect as they use compiler types +to determine how many bytes to send to the hardware. + +Signed-off-by: Ian Molton +Signed-off-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + .../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +@@ -264,7 +264,7 @@ static int brcmf_sdiod_request_data(stru + func = sdiodev->func[fn]; + + switch (regsz) { +- case sizeof(u8): ++ case 1: + if (write) { + if (fn) + sdio_writeb(func, *(u8 *)data, addr, &ret); +@@ -278,13 +278,13 @@ static int brcmf_sdiod_request_data(stru + *(u8 *)data = sdio_f0_readb(func, addr, &ret); + } + break; +- case sizeof(u16): ++ case 2: + if (write) + sdio_writew(func, *(u16 *)data, addr, &ret); + else + *(u16 *)data = sdio_readw(func, addr, &ret); + break; +- case sizeof(u32): ++ case 4: + if (write) + sdio_writel(func, *(u32 *)data, addr, &ret); + else +@@ -368,7 +368,7 @@ brcmf_sdiod_set_sbaddr_window(struct brc + for (i = 0; i < 3; i++) { + err = brcmf_sdiod_regrw_helper(sdiodev, + SBSDIO_FUNC1_SBADDRLOW + i, +- sizeof(u8), &addr[i], true); ++ 1, &addr[i], true); + if (err) { + brcmf_err("failed at addr: 0x%0x\n", + SBSDIO_FUNC1_SBADDRLOW + i); +@@ -407,7 +407,7 @@ u8 brcmf_sdiod_regrb(struct brcmf_sdio_d + int retval; + + brcmf_dbg(SDIO, "addr:0x%08x\n", addr); +- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data, ++ retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 1, &data, + false); + brcmf_dbg(SDIO, "data:0x%02x\n", data); + +@@ -423,10 +423,10 @@ u32 brcmf_sdiod_regrl(struct brcmf_sdio_ + int retval; + + brcmf_dbg(SDIO, "addr:0x%08x\n", addr); +- retval = brcmf_sdiod_addrprep(sdiodev, sizeof(data), &addr); ++ retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr); + if (retval) + goto done; +- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data, ++ retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 4, &data, + false); + brcmf_dbg(SDIO, "data:0x%08x\n", data); + +@@ -443,7 +443,7 @@ void brcmf_sdiod_regwb(struct brcmf_sdio + int retval; + + brcmf_dbg(SDIO, "addr:0x%08x, data:0x%02x\n", addr, data); +- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data, ++ retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 1, &data, + true); + if (ret) + *ret = retval; +@@ -455,10 +455,10 @@ void brcmf_sdiod_regwl(struct brcmf_sdio + int retval; + + brcmf_dbg(SDIO, "addr:0x%08x, data:0x%08x\n", addr, data); +- retval = brcmf_sdiod_addrprep(sdiodev, sizeof(data), &addr); ++ retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr); + if (retval) + goto done; +- retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data, ++ retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 4, &data, + true); + + done: +@@ -876,7 +876,7 @@ int brcmf_sdiod_abort(struct brcmf_sdio_ + + /* issue abort cmd52 command through F0 */ + brcmf_sdiod_request_data(sdiodev, SDIO_FUNC_0, SDIO_CCCR_ABORT, +- sizeof(t_func), &t_func, true); ++ 1, &t_func, true); + + brcmf_dbg(SDIO, "Exit\n"); + return 0; -- cgit v1.2.3