Lines Matching +full:0 +full:xd

25 #define PCIE2CIO_CMD			0x30
34 #define PCIE2CIO_WRDATA 0x34
35 #define PCIE2CIO_RDDATA 0x38
37 #define PHY_PORT_CS1 0x37
56 * @max_boot_acl: Maximum number of preboot ACL entries (%0 if not supported)
112 u8 data[0];
115 #define EP_NAME_INTEL_VSS 0x10
127 #define INTEL_VSS_FLAGS_RTD3 BIT(0)
165 return link ? ((link - 1) ^ 0x01) + 1 : 0; in dual_link_from_link()
176 return depth ? route & ~(0xffULL << (depth - 1) * TB_ROUTE_SHIFT) : 0; in get_parent_route()
190 return 0; in pci2cio_wait_completion()
217 return 0; in pcie2cio_read()
352 return 0; in icm_fr_get_switch_index()
355 return index != 0xff ? index : 0; in icm_fr_get_switch_index()
377 sw = &switches[0]; in icm_fr_get_route()
393 for (j = 0; j < ARRAY_SIZE(sw->ports); j++) { in icm_fr_get_route()
411 nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_SAVE_DEVS, 0); in icm_fr_save_devices()
424 memset(&reply, 0, sizeof(reply)); in icm_fr_driver_ready()
433 return 0; in icm_fr_driver_ready()
442 memset(&request, 0, sizeof(request)); in icm_fr_approve_switch()
448 memset(&reply, 0, sizeof(reply)); in icm_fr_approve_switch()
460 return 0; in icm_fr_approve_switch()
469 memset(&request, 0, sizeof(request)); in icm_fr_add_switch_key()
476 memset(&reply, 0, sizeof(reply)); in icm_fr_add_switch_key()
487 return 0; in icm_fr_add_switch_key()
497 memset(&request, 0, sizeof(request)); in icm_fr_challenge_switch_key()
504 memset(&reply, 0, sizeof(reply)); in icm_fr_challenge_switch_key()
517 return 0; in icm_fr_challenge_switch_key()
520 static int icm_fr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_fr_approve_xdomain_paths() argument
526 memset(&request, 0, sizeof(request)); in icm_fr_approve_xdomain_paths()
528 request.link_info = xd->depth << ICM_LINK_INFO_DEPTH_SHIFT | xd->link; in icm_fr_approve_xdomain_paths()
529 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_fr_approve_xdomain_paths()
531 request.transmit_path = xd->transmit_path; in icm_fr_approve_xdomain_paths()
532 request.transmit_ring = xd->transmit_ring; in icm_fr_approve_xdomain_paths()
533 request.receive_path = xd->receive_path; in icm_fr_approve_xdomain_paths()
534 request.receive_ring = xd->receive_ring; in icm_fr_approve_xdomain_paths()
536 memset(&reply, 0, sizeof(reply)); in icm_fr_approve_xdomain_paths()
545 return 0; in icm_fr_approve_xdomain_paths()
548 static int icm_fr_disconnect_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_fr_disconnect_xdomain_paths() argument
553 phy_port = tb_phy_port_from_link(xd->link); in icm_fr_disconnect_xdomain_paths()
554 if (phy_port == 0) in icm_fr_disconnect_xdomain_paths()
562 return 0; in icm_fr_disconnect_xdomain_paths()
657 struct tb_xdomain *xd; in add_xdomain() local
661 xd = tb_xdomain_alloc(sw->tb, &sw->dev, route, local_uuid, remote_uuid); in add_xdomain()
662 if (!xd) in add_xdomain()
665 xd->link = link; in add_xdomain()
666 xd->depth = depth; in add_xdomain()
668 tb_port_at(route, sw)->xdomain = xd; in add_xdomain()
670 tb_xdomain_add(xd); in add_xdomain()
677 static void update_xdomain(struct tb_xdomain *xd, u64 route, u8 link) in update_xdomain() argument
679 xd->link = link; in update_xdomain()
680 xd->route = route; in update_xdomain()
681 xd->is_unplugged = false; in update_xdomain()
684 static void remove_xdomain(struct tb_xdomain *xd) in remove_xdomain() argument
688 sw = tb_to_switch(xd->dev.parent); in remove_xdomain()
689 tb_port_at(xd->route, sw)->xdomain = NULL; in remove_xdomain()
690 tb_xdomain_remove(xd); in remove_xdomain()
702 struct tb_xdomain *xd; in icm_fr_device_connected() local
793 xd = tb_xdomain_find_by_link_depth(tb, link, depth); in icm_fr_device_connected()
794 if (xd) { in icm_fr_device_connected()
795 remove_xdomain(xd); in icm_fr_device_connected()
796 tb_xdomain_put(xd); in icm_fr_device_connected()
855 struct tb_xdomain *xd; in icm_fr_xdomain_connected() local
871 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_fr_xdomain_connected()
872 if (xd) { in icm_fr_xdomain_connected()
875 xd_phy_port = phy_port_from_route(xd->route, xd->depth); in icm_fr_xdomain_connected()
878 if (xd->depth == depth && xd_phy_port == phy_port) { in icm_fr_xdomain_connected()
879 update_xdomain(xd, route, link); in icm_fr_xdomain_connected()
880 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
890 remove_xdomain(xd); in icm_fr_xdomain_connected()
891 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
899 xd = tb_xdomain_find_by_link_depth(tb, link, depth); in icm_fr_xdomain_connected()
900 if (!xd) { in icm_fr_xdomain_connected()
905 xd = tb_xdomain_find_by_link_depth(tb, dual_link, in icm_fr_xdomain_connected()
908 if (xd) { in icm_fr_xdomain_connected()
909 remove_xdomain(xd); in icm_fr_xdomain_connected()
910 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
941 struct tb_xdomain *xd; in icm_fr_xdomain_disconnected() local
948 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_fr_xdomain_disconnected()
949 if (xd) { in icm_fr_xdomain_disconnected()
950 remove_xdomain(xd); in icm_fr_xdomain_disconnected()
951 tb_xdomain_put(xd); in icm_fr_xdomain_disconnected()
957 return pcie2cio_write(tb_priv(tb), TB_CFG_SWITCH, 0, 0x777, BIT(1)); in icm_tr_cio_reset()
970 memset(&reply, 0, sizeof(reply)); in icm_tr_driver_ready()
984 return 0; in icm_tr_driver_ready()
993 memset(&request, 0, sizeof(request)); in icm_tr_approve_switch()
1000 memset(&reply, 0, sizeof(reply)); in icm_tr_approve_switch()
1011 return 0; in icm_tr_approve_switch()
1020 memset(&request, 0, sizeof(request)); in icm_tr_add_switch_key()
1028 memset(&reply, 0, sizeof(reply)); in icm_tr_add_switch_key()
1039 return 0; in icm_tr_add_switch_key()
1049 memset(&request, 0, sizeof(request)); in icm_tr_challenge_switch_key()
1057 memset(&reply, 0, sizeof(reply)); in icm_tr_challenge_switch_key()
1070 return 0; in icm_tr_challenge_switch_key()
1073 static int icm_tr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_tr_approve_xdomain_paths() argument
1079 memset(&request, 0, sizeof(request)); in icm_tr_approve_xdomain_paths()
1081 request.route_hi = upper_32_bits(xd->route); in icm_tr_approve_xdomain_paths()
1082 request.route_lo = lower_32_bits(xd->route); in icm_tr_approve_xdomain_paths()
1083 request.transmit_path = xd->transmit_path; in icm_tr_approve_xdomain_paths()
1084 request.transmit_ring = xd->transmit_ring; in icm_tr_approve_xdomain_paths()
1085 request.receive_path = xd->receive_path; in icm_tr_approve_xdomain_paths()
1086 request.receive_ring = xd->receive_ring; in icm_tr_approve_xdomain_paths()
1087 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_tr_approve_xdomain_paths()
1089 memset(&reply, 0, sizeof(reply)); in icm_tr_approve_xdomain_paths()
1098 return 0; in icm_tr_approve_xdomain_paths()
1101 static int icm_tr_xdomain_tear_down(struct tb *tb, struct tb_xdomain *xd, in icm_tr_xdomain_tear_down() argument
1108 memset(&request, 0, sizeof(request)); in icm_tr_xdomain_tear_down()
1111 request.route_hi = upper_32_bits(xd->route); in icm_tr_xdomain_tear_down()
1112 request.route_lo = lower_32_bits(xd->route); in icm_tr_xdomain_tear_down()
1113 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_tr_xdomain_tear_down()
1115 memset(&reply, 0, sizeof(reply)); in icm_tr_xdomain_tear_down()
1124 return 0; in icm_tr_xdomain_tear_down()
1127 static int icm_tr_disconnect_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_tr_disconnect_xdomain_paths() argument
1131 ret = icm_tr_xdomain_tear_down(tb, xd, 1); in icm_tr_disconnect_xdomain_paths()
1136 return icm_tr_xdomain_tear_down(tb, xd, 2); in icm_tr_disconnect_xdomain_paths()
1147 struct tb_xdomain *xd; in __icm_tr_device_connected() local
1179 0, 0, 0, boot); in __icm_tr_device_connected()
1196 xd = tb_xdomain_find_by_route(tb, route); in __icm_tr_device_connected()
1197 if (xd) { in __icm_tr_device_connected()
1198 remove_xdomain(xd); in __icm_tr_device_connected()
1199 tb_xdomain_put(xd); in __icm_tr_device_connected()
1209 sizeof(pkg->ep_name), pkg->connection_id, 0, 0, 0, in __icm_tr_device_connected()
1248 struct tb_xdomain *xd; in icm_tr_xdomain_connected() local
1257 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_tr_xdomain_connected()
1258 if (xd) { in icm_tr_xdomain_connected()
1259 if (xd->route == route) { in icm_tr_xdomain_connected()
1260 update_xdomain(xd, route, 0); in icm_tr_xdomain_connected()
1261 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1265 remove_xdomain(xd); in icm_tr_xdomain_connected()
1266 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1270 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_connected()
1271 if (xd) { in icm_tr_xdomain_connected()
1272 remove_xdomain(xd); in icm_tr_xdomain_connected()
1273 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1293 add_xdomain(sw, route, &pkg->local_uuid, &pkg->remote_uuid, 0, 0); in icm_tr_xdomain_connected()
1302 struct tb_xdomain *xd; in icm_tr_xdomain_disconnected() local
1307 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_disconnected()
1308 if (xd) { in icm_tr_xdomain_disconnected()
1309 remove_xdomain(xd); in icm_tr_xdomain_disconnected()
1310 tb_xdomain_put(xd); in icm_tr_xdomain_disconnected()
1366 if (cap > 0) { in icm_ar_is_supported()
1379 return pcie2cio_write(tb_priv(tb), TB_CFG_SWITCH, 0, 0x50, BIT(9)); in icm_ar_cio_reset()
1413 memset(&reply, 0, sizeof(reply)); in icm_ar_driver_ready()
1427 return 0; in icm_ar_driver_ready()
1439 memset(&reply, 0, sizeof(reply)); in icm_ar_get_route()
1449 return 0; in icm_ar_get_route()
1460 memset(&reply, 0, sizeof(reply)); in icm_ar_get_boot_acl()
1469 for (i = 0; i < nuuids; i++) { in icm_ar_get_boot_acl()
1472 uuid[0] = reply.acl[i].uuid_lo; in icm_ar_get_boot_acl()
1475 if (uuid[0] == 0xffffffff && uuid[1] == 0xffffffff) { in icm_ar_get_boot_acl()
1477 uuid[0] = 0; in icm_ar_get_boot_acl()
1478 uuid[1] = 0; in icm_ar_get_boot_acl()
1479 } else if (uuid[0] != 0 || uuid[1] != 0) { in icm_ar_get_boot_acl()
1481 uuid[2] = 0xffffffff; in icm_ar_get_boot_acl()
1482 uuid[3] = 0xffffffff; in icm_ar_get_boot_acl()
1501 for (i = 0; i < nuuids; i++) { in icm_ar_set_boot_acl()
1509 request.acl[i].uuid_lo = 0xffffffff; in icm_ar_set_boot_acl()
1510 request.acl[i].uuid_hi = 0xffffffff; in icm_ar_set_boot_acl()
1513 if (uuid[2] != 0xffffffff || uuid[3] != 0xffffffff) in icm_ar_set_boot_acl()
1516 request.acl[i].uuid_lo = uuid[0]; in icm_ar_set_boot_acl()
1521 memset(&reply, 0, sizeof(reply)); in icm_ar_set_boot_acl()
1530 return 0; in icm_ar_set_boot_acl()
1543 memset(&reply, 0, sizeof(reply)); in icm_icl_driver_ready()
1553 return 0; in icm_icl_driver_ready()
1561 pci_read_config_dword(nhi->pdev, VS_CAP_10, &uuid[0]); in icm_icl_set_uuid()
1563 uuid[2] = 0xffffffff; in icm_icl_set_uuid()
1564 uuid[3] = 0xffffffff; in icm_icl_set_uuid()
1580 tb_dbg(tb, "ICM rtd3 veto=0x%08x\n", pkg->veto_reason); in icm_icl_rtd3_veto()
1665 res = tb_cfg_read_raw(tb->ctl, &tmp, 0, 0, TB_CFG_SWITCH, in __icm_driver_ready()
1666 0, 1, 100); in __icm_driver_ready()
1668 return 0; in __icm_driver_ready()
1709 return 0; in icm_firmware_start()
1722 return 0; in icm_firmware_start()
1739 return 0; in icm_reset_phy_port()
1767 return 0; in icm_reset_phy_port()
1820 nhi_mailbox_cmd(nhi, NHI_MAILBOX_ALLOW_ALL_DEVS, 0); in icm_firmware_init()
1824 if (ret < 0) in icm_firmware_init()
1836 ret = icm_reset_phy_port(tb, 0); in icm_firmware_init()
1843 return 0; in icm_firmware_init()
1859 return 0; in icm_driver_ready()
1872 tb->nboot_acl = 0; in icm_driver_ready()
1874 return 0; in icm_driver_ready()
1884 nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); in icm_suspend()
1885 return 0; in icm_suspend()
1917 return 0; in complete_rpm()
2001 nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); in icm_runtime_suspend()
2002 return 0; in icm_runtime_suspend()
2009 return 0; in icm_runtime_suspend_switch()
2020 return 0; in icm_runtime_resume_switch()
2030 return 0; in icm_runtime_resume()
2039 tb->root_switch = tb_switch_alloc_safe_mode(tb, &tb->dev, 0); in icm_start()
2041 tb->root_switch = tb_switch_alloc(tb, &tb->dev, 0); in icm_start()
2067 nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); in icm_stop()
2072 return nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DISCONNECT_PCIE_PATHS, 0); in icm_disconnect_pcie_paths()