提交 e4c05fc3 编写于 作者: I Ian Molton 提交者: Kalle Valo

brcmfmac: Cleanup offsetof()

Create a macro to make the code a bit more readable, whilst we're stuck
with using struct element offsets as register offsets.
Signed-off-by: NIan Molton <ian@mnementh.co.uk>
Reviewed-by: NArend van Spriel <arend.vanspriel@broadcom.com>
[arend: rename macro to SD_REG]
Signed-off-by: NArend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
上级 c900072b
...@@ -161,6 +161,8 @@ struct rte_console { ...@@ -161,6 +161,8 @@ struct rte_console {
#define CORE_BUS_REG(base, field) \ #define CORE_BUS_REG(base, field) \
(base + offsetof(struct sdpcmd_regs, field)) (base + offsetof(struct sdpcmd_regs, field))
#define SD_REG(field) \
(offsetof(struct sdpcmd_regs, field))
/* SDIO function 1 register CHIPCLKCSR */ /* SDIO function 1 register CHIPCLKCSR */
/* Force ALP request to backplane */ /* Force ALP request to backplane */
...@@ -1087,12 +1089,10 @@ static u32 brcmf_sdio_hostmail(struct brcmf_sdio *bus) ...@@ -1087,12 +1089,10 @@ static u32 brcmf_sdio_hostmail(struct brcmf_sdio *bus)
brcmf_dbg(SDIO, "Enter\n"); brcmf_dbg(SDIO, "Enter\n");
/* Read mailbox data and ack that we did so */ /* Read mailbox data and ack that we did so */
ret = r_sdreg32(bus, &hmb_data, ret = r_sdreg32(bus, &hmb_data, SD_REG(tohostmailboxdata));
offsetof(struct sdpcmd_regs, tohostmailboxdata));
if (ret == 0) if (ret == 0)
w_sdreg32(bus, SMB_INT_ACK, w_sdreg32(bus, SMB_INT_ACK, SD_REG(tosbmailbox));
offsetof(struct sdpcmd_regs, tosbmailbox));
bus->sdcnt.f1regdata += 2; bus->sdcnt.f1regdata += 2;
/* dongle indicates the firmware has halted/crashed */ /* dongle indicates the firmware has halted/crashed */
...@@ -1207,8 +1207,7 @@ static void brcmf_sdio_rxfail(struct brcmf_sdio *bus, bool abort, bool rtx) ...@@ -1207,8 +1207,7 @@ static void brcmf_sdio_rxfail(struct brcmf_sdio *bus, bool abort, bool rtx)
if (rtx) { if (rtx) {
bus->sdcnt.rxrtx++; bus->sdcnt.rxrtx++;
err = w_sdreg32(bus, SMB_NAK, err = w_sdreg32(bus, SMB_NAK, SD_REG(tosbmailbox));
offsetof(struct sdpcmd_regs, tosbmailbox));
bus->sdcnt.f1regdata++; bus->sdcnt.f1regdata++;
if (err == 0) if (err == 0)
...@@ -2333,9 +2332,7 @@ static uint brcmf_sdio_sendfromq(struct brcmf_sdio *bus, uint maxframes) ...@@ -2333,9 +2332,7 @@ static uint brcmf_sdio_sendfromq(struct brcmf_sdio *bus, uint maxframes)
if (!bus->intr) { if (!bus->intr) {
/* Check device status, signal pending interrupt */ /* Check device status, signal pending interrupt */
sdio_claim_host(bus->sdiodev->func[1]); sdio_claim_host(bus->sdiodev->func[1]);
ret = r_sdreg32(bus, &intstatus, ret = r_sdreg32(bus, &intstatus, SD_REG(intstatus));
offsetof(struct sdpcmd_regs,
intstatus));
sdio_release_host(bus->sdiodev->func[1]); sdio_release_host(bus->sdiodev->func[1]);
bus->sdcnt.f2txdata++; bus->sdcnt.f2txdata++;
if (ret != 0) if (ret != 0)
...@@ -2441,7 +2438,7 @@ static void brcmf_sdio_bus_stop(struct device *dev) ...@@ -2441,7 +2438,7 @@ static void brcmf_sdio_bus_stop(struct device *dev)
brcmf_sdio_bus_sleep(bus, false, false); brcmf_sdio_bus_sleep(bus, false, false);
/* Disable and clear interrupts at the chip level also */ /* Disable and clear interrupts at the chip level also */
w_sdreg32(bus, 0, offsetof(struct sdpcmd_regs, hostintmask)); w_sdreg32(bus, 0, SD_REG(hostintmask));
local_hostintmask = bus->hostintmask; local_hostintmask = bus->hostintmask;
bus->hostintmask = 0; bus->hostintmask = 0;
...@@ -2460,8 +2457,7 @@ static void brcmf_sdio_bus_stop(struct device *dev) ...@@ -2460,8 +2457,7 @@ static void brcmf_sdio_bus_stop(struct device *dev)
sdio_disable_func(sdiodev->func[SDIO_FUNC_2]); sdio_disable_func(sdiodev->func[SDIO_FUNC_2]);
/* Clear any pending interrupts now that F2 is disabled */ /* Clear any pending interrupts now that F2 is disabled */
w_sdreg32(bus, local_hostintmask, w_sdreg32(bus, local_hostintmask, SD_REG(intstatus));
offsetof(struct sdpcmd_regs, intstatus));
sdio_release_host(sdiodev->func[1]); sdio_release_host(sdiodev->func[1]);
} }
...@@ -2507,7 +2503,7 @@ static int brcmf_sdio_intr_rstatus(struct brcmf_sdio *bus) ...@@ -2507,7 +2503,7 @@ static int brcmf_sdio_intr_rstatus(struct brcmf_sdio *bus)
int ret; int ret;
buscore = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV); buscore = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
addr = buscore->base + offsetof(struct sdpcmd_regs, intstatus); addr = buscore->base + SD_REG(intstatus);
val = brcmf_sdiod_readl(bus->sdiodev, addr, &ret); val = brcmf_sdiod_readl(bus->sdiodev, addr, &ret);
bus->sdcnt.f1regdata++; bus->sdcnt.f1regdata++;
...@@ -2584,11 +2580,9 @@ static void brcmf_sdio_dpc(struct brcmf_sdio *bus) ...@@ -2584,11 +2580,9 @@ static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
*/ */
if (intstatus & I_HMB_FC_CHANGE) { if (intstatus & I_HMB_FC_CHANGE) {
intstatus &= ~I_HMB_FC_CHANGE; intstatus &= ~I_HMB_FC_CHANGE;
err = w_sdreg32(bus, I_HMB_FC_CHANGE, err = w_sdreg32(bus, I_HMB_FC_CHANGE, SD_REG(intstatus));
offsetof(struct sdpcmd_regs, intstatus));
err = r_sdreg32(bus, &newstatus, err = r_sdreg32(bus, &newstatus, SD_REG(intstatus));
offsetof(struct sdpcmd_regs, intstatus));
bus->sdcnt.f1regdata += 2; bus->sdcnt.f1regdata += 2;
atomic_set(&bus->fcstate, atomic_set(&bus->fcstate,
!!(newstatus & (I_HMB_FC_STATE | I_HMB_FC_CHANGE))); !!(newstatus & (I_HMB_FC_STATE | I_HMB_FC_CHANGE)));
...@@ -3771,7 +3765,7 @@ static void brcmf_sdio_buscore_activate(void *ctx, struct brcmf_chip *chip, ...@@ -3771,7 +3765,7 @@ static void brcmf_sdio_buscore_activate(void *ctx, struct brcmf_chip *chip,
/* clear all interrupts */ /* clear all interrupts */
core = brcmf_chip_get_core(chip, BCMA_CORE_SDIO_DEV); core = brcmf_chip_get_core(chip, BCMA_CORE_SDIO_DEV);
reg_addr = core->base + offsetof(struct sdpcmd_regs, intstatus); reg_addr = core->base + SD_REG(intstatus);
brcmf_sdiod_writel(sdiodev, reg_addr, 0xFFFFFFFF, NULL); brcmf_sdiod_writel(sdiodev, reg_addr, 0xFFFFFFFF, NULL);
if (rstvec) if (rstvec)
...@@ -4067,7 +4061,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, ...@@ -4067,7 +4061,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
/* Enable function 2 (frame transfers) */ /* Enable function 2 (frame transfers) */
w_sdreg32(bus, SDPCM_PROT_VERSION << SMB_DATA_VERSION_SHIFT, w_sdreg32(bus, SDPCM_PROT_VERSION << SMB_DATA_VERSION_SHIFT,
offsetof(struct sdpcmd_regs, tosbmailboxdata)); SD_REG(tosbmailboxdata));
err = sdio_enable_func(sdiodev->func[SDIO_FUNC_2]); err = sdio_enable_func(sdiodev->func[SDIO_FUNC_2]);
...@@ -4077,8 +4071,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, ...@@ -4077,8 +4071,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
if (!err) { if (!err) {
/* Set up the interrupt mask and enable interrupts */ /* Set up the interrupt mask and enable interrupts */
bus->hostintmask = HOSTINTMASK; bus->hostintmask = HOSTINTMASK;
w_sdreg32(bus, bus->hostintmask, w_sdreg32(bus, bus->hostintmask, SD_REG(hostintmask));
offsetof(struct sdpcmd_regs, hostintmask));
brcmf_sdiod_writeb(sdiodev, SBSDIO_WATERMARK, 8, &err); brcmf_sdiod_writeb(sdiodev, SBSDIO_WATERMARK, 8, &err);
} else { } else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册