diff options
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 6f4a39273b98..2535c1ad39e9 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -1800,6 +1800,7 @@ static int patch_stac925x(struct hda_codec *codec) | |||
1800 | spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS, | 1800 | spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS, |
1801 | stac925x_models, | 1801 | stac925x_models, |
1802 | stac925x_cfg_tbl); | 1802 | stac925x_cfg_tbl); |
1803 | again: | ||
1803 | if (spec->board_config < 0) { | 1804 | if (spec->board_config < 0) { |
1804 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x, using BIOS defaults\n"); | 1805 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x, using BIOS defaults\n"); |
1805 | err = stac92xx_save_bios_config_regs(codec); | 1806 | err = stac92xx_save_bios_config_regs(codec); |
@@ -1825,6 +1826,15 @@ static int patch_stac925x(struct hda_codec *codec) | |||
1825 | spec->mixer = stac925x_mixer; | 1826 | spec->mixer = stac925x_mixer; |
1826 | 1827 | ||
1827 | err = stac92xx_parse_auto_config(codec, 0x8, 0x7); | 1828 | err = stac92xx_parse_auto_config(codec, 0x8, 0x7); |
1829 | if (!err) { | ||
1830 | if (spec->board_config < 0) { | ||
1831 | printk(KERN_WARNING "hda_codec: No auto-config is " | ||
1832 | "available, default to model=ref\n"); | ||
1833 | spec->board_config = STAC_925x_REF; | ||
1834 | goto again; | ||
1835 | } | ||
1836 | err = -EINVAL; | ||
1837 | } | ||
1828 | if (err < 0) { | 1838 | if (err < 0) { |
1829 | stac92xx_free(codec); | 1839 | stac92xx_free(codec); |
1830 | return err; | 1840 | return err; |
@@ -1850,6 +1860,7 @@ static int patch_stac922x(struct hda_codec *codec) | |||
1850 | spec->board_config = snd_hda_check_board_config(codec, STAC_922X_MODELS, | 1860 | spec->board_config = snd_hda_check_board_config(codec, STAC_922X_MODELS, |
1851 | stac922x_models, | 1861 | stac922x_models, |
1852 | stac922x_cfg_tbl); | 1862 | stac922x_cfg_tbl); |
1863 | again: | ||
1853 | if (spec->board_config < 0) { | 1864 | if (spec->board_config < 0) { |
1854 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, " | 1865 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, " |
1855 | "using BIOS defaults\n"); | 1866 | "using BIOS defaults\n"); |
@@ -1875,6 +1886,15 @@ static int patch_stac922x(struct hda_codec *codec) | |||
1875 | spec->multiout.dac_nids = spec->dac_nids; | 1886 | spec->multiout.dac_nids = spec->dac_nids; |
1876 | 1887 | ||
1877 | err = stac92xx_parse_auto_config(codec, 0x08, 0x09); | 1888 | err = stac92xx_parse_auto_config(codec, 0x08, 0x09); |
1889 | if (!err) { | ||
1890 | if (spec->board_config < 0) { | ||
1891 | printk(KERN_WARNING "hda_codec: No auto-config is " | ||
1892 | "available, default to model=ref\n"); | ||
1893 | spec->board_config = STAC_D945_REF; | ||
1894 | goto again; | ||
1895 | } | ||
1896 | err = -EINVAL; | ||
1897 | } | ||
1878 | if (err < 0) { | 1898 | if (err < 0) { |
1879 | stac92xx_free(codec); | 1899 | stac92xx_free(codec); |
1880 | return err; | 1900 | return err; |
@@ -1903,6 +1923,7 @@ static int patch_stac927x(struct hda_codec *codec) | |||
1903 | spec->board_config = snd_hda_check_board_config(codec, STAC_927X_MODELS, | 1923 | spec->board_config = snd_hda_check_board_config(codec, STAC_927X_MODELS, |
1904 | stac927x_models, | 1924 | stac927x_models, |
1905 | stac927x_cfg_tbl); | 1925 | stac927x_cfg_tbl); |
1926 | again: | ||
1906 | if (spec->board_config < 0) { | 1927 | if (spec->board_config < 0) { |
1907 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC927x, using BIOS defaults\n"); | 1928 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC927x, using BIOS defaults\n"); |
1908 | err = stac92xx_save_bios_config_regs(codec); | 1929 | err = stac92xx_save_bios_config_regs(codec); |
@@ -1945,6 +1966,15 @@ static int patch_stac927x(struct hda_codec *codec) | |||
1945 | spec->multiout.dac_nids = spec->dac_nids; | 1966 | spec->multiout.dac_nids = spec->dac_nids; |
1946 | 1967 | ||
1947 | err = stac92xx_parse_auto_config(codec, 0x1e, 0x20); | 1968 | err = stac92xx_parse_auto_config(codec, 0x1e, 0x20); |
1969 | if (!err) { | ||
1970 | if (spec->board_config < 0) { | ||
1971 | printk(KERN_WARNING "hda_codec: No auto-config is " | ||
1972 | "available, default to model=ref\n"); | ||
1973 | spec->board_config = STAC_D965_REF; | ||
1974 | goto again; | ||
1975 | } | ||
1976 | err = -EINVAL; | ||
1977 | } | ||
1948 | if (err < 0) { | 1978 | if (err < 0) { |
1949 | stac92xx_free(codec); | 1979 | stac92xx_free(codec); |
1950 | return err; | 1980 | return err; |
@@ -1970,6 +2000,7 @@ static int patch_stac9205(struct hda_codec *codec) | |||
1970 | spec->board_config = snd_hda_check_board_config(codec, STAC_9205_MODELS, | 2000 | spec->board_config = snd_hda_check_board_config(codec, STAC_9205_MODELS, |
1971 | stac9205_models, | 2001 | stac9205_models, |
1972 | stac9205_cfg_tbl); | 2002 | stac9205_cfg_tbl); |
2003 | again: | ||
1973 | if (spec->board_config < 0) { | 2004 | if (spec->board_config < 0) { |
1974 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC9205, using BIOS defaults\n"); | 2005 | snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC9205, using BIOS defaults\n"); |
1975 | err = stac92xx_save_bios_config_regs(codec); | 2006 | err = stac92xx_save_bios_config_regs(codec); |
@@ -2008,6 +2039,15 @@ static int patch_stac9205(struct hda_codec *codec) | |||
2008 | AC_VERB_SET_GPIO_MASK, 0x00000001); | 2039 | AC_VERB_SET_GPIO_MASK, 0x00000001); |
2009 | 2040 | ||
2010 | err = stac92xx_parse_auto_config(codec, 0x1f, 0x20); | 2041 | err = stac92xx_parse_auto_config(codec, 0x1f, 0x20); |
2042 | if (!err) { | ||
2043 | if (spec->board_config < 0) { | ||
2044 | printk(KERN_WARNING "hda_codec: No auto-config is " | ||
2045 | "available, default to model=ref\n"); | ||
2046 | spec->board_config = STAC_9205_REF; | ||
2047 | goto again; | ||
2048 | } | ||
2049 | err = -EINVAL; | ||
2050 | } | ||
2011 | if (err < 0) { | 2051 | if (err < 0) { |
2012 | stac92xx_free(codec); | 2052 | stac92xx_free(codec); |
2013 | return err; | 2053 | return err; |