aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_realtek.c26
-rw-r--r--sound/pci/ice1712/delta.c7
-rw-r--r--sound/soc/blackfin/Kconfig11
-rw-r--r--sound/soc/blackfin/bf5xx-ac97.c4
-rw-r--r--sound/soc/blackfin/bf5xx-tdm.c10
-rw-r--r--sound/soc/pxa/z2.c3
6 files changed, 39 insertions, 22 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 269dbff70b92..be4df4c6fd56 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -1721,7 +1721,9 @@ static void alc_apply_fixup(struct hda_codec *codec, int action)
1721{ 1721{
1722 struct alc_spec *spec = codec->spec; 1722 struct alc_spec *spec = codec->spec;
1723 int id = spec->fixup_id; 1723 int id = spec->fixup_id;
1724#ifdef CONFIG_SND_DEBUG_VERBOSE
1724 const char *modelname = spec->fixup_name; 1725 const char *modelname = spec->fixup_name;
1726#endif
1725 int depth = 0; 1727 int depth = 0;
1726 1728
1727 if (!spec->fixup_list) 1729 if (!spec->fixup_list)
@@ -10930,9 +10932,6 @@ static int alc_auto_add_mic_boost(struct hda_codec *codec)
10930 return 0; 10932 return 0;
10931} 10933}
10932 10934
10933static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec,
10934 const struct auto_pin_cfg *cfg);
10935
10936/* almost identical with ALC880 parser... */ 10935/* almost identical with ALC880 parser... */
10937static int alc882_parse_auto_config(struct hda_codec *codec) 10936static int alc882_parse_auto_config(struct hda_codec *codec)
10938{ 10937{
@@ -10950,10 +10949,7 @@ static int alc882_parse_auto_config(struct hda_codec *codec)
10950 err = alc880_auto_fill_dac_nids(spec, &spec->autocfg); 10949 err = alc880_auto_fill_dac_nids(spec, &spec->autocfg);
10951 if (err < 0) 10950 if (err < 0)
10952 return err; 10951 return err;
10953 if (codec->vendor_id == 0x10ec0887) 10952 err = alc880_auto_create_multi_out_ctls(spec, &spec->autocfg);
10954 err = alc861vd_auto_create_multi_out_ctls(spec, &spec->autocfg);
10955 else
10956 err = alc880_auto_create_multi_out_ctls(spec, &spec->autocfg);
10957 if (err < 0) 10953 if (err < 0)
10958 return err; 10954 return err;
10959 err = alc880_auto_create_extra_out(spec, spec->autocfg.hp_pins[0], 10955 err = alc880_auto_create_extra_out(spec, spec->autocfg.hp_pins[0],
@@ -12635,6 +12631,8 @@ static struct snd_pci_quirk alc262_cfg_tbl[] = {
12635 ALC262_HP_BPC), 12631 ALC262_HP_BPC),
12636 SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1300, "HP xw series", 12632 SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1300, "HP xw series",
12637 ALC262_HP_BPC), 12633 ALC262_HP_BPC),
12634 SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1500, "HP z series",
12635 ALC262_HP_BPC),
12638 SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1700, "HP xw series", 12636 SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1700, "HP xw series",
12639 ALC262_HP_BPC), 12637 ALC262_HP_BPC),
12640 SND_PCI_QUIRK(0x103c, 0x2800, "HP D7000", ALC262_HP_BPC_D7000_WL), 12638 SND_PCI_QUIRK(0x103c, 0x2800, "HP D7000", ALC262_HP_BPC_D7000_WL),
@@ -14957,6 +14955,7 @@ static struct snd_pci_quirk alc269_fixup_tbl[] = {
14957 SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), 14955 SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
14958 SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), 14956 SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
14959 SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), 14957 SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
14958 SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
14960 SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE), 14959 SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE),
14961 SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), 14960 SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
14962 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), 14961 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
@@ -17134,7 +17133,7 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
17134#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c) 17133#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
17135 17134
17136/* add playback controls from the parsed DAC table */ 17135/* add playback controls from the parsed DAC table */
17137/* Based on ALC880 version. But ALC861VD and ALC887 have separate, 17136/* Based on ALC880 version. But ALC861VD has separate,
17138 * different NIDs for mute/unmute switch and volume control */ 17137 * different NIDs for mute/unmute switch and volume control */
17139static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec, 17138static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec,
17140 const struct auto_pin_cfg *cfg) 17139 const struct auto_pin_cfg *cfg)
@@ -19461,6 +19460,7 @@ enum {
19461 ALC662_FIXUP_ASPIRE, 19460 ALC662_FIXUP_ASPIRE,
19462 ALC662_FIXUP_IDEAPAD, 19461 ALC662_FIXUP_IDEAPAD,
19463 ALC272_FIXUP_MARIO, 19462 ALC272_FIXUP_MARIO,
19463 ALC662_FIXUP_CZC_P10T,
19464}; 19464};
19465 19465
19466static const struct alc_fixup alc662_fixups[] = { 19466static const struct alc_fixup alc662_fixups[] = {
@@ -19481,7 +19481,14 @@ static const struct alc_fixup alc662_fixups[] = {
19481 [ALC272_FIXUP_MARIO] = { 19481 [ALC272_FIXUP_MARIO] = {
19482 .type = ALC_FIXUP_FUNC, 19482 .type = ALC_FIXUP_FUNC,
19483 .v.func = alc272_fixup_mario, 19483 .v.func = alc272_fixup_mario,
19484 } 19484 },
19485 [ALC662_FIXUP_CZC_P10T] = {
19486 .type = ALC_FIXUP_VERBS,
19487 .v.verbs = (const struct hda_verb[]) {
19488 {0x14, AC_VERB_SET_EAPD_BTLENABLE, 0},
19489 {}
19490 }
19491 },
19485}; 19492};
19486 19493
19487static struct snd_pci_quirk alc662_fixup_tbl[] = { 19494static struct snd_pci_quirk alc662_fixup_tbl[] = {
@@ -19489,6 +19496,7 @@ static struct snd_pci_quirk alc662_fixup_tbl[] = {
19489 SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), 19496 SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
19490 SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), 19497 SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
19491 SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), 19498 SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD),
19499 SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),
19492 {} 19500 {}
19493}; 19501};
19494 19502
diff --git a/sound/pci/ice1712/delta.c b/sound/pci/ice1712/delta.c
index 7b62de089fee..20c6b079d0df 100644
--- a/sound/pci/ice1712/delta.c
+++ b/sound/pci/ice1712/delta.c
@@ -580,6 +580,7 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice)
580{ 580{
581 int err; 581 int err;
582 struct snd_akm4xxx *ak; 582 struct snd_akm4xxx *ak;
583 unsigned char tmp;
583 584
584 if (ice->eeprom.subvendor == ICE1712_SUBDEVICE_DELTA1010 && 585 if (ice->eeprom.subvendor == ICE1712_SUBDEVICE_DELTA1010 &&
585 ice->eeprom.gpiodir == 0x7b) 586 ice->eeprom.gpiodir == 0x7b)
@@ -622,6 +623,12 @@ static int __devinit snd_ice1712_delta_init(struct snd_ice1712 *ice)
622 break; 623 break;
623 } 624 }
624 625
626 /* initialize the SPI clock to high */
627 tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA);
628 tmp |= ICE1712_DELTA_AP_CCLK;
629 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
630 udelay(5);
631
625 /* initialize spdif */ 632 /* initialize spdif */
626 switch (ice->eeprom.subvendor) { 633 switch (ice->eeprom.subvendor) {
627 case ICE1712_SUBDEVICE_AUDIOPHILE: 634 case ICE1712_SUBDEVICE_AUDIOPHILE:
diff --git a/sound/soc/blackfin/Kconfig b/sound/soc/blackfin/Kconfig
index 3abeeddc67d3..ae403597fd31 100644
--- a/sound/soc/blackfin/Kconfig
+++ b/sound/soc/blackfin/Kconfig
@@ -1,6 +1,7 @@
1config SND_BF5XX_I2S 1config SND_BF5XX_I2S
2 tristate "SoC I2S Audio for the ADI BF5xx chip" 2 tristate "SoC I2S Audio for the ADI BF5xx chip"
3 depends on BLACKFIN 3 depends on BLACKFIN
4 select SND_BF5XX_SOC_SPORT
4 help 5 help
5 Say Y or M if you want to add support for codecs attached to 6 Say Y or M if you want to add support for codecs attached to
6 the Blackfin SPORT (synchronous serial ports) interface in I2S 7 the Blackfin SPORT (synchronous serial ports) interface in I2S
@@ -35,6 +36,7 @@ config SND_BFIN_AD73311_SE
35config SND_BF5XX_TDM 36config SND_BF5XX_TDM
36 tristate "SoC I2S(TDM mode) Audio for the ADI BF5xx chip" 37 tristate "SoC I2S(TDM mode) Audio for the ADI BF5xx chip"
37 depends on (BLACKFIN && SND_SOC) 38 depends on (BLACKFIN && SND_SOC)
39 select SND_BF5XX_SOC_SPORT
38 help 40 help
39 Say Y or M if you want to add support for codecs attached to 41 Say Y or M if you want to add support for codecs attached to
40 the Blackfin SPORT (synchronous serial ports) interface in TDM 42 the Blackfin SPORT (synchronous serial ports) interface in TDM
@@ -61,6 +63,10 @@ config SND_BF5XX_SOC_AD193X
61config SND_BF5XX_AC97 63config SND_BF5XX_AC97
62 tristate "SoC AC97 Audio for the ADI BF5xx chip" 64 tristate "SoC AC97 Audio for the ADI BF5xx chip"
63 depends on BLACKFIN 65 depends on BLACKFIN
66 select AC97_BUS
67 select SND_SOC_AC97_BUS
68 select SND_BF5XX_SOC_SPORT
69 select SND_BF5XX_SOC_AC97
64 help 70 help
65 Say Y or M if you want to add support for codecs attached to 71 Say Y or M if you want to add support for codecs attached to
66 the Blackfin SPORT (synchronous serial ports) interface in slot 16 72 the Blackfin SPORT (synchronous serial ports) interface in slot 16
@@ -122,17 +128,12 @@ config SND_BF5XX_SOC_SPORT
122 128
123config SND_BF5XX_SOC_I2S 129config SND_BF5XX_SOC_I2S
124 tristate 130 tristate
125 select SND_BF5XX_SOC_SPORT
126 131
127config SND_BF5XX_SOC_TDM 132config SND_BF5XX_SOC_TDM
128 tristate 133 tristate
129 select SND_BF5XX_SOC_SPORT
130 134
131config SND_BF5XX_SOC_AC97 135config SND_BF5XX_SOC_AC97
132 tristate 136 tristate
133 select AC97_BUS
134 select SND_SOC_AC97_BUS
135 select SND_BF5XX_SOC_SPORT
136 137
137config SND_BF5XX_SPORT_NUM 138config SND_BF5XX_SPORT_NUM
138 int "Set a SPORT for Sound chip" 139 int "Set a SPORT for Sound chip"
diff --git a/sound/soc/blackfin/bf5xx-ac97.c b/sound/soc/blackfin/bf5xx-ac97.c
index c5f856ec27ca..ffbac26b9bce 100644
--- a/sound/soc/blackfin/bf5xx-ac97.c
+++ b/sound/soc/blackfin/bf5xx-ac97.c
@@ -260,9 +260,9 @@ static int bf5xx_ac97_suspend(struct snd_soc_dai *dai)
260 pr_debug("%s : sport %d\n", __func__, dai->id); 260 pr_debug("%s : sport %d\n", __func__, dai->id);
261 if (!dai->active) 261 if (!dai->active)
262 return 0; 262 return 0;
263 if (dai->capture.active) 263 if (dai->capture_active)
264 sport_rx_stop(sport); 264 sport_rx_stop(sport);
265 if (dai->playback.active) 265 if (dai->playback_active)
266 sport_tx_stop(sport); 266 sport_tx_stop(sport);
267 return 0; 267 return 0;
268} 268}
diff --git a/sound/soc/blackfin/bf5xx-tdm.c b/sound/soc/blackfin/bf5xx-tdm.c
index 125123929f16..5515ac9e05c7 100644
--- a/sound/soc/blackfin/bf5xx-tdm.c
+++ b/sound/soc/blackfin/bf5xx-tdm.c
@@ -210,7 +210,7 @@ static int bf5xx_tdm_set_channel_map(struct snd_soc_dai *dai,
210#ifdef CONFIG_PM 210#ifdef CONFIG_PM
211static int bf5xx_tdm_suspend(struct snd_soc_dai *dai) 211static int bf5xx_tdm_suspend(struct snd_soc_dai *dai)
212{ 212{
213 struct sport_device *sport = dai->private_data; 213 struct sport_device *sport = snd_soc_dai_get_drvdata(dai);
214 214
215 if (!dai->active) 215 if (!dai->active)
216 return 0; 216 return 0;
@@ -235,13 +235,13 @@ static int bf5xx_tdm_resume(struct snd_soc_dai *dai)
235 ret = -EBUSY; 235 ret = -EBUSY;
236 } 236 }
237 237
238 ret = sport_config_rx(sport, IRFS, 0x1F, 0, 0); 238 ret = sport_config_rx(sport, 0, 0x1F, 0, 0);
239 if (ret) { 239 if (ret) {
240 pr_err("SPORT is busy!\n"); 240 pr_err("SPORT is busy!\n");
241 ret = -EBUSY; 241 ret = -EBUSY;
242 } 242 }
243 243
244 ret = sport_config_tx(sport, ITFS, 0x1F, 0, 0); 244 ret = sport_config_tx(sport, 0, 0x1F, 0, 0);
245 if (ret) { 245 if (ret) {
246 pr_err("SPORT is busy!\n"); 246 pr_err("SPORT is busy!\n");
247 ret = -EBUSY; 247 ret = -EBUSY;
@@ -303,14 +303,14 @@ static int __devinit bfin_tdm_probe(struct platform_device *pdev)
303 goto sport_config_err; 303 goto sport_config_err;
304 } 304 }
305 305
306 ret = sport_config_rx(sport_handle, IRFS, 0x1F, 0, 0); 306 ret = sport_config_rx(sport_handle, 0, 0x1F, 0, 0);
307 if (ret) { 307 if (ret) {
308 pr_err("SPORT is busy!\n"); 308 pr_err("SPORT is busy!\n");
309 ret = -EBUSY; 309 ret = -EBUSY;
310 goto sport_config_err; 310 goto sport_config_err;
311 } 311 }
312 312
313 ret = sport_config_tx(sport_handle, ITFS, 0x1F, 0, 0); 313 ret = sport_config_tx(sport_handle, 0, 0x1F, 0, 0);
314 if (ret) { 314 if (ret) {
315 pr_err("SPORT is busy!\n"); 315 pr_err("SPORT is busy!\n");
316 ret = -EBUSY; 316 ret = -EBUSY;
diff --git a/sound/soc/pxa/z2.c b/sound/soc/pxa/z2.c
index 2d4f896d7fec..3ceaef68e01d 100644
--- a/sound/soc/pxa/z2.c
+++ b/sound/soc/pxa/z2.c
@@ -104,6 +104,7 @@ static struct snd_soc_jack_gpio hs_jack_gpios[] = {
104 .name = "hsdet-gpio", 104 .name = "hsdet-gpio",
105 .report = SND_JACK_HEADSET, 105 .report = SND_JACK_HEADSET,
106 .debounce_time = 200, 106 .debounce_time = 200,
107 .invert = 1,
107 }, 108 },
108}; 109};
109 110
@@ -192,7 +193,7 @@ static struct snd_soc_dai_link z2_dai = {
192 .cpu_dai_name = "pxa2xx-i2s", 193 .cpu_dai_name = "pxa2xx-i2s",
193 .codec_dai_name = "wm8750-hifi", 194 .codec_dai_name = "wm8750-hifi",
194 .platform_name = "pxa-pcm-audio", 195 .platform_name = "pxa-pcm-audio",
195 .codec_name = "wm8750-codec.0-001a", 196 .codec_name = "wm8750-codec.0-001b",
196 .init = z2_wm8750_init, 197 .init = z2_wm8750_init,
197 .ops = &z2_ops, 198 .ops = &z2_ops,
198}; 199};