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: Ian Molton <ian@mnementh.co.uk> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> [arend: rename macro to SD_REG] Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
c900072bd6
commit
e4c05fc3c0
|
@ -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)
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
*/
|
*/
|
||||||
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,
|
||||||
|
|
||||||
/* 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,
|
||||||
|
|
||||||
/* 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,
|
||||||
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 {
|
||||||
|
|
Loading…
Reference in New Issue