devm_clk_bulk_get_enable(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 many clk_bulk_data entries we're working with, the headcount basically
  • clks β€” pointer to the consumer's very own clk_bulk_data table, 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 called devm_clk_bulk_get_enable(9), iconic, no notes πŸ§šβ€β™€οΈβ­
πŸ“¦ where this page comes from