Lines Matching refs:pp
29 #define to_exynos_pcie(x) container_of(x, struct exynos_pcie, pp)
38 struct pcie_port pp; member
135 static void exynos_pcie_sideband_dbi_w_mode(struct pcie_port *pp, bool on) in exynos_pcie_sideband_dbi_w_mode() argument
138 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_sideband_dbi_w_mode()
151 static void exynos_pcie_sideband_dbi_r_mode(struct pcie_port *pp, bool on) in exynos_pcie_sideband_dbi_r_mode() argument
154 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_sideband_dbi_r_mode()
167 static void exynos_pcie_assert_core_reset(struct pcie_port *pp) in exynos_pcie_assert_core_reset() argument
170 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_assert_core_reset()
180 static void exynos_pcie_deassert_core_reset(struct pcie_port *pp) in exynos_pcie_deassert_core_reset() argument
183 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_deassert_core_reset()
196 static void exynos_pcie_assert_phy_reset(struct pcie_port *pp) in exynos_pcie_assert_phy_reset() argument
198 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_assert_phy_reset()
204 static void exynos_pcie_deassert_phy_reset(struct pcie_port *pp) in exynos_pcie_deassert_phy_reset() argument
206 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_deassert_phy_reset()
216 static void exynos_pcie_power_on_phy(struct pcie_port *pp) in exynos_pcie_power_on_phy() argument
219 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_power_on_phy()
242 static void exynos_pcie_power_off_phy(struct pcie_port *pp) in exynos_pcie_power_off_phy() argument
245 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_power_off_phy()
268 static void exynos_pcie_init_phy(struct pcie_port *pp) in exynos_pcie_init_phy() argument
270 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_init_phy()
308 static void exynos_pcie_assert_reset(struct pcie_port *pp) in exynos_pcie_assert_reset() argument
310 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_assert_reset()
313 devm_gpio_request_one(pp->dev, exynos_pcie->reset_gpio, in exynos_pcie_assert_reset()
317 static int exynos_pcie_establish_link(struct pcie_port *pp) in exynos_pcie_establish_link() argument
319 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_establish_link()
323 if (dw_pcie_link_up(pp)) { in exynos_pcie_establish_link()
324 dev_err(pp->dev, "Link already up\n"); in exynos_pcie_establish_link()
329 exynos_pcie_assert_core_reset(pp); in exynos_pcie_establish_link()
330 exynos_pcie_assert_phy_reset(pp); in exynos_pcie_establish_link()
333 exynos_pcie_deassert_phy_reset(pp); in exynos_pcie_establish_link()
336 exynos_pcie_power_on_phy(pp); in exynos_pcie_establish_link()
339 exynos_pcie_init_phy(pp); in exynos_pcie_establish_link()
347 exynos_pcie_deassert_core_reset(pp); in exynos_pcie_establish_link()
350 dw_pcie_setup_rc(pp); in exynos_pcie_establish_link()
353 exynos_pcie_assert_reset(pp); in exynos_pcie_establish_link()
361 if (dw_pcie_link_up(pp)) { in exynos_pcie_establish_link()
362 dev_info(pp->dev, "Link up\n"); in exynos_pcie_establish_link()
370 dev_info(pp->dev, "PLL Locked: 0x%x\n", val); in exynos_pcie_establish_link()
373 exynos_pcie_power_off_phy(pp); in exynos_pcie_establish_link()
375 dev_err(pp->dev, "PCIe Link Fail\n"); in exynos_pcie_establish_link()
379 static void exynos_pcie_clear_irq_pulse(struct pcie_port *pp) in exynos_pcie_clear_irq_pulse() argument
382 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_clear_irq_pulse()
388 static void exynos_pcie_enable_irq_pulse(struct pcie_port *pp) in exynos_pcie_enable_irq_pulse() argument
391 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_enable_irq_pulse()
401 struct pcie_port *pp = arg; in exynos_pcie_irq_handler() local
403 exynos_pcie_clear_irq_pulse(pp); in exynos_pcie_irq_handler()
409 struct pcie_port *pp = arg; in exynos_pcie_msi_irq_handler() local
411 return dw_handle_msi_irq(pp); in exynos_pcie_msi_irq_handler()
414 static void exynos_pcie_msi_init(struct pcie_port *pp) in exynos_pcie_msi_init() argument
417 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_msi_init()
419 dw_pcie_msi_init(pp); in exynos_pcie_msi_init()
427 static void exynos_pcie_enable_interrupts(struct pcie_port *pp) in exynos_pcie_enable_interrupts() argument
429 exynos_pcie_enable_irq_pulse(pp); in exynos_pcie_enable_interrupts()
432 exynos_pcie_msi_init(pp); in exynos_pcie_enable_interrupts()
435 static inline void exynos_pcie_readl_rc(struct pcie_port *pp, in exynos_pcie_readl_rc() argument
438 exynos_pcie_sideband_dbi_r_mode(pp, true); in exynos_pcie_readl_rc()
440 exynos_pcie_sideband_dbi_r_mode(pp, false); in exynos_pcie_readl_rc()
443 static inline void exynos_pcie_writel_rc(struct pcie_port *pp, in exynos_pcie_writel_rc() argument
446 exynos_pcie_sideband_dbi_w_mode(pp, true); in exynos_pcie_writel_rc()
448 exynos_pcie_sideband_dbi_w_mode(pp, false); in exynos_pcie_writel_rc()
451 static int exynos_pcie_rd_own_conf(struct pcie_port *pp, int where, int size, in exynos_pcie_rd_own_conf() argument
456 exynos_pcie_sideband_dbi_r_mode(pp, true); in exynos_pcie_rd_own_conf()
457 ret = dw_pcie_cfg_read(pp->dbi_base + where, size, val); in exynos_pcie_rd_own_conf()
458 exynos_pcie_sideband_dbi_r_mode(pp, false); in exynos_pcie_rd_own_conf()
462 static int exynos_pcie_wr_own_conf(struct pcie_port *pp, int where, int size, in exynos_pcie_wr_own_conf() argument
467 exynos_pcie_sideband_dbi_w_mode(pp, true); in exynos_pcie_wr_own_conf()
468 ret = dw_pcie_cfg_write(pp->dbi_base + where, size, val); in exynos_pcie_wr_own_conf()
469 exynos_pcie_sideband_dbi_w_mode(pp, false); in exynos_pcie_wr_own_conf()
473 static int exynos_pcie_link_up(struct pcie_port *pp) in exynos_pcie_link_up() argument
475 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_link_up()
484 static void exynos_pcie_host_init(struct pcie_port *pp) in exynos_pcie_host_init() argument
486 exynos_pcie_establish_link(pp); in exynos_pcie_host_init()
487 exynos_pcie_enable_interrupts(pp); in exynos_pcie_host_init()
499 static int __init exynos_add_pcie_port(struct pcie_port *pp, in exynos_add_pcie_port() argument
504 pp->irq = platform_get_irq(pdev, 1); in exynos_add_pcie_port()
505 if (!pp->irq) { in exynos_add_pcie_port()
509 ret = devm_request_irq(&pdev->dev, pp->irq, exynos_pcie_irq_handler, in exynos_add_pcie_port()
510 IRQF_SHARED, "exynos-pcie", pp); in exynos_add_pcie_port()
517 pp->msi_irq = platform_get_irq(pdev, 0); in exynos_add_pcie_port()
518 if (!pp->msi_irq) { in exynos_add_pcie_port()
523 ret = devm_request_irq(&pdev->dev, pp->msi_irq, in exynos_add_pcie_port()
526 "exynos-pcie", pp); in exynos_add_pcie_port()
533 pp->root_bus_nr = -1; in exynos_add_pcie_port()
534 pp->ops = &exynos_pcie_host_ops; in exynos_add_pcie_port()
536 ret = dw_pcie_host_init(pp); in exynos_add_pcie_port()
548 struct pcie_port *pp; in exynos_pcie_probe() local
560 pp = &exynos_pcie->pp; in exynos_pcie_probe()
562 pp->dev = &pdev->dev; in exynos_pcie_probe()
606 ret = exynos_add_pcie_port(pp, pdev); in exynos_pcie_probe()