__clk_recalc_rates(9)
π __clk_recalc_rates(9) β Kernel API Manual π
okay so bestie, welcome to the Kernel API Manual page for __clk_recalc_rates(9) β yes, the double-underscore girlie is the main character here. Weβre about to walk a clk subtree and recalculate rates, and honestly? She ate. β¨
β¨ NAME β¨
__clk_recalc_rates β recalculate all rates in the clk subtree π
πΈ SYNOPSIS πΈ
void __clk_recalc_rates (struct clk_core *core , bool update_req ,
unsigned long msg );
π ARGUMENTS π
coreβ the first clk in the subtree, aka where this whole little walk begins. π«Άupdate_reqβ tells you whetherreq_rateshould be updated with the new rate. no cap, thatβs the whole vibe check for this one.msgβ the notification type (seeinclude/linux/clk.h). iconic little enum-adjacent moment. β¨
π¦ DESCRIPTION π¦
So __clk_recalc_rates walks the subtree of clks starting with core and recalculates rates as it goes. Literally just strolling through the clk subtree, doing rate math, being useful. π
π Important note, bestie: if a clk does not implement the .recalc_rate callback then it is assumed that the clock will take on the rate of its parent. Thatβs the rule, periodt.
__clk_recalc_rates also propagates the POST_RATE_CHANGE notification, if necessary. So yes, sheβs not just recalculating β sheβs also handling the notification business when itβs needed. π₯
π SEE ALSO π
Kernel file ./drivers/clk/clk.c and struct clk_core(9) β plus the whole bestie group chat of clk-related references:
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_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)free_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)
π«Ά thatβs the whole page, bestie β brought to you by the source/version./drivers/clk, datedOctober 2026, and still serving__clk_recalc_rates(9)energy at the very end. πβ¨
π¦ 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