aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-05-21 20:54:00 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-05-21 20:54:00 -0400
commit0c68e5bf6a5487305cff616aea4d98fa35affc30 (patch)
tree0f83cc4c3343de55acf697c640d6712aad0af3d3
parent18658921a2b5e445fef2450420ba7564e8fa3912 (diff)
parent219f47e4f96442a7fe8fb646c59c6730690a9e66 (diff)
Merge tag 'sound-4.1-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "This batch became slightly large, just because I've been on vacation for the last two weeks. Nothing to scare much here, all device-specific fixes, mostly small patches. Majority of patches are for HD-audio, especially Dell machines. The rest are small ASoC fixes for various codecs, and a USB-audio quirk. One PCM fix is included to ease the faulty condition checks in the case of two periods PCM buffers" * tag 'sound-4.1-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda - Disable widget power-saving for ALC292 & co ALSA: hda - Reduce verbs by node power-saves ALSA: sound/atmel/ac97c.c: remove unused variable ALSA: usb-audio: Add quirk for MS LifeCam Studio ALSA: pcm: Modify double acknowledged interrupts check condition ALSA: hda/realtek - ALC292 dock fix for Thinkpad L450 ALSA: hda - Add Conexant codecs CX20721, CX20722, CX20723 and CX20724 ALSA: hda - Fix headset mic and mic-in for a Dell desktop ASoC: wm8994: correct BCLK DIV 348 to 384 ASoC: wm8960: fix "RINPUT3" audio route error ASoC: dapm: Modify widget stream name according to prefix ALSA: hda - Add headset mic quirk for Dell Inspiron 5548 ASoC: rt5645: Fix mask for setting RT5645_DMIC_2_DP_GPIO12 bit ASoC: rt5645: Add ACPI match ID ALSA: hda/realtek - Add ALC298 alias name for Dell ASoC: uda1380: Avoid accessing i2c bus when codec is disabled ALSA: hda/realtek - Fix typo for ALC286/ALC288 ASoC: mc13783: Fix wrong mask value used in mc13xxx_reg_rmw() calls ALSA: hda - Add headphone quirk for Lifebook E752 ASoC: davinci-mcasp: Correct pm status check in suspend callback
-rw-r--r--sound/atmel/ac97c.c1
-rw-r--r--sound/core/pcm_lib.c2
-rw-r--r--sound/pci/hda/hda_generic.c8
-rw-r--r--sound/pci/hda/patch_conexant.c12
-rw-r--r--sound/pci/hda/patch_realtek.c60
-rw-r--r--sound/soc/codecs/mc13783.c4
-rw-r--r--sound/soc/codecs/uda1380.c2
-rw-r--r--sound/soc/codecs/wm8960.c2
-rw-r--r--sound/soc/codecs/wm8994.c2
-rw-r--r--sound/soc/davinci/davinci-mcasp.c2
-rw-r--r--sound/soc/soc-dapm.c11
-rw-r--r--sound/usb/quirks.c1
12 files changed, 93 insertions, 14 deletions
diff --git a/sound/atmel/ac97c.c b/sound/atmel/ac97c.c
index cf4cedf2b420..6dad042630d8 100644
--- a/sound/atmel/ac97c.c
+++ b/sound/atmel/ac97c.c
@@ -916,7 +916,6 @@ static struct ac97c_platform_data *atmel_ac97c_probe_dt(struct device *dev)
916{ 916{
917 struct ac97c_platform_data *pdata; 917 struct ac97c_platform_data *pdata;
918 struct device_node *node = dev->of_node; 918 struct device_node *node = dev->of_node;
919 const struct of_device_id *match;
920 919
921 if (!node) { 920 if (!node) {
922 dev_err(dev, "Device does not have associated DT data\n"); 921 dev_err(dev, "Device does not have associated DT data\n");
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index ac6b33f3779c..7d45645f10ba 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -339,7 +339,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
339 if (delta > new_hw_ptr) { 339 if (delta > new_hw_ptr) {
340 /* check for double acknowledged interrupts */ 340 /* check for double acknowledged interrupts */
341 hdelta = curr_jiffies - runtime->hw_ptr_jiffies; 341 hdelta = curr_jiffies - runtime->hw_ptr_jiffies;
342 if (hdelta > runtime->hw_ptr_buffer_jiffies/2) { 342 if (hdelta > runtime->hw_ptr_buffer_jiffies/2 + 1) {
343 hw_base += runtime->buffer_size; 343 hw_base += runtime->buffer_size;
344 if (hw_base >= runtime->boundary) { 344 if (hw_base >= runtime->boundary) {
345 hw_base = 0; 345 hw_base = 0;
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 788f969b1a68..1c8678775f40 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -844,8 +844,16 @@ static hda_nid_t path_power_update(struct hda_codec *codec,
844 snd_hda_codec_write(codec, nid, 0, 844 snd_hda_codec_write(codec, nid, 0,
845 AC_VERB_SET_POWER_STATE, state); 845 AC_VERB_SET_POWER_STATE, state);
846 changed = nid; 846 changed = nid;
847 /* all known codecs seem to be capable to handl
848 * widgets state even in D3, so far.
849 * if any new codecs need to restore the widget
850 * states after D0 transition, call the function
851 * below.
852 */
853#if 0 /* disabled */
847 if (state == AC_PWRST_D0) 854 if (state == AC_PWRST_D0)
848 snd_hdac_regmap_sync_node(&codec->core, nid); 855 snd_hdac_regmap_sync_node(&codec->core, nid);
856#endif
849 } 857 }
850 } 858 }
851 return changed; 859 return changed;
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index f8f0dfbef149..78b719b5b34d 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -968,6 +968,14 @@ static const struct hda_codec_preset snd_hda_preset_conexant[] = {
968 .patch = patch_conexant_auto }, 968 .patch = patch_conexant_auto },
969 { .id = 0x14f150b9, .name = "CX20665", 969 { .id = 0x14f150b9, .name = "CX20665",
970 .patch = patch_conexant_auto }, 970 .patch = patch_conexant_auto },
971 { .id = 0x14f150f1, .name = "CX20721",
972 .patch = patch_conexant_auto },
973 { .id = 0x14f150f2, .name = "CX20722",
974 .patch = patch_conexant_auto },
975 { .id = 0x14f150f3, .name = "CX20723",
976 .patch = patch_conexant_auto },
977 { .id = 0x14f150f4, .name = "CX20724",
978 .patch = patch_conexant_auto },
971 { .id = 0x14f1510f, .name = "CX20751/2", 979 { .id = 0x14f1510f, .name = "CX20751/2",
972 .patch = patch_conexant_auto }, 980 .patch = patch_conexant_auto },
973 { .id = 0x14f15110, .name = "CX20751/2", 981 { .id = 0x14f15110, .name = "CX20751/2",
@@ -1002,6 +1010,10 @@ MODULE_ALIAS("snd-hda-codec-id:14f150ab");
1002MODULE_ALIAS("snd-hda-codec-id:14f150ac"); 1010MODULE_ALIAS("snd-hda-codec-id:14f150ac");
1003MODULE_ALIAS("snd-hda-codec-id:14f150b8"); 1011MODULE_ALIAS("snd-hda-codec-id:14f150b8");
1004MODULE_ALIAS("snd-hda-codec-id:14f150b9"); 1012MODULE_ALIAS("snd-hda-codec-id:14f150b9");
1013MODULE_ALIAS("snd-hda-codec-id:14f150f1");
1014MODULE_ALIAS("snd-hda-codec-id:14f150f2");
1015MODULE_ALIAS("snd-hda-codec-id:14f150f3");
1016MODULE_ALIAS("snd-hda-codec-id:14f150f4");
1005MODULE_ALIAS("snd-hda-codec-id:14f1510f"); 1017MODULE_ALIAS("snd-hda-codec-id:14f1510f");
1006MODULE_ALIAS("snd-hda-codec-id:14f15110"); 1018MODULE_ALIAS("snd-hda-codec-id:14f15110");
1007MODULE_ALIAS("snd-hda-codec-id:14f15111"); 1019MODULE_ALIAS("snd-hda-codec-id:14f15111");
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index e2afd53cc14c..31f8f13be907 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -883,6 +883,7 @@ static struct alc_codec_rename_pci_table rename_pci_tbl[] = {
883 { 0x10ec0668, 0x1028, 0, "ALC3661" }, 883 { 0x10ec0668, 0x1028, 0, "ALC3661" },
884 { 0x10ec0275, 0x1028, 0, "ALC3260" }, 884 { 0x10ec0275, 0x1028, 0, "ALC3260" },
885 { 0x10ec0899, 0x1028, 0, "ALC3861" }, 885 { 0x10ec0899, 0x1028, 0, "ALC3861" },
886 { 0x10ec0298, 0x1028, 0, "ALC3266" },
886 { 0x10ec0670, 0x1025, 0, "ALC669X" }, 887 { 0x10ec0670, 0x1025, 0, "ALC669X" },
887 { 0x10ec0676, 0x1025, 0, "ALC679X" }, 888 { 0x10ec0676, 0x1025, 0, "ALC679X" },
888 { 0x10ec0282, 0x1043, 0, "ALC3229" }, 889 { 0x10ec0282, 0x1043, 0, "ALC3229" },
@@ -3673,6 +3674,10 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
3673 alc_process_coef_fw(codec, coef0293); 3674 alc_process_coef_fw(codec, coef0293);
3674 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50); 3675 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50);
3675 break; 3676 break;
3677 case 0x10ec0662:
3678 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
3679 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50);
3680 break;
3676 case 0x10ec0668: 3681 case 0x10ec0668:
3677 alc_write_coef_idx(codec, 0x11, 0x0001); 3682 alc_write_coef_idx(codec, 0x11, 0x0001);
3678 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0); 3683 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
@@ -3738,7 +3743,6 @@ static void alc_headset_mode_default(struct hda_codec *codec)
3738 case 0x10ec0288: 3743 case 0x10ec0288:
3739 alc_process_coef_fw(codec, coef0288); 3744 alc_process_coef_fw(codec, coef0288);
3740 break; 3745 break;
3741 break;
3742 case 0x10ec0292: 3746 case 0x10ec0292:
3743 alc_process_coef_fw(codec, coef0292); 3747 alc_process_coef_fw(codec, coef0292);
3744 break; 3748 break;
@@ -4012,7 +4016,7 @@ static void alc_update_headset_mode(struct hda_codec *codec)
4012 if (new_headset_mode != ALC_HEADSET_MODE_MIC) { 4016 if (new_headset_mode != ALC_HEADSET_MODE_MIC) {
4013 snd_hda_set_pin_ctl_cache(codec, hp_pin, 4017 snd_hda_set_pin_ctl_cache(codec, hp_pin,
4014 AC_PINCTL_OUT_EN | AC_PINCTL_HP_EN); 4018 AC_PINCTL_OUT_EN | AC_PINCTL_HP_EN);
4015 if (spec->headphone_mic_pin) 4019 if (spec->headphone_mic_pin && spec->headphone_mic_pin != hp_pin)
4016 snd_hda_set_pin_ctl_cache(codec, spec->headphone_mic_pin, 4020 snd_hda_set_pin_ctl_cache(codec, spec->headphone_mic_pin,
4017 PIN_VREFHIZ); 4021 PIN_VREFHIZ);
4018 } 4022 }
@@ -4215,6 +4219,18 @@ static void alc_fixup_dell_xps13(struct hda_codec *codec,
4215 } 4219 }
4216} 4220}
4217 4221
4222static void alc_fixup_headset_mode_alc662(struct hda_codec *codec,
4223 const struct hda_fixup *fix, int action)
4224{
4225 struct alc_spec *spec = codec->spec;
4226
4227 if (action == HDA_FIXUP_ACT_PRE_PROBE) {
4228 spec->parse_flags |= HDA_PINCFG_HEADSET_MIC;
4229 spec->gen.hp_mic = 1; /* Mic-in is same pin as headphone */
4230 } else
4231 alc_fixup_headset_mode(codec, fix, action);
4232}
4233
4218static void alc_fixup_headset_mode_alc668(struct hda_codec *codec, 4234static void alc_fixup_headset_mode_alc668(struct hda_codec *codec,
4219 const struct hda_fixup *fix, int action) 4235 const struct hda_fixup *fix, int action)
4220{ 4236{
@@ -5119,6 +5135,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
5119 SND_PCI_QUIRK(0x104d, 0x9099, "Sony VAIO S13", ALC275_FIXUP_SONY_DISABLE_AAMIX), 5135 SND_PCI_QUIRK(0x104d, 0x9099, "Sony VAIO S13", ALC275_FIXUP_SONY_DISABLE_AAMIX),
5120 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK), 5136 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK),
5121 SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN), 5137 SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
5138 SND_PCI_QUIRK(0x10cf, 0x1757, "Lifebook E752", ALC269_FIXUP_LIFEBOOK_HP_PIN),
5122 SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC), 5139 SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
5123 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), 5140 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
5124 SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_BXBT2807_MIC), 5141 SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_BXBT2807_MIC),
@@ -5148,6 +5165,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
5148 SND_PCI_QUIRK(0x17aa, 0x5026, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), 5165 SND_PCI_QUIRK(0x17aa, 0x5026, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
5149 SND_PCI_QUIRK(0x17aa, 0x5034, "Thinkpad T450", ALC292_FIXUP_TPT440_DOCK), 5166 SND_PCI_QUIRK(0x17aa, 0x5034, "Thinkpad T450", ALC292_FIXUP_TPT440_DOCK),
5150 SND_PCI_QUIRK(0x17aa, 0x5036, "Thinkpad T450s", ALC292_FIXUP_TPT440_DOCK), 5167 SND_PCI_QUIRK(0x17aa, 0x5036, "Thinkpad T450s", ALC292_FIXUP_TPT440_DOCK),
5168 SND_PCI_QUIRK(0x17aa, 0x503c, "Thinkpad L450", ALC292_FIXUP_TPT440_DOCK),
5151 SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), 5169 SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
5152 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), 5170 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
5153 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), 5171 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
@@ -5345,6 +5363,13 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
5345 {0x17, 0x40000000}, 5363 {0x17, 0x40000000},
5346 {0x1d, 0x40700001}, 5364 {0x1d, 0x40700001},
5347 {0x21, 0x02211050}), 5365 {0x21, 0x02211050}),
5366 SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell Inspiron 5548", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
5367 ALC255_STANDARD_PINS,
5368 {0x12, 0x90a60180},
5369 {0x14, 0x90170130},
5370 {0x17, 0x40000000},
5371 {0x1d, 0x40700001},
5372 {0x21, 0x02211040}),
5348 SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, 5373 SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
5349 ALC256_STANDARD_PINS, 5374 ALC256_STANDARD_PINS,
5350 {0x13, 0x40000000}), 5375 {0x13, 0x40000000}),
@@ -5598,7 +5623,8 @@ static int patch_alc269(struct hda_codec *codec)
5598 5623
5599 spec = codec->spec; 5624 spec = codec->spec;
5600 spec->gen.shared_mic_vref_pin = 0x18; 5625 spec->gen.shared_mic_vref_pin = 0x18;
5601 codec->power_save_node = 1; 5626 if (codec->core.vendor_id != 0x10ec0292)
5627 codec->power_save_node = 1;
5602 5628
5603 snd_hda_pick_fixup(codec, alc269_fixup_models, 5629 snd_hda_pick_fixup(codec, alc269_fixup_models,
5604 alc269_fixup_tbl, alc269_fixups); 5630 alc269_fixup_tbl, alc269_fixups);
@@ -6079,7 +6105,9 @@ enum {
6079 ALC662_FIXUP_NO_JACK_DETECT, 6105 ALC662_FIXUP_NO_JACK_DETECT,
6080 ALC662_FIXUP_ZOTAC_Z68, 6106 ALC662_FIXUP_ZOTAC_Z68,
6081 ALC662_FIXUP_INV_DMIC, 6107 ALC662_FIXUP_INV_DMIC,
6108 ALC662_FIXUP_DELL_MIC_NO_PRESENCE,
6082 ALC668_FIXUP_DELL_MIC_NO_PRESENCE, 6109 ALC668_FIXUP_DELL_MIC_NO_PRESENCE,
6110 ALC662_FIXUP_HEADSET_MODE,
6083 ALC668_FIXUP_HEADSET_MODE, 6111 ALC668_FIXUP_HEADSET_MODE,
6084 ALC662_FIXUP_BASS_MODE4_CHMAP, 6112 ALC662_FIXUP_BASS_MODE4_CHMAP,
6085 ALC662_FIXUP_BASS_16, 6113 ALC662_FIXUP_BASS_16,
@@ -6272,6 +6300,20 @@ static const struct hda_fixup alc662_fixups[] = {
6272 .chained = true, 6300 .chained = true,
6273 .chain_id = ALC668_FIXUP_DELL_MIC_NO_PRESENCE 6301 .chain_id = ALC668_FIXUP_DELL_MIC_NO_PRESENCE
6274 }, 6302 },
6303 [ALC662_FIXUP_DELL_MIC_NO_PRESENCE] = {
6304 .type = HDA_FIXUP_PINS,
6305 .v.pins = (const struct hda_pintbl[]) {
6306 { 0x19, 0x03a1113c }, /* use as headset mic, without its own jack detect */
6307 /* headphone mic by setting pin control of 0x1b (headphone out) to in + vref_50 */
6308 { }
6309 },
6310 .chained = true,
6311 .chain_id = ALC662_FIXUP_HEADSET_MODE
6312 },
6313 [ALC662_FIXUP_HEADSET_MODE] = {
6314 .type = HDA_FIXUP_FUNC,
6315 .v.func = alc_fixup_headset_mode_alc662,
6316 },
6275 [ALC668_FIXUP_DELL_MIC_NO_PRESENCE] = { 6317 [ALC668_FIXUP_DELL_MIC_NO_PRESENCE] = {
6276 .type = HDA_FIXUP_PINS, 6318 .type = HDA_FIXUP_PINS,
6277 .v.pins = (const struct hda_pintbl[]) { 6319 .v.pins = (const struct hda_pintbl[]) {
@@ -6423,6 +6465,18 @@ static const struct hda_model_fixup alc662_fixup_models[] = {
6423}; 6465};
6424 6466
6425static const struct snd_hda_pin_quirk alc662_pin_fixup_tbl[] = { 6467static const struct snd_hda_pin_quirk alc662_pin_fixup_tbl[] = {
6468 SND_HDA_PIN_QUIRK(0x10ec0662, 0x1028, "Dell", ALC662_FIXUP_DELL_MIC_NO_PRESENCE,
6469 {0x12, 0x4004c000},
6470 {0x14, 0x01014010},
6471 {0x15, 0x411111f0},
6472 {0x16, 0x411111f0},
6473 {0x18, 0x01a19020},
6474 {0x19, 0x411111f0},
6475 {0x1a, 0x0181302f},
6476 {0x1b, 0x0221401f},
6477 {0x1c, 0x411111f0},
6478 {0x1d, 0x4054c601},
6479 {0x1e, 0x411111f0}),
6426 SND_HDA_PIN_QUIRK(0x10ec0668, 0x1028, "Dell", ALC668_FIXUP_AUTO_MUTE, 6480 SND_HDA_PIN_QUIRK(0x10ec0668, 0x1028, "Dell", ALC668_FIXUP_AUTO_MUTE,
6427 {0x12, 0x99a30130}, 6481 {0x12, 0x99a30130},
6428 {0x14, 0x90170110}, 6482 {0x14, 0x90170110},
diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c
index 2ffb9a0570dc..3d44fc50e4d0 100644
--- a/sound/soc/codecs/mc13783.c
+++ b/sound/soc/codecs/mc13783.c
@@ -623,14 +623,14 @@ static int mc13783_probe(struct snd_soc_codec *codec)
623 AUDIO_SSI_SEL, 0); 623 AUDIO_SSI_SEL, 0);
624 else 624 else
625 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_CODEC, 625 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_CODEC,
626 0, AUDIO_SSI_SEL); 626 AUDIO_SSI_SEL, AUDIO_SSI_SEL);
627 627
628 if (priv->dac_ssi_port == MC13783_SSI1_PORT) 628 if (priv->dac_ssi_port == MC13783_SSI1_PORT)
629 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC, 629 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC,
630 AUDIO_SSI_SEL, 0); 630 AUDIO_SSI_SEL, 0);
631 else 631 else
632 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC, 632 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC,
633 0, AUDIO_SSI_SEL); 633 AUDIO_SSI_SEL, AUDIO_SSI_SEL);
634 634
635 return 0; 635 return 0;
636} 636}
diff --git a/sound/soc/codecs/uda1380.c b/sound/soc/codecs/uda1380.c
index dc7778b6dd7f..c3c33bd0df1c 100644
--- a/sound/soc/codecs/uda1380.c
+++ b/sound/soc/codecs/uda1380.c
@@ -437,7 +437,7 @@ static int uda1380_set_dai_fmt_both(struct snd_soc_dai *codec_dai,
437 if ((fmt & SND_SOC_DAIFMT_MASTER_MASK) != SND_SOC_DAIFMT_CBS_CFS) 437 if ((fmt & SND_SOC_DAIFMT_MASTER_MASK) != SND_SOC_DAIFMT_CBS_CFS)
438 return -EINVAL; 438 return -EINVAL;
439 439
440 uda1380_write(codec, UDA1380_IFACE, iface); 440 uda1380_write_reg_cache(codec, UDA1380_IFACE, iface);
441 441
442 return 0; 442 return 0;
443} 443}
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
index 3035d9856415..e97a7615df85 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -395,7 +395,7 @@ static const struct snd_soc_dapm_route audio_paths[] = {
395 { "Right Input Mixer", "Boost Switch", "Right Boost Mixer", }, 395 { "Right Input Mixer", "Boost Switch", "Right Boost Mixer", },
396 { "Right Input Mixer", NULL, "RINPUT1", }, /* Really Boost Switch */ 396 { "Right Input Mixer", NULL, "RINPUT1", }, /* Really Boost Switch */
397 { "Right Input Mixer", NULL, "RINPUT2" }, 397 { "Right Input Mixer", NULL, "RINPUT2" },
398 { "Right Input Mixer", NULL, "LINPUT3" }, 398 { "Right Input Mixer", NULL, "RINPUT3" },
399 399
400 { "Left ADC", NULL, "Left Input Mixer" }, 400 { "Left ADC", NULL, "Left Input Mixer" },
401 { "Right ADC", NULL, "Right Input Mixer" }, 401 { "Right ADC", NULL, "Right Input Mixer" },
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index 4fbc7689339a..a1c04dab6684 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -2754,7 +2754,7 @@ static struct {
2754}; 2754};
2755 2755
2756static int fs_ratios[] = { 2756static int fs_ratios[] = {
2757 64, 128, 192, 256, 348, 512, 768, 1024, 1408, 1536 2757 64, 128, 192, 256, 384, 512, 768, 1024, 1408, 1536
2758}; 2758};
2759 2759
2760static int bclk_divs[] = { 2760static int bclk_divs[] = {
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
index bb4b78eada58..23c91fa65ab8 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -1247,7 +1247,7 @@ static int davinci_mcasp_suspend(struct snd_soc_dai *dai)
1247 u32 reg; 1247 u32 reg;
1248 int i; 1248 int i;
1249 1249
1250 context->pm_state = pm_runtime_enabled(mcasp->dev); 1250 context->pm_state = pm_runtime_active(mcasp->dev);
1251 if (!context->pm_state) 1251 if (!context->pm_state)
1252 pm_runtime_get_sync(mcasp->dev); 1252 pm_runtime_get_sync(mcasp->dev);
1253 1253
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index defe0f0082b5..158204d08924 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -3100,11 +3100,16 @@ snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm,
3100 } 3100 }
3101 3101
3102 prefix = soc_dapm_prefix(dapm); 3102 prefix = soc_dapm_prefix(dapm);
3103 if (prefix) 3103 if (prefix) {
3104 w->name = kasprintf(GFP_KERNEL, "%s %s", prefix, widget->name); 3104 w->name = kasprintf(GFP_KERNEL, "%s %s", prefix, widget->name);
3105 else 3105 if (widget->sname)
3106 w->sname = kasprintf(GFP_KERNEL, "%s %s", prefix,
3107 widget->sname);
3108 } else {
3106 w->name = kasprintf(GFP_KERNEL, "%s", widget->name); 3109 w->name = kasprintf(GFP_KERNEL, "%s", widget->name);
3107 3110 if (widget->sname)
3111 w->sname = kasprintf(GFP_KERNEL, "%s", widget->sname);
3112 }
3108 if (w->name == NULL) { 3113 if (w->name == NULL) {
3109 kfree(w); 3114 kfree(w);
3110 return NULL; 3115 return NULL;
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 7c5a70139278..46facfc9aec1 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1117,6 +1117,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
1117 switch (chip->usb_id) { 1117 switch (chip->usb_id) {
1118 case USB_ID(0x045E, 0x075D): /* MS Lifecam Cinema */ 1118 case USB_ID(0x045E, 0x075D): /* MS Lifecam Cinema */
1119 case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */ 1119 case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */
1120 case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */
1120 case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */ 1121 case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
1121 return true; 1122 return true;
1122 } 1123 }