Lines Matching refs:xd
418 static int icm_fr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_fr_approve_xdomain_paths() argument
426 request.link_info = xd->depth << ICM_LINK_INFO_DEPTH_SHIFT | xd->link; in icm_fr_approve_xdomain_paths()
427 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_fr_approve_xdomain_paths()
429 request.transmit_path = xd->transmit_path; in icm_fr_approve_xdomain_paths()
430 request.transmit_ring = xd->transmit_ring; in icm_fr_approve_xdomain_paths()
431 request.receive_path = xd->receive_path; in icm_fr_approve_xdomain_paths()
432 request.receive_ring = xd->receive_ring; in icm_fr_approve_xdomain_paths()
446 static int icm_fr_disconnect_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_fr_disconnect_xdomain_paths() argument
451 phy_port = tb_phy_port_from_link(xd->link); in icm_fr_disconnect_xdomain_paths()
540 struct tb_xdomain *xd; in add_xdomain() local
544 xd = tb_xdomain_alloc(sw->tb, &sw->dev, route, local_uuid, remote_uuid); in add_xdomain()
545 if (!xd) in add_xdomain()
548 xd->link = link; in add_xdomain()
549 xd->depth = depth; in add_xdomain()
551 tb_port_at(route, sw)->xdomain = xd; in add_xdomain()
553 tb_xdomain_add(xd); in add_xdomain()
560 static void update_xdomain(struct tb_xdomain *xd, u64 route, u8 link) in update_xdomain() argument
562 xd->link = link; in update_xdomain()
563 xd->route = route; in update_xdomain()
564 xd->is_unplugged = false; in update_xdomain()
567 static void remove_xdomain(struct tb_xdomain *xd) in remove_xdomain() argument
571 sw = tb_to_switch(xd->dev.parent); in remove_xdomain()
572 tb_port_at(xd->route, sw)->xdomain = NULL; in remove_xdomain()
573 tb_xdomain_remove(xd); in remove_xdomain()
585 struct tb_xdomain *xd; in icm_fr_device_connected() local
674 xd = tb_xdomain_find_by_link_depth(tb, link, depth); in icm_fr_device_connected()
675 if (xd) { in icm_fr_device_connected()
676 remove_xdomain(xd); in icm_fr_device_connected()
677 tb_xdomain_put(xd); in icm_fr_device_connected()
736 struct tb_xdomain *xd; in icm_fr_xdomain_connected() local
752 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_fr_xdomain_connected()
753 if (xd) { in icm_fr_xdomain_connected()
756 xd_phy_port = phy_port_from_route(xd->route, xd->depth); in icm_fr_xdomain_connected()
759 if (xd->depth == depth && xd_phy_port == phy_port) { in icm_fr_xdomain_connected()
760 update_xdomain(xd, route, link); in icm_fr_xdomain_connected()
761 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
771 remove_xdomain(xd); in icm_fr_xdomain_connected()
772 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
780 xd = tb_xdomain_find_by_link_depth(tb, link, depth); in icm_fr_xdomain_connected()
781 if (!xd) { in icm_fr_xdomain_connected()
786 xd = tb_xdomain_find_by_link_depth(tb, dual_link, in icm_fr_xdomain_connected()
789 if (xd) { in icm_fr_xdomain_connected()
790 remove_xdomain(xd); in icm_fr_xdomain_connected()
791 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
820 struct tb_xdomain *xd; in icm_fr_xdomain_disconnected() local
827 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_fr_xdomain_disconnected()
828 if (xd) { in icm_fr_xdomain_disconnected()
829 remove_xdomain(xd); in icm_fr_xdomain_disconnected()
830 tb_xdomain_put(xd); in icm_fr_xdomain_disconnected()
947 static int icm_tr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_tr_approve_xdomain_paths() argument
955 request.route_hi = upper_32_bits(xd->route); in icm_tr_approve_xdomain_paths()
956 request.route_lo = lower_32_bits(xd->route); in icm_tr_approve_xdomain_paths()
957 request.transmit_path = xd->transmit_path; in icm_tr_approve_xdomain_paths()
958 request.transmit_ring = xd->transmit_ring; in icm_tr_approve_xdomain_paths()
959 request.receive_path = xd->receive_path; in icm_tr_approve_xdomain_paths()
960 request.receive_ring = xd->receive_ring; in icm_tr_approve_xdomain_paths()
961 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_tr_approve_xdomain_paths()
975 static int icm_tr_xdomain_tear_down(struct tb *tb, struct tb_xdomain *xd, in icm_tr_xdomain_tear_down() argument
985 request.route_hi = upper_32_bits(xd->route); in icm_tr_xdomain_tear_down()
986 request.route_lo = lower_32_bits(xd->route); in icm_tr_xdomain_tear_down()
987 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_tr_xdomain_tear_down()
1001 static int icm_tr_disconnect_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_tr_disconnect_xdomain_paths() argument
1005 ret = icm_tr_xdomain_tear_down(tb, xd, 1); in icm_tr_disconnect_xdomain_paths()
1010 return icm_tr_xdomain_tear_down(tb, xd, 2); in icm_tr_disconnect_xdomain_paths()
1020 struct tb_xdomain *xd; in icm_tr_device_connected() local
1067 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_device_connected()
1068 if (xd) { in icm_tr_device_connected()
1069 remove_xdomain(xd); in icm_tr_device_connected()
1070 tb_xdomain_put(xd); in icm_tr_device_connected()
1111 struct tb_xdomain *xd; in icm_tr_xdomain_connected() local
1120 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_tr_xdomain_connected()
1121 if (xd) { in icm_tr_xdomain_connected()
1122 if (xd->route == route) { in icm_tr_xdomain_connected()
1123 update_xdomain(xd, route, 0); in icm_tr_xdomain_connected()
1124 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1128 remove_xdomain(xd); in icm_tr_xdomain_connected()
1129 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1133 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_connected()
1134 if (xd) { in icm_tr_xdomain_connected()
1135 remove_xdomain(xd); in icm_tr_xdomain_connected()
1136 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1163 struct tb_xdomain *xd; in icm_tr_xdomain_disconnected() local
1168 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_disconnected()
1169 if (xd) { in icm_tr_xdomain_disconnected()
1170 remove_xdomain(xd); in icm_tr_xdomain_disconnected()
1171 tb_xdomain_put(xd); in icm_tr_xdomain_disconnected()