STRUCT DRM_DP_MST_PORT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct drm_dp_mst_port(9) πŸ’…

okay so bestie, we're in the Kernel API Manual today and the star of the show is struct drm_dp_mst_port β€” literally the main character of MST topology. grab a strawberry drink πŸ“ and let's get into it.


✨ NAME ✨

struct drm_dp_mst_port β€” MST port. that's it, that's the vibe. short, iconic, no notes. πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole struct, copied exactly because we do not mess with source code:

struct drm_dp_mst_port {
    struct kref topology_kref;
    struct kref malloc_kref;
  #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS);
    struct drm_dp_mst_topology_ref_history topology_ref_history;
  #endif;
    u8 port_num;
    bool input;
    bool mcs;
    bool ddps;
    u8 pdt;
    bool ldps;
    u8 dpcd_rev;
    u8 num_sdp_streams;
    u8 num_sdp_stream_sinks;
    uint16_t full_pbn;
    struct list_head next;
    struct drm_dp_mst_branch *mstb;
    struct drm_dp_aux aux;
    struct drm_dp_aux *passthrough_aux;
    struct drm_dp_mst_branch *parent;
    struct drm_connector *connector;
    struct drm_dp_mst_topology_mgr *mgr;
    const struct drm_edid *cached_edid;
    bool fec_capable;
 };

like, look at all those fields. gorgeous. every single one gets an intro below, no skipping. 🫢


πŸ’– Members πŸ’–

  • topology_kref β€” the refcount for this port's lifetime in the topology. lowkey only the DP MST helpers should be touching this one, so hands off unless that's you. no cap.
  • malloc_kref β€” refcount for the memory allocation that contains this structure. peep drm_dp_mst_get_port_malloc and drm_dp_mst_put_port_malloc for the whole story. πŸŽ€
  • topology_ref_history β€” a history of each topology reference/dereference. it's giving receipts. see CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS. (and yes, that's the one wrapped in the #if above 😌)
  • port_num β€” port number. simple, effective, slays.
  • input β€” says whether this port is an input port. protected by drm_dp_mst_topology_mgr.base.lock. πŸ”’
  • mcs β€” message capability status, per the DP 1.2 spec. protected by drm_dp_mst_topology_mgr.base.lock.
  • ddps β€” DisplayPort Device Plug Status, DP 1.2. protected by drm_dp_mst_topology_mgr.base.lock.
  • pdt β€” Peer Device Type. protected by drm_dp_mst_topology_mgr.base.lock.
  • ldps β€” Legacy Device Plug Status. protected by drm_dp_mst_topology_mgr.base.lock.
  • dpcd_rev β€” the DPCD revision of the device sitting on this port. protected by drm_dp_mst_topology_mgr.base.lock.
  • num_sdp_streams β€” number of simultaneous streams. protected by drm_dp_mst_topology_mgr.base.lock.
  • num_sdp_stream_sinks β€” number of stream sinks. protected by drm_dp_mst_topology_mgr.base.lock.
  • full_pbn β€” max possible bandwidth for this port. protected by drm_dp_mst_topology_mgr.base.lock.
  • next β€” link to the next port on this branch device. the chain continues πŸ”—
  • mstb β€” the branch device connected to this port, if there is one. for reading, consider it protected by drm_dp_mst_topology_mgr.lock. BUT β€” and this is the tea β˜• β€” there are exactly two exceptions: drm_dp_mst_topology_mgr.up_req_work and drm_dp_mst_topology_mgr.work. those two don't grab drm_dp_mst_topology_mgr.lock while reading, but they're also the only updaters of this list, and drm_dp_mst_topology_mgr.probe_lock keeps them from writing at the same time. teamwork, honestly. 🧚
  • aux β€” the i2c aux transport used to talk to the device connected to this port. protected by drm_dp_mst_topology_mgr.base.lock.
  • passthrough_aux β€” the parent aux that DSC pass-through requests get sent to, and it's only set if DSC pass-through is even possible. conditional icon ✨
  • parent β€” the branch device parent of this port. family tree moment 🌈
  • connector β€” the DRM connector this port is connected to. protected by drm_dp_mst_topology_mgr.base.lock.
  • mgr β€” the topology manager this port lives under. its whole landlord, basically.
  • cached_edid β€” for DP logical ports β€” it makes tiling work by making sure the EDID for all connectors gets read immediately. iykyk πŸ’…
  • fec_capable β€” a bool saying whether FEC can be supported up to that point in the MST topology. yes bestie, up to that point. πŸ“

🌸 Description 🌸

This structure represents an MST port endpoint on a device somewhere in the MST topology. that's the whole pitch. iconic behavior, honestly. πŸ‘‘


⭐ SEE ALSO ⭐


go read the header file, bestie. it's right there and it's the whole source of truth. 🫑

and that's the page!! πŸ’œ this one came from ./include/drm/display, dated October 2026, and it's filed under struct drm_dp_mst_port(9). mwah, bye, ily, go read your kernel headers πŸŽ€πŸ’–

πŸ“¦ where this page comes from