Skip to content

Commit 500f017

Browse files
committed
wifi: brcmfmac: Fix logic for deciding which doorbell registers to use
While the other >PCIe r64 registers (which are apparently called DAR registers) are always used on newer revisions, which doorbell registers should be used depends only on flags set by firmware. Take them out of the reginfo struct and check the flag to decide instead. Signed-off-by: Hector Martin <[email protected]>
1 parent 4daa9f1 commit 500f017

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -490,8 +490,6 @@ struct brcmf_pcie_reginfo {
490490
u32 intmask;
491491
u32 mailboxint;
492492
u32 mailboxmask;
493-
u32 h2d_mailbox_0;
494-
u32 h2d_mailbox_1;
495493
u32 int_d2h_db;
496494
u32 int_fn0;
497495
};
@@ -500,8 +498,6 @@ static const struct brcmf_pcie_reginfo brcmf_reginfo_default = {
500498
.intmask = BRCMF_PCIE_PCIE2REG_INTMASK,
501499
.mailboxint = BRCMF_PCIE_PCIE2REG_MAILBOXINT,
502500
.mailboxmask = BRCMF_PCIE_PCIE2REG_MAILBOXMASK,
503-
.h2d_mailbox_0 = BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0,
504-
.h2d_mailbox_1 = BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1,
505501
.int_d2h_db = BRCMF_PCIE_MB_INT_D2H_DB,
506502
.int_fn0 = BRCMF_PCIE_MB_INT_FN0,
507503
};
@@ -510,8 +506,6 @@ static const struct brcmf_pcie_reginfo brcmf_reginfo_64 = {
510506
.intmask = BRCMF_PCIE_64_PCIE2REG_INTMASK,
511507
.mailboxint = BRCMF_PCIE_64_PCIE2REG_MAILBOXINT,
512508
.mailboxmask = BRCMF_PCIE_64_PCIE2REG_MAILBOXMASK,
513-
.h2d_mailbox_0 = BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_0,
514-
.h2d_mailbox_1 = BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_1,
515509
.int_d2h_db = BRCMF_PCIE_64_MB_INT_D2H_DB,
516510
.int_fn0 = 0,
517511
};
@@ -975,9 +969,12 @@ static void brcmf_pcie_intr_enable(struct brcmf_pciedev_info *devinfo)
975969

976970
static void brcmf_pcie_hostready(struct brcmf_pciedev_info *devinfo)
977971
{
978-
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_HOSTRDY_DB1)
979-
brcmf_pcie_write_reg32(devinfo,
980-
devinfo->reginfo->h2d_mailbox_1, 1);
972+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_HOSTRDY_DB1) {
973+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_DAR)
974+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_1, 1);
975+
else
976+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1, 1);
977+
}
981978
}
982979

983980
static irqreturn_t brcmf_pcie_quick_check_isr(int irq, void *arg)
@@ -1126,7 +1123,10 @@ static int brcmf_pcie_ring_mb_ring_bell(void *ctx)
11261123

11271124
brcmf_dbg(PCIE, "RING !\n");
11281125
/* Any arbitrary value will do, lets use 1 */
1129-
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->h2d_mailbox_0, 1);
1126+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_DAR)
1127+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_0, 1);
1128+
else
1129+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0, 1);
11301130

11311131
return 0;
11321132
}

0 commit comments

Comments
 (0)