diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 6f4a39273b98..f7ef9c5afe87 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -457,6 +457,10 @@ static struct snd_pci_quirk stac9200_cfg_tbl[] = { | |||
457 | "Dell Latitude 120L", STAC_REF), | 457 | "Dell Latitude 120L", STAC_REF), |
458 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x01cc, | 458 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x01cc, |
459 | "Dell Latitude D820", STAC_REF), | 459 | "Dell Latitude D820", STAC_REF), |
460 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x01cd, | ||
461 | "Dell Inspiron E1705/9400", STAC_REF), | ||
462 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x01ce, | ||
463 | "Dell XPS M1710", STAC_REF), | ||
460 | {} /* terminator */ | 464 | {} /* terminator */ |
461 | }; | 465 | }; |
462 | 466 | ||
@@ -1800,6 +1804,7 @@ static int patch_stac925x(struct hda_codec *codec) | |||
1800 | spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS, | 1804 | spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS, |
1801 | stac925x_models, | 1805 | stac925x_models, |
1802 | stac925x_cfg_tbl); | 1806 | stac925x_cfg_tbl); |
1807 | again: | ||
1803 | if (spec->board_config < 0) { | 1808 | if (spec->board_config < 0) { |
1804 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x, using BIOS defaults\n"); | 1809 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x, using BIOS defaults\n"); |
1805 | err = stac92xx_save_bios_config_regs(codec); | 1810 | err = stac92xx_save_bios_config_regs(codec); |
@@ -1825,6 +1830,15 @@ static int patch_stac925x(struct hda_codec *codec) | |||
1825 | spec->mixer = stac925x_mixer; | 1830 | spec->mixer = stac925x_mixer; |
1826 | 1831 | ||
1827 | err = stac92xx_parse_auto_config(codec, 0x8, 0x7); | 1832 | err = stac92xx_parse_auto_config(codec, 0x8, 0x7); |
1833 | if (!err) { | ||
1834 | if (spec->board_config < 0) { | ||
1835 | printk(KERN_WARNING "hda_codec: No auto-config is " | ||
1836 | "available, default to model=ref\n"); | ||
1837 | spec->board_config = STAC_925x_REF; | ||
1838 | goto again; | ||
1839 | } | ||
1840 | err = -EINVAL; | ||
1841 | } | ||
1828 | if (err < 0) { | 1842 | if (err < 0) { |
1829 | stac92xx_free(codec); | 1843 | stac92xx_free(codec); |
1830 | return err; | 1844 | return err; |
@@ -1850,6 +1864,7 @@ static int patch_stac922x(struct hda_codec *codec) | |||
1850 | spec->board_config = snd_hda_check_board_config(codec, STAC_922X_MODELS, | 1864 | spec->board_config = snd_hda_check_board_config(codec, STAC_922X_MODELS, |
1851 | stac922x_models, | 1865 | stac922x_models, |
1852 | stac922x_cfg_tbl); | 1866 | stac922x_cfg_tbl); |
1867 | again: | ||
1853 | if (spec->board_config < 0) { | 1868 | if (spec->board_config < 0) { |
1854 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, " | 1869 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, " |
1855 | "using BIOS defaults\n"); | 1870 | "using BIOS defaults\n"); |
@@ -1875,6 +1890,15 @@ static int patch_stac922x(struct hda_codec *codec) | |||
1875 | spec->multiout.dac_nids = spec->dac_nids; | 1890 | spec->multiout.dac_nids = spec->dac_nids; |
1876 | 1891 | ||
1877 | err = stac92xx_parse_auto_config(codec, 0x08, 0x09); | 1892 | err = stac92xx_parse_auto_config(codec, 0x08, 0x09); |
1893 | if (!err) { | ||
1894 | if (spec->board_config < 0) { | ||
1895 | printk(KERN_WARNING "hda_codec: No auto-config is " | ||
1896 | "available, default to model=ref\n"); | ||
1897 | spec->board_config = STAC_D945_REF; | ||
1898 | goto again; | ||
1899 | } | ||
1900 | err = -EINVAL; | ||
1901 | } | ||
1878 | if (err < 0) { | 1902 | if (err < 0) { |
1879 | stac92xx_free(codec); | 1903 | stac92xx_free(codec); |
1880 | return err; | 1904 | return err; |
@@ -1903,6 +1927,7 @@ static int patch_stac927x(struct hda_codec *codec) | |||
1903 | spec->board_config = snd_hda_check_board_config(codec, STAC_927X_MODELS, | 1927 | spec->board_config = snd_hda_check_board_config(codec, STAC_927X_MODELS, |
1904 | stac927x_models, | 1928 | stac927x_models, |
1905 | stac927x_cfg_tbl); | 1929 | stac927x_cfg_tbl); |
1930 | again: | ||
1906 | if (spec->board_config < 0) { | 1931 | if (spec->board_config < 0) { |
1907 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC927x, using BIOS defaults\n"); | 1932 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC927x, using BIOS defaults\n"); |
1908 | err = stac92xx_save_bios_config_regs(codec); | 1933 | err = stac92xx_save_bios_config_regs(codec); |
@@ -1945,6 +1970,15 @@ static int patch_stac927x(struct hda_codec *codec) | |||
1945 | spec->multiout.dac_nids = spec->dac_nids; | 1970 | spec->multiout.dac_nids = spec->dac_nids; |
1946 | 1971 | ||
1947 | err = stac92xx_parse_auto_config(codec, 0x1e, 0x20); | 1972 | err = stac92xx_parse_auto_config(codec, 0x1e, 0x20); |
1973 | if (!err) { | ||
1974 | if (spec->board_config < 0) { | ||
1975 | printk(KERN_WARNING "hda_codec: No auto-config is " | ||
1976 | "available, default to model=ref\n"); | ||
1977 | spec->board_config = STAC_D965_REF; | ||
1978 | goto again; | ||
1979 | } | ||
1980 | err = -EINVAL; | ||
1981 | } | ||
1948 | if (err < 0) { | 1982 | if (err < 0) { |
1949 | stac92xx_free(codec); | 1983 | stac92xx_free(codec); |
1950 | return err; | 1984 | return err; |
@@ -1970,6 +2004,7 @@ static int patch_stac9205(struct hda_codec *codec) | |||
1970 | spec->board_config = snd_hda_check_board_config(codec, STAC_9205_MODELS, | 2004 | spec->board_config = snd_hda_check_board_config(codec, STAC_9205_MODELS, |
1971 | stac9205_models, | 2005 | stac9205_models, |
1972 | stac9205_cfg_tbl); | 2006 | stac9205_cfg_tbl); |
2007 | again: | ||
1973 | if (spec->board_config < 0) { | 2008 | if (spec->board_config < 0) { |
1974 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC9205, using BIOS defaults\n"); | 2009 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC9205, using BIOS defaults\n"); |
1975 | err = stac92xx_save_bios_config_regs(codec); | 2010 | err = stac92xx_save_bios_config_regs(codec); |
@@ -2008,6 +2043,15 @@ static int patch_stac9205(struct hda_codec *codec) | |||
2008 | AC_VERB_SET_GPIO_MASK, 0x00000001); | 2043 | AC_VERB_SET_GPIO_MASK, 0x00000001); |
2009 | 2044 | ||
2010 | err = stac92xx_parse_auto_config(codec, 0x1f, 0x20); | 2045 | err = stac92xx_parse_auto_config(codec, 0x1f, 0x20); |
2046 | if (!err) { | ||
2047 | if (spec->board_config < 0) { | ||
2048 | printk(KERN_WARNING "hda_codec: No auto-config is " | ||
2049 | "available, default to model=ref\n"); | ||
2050 | spec->board_config = STAC_9205_REF; | ||
2051 | goto again; | ||
2052 | } | ||
2053 | err = -EINVAL; | ||
2054 | } | ||
2011 | if (err < 0) { | 2055 | if (err < 0) { |
2012 | stac92xx_free(codec); | 2056 | stac92xx_free(codec); |
2013 | return err; | 2057 | return err; |