dev_pm_opp_find_level_ceil(9)
π dev_pm_opp_find_level_ceil (9) β from the Kernel API Manual, bestie β¨
okay so this is dev_pm_opp_find_level_ceil(9) and I'm literally obsessed because it does exactly one thing and does it gorgeously: it finds you a level, but it rounds up. no cap. π
πΈ NAME πΈ
dev_pm_opp_find_level_ceil β search for an rounded up level π
β¨ SYNOPSIS β¨
struct dev_pm_opp * dev_pm_opp_find_level_ceil (struct device *dev ,
unsigned int *level );
that's the whole vibe. two args, one pointer back at you. simple, iconic, no drama. π¦
π«Ά ARGUMENTS π«Ά
devβ the device we're doing this whole operation for. main character energy, honestly. πlevelβ the level you're searching for. like, this is your starting point, bestie.
π₯ RETURN π₯
so here's what happens: it searches for a rounded up match in the opp table, and if it finds one it hands you back a pointer to that matching opp. slay. π
but if something goes wrong? it returns ERR_PTR instead, and you gotta handle that with IS_ERR β this is not a suggestion, it's the rules. π
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 π¬
π§ DESCRIPTION π§
the callers are required to call dev_pm_opp_put for the returned OPP after use. like, no seriously. you took it out, you put it back. that's the whole deal. periodt. β
π SEE ALSO π
kernel file ./drivers/opp/core.c, plus literally the entire extended family of these functions, all of them, in order, don't skip a single one π:
_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_freq_floor_indexed(9)dev_pm_opp_find_level_exact(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)
bestie quick vibe check:ERR_PTRis real,IS_ERRis not optional, anddev_pm_opp_putis your cleanup era. don't fumble it. π«Ά
okay and finally, the cute little sign-off: this one lives in ./drivers/opp, it's dated October 2026, and it's filed under dev_pm_opp_find_level_ceil(9). mwah. πππ¦
π¦ 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