dc_enable_dcmode_clk_limit(9)
π
dc_enable_dcmode_clk_limit(9) β a Kernel API Manual moment π
okay so bestie, we're in the Kernel API Manual today and this one is lowkey niche but honestly kind of important if you care about your laptop not melting while unplugged. it's giving "power management but make it dramatic." let's get into it β¨
πΈ NAME πΈ
dc_enable_dcmode_clk_limit β lower clocks in dc (battery) mode
like, literally the whole point: clocks go down when you're running on battery. no cap.
π¦ SYNOPSIS π¦
void dc_enable_dcmode_clk_limit (struct dc *dc , bool enable );
that's it. that's the whole vibe. a void function taking a struct dc * and a bool. short queen energy π
π DESCRIPTION π
so some SoCs define, like, additional clock limits when they're in DC mode. (DC = battery mode here, keep up bestie, not the comics company π)
the DM β that's the Display Manager, the display manager of it all β should invoke this function when the platform undergoes a power source transition, so that DC can apply or unapply the limit accordingly. plug in β unapply. unplug β apply. balance restored π§
β οΈ heads up though: this interface may be disruptive to the onscreen content. so likeβ¦ not a "call it for funsies" situation. it's giving flicker, it's giving visual chaos, it's giving "why did my screen just do that." you've been warned π
π ARGUMENTS π
dcβ pointer to the dc of the dm calling this. (yes it says "dc of the dm," yes it's a little inception-coded, no we don't make the rules π«Ά)enableβTrue= transition to DC mode,false= transition back to AC mode. so like,trueis "we're on battery now, throttle bestie," andfalseis "we're plugged in, live your truth." note the shoutyTrueand the lowercasefalseβ that's exactly how the original has it, don't come for me π
β CONTEXT β
when does this even get called? good question, love that you asked π
- Triggered by the OS through the DM interface, or manually by escape calls.
- You need to hold a
dclockwhen doing so.
that second bullet is not optional, bestie. hold the lock. hold it. no β¨ shortcuts β¨.
π RETURN π
none β it's a void function. no return value, no surprises, no little gift at the end. just vibes and a clock limit π
π SEE ALSO π
okay this is the part where the manpage just goes absolutely feral and lists everything. so here it is, all of it, in order, no skips, because we don't do that here π₯
- the Kernel file
./drivers/gpu/drm/amd/display/dc/core/dc.cβ go readOverview(9) dc_stream_get_last_used_drr_vtotal(9)dc_stream_configure_crc(9)dc_stream_get_crc(9)dc_stream_adjust_vmin_vmax(9)dc_commit_state_no_check(9)dc_commit_streams(9)dc_check_state_update(9)dc_check_update_surfaces_for_stream(9)update_seamless_boot_flags(9)update_planes_and_stream_state(9)dc_check_address_only_update(9)build_dmub_cmd_list(9)could_mpcc_tree_change_for_active_pipes(9)commit_minimal_transition_state_in_dc_update(9)commit_minimal_transition_state(9)dc_update_state(9)dc_update_planes_and_stream(9)dc_is_dmub_outbox_supported(9)dc_enable_dmub_notifications(9)dc_enable_dmub_outbox(9)dc_process_dmub_aux_transfer_async(9)dc_process_dmub_set_config_async(9)dc_process_dmub_set_mst_slots(9)dc_process_dmub_dpia_set_tps_notification(9)dc_process_dmub_dpia_hpd_int_enable(9)dc_print_dmub_diagnostic_data(9)dc_disable_accelerated_mode(9)dc_notify_vsync_int_state(9)dc_set_edp_power(9)dc_get_power_profile_for_dc_state(9)dc_get_det_buffer_size_from_state(9)dc_get_host_router_index(9)should_commit_intermediate_context(9)dc_update_probes_prepare(9)dc_update_probes_execute(9)
like, thirty-something references. she ate and left no crumbs. iykyk π
mwah, that's the page! π source/version is from ./drivers/gpu/drm/amd/display/... and it's dated October 2026, so mark your calendars bestie β this manpage said "see you next fall" πΈ and yes, the footer is literally the same dc_enable_dcmode_clk_limit(9) we started with. full circle moment π«Άβ¨
π¦ 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