devm_clk_bulk_get_enable(9)
π devm_clk_bulk_get_enable π
okay so bestie, welcome to the Kernel API Manual π β yes we're literally in the kernel docs rn, stay with me.
β¨ NAME β¨
devm_clk_bulk_get_enable β grab a whole squad of clocks and turn them on, all managed for you π
πΈ SYNOPSIS πΈ
int devm_clk_bulk_get_enable (struct device *dev , int num_clks ,
struct clk_bulk_data *clks );
π¦ ARGUMENTS π¦
devβ the device that's being the clock "consumer" here, aka the one thirsty for clocks π«Άnum_clksβ how manyclk_bulk_dataentries we're working with, the headcount basicallyclksβ pointer to the consumer's very ownclk_bulk_datatable, the roster π
π DESCRIPTION π
So it behaves exactly the same as devm_clk_bulk_get, except it also prepares and enables the clocks β all in one single operation, with management baked in π. The clks will automatically get disabled, unprepared and freed when the device is unbound. Like, it cleans up after itself, no cap, main character energy.
π RETURN π
Returns 0 if every single clock in the clk_bulk_data table is obtained and enabled successfully β slay β¨. Otherwise it returns a valid IS_ERR condition containing errno, so bestie, please check it π.
π SEE ALSO π
Kernel file ./include/linux/clk.h β and here's the whole extended friend group, no skipping:
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(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_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, go enable some clocks π
brought to you by the lovely folks at./include/linux, dated October 2026 β this page is literally calleddevm_clk_bulk_get_enable(9), iconic, no notes π§ββοΈβ
π¦ 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