devm_reset_c...e_deasserted(9)
π devm_reset_control_get_optional_exclusive_deasserted(9)
okay so bestie, welcome to the Kernel API Manual β¨ β this one is a whole mouthful of a function name and honestly it's giving "I ate and left no crumbs" energy, because it does two things at once. Let's get into it π
πΈ NAME πΈ
devm_reset_control_get_optional_exclusive_deasserted β literally just reset_control_get_optional_exclusive() + reset_control_deassert() but with resource management sprinkled on top π«Ά
β¨ SYNOPSIS β¨
struct reset_control *
devm_reset_control_get_optional_exclusive_deasserted (struct device *dev
, const char *id );
that's it, that's the whole vibe check π
π¦ ARGUMENTS π¦
devβ the device that's gonna get reset by the controller. it's the main character here fr fr πidβ the reset line name. yes, the name, not a number, we're being fancy πΈ
π DESCRIPTION π
So what we've got is a managed reset_control_get_optional_exclusive + reset_control_deassert combo meal π β lowkey the best of both worlds.
And here's the iconic part: for reset controllers returned from this function, reset_control_assert + reset_control_put gets called automatically on driver detach π no cap, you don't have to clean up after yourself, the kernel does it for you. that's the devm magic, periodt π
Want more deets? Go peek at devm_reset_control_get_optional_exclusive β it's all there, iykyk π₯
π SEE ALSO π
like, the whole extended friend group, honestly:
- Kernel file
./include/linux/reset.hstructreset_control_bulk_data(9) enum reset_control_flags(9)reset_control_get_exclusive(9)reset_control_bulk_get_exclusive(9)reset_control_get_exclusive_released(9)reset_control_bulk_get_exclusive_released(9)reset_control_bulk_get_optional_exclusive_released(9)reset_control_get_shared(9)reset_control_bulk_get_shared(9)reset_control_get_optional_exclusive(9)reset_control_bulk_get_optional_exclusive(9)reset_control_get_optional_shared(9)reset_control_bulk_get_optional_shared(9)of_reset_control_get_exclusive(9)of_reset_control_get_optional_exclusive(9)of_reset_control_get_shared(9)of_reset_control_get_exclusive_by_index(9)of_reset_control_get_shared_by_index(9)devm_reset_control_get_exclusive(9)devm_reset_control_get_exclusive_deasserted(9)devm_reset_control_bulk_get_exclusive(9)devm_reset_control_get_exclusive_released(9)devm_reset_control_bulk_get_exclusive_released(9)devm_reset_control_get_optional_exclusive_released(9)devm_reset_control_bulk_get_optional_exclusive_released(9)devm_reset_control_get_shared(9)devm_reset_control_get_shared_deasserted(9)devm_reset_control_bulk_get_shared(9)devm_reset_control_bulk_get_shared_deasserted(9)devm_reset_control_get_optional_exclusive(9)devm_reset_control_bulk_get_optional_exclusive(9)devm_reset_control_get_optional_shared(9)devm_reset_control_get_optional_shared_deasserted(9)devm_reset_control_bulk_get_optional_shared(9)devm_reset_control_get_exclusive_by_index(9)devm_reset_control_get_shared_by_index(9)
and that's the page, bestie π§π this lil slice of kernel lore lives in ./include/linux, dated October 2026, and if you ever need to find it again just yell devm_reset_c...e_deasserted(9) into the void and it'll come running π«Ά bye ily β
π¦ 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