snd_hda_override_amp_caps(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… snd_hda_override_amp_caps β€” from the Kernel API Manual (section 9, bestie)

Okay so picture this: you're deep in the kernel, elbows-deep in HDA codec guts, and the cached AMP caps are not giving what they need to give. That's where snd_hda_override_amp_caps comes in. This is the snd_hda_override_amp_caps(9) page, and we're gonna get through it together πŸ’–


✨ NAME ✨

snd_hda_override_amp_caps β€” Override the AMP capabilities. That's it, that's the whole vibe. πŸŽ€


🌸 SYNOPSIS 🌸

int snd_hda_override_amp_caps (struct hda_codec *codec , hda_nid_t nid ,
int dir , unsigned int caps );

That's the whole signature, no cap (pun intended) 🧚


πŸ¦‹ ARGUMENTS πŸ¦‹

  • codec β€” the CODEC to clean up. Yes babe, this is the one you're messing with.
  • nid β€” the NID to clean up. The node in question, the main character of this operation πŸ‘‘
  • dir β€” either #HDA_INPUT or #HDA_OUTPUT. Pick a lane, literally, those are your two choices.
  • caps β€” the capability bits to set. This is the whole point of the function, so like, be normal about it πŸ™ˆ

πŸ”₯ DESCRIPTION πŸ”₯

So what does it actually do? It overrides the cached AMP caps bits value with whatever you hand it in caps. Basically the cache said one thing and you're like "no bestie, we're doing this instead" and it just… listens. Iconic behavior honestly.

This function is useful if the driver needs to adjust the AMP ranges β€” for example, limiting to 0dB, etc. Sometimes the hardware shows up with ranges that are too much and you gotta gently tell it no πŸ’…

And the return? Returns zero if successful, or a negative error code. So 0 = slay, negative = something went sideways, go check 😭


πŸ’œ SEE ALSO πŸ’œ

The source lives in the kernel file ./sound/hda/common/codec.c β€” that's the home base, fr fr.

And now, the entire group chat. Every single one of these showed up to the function party and we are not leaving anyone out 🫢

snd_hda_sequence_write(9), snd_hda_get_conn_list(9), snd_hda_get_connections(9), snd_hda_override_conn_list(9), snd_hda_get_conn_index(9), snd_hda_get_num_devices(9), snd_hda_get_devices(9), snd_hda_get_dev_select(9), snd_hda_set_dev_select(9), snd_hda_codec_set_pincfg(9), snd_hda_codec_get_pincfg(9), snd_hda_codec_set_pin_target(9), snd_hda_codec_get_pin_target(9), snd_hda_shutup_pins(9), snd_hda_codec_cleanup_for_unbind(9), snd_hda_codec_register(9), snd_hda_codec_unregister(9), snd_hda_codec_device_init(9), snd_hda_codec_new(9), snd_hda_codec_update_widgets(9), snd_hda_codec_setup_stream(9), __snd_hda_codec_cleanup_stream(9)

query_amp_caps(9), snd_hda_check_amp_caps(9), snd_hda_codec_amp_update(9), snd_hda_codec_amp_stereo(9), snd_hda_codec_amp_init(9), snd_hda_codec_amp_init_stereo(9), snd_hda_mixer_amp_volume_info(9), snd_hda_mixer_amp_volume_get(9), snd_hda_mixer_amp_volume_put(9), snd_hda_mixer_amp_tlv(9), snd_hda_set_vmaster_tlv(9), snd_hda_find_mixer_ctl(9), snd_hda_ctl_add(9), snd_hda_ctls_clear(9), snd_hda_lock_devices(9), snd_hda_unlock_devices(9), snd_hda_codec_reset(9), __snd_hda_add_vmaster(9), snd_hda_add_vmaster_hook(9), snd_hda_sync_vmaster_hook(9)

snd_hda_mixer_amp_switch_info(9), snd_hda_mixer_amp_switch_get(9), snd_hda_mixer_amp_switch_put(9), snd_hda_create_dig_out_ctls(9), snd_hda_spdif_out_of_nid(9), snd_hda_spdif_ctls_unassign(9), snd_hda_spdif_ctls_assign(9), snd_hda_create_spdif_share_sw(9), snd_hda_create_spdif_in_ctls(9), snd_hda_codec_set_power_to_all(9), snd_hda_codec_eapd_power_filter(9), snd_hda_codec_prepare(9), snd_hda_codec_cleanup(9), snd_hda_add_new_ctls(9), snd_hda_codec_set_power_save(9), snd_hda_set_power_save(9), snd_hda_check_amp_list_power(9), snd_hda_input_mux_info(9), snd_hda_input_mux_put(9), snd_hda_enum_helper_info(9)

snd_hda_multi_out_dig_open(9), snd_hda_multi_out_dig_prepare(9), snd_hda_multi_out_dig_cleanup(9), snd_hda_multi_out_dig_close(9), snd_hda_multi_out_analog_open(9), snd_hda_multi_out_analog_prepare(9), snd_hda_multi_out_analog_cleanup(9), snd_hda_get_default_vref(9), snd_hda_correct_pin_ctl(9), _snd_hda_set_pin_ctl(9), snd_hda_add_imux_item(9), snd_hda_bus_reset_codecs(9), snd_hda_codec_set_gpio(9), snd_print_pcm_bits(9)

Like I said. Whole squad. No one left behind 🌈


Heads up bestie: this only touches the cached caps bits. The override replaces what's cached, that's the whole gig β€” don't go expecting it to do anything the page didn't promise πŸ’€

Alright, that's the page! Source directory ./sound/hda/common, dated October 2026, wrapped up with love from your favorite kernel-fluent bestie. Go override those caps, you absolute icon πŸ’…βœ¨πŸ“

πŸ“¦ where this page comes from