Lines Matching full:codec

3  * HD audio codec driver for Senary HDA audio codec
63 static int senary_auto_parse_beep(struct hda_codec *codec) in senary_auto_parse_beep() argument
65 struct senary_spec *spec = codec->spec; in senary_auto_parse_beep()
68 for_each_hda_codec_node(nid, codec) in senary_auto_parse_beep()
69 if ((get_wcaps_type(get_wcaps(codec, nid)) == AC_WID_BEEP) && in senary_auto_parse_beep()
70 (get_wcaps(codec, nid) & (AC_WCAP_OUT_AMP | AC_WCAP_AMP_OVRD))) in senary_auto_parse_beep()
75 #define senary_auto_parse_beep(codec) 0 argument
79 static void senary_auto_parse_eapd(struct hda_codec *codec) in senary_auto_parse_eapd() argument
81 struct senary_spec *spec = codec->spec; in senary_auto_parse_eapd()
84 for_each_hda_codec_node(nid, codec) { in senary_auto_parse_eapd()
85 if (get_wcaps_type(get_wcaps(codec, nid)) != AC_WID_PIN) in senary_auto_parse_eapd()
87 if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_EAPD)) in senary_auto_parse_eapd()
95 static void senary_auto_turn_eapd(struct hda_codec *codec, int num_pins, in senary_auto_turn_eapd() argument
101 if (snd_hda_query_pin_caps(codec, pins[i]) & AC_PINCAP_EAPD) in senary_auto_turn_eapd()
102 snd_hda_codec_write(codec, pins[i], 0, in senary_auto_turn_eapd()
111 struct hda_codec *codec = private_data; in senary_auto_vmaster_hook() local
112 struct senary_spec *spec = codec->spec; in senary_auto_vmaster_hook()
114 senary_auto_turn_eapd(codec, spec->num_eapds, spec->eapds, enabled); in senary_auto_vmaster_hook()
117 static void senary_init_gpio_led(struct hda_codec *codec) in senary_init_gpio_led() argument
119 struct senary_spec *spec = codec->spec; in senary_init_gpio_led()
123 snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_MASK, in senary_init_gpio_led()
125 snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DIRECTION, in senary_init_gpio_led()
127 snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA, in senary_init_gpio_led()
132 static int senary_init(struct hda_codec *codec) in senary_init() argument
134 snd_hda_gen_init(codec); in senary_init()
135 senary_init_gpio_led(codec); in senary_init()
136 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_INIT); in senary_init()
141 static void senary_shutdown(struct hda_codec *codec) in senary_shutdown() argument
143 struct senary_spec *spec = codec->spec; in senary_shutdown()
145 /* Turn the problematic codec into D3 to avoid spurious noises in senary_shutdown()
148 senary_auto_turn_eapd(codec, spec->num_eapds, spec->eapds, false); in senary_shutdown()
151 static void senary_remove(struct hda_codec *codec) in senary_remove() argument
153 senary_shutdown(codec); in senary_remove()
154 snd_hda_gen_remove(codec); in senary_remove()
157 static int senary_suspend(struct hda_codec *codec) in senary_suspend() argument
159 senary_shutdown(codec); in senary_suspend()
163 static int senary_probe(struct hda_codec *codec, const struct hda_device_id *id) in senary_probe() argument
168 codec_info(codec, "%s: BIOS auto-probing.\n", codec->core.chip_name); in senary_probe()
174 codec->spec = spec; in senary_probe()
176 senary_auto_parse_eapd(codec); in senary_probe()
182 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); in senary_probe()
184 err = snd_hda_parse_pin_defcfg(codec, &spec->gen.autocfg, NULL, in senary_probe()
189 err = senary_auto_parse_beep(codec); in senary_probe()
193 err = snd_hda_gen_parse_auto_config(codec, &spec->gen.autocfg); in senary_probe()
201 if (!codec->bus->core.sync_write) { in senary_probe()
202 codec_info(codec, in senary_probe()
204 codec->bus->core.sync_write = 1; in senary_probe()
205 codec->bus->allow_bus_reset = 1; in senary_probe()
208 snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE); in senary_probe()
213 senary_remove(codec); in senary_probe()
239 MODULE_DESCRIPTION("Senarytech HD-audio codec");