Lines Matching refs:port

90 	struct xgene_pcie_port *port = bus->sysdata;  in xgene_pcie_get_cfg_base()  local
93 return port->cfg_base + AXI_EP_CFG_ACCESS; in xgene_pcie_get_cfg_base()
95 return port->cfg_base; in xgene_pcie_get_cfg_base()
104 struct xgene_pcie_port *port = bus->sysdata; in xgene_pcie_set_rtdid_reg() local
115 writel(rtdid_val, port->csr_base + RTDID); in xgene_pcie_set_rtdid_reg()
117 readl(port->csr_base + RTDID); in xgene_pcie_set_rtdid_reg()
151 struct xgene_pcie_port *port = bus->sysdata; in xgene_pcie_config_read32() local
166 if (pci_is_root_bus(bus) && (port->version == XGENE_PCIE_IP_VER_1) && in xgene_pcie_config_read32()
208 static void xgene_pcie_linkup(struct xgene_pcie_port *port, in xgene_pcie_linkup() argument
211 void __iomem *csr_base = port->csr_base; in xgene_pcie_linkup()
214 port->link_up = false; in xgene_pcie_linkup()
217 port->link_up = true; in xgene_pcie_linkup()
224 static int xgene_pcie_init_port(struct xgene_pcie_port *port) in xgene_pcie_init_port() argument
228 port->clk = clk_get(port->dev, NULL); in xgene_pcie_init_port()
229 if (IS_ERR(port->clk)) { in xgene_pcie_init_port()
230 dev_err(port->dev, "clock not available\n"); in xgene_pcie_init_port()
234 rc = clk_prepare_enable(port->clk); in xgene_pcie_init_port()
236 dev_err(port->dev, "clock enable failed\n"); in xgene_pcie_init_port()
243 static int xgene_pcie_map_reg(struct xgene_pcie_port *port, in xgene_pcie_map_reg() argument
249 port->csr_base = devm_ioremap_resource(port->dev, res); in xgene_pcie_map_reg()
250 if (IS_ERR(port->csr_base)) in xgene_pcie_map_reg()
251 return PTR_ERR(port->csr_base); in xgene_pcie_map_reg()
254 port->cfg_base = devm_ioremap_resource(port->dev, res); in xgene_pcie_map_reg()
255 if (IS_ERR(port->cfg_base)) in xgene_pcie_map_reg()
256 return PTR_ERR(port->cfg_base); in xgene_pcie_map_reg()
257 port->cfg_addr = res->start; in xgene_pcie_map_reg()
262 static void xgene_pcie_setup_ob_reg(struct xgene_pcie_port *port, in xgene_pcie_setup_ob_reg() argument
266 void __iomem *base = port->csr_base + offset; in xgene_pcie_setup_ob_reg()
283 dev_warn(port->dev, "res size 0x%llx less than minimum 0x%x\n", in xgene_pcie_setup_ob_reg()
301 static int xgene_pcie_map_ranges(struct xgene_pcie_port *port, in xgene_pcie_map_ranges() argument
306 struct device *dev = port->dev; in xgene_pcie_map_ranges()
313 dev_dbg(port->dev, "%pR\n", res); in xgene_pcie_map_ranges()
317 xgene_pcie_setup_ob_reg(port, res, OMR3BARL, io_base, in xgene_pcie_map_ranges()
325 xgene_pcie_setup_ob_reg(port, res, OMR2BARL, in xgene_pcie_map_ranges()
330 xgene_pcie_setup_ob_reg(port, res, OMR1BARL, in xgene_pcie_map_ranges()
342 xgene_pcie_setup_cfg_reg(port->csr_base, port->cfg_addr); in xgene_pcie_map_ranges()
379 static void xgene_pcie_setup_ib_reg(struct xgene_pcie_port *port, in xgene_pcie_setup_ib_reg() argument
382 void __iomem *csr_base = port->csr_base; in xgene_pcie_setup_ib_reg()
383 void __iomem *cfg_base = port->cfg_base; in xgene_pcie_setup_ib_reg()
396 dev_warn(port->dev, "invalid pcie dma-range config\n"); in xgene_pcie_setup_ib_reg()
449 static int xgene_pcie_parse_map_dma_ranges(struct xgene_pcie_port *port) in xgene_pcie_parse_map_dma_ranges() argument
451 struct device_node *np = port->node; in xgene_pcie_parse_map_dma_ranges()
454 struct device *dev = port->dev; in xgene_pcie_parse_map_dma_ranges()
466 dev_dbg(port->dev, "0x%08x 0x%016llx..0x%016llx -> 0x%016llx\n", in xgene_pcie_parse_map_dma_ranges()
468 xgene_pcie_setup_ib_reg(port, &range, &ib_reg_mask); in xgene_pcie_parse_map_dma_ranges()
474 static void xgene_pcie_clear_config(struct xgene_pcie_port *port) in xgene_pcie_clear_config() argument
479 writel(0x0, port->csr_base + i); in xgene_pcie_clear_config()
482 static int xgene_pcie_setup(struct xgene_pcie_port *port, in xgene_pcie_setup() argument
489 xgene_pcie_clear_config(port); in xgene_pcie_setup()
493 writel(val, port->csr_base + BRIDGE_CFG_0); in xgene_pcie_setup()
495 ret = xgene_pcie_map_ranges(port, res, io_base); in xgene_pcie_setup()
499 ret = xgene_pcie_parse_map_dma_ranges(port); in xgene_pcie_setup()
503 xgene_pcie_linkup(port, &lanes, &speed); in xgene_pcie_setup()
504 if (!port->link_up) in xgene_pcie_setup()
505 dev_info(port->dev, "(rc) link down\n"); in xgene_pcie_setup()
507 dev_info(port->dev, "(rc) x%d gen-%d link up\n", in xgene_pcie_setup()
515 struct xgene_pcie_port *port; in xgene_pcie_probe_bridge() local
521 port = devm_kzalloc(&pdev->dev, sizeof(*port), GFP_KERNEL); in xgene_pcie_probe_bridge()
522 if (!port) in xgene_pcie_probe_bridge()
524 port->node = of_node_get(pdev->dev.of_node); in xgene_pcie_probe_bridge()
525 port->dev = &pdev->dev; in xgene_pcie_probe_bridge()
527 port->version = XGENE_PCIE_IP_VER_UNKN; in xgene_pcie_probe_bridge()
528 if (of_device_is_compatible(port->node, "apm,xgene-pcie")) in xgene_pcie_probe_bridge()
529 port->version = XGENE_PCIE_IP_VER_1; in xgene_pcie_probe_bridge()
531 ret = xgene_pcie_map_reg(port, pdev); in xgene_pcie_probe_bridge()
535 ret = xgene_pcie_init_port(port); in xgene_pcie_probe_bridge()
543 ret = xgene_pcie_setup(port, &res, iobase); in xgene_pcie_probe_bridge()
548 &xgene_pcie_ops, port, &res); in xgene_pcie_probe_bridge()
556 platform_set_drvdata(pdev, port); in xgene_pcie_probe_bridge()