Skip to content

Commit 2ccc332

Browse files
njhollinghurstpelwell
authored andcommitted
PCI: brcmstb: Set new flags to avoid QOS "holes" on BCM2712D0
Set some flags present (and recommended) in 2712D0, but missing (and harmless) in 2712C1. In particular, EN_QOS_UPDATE_TIMING_FIX must be set to avoid spurious QOS=0 when the queue changes from empty to non-empty, to make D0 match the existing C1 behaviour. Not enabling "QOS forwarding", which still seems not to help. Signed-off-by: Nick Hollinghurst <[email protected]>
1 parent c575ed8 commit 2ccc332

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

drivers/pci/controller/pcie-brcmstb.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,9 @@
199199
#define VDM_PRIORITY_TO_QOS_MAP_MASK 0xf
200200

201201
#define PCIE_MISC_AXI_INTF_CTRL 0x416C
202+
#define AXI_EN_RCLK_QOS_ARRAY_FIX BIT(13)
203+
#define AXI_EN_QOS_UPDATE_TIMING_FIX BIT(12)
204+
#define AXI_DIS_QOS_GATING_IN_MASTER BIT(11)
202205
#define AXI_REQFIFO_EN_QOS_PROPAGATION BIT(7)
203206
#define AXI_BRIDGE_LOW_LATENCY_MODE BIT(6)
204207
#define AXI_MASTER_MAX_OUTSTANDING_REQUESTS_MASK 0x3f
@@ -558,9 +561,11 @@ static void brcm_pcie_set_tc_qos(struct brcm_pcie *pcie)
558561
if (pcie->type != BCM2712)
559562
return;
560563

561-
/* XXX: BCM2712C0 is broken, disable the forwarding search */
564+
/* Disable broken QOS forwarding search. Set chicken bits for 2712D0 */
562565
reg = readl(pcie->base + PCIE_MISC_AXI_INTF_CTRL);
563566
reg &= ~AXI_REQFIFO_EN_QOS_PROPAGATION;
567+
reg |= AXI_EN_RCLK_QOS_ARRAY_FIX | AXI_EN_QOS_UPDATE_TIMING_FIX |
568+
AXI_DIS_QOS_GATING_IN_MASTER;
564569
writel(reg, pcie->base + PCIE_MISC_AXI_INTF_CTRL);
565570

566571
/* Disable VDM reception by default - QoS map defaults to 0 */

0 commit comments

Comments
 (0)