diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-08-19 14:05:02 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-08-19 14:05:02 -0400 |
commit | 3abf2f3639959e4f53f209f93cd4d93fe9356de1 (patch) | |
tree | a3ae0ce9e608dc3b104d2f9bca7f655ca40e206f | |
parent | ae709440edb2d36f51f5ea51cfab931f45c03e02 (diff) |
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: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index fea976793ae5..6f683e451f2b 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -12521,8 +12521,6 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = { | |||
12521 | ALC268_TOSHIBA), | 12521 | ALC268_TOSHIBA), |
12522 | SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST), | 12522 | SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST), |
12523 | SND_PCI_QUIRK(0x1170, 0x0040, "ZEPTO", ALC268_ZEPTO), | 12523 | SND_PCI_QUIRK(0x1170, 0x0040, "ZEPTO", ALC268_ZEPTO), |
12524 | SND_PCI_QUIRK_MASK(0x1179, 0xff00, 0xff00, "TOSHIBA A/Lx05", | ||
12525 | ALC268_TOSHIBA), | ||
12526 | SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA), | 12524 | SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA), |
12527 | SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER), | 12525 | SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER), |
12528 | SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1), | 12526 | SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1), |
@@ -12530,6 +12528,15 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = { | |||
12530 | {} | 12528 | {} |
12531 | }; | 12529 | }; |
12532 | 12530 | ||
12531 | /* Toshiba laptops have no unique PCI SSID but only codec SSID */ | ||
12532 | static struct snd_pci_quirk alc268_ssid_cfg_tbl[] = { | ||
12533 | SND_PCI_QUIRK(0x1179, 0xff0a, "TOSHIBA X-200", ALC268_AUTO), | ||
12534 | SND_PCI_QUIRK(0x1179, 0xff0e, "TOSHIBA X-200 HDMI", ALC268_AUTO), | ||
12535 | SND_PCI_QUIRK_MASK(0x1179, 0xff00, 0xff00, "TOSHIBA A/Lx05", | ||
12536 | ALC268_TOSHIBA), | ||
12537 | {} | ||
12538 | }; | ||
12539 | |||
12533 | static struct alc_config_preset alc268_presets[] = { | 12540 | static struct alc_config_preset alc268_presets[] = { |
12534 | [ALC267_QUANTA_IL1] = { | 12541 | [ALC267_QUANTA_IL1] = { |
12535 | .mixers = { alc267_quanta_il1_mixer, alc268_beep_mixer }, | 12542 | .mixers = { alc267_quanta_il1_mixer, alc268_beep_mixer }, |
@@ -12696,6 +12703,10 @@ static int patch_alc268(struct hda_codec *codec) | |||
12696 | alc268_models, | 12703 | alc268_models, |
12697 | alc268_cfg_tbl); | 12704 | alc268_cfg_tbl); |
12698 | 12705 | ||
12706 | if (board_config < 0 || board_config >= ALC268_MODEL_LAST) | ||
12707 | board_config = snd_hda_check_board_codec_sid_config(codec, | ||
12708 | ALC882_MODEL_LAST, alc268_models, alc268_ssid_cfg_tbl); | ||
12709 | |||
12699 | if (board_config < 0 || board_config >= ALC268_MODEL_LAST) { | 12710 | if (board_config < 0 || board_config >= ALC268_MODEL_LAST) { |
12700 | printk(KERN_INFO "hda_codec: Unknown model for %s, " | 12711 | printk(KERN_INFO "hda_codec: Unknown model for %s, " |
12701 | "trying auto-probe from BIOS...\n", codec->chip_name); | 12712 | "trying auto-probe from BIOS...\n", codec->chip_name); |