tb_pci_port_enable(9)
π tb_pci_port_enable β like, the port-wrangler of Thunderbolt
Okay bestie, first things first: we're in the Kernel API Manual today, and this little function is tb_pci_port_enable β section (9), obviously, because it's kernel-internal and only the coolest subsystems get to live there. β¨
This is the function that flips the switch on a PCIe adapter port. That's it. That's the whole job. But she does it flawlessly. π
πΈ NAME
tb_pci_port_enable β enable the PCIe adapter port, no cap π
β¨ SYNOPSIS
int tb_pci_port_enable (struct tb_port *port , bool enable );
Yes the spacing is exactly like that, don't @ me, that's the generated manpage vibe and we respect it. π«Ά
π¦ ARGUMENTS
portβ the PCIe port you wanna enable. This is your main character. Give her astruct tb_port *and let her cook. πenableβ aboolthat says "on" or "off". Like the world's tiniest light switch: enable/disable the PCIe adapter. One boolean, so much power. π
π RETURN
0on success (slay π―)- negative
errnootherwise (it's giving "something went wrong, check the errno, bestie" π)
π SEE ALSO
Right, buckle up buttercup, because this cross-reference list is long and we're not skipping a single one. All of these live in the kernel file ./drivers/thunderbolt/switch.c β that's the source of truth, iykyk. π₯
π§ The port girlies (general + hopid department)
tb_switch_nvm_read(9)tb_port_state(9)tb_wait_for_port(9)tb_port_add_nfc_credits(9)tb_port_clear_counter(9)tb_port_unlock(9)tb_port_enable(9)tb_port_disable(9)tb_port_reset(9)tb_port_alloc_in_hopid(9)tb_port_alloc_out_hopid(9)tb_port_release_in_hopid(9)tb_port_release_out_hopid(9)tb_next_port_on_path(9)
π¦ Link speed / width / lane-bonding besties
tb_port_get_link_speed(9)tb_port_get_link_generation(9)tb_port_get_link_width(9)tb_port_width_supported(9)tb_port_set_link_width(9)tb_port_set_lane_bonding(9)tb_port_lane_bonding_enable(9)tb_port_lane_bonding_disable(9)tb_port_wait_for_link_width(9)tb_port_update_credits(9)
π "Is it even on tho" squad
π DisplayPort crew (dp, the glamorous ones)
tb_dp_port_hpd_is_active(9)tb_dp_port_hpd_clear(9)tb_dp_port_set_hops(9)tb_dp_port_is_enabled(9)tb_dp_port_enable(9)
β The whole switch extended universe
tb_switch_reset(9)tb_switch_wait_for_bit(9)tb_switch_alloc(9)tb_switch_alloc_safe_mode(9)tb_switch_configure(9)tb_switch_configuration_valid(9)tb_switch_lane_bonding_enable(9)tb_switch_lane_bonding_disable(9)tb_switch_set_link_width(9)tb_switch_configure_link(9)tb_switch_unconfigure_link(9)tb_switch_add(9)tb_switch_remove(9)tb_sw_set_unplugged(9)tb_switch_resume(9)tb_switch_suspend(9)tb_switch_query_dp_resource(9)tb_switch_alloc_dp_resource(9)tb_switch_dealloc_dp_resource(9)tb_switch_find_by_link_depth(9)tb_switch_find_by_uuid(9)tb_switch_find_by_route(9)tb_switch_find_port(9)tb_switch_pcie_l1_enable(9)tb_switch_xhci_connect(9)tb_switch_xhci_disconnect(9)
Fr fr, that's every single one. Nothing dropped, nothing merged, nothing invented. Screenshot it, bookmark it, tattoo it on your forearm, whatever works. πΈ
π the sign-off
Bye bestie! π This iconic little page ships out of ./drivers/thunderbolt and is dated October 2026 β yes, the future, because Thunderbolt stays ahead. Go enable a port, treat yourself. πβ¨π
π¦ 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