Lines Matching refs:xd
544 static int icm_fr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_fr_approve_xdomain_paths() argument
552 request.link_info = xd->depth << ICM_LINK_INFO_DEPTH_SHIFT | xd->link; in icm_fr_approve_xdomain_paths()
553 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_fr_approve_xdomain_paths()
555 request.transmit_path = xd->transmit_path; in icm_fr_approve_xdomain_paths()
556 request.transmit_ring = xd->transmit_ring; in icm_fr_approve_xdomain_paths()
557 request.receive_path = xd->receive_path; in icm_fr_approve_xdomain_paths()
558 request.receive_ring = xd->receive_ring; in icm_fr_approve_xdomain_paths()
572 static int icm_fr_disconnect_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_fr_disconnect_xdomain_paths() argument
577 phy_port = tb_phy_port_from_link(xd->link); in icm_fr_disconnect_xdomain_paths()
665 struct tb_xdomain *xd; in add_xdomain() local
669 xd = tb_xdomain_alloc(sw->tb, &sw->dev, route, local_uuid, remote_uuid); in add_xdomain()
670 if (!xd) in add_xdomain()
673 xd->link = link; in add_xdomain()
674 xd->depth = depth; in add_xdomain()
676 tb_port_at(route, sw)->xdomain = xd; in add_xdomain()
678 tb_xdomain_add(xd); in add_xdomain()
685 static void update_xdomain(struct tb_xdomain *xd, u64 route, u8 link) in update_xdomain() argument
687 xd->link = link; in update_xdomain()
688 xd->route = route; in update_xdomain()
689 xd->is_unplugged = false; in update_xdomain()
692 static void remove_xdomain(struct tb_xdomain *xd) in remove_xdomain() argument
696 sw = tb_to_switch(xd->dev.parent); in remove_xdomain()
697 tb_port_at(xd->route, sw)->xdomain = NULL; in remove_xdomain()
698 tb_xdomain_remove(xd); in remove_xdomain()
711 struct tb_xdomain *xd; in icm_fr_device_connected() local
803 xd = tb_xdomain_find_by_link_depth(tb, link, depth); in icm_fr_device_connected()
804 if (xd) { in icm_fr_device_connected()
805 remove_xdomain(xd); in icm_fr_device_connected()
806 tb_xdomain_put(xd); in icm_fr_device_connected()
882 struct tb_xdomain *xd; in icm_fr_xdomain_connected() local
898 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_fr_xdomain_connected()
899 if (xd) { in icm_fr_xdomain_connected()
902 xd_phy_port = phy_port_from_route(xd->route, xd->depth); in icm_fr_xdomain_connected()
905 if (xd->depth == depth && xd_phy_port == phy_port) { in icm_fr_xdomain_connected()
906 update_xdomain(xd, route, link); in icm_fr_xdomain_connected()
907 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
917 remove_xdomain(xd); in icm_fr_xdomain_connected()
918 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
926 xd = tb_xdomain_find_by_link_depth(tb, link, depth); in icm_fr_xdomain_connected()
927 if (!xd) { in icm_fr_xdomain_connected()
932 xd = tb_xdomain_find_by_link_depth(tb, dual_link, in icm_fr_xdomain_connected()
935 if (xd) { in icm_fr_xdomain_connected()
936 remove_xdomain(xd); in icm_fr_xdomain_connected()
937 tb_xdomain_put(xd); in icm_fr_xdomain_connected()
968 struct tb_xdomain *xd; in icm_fr_xdomain_disconnected() local
975 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_fr_xdomain_disconnected()
976 if (xd) { in icm_fr_xdomain_disconnected()
977 remove_xdomain(xd); in icm_fr_xdomain_disconnected()
978 tb_xdomain_put(xd); in icm_fr_xdomain_disconnected()
1100 static int icm_tr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_tr_approve_xdomain_paths() argument
1108 request.route_hi = upper_32_bits(xd->route); in icm_tr_approve_xdomain_paths()
1109 request.route_lo = lower_32_bits(xd->route); in icm_tr_approve_xdomain_paths()
1110 request.transmit_path = xd->transmit_path; in icm_tr_approve_xdomain_paths()
1111 request.transmit_ring = xd->transmit_ring; in icm_tr_approve_xdomain_paths()
1112 request.receive_path = xd->receive_path; in icm_tr_approve_xdomain_paths()
1113 request.receive_ring = xd->receive_ring; in icm_tr_approve_xdomain_paths()
1114 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_tr_approve_xdomain_paths()
1128 static int icm_tr_xdomain_tear_down(struct tb *tb, struct tb_xdomain *xd, in icm_tr_xdomain_tear_down() argument
1138 request.route_hi = upper_32_bits(xd->route); in icm_tr_xdomain_tear_down()
1139 request.route_lo = lower_32_bits(xd->route); in icm_tr_xdomain_tear_down()
1140 memcpy(&request.remote_uuid, xd->remote_uuid, sizeof(*xd->remote_uuid)); in icm_tr_xdomain_tear_down()
1154 static int icm_tr_disconnect_xdomain_paths(struct tb *tb, struct tb_xdomain *xd) in icm_tr_disconnect_xdomain_paths() argument
1158 ret = icm_tr_xdomain_tear_down(tb, xd, 1); in icm_tr_disconnect_xdomain_paths()
1163 return icm_tr_xdomain_tear_down(tb, xd, 2); in icm_tr_disconnect_xdomain_paths()
1175 struct tb_xdomain *xd; in __icm_tr_device_connected() local
1225 xd = tb_xdomain_find_by_route(tb, route); in __icm_tr_device_connected()
1226 if (xd) { in __icm_tr_device_connected()
1227 remove_xdomain(xd); in __icm_tr_device_connected()
1228 tb_xdomain_put(xd); in __icm_tr_device_connected()
1293 struct tb_xdomain *xd; in icm_tr_xdomain_connected() local
1302 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_tr_xdomain_connected()
1303 if (xd) { in icm_tr_xdomain_connected()
1304 if (xd->route == route) { in icm_tr_xdomain_connected()
1305 update_xdomain(xd, route, 0); in icm_tr_xdomain_connected()
1306 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1310 remove_xdomain(xd); in icm_tr_xdomain_connected()
1311 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1315 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_connected()
1316 if (xd) { in icm_tr_xdomain_connected()
1317 remove_xdomain(xd); in icm_tr_xdomain_connected()
1318 tb_xdomain_put(xd); in icm_tr_xdomain_connected()
1347 struct tb_xdomain *xd; in icm_tr_xdomain_disconnected() local
1352 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_disconnected()
1353 if (xd) { in icm_tr_xdomain_disconnected()
1354 remove_xdomain(xd); in icm_tr_xdomain_disconnected()
1355 tb_xdomain_put(xd); in icm_tr_xdomain_disconnected()