Lines Matching refs:tb

106 	bool (*is_supported)(struct tb *tb);
107 int (*cio_reset)(struct tb *tb);
108 int (*get_mode)(struct tb *tb);
109 int (*get_route)(struct tb *tb, u8 link, u8 depth, u64 *route);
110 void (*save_devices)(struct tb *tb);
111 int (*driver_ready)(struct tb *tb,
114 void (*set_uuid)(struct tb *tb);
115 void (*device_connected)(struct tb *tb,
117 void (*device_disconnected)(struct tb *tb,
119 void (*xdomain_connected)(struct tb *tb,
121 void (*xdomain_disconnected)(struct tb *tb,
123 void (*rtd3_veto)(struct tb *tb, const struct icm_pkg_header *hdr);
129 struct tb *tb; member
184 static inline struct tb *icm_to_tb(struct icm *icm) in icm_to_tb()
186 return ((void *)icm - sizeof(struct tb)); in icm_to_tb()
299 static int icm_request(struct tb *tb, const void *request, size_t request_size, in icm_request() argument
303 struct icm *icm = tb_priv(tb); in icm_request()
324 res = tb_cfg_request_sync(tb->ctl, req, timeout_msec); in icm_request()
343 static void icm_postpone_rescan(struct tb *tb) in icm_postpone_rescan() argument
345 struct icm *icm = tb_priv(tb); in icm_postpone_rescan()
348 mod_delayed_work(tb->wq, &icm->rescan_work, in icm_postpone_rescan()
352 static void icm_veto_begin(struct tb *tb) in icm_veto_begin() argument
354 struct icm *icm = tb_priv(tb); in icm_veto_begin()
359 pm_runtime_get(&tb->dev); in icm_veto_begin()
363 static void icm_veto_end(struct tb *tb) in icm_veto_end() argument
365 struct icm *icm = tb_priv(tb); in icm_veto_end()
370 pm_runtime_mark_last_busy(&tb->dev); in icm_veto_end()
371 pm_runtime_put_autosuspend(&tb->dev); in icm_veto_end()
386 struct tb *tb = xd->tb; in icm_xdomain_activated() local
388 nhi_port = tb_switch_find_port(tb->root_switch, TB_TYPE_NHI); in icm_xdomain_activated()
392 tb_tunnel_event(tb, TB_TUNNEL_ACTIVATED, TB_TUNNEL_DMA, in icm_xdomain_activated()
395 tb_tunnel_event(tb, TB_TUNNEL_DEACTIVATED, TB_TUNNEL_DMA, in icm_xdomain_activated()
399 static void icm_dp_event(struct tb *tb) in icm_dp_event() argument
401 tb_tunnel_event(tb, TB_TUNNEL_CHANGED, TB_TUNNEL_DP, NULL, NULL); in icm_dp_event()
404 static bool icm_fr_is_supported(struct tb *tb) in icm_fr_is_supported() argument
420 static int icm_fr_get_route(struct tb *tb, u8 link, u8 depth, u64 *route) in icm_fr_get_route() argument
434 ret = icm_request(tb, &request, sizeof(request), switches, in icm_fr_get_route()
471 static void icm_fr_save_devices(struct tb *tb) in icm_fr_save_devices() argument
473 nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_SAVE_DEVS, 0); in icm_fr_save_devices()
477 icm_fr_driver_ready(struct tb *tb, enum tb_security_level *security_level, in icm_fr_driver_ready() argument
487 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_fr_driver_ready()
498 static int icm_fr_approve_switch(struct tb *tb, struct tb_switch *sw) in icm_fr_approve_switch() argument
512 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_fr_approve_switch()
518 tb_warn(tb, "PCIe tunnel creation failed\n"); in icm_fr_approve_switch()
525 static int icm_fr_add_switch_key(struct tb *tb, struct tb_switch *sw) in icm_fr_add_switch_key() argument
539 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_fr_add_switch_key()
545 tb_warn(tb, "Adding key to switch failed\n"); in icm_fr_add_switch_key()
552 static int icm_fr_challenge_switch_key(struct tb *tb, struct tb_switch *sw, in icm_fr_challenge_switch_key() argument
567 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_fr_challenge_switch_key()
582 static int icm_fr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd, in icm_fr_approve_xdomain_paths() argument
601 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_fr_approve_xdomain_paths()
613 static int icm_fr_disconnect_xdomain_paths(struct tb *tb, struct tb_xdomain *xd, in icm_fr_disconnect_xdomain_paths() argument
626 nhi_mailbox_cmd(tb->nhi, cmd, 1); in icm_fr_disconnect_xdomain_paths()
628 nhi_mailbox_cmd(tb->nhi, cmd, 2); in icm_fr_disconnect_xdomain_paths()
637 struct tb *tb = parent_sw->tb; in alloc_switch() local
640 sw = tb_switch_alloc(tb, &parent_sw->dev, route); in alloc_switch()
642 tb_warn(tb, "failed to allocate switch at %llx\n", route); in alloc_switch()
712 xd = tb_xdomain_alloc(sw->tb, &sw->dev, route, local_uuid, remote_uuid); in add_xdomain()
745 icm_fr_device_connected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_fr_device_connected() argument
752 struct icm *icm = tb_priv(tb); in icm_fr_device_connected()
759 icm_postpone_rescan(tb); in icm_fr_device_connected()
772 tb_info(tb, "switch at %u.%u was rejected by ICM firmware because topology limit exceeded\n", in icm_fr_device_connected()
777 sw = tb_switch_find_by_uuid(tb, &pkg->ep_uuid); in icm_fr_device_connected()
799 ret = icm->get_route(tb, link, depth, &route); in icm_fr_device_connected()
801 tb_err(tb, "failed to update route string for switch at %u.%u\n", in icm_fr_device_connected()
831 sw = tb_switch_find_by_link_depth(tb, link, depth); in icm_fr_device_connected()
837 sw = tb_switch_find_by_link_depth(tb, dual_link, depth); in icm_fr_device_connected()
845 xd = tb_xdomain_find_by_link_depth(tb, link, depth); in icm_fr_device_connected()
851 parent_sw = tb_switch_find_by_link_depth(tb, link, depth - 1); in icm_fr_device_connected()
853 tb_err(tb, "failed to find parent switch for %u.%u\n", in icm_fr_device_connected()
858 ret = icm->get_route(tb, link, depth, &route); in icm_fr_device_connected()
860 tb_err(tb, "failed to find route string for switch at %u.%u\n", in icm_fr_device_connected()
893 icm_fr_device_disconnected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_fr_device_disconnected() argument
905 tb_warn(tb, "invalid topology %u.%u, ignoring\n", link, depth); in icm_fr_device_disconnected()
909 sw = tb_switch_find_by_link_depth(tb, link, depth); in icm_fr_device_disconnected()
911 tb_warn(tb, "no switch exists at %u.%u, ignoring\n", link, in icm_fr_device_disconnected()
927 icm_fr_xdomain_connected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_fr_xdomain_connected() argument
941 tb_warn(tb, "invalid topology %u.%u, ignoring\n", link, depth); in icm_fr_xdomain_connected()
947 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_fr_xdomain_connected()
975 xd = tb_xdomain_find_by_link_depth(tb, link, depth); in icm_fr_xdomain_connected()
981 xd = tb_xdomain_find_by_link_depth(tb, dual_link, in icm_fr_xdomain_connected()
994 sw = tb_switch_find_by_route(tb, route); in icm_fr_xdomain_connected()
1000 sw = tb_switch_find_by_link_depth(tb, link, depth); in icm_fr_xdomain_connected()
1002 tb_warn(tb, "no switch exists at %u.%u, ignoring\n", link, in icm_fr_xdomain_connected()
1013 icm_fr_xdomain_disconnected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_fr_xdomain_disconnected() argument
1024 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_fr_xdomain_disconnected()
1031 static int icm_tr_cio_reset(struct tb *tb) in icm_tr_cio_reset() argument
1033 return pcie2cio_write(tb_priv(tb), TB_CFG_SWITCH, 0, 0x777, BIT(1)); in icm_tr_cio_reset()
1037 icm_tr_driver_ready(struct tb *tb, enum tb_security_level *security_level, in icm_tr_driver_ready() argument
1047 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_tr_driver_ready()
1066 static int icm_tr_approve_switch(struct tb *tb, struct tb_switch *sw) in icm_tr_approve_switch() argument
1080 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_tr_approve_switch()
1086 tb_warn(tb, "PCIe tunnel creation failed\n"); in icm_tr_approve_switch()
1093 static int icm_tr_add_switch_key(struct tb *tb, struct tb_switch *sw) in icm_tr_add_switch_key() argument
1108 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_tr_add_switch_key()
1114 tb_warn(tb, "Adding key to switch failed\n"); in icm_tr_add_switch_key()
1121 static int icm_tr_challenge_switch_key(struct tb *tb, struct tb_switch *sw, in icm_tr_challenge_switch_key() argument
1137 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_tr_challenge_switch_key()
1152 static int icm_tr_approve_xdomain_paths(struct tb *tb, struct tb_xdomain *xd, in icm_tr_approve_xdomain_paths() argument
1171 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_tr_approve_xdomain_paths()
1183 static int icm_tr_xdomain_tear_down(struct tb *tb, struct tb_xdomain *xd, in icm_tr_xdomain_tear_down() argument
1198 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_tr_xdomain_tear_down()
1209 static int icm_tr_disconnect_xdomain_paths(struct tb *tb, struct tb_xdomain *xd, in icm_tr_disconnect_xdomain_paths() argument
1215 ret = icm_tr_xdomain_tear_down(tb, xd, 1); in icm_tr_disconnect_xdomain_paths()
1220 ret = icm_tr_xdomain_tear_down(tb, xd, 2); in icm_tr_disconnect_xdomain_paths()
1229 __icm_tr_device_connected(struct tb *tb, const struct icm_pkg_header *hdr, in __icm_tr_device_connected() argument
1240 icm_postpone_rescan(tb); in __icm_tr_device_connected()
1259 tb_info(tb, "switch at %llx was rejected by ICM firmware because topology limit exceeded\n", in __icm_tr_device_connected()
1264 sw = tb_switch_find_by_uuid(tb, &pkg->ep_uuid); in __icm_tr_device_connected()
1279 sw = tb_switch_find_by_route(tb, route); in __icm_tr_device_connected()
1286 xd = tb_xdomain_find_by_route(tb, route); in __icm_tr_device_connected()
1292 parent_sw = tb_switch_find_by_route(tb, get_parent_route(route)); in __icm_tr_device_connected()
1294 tb_err(tb, "failed to find parent switch for %llx\n", route); in __icm_tr_device_connected()
1325 icm_tr_device_connected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_tr_device_connected() argument
1327 __icm_tr_device_connected(tb, hdr, false); in icm_tr_device_connected()
1331 icm_tr_device_disconnected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_tr_device_disconnected() argument
1340 sw = tb_switch_find_by_route(tb, route); in icm_tr_device_disconnected()
1342 tb_warn(tb, "no switch exists at %llx, ignoring\n", route); in icm_tr_device_disconnected()
1356 icm_tr_xdomain_connected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_tr_xdomain_connected() argument
1364 if (!tb->root_switch) in icm_tr_xdomain_connected()
1369 xd = tb_xdomain_find_by_uuid(tb, &pkg->remote_uuid); in icm_tr_xdomain_connected()
1382 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_connected()
1393 sw = tb_switch_find_by_route(tb, route); in icm_tr_xdomain_connected()
1399 sw = tb_switch_find_by_route(tb, get_parent_route(route)); in icm_tr_xdomain_connected()
1401 tb_warn(tb, "no switch exists at %llx, ignoring\n", route); in icm_tr_xdomain_connected()
1410 icm_tr_xdomain_disconnected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_tr_xdomain_disconnected() argument
1419 xd = tb_xdomain_find_by_route(tb, route); in icm_tr_xdomain_disconnected()
1456 static bool icm_ar_is_supported(struct tb *tb) in icm_ar_is_supported() argument
1459 struct icm *icm = tb_priv(tb); in icm_ar_is_supported()
1466 if (icm_firmware_running(tb->nhi)) in icm_ar_is_supported()
1475 upstream_port = get_upstream_port(tb->nhi->pdev); in icm_ar_is_supported()
1492 static int icm_ar_cio_reset(struct tb *tb) in icm_ar_cio_reset() argument
1494 return pcie2cio_write(tb_priv(tb), TB_CFG_SWITCH, 0, 0x50, BIT(9)); in icm_ar_cio_reset()
1497 static int icm_ar_get_mode(struct tb *tb) in icm_ar_get_mode() argument
1499 struct tb_nhi *nhi = tb->nhi; in icm_ar_get_mode()
1519 icm_ar_driver_ready(struct tb *tb, enum tb_security_level *security_level, in icm_ar_driver_ready() argument
1529 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_ar_driver_ready()
1545 static int icm_ar_get_route(struct tb *tb, u8 link, u8 depth, u64 *route) in icm_ar_get_route() argument
1555 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_ar_get_route()
1567 static int icm_ar_get_boot_acl(struct tb *tb, uuid_t *uuids, size_t nuuids) in icm_ar_get_boot_acl() argument
1576 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_ar_get_boot_acl()
1604 static int icm_ar_set_boot_acl(struct tb *tb, const uuid_t *uuids, in icm_ar_set_boot_acl() argument
1637 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_ar_set_boot_acl()
1649 icm_icl_driver_ready(struct tb *tb, enum tb_security_level *security_level, in icm_icl_driver_ready() argument
1659 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_icl_driver_ready()
1675 static void icm_icl_set_uuid(struct tb *tb) in icm_icl_set_uuid() argument
1677 struct tb_nhi *nhi = tb->nhi; in icm_icl_set_uuid()
1685 tb->root_switch->uuid = kmemdup(uuid, sizeof(uuid), GFP_KERNEL); in icm_icl_set_uuid()
1689 icm_icl_device_connected(struct tb *tb, const struct icm_pkg_header *hdr) in icm_icl_device_connected() argument
1691 __icm_tr_device_connected(tb, hdr, true); in icm_icl_device_connected()
1694 static void icm_icl_rtd3_veto(struct tb *tb, const struct icm_pkg_header *hdr) in icm_icl_rtd3_veto() argument
1699 tb_dbg(tb, "ICM rtd3 veto=0x%08x\n", pkg->veto_reason); in icm_icl_rtd3_veto()
1702 icm_veto_begin(tb); in icm_icl_rtd3_veto()
1704 icm_veto_end(tb); in icm_icl_rtd3_veto()
1707 static bool icm_tgl_is_supported(struct tb *tb) in icm_tgl_is_supported() argument
1714 val = ioread32(tb->nhi->iobase + REG_FW_STS); in icm_tgl_is_supported()
1726 struct tb *tb = n->tb; in icm_handle_notification() local
1727 struct icm *icm = tb_priv(tb); in icm_handle_notification()
1729 mutex_lock(&tb->lock); in icm_handle_notification()
1736 if (tb->root_switch) { in icm_handle_notification()
1739 icm->device_connected(tb, n->pkg); in icm_handle_notification()
1742 icm->device_disconnected(tb, n->pkg); in icm_handle_notification()
1746 icm->xdomain_connected(tb, n->pkg); in icm_handle_notification()
1750 icm->xdomain_disconnected(tb, n->pkg); in icm_handle_notification()
1753 icm_dp_event(tb); in icm_handle_notification()
1756 icm->rtd3_veto(tb, n->pkg); in icm_handle_notification()
1761 mutex_unlock(&tb->lock); in icm_handle_notification()
1767 static void icm_handle_event(struct tb *tb, enum tb_cfg_pkg_type type, in icm_handle_event() argument
1783 n->tb = tb; in icm_handle_event()
1785 queue_work(tb->wq, &n->work); in icm_handle_event()
1789 __icm_driver_ready(struct tb *tb, enum tb_security_level *security_level, in __icm_driver_ready() argument
1792 struct icm *icm = tb_priv(tb); in __icm_driver_ready()
1796 ret = icm->driver_ready(tb, security_level, proto_version, nboot_acl, in __icm_driver_ready()
1799 tb_err(tb, "failed to send driver ready to ICM\n"); in __icm_driver_ready()
1811 res = tb_cfg_read_raw(tb->ctl, &tmp, 0, 0, TB_CFG_SWITCH, in __icm_driver_ready()
1819 tb_err(tb, "failed to read root switch config space, giving up\n"); in __icm_driver_ready()
1823 static int icm_firmware_reset(struct tb *tb, struct tb_nhi *nhi) in icm_firmware_reset() argument
1825 struct icm *icm = tb_priv(tb); in icm_firmware_reset()
1843 return icm->cio_reset(tb); in icm_firmware_reset()
1846 static int icm_firmware_start(struct tb *tb, struct tb_nhi *nhi) in icm_firmware_start() argument
1858 ret = icm_firmware_reset(tb, nhi); in icm_firmware_start()
1875 static int icm_reset_phy_port(struct tb *tb, int phy_port) in icm_reset_phy_port() argument
1877 struct icm *icm = tb_priv(tb); in icm_reset_phy_port()
1943 static int icm_firmware_init(struct tb *tb) in icm_firmware_init() argument
1945 struct icm *icm = tb_priv(tb); in icm_firmware_init()
1946 struct tb_nhi *nhi = tb->nhi; in icm_firmware_init()
1949 ret = icm_firmware_start(tb, nhi); in icm_firmware_init()
1956 ret = icm->get_mode(tb); in icm_firmware_init()
1972 tb_err(tb, "ICM firmware is in wrong mode: %u\n", ret); in icm_firmware_init()
1981 ret = icm_reset_phy_port(tb, 0); in icm_firmware_init()
1984 ret = icm_reset_phy_port(tb, 1); in icm_firmware_init()
1991 static int icm_driver_ready(struct tb *tb) in icm_driver_ready() argument
1993 struct icm *icm = tb_priv(tb); in icm_driver_ready()
1996 ret = icm_firmware_init(tb); in icm_driver_ready()
2001 tb_info(tb, "Thunderbolt host controller is in safe mode.\n"); in icm_driver_ready()
2002 tb_info(tb, "You need to update NVM firmware of the controller before it can be used.\n"); in icm_driver_ready()
2003 tb_info(tb, "For latest updates check https://thunderbolttechnology.net/updates.\n"); in icm_driver_ready()
2007 ret = __icm_driver_ready(tb, &tb->security_level, &icm->proto_version, in icm_driver_ready()
2008 &tb->nboot_acl, &icm->rpm); in icm_driver_ready()
2016 if (tb->nboot_acl > icm->max_boot_acl) in icm_driver_ready()
2017 tb->nboot_acl = 0; in icm_driver_ready()
2020 tb_dbg(tb, "USB4 proxy operations supported\n"); in icm_driver_ready()
2025 static int icm_suspend(struct tb *tb) in icm_suspend() argument
2027 struct icm *icm = tb_priv(tb); in icm_suspend()
2030 icm->save_devices(tb); in icm_suspend()
2032 nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); in icm_suspend()
2109 struct tb *tb = icm_to_tb(icm); in icm_rescan_work() local
2111 mutex_lock(&tb->lock); in icm_rescan_work()
2112 if (tb->root_switch) in icm_rescan_work()
2113 icm_free_unplugged_children(tb->root_switch); in icm_rescan_work()
2114 mutex_unlock(&tb->lock); in icm_rescan_work()
2117 static void icm_complete(struct tb *tb) in icm_complete() argument
2119 struct icm *icm = tb_priv(tb); in icm_complete()
2121 if (tb->nhi->going_away) in icm_complete()
2130 icm_veto_end(tb); in icm_complete()
2131 icm_unplug_children(tb->root_switch); in icm_complete()
2137 __icm_driver_ready(tb, NULL, NULL, NULL, NULL); in icm_complete()
2144 queue_delayed_work(tb->wq, &icm->rescan_work, msecs_to_jiffies(500)); in icm_complete()
2147 static int icm_runtime_suspend(struct tb *tb) in icm_runtime_suspend() argument
2149 nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); in icm_runtime_suspend()
2171 static int icm_runtime_resume(struct tb *tb) in icm_runtime_resume() argument
2177 icm_complete(tb); in icm_runtime_resume()
2181 static int icm_start(struct tb *tb, bool not_used) in icm_start() argument
2183 struct icm *icm = tb_priv(tb); in icm_start()
2187 tb->root_switch = tb_switch_alloc_safe_mode(tb, &tb->dev, 0); in icm_start()
2189 tb->root_switch = tb_switch_alloc(tb, &tb->dev, 0); in icm_start()
2190 if (IS_ERR(tb->root_switch)) in icm_start()
2191 return PTR_ERR(tb->root_switch); in icm_start()
2193 tb->root_switch->no_nvm_upgrade = !icm->can_upgrade_nvm; in icm_start()
2194 tb->root_switch->rpm = icm->rpm; in icm_start()
2197 icm->set_uuid(tb); in icm_start()
2199 ret = tb_switch_add(tb->root_switch); in icm_start()
2201 tb_switch_put(tb->root_switch); in icm_start()
2202 tb->root_switch = NULL; in icm_start()
2208 static void icm_stop(struct tb *tb) in icm_stop() argument
2210 struct icm *icm = tb_priv(tb); in icm_stop()
2213 tb_switch_remove(tb->root_switch); in icm_stop()
2214 tb->root_switch = NULL; in icm_stop()
2215 nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DRV_UNLOADS, 0); in icm_stop()
2220 static int icm_disconnect_pcie_paths(struct tb *tb) in icm_disconnect_pcie_paths() argument
2222 return nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_DISCONNECT_PCIE_PATHS, 0); in icm_disconnect_pcie_paths()
2229 struct tb *tb = icm_to_tb(icm); in icm_usb4_switch_nvm_auth_complete() local
2231 tb_dbg(tb, "NVM_AUTH response for %llx flags %#x status %#x\n", in icm_usb4_switch_nvm_auth_complete()
2235 mutex_lock(&tb->lock); in icm_usb4_switch_nvm_auth_complete()
2239 mutex_unlock(&tb->lock); in icm_usb4_switch_nvm_auth_complete()
2242 static int icm_usb4_switch_nvm_authenticate(struct tb *tb, u64 route) in icm_usb4_switch_nvm_authenticate() argument
2245 struct icm *icm = tb_priv(tb); in icm_usb4_switch_nvm_authenticate()
2275 tb_dbg(tb, "NVM_AUTH request for %llx\n", route); in icm_usb4_switch_nvm_authenticate()
2278 ret = tb_cfg_request(tb->ctl, req, icm_usb4_switch_nvm_auth_complete, in icm_usb4_switch_nvm_authenticate()
2298 struct tb *tb = sw->tb; in icm_usb4_switch_op() local
2299 struct icm *icm = tb_priv(tb); in icm_usb4_switch_op()
2315 return icm_usb4_switch_nvm_authenticate(tb, route); in icm_usb4_switch_op()
2334 ret = icm_request(tb, &request, sizeof(request), &reply, sizeof(reply), in icm_usb4_switch_op()
2358 struct tb *tb = sw->tb; in icm_usb4_switch_nvm_authenticate_status() local
2359 struct icm *icm = tb_priv(tb); in icm_usb4_switch_nvm_authenticate_status()
2370 tb_dbg(tb, "NVM_AUTH found for %llx flags %#x status %#x\n", in icm_usb4_switch_nvm_authenticate_status()
2463 struct tb *icm_probe(struct tb_nhi *nhi) in icm_probe()
2466 struct tb *tb; in icm_probe() local
2468 tb = tb_domain_alloc(nhi, ICM_TIMEOUT, sizeof(struct icm)); in icm_probe()
2469 if (!tb) in icm_probe()
2472 icm = tb_priv(tb); in icm_probe()
2488 tb->cm_ops = &icm_fr_ops; in icm_probe()
2514 tb->cm_ops = &icm_ar_ops; in icm_probe()
2529 tb->cm_ops = &icm_tr_ops; in icm_probe()
2542 tb->cm_ops = &icm_icl_ops; in icm_probe()
2564 tb->cm_ops = &icm_icl_ops; in icm_probe()
2577 tb->cm_ops = &icm_tr_ops; in icm_probe()
2581 if (!icm->is_supported || !icm->is_supported(tb)) { in icm_probe()
2583 tb_domain_put(tb); in icm_probe()
2587 tb_dbg(tb, "using firmware connection manager\n"); in icm_probe()
2589 return tb; in icm_probe()