Skip to content

Commit 30eb208

Browse files
jamesequinlankwilczynski
authored andcommitted
PCI: brcmstb: PCI: brcmstb: Make HARD_DEBUG, INTR2_CPU_BASE offsets SoC-specific
Do preparatory work for the 7712 SoC, which is introduced in a future commit. Our HW design has changed two register offsets for the 7712, where previously it was a common value for all Broadcom SoCs with PCIe cores. Specifically, the two offsets are to the registers HARD_DEBUG and INTR2_CPU_BASE. Link: https://lore.kernel.org/linux-pci/20240815225731.40276-8-james.quinlan@broadcom.com Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com> [kwilczynski: commit log] Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org> Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Reviewed-by: Stanimir Varbanov <svarbanov@suse.de>
1 parent 8201360 commit 30eb208

1 file changed

Lines changed: 24 additions & 15 deletions

File tree

drivers/pci/controller/pcie-brcmstb.c

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
#define PCIE_MEM_WIN0_LIMIT_HI(win) \
123123
PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI + ((win) * 8)
124124

125-
#define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204
126125
#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK 0x2
127126
#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_L1SS_ENABLE_MASK 0x200000
128127
#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000
@@ -131,9 +130,9 @@
131130
(PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK | \
132131
PCIE_MISC_HARD_PCIE_HARD_DEBUG_L1SS_ENABLE_MASK)
133132

134-
#define PCIE_INTR2_CPU_BASE 0x4300
135133
#define PCIE_MSI_INTR2_BASE 0x4500
136-
/* Offsets from PCIE_INTR2_CPU_BASE and PCIE_MSI_INTR2_BASE */
134+
135+
/* Offsets from INTR2_CPU and MSI_INTR2 BASE offsets */
137136
#define MSI_INT_STATUS 0x0
138137
#define MSI_INT_CLR 0x8
139138
#define MSI_INT_MASK_SET 0x10
@@ -184,9 +183,11 @@
184183
#define SSC_STATUS_PLL_LOCK_MASK 0x800
185184
#define PCIE_BRCM_MAX_MEMC 3
186185

187-
#define IDX_ADDR(pcie) (pcie->reg_offsets[EXT_CFG_INDEX])
188-
#define DATA_ADDR(pcie) (pcie->reg_offsets[EXT_CFG_DATA])
189-
#define PCIE_RGR1_SW_INIT_1(pcie) (pcie->reg_offsets[RGR1_SW_INIT_1])
186+
#define IDX_ADDR(pcie) ((pcie)->reg_offsets[EXT_CFG_INDEX])
187+
#define DATA_ADDR(pcie) ((pcie)->reg_offsets[EXT_CFG_DATA])
188+
#define PCIE_RGR1_SW_INIT_1(pcie) ((pcie)->reg_offsets[RGR1_SW_INIT_1])
189+
#define HARD_DEBUG(pcie) ((pcie)->reg_offsets[PCIE_HARD_DEBUG])
190+
#define INTR2_CPU_BASE(pcie) ((pcie)->reg_offsets[PCIE_INTR2_CPU_BASE])
190191

191192
/* Rescal registers */
192193
#define PCIE_DVT_PMU_PCIE_PHY_CTRL 0xc700
@@ -205,6 +206,8 @@ enum {
205206
RGR1_SW_INIT_1,
206207
EXT_CFG_INDEX,
207208
EXT_CFG_DATA,
209+
PCIE_HARD_DEBUG,
210+
PCIE_INTR2_CPU_BASE,
208211
};
209212

210213
enum {
@@ -651,7 +654,7 @@ static int brcm_pcie_enable_msi(struct brcm_pcie *pcie)
651654
BUILD_BUG_ON(BRCM_INT_PCI_MSI_LEGACY_NR > BRCM_INT_PCI_MSI_NR);
652655

653656
if (msi->legacy) {
654-
msi->intr_base = msi->base + PCIE_INTR2_CPU_BASE;
657+
msi->intr_base = msi->base + INTR2_CPU_BASE(pcie);
655658
msi->nr = BRCM_INT_PCI_MSI_LEGACY_NR;
656659
msi->legacy_shift = 24;
657660
} else {
@@ -900,12 +903,12 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
900903
/* Take the bridge out of reset */
901904
pcie->bridge_sw_init_set(pcie, 0);
902905

903-
tmp = readl(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
906+
tmp = readl(base + HARD_DEBUG(pcie));
904907
if (is_bmips(pcie))
905908
tmp &= ~PCIE_BMIPS_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
906909
else
907910
tmp &= ~PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
908-
writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
911+
writel(tmp, base + HARD_DEBUG(pcie));
909912
/* Wait for SerDes to be stable */
910913
usleep_range(100, 200);
911914

@@ -1074,7 +1077,7 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
10741077
}
10751078

10761079
/* Start out assuming safe mode (both mode bits cleared) */
1077-
clkreq_cntl = readl(pcie->base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
1080+
clkreq_cntl = readl(pcie->base + HARD_DEBUG(pcie));
10781081
clkreq_cntl &= ~PCIE_CLKREQ_MASK;
10791082

10801083
if (strcmp(mode, "no-l1ss") == 0) {
@@ -1117,7 +1120,7 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
11171120
dev_err(pcie->dev, err_msg);
11181121
mode = "safe";
11191122
}
1120-
writel(clkreq_cntl, pcie->base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
1123+
writel(clkreq_cntl, pcie->base + HARD_DEBUG(pcie));
11211124

11221125
dev_info(pcie->dev, "clkreq-mode set to %s\n", mode);
11231126
}
@@ -1339,9 +1342,9 @@ static void brcm_pcie_turn_off(struct brcm_pcie *pcie)
13391342
writel(tmp, base + PCIE_MISC_PCIE_CTRL);
13401343

13411344
/* Turn off SerDes */
1342-
tmp = readl(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
1345+
tmp = readl(base + HARD_DEBUG(pcie));
13431346
u32p_replace_bits(&tmp, 1, PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK);
1344-
writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
1347+
writel(tmp, base + HARD_DEBUG(pcie));
13451348

13461349
/* Shutdown PCIe bridge */
13471350
pcie->bridge_sw_init_set(pcie, 1);
@@ -1427,9 +1430,9 @@ static int brcm_pcie_resume_noirq(struct device *dev)
14271430
pcie->bridge_sw_init_set(pcie, 0);
14281431

14291432
/* SERDES_IDDQ = 0 */
1430-
tmp = readl(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
1433+
tmp = readl(base + HARD_DEBUG(pcie));
14311434
u32p_replace_bits(&tmp, 0, PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK);
1432-
writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
1435+
writel(tmp, base + HARD_DEBUG(pcie));
14331436

14341437
/* wait for serdes to be stable */
14351438
udelay(100);
@@ -1501,12 +1504,16 @@ static const int pcie_offsets[] = {
15011504
[RGR1_SW_INIT_1] = 0x9210,
15021505
[EXT_CFG_INDEX] = 0x9000,
15031506
[EXT_CFG_DATA] = 0x9004,
1507+
[PCIE_HARD_DEBUG] = 0x4204,
1508+
[PCIE_INTR2_CPU_BASE] = 0x4300,
15041509
};
15051510

15061511
static const int pcie_offsets_bmips_7425[] = {
15071512
[RGR1_SW_INIT_1] = 0x8010,
15081513
[EXT_CFG_INDEX] = 0x8300,
15091514
[EXT_CFG_DATA] = 0x8304,
1515+
[PCIE_HARD_DEBUG] = 0x4204,
1516+
[PCIE_INTR2_CPU_BASE] = 0x4300,
15101517
};
15111518

15121519
static const struct pcie_cfg_data generic_cfg = {
@@ -1541,6 +1548,8 @@ static const int pcie_offset_bcm7278[] = {
15411548
[RGR1_SW_INIT_1] = 0xc010,
15421549
[EXT_CFG_INDEX] = 0x9000,
15431550
[EXT_CFG_DATA] = 0x9004,
1551+
[PCIE_HARD_DEBUG] = 0x4204,
1552+
[PCIE_INTR2_CPU_BASE] = 0x4300,
15441553
};
15451554

15461555
static const struct pcie_cfg_data bcm7278_cfg = {

0 commit comments

Comments
 (0)