usb4_port_sb_write(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… usb4_port_sb_write β€” a kernel API manual moment

okay so first things first: this is a page from the Kernel API Manual, and today's main character is usb4_port_sb_write(9). she writes to sideband registers. that's it, that's the vibe. let's get into it bestie πŸŽ€


✨ NAME ✨

usb4_port_sb_write β€” Write to sideband register

like, literally just write to a sideband register. no cap.


🌸 SYNOPSIS 🌸

int usb4_port_sb_write (struct tb_port *port , enum usb4_sb_target
target , u8 index , u8 reg , const void *buf , u8 size );

six args, one int coming back at you. let's meet the cast 🫢


πŸ¦‹ ARGUMENTS πŸ¦‹

  • port β€” the USB4 port you're writing to. the whole point, honestly.
  • target β€” which sideband target we're talking to.
  • index β€” the Retimer index, but only if target is USB4_SB_TARGET_RETIMER. otherwise she's just sitting there, ignore her.
  • reg β€” the sideband register index. this is where the data goes, iykyk.
  • buf β€” the data you're writing. the good stuff.
  • size β€” size of buf. yes, she needs to know how much.

πŸ’œ DESCRIPTION πŸ’œ

Writes buf to sideband register reg.

that's the whole description. short, sweet, iconic. main character energy, zero filler ✨


πŸ”₯ RETURN πŸ”₯

0 on success, negative errno otherwise. so if you get a negative number back, that's not a slay, that's a vibe check failure 😭 check the errno.


πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./drivers/thunderbolt/usb4.c β€” and honestly this list is giving "whole extended friend group," so here's everyone:

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_pcie_down(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_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!! 🧚 credits roll: this came out of ./drivers/thunderbolt, dated October 2026, and it's filed under usb4_port_sb_write(9). mwah πŸ’– go write some sideband registers responsibly bestie πŸ“

πŸ“¦ where this page comes from