static int cs421x_parse_auto_config(struct hda_codec *codec) { struct cs_spec *spec = codec->spec; hda_nid_t dac = CS4210_DAC_NID; int err; fix_volume_caps(codec, dac); err = snd_hda_parse_pin_defcfg(codec, &spec->gen.autocfg, NULL, 0); if (err < 0) return err; err = snd_hda_gen_parse_auto_config(codec, &spec->gen.autocfg); if (err < 0) return err; parse_cs421x_digital(codec); if (spec->gen.autocfg.speaker_outs && spec->vendor_nid == CS4210_VENDOR_NID) { if (!snd_hda_gen_add_kctl(&spec->gen, NULL, &cs421x_speaker_boost_ctl)) return -ENOMEM; } return 0; }
static int ad1983_add_spdif_mux_ctl(struct hda_codec *codec) { struct ad198x_spec *spec = codec->spec; hda_nid_t dig_out = spec->gen.multiout.dig_out_nid; int num_conns; if (!dig_out) return 0; num_conns = snd_hda_get_num_conns(codec, dig_out); if (num_conns != 2 && num_conns != 3) return 0; if (!snd_hda_gen_add_kctl(&spec->gen, NULL, &ad1983_auto_smux_mixer)) return -ENOMEM; return 0; }