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
321 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()
360 while (!dw_pcie_link_up(pp)) { in exynos_pcie_establish_link()
368 dev_info(pp->dev, "PLL Locked: 0x%x\n", val); in exynos_pcie_establish_link()
371 exynos_pcie_power_off_phy(pp); in exynos_pcie_establish_link()
373 dev_err(pp->dev, "PCIe Link Fail\n"); in exynos_pcie_establish_link()
378 dev_info(pp->dev, "Link up\n"); in exynos_pcie_establish_link()
383 static void exynos_pcie_clear_irq_pulse(struct pcie_port *pp) in exynos_pcie_clear_irq_pulse() argument
386 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_clear_irq_pulse()
392 static void exynos_pcie_enable_irq_pulse(struct pcie_port *pp) in exynos_pcie_enable_irq_pulse() argument
395 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_enable_irq_pulse()
405 struct pcie_port *pp = arg; in exynos_pcie_irq_handler() local
407 exynos_pcie_clear_irq_pulse(pp); in exynos_pcie_irq_handler()
413 struct pcie_port *pp = arg; in exynos_pcie_msi_irq_handler() local
415 return dw_handle_msi_irq(pp); in exynos_pcie_msi_irq_handler()
418 static void exynos_pcie_msi_init(struct pcie_port *pp) in exynos_pcie_msi_init() argument
421 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_msi_init()
423 dw_pcie_msi_init(pp); in exynos_pcie_msi_init()
431 static void exynos_pcie_enable_interrupts(struct pcie_port *pp) in exynos_pcie_enable_interrupts() argument
433 exynos_pcie_enable_irq_pulse(pp); in exynos_pcie_enable_interrupts()
436 exynos_pcie_msi_init(pp); in exynos_pcie_enable_interrupts()
439 static inline void exynos_pcie_readl_rc(struct pcie_port *pp, in exynos_pcie_readl_rc() argument
442 exynos_pcie_sideband_dbi_r_mode(pp, true); in exynos_pcie_readl_rc()
444 exynos_pcie_sideband_dbi_r_mode(pp, false); in exynos_pcie_readl_rc()
447 static inline void exynos_pcie_writel_rc(struct pcie_port *pp, in exynos_pcie_writel_rc() argument
450 exynos_pcie_sideband_dbi_w_mode(pp, true); in exynos_pcie_writel_rc()
452 exynos_pcie_sideband_dbi_w_mode(pp, false); in exynos_pcie_writel_rc()
455 static int exynos_pcie_rd_own_conf(struct pcie_port *pp, int where, int size, in exynos_pcie_rd_own_conf() argument
460 exynos_pcie_sideband_dbi_r_mode(pp, true); in exynos_pcie_rd_own_conf()
461 ret = dw_pcie_cfg_read(pp->dbi_base + (where & ~0x3), where, size, val); in exynos_pcie_rd_own_conf()
462 exynos_pcie_sideband_dbi_r_mode(pp, false); in exynos_pcie_rd_own_conf()
466 static int exynos_pcie_wr_own_conf(struct pcie_port *pp, int where, int size, in exynos_pcie_wr_own_conf() argument
471 exynos_pcie_sideband_dbi_w_mode(pp, true); in exynos_pcie_wr_own_conf()
472 ret = dw_pcie_cfg_write(pp->dbi_base + (where & ~0x3), in exynos_pcie_wr_own_conf()
474 exynos_pcie_sideband_dbi_w_mode(pp, false); in exynos_pcie_wr_own_conf()
478 static int exynos_pcie_link_up(struct pcie_port *pp) in exynos_pcie_link_up() argument
480 struct exynos_pcie *exynos_pcie = to_exynos_pcie(pp); in exynos_pcie_link_up()
489 static void exynos_pcie_host_init(struct pcie_port *pp) in exynos_pcie_host_init() argument
491 exynos_pcie_establish_link(pp); in exynos_pcie_host_init()
492 exynos_pcie_enable_interrupts(pp); in exynos_pcie_host_init()
504 static int __init exynos_add_pcie_port(struct pcie_port *pp, in exynos_add_pcie_port() argument
509 pp->irq = platform_get_irq(pdev, 1); in exynos_add_pcie_port()
510 if (!pp->irq) { in exynos_add_pcie_port()
514 ret = devm_request_irq(&pdev->dev, pp->irq, exynos_pcie_irq_handler, in exynos_add_pcie_port()
515 IRQF_SHARED, "exynos-pcie", pp); in exynos_add_pcie_port()
522 pp->msi_irq = platform_get_irq(pdev, 0); in exynos_add_pcie_port()
523 if (!pp->msi_irq) { in exynos_add_pcie_port()
528 ret = devm_request_irq(&pdev->dev, pp->msi_irq, in exynos_add_pcie_port()
531 "exynos-pcie", pp); in exynos_add_pcie_port()
538 pp->root_bus_nr = -1; in exynos_add_pcie_port()
539 pp->ops = &exynos_pcie_host_ops; in exynos_add_pcie_port()
541 ret = dw_pcie_host_init(pp); in exynos_add_pcie_port()
553 struct pcie_port *pp; in exynos_pcie_probe() local
565 pp = &exynos_pcie->pp; in exynos_pcie_probe()
567 pp->dev = &pdev->dev; in exynos_pcie_probe()
611 ret = exynos_add_pcie_port(pp, pdev); in exynos_pcie_probe()