diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-05-21 20:54:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-05-21 20:54:00 -0400 |
commit | 0c68e5bf6a5487305cff616aea4d98fa35affc30 (patch) | |
tree | 0f83cc4c3343de55acf697c640d6712aad0af3d3 | |
parent | 18658921a2b5e445fef2450420ba7564e8fa3912 (diff) | |
parent | 219f47e4f96442a7fe8fb646c59c6730690a9e66 (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.c | 1 | ||||
-rw-r--r-- | sound/core/pcm_lib.c | 2 | ||||
-rw-r--r-- | sound/pci/hda/hda_generic.c | 8 | ||||
-rw-r--r-- | sound/pci/hda/patch_conexant.c | 12 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 60 | ||||
-rw-r--r-- | sound/soc/codecs/mc13783.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/uda1380.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/wm8960.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/wm8994.c | 2 | ||||
-rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 2 | ||||
-rw-r--r-- | sound/soc/soc-dapm.c | 11 | ||||
-rw-r--r-- | sound/usb/quirks.c | 1 |
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"); | |||
1002 | MODULE_ALIAS("snd-hda-codec-id:14f150ac"); | 1010 | MODULE_ALIAS("snd-hda-codec-id:14f150ac"); |
1003 | MODULE_ALIAS("snd-hda-codec-id:14f150b8"); | 1011 | MODULE_ALIAS("snd-hda-codec-id:14f150b8"); |
1004 | MODULE_ALIAS("snd-hda-codec-id:14f150b9"); | 1012 | MODULE_ALIAS("snd-hda-codec-id:14f150b9"); |
1013 | MODULE_ALIAS("snd-hda-codec-id:14f150f1"); | ||
1014 | MODULE_ALIAS("snd-hda-codec-id:14f150f2"); | ||
1015 | MODULE_ALIAS("snd-hda-codec-id:14f150f3"); | ||
1016 | MODULE_ALIAS("snd-hda-codec-id:14f150f4"); | ||
1005 | MODULE_ALIAS("snd-hda-codec-id:14f1510f"); | 1017 | MODULE_ALIAS("snd-hda-codec-id:14f1510f"); |
1006 | MODULE_ALIAS("snd-hda-codec-id:14f15110"); | 1018 | MODULE_ALIAS("snd-hda-codec-id:14f15110"); |
1007 | MODULE_ALIAS("snd-hda-codec-id:14f15111"); | 1019 | MODULE_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 | ||
4222 | static 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 | |||
4218 | static void alc_fixup_headset_mode_alc668(struct hda_codec *codec, | 4234 | static 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 | ||
6425 | static const struct snd_hda_pin_quirk alc662_pin_fixup_tbl[] = { | 6467 | static 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 | ||
2756 | static int fs_ratios[] = { | 2756 | static 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 | ||
2760 | static int bclk_divs[] = { | 2760 | static 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 | } |