devm_clk_bu...ional_enable(9)
okay bestie, welcome to devm_clk_bu...ional_enable(9) from the Kernel API Manual β yes the title is doing its little ellipsis thing, and we're about to get into it. β¨
π NAME π
devm_clk_bulk_get_optional_enable β get and enable optional bulk clocks (managed). That's the whole vibe: optional bulk clocks, managed edition π
.
πΈ SYNOPSIS πΈ
int devm_clk_bulk_get_optional_enable (struct device *dev , int num_clks
, struct clk_bulk_data *clks );
π¦ ARGUMENTS π¦
devβ device for clock "consumer". (Yes, "consumer" in quotes, that's the original flex.)num_clksβ the number ofclk_bulk_data.clksβ pointer to theclk_bulk_datatable of consumer.
β¨ DESCRIPTION β¨
Okay so this one behaves the same as devm_clk_bulk_get_optional but also prepares and enables the clocks in one operation with management. The clks will automatically be disabled, unprepared and freed when the device is unbound. Managed cleanup? We love to see it π«Ά.
π₯ RETURN π₯
It returns 0 if all clocks specified in the clk_bulk_data table are obtained and enabled successfully, or for any clk there was no clk provider available. Otherwise it returns a valid IS_ERR condition containing errno. No cap, that's the return contract.
π SEE ALSO π
Kernel file ./include/linux/clk.h β and the whole reference squad is:
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_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).
And that's the page, bestie: source/version ./include/linux, dated October 2026, straight from the Kernel API Manual π. Go get those optional bulk clocks enabled, 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