of_clk_init(9)
π of_clk_init(9) π
okay bestie, so this one is from the Kernel API Manual and it's genuinely iconic β it's the function that goes and wakes up all your clock providers from the device tree β¨
πΈ NAME πΈ
of_clk_init β scan and init clock providers from the DT
β¨ SYNOPSIS β¨
void of_clk_init (const struct of_device_id *matches );
π ARGUMENTS π
matchesβ an array of compatible values and the init functions for the providers, matched up all cute together π«Ά
π¦ DESCRIPTION π¦
so the way this works is: of_clk_init scans the device tree looking for clock providers that match, and then it calls their initialization functions. slay.
and the extra iconic part? it also does this by trying to follow the dependencies π like it's not just gonna blindly init stuff, it traces the vibe-check chain, iykyk.
π SEE ALSO π
Kernel file ./drivers/clk/clk.c
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)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)
okay that's the whole list, no skipping, we read every single one ππ
and finally, the lil sign-off: this page lives under ./drivers/clk, it's dated October 2026, and it's brought to you by of_clk_init(9) β periodt. πβ¨π¦
π¦ 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