dev_pm_opp_...ceil_indexed(9)
π dev_pm_opp_...ceil_indexed(9) π
okay bestie, welcome to the Kernel API Manual β¨ this is the page for dev_pm_opp_find_freq_ceil_indexed(9) and honestly? it's giving "find me the next frequency up, but, like, for this specific clock" energy. let's get into it π
β¨ NAME β¨
dev_pm_opp_find_freq_ceil_indexed β search for a rounded ceil freq for the clock corresponding to the index π
like yes, it's a long name. no, we're not shortening it. it's iconic.
π SYNOPSIS π
struct dev_pm_opp * dev_pm_opp_find_freq_ceil_indexed (struct device
*dev , unsigned long *freq , u32 index );
three args, one pointer returned, zero chill π¦
π«Ά ARGUMENTS π«Ά
devβ the Device we're doing this whole operation for π§freqβ the Start frequency, bestie. that's your launch point.indexβ the Clock index π« (which clock we're talking about, iykyk)
π DESCRIPTION π
so what does it actually do? it searches for the matching ceil available OPP for the clock that corresponds to the specified index β starting from a starting freq, for a device πΈ
"ceil" means we round up, not down. we're reaching for the stars, not the floor. β
β οΈ real talk: the callers are required to call dev_pm_opp_put for the returned OPP after use. yes, required. this is not a suggestion, this is the vibe check. if you don't put it back, that's not slay, that's a leak π
π₯ RETURN π₯
it returns the matching *opp and refreshes *freq accordingly β¨ β cute, right? it updates your freq pointer as a little treat π
otherwise it returns ERR_PTR in case of error, and you should handle that using IS_ERR. no cap, always check it. π
the error return values can be:
EINVALβ for bad pointer πERANGEβ no match found for search πENODEVβ if device not found in list of registered devices π«
π SEE ALSO π
the whole friend group π (kernel file ./drivers/opp/core.c):
_find_opp_table(9), dev_pm_opp_get_bw(9), dev_pm_opp_get_voltage(9), dev_pm_opp_get_supplies(9), dev_pm_opp_get_power(9), dev_pm_opp_get_freq_indexed(9), dev_pm_opp_get_level(9), dev_pm_opp_get_required_pstate(9), dev_pm_opp_is_turbo(9), dev_pm_opp_get_max_clock_latency(9), dev_pm_opp_get_max_volt_latency(9), dev_pm_opp_get_max_transition_latency(9), dev_pm_opp_get_suspend_opp_freq(9), dev_pm_opp_get_opp_count(9), dev_pm_opp_find_freq_exact(9), dev_pm_opp_find_key_exact(9), dev_pm_opp_find_freq_exact_indexed(9), dev_pm_opp_find_freq_ceil(9), dev_pm_opp_find_freq_floor(9), dev_pm_opp_find_freq_floor_indexed(9), dev_pm_opp_find_level_exact(9), dev_pm_opp_find_level_ceil(9), dev_pm_opp_find_level_floor(9), dev_pm_opp_find_bw_ceil(9), dev_pm_opp_find_bw_floor(9), dev_pm_opp_set_rate(9), dev_pm_opp_set_opp(9), dev_pm_opp_remove(9), dev_pm_opp_remove_all_dynamic(9), _opp_add_v1(9), dev_pm_opp_set_config(9), dev_pm_opp_clear_config(9), devm_pm_opp_set_config(9), dev_pm_opp_xlate_required_opp(9), dev_pm_opp_xlate_performance_state(9), dev_pm_opp_add_dynamic(9), _opp_set_availability(9), dev_pm_opp_adjust_voltage(9), dev_pm_opp_sync_regulators(9), dev_pm_opp_enable(9), dev_pm_opp_disable(9), dev_pm_opp_register_notifier(9), dev_pm_opp_unregister_notifier(9), dev_pm_opp_remove_table(9)
like, that's the entire squad. go say hi. π«Ά
aaaaand that's the page!! π
this whole thing lives in ./drivers/opp, dated October 2026, and it's filed under dev_pm_opp_...ceil_indexed(9) in the Kernel API Manual. stay hydrated, put your OPPs back, and don't forget your IS_ERR check π¦β¨π
π¦ 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