drm_dp_mst_dpcd_read(9)
π NAME π
drm_dp_mst_dpcd_read β okay so this is the one that reads a whole series of bytes straight out of the DPCD via sideband π¦β¨
(it's the drm_dp_mst_dpcd_read(9) entry, from the Kernel API Manual, bestie β that's the whole vibe up top)
β¨ SYNOPSIS β¨
ssize_t drm_dp_mst_dpcd_read (struct drm_dp_aux *aux , unsigned int
offset , void *buffer , size_t size );
π ARGUMENTS π
auxβ the fake sideband AUX CH π yes bestie, fake, that's literally the word in the manpage, don't come for meoffsetβ the address of the (first) register you wanna read πbufferβ where the register values get stored, hand it a place to live πsizeβ how many bytes are inbuffer, the count, the amount, the number fr fr
π₯ DESCRIPTION π₯
So it does exactly the same thing for remote devices via sideband messaging that drm_dp_dpcd_read does for local devices via the actual AUX CH π«
like... same energy, different transport. remote devices get the sideband messaging treatment, local devices get the real AUX CH. that's the whole bit. iykyk π«Ά
β RETURN β
You get back the number of bytes read π β or a negative error code if it failed π (so like, always check, no cap).
π SEE ALSO π
Kernel file ./drivers/gpu/drm/display/drm_dp_mst_topology.c (that's where the lore lives π), plus the whole extended fam β all of these, in order, zero skips:
dp mst helper(9), Branch device and port refcounting(9), drm_dp_mst_get_mstb_malloc(9), drm_dp_mst_put_mstb_malloc(9), drm_dp_mst_get_port_malloc(9), drm_dp_mst_put_port_malloc(9), drm_dp_mst_topology_try_get_mstb(9), drm_dp_mst_topology_get_mstb(9), drm_dp_mst_topology_put_mstb(9), drm_dp_mst_topology_try_get_port(9), drm_dp_mst_topology_get_port(9), drm_dp_mst_topology_put_port(9), drm_dp_mst_dpcd_write(9), drm_dp_mst_connector_late_register(9), drm_dp_mst_connector_early_unregister(9), drm_dp_add_payload_part1(9), drm_dp_remove_payload_part1(9), drm_dp_remove_payload_part2(9), drm_dp_add_payload_part2(9), drm_dp_get_vc_payload_bw(9), drm_dp_read_mst_cap(9), drm_dp_mst_topology_mgr_set_mst(9), drm_dp_mst_topology_queue_probe(9), drm_dp_mst_topology_mgr_suspend(9), drm_dp_mst_topology_mgr_resume(9), drm_dp_mst_hpd_irq_handle_event(9), drm_dp_mst_hpd_irq_send_new_request(9), drm_dp_mst_detect_port(9), drm_dp_mst_edid_read(9), drm_dp_mst_get_edid(9), drm_dp_atomic_find_time_slots(9), drm_dp_atomic_release_time_slots(9), drm_dp_mst_atomic_setup_commit(9), drm_dp_mst_atomic_wait_for_dependencies(9), drm_dp_mst_root_conn_atomic_check(9), drm_dp_mst_update_slots(9), drm_dp_check_act_status(9), drm_dp_calc_pbn_mode(9), drm_dp_mst_dump_topology(9), drm_dp_mst_port_downstream_of_parent(9), drm_dp_mst_add_affected_dsc_crtcs(9), drm_dp_mst_atomic_enable_dsc(9), drm_dp_mst_atomic_check_mgr(9), drm_dp_mst_atomic_check(9), drm_atomic_get_mst_topology_state(9), drm_atomic_get_old_mst_topology_state(9), drm_atomic_get_new_mst_topology_state(9), drm_dp_mst_topology_mgr_init(9), drm_dp_mst_topology_mgr_destroy(9), drm_dp_mst_register_i2c_bus(9), drm_dp_mst_unregister_i2c_bus(9), drm_dp_mst_is_virtual_dpcd(9), drm_dp_mst_aux_for_parent(9), drm_dp_mst_dsc_aux_for_port(9)
like genuinely that's the whole friend group, go say hi ππ
lowkey a tiny page but it's iconic and it does exactly one job and does it well. main character energy, honestly. π
π okay that's a wrap bestie π β this one came from ./drivers/gpu/drm/display (that's the source path, mwah π), stamped October 2026, and the page is drm_dp_mst_dpcd_read(9) in case you forgot already π love u, go read some DPCD bytes πβ¨π¦
π¦ 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