Lines Matching refs:artpec6_pcie
32 struct artpec6_pcie { struct
84 static u32 artpec6_pcie_readl(struct artpec6_pcie *artpec6_pcie, u32 offset) in artpec6_pcie_readl() argument
88 regmap_read(artpec6_pcie->regmap, offset, &val); in artpec6_pcie_readl()
92 static void artpec6_pcie_writel(struct artpec6_pcie *artpec6_pcie, u32 offset, u32 val) in artpec6_pcie_writel() argument
94 regmap_write(artpec6_pcie->regmap, offset, val); in artpec6_pcie_writel()
99 struct artpec6_pcie *artpec6_pcie = to_artpec6_pcie(pci); in artpec6_pcie_cpu_addr_fixup() local
103 switch (artpec6_pcie->mode) { in artpec6_pcie_cpu_addr_fixup()
116 struct artpec6_pcie *artpec6_pcie = to_artpec6_pcie(pci); in artpec6_pcie_establish_link() local
119 val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); in artpec6_pcie_establish_link()
121 artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); in artpec6_pcie_establish_link()
128 struct artpec6_pcie *artpec6_pcie = to_artpec6_pcie(pci); in artpec6_pcie_stop_link() local
131 val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); in artpec6_pcie_stop_link()
133 artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); in artpec6_pcie_stop_link()
142 static void artpec6_pcie_wait_for_phy_a6(struct artpec6_pcie *artpec6_pcie) in artpec6_pcie_wait_for_phy_a6() argument
144 struct dw_pcie *pci = artpec6_pcie->pci; in artpec6_pcie_wait_for_phy_a6()
152 val = artpec6_pcie_readl(artpec6_pcie, NOCCFG); in artpec6_pcie_wait_for_phy_a6()
162 val = readl(artpec6_pcie->phy_base + PHY_STATUS); in artpec6_pcie_wait_for_phy_a6()
169 static void artpec6_pcie_wait_for_phy_a7(struct artpec6_pcie *artpec6_pcie) in artpec6_pcie_wait_for_phy_a7() argument
171 struct dw_pcie *pci = artpec6_pcie->pci; in artpec6_pcie_wait_for_phy_a7()
180 val = artpec6_pcie_readl(artpec6_pcie, NOCCFG); in artpec6_pcie_wait_for_phy_a7()
190 phy_status_tx = readw(artpec6_pcie->phy_base + PHY_TX_ASIC_OUT); in artpec6_pcie_wait_for_phy_a7()
191 phy_status_rx = readw(artpec6_pcie->phy_base + PHY_RX_ASIC_OUT); in artpec6_pcie_wait_for_phy_a7()
199 static void artpec6_pcie_wait_for_phy(struct artpec6_pcie *artpec6_pcie) in artpec6_pcie_wait_for_phy() argument
201 switch (artpec6_pcie->variant) { in artpec6_pcie_wait_for_phy()
203 artpec6_pcie_wait_for_phy_a6(artpec6_pcie); in artpec6_pcie_wait_for_phy()
206 artpec6_pcie_wait_for_phy_a7(artpec6_pcie); in artpec6_pcie_wait_for_phy()
211 static void artpec6_pcie_init_phy_a6(struct artpec6_pcie *artpec6_pcie) in artpec6_pcie_init_phy_a6() argument
215 val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); in artpec6_pcie_init_phy_a6()
223 artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); in artpec6_pcie_init_phy_a6()
226 val = artpec6_pcie_readl(artpec6_pcie, NOCCFG); in artpec6_pcie_init_phy_a6()
228 artpec6_pcie_writel(artpec6_pcie, NOCCFG, val); in artpec6_pcie_init_phy_a6()
231 val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); in artpec6_pcie_init_phy_a6()
233 artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); in artpec6_pcie_init_phy_a6()
236 val = artpec6_pcie_readl(artpec6_pcie, NOCCFG); in artpec6_pcie_init_phy_a6()
238 artpec6_pcie_writel(artpec6_pcie, NOCCFG, val); in artpec6_pcie_init_phy_a6()
241 static void artpec6_pcie_init_phy_a7(struct artpec6_pcie *artpec6_pcie) in artpec6_pcie_init_phy_a7() argument
243 struct dw_pcie *pci = artpec6_pcie->pci; in artpec6_pcie_init_phy_a7()
248 val = artpec6_pcie_readl(artpec6_pcie, PCIESTAT); in artpec6_pcie_init_phy_a7()
253 val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); in artpec6_pcie_init_phy_a7()
260 artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); in artpec6_pcie_init_phy_a7()
263 val = artpec6_pcie_readl(artpec6_pcie, NOCCFG); in artpec6_pcie_init_phy_a7()
265 artpec6_pcie_writel(artpec6_pcie, NOCCFG, val); in artpec6_pcie_init_phy_a7()
268 val = artpec6_pcie_readl(artpec6_pcie, NOCCFG); in artpec6_pcie_init_phy_a7()
270 artpec6_pcie_writel(artpec6_pcie, NOCCFG, val); in artpec6_pcie_init_phy_a7()
273 static void artpec6_pcie_init_phy(struct artpec6_pcie *artpec6_pcie) in artpec6_pcie_init_phy() argument
275 switch (artpec6_pcie->variant) { in artpec6_pcie_init_phy()
277 artpec6_pcie_init_phy_a6(artpec6_pcie); in artpec6_pcie_init_phy()
280 artpec6_pcie_init_phy_a7(artpec6_pcie); in artpec6_pcie_init_phy()
285 static void artpec6_pcie_assert_core_reset(struct artpec6_pcie *artpec6_pcie) in artpec6_pcie_assert_core_reset() argument
289 val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); in artpec6_pcie_assert_core_reset()
290 switch (artpec6_pcie->variant) { in artpec6_pcie_assert_core_reset()
298 artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); in artpec6_pcie_assert_core_reset()
301 static void artpec6_pcie_deassert_core_reset(struct artpec6_pcie *artpec6_pcie) in artpec6_pcie_deassert_core_reset() argument
305 val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); in artpec6_pcie_deassert_core_reset()
306 switch (artpec6_pcie->variant) { in artpec6_pcie_deassert_core_reset()
314 artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); in artpec6_pcie_deassert_core_reset()
321 struct artpec6_pcie *artpec6_pcie = to_artpec6_pcie(pci); in artpec6_pcie_host_init() local
323 if (artpec6_pcie->variant == ARTPEC7) { in artpec6_pcie_host_init()
327 artpec6_pcie_assert_core_reset(artpec6_pcie); in artpec6_pcie_host_init()
328 artpec6_pcie_init_phy(artpec6_pcie); in artpec6_pcie_host_init()
329 artpec6_pcie_deassert_core_reset(artpec6_pcie); in artpec6_pcie_host_init()
330 artpec6_pcie_wait_for_phy(artpec6_pcie); in artpec6_pcie_host_init()
342 struct artpec6_pcie *artpec6_pcie = to_artpec6_pcie(pci); in artpec6_pcie_ep_init() local
345 artpec6_pcie_assert_core_reset(artpec6_pcie); in artpec6_pcie_ep_init()
346 artpec6_pcie_init_phy(artpec6_pcie); in artpec6_pcie_ep_init()
347 artpec6_pcie_deassert_core_reset(artpec6_pcie); in artpec6_pcie_ep_init()
348 artpec6_pcie_wait_for_phy(artpec6_pcie); in artpec6_pcie_ep_init()
381 struct artpec6_pcie *artpec6_pcie; in artpec6_pcie_probe() local
395 artpec6_pcie = devm_kzalloc(dev, sizeof(*artpec6_pcie), GFP_KERNEL); in artpec6_pcie_probe()
396 if (!artpec6_pcie) in artpec6_pcie_probe()
406 artpec6_pcie->pci = pci; in artpec6_pcie_probe()
407 artpec6_pcie->variant = variant; in artpec6_pcie_probe()
408 artpec6_pcie->mode = mode; in artpec6_pcie_probe()
410 artpec6_pcie->phy_base = in artpec6_pcie_probe()
412 if (IS_ERR(artpec6_pcie->phy_base)) in artpec6_pcie_probe()
413 return PTR_ERR(artpec6_pcie->phy_base); in artpec6_pcie_probe()
415 artpec6_pcie->regmap = in artpec6_pcie_probe()
418 if (IS_ERR(artpec6_pcie->regmap)) in artpec6_pcie_probe()
419 return PTR_ERR(artpec6_pcie->regmap); in artpec6_pcie_probe()
421 platform_set_drvdata(pdev, artpec6_pcie); in artpec6_pcie_probe()
423 switch (artpec6_pcie->mode) { in artpec6_pcie_probe()
438 val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); in artpec6_pcie_probe()
440 artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); in artpec6_pcie_probe()
446 dev_err(dev, "INVALID device type %d\n", artpec6_pcie->mode); in artpec6_pcie_probe()