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