__clk_notify(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

Okay bestie, this is __clk_notify(9) from the Kernel API Manual β€” the little helper whose whole job is to call the clk notifier chain. πŸ’–

πŸ¦‹ SYNOPSIS πŸ¦‹

int __clk_notify (struct clk_core *core , unsigned long msg , unsigned long old_rate , unsigned long new_rate );

πŸ’… ARGUMENTS πŸ’…

  • core β€” the clk that is changing rate. That’s the main character here. πŸ‘‘
  • msg β€” clk notifier type (see include/linux/clk.h). Yes, the header file said what it said. 🫢
  • old_rate β€” old clk rate. The before pic. πŸ™ˆ
  • new_rate β€” new clk rate. The glow-up. ✨

πŸŽ€ DESCRIPTION πŸŽ€

Okay so what happens is: it triggers a notifier call chain on the clk rate-change notification for 'clk'. It passes a pointer to the struct clk and the previous and current rates to the notifier callback. That’s the vibe β€” very β€œtell the group chat that the rate changed” energy. πŸ’…

Bestie, this one is intended to be called by internal clock code only. It’s giving staff-only door, not public API. No cap. πŸ”₯

If all went well, it returns NOTIFY_DONE from the last driver called. But if a driver returns NOTIFY_STOP or NOTIFY_BAD, it returns that immediately β€” no waiting around, periodt. πŸ’€

πŸ”₯ SEE ALSO πŸ”₯

The kernel file is ./drivers/clk/clk.c. The whole SEE ALSO crew is: 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_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), of_clk_init(9).

xoxo, your kernel bestie πŸ’– β€” source/version: ./drivers/clk Β· date: October 2026 Β· page: __clk_notify(9). πŸŽ€

πŸ“¦ where this page comes from