Lines Matching refs:pp
72 struct pcie_port pp; member
75 #define to_dra7xx_pcie(x) container_of((x), struct dra7xx_pcie, pp)
88 static inline u32 dra7xx_pcie_readl_rc(struct pcie_port *pp, u32 offset) in dra7xx_pcie_readl_rc() argument
90 return readl(pp->dbi_base + offset); in dra7xx_pcie_readl_rc()
93 static inline void dra7xx_pcie_writel_rc(struct pcie_port *pp, u32 offset, in dra7xx_pcie_writel_rc() argument
96 writel(value, pp->dbi_base + offset); in dra7xx_pcie_writel_rc()
99 static int dra7xx_pcie_link_up(struct pcie_port *pp) in dra7xx_pcie_link_up() argument
101 struct dra7xx_pcie *dra7xx = to_dra7xx_pcie(pp); in dra7xx_pcie_link_up()
107 static int dra7xx_pcie_establish_link(struct pcie_port *pp) in dra7xx_pcie_establish_link() argument
109 struct dra7xx_pcie *dra7xx = to_dra7xx_pcie(pp); in dra7xx_pcie_establish_link()
113 if (dw_pcie_link_up(pp)) { in dra7xx_pcie_establish_link()
114 dev_err(pp->dev, "link is already up\n"); in dra7xx_pcie_establish_link()
123 if (dw_pcie_link_up(pp)) in dra7xx_pcie_establish_link()
128 dev_err(pp->dev, "link is not up\n"); in dra7xx_pcie_establish_link()
132 static void dra7xx_pcie_enable_interrupts(struct pcie_port *pp) in dra7xx_pcie_enable_interrupts() argument
134 struct dra7xx_pcie *dra7xx = to_dra7xx_pcie(pp); in dra7xx_pcie_enable_interrupts()
152 static void dra7xx_pcie_host_init(struct pcie_port *pp) in dra7xx_pcie_host_init() argument
154 dw_pcie_setup_rc(pp); in dra7xx_pcie_host_init()
156 pp->io_base &= DRA7XX_CPU_TO_BUS_ADDR; in dra7xx_pcie_host_init()
157 pp->mem_base &= DRA7XX_CPU_TO_BUS_ADDR; in dra7xx_pcie_host_init()
158 pp->cfg0_base &= DRA7XX_CPU_TO_BUS_ADDR; in dra7xx_pcie_host_init()
159 pp->cfg1_base &= DRA7XX_CPU_TO_BUS_ADDR; in dra7xx_pcie_host_init()
161 dra7xx_pcie_establish_link(pp); in dra7xx_pcie_host_init()
163 dw_pcie_msi_init(pp); in dra7xx_pcie_host_init()
164 dra7xx_pcie_enable_interrupts(pp); in dra7xx_pcie_host_init()
185 static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp) in dra7xx_pcie_init_irq_domain() argument
187 struct device *dev = pp->dev; in dra7xx_pcie_init_irq_domain()
196 pp->irq_domain = irq_domain_add_linear(pcie_intc_node, 4, in dra7xx_pcie_init_irq_domain()
197 &intx_domain_ops, pp); in dra7xx_pcie_init_irq_domain()
198 if (!pp->irq_domain) { in dra7xx_pcie_init_irq_domain()
200 return PTR_ERR(pp->irq_domain); in dra7xx_pcie_init_irq_domain()
208 struct pcie_port *pp = arg; in dra7xx_pcie_msi_irq_handler() local
209 struct dra7xx_pcie *dra7xx = to_dra7xx_pcie(pp); in dra7xx_pcie_msi_irq_handler()
216 dw_handle_msi_irq(pp); in dra7xx_pcie_msi_irq_handler()
222 generic_handle_irq(irq_find_mapping(pp->irq_domain, ffs(reg))); in dra7xx_pcie_msi_irq_handler()
290 struct pcie_port *pp; in dra7xx_add_pcie_port() local
294 pp = &dra7xx->pp; in dra7xx_add_pcie_port()
295 pp->dev = dev; in dra7xx_add_pcie_port()
296 pp->ops = &dra7xx_pcie_host_ops; in dra7xx_add_pcie_port()
298 pp->irq = platform_get_irq(pdev, 1); in dra7xx_add_pcie_port()
299 if (pp->irq < 0) { in dra7xx_add_pcie_port()
304 ret = devm_request_irq(&pdev->dev, pp->irq, in dra7xx_add_pcie_port()
307 "dra7-pcie-msi", pp); in dra7xx_add_pcie_port()
314 ret = dra7xx_pcie_init_irq_domain(pp); in dra7xx_add_pcie_port()
320 pp->dbi_base = devm_ioremap(dev, res->start, resource_size(res)); in dra7xx_add_pcie_port()
321 if (!pp->dbi_base) in dra7xx_add_pcie_port()
324 ret = dw_pcie_host_init(pp); in dra7xx_add_pcie_port()
458 struct pcie_port *pp = &dra7xx->pp; in dra7xx_pcie_remove() local
462 if (pp->irq_domain) in dra7xx_pcie_remove()
463 irq_domain_remove(pp->irq_domain); in dra7xx_pcie_remove()
478 struct pcie_port *pp = &dra7xx->pp; in dra7xx_pcie_suspend() local
482 val = dra7xx_pcie_readl_rc(pp, PCI_COMMAND); in dra7xx_pcie_suspend()
484 dra7xx_pcie_writel_rc(pp, PCI_COMMAND, val); in dra7xx_pcie_suspend()
492 struct pcie_port *pp = &dra7xx->pp; in dra7xx_pcie_resume() local
496 val = dra7xx_pcie_readl_rc(pp, PCI_COMMAND); in dra7xx_pcie_resume()
498 dra7xx_pcie_writel_rc(pp, PCI_COMMAND, val); in dra7xx_pcie_resume()