Skip to content

Commit f63efc7

Browse files
marcanjannau
authored andcommitted
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 <marcan@marcan.st>
1 parent 1cc1ece commit f63efc7

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
@@ -487,8 +487,6 @@ struct brcmf_pcie_reginfo {
487487
u32 intmask;
488488
u32 mailboxint;
489489
u32 mailboxmask;
490-
u32 h2d_mailbox_0;
491-
u32 h2d_mailbox_1;
492490
u32 int_d2h_db;
493491
u32 int_fn0;
494492
};
@@ -497,8 +495,6 @@ static const struct brcmf_pcie_reginfo brcmf_reginfo_default = {
497495
.intmask = BRCMF_PCIE_PCIE2REG_INTMASK,
498496
.mailboxint = BRCMF_PCIE_PCIE2REG_MAILBOXINT,
499497
.mailboxmask = BRCMF_PCIE_PCIE2REG_MAILBOXMASK,
500-
.h2d_mailbox_0 = BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0,
501-
.h2d_mailbox_1 = BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1,
502498
.int_d2h_db = BRCMF_PCIE_MB_INT_D2H_DB,
503499
.int_fn0 = BRCMF_PCIE_MB_INT_FN0,
504500
};
@@ -507,8 +503,6 @@ static const struct brcmf_pcie_reginfo brcmf_reginfo_64 = {
507503
.intmask = BRCMF_PCIE_64_PCIE2REG_INTMASK,
508504
.mailboxint = BRCMF_PCIE_64_PCIE2REG_MAILBOXINT,
509505
.mailboxmask = BRCMF_PCIE_64_PCIE2REG_MAILBOXMASK,
510-
.h2d_mailbox_0 = BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_0,
511-
.h2d_mailbox_1 = BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_1,
512506
.int_d2h_db = BRCMF_PCIE_64_MB_INT_D2H_DB,
513507
.int_fn0 = 0,
514508
};
@@ -972,9 +966,12 @@ static void brcmf_pcie_intr_enable(struct brcmf_pciedev_info *devinfo)
972966

973967
static void brcmf_pcie_hostready(struct brcmf_pciedev_info *devinfo)
974968
{
975-
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_HOSTRDY_DB1)
976-
brcmf_pcie_write_reg32(devinfo,
977-
devinfo->reginfo->h2d_mailbox_1, 1);
969+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_HOSTRDY_DB1) {
970+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_DAR)
971+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_1, 1);
972+
else
973+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1, 1);
974+
}
978975
}
979976

980977
static irqreturn_t brcmf_pcie_quick_check_isr(int irq, void *arg)
@@ -1123,7 +1120,10 @@ static int brcmf_pcie_ring_mb_ring_bell(void *ctx)
11231120

11241121
brcmf_dbg(PCIE, "RING !\n");
11251122
/* Any arbitrary value will do, lets use 1 */
1126-
brcmf_pcie_write_reg32(devinfo, devinfo->reginfo->h2d_mailbox_0, 1);
1123+
if (devinfo->shared.flags & BRCMF_PCIE_SHARED_DAR)
1124+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_64_PCIE2REG_H2D_MAILBOX_0, 1);
1125+
else
1126+
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0, 1);
11271127

11281128
return 0;
11291129
}

0 commit comments

Comments
 (0)