clk_bulk_disable(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– clk_bulk_disable πŸ’–

okay bestie, welcome to the Kernel API Manual entry for clk_bulk_disable β€” this is the "we're so done with these clocks" girlie ✨


🌸 NAME 🌸

clk_bulk_disable β€” tell the system that the whole set of clks is no longer required 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

void clk_bulk_disable (int num_clks , const struct clk_bulk_data *clks );

πŸŽ€ ARGUMENTS πŸŽ€

  • num_clks β€” the number of clk_bulk_data (yes queen, the count πŸ’…)
  • clks β€” the clk_bulk_data table of the consumer (the actual list, the main character πŸ‘‘)

✨ DESCRIPTION ✨

so the whole vibe here is: you're informing the system that a set of clks is no longer required by a driver, and it may be shut down. literally just telling the kernel "we're good, you can power down now" πŸ’€

May be called from atomic contexts. β€” yes, she's flexible like that, no cap.

Implementation detail: if the set of clks is shared between multiple drivers, then clk_bulk_enable calls must be balanced by the same number of clk_bulk_disable calls for the clock source to actually be disabled. it's giving ✨balance✨ β€” skip one and the clock just stays on, lowkey embarrassing πŸ™ˆ


🧚 SEE ALSO 🧚

Kernel file ./include/linux/clk.h

clk notifier callback types(9), struct clk_notifier(9), struct clk_notifier_data(9), struct clk_bulk_data(9), clk_notifier_register(9), clk_notifier_unregister(9), devm_clk_notifier_register(9), clk_get_accuracy(9), clk_set_phase(9), clk_get_phase(9), clk_set_duty_cycle(9), clk_get_scaled_duty_cycle(9), clk_is_match(9), clk_rate_exclusive_get(9), devm_clk_rate_exclusive_get(9), clk_rate_exclusive_put(9), clk_save_context(9), clk_restore_context(9), clk_prepare(9), clk_unprepare(9), clk_is_enabled_when_prepared(9), clk_get(9), clk_bulk_get(9), clk_bulk_get_all(9), clk_bulk_get_optional(9), devm_clk_bulk_get(9), devm_clk_bulk_get_optional(9), devm_clk_bulk_get_enable(9), devm_clk_bulk_get_optional_enable(9), devm_clk_bulk_get_all(9), devm_clk_bulk_get_all_enabled(9), devm_clk_get(9), devm_clk_get_prepared(9), devm_clk_get_enabled(9), devm_clk_get_optional(9), devm_clk_get_optional_prepared(9), devm_clk_get_optional_enabled(9), devm_clk_get_optional_enabled_with_rate(9), devm_get_clk_from_child(9), clk_enable(9), clk_bulk_enable(9), clk_disable(9), clk_get_rate(9), clk_put(9), clk_bulk_put(9), clk_bulk_put_all(9), devm_clk_put(9), clk_round_rate(9), clk_set_rate(9), clk_set_rate_exclusive(9), clk_has_parent(9), clk_set_rate_range(9), clk_set_min_rate(9), clk_set_max_rate(9), clk_set_parent(9), clk_get_parent(9), clk_get_sys(9), clk_drop_range(9), clk_get_optional(9)

that's a whole friend group, go say hi to all of them fr fr 🫢


πŸ’– signed, sealed, delivered πŸ’– β€” this page lives in ./include/linux and it's dated October 2026. slay, go disable some clocks responsibly bestie πŸ’…βœ¨

πŸ“¦ where this page comes from