Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3abf2f36 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Fix probe of Toshiba laptops with ALC268 codec



There are many variants of Toshiba laptops with ALC268 codec, and
it seems that a few of them don't work with model=toshiba preset
since they have the secondary ALC268 codec just for HDMI output.
This is a regression due to the previous clean-up work to merge all
Toshiba quirk entries into a single check.

This patch adds the identification of such laptops to apply the
standard BIOS-probing method.  Unfortunately, Toshiba laptops have
all the same PCI SSID, so we need to check the codec SSID to identify
each device.

Tested-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ae709440
Loading
Loading
Loading
Loading
+13 −2
Original line number Original line Diff line number Diff line
@@ -12521,8 +12521,6 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = {
			   ALC268_TOSHIBA),
			   ALC268_TOSHIBA),
	SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST),
	SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST),
	SND_PCI_QUIRK(0x1170, 0x0040, "ZEPTO", ALC268_ZEPTO),
	SND_PCI_QUIRK(0x1170, 0x0040, "ZEPTO", ALC268_ZEPTO),
	SND_PCI_QUIRK_MASK(0x1179, 0xff00, 0xff00, "TOSHIBA A/Lx05",
			   ALC268_TOSHIBA),
	SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA),
	SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA),
	SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER),
	SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER),
	SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1),
	SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1),
@@ -12530,6 +12528,15 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = {
	{}
	{}
};
};
/* Toshiba laptops have no unique PCI SSID but only codec SSID */
static struct snd_pci_quirk alc268_ssid_cfg_tbl[] = {
	SND_PCI_QUIRK(0x1179, 0xff0a, "TOSHIBA X-200", ALC268_AUTO),
	SND_PCI_QUIRK(0x1179, 0xff0e, "TOSHIBA X-200 HDMI", ALC268_AUTO),
	SND_PCI_QUIRK_MASK(0x1179, 0xff00, 0xff00, "TOSHIBA A/Lx05",
			   ALC268_TOSHIBA),
	{}
};
static struct alc_config_preset alc268_presets[] = {
static struct alc_config_preset alc268_presets[] = {
	[ALC267_QUANTA_IL1] = {
	[ALC267_QUANTA_IL1] = {
		.mixers = { alc267_quanta_il1_mixer, alc268_beep_mixer },
		.mixers = { alc267_quanta_il1_mixer, alc268_beep_mixer },
@@ -12696,6 +12703,10 @@ static int patch_alc268(struct hda_codec *codec)
						  alc268_models,
						  alc268_models,
						  alc268_cfg_tbl);
						  alc268_cfg_tbl);
	if (board_config < 0 || board_config >= ALC268_MODEL_LAST)
		board_config = snd_hda_check_board_codec_sid_config(codec,
			ALC882_MODEL_LAST, alc268_models, alc268_ssid_cfg_tbl);
	if (board_config < 0 || board_config >= ALC268_MODEL_LAST) {
	if (board_config < 0 || board_config >= ALC268_MODEL_LAST) {
		printk(KERN_INFO "hda_codec: Unknown model for %s, "
		printk(KERN_INFO "hda_codec: Unknown model for %s, "
		       "trying auto-probe from BIOS...\n", codec->chip_name);
		       "trying auto-probe from BIOS...\n", codec->chip_name);