snd_soc_dapm...pin_unlocked(9)
β¨ snd_soc_dapm_enable_pin_unlocked(9) β¨
okay so bestie, we're in the Kernel API Manual today and this one is literally called snd_soc_dapm...pin_unlocked β yes the name is a whole mood, yes it's truncated, no we're not gonna question it π
welcome to the DAPM corner of the kernel, it's giving audio power management realness π
πΈ NAME πΈ
snd_soc_dapm_enable_pin_unlocked β enable pin. that's it. that's the whole vibe. one job, and she does it π
π¦ SYNOPSIS π¦
int snd_soc_dapm_enable_pin_unlocked (struct snd_soc_dapm_context *dapm
, const char *pin );
she takes a context and a name and returns an int, no cap π«Ά
π ARGUMENTS π
dapmβ the DAPM context, aka the whole situation she's operating in πpinβ pin name, the string that tells her which pin we're talking about β¨
π DESCRIPTION π
so what does she actually do? she enables an input/output pin and its parents or children widgets β but only iff there's a valid audio route and an active audio stream π₯ that's the main character condition right there, she's not just out here enabling pins for free, there's a vibe check involved π
Requires external locking. not me having to remind you β she does not lock for you, okay? you bring the lock, she brings the enabling. periodt π
π NOTE π
snd_soc_dapm_sync needs to be called after this for DAPM to do any widget power switching. like, she enabled the pin but the actual power switching doesn't happen until you sync. don't skip this step bestie, it's literally the point π
β SEE ALSO β
Kernel file ./sound/soc/soc-dapm.c β go read it, iykyk π and here's the whole friend group:
snd_soc_dapm_kcontrol_to_widget(9)snd_soc_dapm_kcontrol_to_dapm(9)snd_soc_dapm_kcontrol_to_component(9)snd_soc_dapm_force_bias_level(9)snd_soc_dapm_init_bias_level(9)snd_soc_dapm_set_bias_level(9)snd_soc_dapm_get_bias_level(9)snd_soc_dapm_dai_get_connected_widgets(9)snd_soc_dapm_free_widget(9)snd_soc_dapm_sync_unlocked(9)snd_soc_dapm_sync(9)snd_soc_dapm_add_routes(9)snd_soc_dapm_del_routes(9)snd_soc_dapm_new_widgets(9)snd_soc_dapm_get_volsw(9)snd_soc_dapm_put_volsw(9)snd_soc_dapm_get_enum_double(9)snd_soc_dapm_put_enum_double(9)snd_soc_dapm_info_pin_switch(9)snd_soc_dapm_get_pin_switch(9)snd_soc_dapm_get_component_pin_switch(9)snd_soc_dapm_put_pin_switch(9)snd_soc_dapm_put_component_pin_switch(9)snd_soc_dapm_new_control(9)snd_soc_dapm_new_controls(9)snd_soc_dapm_new_dai_widgets(9)snd_soc_dapm_stream_event(9)snd_soc_dapm_enable_pin(9)snd_soc_dapm_force_enable_pin_unlocked(9)snd_soc_dapm_force_enable_pin(9)snd_soc_dapm_disable_pin_unlocked(9)snd_soc_dapm_disable_pin(9)snd_soc_dapm_get_pin_status(9)snd_soc_dapm_ignore_suspend(9)snd_soc_dapm_pin_has_prefix(9)snd_soc_dapm_free(9)
that's the whole page bestie, you ate it up π
reminder: the _unlocked suffix is a promise you made to the compiler, not a suggestion π§ bring your own lock fr fr
okay so this little gem lives in ./sound/soc and the manual's dated October 2026 π like we're reading from the future, iconic honestly. go enable some pins responsibly, 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