diff options
Diffstat (limited to 'package/kernel/mac80211/patches/316-v4.16-0001-brcmfmac-Remove-array-of-functions.patch')
-rw-r--r-- | package/kernel/mac80211/patches/316-v4.16-0001-brcmfmac-Remove-array-of-functions.patch | 1043 |
1 files changed, 0 insertions, 1043 deletions
diff --git a/package/kernel/mac80211/patches/316-v4.16-0001-brcmfmac-Remove-array-of-functions.patch b/package/kernel/mac80211/patches/316-v4.16-0001-brcmfmac-Remove-array-of-functions.patch deleted file mode 100644 index bd9de13d7a..0000000000 --- a/package/kernel/mac80211/patches/316-v4.16-0001-brcmfmac-Remove-array-of-functions.patch +++ /dev/null @@ -1,1043 +0,0 @@ -From c9aa7a91de740c537dc8c2f9f3d36fc651371b13 Mon Sep 17 00:00:00 2001 -From: Arend Van Spriel <arend.vanspriel@broadcom.com> -Date: Tue, 9 Jan 2018 13:22:52 +0100 -Subject: [PATCH] brcmfmac: Remove array of functions - -Replace the array of functions with a pair of pointers to the -relevant functions. - -Signed-off-by: Ian Molton <ian@mnementh.co.uk> -Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> -Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> -Signed-off-by: Kalle Valo <kvalo@codeaurora.org> ---- - .../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 115 +++++++------- - .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 168 ++++++++++----------- - .../wireless/broadcom/brcm80211/brcmfmac/sdio.h | 15 +- - 3 files changed, 146 insertions(+), 152 deletions(-) - ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c -@@ -118,7 +118,7 @@ int brcmf_sdiod_intr_register(struct brc - - ret = request_irq(pdata->oob_irq_nr, brcmf_sdiod_oob_irqhandler, - pdata->oob_irq_flags, "brcmf_oob_intr", -- &sdiodev->func[1]->dev); -+ &sdiodev->func1->dev); - if (ret != 0) { - brcmf_err("request_irq failed %d\n", ret); - return ret; -@@ -132,7 +132,7 @@ int brcmf_sdiod_intr_register(struct brc - } - sdiodev->irq_wake = true; - -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - - if (sdiodev->bus_if->chip == BRCM_CC_43362_CHIP_ID) { - /* assign GPIO to SDIO core */ -@@ -159,13 +159,13 @@ int brcmf_sdiod_intr_register(struct brc - data |= SDIO_CCCR_BRCM_SEPINT_ACT_HI; - brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_BRCM_SEPINT, - data, &ret); -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - } else { - brcmf_dbg(SDIO, "Entering\n"); -- sdio_claim_host(sdiodev->func[1]); -- sdio_claim_irq(sdiodev->func[1], brcmf_sdiod_ib_irqhandler); -- sdio_claim_irq(sdiodev->func[2], brcmf_sdiod_dummy_irqhandler); -- sdio_release_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); -+ sdio_claim_irq(sdiodev->func1, brcmf_sdiod_ib_irqhandler); -+ sdio_claim_irq(sdiodev->func2, brcmf_sdiod_dummy_irqhandler); -+ sdio_release_host(sdiodev->func1); - sdiodev->sd_irq_requested = true; - } - -@@ -183,26 +183,26 @@ void brcmf_sdiod_intr_unregister(struct - struct brcmfmac_sdio_pd *pdata; - - pdata = &sdiodev->settings->bus.sdio; -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_BRCM_SEPINT, 0, NULL); - brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_IENx, 0, NULL); -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - - sdiodev->oob_irq_requested = false; - if (sdiodev->irq_wake) { - disable_irq_wake(pdata->oob_irq_nr); - sdiodev->irq_wake = false; - } -- free_irq(pdata->oob_irq_nr, &sdiodev->func[1]->dev); -+ free_irq(pdata->oob_irq_nr, &sdiodev->func1->dev); - sdiodev->irq_en = false; - sdiodev->oob_irq_requested = false; - } - - if (sdiodev->sd_irq_requested) { -- sdio_claim_host(sdiodev->func[1]); -- sdio_release_irq(sdiodev->func[2]); -- sdio_release_irq(sdiodev->func[1]); -- sdio_release_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); -+ sdio_release_irq(sdiodev->func2); -+ sdio_release_irq(sdiodev->func1); -+ sdio_release_host(sdiodev->func1); - sdiodev->sd_irq_requested = false; - } - } -@@ -264,7 +264,7 @@ u32 brcmf_sdiod_readl(struct brcmf_sdio_ - addr &= SBSDIO_SB_OFT_ADDR_MASK; - addr |= SBSDIO_SB_ACCESS_2_4B_FLAG; - -- data = sdio_readl(sdiodev->func[1], addr, &retval); -+ data = sdio_readl(sdiodev->func1, addr, &retval); - - out: - if (ret) -@@ -285,7 +285,7 @@ void brcmf_sdiod_writel(struct brcmf_sdi - addr &= SBSDIO_SB_OFT_ADDR_MASK; - addr |= SBSDIO_SB_ACCESS_2_4B_FLAG; - -- sdio_writel(sdiodev->func[1], data, addr, &retval); -+ sdio_writel(sdiodev->func1, data, addr, &retval); - - out: - if (ret) -@@ -550,7 +550,7 @@ int brcmf_sdiod_recv_pkt(struct brcmf_sd - addr &= SBSDIO_SB_OFT_ADDR_MASK; - addr |= SBSDIO_SB_ACCESS_2_4B_FLAG; - -- err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func[2], addr, pkt); -+ err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func2, addr, pkt); - - done: - return err; -@@ -575,13 +575,13 @@ int brcmf_sdiod_recv_chain(struct brcmf_ - addr |= SBSDIO_SB_ACCESS_2_4B_FLAG; - - if (pktq->qlen == 1) -- err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func[2], addr, -+ err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func2, addr, - pktq->next); - else if (!sdiodev->sg_support) { - glom_skb = brcmu_pkt_buf_get_skb(totlen); - if (!glom_skb) - return -ENOMEM; -- err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func[2], addr, -+ err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func2, addr, - glom_skb); - if (err) - goto done; -@@ -591,7 +591,7 @@ int brcmf_sdiod_recv_chain(struct brcmf_ - skb_pull(glom_skb, skb->len); - } - } else -- err = brcmf_sdiod_sglist_rw(sdiodev, sdiodev->func[2], false, -+ err = brcmf_sdiod_sglist_rw(sdiodev, sdiodev->func2, false, - addr, pktq); - - done: -@@ -623,7 +623,7 @@ int brcmf_sdiod_send_buf(struct brcmf_sd - addr |= SBSDIO_SB_ACCESS_2_4B_FLAG; - - if (!err) -- err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func[2], addr, -+ err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func2, addr, - mypkt); - - brcmu_pkt_buf_free_skb(mypkt); -@@ -649,13 +649,13 @@ int brcmf_sdiod_send_pkt(struct brcmf_sd - - if (pktq->qlen == 1 || !sdiodev->sg_support) { - skb_queue_walk(pktq, skb) { -- err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func[2], -+ err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func2, - addr, skb); - if (err) - break; - } - } else { -- err = brcmf_sdiod_sglist_rw(sdiodev, sdiodev->func[2], true, -+ err = brcmf_sdiod_sglist_rw(sdiodev, sdiodev->func2, true, - addr, pktq); - } - -@@ -686,7 +686,7 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev - else - dsize = size; - -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - - /* Do the transfer(s) */ - while (size) { -@@ -706,10 +706,10 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev - - if (write) { - memcpy(pkt->data, data, dsize); -- err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func[1], -+ err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func1, - sdaddr, pkt); - } else { -- err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func[1], -+ err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func1, - sdaddr, pkt); - } - -@@ -733,7 +733,7 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev - - dev_kfree_skb(pkt); - -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - - return err; - } -@@ -757,7 +757,7 @@ void brcmf_sdiod_sgtable_alloc(struct br - uint nents; - int err; - -- func = sdiodev->func[2]; -+ func = sdiodev->func2; - host = func->card->host; - sdiodev->sg_support = host->max_segs > 1; - max_blocks = min_t(uint, host->max_blk_count, 511u); -@@ -818,17 +818,17 @@ static int brcmf_sdiod_freezer_on(struct - brcmf_sdio_trigger_dpc(sdiodev->bus); - wait_event(sdiodev->freezer->thread_freeze, - atomic_read(expect) == sdiodev->freezer->frozen_count); -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - res = brcmf_sdio_sleep(sdiodev->bus, true); -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - return res; - } - - static void brcmf_sdiod_freezer_off(struct brcmf_sdio_dev *sdiodev) - { -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - brcmf_sdio_sleep(sdiodev->bus, false); -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - atomic_set(&sdiodev->freezer->freezing, 0); - complete_all(&sdiodev->freezer->resumed); - } -@@ -878,19 +878,19 @@ static int brcmf_sdiod_remove(struct brc - brcmf_sdiod_freezer_detach(sdiodev); - - /* Disable Function 2 */ -- sdio_claim_host(sdiodev->func[2]); -- sdio_disable_func(sdiodev->func[2]); -- sdio_release_host(sdiodev->func[2]); -+ sdio_claim_host(sdiodev->func2); -+ sdio_disable_func(sdiodev->func2); -+ sdio_release_host(sdiodev->func2); - - /* Disable Function 1 */ -- sdio_claim_host(sdiodev->func[1]); -- sdio_disable_func(sdiodev->func[1]); -- sdio_release_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); -+ sdio_disable_func(sdiodev->func1); -+ sdio_release_host(sdiodev->func1); - - sg_free_table(&sdiodev->sgtable); - sdiodev->sbwad = 0; - -- pm_runtime_allow(sdiodev->func[1]->card->host->parent); -+ pm_runtime_allow(sdiodev->func1->card->host->parent); - return 0; - } - -@@ -906,29 +906,27 @@ static int brcmf_sdiod_probe(struct brcm - { - int ret = 0; - -- sdiodev->num_funcs = 2; -+ sdio_claim_host(sdiodev->func1); - -- sdio_claim_host(sdiodev->func[1]); -- -- ret = sdio_set_block_size(sdiodev->func[1], SDIO_FUNC1_BLOCKSIZE); -+ ret = sdio_set_block_size(sdiodev->func1, SDIO_FUNC1_BLOCKSIZE); - if (ret) { - brcmf_err("Failed to set F1 blocksize\n"); -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - goto out; - } -- ret = sdio_set_block_size(sdiodev->func[2], SDIO_FUNC2_BLOCKSIZE); -+ ret = sdio_set_block_size(sdiodev->func2, SDIO_FUNC2_BLOCKSIZE); - if (ret) { - brcmf_err("Failed to set F2 blocksize\n"); -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - goto out; - } - - /* increase F2 timeout */ -- sdiodev->func[2]->enable_timeout = SDIO_WAIT_F2RDY; -+ sdiodev->func2->enable_timeout = SDIO_WAIT_F2RDY; - - /* Enable Function 1 */ -- ret = sdio_enable_func(sdiodev->func[1]); -- sdio_release_host(sdiodev->func[1]); -+ ret = sdio_enable_func(sdiodev->func1); -+ sdio_release_host(sdiodev->func1); - if (ret) { - brcmf_err("Failed to enable F1: err=%d\n", ret); - goto out; -@@ -944,7 +942,7 @@ static int brcmf_sdiod_probe(struct brcm - ret = -ENODEV; - goto out; - } -- brcmf_sdiod_host_fixup(sdiodev->func[2]->card->host); -+ brcmf_sdiod_host_fixup(sdiodev->func2->card->host); - out: - if (ret) - brcmf_sdiod_remove(sdiodev); -@@ -1032,16 +1030,15 @@ static int brcmf_ops_sdio_probe(struct s - /* store refs to functions used. mmc_card does - * not hold the F0 function pointer. - */ -- sdiodev->func[0] = NULL; -- sdiodev->func[1] = func->card->sdio_func[0]; -- sdiodev->func[2] = func; -+ sdiodev->func1 = func->card->sdio_func[0]; -+ sdiodev->func2 = func; - - sdiodev->bus_if = bus_if; - bus_if->bus_priv.sdio = sdiodev; - bus_if->proto_type = BRCMF_PROTO_BCDC; - dev_set_drvdata(&func->dev, bus_if); -- dev_set_drvdata(&sdiodev->func[1]->dev, bus_if); -- sdiodev->dev = &sdiodev->func[1]->dev; -+ dev_set_drvdata(&sdiodev->func1->dev, bus_if); -+ sdiodev->dev = &sdiodev->func1->dev; - - brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_DOWN); - -@@ -1057,7 +1054,7 @@ static int brcmf_ops_sdio_probe(struct s - - fail: - dev_set_drvdata(&func->dev, NULL); -- dev_set_drvdata(&sdiodev->func[1]->dev, NULL); -+ dev_set_drvdata(&sdiodev->func1->dev, NULL); - kfree(sdiodev); - kfree(bus_if); - return err; -@@ -1086,8 +1083,8 @@ static void brcmf_ops_sdio_remove(struct - /* only proceed with rest of cleanup if func 1 */ - brcmf_sdiod_remove(sdiodev); - -- dev_set_drvdata(&sdiodev->func[1]->dev, NULL); -- dev_set_drvdata(&sdiodev->func[2]->dev, NULL); -+ dev_set_drvdata(&sdiodev->func1->dev, NULL); -+ dev_set_drvdata(&sdiodev->func2->dev, NULL); - - kfree(bus_if); - kfree(sdiodev); -@@ -1132,7 +1129,7 @@ static int brcmf_ops_sdio_suspend(struct - else - sdio_flags |= MMC_PM_WAKE_SDIO_IRQ; - } -- if (sdio_set_host_pm_flags(sdiodev->func[1], sdio_flags)) -+ if (sdio_set_host_pm_flags(sdiodev->func1, sdio_flags)) - brcmf_err("Failed to set pm_flags %x\n", sdio_flags); - return 0; - } ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -@@ -979,7 +979,7 @@ static int brcmf_sdio_readshared(struct - struct sdpcm_shared_le sh_le; - __le32 addr_le; - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_bus_sleep(bus, false, false); - - /* -@@ -1013,7 +1013,7 @@ static int brcmf_sdio_readshared(struct - if (rv < 0) - goto fail; - -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - - /* Endianness */ - sh->flags = le32_to_cpu(sh_le.flags); -@@ -1035,7 +1035,7 @@ static int brcmf_sdio_readshared(struct - fail: - brcmf_err("unable to obtain sdpcm_shared info: rv=%d (addr=0x%x)\n", - rv, addr); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - return rv; - } - -@@ -1157,7 +1157,7 @@ static void brcmf_sdio_rxfail(struct brc - rtx ? ", send NAK" : ""); - - if (abort) -- brcmf_sdiod_abort(bus->sdiodev, bus->sdiodev->func[2]); -+ brcmf_sdiod_abort(bus->sdiodev, bus->sdiodev->func2); - - brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_RF_TERM, - &err); -@@ -1209,7 +1209,7 @@ static void brcmf_sdio_txfail(struct brc - brcmf_err("sdio error, abort command and terminate frame\n"); - bus->sdcnt.tx_sderrs++; - -- brcmf_sdiod_abort(sdiodev, sdiodev->func[2]); -+ brcmf_sdiod_abort(sdiodev, sdiodev->func2); - brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_WF_TERM, NULL); - bus->sdcnt.f1regdata++; - -@@ -1565,10 +1565,10 @@ static u8 brcmf_sdio_rxglom(struct brcmf - * read directly into the chained packet, or allocate a large - * packet and and copy into the chain. - */ -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - errcode = brcmf_sdiod_recv_chain(bus->sdiodev, - &bus->glom, dlen); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - bus->sdcnt.f2rxdata++; - - /* On failure, kill the superframe */ -@@ -1576,11 +1576,11 @@ static u8 brcmf_sdio_rxglom(struct brcmf - brcmf_err("glom read of %d bytes failed: %d\n", - dlen, errcode); - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_rxfail(bus, true, false); - bus->sdcnt.rxglomfail++; - brcmf_sdio_free_glom(bus); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - return 0; - } - -@@ -1590,10 +1590,10 @@ static u8 brcmf_sdio_rxglom(struct brcmf - - rd_new.seq_num = rxseq; - rd_new.len = dlen; -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - errcode = brcmf_sdio_hdparse(bus, pfirst->data, &rd_new, - BRCMF_SDIO_FT_SUPER); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - bus->cur_read.len = rd_new.len_nxtfrm << 4; - - /* Remove superframe header, remember offset */ -@@ -1609,10 +1609,10 @@ static u8 brcmf_sdio_rxglom(struct brcmf - - rd_new.len = pnext->len; - rd_new.seq_num = rxseq++; -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - errcode = brcmf_sdio_hdparse(bus, pnext->data, &rd_new, - BRCMF_SDIO_FT_SUB); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - brcmf_dbg_hex_dump(BRCMF_GLOM_ON(), - pnext->data, 32, "subframe:\n"); - -@@ -1621,11 +1621,11 @@ static u8 brcmf_sdio_rxglom(struct brcmf - - if (errcode) { - /* Terminate frame on error */ -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_rxfail(bus, true, false); - bus->sdcnt.rxglomfail++; - brcmf_sdio_free_glom(bus); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - bus->cur_read.len = 0; - return 0; - } -@@ -1833,7 +1833,7 @@ static uint brcmf_sdio_readframes(struct - - rd->len_left = rd->len; - /* read header first for unknow frame length */ -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - if (!rd->len) { - ret = brcmf_sdiod_recv_buf(bus->sdiodev, - bus->rxhdr, BRCMF_FIRSTREAD); -@@ -1843,7 +1843,7 @@ static uint brcmf_sdio_readframes(struct - ret); - bus->sdcnt.rx_hdrfail++; - brcmf_sdio_rxfail(bus, true, true); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - continue; - } - -@@ -1853,7 +1853,7 @@ static uint brcmf_sdio_readframes(struct - - if (brcmf_sdio_hdparse(bus, bus->rxhdr, rd, - BRCMF_SDIO_FT_NORMAL)) { -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - if (!bus->rxpending) - break; - else -@@ -1869,7 +1869,7 @@ static uint brcmf_sdio_readframes(struct - rd->len_nxtfrm = 0; - /* treat all packet as event if we don't know */ - rd->channel = SDPCM_EVENT_CHANNEL; -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - continue; - } - rd->len_left = rd->len > BRCMF_FIRSTREAD ? -@@ -1886,7 +1886,7 @@ static uint brcmf_sdio_readframes(struct - brcmf_err("brcmu_pkt_buf_get_skb failed\n"); - brcmf_sdio_rxfail(bus, false, - RETRYCHAN(rd->channel)); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - continue; - } - skb_pull(pkt, head_read); -@@ -1894,16 +1894,16 @@ static uint brcmf_sdio_readframes(struct - - ret = brcmf_sdiod_recv_pkt(bus->sdiodev, pkt); - bus->sdcnt.f2rxdata++; -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - - if (ret < 0) { - brcmf_err("read %d bytes from channel %d failed: %d\n", - rd->len, rd->channel, ret); - brcmu_pkt_buf_free_skb(pkt); -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_rxfail(bus, true, - RETRYCHAN(rd->channel)); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - continue; - } - -@@ -1914,7 +1914,7 @@ static uint brcmf_sdio_readframes(struct - } else { - memcpy(bus->rxhdr, pkt->data, SDPCM_HDRLEN); - rd_new.seq_num = rd->seq_num; -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - if (brcmf_sdio_hdparse(bus, bus->rxhdr, &rd_new, - BRCMF_SDIO_FT_NORMAL)) { - rd->len = 0; -@@ -1927,11 +1927,11 @@ static uint brcmf_sdio_readframes(struct - roundup(rd_new.len, 16) >> 4); - rd->len = 0; - brcmf_sdio_rxfail(bus, true, true); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - brcmu_pkt_buf_free_skb(pkt); - continue; - } -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - rd->len_nxtfrm = rd_new.len_nxtfrm; - rd->channel = rd_new.channel; - rd->dat_offset = rd_new.dat_offset; -@@ -1947,9 +1947,9 @@ static uint brcmf_sdio_readframes(struct - rd_new.seq_num); - /* Force retry w/normal header read */ - rd->len = 0; -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_rxfail(bus, false, true); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - brcmu_pkt_buf_free_skb(pkt); - continue; - } -@@ -1972,9 +1972,9 @@ static uint brcmf_sdio_readframes(struct - } else { - brcmf_err("%s: glom superframe w/o " - "descriptor!\n", __func__); -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_rxfail(bus, false, false); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - } - /* prepare the descriptor for the next read */ - rd->len = rd->len_nxtfrm << 4; -@@ -2072,7 +2072,7 @@ static int brcmf_sdio_txpkt_prep_sg(stru - int ntail, ret; - - sdiodev = bus->sdiodev; -- blksize = sdiodev->func[2]->cur_blksize; -+ blksize = sdiodev->func2->cur_blksize; - /* sg entry alignment should be a divisor of block size */ - WARN_ON(blksize % bus->sgentry_align); - -@@ -2251,14 +2251,14 @@ static int brcmf_sdio_txpkt(struct brcmf - if (ret) - goto done; - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - ret = brcmf_sdiod_send_pkt(bus->sdiodev, pktq); - bus->sdcnt.f2txdata++; - - if (ret < 0) - brcmf_sdio_txfail(bus); - -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - - done: - brcmf_sdio_txpkt_postp(bus, pktq); -@@ -2314,10 +2314,11 @@ static uint brcmf_sdio_sendfromq(struct - /* In poll mode, need to check for other events */ - if (!bus->intr) { - /* Check device status, signal pending interrupt */ -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - intstatus = brcmf_sdiod_readl(bus->sdiodev, - intstat_addr, &ret); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); -+ - bus->sdcnt.f2txdata++; - if (ret != 0) - break; -@@ -2417,7 +2418,7 @@ static void brcmf_sdio_bus_stop(struct d - } - - if (sdiodev->state != BRCMF_SDIOD_NOMEDIUM) { -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - - /* Enable clock for device interrupts */ - brcmf_sdio_bus_sleep(bus, false, false); -@@ -2441,13 +2442,13 @@ static void brcmf_sdio_bus_stop(struct d - - /* Turn off the bus (F2), free any pending packets */ - brcmf_dbg(INTR, "disable SDIO interrupts\n"); -- sdio_disable_func(sdiodev->func[2]); -+ sdio_disable_func(sdiodev->func2); - - /* Clear any pending interrupts now that F2 is disabled */ - brcmf_sdiod_writel(sdiodev, core->base + SD_REG(intstatus), - local_hostintmask, NULL); - -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - } - /* Clear the data packet queues */ - brcmu_pktq_flush(&bus->txq, true, NULL, NULL); -@@ -2522,7 +2523,7 @@ static void brcmf_sdio_dpc(struct brcmf_ - - brcmf_dbg(TRACE, "Enter\n"); - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - - /* If waiting for HTAVAIL, check status */ - if (!bus->sr_enabled && bus->clkstate == CLK_PENDING) { -@@ -2585,7 +2586,7 @@ static void brcmf_sdio_dpc(struct brcmf_ - intstatus |= brcmf_sdio_hostmail(bus); - } - -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - - /* Generally don't ask for these, can get CRC errors... */ - if (intstatus & I_WR_OOSYNC) { -@@ -2628,7 +2629,7 @@ static void brcmf_sdio_dpc(struct brcmf_ - - if (bus->ctrl_frame_stat && (bus->clkstate == CLK_AVAIL) && - data_ok(bus)) { -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - if (bus->ctrl_frame_stat) { - err = brcmf_sdio_tx_ctrlframe(bus, bus->ctrl_frame_buf, - bus->ctrl_frame_len); -@@ -2636,7 +2637,7 @@ static void brcmf_sdio_dpc(struct brcmf_ - wmb(); - bus->ctrl_frame_stat = false; - } -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - brcmf_sdio_wait_event_wakeup(bus); - } - /* Send queued frames (limit 1 if rx may still be pending) */ -@@ -2652,14 +2653,14 @@ static void brcmf_sdio_dpc(struct brcmf_ - brcmf_err("failed backplane access over SDIO, halting operation\n"); - atomic_set(&bus->intstatus, 0); - if (bus->ctrl_frame_stat) { -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - if (bus->ctrl_frame_stat) { - bus->ctrl_frame_err = -ENODEV; - wmb(); - bus->ctrl_frame_stat = false; - brcmf_sdio_wait_event_wakeup(bus); - } -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - } - } else if (atomic_read(&bus->intstatus) || - atomic_read(&bus->ipend) > 0 || -@@ -2874,13 +2875,13 @@ brcmf_sdio_bus_txctl(struct device *dev, - CTL_DONE_TIMEOUT); - ret = 0; - if (bus->ctrl_frame_stat) { -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - if (bus->ctrl_frame_stat) { - brcmf_dbg(SDIO, "ctrl_frame timeout\n"); - bus->ctrl_frame_stat = false; - ret = -ETIMEDOUT; - } -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - } - if (!ret) { - brcmf_dbg(SDIO, "ctrl_frame complete, err=%d\n", -@@ -3004,7 +3005,7 @@ static int brcmf_sdio_assert_info(struct - return 0; - } - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - if (sh->assert_file_addr != 0) { - error = brcmf_sdiod_ramrw(bus->sdiodev, false, - sh->assert_file_addr, (u8 *)file, 80); -@@ -3017,7 +3018,7 @@ static int brcmf_sdio_assert_info(struct - if (error < 0) - return error; - } -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - - seq_printf(seq, "dongle assert: %s:%d: assert(%s)\n", - file, sh->assert_line, expr); -@@ -3291,7 +3292,7 @@ static int brcmf_sdio_download_firmware( - int bcmerror; - u32 rstvec; - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_clkctl(bus, CLK_AVAIL, false); - - rstvec = get_unaligned_le32(fw->data); -@@ -3320,7 +3321,7 @@ static int brcmf_sdio_download_firmware( - - err: - brcmf_sdio_clkctl(bus, CLK_SDONLY, false); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - return bcmerror; - } - -@@ -3435,7 +3436,7 @@ static int brcmf_sdio_bus_preinit(struct - if (sdiodev->sg_support) { - bus->txglom = false; - value = 1; -- pad_size = bus->sdiodev->func[2]->cur_blksize << 1; -+ pad_size = bus->sdiodev->func2->cur_blksize << 1; - err = brcmf_iovar_data_set(bus->sdiodev->dev, "bus:rxglom", - &value, sizeof(u32)); - if (err < 0) { -@@ -3477,7 +3478,7 @@ static int brcmf_sdio_bus_get_memdump(st - - address = bus->ci->rambase; - offset = err = 0; -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - while (offset < mem_size) { - len = ((offset + MEMBLOCK) < mem_size) ? MEMBLOCK : - mem_size - offset; -@@ -3493,7 +3494,7 @@ static int brcmf_sdio_bus_get_memdump(st - } - - done: -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - return err; - } - -@@ -3550,11 +3551,10 @@ static void brcmf_sdio_bus_watchdog(stru - if (!bus->dpc_triggered) { - u8 devpend; - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - devpend = brcmf_sdiod_func0_rb(bus->sdiodev, -- SDIO_CCCR_INTx, -- NULL); -- sdio_release_host(bus->sdiodev->func[1]); -+ SDIO_CCCR_INTx, NULL); -+ sdio_release_host(bus->sdiodev->func1); - intstatus = devpend & (INTR_STATUS_FUNC1 | - INTR_STATUS_FUNC2); - } -@@ -3580,13 +3580,13 @@ static void brcmf_sdio_bus_watchdog(stru - bus->console.count += jiffies_to_msecs(BRCMF_WD_POLL); - if (bus->console.count >= bus->console_interval) { - bus->console.count -= bus->console_interval; -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - /* Make sure backplane clock is on */ - brcmf_sdio_bus_sleep(bus, false, false); - if (brcmf_sdio_readconsole(bus) < 0) - /* stop on error */ - bus->console_interval = 0; -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - } - } - #endif /* DEBUG */ -@@ -3599,11 +3599,11 @@ static void brcmf_sdio_bus_watchdog(stru - bus->idlecount++; - if (bus->idlecount > bus->idletime) { - brcmf_dbg(SDIO, "idle\n"); -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_wd_timer(bus, false); - bus->idlecount = 0; - brcmf_sdio_bus_sleep(bus, true, false); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - } - } else { - bus->idlecount = 0; -@@ -3773,8 +3773,8 @@ static u32 brcmf_sdio_buscore_read32(voi - val = brcmf_sdiod_readl(sdiodev, addr, NULL); - - if (addr == CORE_CC_REG(SI_ENUM_BASE, chipid) && -- (sdiodev->func[1]->device == SDIO_DEVICE_ID_BROADCOM_4339 || -- sdiodev->func[1]->device == SDIO_DEVICE_ID_BROADCOM_4335_4339)) { -+ (sdiodev->func1->device == SDIO_DEVICE_ID_BROADCOM_4339 || -+ sdiodev->func1->device == SDIO_DEVICE_ID_BROADCOM_4335_4339)) { - rev = (val & CID_REV_MASK) >> CID_REV_SHIFT; - if (rev >= 2) { - val &= ~CID_ID_MASK; -@@ -3810,7 +3810,7 @@ brcmf_sdio_probe_attach(struct brcmf_sdi - u32 drivestrength; - - sdiodev = bus->sdiodev; -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - - pr_debug("F1 signature read @0x18000000=0x%4x\n", - brcmf_sdiod_readl(sdiodev, SI_ENUM_BASE, NULL)); -@@ -3877,8 +3877,8 @@ brcmf_sdio_probe_attach(struct brcmf_sdi - /* wowl can be supported when KEEP_POWER is true and (WAKE_SDIO_IRQ - * is true or when platform data OOB irq is true). - */ -- if ((sdio_get_host_pm_caps(sdiodev->func[1]) & MMC_PM_KEEP_POWER) && -- ((sdio_get_host_pm_caps(sdiodev->func[1]) & MMC_PM_WAKE_SDIO_IRQ) || -+ if ((sdio_get_host_pm_caps(sdiodev->func1) & MMC_PM_KEEP_POWER) && -+ ((sdio_get_host_pm_caps(sdiodev->func1) & MMC_PM_WAKE_SDIO_IRQ) || - (sdiodev->settings->bus.sdio.oob_irq_supported))) - sdiodev->bus_if->wowl_supported = true; - #endif -@@ -3917,7 +3917,7 @@ brcmf_sdio_probe_attach(struct brcmf_sdi - if (err) - goto fail; - -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - - brcmu_pktq_init(&bus->txq, (PRIOMASK + 1), TXQLEN); - -@@ -3938,7 +3938,7 @@ brcmf_sdio_probe_attach(struct brcmf_sdi - return true; - - fail: -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - return false; - } - -@@ -4044,7 +4044,7 @@ static void brcmf_sdio_firmware_callback - bus->sdcnt.tickcnt = 0; - brcmf_sdio_wd_timer(bus, true); - -- sdio_claim_host(sdiodev->func[1]); -+ sdio_claim_host(sdiodev->func1); - - /* Make sure backplane clock is on, needed to generate F2 interrupt */ - brcmf_sdio_clkctl(bus, CLK_AVAIL, false); -@@ -4066,7 +4066,7 @@ static void brcmf_sdio_firmware_callback - brcmf_sdiod_writel(sdiod, core->base + SD_REG(tosbmailboxdata), - SDPCM_PROT_VERSION << SMB_DATA_VERSION_SHIFT, NULL); - -- err = sdio_enable_func(sdiodev->func[2]); -+ err = sdio_enable_func(sdiodev->func2); - - brcmf_dbg(INFO, "enable F2: err=%d\n", err); - -@@ -4081,7 +4081,7 @@ static void brcmf_sdio_firmware_callback - brcmf_sdiod_writeb(sdiodev, SBSDIO_WATERMARK, 8, &err); - } else { - /* Disable F2 again */ -- sdio_disable_func(sdiodev->func[2]); -+ sdio_disable_func(sdiodev->func2); - goto release; - } - -@@ -4106,7 +4106,7 @@ static void brcmf_sdio_firmware_callback - if (err != 0) - brcmf_sdio_clkctl(bus, CLK_NONE, false); - -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - - err = brcmf_bus_started(dev); - if (err != 0) { -@@ -4116,10 +4116,10 @@ static void brcmf_sdio_firmware_callback - return; - - release: -- sdio_release_host(sdiodev->func[1]); -+ sdio_release_host(sdiodev->func1); - fail: - brcmf_dbg(TRACE, "failed: dev=%s, err=%d\n", dev_name(dev), err); -- device_release_driver(&sdiodev->func[2]->dev); -+ device_release_driver(&sdiodev->func2->dev); - device_release_driver(dev); - } - -@@ -4146,7 +4146,7 @@ struct brcmf_sdio *brcmf_sdio_probe(stru - - /* single-threaded workqueue */ - wq = alloc_ordered_workqueue("brcmf_wq/%s", WQ_MEM_RECLAIM, -- dev_name(&sdiodev->func[1]->dev)); -+ dev_name(&sdiodev->func1->dev)); - if (!wq) { - brcmf_err("insufficient memory to create txworkqueue\n"); - goto fail; -@@ -4173,7 +4173,7 @@ struct brcmf_sdio *brcmf_sdio_probe(stru - init_completion(&bus->watchdog_wait); - bus->watchdog_tsk = kthread_run(brcmf_sdio_watchdog_thread, - bus, "brcmf_wdog/%s", -- dev_name(&sdiodev->func[1]->dev)); -+ dev_name(&sdiodev->func1->dev)); - if (IS_ERR(bus->watchdog_tsk)) { - pr_warn("brcmf_watchdog thread failed to start\n"); - bus->watchdog_tsk = NULL; -@@ -4199,7 +4199,7 @@ struct brcmf_sdio *brcmf_sdio_probe(stru - } - - /* Query the F2 block size, set roundup accordingly */ -- bus->blocksize = bus->sdiodev->func[2]->cur_blksize; -+ bus->blocksize = bus->sdiodev->func2->cur_blksize; - bus->roundup = min(max_roundup, bus->blocksize); - - /* Allocate buffers */ -@@ -4215,17 +4215,17 @@ struct brcmf_sdio *brcmf_sdio_probe(stru - } - } - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - - /* Disable F2 to clear any intermediate frame state on the dongle */ -- sdio_disable_func(bus->sdiodev->func[2]); -+ sdio_disable_func(bus->sdiodev->func2); - - bus->rxflow = false; - - /* Done with backplane-dependent accesses, can drop clock... */ - brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, 0, NULL); - -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - - /* ...and initialize clock/power states */ - bus->clkstate = CLK_SDONLY; -@@ -4277,7 +4277,7 @@ void brcmf_sdio_remove(struct brcmf_sdio - - if (bus->ci) { - if (bus->sdiodev->state != BRCMF_SDIOD_NOMEDIUM) { -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_wd_timer(bus, false); - brcmf_sdio_clkctl(bus, CLK_AVAIL, false); - /* Leave the device in state where it is -@@ -4287,7 +4287,7 @@ void brcmf_sdio_remove(struct brcmf_sdio - msleep(20); - brcmf_chip_set_passive(bus->ci); - brcmf_sdio_clkctl(bus, CLK_NONE, false); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - } - brcmf_chip_detach(bus->ci); - } -@@ -4334,9 +4334,9 @@ int brcmf_sdio_sleep(struct brcmf_sdio * - { - int ret; - -- sdio_claim_host(bus->sdiodev->func[1]); -+ sdio_claim_host(bus->sdiodev->func1); - ret = brcmf_sdio_bus_sleep(bus, sleep, false); -- sdio_release_host(bus->sdiodev->func[1]); -+ sdio_release_host(bus->sdiodev->func1); - - return ret; - } ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h -@@ -21,9 +21,6 @@ - #include <linux/firmware.h> - #include "firmware.h" - --/* Maximum number of I/O funcs */ --#define NUM_SDIO_FUNCS 3 -- - #define SDIOD_FBR_SIZE 0x100 - - /* io_en */ -@@ -173,8 +170,8 @@ struct brcmf_sdio; - struct brcmf_sdiod_freezer; - - struct brcmf_sdio_dev { -- struct sdio_func *func[NUM_SDIO_FUNCS]; -- u8 num_funcs; /* Supported funcs on client */ -+ struct sdio_func *func1; -+ struct sdio_func *func2; - u32 sbwad; /* Save backplane window address */ - struct brcmf_core *cc_core; /* chipcommon core info struct */ - struct brcmf_sdio *bus; -@@ -295,17 +292,17 @@ void brcmf_sdiod_intr_unregister(struct - /* SDIO device register access interface */ - /* Accessors for SDIO Function 0 */ - #define brcmf_sdiod_func0_rb(sdiodev, addr, r) \ -- sdio_f0_readb((sdiodev)->func[1], (addr), (r)) -+ sdio_f0_readb((sdiodev)->func1, (addr), (r)) - - #define brcmf_sdiod_func0_wb(sdiodev, addr, v, ret) \ -- sdio_f0_writeb((sdiodev)->func[1], (v), (addr), (ret)) -+ sdio_f0_writeb((sdiodev)->func1, (v), (addr), (ret)) - - /* Accessors for SDIO Function 1 */ - #define brcmf_sdiod_readb(sdiodev, addr, r) \ -- sdio_readb((sdiodev)->func[1], (addr), (r)) -+ sdio_readb((sdiodev)->func1, (addr), (r)) - - #define brcmf_sdiod_writeb(sdiodev, addr, v, ret) \ -- sdio_writeb((sdiodev)->func[1], (v), (addr), (ret)) -+ sdio_writeb((sdiodev)->func1, (v), (addr), (ret)) - - u32 brcmf_sdiod_readl(struct brcmf_sdio_dev *sdiodev, u32 addr, int *ret); - void brcmf_sdiod_writel(struct brcmf_sdio_dev *sdiodev, u32 addr, u32 data, |