_opp_add_v1(9)
π _opp_add_v1 π
okay so bestie, welcome to the Kernel API Manual β¨ β this is the page for _opp_add_v1, and yes we're gonna get into it π«Ά
β¨ NAME β¨
_opp_add_v1 β allocate a OPP based on v1 bindings π
π¦ SYNOPSIS π¦
int _opp_add_v1 (struct opp_table *opp_table , struct device *dev ,
struct dev_pm_opp_data *data , bool dynamic );
like, that's the whole signature, no cap π₯
π ARGUMENTS π
opp_tableβ the OPP table, bestie. the actual table we're doing stuff to πdevβ the device we're doing this operation for πdataβ the OPP data for the OPP we're adding, literally the payload π¦dynamicβ dynamically added OPPs β¨
πΈ DESCRIPTION πΈ
so what this does is it adds an opp definition to the opp table and returns a status. that's it, that's the vibe π
the opp is made available by default β like it's just there, main character energy β and it can be controlled using the dev_pm_opp_enable/dev_pm_opp_disable functions, and it may be removed by dev_pm_opp_remove. slay π
π NOTE π
heads up bestie: thedynamicparameter impacts OPPs added by thedev_pm_opp_of_add_tableand freed bydev_pm_opp_of_remove_table. iykyk β
π₯ RETURN π₯
0β on success OR duplicate OPPs (both freq and volt are same) andopp->availableβ-EEXISTβ freq are same and volt are different OR duplicate OPPs (both freq and volt are same) and!opp->availableπ-ENOMEMβ memory allocation failure π
π§ SEE ALSO π§
kernel file ./drivers/opp/core.c and, omg, the whole friend group π«Ά:
_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_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)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)
that's the whole page bestie, go forth and add your OPPs π
and for the record, this little gem lives in ./drivers/opp and it's dated October 2026 β periodt ππ
β¨
π¦ 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