aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_sigmatel.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r--sound/pci/hda/patch_sigmatel.c44
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;