Lines Matching refs:codec
241 struct hda_codec *codec, in stac_playback_pcm_hook() argument
245 struct sigmatel_spec *spec = codec->spec; in stac_playback_pcm_hook()
251 struct hda_codec *codec, in stac_capture_pcm_hook() argument
255 struct sigmatel_spec *spec = codec->spec; in stac_capture_pcm_hook()
271 snd_hda_codec_write(codec, hinfo->nid, 0, in stac_capture_pcm_hook()
276 snd_hda_codec_write(codec, hinfo->nid, 0, in stac_capture_pcm_hook()
288 static void stac_gpio_set(struct hda_codec *codec, unsigned int mask, in stac_gpio_set() argument
292 hda_nid_t fg = codec->core.afg; in stac_gpio_set()
294 codec_dbg(codec, "%s msk %x dir %x gpio %x\n", __func__, mask, dir_mask, data); in stac_gpio_set()
296 gpiostate = snd_hda_codec_read(codec, fg, 0, in stac_gpio_set()
300 gpiomask = snd_hda_codec_read(codec, fg, 0, in stac_gpio_set()
304 gpiodir = snd_hda_codec_read(codec, fg, 0, in stac_gpio_set()
309 snd_hda_codec_write(codec, fg, 0, 0x7e7, 0); in stac_gpio_set()
311 snd_hda_codec_write(codec, fg, 0, in stac_gpio_set()
313 snd_hda_codec_read(codec, fg, 0, in stac_gpio_set()
318 snd_hda_codec_read(codec, fg, 0, in stac_gpio_set()
326 struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); in stac_capture_led_update() local
327 struct sigmatel_spec *spec = codec->spec; in stac_capture_led_update()
333 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data); in stac_capture_led_update()
337 static int stac_vrefout_set(struct hda_codec *codec, in stac_vrefout_set() argument
342 codec_dbg(codec, "%s, nid %x ctl %x\n", __func__, nid, new_vref); in stac_vrefout_set()
343 pinctl = snd_hda_codec_read(codec, nid, 0, in stac_vrefout_set()
353 error = snd_hda_set_pin_ctl_cache(codec, nid, pinctl); in stac_vrefout_set()
362 static unsigned int stac_vref_led_power_filter(struct hda_codec *codec, in stac_vref_led_power_filter() argument
366 if (nid == codec->core.afg && power_state == AC_PWRST_D3) in stac_vref_led_power_filter()
368 return snd_hda_gen_path_power_filter(codec, nid, power_state); in stac_vref_led_power_filter()
372 static void stac_update_led_status(struct hda_codec *codec, bool muted) in stac_update_led_status() argument
374 struct sigmatel_spec *spec = codec->spec; in stac_update_led_status()
388 stac_gpio_set(codec, spec->gpio_mask, in stac_update_led_status()
392 stac_vrefout_set(codec, spec->vref_mute_led_nid, in stac_update_led_status()
401 struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); in stac_vmaster_hook() local
403 stac_update_led_status(codec, brightness); in stac_vmaster_hook()
408 static void stac_update_outputs(struct hda_codec *codec) in stac_update_outputs() argument
410 struct sigmatel_spec *spec = codec->spec; in stac_update_outputs()
414 !(snd_hda_codec_read(codec, codec->core.afg, 0, in stac_update_outputs()
417 snd_hda_gen_update_outputs(codec); in stac_update_outputs()
427 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, in stac_update_outputs()
433 static void stac_toggle_power_map(struct hda_codec *codec, hda_nid_t nid, in stac_toggle_power_map() argument
436 struct sigmatel_spec *spec = codec->spec; in stac_toggle_power_map()
458 snd_hda_codec_write(codec, codec->core.afg, 0, in stac_toggle_power_map()
464 static void jack_update_power(struct hda_codec *codec, in jack_update_power() argument
467 struct sigmatel_spec *spec = codec->spec; in jack_update_power()
474 stac_toggle_power_map(codec, jack->nid, in jack_update_power()
475 snd_hda_jack_detect(codec, jack->nid), in jack_update_power()
483 if (!snd_hda_jack_tbl_get(codec, nid)) in jack_update_power()
485 stac_toggle_power_map(codec, nid, in jack_update_power()
486 snd_hda_jack_detect(codec, nid), in jack_update_power()
490 snd_hda_codec_write(codec, codec->core.afg, 0, in jack_update_power()
495 static void stac_vref_event(struct hda_codec *codec, in stac_vref_event() argument
500 data = snd_hda_codec_read(codec, codec->core.afg, 0, in stac_vref_event()
503 snd_hda_codec_write(codec, codec->core.afg, 0, 0x7e0, in stac_vref_event()
510 static void stac_init_power_map(struct hda_codec *codec) in stac_init_power_map() argument
512 struct sigmatel_spec *spec = codec->spec; in stac_init_power_map()
517 unsigned int def_conf = snd_hda_codec_get_pincfg(codec, nid); in stac_init_power_map()
521 is_jack_detectable(codec, nid)) { in stac_init_power_map()
522 snd_hda_jack_detect_enable_callback(codec, nid, in stac_init_power_map()
526 stac_toggle_power_map(codec, nid, false, false); in stac_init_power_map()
528 stac_toggle_power_map(codec, nid, true, false); in stac_init_power_map()
536 static inline bool get_int_hint(struct hda_codec *codec, const char *key, in get_int_hint() argument
539 return !snd_hda_get_int_hint(codec, key, valp); in get_int_hint()
543 static void stac_store_hints(struct hda_codec *codec) in stac_store_hints() argument
545 struct sigmatel_spec *spec = codec->spec; in stac_store_hints()
548 if (get_int_hint(codec, "gpio_mask", &spec->gpio_mask)) { in stac_store_hints()
552 if (get_int_hint(codec, "gpio_dir", &spec->gpio_dir)) in stac_store_hints()
554 if (get_int_hint(codec, "gpio_data", &spec->gpio_data)) in stac_store_hints()
556 if (get_int_hint(codec, "eapd_mask", &spec->eapd_mask)) in stac_store_hints()
558 if (get_int_hint(codec, "gpio_mute", &spec->gpio_mute)) in stac_store_hints()
560 val = snd_hda_get_bool_hint(codec, "eapd_switch"); in stac_store_hints()
574 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_aloopback_get() local
576 struct sigmatel_spec *spec = codec->spec; in stac_aloopback_get()
586 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_aloopback_put() local
587 struct sigmatel_spec *spec = codec->spec; in stac_aloopback_put()
605 dac_mode = snd_hda_codec_read(codec, codec->core.afg, 0, in stac_aloopback_put()
610 snd_hda_power_up(codec); in stac_aloopback_put()
613 snd_hda_power_down(codec); in stac_aloopback_put()
617 snd_hda_codec_write_cache(codec, codec->core.afg, 0, in stac_aloopback_put()
639 static bool hp_bnb2011_with_dock(struct hda_codec *codec) in hp_bnb2011_with_dock() argument
641 if (codec->core.vendor_id != 0x111d7605 && in hp_bnb2011_with_dock()
642 codec->core.vendor_id != 0x111d76d1) in hp_bnb2011_with_dock()
645 switch (codec->core.subsystem_id) { in hp_bnb2011_with_dock()
709 static void set_hp_led_gpio(struct hda_codec *codec) in set_hp_led_gpio() argument
711 struct sigmatel_spec *spec = codec->spec; in set_hp_led_gpio()
717 gpio = snd_hda_param_read(codec, codec->core.afg, AC_PAR_GPIO_CAP); in set_hp_led_gpio()
745 static int find_mute_led_cfg(struct hda_codec *codec, int default_polarity) in find_mute_led_cfg() argument
747 struct sigmatel_spec *spec = codec->spec; in find_mute_led_cfg()
750 if (get_int_hint(codec, "gpio_led", &spec->gpio_led)) { in find_mute_led_cfg()
751 get_int_hint(codec, "gpio_led_polarity", in find_mute_led_cfg()
761 max_gpio = snd_hda_param_read(codec, codec->core.afg, in find_mute_led_cfg()
772 set_hp_led_gpio(codec); in find_mute_led_cfg()
777 set_hp_led_gpio(codec); in find_mute_led_cfg()
791 if (!hp_blike_system(codec->core.subsystem_id) && in find_mute_led_cfg()
793 set_hp_led_gpio(codec); in find_mute_led_cfg()
801 static bool has_builtin_speaker(struct hda_codec *codec) in has_builtin_speaker() argument
803 struct sigmatel_spec *spec = codec->spec; in has_builtin_speaker()
816 unsigned int def_conf = snd_hda_codec_get_pincfg(codec, nid_pin[i]); in has_builtin_speaker()
828 static int stac_auto_create_beep_ctls(struct hda_codec *codec, in stac_auto_create_beep_ctls() argument
831 struct sigmatel_spec *spec = codec->spec; in stac_auto_create_beep_ctls()
832 u32 caps = query_amp_caps(codec, nid, HDA_OUTPUT); in stac_auto_create_beep_ctls()
875 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_dig_beep_switch_get() local
876 ucontrol->value.integer.value[0] = codec->beep->enabled; in stac_dig_beep_switch_get()
883 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_dig_beep_switch_put() local
884 return snd_hda_enable_beep_device(codec, ucontrol->value.integer.value[0]); in stac_dig_beep_switch_put()
895 static int stac_beep_switch_ctl(struct hda_codec *codec) in stac_beep_switch_ctl() argument
897 struct sigmatel_spec *spec = codec->spec; in stac_beep_switch_ctl()
912 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_smux_enum_info() local
913 struct sigmatel_spec *spec = codec->spec; in stac_smux_enum_info()
920 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_smux_enum_get() local
921 struct sigmatel_spec *spec = codec->spec; in stac_smux_enum_get()
931 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_smux_enum_put() local
932 struct sigmatel_spec *spec = codec->spec; in stac_smux_enum_put()
935 return snd_hda_input_mux_put(codec, &spec->spdif_mux, ucontrol, in stac_smux_enum_put()
953 static int stac_create_spdif_mux_ctls(struct hda_codec *codec) in stac_create_spdif_mux_ctls() argument
955 struct sigmatel_spec *spec = codec->spec; in stac_create_spdif_mux_ctls()
964 num_cons = snd_hda_get_num_conns(codec, cfg->dig_out_pins[0]); in stac_create_spdif_mux_ctls()
973 snd_hda_add_imux_item(codec, &spec->spdif_mux, labels[i], i, NULL); in stac_create_spdif_mux_ctls()
1353 static void stac9200_fixup_panasonic(struct hda_codec *codec, in stac9200_fixup_panasonic() argument
1356 struct sigmatel_spec *spec = codec->spec; in stac9200_fixup_panasonic()
1781 static void stac92hd73xx_fixup_ref(struct hda_codec *codec, in stac92hd73xx_fixup_ref() argument
1784 struct sigmatel_spec *spec = codec->spec; in stac92hd73xx_fixup_ref()
1789 snd_hda_apply_pincfgs(codec, ref92hd73xx_pin_configs); in stac92hd73xx_fixup_ref()
1793 static void stac92hd73xx_fixup_dell(struct hda_codec *codec) in stac92hd73xx_fixup_dell() argument
1795 struct sigmatel_spec *spec = codec->spec; in stac92hd73xx_fixup_dell()
1797 snd_hda_apply_pincfgs(codec, dell_m6_pin_configs); in stac92hd73xx_fixup_dell()
1801 static void stac92hd73xx_fixup_dell_eq(struct hda_codec *codec, in stac92hd73xx_fixup_dell_eq() argument
1804 struct sigmatel_spec *spec = codec->spec; in stac92hd73xx_fixup_dell_eq()
1809 stac92hd73xx_fixup_dell(codec); in stac92hd73xx_fixup_dell_eq()
1810 snd_hda_add_verbs(codec, dell_eq_core_init); in stac92hd73xx_fixup_dell_eq()
1815 static void stac92hd73xx_fixup_dell_m6_amic(struct hda_codec *codec, in stac92hd73xx_fixup_dell_m6_amic() argument
1821 stac92hd73xx_fixup_dell(codec); in stac92hd73xx_fixup_dell_m6_amic()
1822 snd_hda_codec_set_pincfg(codec, 0x0b, 0x90A70170); in stac92hd73xx_fixup_dell_m6_amic()
1826 static void stac92hd73xx_fixup_dell_m6_dmic(struct hda_codec *codec, in stac92hd73xx_fixup_dell_m6_dmic() argument
1832 stac92hd73xx_fixup_dell(codec); in stac92hd73xx_fixup_dell_m6_dmic()
1833 snd_hda_codec_set_pincfg(codec, 0x13, 0x90A60160); in stac92hd73xx_fixup_dell_m6_dmic()
1837 static void stac92hd73xx_fixup_dell_m6_both(struct hda_codec *codec, in stac92hd73xx_fixup_dell_m6_both() argument
1843 stac92hd73xx_fixup_dell(codec); in stac92hd73xx_fixup_dell_m6_both()
1844 snd_hda_codec_set_pincfg(codec, 0x0b, 0x90A70170); in stac92hd73xx_fixup_dell_m6_both()
1845 snd_hda_codec_set_pincfg(codec, 0x13, 0x90A60160); in stac92hd73xx_fixup_dell_m6_both()
1848 static void stac92hd73xx_fixup_alienware_m17x(struct hda_codec *codec, in stac92hd73xx_fixup_alienware_m17x() argument
1851 struct sigmatel_spec *spec = codec->spec; in stac92hd73xx_fixup_alienware_m17x()
1856 snd_hda_apply_pincfgs(codec, alienware_m17x_pin_configs); in stac92hd73xx_fixup_alienware_m17x()
1860 static void stac92hd73xx_fixup_no_jd(struct hda_codec *codec, in stac92hd73xx_fixup_no_jd() argument
1864 codec->no_jack_detect = 1; in stac92hd73xx_fixup_no_jd()
1868 static void stac92hd73xx_disable_automute(struct hda_codec *codec, in stac92hd73xx_disable_automute() argument
1871 struct sigmatel_spec *spec = codec->spec; in stac92hd73xx_disable_automute()
2089 static void stac92hd83xxx_fixup_hp(struct hda_codec *codec, in stac92hd83xxx_fixup_hp() argument
2092 struct sigmatel_spec *spec = codec->spec; in stac92hd83xxx_fixup_hp()
2097 if (hp_bnb2011_with_dock(codec)) { in stac92hd83xxx_fixup_hp()
2098 snd_hda_codec_set_pincfg(codec, 0xa, 0x2101201f); in stac92hd83xxx_fixup_hp()
2099 snd_hda_codec_set_pincfg(codec, 0xf, 0x2181205e); in stac92hd83xxx_fixup_hp()
2102 if (find_mute_led_cfg(codec, spec->default_polarity)) in stac92hd83xxx_fixup_hp()
2103 codec_dbg(codec, "mute LED gpio %d polarity %d\n", in stac92hd83xxx_fixup_hp()
2111 static void stac92hd83xxx_fixup_hp_zephyr(struct hda_codec *codec, in stac92hd83xxx_fixup_hp_zephyr() argument
2117 snd_hda_apply_pincfgs(codec, hp_zephyr_pin_configs); in stac92hd83xxx_fixup_hp_zephyr()
2118 snd_hda_add_verbs(codec, stac92hd83xxx_hp_zephyr_init); in stac92hd83xxx_fixup_hp_zephyr()
2121 static void stac92hd83xxx_fixup_hp_led(struct hda_codec *codec, in stac92hd83xxx_fixup_hp_led() argument
2124 struct sigmatel_spec *spec = codec->spec; in stac92hd83xxx_fixup_hp_led()
2130 static void stac92hd83xxx_fixup_hp_inv_led(struct hda_codec *codec, in stac92hd83xxx_fixup_hp_inv_led() argument
2133 struct sigmatel_spec *spec = codec->spec; in stac92hd83xxx_fixup_hp_inv_led()
2139 static void stac92hd83xxx_fixup_hp_mic_led(struct hda_codec *codec, in stac92hd83xxx_fixup_hp_mic_led() argument
2142 struct sigmatel_spec *spec = codec->spec; in stac92hd83xxx_fixup_hp_mic_led()
2148 codec->core.power_caps &= ~AC_PWRST_CLKSTOP; in stac92hd83xxx_fixup_hp_mic_led()
2153 static void stac92hd83xxx_fixup_hp_led_gpio10(struct hda_codec *codec, in stac92hd83xxx_fixup_hp_led_gpio10() argument
2156 struct sigmatel_spec *spec = codec->spec; in stac92hd83xxx_fixup_hp_led_gpio10()
2164 static void stac92hd83xxx_fixup_headset_jack(struct hda_codec *codec, in stac92hd83xxx_fixup_headset_jack() argument
2167 struct sigmatel_spec *spec = codec->spec; in stac92hd83xxx_fixup_headset_jack()
2173 static void stac92hd83xxx_fixup_gpio10_eapd(struct hda_codec *codec, in stac92hd83xxx_fixup_gpio10_eapd() argument
2177 struct sigmatel_spec *spec = codec->spec; in stac92hd83xxx_fixup_gpio10_eapd()
2186 static void hp_envy_ts_fixup_dac_bind(struct hda_codec *codec, in hp_envy_ts_fixup_dac_bind() argument
2190 struct sigmatel_spec *spec = codec->spec; in hp_envy_ts_fixup_dac_bind()
2945 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_hp_bass_gpio_get() local
2946 struct sigmatel_spec *spec = codec->spec; in stac_hp_bass_gpio_get()
2954 struct hda_codec *codec = snd_kcontrol_chip(kcontrol); in stac_hp_bass_gpio_put() local
2955 struct sigmatel_spec *spec = codec->spec; in stac_hp_bass_gpio_put()
2963 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data); in stac_hp_bass_gpio_put()
2974 static int stac_add_hp_bass_switch(struct hda_codec *codec) in stac_add_hp_bass_switch() argument
2976 struct sigmatel_spec *spec = codec->spec; in stac_add_hp_bass_switch()
3048 static void stac92hd71bxx_fixup_ref(struct hda_codec *codec, in stac92hd71bxx_fixup_ref() argument
3051 struct sigmatel_spec *spec = codec->spec; in stac92hd71bxx_fixup_ref()
3056 snd_hda_apply_pincfgs(codec, ref92hd71bxx_pin_configs); in stac92hd71bxx_fixup_ref()
3060 static void stac92hd71bxx_fixup_hp_m4(struct hda_codec *codec, in stac92hd71bxx_fixup_hp_m4() argument
3063 struct sigmatel_spec *spec = codec->spec; in stac92hd71bxx_fixup_hp_m4()
3070 snd_hda_codec_write_cache(codec, codec->core.afg, 0, in stac92hd71bxx_fixup_hp_m4()
3072 jack = snd_hda_jack_detect_enable_callback(codec, codec->core.afg, in stac92hd71bxx_fixup_hp_m4()
3080 snd_hda_codec_set_pincfg(codec, 0x0e, 0x01813040); in stac92hd71bxx_fixup_hp_m4()
3083 static void stac92hd71bxx_fixup_hp_dv4(struct hda_codec *codec, in stac92hd71bxx_fixup_hp_dv4() argument
3086 struct sigmatel_spec *spec = codec->spec; in stac92hd71bxx_fixup_hp_dv4()
3093 static void stac92hd71bxx_fixup_hp_dv5(struct hda_codec *codec, in stac92hd71bxx_fixup_hp_dv5() argument
3100 snd_hda_codec_set_pincfg(codec, 0x0d, 0x90170010); in stac92hd71bxx_fixup_hp_dv5()
3105 cap = snd_hda_param_read(codec, 0x1, AC_PAR_GPIO_CAP); in stac92hd71bxx_fixup_hp_dv5()
3108 stac_add_hp_bass_switch(codec); in stac92hd71bxx_fixup_hp_dv5()
3113 static void stac92hd71bxx_fixup_hp_hdx(struct hda_codec *codec, in stac92hd71bxx_fixup_hp_hdx() argument
3116 struct sigmatel_spec *spec = codec->spec; in stac92hd71bxx_fixup_hp_hdx()
3123 static bool is_hp_output(struct hda_codec *codec, hda_nid_t pin) in is_hp_output() argument
3125 unsigned int pin_cfg = snd_hda_codec_get_pincfg(codec, pin); in is_hp_output()
3133 static void fixup_hp_headphone(struct hda_codec *codec, hda_nid_t pin) in fixup_hp_headphone() argument
3135 unsigned int pin_cfg = snd_hda_codec_get_pincfg(codec, pin); in fixup_hp_headphone()
3144 snd_hda_codec_set_pincfg(codec, pin, pin_cfg); in fixup_hp_headphone()
3147 static void stac92hd71bxx_fixup_hp(struct hda_codec *codec, in stac92hd71bxx_fixup_hp() argument
3150 struct sigmatel_spec *spec = codec->spec; in stac92hd71bxx_fixup_hp()
3158 if (is_hp_output(codec, 0x0a) && is_hp_output(codec, 0x0f)) { in stac92hd71bxx_fixup_hp()
3159 fixup_hp_headphone(codec, 0x0a); in stac92hd71bxx_fixup_hp()
3160 fixup_hp_headphone(codec, 0x0f); in stac92hd71bxx_fixup_hp()
3163 if (find_mute_led_cfg(codec, 1)) in stac92hd71bxx_fixup_hp()
3164 codec_dbg(codec, "mute LED gpio %d polarity %d\n", in stac92hd71bxx_fixup_hp()
3510 static void stac922x_fixup_intel_mac_auto(struct hda_codec *codec, in stac922x_fixup_intel_mac_auto() argument
3517 codec->fixup_id = HDA_FIXUP_ID_NOT_SET; in stac922x_fixup_intel_mac_auto()
3518 snd_hda_pick_fixup(codec, NULL, stac922x_intel_mac_fixup_tbl, in stac922x_fixup_intel_mac_auto()
3520 if (codec->fixup_id != HDA_FIXUP_ID_NOT_SET) in stac922x_fixup_intel_mac_auto()
3521 snd_hda_apply_fixup(codec, action); in stac922x_fixup_intel_mac_auto()
3524 static void stac922x_fixup_intel_mac_gpio(struct hda_codec *codec, in stac922x_fixup_intel_mac_gpio() argument
3528 struct sigmatel_spec *spec = codec->spec; in stac922x_fixup_intel_mac_gpio()
3816 static void stac927x_fixup_ref_no_jd(struct hda_codec *codec, in stac927x_fixup_ref_no_jd() argument
3821 codec->no_jack_detect = 1; in stac927x_fixup_ref_no_jd()
3824 static void stac927x_fixup_ref(struct hda_codec *codec, in stac927x_fixup_ref() argument
3827 struct sigmatel_spec *spec = codec->spec; in stac927x_fixup_ref()
3830 snd_hda_apply_pincfgs(codec, ref927x_pin_configs); in stac927x_fixup_ref()
3836 static void stac927x_fixup_dell_dmic(struct hda_codec *codec, in stac927x_fixup_dell_dmic() argument
3839 struct sigmatel_spec *spec = codec->spec; in stac927x_fixup_dell_dmic()
3844 if (codec->core.subsystem_id != 0x1028022f) { in stac927x_fixup_dell_dmic()
3850 snd_hda_add_verbs(codec, dell_3st_core_init); in stac927x_fixup_dell_dmic()
3854 static void stac927x_fixup_volknob(struct hda_codec *codec, in stac927x_fixup_volknob() argument
3857 struct sigmatel_spec *spec = codec->spec; in stac927x_fixup_volknob()
3860 snd_hda_add_verbs(codec, stac927x_volknob_core_init); in stac927x_fixup_volknob()
4090 static void stac9205_fixup_ref(struct hda_codec *codec, in stac9205_fixup_ref() argument
4093 struct sigmatel_spec *spec = codec->spec; in stac9205_fixup_ref()
4096 snd_hda_apply_pincfgs(codec, ref9205_pin_configs); in stac9205_fixup_ref()
4102 static void stac9205_fixup_dell_m43(struct hda_codec *codec, in stac9205_fixup_dell_m43() argument
4105 struct sigmatel_spec *spec = codec->spec; in stac9205_fixup_dell_m43()
4109 snd_hda_apply_pincfgs(codec, dell_9205_m43_pin_configs); in stac9205_fixup_dell_m43()
4112 snd_hda_codec_write_cache(codec, codec->core.afg, 0, in stac9205_fixup_dell_m43()
4114 jack = snd_hda_jack_detect_enable_callback(codec, codec->core.afg, in stac9205_fixup_dell_m43()
4130 static void stac9205_fixup_eapd(struct hda_codec *codec, in stac9205_fixup_eapd() argument
4133 struct sigmatel_spec *spec = codec->spec; in stac9205_fixup_eapd()
4219 static void stac92hd95_fixup_hp_led(struct hda_codec *codec, in stac92hd95_fixup_hp_led() argument
4222 struct sigmatel_spec *spec = codec->spec; in stac92hd95_fixup_hp_led()
4227 if (find_mute_led_cfg(codec, spec->default_polarity)) in stac92hd95_fixup_hp_led()
4228 codec_dbg(codec, "mute LED gpio %d polarity %d\n", in stac92hd95_fixup_hp_led()
4261 static int stac_parse_auto_config(struct hda_codec *codec) in stac_parse_auto_config() argument
4263 struct sigmatel_spec *spec = codec->spec; in stac_parse_auto_config()
4270 err = snd_hda_parse_pin_defcfg(codec, &spec->gen.autocfg, NULL, flags); in stac_parse_auto_config()
4281 snd_hda_gen_add_mute_led_cdev(codec, stac_vmaster_hook); in stac_parse_auto_config()
4283 err = snd_hda_gen_parse_auto_config(codec, &spec->gen.autocfg); in stac_parse_auto_config()
4288 err = snd_hda_gen_fix_pin_power(codec, spec->vref_mute_led_nid); in stac_parse_auto_config()
4295 err = stac_auto_create_beep_ctls(codec, in stac_parse_auto_config()
4307 err = stac_auto_create_beep_ctls(codec, nid); in stac_parse_auto_config()
4310 if (codec->beep) { in stac_parse_auto_config()
4312 codec->beep->linear_tone = spec->linear_tone_beep; in stac_parse_auto_config()
4314 caps = query_amp_caps(codec, nid, HDA_OUTPUT); in stac_parse_auto_config()
4316 err = stac_beep_switch_ctl(codec); in stac_parse_auto_config()
4325 snd_hda_get_bool_hint(codec, "loopback") == 1) { in stac_parse_auto_config()
4328 if (snd_hdac_regmap_add_vendor_verb(&codec->core, wr_verb)) in stac_parse_auto_config()
4335 err = stac_create_spdif_mux_ctls(codec); in stac_parse_auto_config()
4340 stac_init_power_map(codec); in stac_parse_auto_config()
4345 static int stac_init(struct hda_codec *codec) in stac_init() argument
4347 struct sigmatel_spec *spec = codec->spec; in stac_init()
4351 stac_store_hints(codec); in stac_init()
4359 stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data); in stac_init()
4361 snd_hda_gen_init(codec); in stac_init()
4365 snd_hda_codec_write(codec, codec->core.afg, 0, in stac_init()
4374 snd_hda_codec_write(codec, spec->gen.all_adcs[i], 0, in stac_init()
4387 struct hda_codec *codec, hda_nid_t nid) in stac92hd_proc_hook() argument
4389 if (nid == codec->core.afg) in stac92hd_proc_hook()
4391 snd_hda_codec_read(codec, nid, 0, in stac92hd_proc_hook()
4396 struct hda_codec *codec, in analog_loop_proc_hook() argument
4400 snd_hda_codec_read(codec, codec->core.afg, 0, verb, 0)); in analog_loop_proc_hook()
4405 struct hda_codec *codec, hda_nid_t nid) in stac92hd7x_proc_hook() argument
4407 stac92hd_proc_hook(buffer, codec, nid); in stac92hd7x_proc_hook()
4408 if (nid == codec->core.afg) in stac92hd7x_proc_hook()
4409 analog_loop_proc_hook(buffer, codec, 0xfa0); in stac92hd7x_proc_hook()
4413 struct hda_codec *codec, hda_nid_t nid) in stac9205_proc_hook() argument
4415 if (nid == codec->core.afg) in stac9205_proc_hook()
4416 analog_loop_proc_hook(buffer, codec, 0xfe0); in stac9205_proc_hook()
4420 struct hda_codec *codec, hda_nid_t nid) in stac927x_proc_hook() argument
4422 if (nid == codec->core.afg) in stac927x_proc_hook()
4423 analog_loop_proc_hook(buffer, codec, 0xfeb); in stac927x_proc_hook()
4433 static int stac_suspend(struct hda_codec *codec) in stac_suspend() argument
4435 struct sigmatel_spec *spec = codec->spec; in stac_suspend()
4437 snd_hda_shutup_pins(codec); in stac_suspend()
4440 stac_gpio_set(codec, spec->gpio_mask, in stac_suspend()
4461 static int alloc_stac_spec(struct hda_codec *codec) in alloc_stac_spec() argument
4469 codec->spec = spec; in alloc_stac_spec()
4470 codec->no_trigger_sense = 1; /* seems common with STAC/IDT codecs */ in alloc_stac_spec()
4472 codec->patch_ops = stac_patch_ops; in alloc_stac_spec()
4476 static int patch_stac9200(struct hda_codec *codec) in patch_stac9200() argument
4481 err = alloc_stac_spec(codec); in patch_stac9200()
4485 spec = codec->spec; in patch_stac9200()
4489 codec->power_filter = snd_hda_codec_eapd_power_filter; in patch_stac9200()
4491 snd_hda_add_verbs(codec, stac9200_eapd_init); in patch_stac9200()
4493 snd_hda_pick_fixup(codec, stac9200_models, stac9200_fixup_tbl, in patch_stac9200()
4495 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac9200()
4497 err = stac_parse_auto_config(codec); in patch_stac9200()
4499 stac_free(codec); in patch_stac9200()
4503 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac9200()
4508 static int patch_stac925x(struct hda_codec *codec) in patch_stac925x() argument
4513 err = alloc_stac_spec(codec); in patch_stac925x()
4517 spec = codec->spec; in patch_stac925x()
4521 snd_hda_add_verbs(codec, stac925x_core_init); in patch_stac925x()
4523 snd_hda_pick_fixup(codec, stac925x_models, stac925x_fixup_tbl, in patch_stac925x()
4525 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac925x()
4527 err = stac_parse_auto_config(codec); in patch_stac925x()
4529 stac_free(codec); in patch_stac925x()
4533 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac925x()
4538 static int patch_stac92hd73xx(struct hda_codec *codec) in patch_stac92hd73xx() argument
4544 err = alloc_stac_spec(codec); in patch_stac92hd73xx()
4548 spec = codec->spec; in patch_stac92hd73xx()
4552 if ((codec->core.vendor_id & 0xfffffff0) != 0x111d7670) in patch_stac92hd73xx()
4553 codec->power_save_node = 1; in patch_stac92hd73xx()
4558 num_dacs = snd_hda_get_num_conns(codec, 0x0a) - 1; in patch_stac92hd73xx()
4560 codec_warn(codec, in patch_stac92hd73xx()
4594 snd_hda_pick_fixup(codec, stac92hd73xx_models, stac92hd73xx_fixup_tbl, in patch_stac92hd73xx()
4596 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac92hd73xx()
4599 snd_hda_add_verbs(codec, stac92hd73xx_core_init); in patch_stac92hd73xx()
4601 err = stac_parse_auto_config(codec); in patch_stac92hd73xx()
4603 stac_free(codec); in patch_stac92hd73xx()
4610 if (spec->eapd_switch && !has_builtin_speaker(codec)) in patch_stac92hd73xx()
4613 codec->proc_widget_hook = stac92hd7x_proc_hook; in patch_stac92hd73xx()
4615 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac92hd73xx()
4620 static void stac_setup_gpio(struct hda_codec *codec) in stac_setup_gpio() argument
4622 struct sigmatel_spec *spec = codec->spec; in stac_setup_gpio()
4631 codec->power_filter = stac_vref_led_power_filter; in stac_setup_gpio()
4640 snd_hda_gen_add_micmute_led_cdev(codec, stac_capture_led_update); in stac_setup_gpio()
4644 static int patch_stac92hd83xxx(struct hda_codec *codec) in patch_stac92hd83xxx() argument
4649 err = alloc_stac_spec(codec); in patch_stac92hd83xxx()
4654 codec->core.power_caps &= ~AC_PWRST_EPSS; in patch_stac92hd83xxx()
4656 spec = codec->spec; in patch_stac92hd83xxx()
4657 codec->power_save_node = 1; in patch_stac92hd83xxx()
4668 snd_hda_add_verbs(codec, stac92hd83xxx_core_init); in patch_stac92hd83xxx()
4670 snd_hda_pick_fixup(codec, stac92hd83xxx_models, stac92hd83xxx_fixup_tbl, in patch_stac92hd83xxx()
4672 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac92hd83xxx()
4674 stac_setup_gpio(codec); in patch_stac92hd83xxx()
4676 err = stac_parse_auto_config(codec); in patch_stac92hd83xxx()
4678 stac_free(codec); in patch_stac92hd83xxx()
4682 codec->proc_widget_hook = stac92hd_proc_hook; in patch_stac92hd83xxx()
4684 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac92hd83xxx()
4693 static int patch_stac92hd95(struct hda_codec *codec) in patch_stac92hd95() argument
4698 err = alloc_stac_spec(codec); in patch_stac92hd95()
4703 codec->core.power_caps &= ~AC_PWRST_EPSS; in patch_stac92hd95()
4705 spec = codec->spec; in patch_stac92hd95()
4706 codec->power_save_node = 1; in patch_stac92hd95()
4716 snd_hda_pick_fixup(codec, stac92hd95_models, stac92hd95_fixup_tbl, in patch_stac92hd95()
4718 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac92hd95()
4720 stac_setup_gpio(codec); in patch_stac92hd95()
4722 err = stac_parse_auto_config(codec); in patch_stac92hd95()
4724 stac_free(codec); in patch_stac92hd95()
4728 codec->proc_widget_hook = stac92hd_proc_hook; in patch_stac92hd95()
4730 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac92hd95()
4735 static int patch_stac92hd71bxx(struct hda_codec *codec) in patch_stac92hd71bxx() argument
4741 err = alloc_stac_spec(codec); in patch_stac92hd71bxx()
4745 spec = codec->spec; in patch_stac92hd71bxx()
4759 switch (codec->core.vendor_id) { in patch_stac92hd71bxx()
4765 if ((codec->core.revision_id & 0xf) == 0 || in patch_stac92hd71bxx()
4766 (codec->core.revision_id & 0xf) == 1) in patch_stac92hd71bxx()
4771 snd_hda_codec_set_pincfg(codec, 0x0f, 0x40f000f0); in patch_stac92hd71bxx()
4772 snd_hda_codec_set_pincfg(codec, 0x19, 0x40f000f3); in patch_stac92hd71bxx()
4775 if ((codec->core.revision_id & 0xf) == 1) in patch_stac92hd71bxx()
4781 if (get_wcaps_type(get_wcaps(codec, 0x28)) == AC_WID_VOL_KNB) in patch_stac92hd71bxx()
4782 snd_hda_add_verbs(codec, stac92hd71bxx_core_init); in patch_stac92hd71bxx()
4784 if (get_wcaps(codec, 0xa) & AC_WCAP_IN_AMP) { in patch_stac92hd71bxx()
4787 snd_hda_codec_amp_init_stereo(codec, *p, HDA_INPUT, 0, in patch_stac92hd71bxx()
4800 snd_hda_pick_fixup(codec, stac92hd71bxx_models, stac92hd71bxx_fixup_tbl, in patch_stac92hd71bxx()
4802 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac92hd71bxx()
4804 stac_setup_gpio(codec); in patch_stac92hd71bxx()
4806 err = stac_parse_auto_config(codec); in patch_stac92hd71bxx()
4808 stac_free(codec); in patch_stac92hd71bxx()
4812 codec->proc_widget_hook = stac92hd7x_proc_hook; in patch_stac92hd71bxx()
4814 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac92hd71bxx()
4819 static int patch_stac922x(struct hda_codec *codec) in patch_stac922x() argument
4824 err = alloc_stac_spec(codec); in patch_stac922x()
4828 spec = codec->spec; in patch_stac922x()
4832 snd_hda_add_verbs(codec, stac922x_core_init); in patch_stac922x()
4835 snd_hda_override_amp_caps(codec, 0x12, HDA_OUTPUT, in patch_stac922x()
4841 snd_hda_pick_fixup(codec, stac922x_models, stac922x_fixup_tbl, in patch_stac922x()
4843 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac922x()
4845 err = stac_parse_auto_config(codec); in patch_stac922x()
4847 stac_free(codec); in patch_stac922x()
4851 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac922x()
4861 static int patch_stac927x(struct hda_codec *codec) in patch_stac927x() argument
4866 err = alloc_stac_spec(codec); in patch_stac927x()
4870 spec = codec->spec; in patch_stac927x()
4887 snd_hda_pick_fixup(codec, stac927x_models, stac927x_fixup_tbl, in patch_stac927x()
4889 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac927x()
4892 snd_hda_add_verbs(codec, stac927x_core_init); in patch_stac927x()
4894 err = stac_parse_auto_config(codec); in patch_stac927x()
4896 stac_free(codec); in patch_stac927x()
4900 codec->proc_widget_hook = stac927x_proc_hook; in patch_stac927x()
4912 codec->bus->core.needs_damn_long_delay = 1; in patch_stac927x()
4914 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac927x()
4919 static int patch_stac9205(struct hda_codec *codec) in patch_stac9205() argument
4924 err = alloc_stac_spec(codec); in patch_stac9205()
4928 spec = codec->spec; in patch_stac9205()
4935 snd_hda_add_verbs(codec, stac9205_core_init); in patch_stac9205()
4948 snd_hda_pick_fixup(codec, stac9205_models, stac9205_fixup_tbl, in patch_stac9205()
4950 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac9205()
4952 err = stac_parse_auto_config(codec); in patch_stac9205()
4954 stac_free(codec); in patch_stac9205()
4958 codec->proc_widget_hook = stac9205_proc_hook; in patch_stac9205()
4960 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac9205()
5006 static int patch_stac9872(struct hda_codec *codec) in patch_stac9872() argument
5011 err = alloc_stac_spec(codec); in patch_stac9872()
5015 spec = codec->spec; in patch_stac9872()
5019 snd_hda_add_verbs(codec, stac9872_core_init); in patch_stac9872()
5021 snd_hda_pick_fixup(codec, stac9872_models, stac9872_fixup_tbl, in patch_stac9872()
5023 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in patch_stac9872()
5025 err = stac_parse_auto_config(codec); in patch_stac9872()
5027 stac_free(codec); in patch_stac9872()
5031 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in patch_stac9872()