free_clk(9)
π free_clk(9) β Kernel API Manual
okay bestie, welcome to free_clk(9), a page from the Kernel API Manual. she's short, she's sweet, she's literally four lines of business and one iconic warning. let's get into it π
β¨ NAME β¨
free_clk β free a clk consumer. that's it. that's the whole job. releasing your lil clock consumer back into the wild π¦
πΈ SYNOPSIS πΈ
void free_clk (struct clk *clk );
no return value, no drama, just vibes and a pointer. β¨
π«Ά ARGUMENTS π«Ά
clkβ the clk consumer you're freeing. yeah. that one. the one you've been holding onto. let her go π
π₯ DESCRIPTION π₯
so here's the tea, and you need to hear it: this function assumes the clk has already been unlinked from the clk_core consumer list. like, already done. beforehand. not your problem, not this function's problem. π
bestie, do not skip the unlink step. free_clk is not doing it for you, she is not your cleanup crew, she's just the free-er. the assumption is the whole bit. π
π SEE ALSO π
the whole clk cinematic universe, fr fr β go read the kernel file ./drivers/clk/clk.c and then absolutely binge these:
struct clk_core(9), clk_pm_runtime_get_all(9), clk_pm_runtime_put_all(9), clk_core_get(9), clk_determine_rate_noop(9), clk_rate_exclusive_put(9), clk_rate_exclusive_get(9), clk_unprepare(9), clk_prepare(9), clk_disable(9), clk_gate_restore_context(9), clk_save_context(9), clk_restore_context(9), clk_enable(9), clk_is_enabled_when_prepared(9), clk_hw_init_rate_request(9), clk_hw_forward_rate_request(9), __clk_determine_rate(9), clk_hw_round_rate(9), clk_round_rate(9), __clk_notify(9), __clk_recalc_accuracies(9), clk_get_accuracy(9),
__clk_recalc_rates(9), clk_get_rate(9), clk_hw_get_parent_index(9), __clk_speculate_rates(9), clk_set_rate(9), clk_set_rate_exclusive(9), clk_set_rate_range(9), clk_set_min_rate(9), clk_set_max_rate(9), clk_get_parent(9), clk_has_parent(9), clk_set_parent(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_debug_register(9), clk_debug_init(9),
__clk_core_init(9), clk_core_link_consumer(9), clk_core_unlink_consumer(9), alloc_clk(9), clk_hw_create_clk(9), clk_hw_get_clk(9), dev_or_parent_of_node(9), clk_register(9), clk_hw_register(9), clk_unregister(9), clk_hw_unregister(9), devm_clk_register(9), devm_clk_hw_register(9), devm_clk_hw_get_clk(9), clk_notifier_register(9), clk_notifier_unregister(9),
struct of_clk_provider(9), of_clk_add_provider(9), of_clk_add_hw_provider(9), devm_of_clk_add_hw_provider(9), of_clk_del_provider(9), of_parse_clkspec(9), of_clk_get_from_provider(9), of_clk_get_by_name(9), of_clk_get_parent_count(9), of_clk_parent_fill(9), of_clk_detect_critical(9), of_clk_init(9)
like I said. the whole universe. go off, queen πβ¨
that's the page, bestie β courtesy of the source tree at ./drivers/clk, stamped October 2026, and filed under free_clk(9). now go unlink that consumer first, mwah ππ
π¦ 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