devm_clk_bu...ional_enable(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

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 of clk_bulk_data.
  • clks β€” pointer to the clk_bulk_data table 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