clk_bulk_put_all(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… clk_bulk_put_all(9) β€” the kernel API manual, bestie edition

okay so this page is from the Kernel API Manual, and the star of the show is clk_bulk_put_all(9) β€” literally the "free all the clock source" girlie ✨


🌸 NAME 🌸

clk_bulk_put_all β€” "free" all the clock source πŸŽ€ (yes the quotes are doing heavy lifting there, they're in the original, we respect them)


πŸ¦‹ SYNOPSIS πŸ¦‹

void clk_bulk_put_all (int num_clks , struct clk_bulk_data *clks );

πŸ’– ARGUMENTS πŸ’–

  • num_clks β€” the number of clk_bulk_data πŸ‘‘ like, how many of them there are
  • clks β€” the clk_bulk_data table of consumer πŸ“ the actual table, the consumer's table

✨ NOTE ✨

okay this part is important, no cap πŸ™ˆ

drivers must ensure that all clk_bulk_enable calls made on this clock source are balanced by clk_bulk_disable calls prior to calling this function. like, balanced. every enable has its disable, before you even think about calling this. it's giving consequences πŸ’€

also clk_bulk_put_all should not be called from within interrupt context. 🚫 just don't. not the vibe.

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./include/linux/clk.h

the whole friend group πŸ’œ β€” 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_bulk_disable(9), clk_get_rate(9), clk_put(9), clk_bulk_put(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)


and that's the whole page, bestie 🫢 go balance your enables and disables, ily, mwah πŸ’‹

this little cutie lives in ./include/linux, dated October 2026, and yes the page itself is literally called clk_bulk_put_all(9) β€” iconic, no notes πŸ‘‘β­

πŸ“¦ where this page comes from