Lines Matching full:dport
153 struct cxl_dport *dport = cxlsd->target[i]; in emit_target_list() local
156 if (!dport) in emit_target_list()
161 rc = sysfs_emit_at(buf, offset, "%d%s", dport->port_id, in emit_target_list()
777 static int cxl_dport_setup_regs(struct device *host, struct cxl_dport *dport, in cxl_dport_setup_regs() argument
782 if (dev_is_platform(dport->dport_dev)) in cxl_dport_setup_regs()
786 * use @dport->dport_dev for the context for error messages during in cxl_dport_setup_regs()
790 rc = cxl_setup_comp_regs(dport->dport_dev, &dport->reg_map, in cxl_dport_setup_regs()
792 dport->reg_map.host = host; in cxl_dport_setup_regs()
996 struct cxl_dport *dport; in find_dport() local
1000 xa_for_each(&port->dports, index, dport) in find_dport()
1001 if (dport->port_id == id) in find_dport()
1002 return dport; in find_dport()
1006 static int add_dport(struct cxl_port *port, struct cxl_dport *dport) in add_dport() argument
1012 dup = find_dport(port, dport->port_id); in add_dport()
1015 "unable to add dport%d-%s non-unique port id (%s)\n", in add_dport()
1016 dport->port_id, dev_name(dport->dport_dev), in add_dport()
1021 rc = xa_insert(&port->dports, (unsigned long)dport->dport_dev, dport, in add_dport()
1033 * dport add/remove. Instead, root dports are manually added by a
1051 struct cxl_dport *dport = data; in cxl_dport_remove() local
1052 struct cxl_port *port = dport->port; in cxl_dport_remove()
1054 xa_erase(&port->dports, (unsigned long) dport->dport_dev); in cxl_dport_remove()
1055 put_device(dport->dport_dev); in cxl_dport_remove()
1060 struct cxl_dport *dport = data; in cxl_dport_unlink() local
1061 struct cxl_port *port = dport->port; in cxl_dport_unlink()
1064 sprintf(link_name, "dport%d", dport->port_id); in cxl_dport_unlink()
1074 struct cxl_dport *dport; in __devm_cxl_add_dport() local
1084 dev_WARN_ONCE(&port->dev, 1, "dport:%s bad devm context\n", in __devm_cxl_add_dport()
1089 if (snprintf(link_name, CXL_TARGET_STRLEN, "dport%d", port_id) >= in __devm_cxl_add_dport()
1093 dport = devm_kzalloc(host, sizeof(*dport), GFP_KERNEL); in __devm_cxl_add_dport()
1094 if (!dport) in __devm_cxl_add_dport()
1097 dport->dport_dev = dport_dev; in __devm_cxl_add_dport()
1098 dport->port_id = port_id; in __devm_cxl_add_dport()
1099 dport->port = port; in __devm_cxl_add_dport()
1102 rc = cxl_dport_setup_regs(&port->dev, dport, in __devm_cxl_add_dport()
1107 dport->rcrb.base = rcrb; in __devm_cxl_add_dport()
1108 component_reg_phys = __rcrb_to_component(dport_dev, &dport->rcrb, in __devm_cxl_add_dport()
1116 * RCH @dport is not ready to map until associated with its in __devm_cxl_add_dport()
1119 rc = cxl_dport_setup_regs(NULL, dport, component_reg_phys); in __devm_cxl_add_dport()
1123 dport->rch = true; in __devm_cxl_add_dport()
1127 dev_dbg(dport_dev, "Component Registers found for dport: %pa\n", in __devm_cxl_add_dport()
1131 rc = add_dport(port, dport); in __devm_cxl_add_dport()
1137 rc = devm_add_action_or_reset(host, cxl_dport_remove, dport); in __devm_cxl_add_dport()
1145 rc = devm_add_action_or_reset(host, cxl_dport_unlink, dport); in __devm_cxl_add_dport()
1150 dport->link_latency = cxl_pci_get_latency(to_pci_dev(dport_dev)); in __devm_cxl_add_dport()
1152 return dport; in __devm_cxl_add_dport()
1157 * @port: the cxl_port that references this dport
1158 * @dport_dev: firmware or PCI device representing the dport
1159 * @port_id: identifier for this dport in a decoder's target list
1170 struct cxl_dport *dport; in devm_cxl_add_dport() local
1172 dport = __devm_cxl_add_dport(port, dport_dev, port_id, in devm_cxl_add_dport()
1174 if (IS_ERR(dport)) { in devm_cxl_add_dport()
1175 dev_dbg(dport_dev, "failed to add dport to %s: %ld\n", in devm_cxl_add_dport()
1176 dev_name(&port->dev), PTR_ERR(dport)); in devm_cxl_add_dport()
1178 dev_dbg(dport_dev, "dport added to %s\n", in devm_cxl_add_dport()
1182 return dport; in devm_cxl_add_dport()
1188 * @port: the cxl_port that references this dport
1189 * @dport_dev: firmware or PCI device representing the dport
1190 * @port_id: identifier for this dport in a decoder's target list
1199 struct cxl_dport *dport; in devm_cxl_add_rch_dport() local
1202 dev_dbg(&port->dev, "failed to add RCH dport, missing RCRB\n"); in devm_cxl_add_rch_dport()
1206 dport = __devm_cxl_add_dport(port, dport_dev, port_id, in devm_cxl_add_rch_dport()
1208 if (IS_ERR(dport)) { in devm_cxl_add_rch_dport()
1209 dev_dbg(dport_dev, "failed to add RCH dport to %s: %ld\n", in devm_cxl_add_rch_dport()
1210 dev_name(&port->dev), PTR_ERR(dport)); in devm_cxl_add_rch_dport()
1212 dev_dbg(dport_dev, "RCH dport added to %s\n", in devm_cxl_add_rch_dport()
1216 return dport; in devm_cxl_add_rch_dport()
1222 struct cxl_port *port = new->dport->port; in add_ep()
1239 * @dport: the dport that routes to @ep_dev
1246 static int cxl_add_ep(struct cxl_dport *dport, struct device *ep_dev) in cxl_add_ep() argument
1256 ep->dport = dport; in cxl_add_ep()
1267 struct cxl_dport **dport; member
1273 struct cxl_dport *dport; in match_port_by_dport() local
1282 dport = cxl_find_dport_by_dev(port, ctx->dport_dev); in match_port_by_dport()
1283 if (ctx->dport) in match_port_by_dport()
1284 *ctx->dport = dport; in match_port_by_dport()
1285 return dport != NULL; in match_port_by_dport()
1302 struct cxl_dport **dport) in find_cxl_port() argument
1306 .dport = dport, in find_cxl_port()
1316 struct cxl_dport **dport) in find_cxl_port_at() argument
1321 .dport = dport, in find_cxl_port_at()
1401 struct cxl_dport *dport; in reap_dports() local
1406 xa_for_each(&port->dports, index, dport) { in reap_dports()
1407 devm_release_action(&port->dev, cxl_dport_unlink, dport); in reap_dports()
1408 devm_release_action(&port->dev, cxl_dport_remove, dport); in reap_dports()
1409 devm_kfree(&port->dev, dport); in reap_dports()
1507 struct cxl_dport *dport, *parent_dport; in add_port_attach_ep() local
1517 dev_dbg(&cxlmd->dev, "%s is a root dport\n", in add_port_attach_ep()
1537 port = find_cxl_port_at(parent_port, dport_dev, &dport); in add_port_attach_ep()
1542 /* retry find to pick up the new dport information */ in add_port_attach_ep()
1544 port = find_cxl_port_at(parent_port, dport_dev, &dport); in add_port_attach_ep()
1554 rc = cxl_add_ep(dport, &cxlmd->dev); in add_port_attach_ep()
1595 struct cxl_dport *dport; in devm_cxl_enumerate_ports() local
1607 dev_warn(dev, "at %s no parent for dport: %s\n", in devm_cxl_enumerate_ports()
1615 port = find_cxl_port(dport_dev, &dport); in devm_cxl_enumerate_ports()
1621 rc = cxl_add_ep(dport, &cxlmd->dev); in devm_cxl_enumerate_ports()
1661 struct cxl_dport **dport) in cxl_pci_find_port() argument
1663 return find_cxl_port(pdev->dev.parent, dport); in cxl_pci_find_port()
1668 struct cxl_dport **dport) in cxl_mem_find_port() argument
1670 return find_cxl_port(grandparent(&cxlmd->dev), dport); in cxl_mem_find_port()
1689 struct cxl_dport *dport = find_dport(port, target_map[i]); in decoder_populate_targets() local
1691 if (!dport) in decoder_populate_targets()
1693 cxlsd->target[i] = dport; in decoder_populate_targets()
2129 struct cxl_dport *dport; in cxl_endpoint_get_perf_coordinates() local
2136 dport = iter->parent_dport; in cxl_endpoint_get_perf_coordinates()
2146 combine_coordinates(&c, &dport->sw_coord); in cxl_endpoint_get_perf_coordinates()
2147 c.write_latency += dport->link_latency; in cxl_endpoint_get_perf_coordinates()
2148 c.read_latency += dport->link_latency; in cxl_endpoint_get_perf_coordinates()
2151 dport = iter->parent_dport; in cxl_endpoint_get_perf_coordinates()
2155 combine_coordinates(&c, &dport->hb_coord); in cxl_endpoint_get_perf_coordinates()