Commit 00eb62cf authored by Ian Molton's avatar Ian Molton Committed by Kalle Valo

brcmfmac: Replace function index with function pointer

In preparation for removing the function array, remove all code that
refers to function by index and replace with pointers to the function
itself.
Signed-off-by: default avatarIan Molton <ian@mnementh.co.uk>
Reviewed-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
[arend: replace BUG() with WARN() macro]
Signed-off-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent bcadaaa0
...@@ -291,8 +291,9 @@ void brcmf_sdiod_writel(struct brcmf_sdio_dev *sdiodev, u32 addr, ...@@ -291,8 +291,9 @@ void brcmf_sdiod_writel(struct brcmf_sdio_dev *sdiodev, u32 addr,
*ret = retval; *ret = retval;
} }
static int brcmf_sdiod_buff_read(struct brcmf_sdio_dev *sdiodev, uint fn, static int brcmf_sdiod_buff_read(struct brcmf_sdio_dev *sdiodev,
u32 addr, struct sk_buff *pkt) struct sdio_func *func, u32 addr,
struct sk_buff *pkt)
{ {
unsigned int req_sz; unsigned int req_sz;
int err; int err;
...@@ -301,13 +302,19 @@ static int brcmf_sdiod_buff_read(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -301,13 +302,19 @@ static int brcmf_sdiod_buff_read(struct brcmf_sdio_dev *sdiodev, uint fn,
req_sz = pkt->len + 3; req_sz = pkt->len + 3;
req_sz &= (uint)~3; req_sz &= (uint)~3;
if (fn == 1) switch (func->num) {
err = sdio_memcpy_fromio(sdiodev->func[fn], case 1:
((u8 *)(pkt->data)), addr, req_sz); err = sdio_memcpy_fromio(func, ((u8 *)(pkt->data)), addr,
else req_sz);
/* function 2 read is FIFO operation */ break;
err = sdio_readsb(sdiodev->func[fn], case 2:
((u8 *)(pkt->data)), addr, req_sz); err = sdio_readsb(func, ((u8 *)(pkt->data)), addr, req_sz);
break;
default:
/* bail out as things are really fishy here */
WARN(1, "invalid sdio function number: %d\n", func->num);
err = -ENOMEDIUM;
};
if (err == -ENOMEDIUM) if (err == -ENOMEDIUM)
brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM); brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
...@@ -315,8 +322,9 @@ static int brcmf_sdiod_buff_read(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -315,8 +322,9 @@ static int brcmf_sdiod_buff_read(struct brcmf_sdio_dev *sdiodev, uint fn,
return err; return err;
} }
static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev, uint fn, static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev,
u32 addr, struct sk_buff *pkt) struct sdio_func *func, u32 addr,
struct sk_buff *pkt)
{ {
unsigned int req_sz; unsigned int req_sz;
int err; int err;
...@@ -325,8 +333,7 @@ static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -325,8 +333,7 @@ static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev, uint fn,
req_sz = pkt->len + 3; req_sz = pkt->len + 3;
req_sz &= (uint)~3; req_sz &= (uint)~3;
err = sdio_memcpy_toio(sdiodev->func[fn], addr, err = sdio_memcpy_toio(func, addr, ((u8 *)(pkt->data)), req_sz);
((u8 *)(pkt->data)), req_sz);
if (err == -ENOMEDIUM) if (err == -ENOMEDIUM)
brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM); brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
...@@ -337,7 +344,7 @@ static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -337,7 +344,7 @@ static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev, uint fn,
/** /**
* brcmf_sdiod_sglist_rw - SDIO interface function for block data access * brcmf_sdiod_sglist_rw - SDIO interface function for block data access
* @sdiodev: brcmfmac sdio device * @sdiodev: brcmfmac sdio device
* @fn: SDIO function number * @func: SDIO function
* @write: direction flag * @write: direction flag
* @addr: dongle memory address as source/destination * @addr: dongle memory address as source/destination
* @pkt: skb pointer * @pkt: skb pointer
...@@ -346,7 +353,8 @@ static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -346,7 +353,8 @@ static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev, uint fn,
* stack for block data access. It assumes that the skb passed down by the * stack for block data access. It assumes that the skb passed down by the
* caller has already been padded and aligned. * caller has already been padded and aligned.
*/ */
static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn, static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev,
struct sdio_func *func,
bool write, u32 addr, bool write, u32 addr,
struct sk_buff_head *pktlist) struct sk_buff_head *pktlist)
{ {
...@@ -372,7 +380,7 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -372,7 +380,7 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn,
req_sz = 0; req_sz = 0;
skb_queue_walk(pktlist, pkt_next) skb_queue_walk(pktlist, pkt_next)
req_sz += pkt_next->len; req_sz += pkt_next->len;
req_sz = ALIGN(req_sz, sdiodev->func[fn]->cur_blksize); req_sz = ALIGN(req_sz, func->cur_blksize);
while (req_sz > PAGE_SIZE) { while (req_sz > PAGE_SIZE) {
pkt_next = brcmu_pkt_buf_get_skb(PAGE_SIZE); pkt_next = brcmu_pkt_buf_get_skb(PAGE_SIZE);
if (pkt_next == NULL) { if (pkt_next == NULL) {
...@@ -391,7 +399,7 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -391,7 +399,7 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn,
target_list = &local_list; target_list = &local_list;
} }
func_blk_sz = sdiodev->func[fn]->cur_blksize; func_blk_sz = func->cur_blksize;
max_req_sz = sdiodev->max_request_size; max_req_sz = sdiodev->max_request_size;
max_seg_cnt = min_t(unsigned short, sdiodev->max_segment_count, max_seg_cnt = min_t(unsigned short, sdiodev->max_segment_count,
target_list->qlen); target_list->qlen);
...@@ -408,10 +416,10 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -408,10 +416,10 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn,
mmc_dat.flags = write ? MMC_DATA_WRITE : MMC_DATA_READ; mmc_dat.flags = write ? MMC_DATA_WRITE : MMC_DATA_READ;
mmc_cmd.opcode = SD_IO_RW_EXTENDED; mmc_cmd.opcode = SD_IO_RW_EXTENDED;
mmc_cmd.arg = write ? 1<<31 : 0; /* write flag */ mmc_cmd.arg = write ? 1<<31 : 0; /* write flag */
mmc_cmd.arg |= (fn & 0x7) << 28; /* SDIO func num */ mmc_cmd.arg |= (func->num & 0x7) << 28; /* SDIO func num */
mmc_cmd.arg |= 1<<27; /* block mode */ mmc_cmd.arg |= 1 << 27; /* block mode */
/* for function 1 the addr will be incremented */ /* for function 1 the addr will be incremented */
mmc_cmd.arg |= (fn == 1) ? 1<<26 : 0; mmc_cmd.arg |= (func->num == 1) ? 1 << 26 : 0;
mmc_cmd.flags = MMC_RSP_SPI_R5 | MMC_RSP_R5 | MMC_CMD_ADTC; mmc_cmd.flags = MMC_RSP_SPI_R5 | MMC_RSP_R5 | MMC_CMD_ADTC;
mmc_req.cmd = &mmc_cmd; mmc_req.cmd = &mmc_cmd;
mmc_req.data = &mmc_dat; mmc_req.data = &mmc_dat;
...@@ -457,11 +465,11 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn, ...@@ -457,11 +465,11 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev, uint fn,
mmc_cmd.arg |= (addr & 0x1FFFF) << 9; /* address */ mmc_cmd.arg |= (addr & 0x1FFFF) << 9; /* address */
mmc_cmd.arg |= mmc_dat.blocks & 0x1FF; /* block count */ mmc_cmd.arg |= mmc_dat.blocks & 0x1FF; /* block count */
/* incrementing addr for function 1 */ /* incrementing addr for function 1 */
if (fn == 1) if (func->num == 1)
addr += req_sz; addr += req_sz;
mmc_set_data_timeout(&mmc_dat, sdiodev->func[fn]->card); mmc_set_data_timeout(&mmc_dat, func->card);
mmc_wait_for_req(sdiodev->func[fn]->card->host, &mmc_req); mmc_wait_for_req(func->card->host, &mmc_req);
ret = mmc_cmd.error ? mmc_cmd.error : mmc_dat.error; ret = mmc_cmd.error ? mmc_cmd.error : mmc_dat.error;
if (ret == -ENOMEDIUM) { if (ret == -ENOMEDIUM) {
...@@ -541,7 +549,7 @@ int brcmf_sdiod_recv_pkt(struct brcmf_sdio_dev *sdiodev, struct sk_buff *pkt) ...@@ -541,7 +549,7 @@ int brcmf_sdiod_recv_pkt(struct brcmf_sdio_dev *sdiodev, struct sk_buff *pkt)
addr &= SBSDIO_SB_OFT_ADDR_MASK; addr &= SBSDIO_SB_OFT_ADDR_MASK;
addr |= SBSDIO_SB_ACCESS_2_4B_FLAG; addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_2, addr, pkt); err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func[2], addr, pkt);
done: done:
return err; return err;
...@@ -566,13 +574,13 @@ int brcmf_sdiod_recv_chain(struct brcmf_sdio_dev *sdiodev, ...@@ -566,13 +574,13 @@ int brcmf_sdiod_recv_chain(struct brcmf_sdio_dev *sdiodev,
addr |= SBSDIO_SB_ACCESS_2_4B_FLAG; addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
if (pktq->qlen == 1) if (pktq->qlen == 1)
err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_2, addr, err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func[2], addr,
pktq->next); pktq->next);
else if (!sdiodev->sg_support) { else if (!sdiodev->sg_support) {
glom_skb = brcmu_pkt_buf_get_skb(totlen); glom_skb = brcmu_pkt_buf_get_skb(totlen);
if (!glom_skb) if (!glom_skb)
return -ENOMEM; return -ENOMEM;
err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_2, addr, err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func[2], addr,
glom_skb); glom_skb);
if (err) if (err)
goto done; goto done;
...@@ -582,8 +590,8 @@ int brcmf_sdiod_recv_chain(struct brcmf_sdio_dev *sdiodev, ...@@ -582,8 +590,8 @@ int brcmf_sdiod_recv_chain(struct brcmf_sdio_dev *sdiodev,
skb_pull(glom_skb, skb->len); skb_pull(glom_skb, skb->len);
} }
} else } else
err = brcmf_sdiod_sglist_rw(sdiodev, SDIO_FUNC_2, false, addr, err = brcmf_sdiod_sglist_rw(sdiodev, sdiodev->func[2], false,
pktq); addr, pktq);
done: done:
brcmu_pkt_buf_free_skb(glom_skb); brcmu_pkt_buf_free_skb(glom_skb);
...@@ -614,7 +622,8 @@ int brcmf_sdiod_send_buf(struct brcmf_sdio_dev *sdiodev, u8 *buf, uint nbytes) ...@@ -614,7 +622,8 @@ int brcmf_sdiod_send_buf(struct brcmf_sdio_dev *sdiodev, u8 *buf, uint nbytes)
addr |= SBSDIO_SB_ACCESS_2_4B_FLAG; addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
if (!err) if (!err)
err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_2, addr, mypkt); err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func[2], addr,
mypkt);
brcmu_pkt_buf_free_skb(mypkt); brcmu_pkt_buf_free_skb(mypkt);
...@@ -639,14 +648,14 @@ int brcmf_sdiod_send_pkt(struct brcmf_sdio_dev *sdiodev, ...@@ -639,14 +648,14 @@ int brcmf_sdiod_send_pkt(struct brcmf_sdio_dev *sdiodev,
if (pktq->qlen == 1 || !sdiodev->sg_support) { if (pktq->qlen == 1 || !sdiodev->sg_support) {
skb_queue_walk(pktq, skb) { skb_queue_walk(pktq, skb) {
err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_2, err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func[2],
addr, skb); addr, skb);
if (err) if (err)
break; break;
} }
} else { } else {
err = brcmf_sdiod_sglist_rw(sdiodev, SDIO_FUNC_2, true, addr, err = brcmf_sdiod_sglist_rw(sdiodev, sdiodev->func[2], true,
pktq); addr, pktq);
} }
return err; return err;
...@@ -696,10 +705,10 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address, ...@@ -696,10 +705,10 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address,
if (write) { if (write) {
memcpy(pkt->data, data, dsize); memcpy(pkt->data, data, dsize);
err = brcmf_sdiod_buff_write(sdiodev, SDIO_FUNC_1, err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func[1],
sdaddr, pkt); sdaddr, pkt);
} else { } else {
err = brcmf_sdiod_buff_read(sdiodev, SDIO_FUNC_1, err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func[1],
sdaddr, pkt); sdaddr, pkt);
} }
...@@ -728,12 +737,12 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address, ...@@ -728,12 +737,12 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address,
return err; return err;
} }
int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, u8 fn) int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, struct sdio_func *func)
{ {
brcmf_dbg(SDIO, "Enter\n"); brcmf_dbg(SDIO, "Enter\n");
/* Issue abort cmd52 command through F0 */ /* Issue abort cmd52 command through F0 */
brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_ABORT, fn, NULL); brcmf_sdiod_func0_wb(sdiodev, SDIO_CCCR_ABORT, func->num, NULL);
brcmf_dbg(SDIO, "Exit\n"); brcmf_dbg(SDIO, "Exit\n");
return 0; return 0;
...@@ -1105,7 +1114,7 @@ static int brcmf_ops_sdio_suspend(struct device *dev) ...@@ -1105,7 +1114,7 @@ static int brcmf_ops_sdio_suspend(struct device *dev)
func = container_of(dev, struct sdio_func, dev); func = container_of(dev, struct sdio_func, dev);
brcmf_dbg(SDIO, "Enter: F%d\n", func->num); brcmf_dbg(SDIO, "Enter: F%d\n", func->num);
if (func->num != SDIO_FUNC_1) if (func->num != 1)
return 0; return 0;
...@@ -1134,7 +1143,7 @@ static int brcmf_ops_sdio_resume(struct device *dev) ...@@ -1134,7 +1143,7 @@ static int brcmf_ops_sdio_resume(struct device *dev)
struct sdio_func *func = container_of(dev, struct sdio_func, dev); struct sdio_func *func = container_of(dev, struct sdio_func, dev);
brcmf_dbg(SDIO, "Enter: F%d\n", func->num); brcmf_dbg(SDIO, "Enter: F%d\n", func->num);
if (func->num != SDIO_FUNC_2) if (func->num != 2)
return 0; return 0;
brcmf_sdiod_freezer_off(sdiodev); brcmf_sdiod_freezer_off(sdiodev);
......
...@@ -1157,7 +1157,7 @@ static void brcmf_sdio_rxfail(struct brcmf_sdio *bus, bool abort, bool rtx) ...@@ -1157,7 +1157,7 @@ static void brcmf_sdio_rxfail(struct brcmf_sdio *bus, bool abort, bool rtx)
rtx ? ", send NAK" : ""); rtx ? ", send NAK" : "");
if (abort) if (abort)
brcmf_sdiod_abort(bus->sdiodev, SDIO_FUNC_2); brcmf_sdiod_abort(bus->sdiodev, bus->sdiodev->func[2]);
brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_RF_TERM, brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_RF_TERM,
&err); &err);
...@@ -1209,7 +1209,7 @@ static void brcmf_sdio_txfail(struct brcmf_sdio *bus) ...@@ -1209,7 +1209,7 @@ static void brcmf_sdio_txfail(struct brcmf_sdio *bus)
brcmf_err("sdio error, abort command and terminate frame\n"); brcmf_err("sdio error, abort command and terminate frame\n");
bus->sdcnt.tx_sderrs++; bus->sdcnt.tx_sderrs++;
brcmf_sdiod_abort(sdiodev, SDIO_FUNC_2); brcmf_sdiod_abort(sdiodev, sdiodev->func[2]);
brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_WF_TERM, NULL); brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_WF_TERM, NULL);
bus->sdcnt.f1regdata++; bus->sdcnt.f1regdata++;
...@@ -2072,7 +2072,7 @@ static int brcmf_sdio_txpkt_prep_sg(struct brcmf_sdio *bus, ...@@ -2072,7 +2072,7 @@ static int brcmf_sdio_txpkt_prep_sg(struct brcmf_sdio *bus,
int ntail, ret; int ntail, ret;
sdiodev = bus->sdiodev; sdiodev = bus->sdiodev;
blksize = sdiodev->func[SDIO_FUNC_2]->cur_blksize; blksize = sdiodev->func[2]->cur_blksize;
/* sg entry alignment should be a divisor of block size */ /* sg entry alignment should be a divisor of block size */
WARN_ON(blksize % bus->sgentry_align); WARN_ON(blksize % bus->sgentry_align);
...@@ -2441,7 +2441,7 @@ static void brcmf_sdio_bus_stop(struct device *dev) ...@@ -2441,7 +2441,7 @@ static void brcmf_sdio_bus_stop(struct device *dev)
/* Turn off the bus (F2), free any pending packets */ /* Turn off the bus (F2), free any pending packets */
brcmf_dbg(INTR, "disable SDIO interrupts\n"); brcmf_dbg(INTR, "disable SDIO interrupts\n");
sdio_disable_func(sdiodev->func[SDIO_FUNC_2]); sdio_disable_func(sdiodev->func[2]);
/* Clear any pending interrupts now that F2 is disabled */ /* Clear any pending interrupts now that F2 is disabled */
brcmf_sdiod_writel(sdiodev, core->base + SD_REG(intstatus), brcmf_sdiod_writel(sdiodev, core->base + SD_REG(intstatus),
...@@ -4066,8 +4066,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, ...@@ -4066,8 +4066,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
brcmf_sdiod_writel(sdiod, core->base + SD_REG(tosbmailboxdata), brcmf_sdiod_writel(sdiod, core->base + SD_REG(tosbmailboxdata),
SDPCM_PROT_VERSION << SMB_DATA_VERSION_SHIFT, NULL); SDPCM_PROT_VERSION << SMB_DATA_VERSION_SHIFT, NULL);
err = sdio_enable_func(sdiodev->func[SDIO_FUNC_2]); err = sdio_enable_func(sdiodev->func[2]);
brcmf_dbg(INFO, "enable F2: err=%d\n", err); brcmf_dbg(INFO, "enable F2: err=%d\n", err);
...@@ -4082,7 +4081,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, ...@@ -4082,7 +4081,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
brcmf_sdiod_writeb(sdiodev, SBSDIO_WATERMARK, 8, &err); brcmf_sdiod_writeb(sdiodev, SBSDIO_WATERMARK, 8, &err);
} else { } else {
/* Disable F2 again */ /* Disable F2 again */
sdio_disable_func(sdiodev->func[SDIO_FUNC_2]); sdio_disable_func(sdiodev->func[2]);
goto release; goto release;
} }
...@@ -4218,7 +4217,7 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) ...@@ -4218,7 +4217,7 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
sdio_claim_host(bus->sdiodev->func[1]); sdio_claim_host(bus->sdiodev->func[1]);
/* Disable F2 to clear any intermediate frame state on the dongle */ /* Disable F2 to clear any intermediate frame state on the dongle */
sdio_disable_func(bus->sdiodev->func[SDIO_FUNC_2]); sdio_disable_func(bus->sdiodev->func[2]);
bus->rxflow = false; bus->rxflow = false;
......
...@@ -45,9 +45,6 @@ ...@@ -45,9 +45,6 @@
#define REG_F0_REG_MASK 0x7FF #define REG_F0_REG_MASK 0x7FF
#define REG_F1_MISC_MASK 0x1FFFF #define REG_F1_MISC_MASK 0x1FFFF
/* as of sdiod rev 0, supports 3 functions */
#define SBSDIO_NUM_FUNCTION 3
/* function 0 vendor specific CCCR registers */ /* function 0 vendor specific CCCR registers */
#define SDIO_CCCR_BRCM_CARDCAP 0xf0 #define SDIO_CCCR_BRCM_CARDCAP 0xf0
...@@ -350,7 +347,8 @@ int brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address, ...@@ -350,7 +347,8 @@ int brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address,
u8 *data, uint size); u8 *data, uint size);
/* Issue an abort to the specified function */ /* Issue an abort to the specified function */
int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, u8 fn); int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, struct sdio_func *func);
void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev); void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev);
void brcmf_sdiod_change_state(struct brcmf_sdio_dev *sdiodev, void brcmf_sdiod_change_state(struct brcmf_sdio_dev *sdiodev,
enum brcmf_sdiod_state state); enum brcmf_sdiod_state state);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment