dev_pm_opp_f...loor_indexed(9)
πΈ dev_pm_opp_find_freq_floor_indexed π
okay so bestie, welcome to the Kernel API Manual β yes this is that dev_pm_opp_f...loor_indexed(9) page, the one with the truncated name that looks like it fell asleep mid-word π don't worry, we're getting into it together π«Ά
β¨ NAME β¨
dev_pm_opp_find_freq_floor_indexed β bestie, this one searches for a rounded floor frequency for the clock that corresponds to the index π
π¦ SYNOPSIS π¦
struct dev_pm_opp * dev_pm_opp_find_freq_floor_indexed (struct device
*dev , unsigned long *freq , u32 index );
like, that's the whole vibe right there β¨
π ARGUMENTS π
devβ the Device we're doing this whole operation for π«Άfreqβ the start frequency, that's where the search kicks off πindexβ the clock index π
π DESCRIPTION π
So the way this works: it searches for the matching floor available OPP for the clock corresponding to the specified index β starting from a start freq, for a device β¨ ngl, "floor" here is doing a lot of work and it's kind of iconic for it.
Caller obligations, no cap: you literally have to call dev_pm_opp_put for the returned OPP after you use it π₯ don't just vibe with it forever, that's a leak bestie π
π RETURN π
- On a win: the matching
*opp, and it refreshes*freqaccordingly π β¨ - Otherwise: it returns
ERR_PTRin case of error β and you should be handling that withIS_ERRπ
the possible error return values, laid out cute:
EINVALβ for bad pointer π«ERANGEβ no match found for search πENODEVβ if the device is not found in the list of registered devices π
π§ SEE ALSO π§
Kernel file ./drivers/opp/core.c, plus this whole friend group of manpages β every single one, we're not skipping anybody, everybody's invited to the group chat π
_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_ceil_indexed(9)dev_pm_opp_find_freq_floor(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)
and that's the page bestie π this one lives over in ./drivers/opp and it's dated October 2026 β yeah, from the future, main character energy fr fr π go call dev_pm_opp_put when you're done, ily, bye π
β¨
π¦ 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