xref: /linux/sound/hda/codecs/realtek/alc680.c (revision aeeb85f26c3bbef6f702ac20167c45812251501d)
1*aeeb85f2STakashi Iwai // SPDX-License-Identifier: GPL-2.0-or-later
2*aeeb85f2STakashi Iwai //
3*aeeb85f2STakashi Iwai // Realtek ALC680 codec
4*aeeb85f2STakashi Iwai //
5*aeeb85f2STakashi Iwai 
6*aeeb85f2STakashi Iwai #include <linux/init.h>
7*aeeb85f2STakashi Iwai #include <linux/module.h>
8*aeeb85f2STakashi Iwai #include "realtek.h"
9*aeeb85f2STakashi Iwai 
10*aeeb85f2STakashi Iwai static int alc680_parse_auto_config(struct hda_codec *codec)
11*aeeb85f2STakashi Iwai {
12*aeeb85f2STakashi Iwai 	return alc_parse_auto_config(codec, NULL, NULL);
13*aeeb85f2STakashi Iwai }
14*aeeb85f2STakashi Iwai 
15*aeeb85f2STakashi Iwai /*
16*aeeb85f2STakashi Iwai  */
17*aeeb85f2STakashi Iwai static int patch_alc680(struct hda_codec *codec)
18*aeeb85f2STakashi Iwai {
19*aeeb85f2STakashi Iwai 	int err;
20*aeeb85f2STakashi Iwai 
21*aeeb85f2STakashi Iwai 	/* ALC680 has no aa-loopback mixer */
22*aeeb85f2STakashi Iwai 	err = alc_alloc_spec(codec, 0);
23*aeeb85f2STakashi Iwai 	if (err < 0)
24*aeeb85f2STakashi Iwai 		return err;
25*aeeb85f2STakashi Iwai 
26*aeeb85f2STakashi Iwai 	/* automatic parse from the BIOS config */
27*aeeb85f2STakashi Iwai 	err = alc680_parse_auto_config(codec);
28*aeeb85f2STakashi Iwai 	if (err < 0) {
29*aeeb85f2STakashi Iwai 		alc_free(codec);
30*aeeb85f2STakashi Iwai 		return err;
31*aeeb85f2STakashi Iwai 	}
32*aeeb85f2STakashi Iwai 
33*aeeb85f2STakashi Iwai 	return 0;
34*aeeb85f2STakashi Iwai }
35*aeeb85f2STakashi Iwai 
36*aeeb85f2STakashi Iwai /*
37*aeeb85f2STakashi Iwai  * driver entries
38*aeeb85f2STakashi Iwai  */
39*aeeb85f2STakashi Iwai static const struct hda_device_id snd_hda_id_alc680[] = {
40*aeeb85f2STakashi Iwai 	HDA_CODEC_ENTRY(0x10ec0680, "ALC680", patch_alc680),
41*aeeb85f2STakashi Iwai 	{} /* terminator */
42*aeeb85f2STakashi Iwai };
43*aeeb85f2STakashi Iwai MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_alc680);
44*aeeb85f2STakashi Iwai 
45*aeeb85f2STakashi Iwai MODULE_LICENSE("GPL");
46*aeeb85f2STakashi Iwai MODULE_DESCRIPTION("Realtek ALC680 HD-audio codec");
47*aeeb85f2STakashi Iwai MODULE_IMPORT_NS("SND_HDA_CODEC_REALTEK");
48*aeeb85f2STakashi Iwai 
49*aeeb85f2STakashi Iwai static struct hda_codec_driver alc680_driver = {
50*aeeb85f2STakashi Iwai 	.id = snd_hda_id_alc680,
51*aeeb85f2STakashi Iwai };
52*aeeb85f2STakashi Iwai 
53*aeeb85f2STakashi Iwai module_hda_codec_driver(alc680_driver);
54