clk_bulk_get(9)
okay bestie, you're looking at the Kernel API Manual page for clk_bulk_get π
β it's literally the "grab a whole squad of clock consumers in one shot" helper. Let's get into it π«Ά
β¨ NAME β¨
clk_bulk_get β lookup and obtain a number of references to clock producer. π
πΈ SYNOPSIS πΈ
int clk_bulk_get (struct device *dev , int num_clks , struct clk_bulk_data *clks );
π ARGUMENTS π
devβ device for clock "consumer" πnum_clksβ the number ofclk_bulk_dataclksβ theclk_bulk_datatable of consumer
π DESCRIPTION π
This helper function lets drivers get several clk consumers in one operation. Iconic. β¨
If any of the clk cannot be acquired, then any clks that were obtained will be freed before returning to the caller. No leaked refs, periodt. π
It returns 0 if all clocks specified in clk_bulk_data table are obtained successfully, or valid IS_ERR condition containing errno. The implementation uses dev and clk_bulk_data.id to determine the clock consumer, and thereby the clock producer. The clock returned is stored in each clk_bulk_data.clk field. Ngl that's the whole mapping vibe. π¦
Drivers must assume that the clock source is not enabled. π¨
clk_bulk_get should not be called from within interrupt context. Like, do not do it, bestie π
π¦ SEE ALSO π¦
Kernel file: ./include/linux/clk.h
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_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)clk_bulk_put_all(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)
That's the whole page, bestie π. Source/version vibes: ./include/linux, Kernel API Manual, page clk_bulk_get(9), dated October 2026. Byeee π«Άβ¨
π¦ 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