dev_pm_opp_find_key_exact(9)
π dev_pm_opp_find_key_exact π
okay bestie so this is a page from the Kernel API Manual and it's literally all about dev_pm_opp_find_key_exact β searching an OPP table for a key set that matches exactly. no fuzzy vibes, no approximation, exact only. periodt. β¨
πΈ NAME πΈ
dev_pm_opp_find_key_exact β search for an OPP with an exact key set π―
π¦ SYNOPSIS π¦
struct dev_pm_opp * dev_pm_opp_find_key_exact (struct device *dev ,
struct dev_pm_opp_key *key , bool available );
three args, one return, zero excuses. slay. π
π ARGUMENTS π
devβ the device you're hunting the OPP for π«Άkeyβ the OPP key set you want to match, like exactly exactlyavailableβtrue/falseβ whether you're matching for an available OPP or not π
β¨ DESCRIPTION β¨
So what it does is: it searches for an exact match of the key set in the OPP table. that's it, that's the whole vibe check. no cap. π
π₯ RETURN π₯
A matching opp on success β yay π β otherwise you get an ERR_PTR in case of error π. The possible error values are:
EINVALβ for bad pointers πERANGEβ no match found for the search πENODEVβ if the device isn't found in the list of registered devices π§
π€ NOTE π€
So the deal is: then the match is for an exact matching key and is available in the stored OPP table. If false, the match is for an exact key which is not available. π
This gives you a whole mechanism to enable an OPP that isn't available currently β or the opposite as well. iconic behaviour honestly. β
β οΈ listen bestie, important: callers are required to call dev_pm_opp_put for the returned OPP after use. don't forget, or it's giving leak energy ππ
π SEE ALSO π
Kernel file ./drivers/opp/core.c plus this whole friend group right here:
_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_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_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)
and that's the whole page bestie!! π this one lives in ./drivers/opp, it's from October 2026, and it's part of the Kernel API Manual β go forth and match those keys exactly, 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