usb4_port_sb_read(9)
π usb4_port_sb_read(9) β from the Kernel API Manual, bestie β¨
Okay so picture this: it's giving kernel API, it's giving Thunderbolt, and it's literally the usb4_port_sb_read(9) page from the Kernel API Manual. Buckle up, we're reading a sideband register today π
πΈ NAME πΈ
usb4_port_sb_read β read from a sideband register, no cap π
β¨ SYNOPSIS β¨
int usb4_port_sb_read (struct tb_port *port , enum usb4_sb_target target
, u8 index , u8 reg , void *buf , u8 size );
That's the whole vibe. Six args, one int back. Slay π
π¦ ARGUMENTS π¦
portβ the USB4 port you're reading from. Your main character πtargetβ which sideband target we're talking to π―indexβ the retimer index. Only matters iftargetisUSB4_SB_TARGET_RETIMER, so likeβ¦ conditional queen behavior πregβ the sideband register index. This is the register, the one we came for β¨bufβ the buffer where the sideband data gets copied. It catches the data, basically the emotional support buffer π«Άsizeβ size ofbuf. Gotta know how much room we have, fr fr π
π₯ DESCRIPTION π₯
So what does it do? It reads data from the sideband register reg, and copies that data into buf. That's it. That's the whole plot. Honestly iconic of it to be this straightforward π
β RETURN β
0on success β we love a clean win π- a negative errno otherwise β not the vibe, but at least it tells you why π
π SEE ALSO π
It lives in the kernel file ./drivers/thunderbolt/usb4.c, and bestie, the friend group is huge. Full list, nobody left behind π
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_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)
Okay that's the whole page, you ate that π
β¨ This one came from the kernel hood ./drivers/thunderbolt, dated October 2026, and it answers to the name usb4_port_sb_read(9) β mwah, go read a register, bestie π¦π
π¦ 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