Lines Matching refs:port
83 struct xgene_pcie_port *port = bus->sysdata; in xgene_pcie_get_cfg_base() local
86 return port->cfg_base + AXI_EP_CFG_ACCESS; in xgene_pcie_get_cfg_base()
88 return port->cfg_base; in xgene_pcie_get_cfg_base()
97 struct xgene_pcie_port *port = bus->sysdata; in xgene_pcie_set_rtdid_reg() local
108 writel(rtdid_val, port->csr_base + RTDID); in xgene_pcie_set_rtdid_reg()
110 readl(port->csr_base + RTDID); in xgene_pcie_set_rtdid_reg()
133 struct xgene_pcie_port *port = bus->sysdata; in xgene_pcie_map_bus() local
135 if ((pci_is_root_bus(bus) && devfn != 0) || !port->link_up || in xgene_pcie_map_bus()
175 static void xgene_pcie_linkup(struct xgene_pcie_port *port, in xgene_pcie_linkup() argument
178 void __iomem *csr_base = port->csr_base; in xgene_pcie_linkup()
181 port->link_up = false; in xgene_pcie_linkup()
184 port->link_up = true; in xgene_pcie_linkup()
191 static int xgene_pcie_init_port(struct xgene_pcie_port *port) in xgene_pcie_init_port() argument
195 port->clk = clk_get(port->dev, NULL); in xgene_pcie_init_port()
196 if (IS_ERR(port->clk)) { in xgene_pcie_init_port()
197 dev_err(port->dev, "clock not available\n"); in xgene_pcie_init_port()
201 rc = clk_prepare_enable(port->clk); in xgene_pcie_init_port()
203 dev_err(port->dev, "clock enable failed\n"); in xgene_pcie_init_port()
210 static int xgene_pcie_map_reg(struct xgene_pcie_port *port, in xgene_pcie_map_reg() argument
216 port->csr_base = devm_ioremap_resource(port->dev, res); in xgene_pcie_map_reg()
217 if (IS_ERR(port->csr_base)) in xgene_pcie_map_reg()
218 return PTR_ERR(port->csr_base); in xgene_pcie_map_reg()
221 port->cfg_base = devm_ioremap_resource(port->dev, res); in xgene_pcie_map_reg()
222 if (IS_ERR(port->cfg_base)) in xgene_pcie_map_reg()
223 return PTR_ERR(port->cfg_base); in xgene_pcie_map_reg()
224 port->cfg_addr = res->start; in xgene_pcie_map_reg()
229 static void xgene_pcie_setup_ob_reg(struct xgene_pcie_port *port, in xgene_pcie_setup_ob_reg() argument
233 void __iomem *base = port->csr_base + offset; in xgene_pcie_setup_ob_reg()
250 dev_warn(port->dev, "res size 0x%llx less than minimum 0x%x\n", in xgene_pcie_setup_ob_reg()
268 static int xgene_pcie_map_ranges(struct xgene_pcie_port *port, in xgene_pcie_map_ranges() argument
273 struct device *dev = port->dev; in xgene_pcie_map_ranges()
280 dev_dbg(port->dev, "%pR\n", res); in xgene_pcie_map_ranges()
284 xgene_pcie_setup_ob_reg(port, res, OMR3BARL, io_base, in xgene_pcie_map_ranges()
291 xgene_pcie_setup_ob_reg(port, res, OMR1BARL, res->start, in xgene_pcie_map_ranges()
301 xgene_pcie_setup_cfg_reg(port->csr_base, port->cfg_addr); in xgene_pcie_map_ranges()
338 static void xgene_pcie_setup_ib_reg(struct xgene_pcie_port *port, in xgene_pcie_setup_ib_reg() argument
341 void __iomem *csr_base = port->csr_base; in xgene_pcie_setup_ib_reg()
342 void __iomem *cfg_base = port->cfg_base; in xgene_pcie_setup_ib_reg()
355 dev_warn(port->dev, "invalid pcie dma-range config\n"); in xgene_pcie_setup_ib_reg()
408 static int xgene_pcie_parse_map_dma_ranges(struct xgene_pcie_port *port) in xgene_pcie_parse_map_dma_ranges() argument
410 struct device_node *np = port->node; in xgene_pcie_parse_map_dma_ranges()
413 struct device *dev = port->dev; in xgene_pcie_parse_map_dma_ranges()
425 dev_dbg(port->dev, "0x%08x 0x%016llx..0x%016llx -> 0x%016llx\n", in xgene_pcie_parse_map_dma_ranges()
427 xgene_pcie_setup_ib_reg(port, &range, &ib_reg_mask); in xgene_pcie_parse_map_dma_ranges()
433 static void xgene_pcie_clear_config(struct xgene_pcie_port *port) in xgene_pcie_clear_config() argument
438 writel(0x0, port->csr_base + i); in xgene_pcie_clear_config()
441 static int xgene_pcie_setup(struct xgene_pcie_port *port, in xgene_pcie_setup() argument
448 xgene_pcie_clear_config(port); in xgene_pcie_setup()
452 writel(val, port->csr_base + BRIDGE_CFG_0); in xgene_pcie_setup()
454 ret = xgene_pcie_map_ranges(port, res, io_base); in xgene_pcie_setup()
458 ret = xgene_pcie_parse_map_dma_ranges(port); in xgene_pcie_setup()
462 xgene_pcie_linkup(port, &lanes, &speed); in xgene_pcie_setup()
463 if (!port->link_up) in xgene_pcie_setup()
464 dev_info(port->dev, "(rc) link down\n"); in xgene_pcie_setup()
466 dev_info(port->dev, "(rc) x%d gen-%d link up\n", in xgene_pcie_setup()
474 struct xgene_pcie_port *port; in xgene_pcie_probe_bridge() local
480 port = devm_kzalloc(&pdev->dev, sizeof(*port), GFP_KERNEL); in xgene_pcie_probe_bridge()
481 if (!port) in xgene_pcie_probe_bridge()
483 port->node = of_node_get(pdev->dev.of_node); in xgene_pcie_probe_bridge()
484 port->dev = &pdev->dev; in xgene_pcie_probe_bridge()
486 ret = xgene_pcie_map_reg(port, pdev); in xgene_pcie_probe_bridge()
490 ret = xgene_pcie_init_port(port); in xgene_pcie_probe_bridge()
498 ret = xgene_pcie_setup(port, &res, iobase); in xgene_pcie_probe_bridge()
503 &xgene_pcie_ops, port, &res); in xgene_pcie_probe_bridge()
511 platform_set_drvdata(pdev, port); in xgene_pcie_probe_bridge()