drm_dp_aux_register(9)
π drm_dp_aux_register(9) β the Kernel API Manual glow-up π
okay so bestie, welcome to the Kernel API Manual entry for drm_dp_aux_register(9) β yes that's the title, yes it's giving "display port aux channel registration" main character energy, and yes we're gonna get through it together. grab a strawberry π and let's go.
β¨ NAME β¨
drm_dp_aux_register β the function that initialises and registers your aux channel. it's literally both things. iconic behavior honestly π
πΈ SYNOPSIS πΈ
int drm_dp_aux_register (struct drm_dp_aux *aux );
that's it. one function. one pointer. she's simple but she's powerful π
π¦ ARGUMENTS π¦
auxβ the DisplayPort AUX channel. that's the whole vibe. it's astruct drm_dp_aux *and she's the star of the show β¨
π₯ DESCRIPTION π₯
so here's the tea, bestie. this function automatically calls drm_dp_aux_init if that hasn't been done yet. convenient? yes. but there are RULES π€
you should only call this once the parent of aux, drm_dp_aux.dev, is initialized. do not come for this function before her parent is ready, she will not handle it well.
π«Ά for devices that are grandparents of their AUX channels
in this case, drm_dp_aux.dev will typically be the drm_connector device which corresponds to aux. for these devices, the advice is literally:
- call
drm_dp_aux_registerindrm_connector_funcs.late_register - and likewise call
drm_dp_aux_unregisterindrm_connector_funcs.early_unregister
β οΈ functions which don't follow this will likely Oops when CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV is enabled. not a cute Oops. a kernel Oops π so please, follow the pattern.
π§ for devices where the AUX channel is independent
okay so for devices where the AUX channel is a device that exists independently of the drm_device that uses it β think SoCs and bridge devices, iykyk β the recommendation is:
- call
drm_dp_aux_registerafter adrm_devicehas been assigned todrm_dp_aux.drm_dev - and likewise call
drm_dp_aux_unregisteronce thedrm_deviceshould no longer be associated with the AUX channel (e.g. on bridge detach)
like, clean break, no messy strings attached π
β drivers that need the aux channel EARLY
if your driver needs to use the aux channel before either of the two points mentioned above, then you need to call drm_dp_aux_init in order to use the AUX channel before registration. periodt.
π return value
Returns 0 on success or a negative error code on failure. that's the whole vibe check: zero = slay, negative = not slay π
π SEE ALSO π
okay this list is LONG, so buckle up bestie, we're listing every single one because nobody gets left behind π«Ά
- Kernel file
./drivers/gpu/drm/display/drm_dp_helper.cdp helpers(9) drm_dp_phy_name(9)drm_dp_lttpr_wake_timeout_setup(9)- dp helpers(9)
drm_dp_dpcd_probe(9)drm_dp_dpcd_set_powered(9)drm_dp_dpcd_set_probe(9)drm_dp_dpcd_read(9)drm_dp_dpcd_write(9)drm_dp_dpcd_read_link_status(9)drm_dp_dpcd_read_phy_link_status(9)drm_dp_link_power_up(9)drm_dp_link_power_down(9)drm_dp_dpcd_write_payload(9)drm_dp_dpcd_clear_payload(9)drm_dp_dpcd_poll_act_handled(9)drm_dp_downstream_is_type(9)drm_dp_downstream_is_tmds(9)drm_dp_send_real_edid_checksum(9)drm_dp_read_dpcd_caps(9)drm_dp_read_downstream_info(9)drm_dp_downstream_max_dotclock(9)drm_dp_downstream_max_tmds_clock(9)drm_dp_downstream_min_tmds_clock(9)drm_dp_downstream_max_bpc(9)drm_dp_downstream_420_passthrough(9)drm_dp_downstream_444_to_420_conversion(9)drm_dp_downstream_rgb_to_ycbcr_conversion(9)drm_dp_downstream_mode(9)drm_dp_downstream_id(9)drm_dp_downstream_debug(9)drm_dp_subconnector_type(9)drm_dp_set_subconnector_property(9)drm_dp_read_sink_count_cap(9)drm_dp_read_sink_count(9)drm_dp_remote_aux_init(9)drm_dp_aux_init(9)drm_dp_aux_unregister(9)drm_dp_psr_setup_time(9)drm_dp_start_crc(9)drm_dp_stop_crc(9)drm_dp_read_desc(9)drm_dp_dump_lttpr_desc(9)drm_dp_dsc_sink_bpp_incr(9)drm_dp_dsc_slice_count_to_mask(9)drm_dp_dsc_sink_slice_count_mask(9)drm_dp_dsc_sink_max_slice_count(9)drm_dp_dsc_sink_line_buf_depth(9)drm_dp_dsc_sink_supported_input_bpcs(9)drm_dp_dsc_sink_max_slice_throughput(9)drm_dp_dsc_branch_max_overall_throughput(9)drm_dp_dsc_branch_max_line_width(9)drm_dp_read_lttpr_common_caps(9)drm_dp_read_lttpr_phy_caps(9)drm_dp_lttpr_count(9)drm_dp_lttpr_max_link_rate(9)drm_dp_lttpr_set_transparent_mode(9)drm_dp_lttpr_init(9)drm_dp_lttpr_max_lane_count(9)drm_dp_lttpr_voltage_swing_level_3_supported(9)drm_dp_lttpr_pre_emphasis_level_3_supported(9)drm_dp_get_phy_test_pattern(9)drm_dp_set_phy_test_pattern(9)drm_dp_as_sdp_supported(9)drm_dp_vsc_sdp_supported(9)drm_dp_vsc_sdp_pack(9)drm_dp_get_pcon_max_frl_bw(9)drm_dp_pcon_frl_prepare(9)drm_dp_pcon_is_frl_ready(9)drm_dp_pcon_frl_configure_1(9)drm_dp_pcon_frl_configure_2(9)drm_dp_pcon_reset_frl_config(9)drm_dp_pcon_frl_enable(9)drm_dp_pcon_hdmi_link_active(9)drm_dp_pcon_hdmi_link_mode(9)drm_dp_pcon_hdmi_frl_link_error_count(9)drm_dp_pcon_pps_default(9)drm_dp_pcon_pps_override_buf(9)drm_edp_backlight_set_level(9)drm_edp_backlight_enable(9)drm_edp_backlight_disable(9)drm_edp_backlight_init(9)drm_panel_dp_aux_backlight(9)drm_dp_link_symbol_cycles(9)drm_dp_bw_overhead(9)drm_dp_bw_channel_coding_efficiency(9)drm_dp_max_dprx_data_rate(9)
like I said. LONG. but we got through it together π
and that's the page!! before you go, the cute little sign-off details: this came from the source at ./drivers/gpu/drm/display, dated October 2026, and it's the drm_dp_aux_register(9) page from the Kernel API Manual. no cap, that's everything. now go register your aux channel responsibly π¦β¨π
π¦ 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