usb4_switch_map_pcie_down(9)
π usb4_switch_map_pcie_down β Kernel API Manual β¨
okay so bestie, the manual name is usb4_switch_map_pcie_down(9) and honestly? iconic little helper. let's get into it π«Ά
πΈ NAME πΈ
usb4_switch_map_pcie_down β map a USB4 port to a PCIe downstream adapter. that's it, that's the job π
β¨ SYNOPSIS β¨
struct tb_port * usb4_switch_map_pcie_down (struct tb_switch *sw , const
struct tb_port *port );
look at that signature. it's giving "give me two things and i'll give you a pointer" π₯
π ARGUMENTS π
swβ the USB4 router. your main character struct, literally.portβ the USB4 port. the one we're trying to place on the map πΊοΈ
π DESCRIPTION π
so here's the vibe: USB4 routers have a direct mapping between USB4 ports and PCIe downstream adapters β that's exactly the spot where the PCIe topology gets extended. no cap.
what this function does is simple and slay: hand it a sw and a port, and it returns the corresponding downstream PCIe adapter for you. and if no such mapping was possible? it gives you NULL. not everything works out, and that's okay bestie π
β RETURN β
pointer to struct tb_port β or NULL if it wasn't found. that's the whole deal π
heads up: NULL here is a real, legit answer, not an error vibe. check it before you deref, fr fr π
π¦ SEE ALSO π¦
kernel file ./drivers/thunderbolt/usb4.c, plus the whole friend group π
usb4_switch_check_wakes(9), usb4_switch_setup(9), usb4_switch_configuration_valid(9), usb4_switch_read_uid(9), usb4_switch_drom_read(9), usb4_switch_lane_bonding_possible(9), usb4_switch_set_wake(9), usb4_switch_set_sleep(9), usb4_switch_nvm_sector_size(9), usb4_switch_nvm_read(9), usb4_switch_nvm_set_offset(9), usb4_switch_nvm_write(9), usb4_switch_nvm_authenticate(9), usb4_switch_nvm_authenticate_status(9), usb4_switch_credits_init(9), usb4_switch_query_dp_resource(9), usb4_switch_alloc_dp_resource(9), usb4_switch_dealloc_dp_resource(9), usb4_port_index(9), usb4_switch_map_usb3_down(9), usb4_switch_add_ports(9), usb4_switch_remove_ports(9), usb4_port_unlock(9), usb4_port_hotplug_enable(9), usb4_port_reset(9), usb4_port_configure(9), usb4_port_unconfigure(9), usb4_port_configure_xdomain(9), usb4_port_unconfigure_xdomain(9), usb4_port_sb_read(9), usb4_port_sb_write(9), usb4_port_router_offline(9), usb4_port_router_online(9), usb4_port_enumerate_retimers(9), usb4_port_clx_supported(9), usb4_port_asym_supported(9), usb4_port_asym_set_link_width(9), usb4_port_asym_start(9), usb4_port_margining_caps(9), usb4_port_hw_margin(9), usb4_port_sw_margin(9), usb4_port_sw_margin_errors(9), usb4_port_retimer_set_inbound_sbtx(9), usb4_port_retimer_unset_inbound_sbtx(9), usb4_port_retimer_is_last(9), usb4_port_retimer_is_cable(9), usb4_port_retimer_nvm_sector_size(9), usb4_port_retimer_nvm_set_offset(9), usb4_port_retimer_nvm_write(9), usb4_port_retimer_nvm_authenticate(9), usb4_port_retimer_nvm_authenticate_status(9), usb4_port_retimer_nvm_read(9), usb4_usb3_port_max_link_rate(9), usb4_usb3_port_allocated_bandwidth(9), usb4_usb3_port_allocate_bandwidth(9), usb4_usb3_port_release_bandwidth(9), usb4_dp_port_set_cm_id(9), usb4_dp_port_bandwidth_mode_supported(9), usb4_dp_port_bandwidth_mode_enabled(9), usb4_dp_port_set_cm_bandwidth_mode_supported(9), usb4_dp_port_group_id(9), usb4_dp_port_set_group_id(9), usb4_dp_port_nrd(9), usb4_dp_port_set_nrd(9), usb4_dp_port_granularity(9), usb4_dp_port_set_granularity(9), usb4_dp_port_set_estimated_bandwidth(9), usb4_dp_port_allocated_bandwidth(9), usb4_dp_port_allocate_bandwidth(9), usb4_dp_port_requested_bandwidth(9), usb4_pci_port_set_ext_encapsulation(9), usb4_pci_port_ltssm_state(9)
and that's the page!! this one came from ./drivers/thunderbolt, dated October 2026, and it's filed under the name usb4_switch_map_pcie_down(9) β go read it again, i'll wait πβ¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms