|
@@ -450,8 +450,6 @@ struct sdpcm_shared_le {
|
|
|
/* misc chip info needed by some of the routines */
|
|
|
/* Private data for SDIO bus interaction */
|
|
|
struct brcmf_sdio {
|
|
|
- struct brcmf_pub *drvr;
|
|
|
-
|
|
|
struct brcmf_sdio_dev *sdiodev; /* sdio device handler */
|
|
|
struct chip_info *ci; /* Chip info struct */
|
|
|
char *vars; /* Variables (from CIS and/or other) */
|
|
@@ -1077,7 +1075,7 @@ static void brcmf_sdbrcm_rxfail(struct brcmf_sdio *bus, bool abort, bool rtx)
|
|
|
|
|
|
/* If we can't reach the device, signal failure */
|
|
|
if (err || brcmf_sdcard_regfail(bus->sdiodev))
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
}
|
|
|
|
|
|
/* copy a buffer into a pkt buffer chain */
|
|
@@ -1724,7 +1722,7 @@ brcmf_sdbrcm_readframes(struct brcmf_sdio *bus, uint maxframes, bool *finished)
|
|
|
|
|
|
for (rxseq = bus->rx_seq, rxleft = maxframes;
|
|
|
!bus->rxskip && rxleft &&
|
|
|
- bus->drvr->bus_if->state != BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state != BRCMF_BUS_DOWN;
|
|
|
rxseq++, rxleft--) {
|
|
|
|
|
|
/* Handle glomming separately */
|
|
@@ -2259,8 +2257,6 @@ static uint brcmf_sdbrcm_sendfromq(struct brcmf_sdio *bus, uint maxframes)
|
|
|
uint datalen;
|
|
|
u8 tx_prec_map;
|
|
|
|
|
|
- struct brcmf_pub *drvr = bus->drvr;
|
|
|
-
|
|
|
brcmf_dbg(TRACE, "Enter\n");
|
|
|
|
|
|
tx_prec_map = ~bus->flowcontrol;
|
|
@@ -2297,8 +2293,8 @@ static uint brcmf_sdbrcm_sendfromq(struct brcmf_sdio *bus, uint maxframes)
|
|
|
}
|
|
|
|
|
|
/* Deflow-control stack if needed */
|
|
|
- if (drvr->bus_if->drvr_up &&
|
|
|
- (drvr->bus_if->state == BRCMF_BUS_DATA) &&
|
|
|
+ if (bus->sdiodev->bus_if->drvr_up &&
|
|
|
+ (bus->sdiodev->bus_if->state == BRCMF_BUS_DATA) &&
|
|
|
bus->txoff && (pktq_len(&bus->txq) < TXLOW)) {
|
|
|
bus->txoff = OFF;
|
|
|
brcmf_txflowcontrol(bus->sdiodev->dev, 0, OFF);
|
|
@@ -2335,7 +2331,7 @@ static bool brcmf_sdbrcm_dpc(struct brcmf_sdio *bus)
|
|
|
SBSDIO_DEVICE_CTL, &err);
|
|
|
if (err) {
|
|
|
brcmf_dbg(ERROR, "error reading DEVCTL: %d\n", err);
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
}
|
|
|
#endif /* BCMDBG */
|
|
|
|
|
@@ -2345,7 +2341,7 @@ static bool brcmf_sdbrcm_dpc(struct brcmf_sdio *bus)
|
|
|
if (err) {
|
|
|
brcmf_dbg(ERROR, "error reading CSR: %d\n",
|
|
|
err);
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
}
|
|
|
|
|
|
brcmf_dbg(INFO, "DPC: PENDING, devctl 0x%02x clkctl 0x%02x\n",
|
|
@@ -2358,7 +2354,7 @@ static bool brcmf_sdbrcm_dpc(struct brcmf_sdio *bus)
|
|
|
if (err) {
|
|
|
brcmf_dbg(ERROR, "error reading DEVCTL: %d\n",
|
|
|
err);
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
}
|
|
|
devctl &= ~SBSDIO_DEVCTL_CA_INT_ONLY;
|
|
|
brcmf_sdcard_cfg_write(bus->sdiodev, SDIO_FUNC_1,
|
|
@@ -2366,7 +2362,7 @@ static bool brcmf_sdbrcm_dpc(struct brcmf_sdio *bus)
|
|
|
if (err) {
|
|
|
brcmf_dbg(ERROR, "error writing DEVCTL: %d\n",
|
|
|
err);
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
}
|
|
|
bus->clkstate = CLK_AVAIL;
|
|
|
} else {
|
|
@@ -2522,11 +2518,11 @@ clkwait:
|
|
|
else await next interrupt */
|
|
|
/* On failed register access, all bets are off:
|
|
|
no resched or interrupts */
|
|
|
- if ((bus->drvr->bus_if->state == BRCMF_BUS_DOWN) ||
|
|
|
+ if ((bus->sdiodev->bus_if->state == BRCMF_BUS_DOWN) ||
|
|
|
brcmf_sdcard_regfail(bus->sdiodev)) {
|
|
|
brcmf_dbg(ERROR, "failed backplane access over SDIO, halting operation %d\n",
|
|
|
brcmf_sdcard_regfail(bus->sdiodev));
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
bus->intstatus = 0;
|
|
|
} else if (bus->clkstate == CLK_PENDING) {
|
|
|
brcmf_dbg(INFO, "rescheduled due to CLK_PENDING awaiting I_CHIPACTIVE interrupt\n");
|
|
@@ -2563,7 +2559,7 @@ static int brcmf_sdbrcm_dpc_thread(void *data)
|
|
|
if (!wait_for_completion_interruptible(&bus->dpc_wait)) {
|
|
|
/* Call bus dpc unless it indicated down
|
|
|
(then clean stop) */
|
|
|
- if (bus->drvr->bus_if->state != BRCMF_BUS_DOWN) {
|
|
|
+ if (bus->sdiodev->bus_if->state != BRCMF_BUS_DOWN) {
|
|
|
if (brcmf_sdbrcm_dpc(bus))
|
|
|
complete(&bus->dpc_wait);
|
|
|
} else {
|
|
@@ -3137,7 +3133,7 @@ static int brcmf_sdbrcm_download_state(struct brcmf_sdio *bus, bool enter)
|
|
|
/* Allow HT Clock now that the ARM is running. */
|
|
|
bus->alp_only = false;
|
|
|
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_LOAD;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_LOAD;
|
|
|
}
|
|
|
fail:
|
|
|
return bcmerror;
|
|
@@ -3383,7 +3379,7 @@ void brcmf_sdbrcm_bus_stop(struct device *dev)
|
|
|
bus->hostintmask = 0;
|
|
|
|
|
|
/* Change our idea of bus state */
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
|
|
|
/* Force clocks on backplane to be sure F2 interrupt propagates */
|
|
|
saveclk = brcmf_sdcard_cfg_read(bus->sdiodev, SDIO_FUNC_1,
|
|
@@ -3446,7 +3442,7 @@ int brcmf_sdbrcm_bus_init(struct device *dev)
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
- if (!bus->drvr)
|
|
|
+ if (!bus->sdiodev->bus_if->drvr)
|
|
|
return 0;
|
|
|
|
|
|
/* Start the watchdog timer */
|
|
@@ -3542,7 +3538,7 @@ void brcmf_sdbrcm_isr(void *arg)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (bus->drvr->bus_if->state == BRCMF_BUS_DOWN) {
|
|
|
+ if (bus->sdiodev->bus_if->state == BRCMF_BUS_DOWN) {
|
|
|
brcmf_dbg(ERROR, "bus is down. we have nothing to do\n");
|
|
|
return;
|
|
|
}
|
|
@@ -3798,7 +3794,7 @@ static bool brcmf_sdbrcm_probe_init(struct brcmf_sdio *bus)
|
|
|
brcmf_sdcard_cfg_write(bus->sdiodev, SDIO_FUNC_0, SDIO_CCCR_IOEx,
|
|
|
SDIO_FUNC_ENABLE_1, NULL);
|
|
|
|
|
|
- bus->drvr->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
+ bus->sdiodev->bus_if->state = BRCMF_BUS_DOWN;
|
|
|
bus->sleeping = false;
|
|
|
bus->rxflow = false;
|
|
|
|
|
@@ -3884,7 +3880,6 @@ static void brcmf_sdbrcm_release(struct brcmf_sdio *bus)
|
|
|
if (bus->sdiodev->bus_if->drvr) {
|
|
|
brcmf_detach(bus->sdiodev->dev);
|
|
|
brcmf_sdbrcm_release_dongle(bus);
|
|
|
- bus->drvr = NULL;
|
|
|
}
|
|
|
|
|
|
brcmf_sdbrcm_release_malloc(bus);
|
|
@@ -3958,8 +3953,8 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
|
|
|
}
|
|
|
|
|
|
/* Attach to the brcmf/OS/network interface */
|
|
|
- bus->drvr = brcmf_attach(bus, SDPCM_RESERVE, bus->sdiodev->dev);
|
|
|
- if (!bus->drvr) {
|
|
|
+ ret = brcmf_attach(bus, SDPCM_RESERVE, bus->sdiodev->dev);
|
|
|
+ if (ret != 0) {
|
|
|
brcmf_dbg(ERROR, "brcmf_attach failed\n");
|
|
|
goto fail;
|
|
|
}
|
|
@@ -4032,7 +4027,7 @@ brcmf_sdbrcm_wd_timer(struct brcmf_sdio *bus, uint wdtick)
|
|
|
}
|
|
|
|
|
|
/* don't start the wd until fw is loaded */
|
|
|
- if (bus->drvr->bus_if->state == BRCMF_BUS_DOWN)
|
|
|
+ if (bus->sdiodev->bus_if->state == BRCMF_BUS_DOWN)
|
|
|
return;
|
|
|
|
|
|
if (wdtick) {
|