123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- From 3d110df8f74781354051e4bb1e3e97fa368b2f80 Mon Sep 17 00:00:00 2001
- From: Ian Molton <[email protected]>
- Date: Tue, 19 Dec 2017 13:47:07 +0100
- Subject: [PATCH] brcmfmac: Remove {r,w}_sdreg32
- Remove yet another IO function from the code and replace with one
- that already exists.
- Signed-off-by: Ian Molton <[email protected]>
- Reviewed-by: Arend van Spriel <[email protected]>
- [arend: keep address calculation, ie. (base + offset) in one line]
- Signed-off-by: Arend van Spriel <[email protected]>
- Signed-off-by: Kalle Valo <[email protected]>
- ---
- .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 88 +++++++++++-----------
- 1 file changed, 42 insertions(+), 46 deletions(-)
- --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- @@ -660,30 +660,6 @@ static bool data_ok(struct brcmf_sdio *b
- ((u8)(bus->tx_max - bus->tx_seq) & 0x80) == 0;
- }
-
- -/*
- - * Reads a register in the SDIO hardware block. This block occupies a series of
- - * adresses on the 32 bit backplane bus.
- - */
- -static int r_sdreg32(struct brcmf_sdio *bus, u32 *regvar, u32 offset)
- -{
- - struct brcmf_core *core = bus->sdio_core;
- - int ret;
- -
- - *regvar = brcmf_sdiod_readl(bus->sdiodev, core->base + offset, &ret);
- -
- - return ret;
- -}
- -
- -static int w_sdreg32(struct brcmf_sdio *bus, u32 regval, u32 reg_offset)
- -{
- - struct brcmf_core *core = bus->sdio_core;
- - int ret;
- -
- - brcmf_sdiod_writel(bus->sdiodev, core->base + reg_offset, regval, &ret);
- -
- - return ret;
- -}
- -
- static int
- brcmf_sdio_kso_control(struct brcmf_sdio *bus, bool on)
- {
- @@ -1078,6 +1054,8 @@ static void brcmf_sdio_get_console_addr(
-
- static u32 brcmf_sdio_hostmail(struct brcmf_sdio *bus)
- {
- + struct brcmf_sdio_dev *sdiod = bus->sdiodev;
- + struct brcmf_core *core = bus->sdio_core;
- u32 intstatus = 0;
- u32 hmb_data;
- u8 fcbits;
- @@ -1086,10 +1064,14 @@ static u32 brcmf_sdio_hostmail(struct br
- brcmf_dbg(SDIO, "Enter\n");
-
- /* Read mailbox data and ack that we did so */
- - ret = r_sdreg32(bus, &hmb_data, SD_REG(tohostmailboxdata));
- + hmb_data = brcmf_sdiod_readl(sdiod,
- + core->base + SD_REG(tohostmailboxdata),
- + &ret);
- +
- + if (!ret)
- + brcmf_sdiod_writel(sdiod, core->base + SD_REG(tosbmailbox),
- + SMB_INT_ACK, &ret);
-
- - if (ret == 0)
- - w_sdreg32(bus, SMB_INT_ACK, SD_REG(tosbmailbox));
- bus->sdcnt.f1regdata += 2;
-
- /* dongle indicates the firmware has halted/crashed */
- @@ -1163,6 +1145,8 @@ static u32 brcmf_sdio_hostmail(struct br
-
- static void brcmf_sdio_rxfail(struct brcmf_sdio *bus, bool abort, bool rtx)
- {
- + struct brcmf_sdio_dev *sdiod = bus->sdiodev;
- + struct brcmf_core *core = bus->sdio_core;
- uint retries = 0;
- u16 lastrbc;
- u8 hi, lo;
- @@ -1204,7 +1188,8 @@ static void brcmf_sdio_rxfail(struct brc
-
- if (rtx) {
- bus->sdcnt.rxrtx++;
- - err = w_sdreg32(bus, SMB_NAK, SD_REG(tosbmailbox));
- + brcmf_sdiod_writel(sdiod, core->base + SD_REG(tosbmailbox),
- + SMB_NAK, &err);
-
- bus->sdcnt.f1regdata++;
- if (err == 0)
- @@ -2291,6 +2276,7 @@ static uint brcmf_sdio_sendfromq(struct
- {
- struct sk_buff *pkt;
- struct sk_buff_head pktq;
- + u32 intstat_addr = bus->sdio_core->base + SD_REG(intstatus);
- u32 intstatus = 0;
- int ret = 0, prec_out, i;
- uint cnt = 0;
- @@ -2329,7 +2315,8 @@ static uint brcmf_sdio_sendfromq(struct
- if (!bus->intr) {
- /* Check device status, signal pending interrupt */
- sdio_claim_host(bus->sdiodev->func[1]);
- - ret = r_sdreg32(bus, &intstatus, SD_REG(intstatus));
- + intstatus = brcmf_sdiod_readl(bus->sdiodev,
- + intstat_addr, &ret);
- sdio_release_host(bus->sdiodev->func[1]);
- bus->sdcnt.f2txdata++;
- if (ret != 0)
- @@ -2413,12 +2400,13 @@ static int brcmf_sdio_tx_ctrlframe(struc
-
- static void brcmf_sdio_bus_stop(struct device *dev)
- {
- - u32 local_hostintmask;
- - u8 saveclk;
- - int err;
- struct brcmf_bus *bus_if = dev_get_drvdata(dev);
- struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
- struct brcmf_sdio *bus = sdiodev->bus;
- + struct brcmf_core *core = bus->sdio_core;
- + u32 local_hostintmask;
- + u8 saveclk;
- + int err;
-
- brcmf_dbg(TRACE, "Enter\n");
-
- @@ -2435,7 +2423,9 @@ static void brcmf_sdio_bus_stop(struct d
- brcmf_sdio_bus_sleep(bus, false, false);
-
- /* Disable and clear interrupts at the chip level also */
- - w_sdreg32(bus, 0, SD_REG(hostintmask));
- + brcmf_sdiod_writel(sdiodev, core->base + SD_REG(hostintmask),
- + 0, NULL);
- +
- local_hostintmask = bus->hostintmask;
- bus->hostintmask = 0;
-
- @@ -2454,7 +2444,8 @@ static void brcmf_sdio_bus_stop(struct d
- sdio_disable_func(sdiodev->func[SDIO_FUNC_2]);
-
- /* Clear any pending interrupts now that F2 is disabled */
- - w_sdreg32(bus, local_hostintmask, SD_REG(intstatus));
- + brcmf_sdiod_writel(sdiodev, core->base + SD_REG(intstatus),
- + local_hostintmask, NULL);
-
- sdio_release_host(sdiodev->func[1]);
- }
- @@ -2521,7 +2512,9 @@ static int brcmf_sdio_intr_rstatus(struc
-
- static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
- {
- + struct brcmf_sdio_dev *sdiod = bus->sdiodev;
- u32 newstatus = 0;
- + u32 intstat_addr = bus->sdio_core->base + SD_REG(intstatus);
- unsigned long intstatus;
- uint txlimit = bus->txbound; /* Tx frames to send before resched */
- uint framecnt; /* Temporary counter of tx/rx frames */
- @@ -2576,9 +2569,10 @@ static void brcmf_sdio_dpc(struct brcmf_
- */
- if (intstatus & I_HMB_FC_CHANGE) {
- intstatus &= ~I_HMB_FC_CHANGE;
- - err = w_sdreg32(bus, I_HMB_FC_CHANGE, SD_REG(intstatus));
- + brcmf_sdiod_writel(sdiod, intstat_addr, I_HMB_FC_CHANGE, &err);
- +
- + newstatus = brcmf_sdiod_readl(sdiod, intstat_addr, &err);
-
- - err = r_sdreg32(bus, &newstatus, SD_REG(intstatus));
- bus->sdcnt.f1regdata += 2;
- atomic_set(&bus->fcstate,
- !!(newstatus & (I_HMB_FC_STATE | I_HMB_FC_CHANGE)));
- @@ -4017,22 +4011,21 @@ static void brcmf_sdio_firmware_callback
- const struct firmware *code,
- void *nvram, u32 nvram_len)
- {
- - struct brcmf_bus *bus_if;
- - struct brcmf_sdio_dev *sdiodev;
- - struct brcmf_sdio *bus;
- + struct brcmf_bus *bus_if = dev_get_drvdata(dev);
- + struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
- + struct brcmf_sdio *bus = sdiodev->bus;
- + struct brcmf_sdio_dev *sdiod = bus->sdiodev;
- + struct brcmf_core *core = bus->sdio_core;
- u8 saveclk;
-
- brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
- - bus_if = dev_get_drvdata(dev);
- - sdiodev = bus_if->bus_priv.sdio;
- +
- if (err)
- goto fail;
-
- if (!bus_if->drvr)
- return;
-
- - bus = sdiodev->bus;
- -
- /* try to download image and nvram to the dongle */
- bus->alp_only = true;
- err = brcmf_sdio_download_firmware(bus, code, nvram, nvram_len);
- @@ -4063,8 +4056,9 @@ static void brcmf_sdio_firmware_callback
- }
-
- /* Enable function 2 (frame transfers) */
- - w_sdreg32(bus, SDPCM_PROT_VERSION << SMB_DATA_VERSION_SHIFT,
- - SD_REG(tosbmailboxdata));
- + brcmf_sdiod_writel(sdiod, core->base + SD_REG(tosbmailboxdata),
- + SDPCM_PROT_VERSION << SMB_DATA_VERSION_SHIFT, NULL);
- +
- err = sdio_enable_func(sdiodev->func[SDIO_FUNC_2]);
-
-
- @@ -4074,7 +4068,9 @@ static void brcmf_sdio_firmware_callback
- if (!err) {
- /* Set up the interrupt mask and enable interrupts */
- bus->hostintmask = HOSTINTMASK;
- - w_sdreg32(bus, bus->hostintmask, SD_REG(hostintmask));
- + brcmf_sdiod_writel(sdiod, core->base + SD_REG(hostintmask),
- + bus->hostintmask, NULL);
- +
-
- brcmf_sdiod_writeb(sdiodev, SBSDIO_WATERMARK, 8, &err);
- } else {
|