Skip to content

Commit 7780337

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 8a095f3 commit 7780337

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
@@ -492,8 +492,6 @@ struct brcmf_pcie_reginfo {
492492
u32 intmask;
493493
u32 mailboxint;
494494
u32 mailboxmask;
495-
u32 h2d_mailbox_0;
496-
u32 h2d_mailbox_1;
497495
u32 int_d2h_db;
498496
u32 int_fn0;
499497
};
@@ -502,8 +500,6 @@ static const struct brcmf_pcie_reginfo brcmf_reginfo_default = {
502500
.intmask = BRCMF_PCIE_PCIE2REG_INTMASK,
503501
.mailboxint = BRCMF_PCIE_PCIE2REG_MAILBOXINT,
504502
.mailboxmask = BRCMF_PCIE_PCIE2REG_MAILBOXMASK,
505-
.h2d_mailbox_0 = BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0,
506-
.h2d_mailbox_1 = BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1,
507503
.int_d2h_db = BRCMF_PCIE_MB_INT_D2H_DB,
508504
.int_fn0 = BRCMF_PCIE_MB_INT_FN0,
509505
};
@@ -512,8 +508,6 @@ static const struct brcmf_pcie_reginfo brcmf_reginfo_64 = {
512508
.intmask = BRCMF_PCIE_64_PCIE2REG_INTMASK,
513509
.mailboxint = BRCMF_PCIE_64_PCIE2REG_MAILBOXINT,
514510
.mailboxmask = BRCMF_PCIE_64_PCIE2REG_MAILBOXMASK,
515-
.h2d_mailbox_0 = BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_0,
516-
.h2d_mailbox_1 = BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_1,
517511
.int_d2h_db = BRCMF_PCIE_64_MB_INT_D2H_DB,
518512
.int_fn0 = 0,
519513
};
@@ -977,9 +971,12 @@ static void brcmf_pcie_intr_enable(struct brcmf_pciedev_info *devinfo)
977971

978972
static void brcmf_pcie_hostready(struct brcmf_pciedev_info *devinfo)
979973
{
980-
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_HOSTRDY_DB1)
981-
brcmf_pcie_write_reg32(devinfo,
982-
devinfo->reginfo->h2d_mailbox_1, 1);
974+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_HOSTRDY_DB1) {
975+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_DAR)
976+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_1, 1);
977+
else
978+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1, 1);
979+
}
983980
}
984981

985982
static irqreturn_t brcmf_pcie_quick_check_isr(int irq, void *arg)
@@ -1128,7 +1125,10 @@ static int brcmf_pcie_ring_mb_ring_bell(void *ctx)
11281125

11291126
brcmf_dbg(PCIE, "RING !\n");
11301127
/* Any arbitrary value will do, lets use 1 */
1131-
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->h2d_mailbox_0, 1);
1128+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_DAR)
1129+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_0, 1);
1130+
else
1131+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0, 1);
11321132

11331133
return 0;
11341134
}

0 commit comments

Comments
 (0)