aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-07-11 15:45:59 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-11 15:45:59 -0400
commit0fb3767b0a5601dd0d528bc8dbefc0567a34b7ec (patch)
tree76eed01d088080863f5bf97e37ae4ec1adf9d0a5
parent0edcd16a4def296bd6492ae0c10a3c4aef9ef7c0 (diff)
parent42d4ab832d843b5a512b373c86e70caa43a041c8 (diff)
Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "A few small fixes (and cleanups) for HD-audio, USB-audio and ASoC" * tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: usb-audio: fix regression for fixed stream quirk ALSA: hda - Keep halting ALC5505 DSP ASoC: wm8962: fix NULL pdata pointer ASoC: imx-sgtl5000: return E_PROBE_DEFER if ssi/codec not found ASoC: Samsung: Remove redundant comment ALSA: hda - Fix EAPD vmaster hook for AD1884 & co ASoC: samsung: Remove obsolete GPIO based DT pinmuxing ASoC: mxs: register saif mclk to clock framework
-rw-r--r--sound/pci/hda/patch_analog.c12
-rw-r--r--sound/pci/hda/patch_realtek.c19
-rw-r--r--sound/soc/codecs/wm8962.c2
-rw-r--r--sound/soc/fsl/imx-sgtl5000.c4
-rw-r--r--sound/soc/mxs/mxs-saif.c35
-rw-r--r--sound/soc/samsung/i2s.c66
-rw-r--r--sound/soc/samsung/s3c-i2s-v2.c4
-rw-r--r--sound/usb/quirks.c4
8 files changed, 73 insertions, 73 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 977b0d878dae..d97f0d61a15b 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -2112,6 +2112,9 @@ static void ad_vmaster_eapd_hook(void *private_data, int enabled)
2112{ 2112{
2113 struct hda_codec *codec = private_data; 2113 struct hda_codec *codec = private_data;
2114 struct ad198x_spec *spec = codec->spec; 2114 struct ad198x_spec *spec = codec->spec;
2115
2116 if (!spec->eapd_nid)
2117 return;
2115 snd_hda_codec_update_cache(codec, spec->eapd_nid, 0, 2118 snd_hda_codec_update_cache(codec, spec->eapd_nid, 0,
2116 AC_VERB_SET_EAPD_BTLENABLE, 2119 AC_VERB_SET_EAPD_BTLENABLE,
2117 enabled ? 0x02 : 0x00); 2120 enabled ? 0x02 : 0x00);
@@ -3601,13 +3604,16 @@ static void ad1884_fixup_hp_eapd(struct hda_codec *codec,
3601{ 3604{
3602 struct ad198x_spec *spec = codec->spec; 3605 struct ad198x_spec *spec = codec->spec;
3603 3606
3604 if (action == HDA_FIXUP_ACT_PRE_PROBE) { 3607 switch (action) {
3608 case HDA_FIXUP_ACT_PRE_PROBE:
3609 spec->gen.vmaster_mute.hook = ad_vmaster_eapd_hook;
3610 break;
3611 case HDA_FIXUP_ACT_PROBE:
3605 if (spec->gen.autocfg.line_out_type == AUTO_PIN_SPEAKER_OUT) 3612 if (spec->gen.autocfg.line_out_type == AUTO_PIN_SPEAKER_OUT)
3606 spec->eapd_nid = spec->gen.autocfg.line_out_pins[0]; 3613 spec->eapd_nid = spec->gen.autocfg.line_out_pins[0];
3607 else 3614 else
3608 spec->eapd_nid = spec->gen.autocfg.speaker_pins[0]; 3615 spec->eapd_nid = spec->gen.autocfg.speaker_pins[0];
3609 if (spec->eapd_nid) 3616 break;
3610 spec->gen.vmaster_mute.hook = ad_vmaster_eapd_hook;
3611 } 3617 }
3612} 3618}
3613 3619
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 14ac9b0e740c..8bd226149868 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -37,6 +37,9 @@
37#include "hda_jack.h" 37#include "hda_jack.h"
38#include "hda_generic.h" 38#include "hda_generic.h"
39 39
40/* keep halting ALC5505 DSP, for power saving */
41#define HALT_REALTEK_ALC5505
42
40/* unsol event tags */ 43/* unsol event tags */
41#define ALC_DCVOL_EVENT 0x08 44#define ALC_DCVOL_EVENT 0x08
42 45
@@ -2659,15 +2662,27 @@ static void alc5505_dsp_init(struct hda_codec *codec)
2659 alc5505_coef_set(codec, 0x880c, 0x00000004); /* DRAM Function control */ 2662 alc5505_coef_set(codec, 0x880c, 0x00000004); /* DRAM Function control */
2660 alc5505_coef_set(codec, 0x880c, 0x00000003); 2663 alc5505_coef_set(codec, 0x880c, 0x00000003);
2661 alc5505_coef_set(codec, 0x880c, 0x00000010); 2664 alc5505_coef_set(codec, 0x880c, 0x00000010);
2665
2666#ifdef HALT_REALTEK_ALC5505
2667 alc5505_dsp_halt(codec);
2668#endif
2662} 2669}
2663 2670
2671#ifdef HALT_REALTEK_ALC5505
2672#define alc5505_dsp_suspend(codec) /* NOP */
2673#define alc5505_dsp_resume(codec) /* NOP */
2674#else
2675#define alc5505_dsp_suspend(codec) alc5505_dsp_halt(codec)
2676#define alc5505_dsp_resume(codec) alc5505_dsp_back_from_halt(codec)
2677#endif
2678
2664#ifdef CONFIG_PM 2679#ifdef CONFIG_PM
2665static int alc269_suspend(struct hda_codec *codec) 2680static int alc269_suspend(struct hda_codec *codec)
2666{ 2681{
2667 struct alc_spec *spec = codec->spec; 2682 struct alc_spec *spec = codec->spec;
2668 2683
2669 if (spec->has_alc5505_dsp) 2684 if (spec->has_alc5505_dsp)
2670 alc5505_dsp_halt(codec); 2685 alc5505_dsp_suspend(codec);
2671 return alc_suspend(codec); 2686 return alc_suspend(codec);
2672} 2687}
2673 2688
@@ -2696,7 +2711,7 @@ static int alc269_resume(struct hda_codec *codec)
2696 alc_inv_dmic_sync(codec, true); 2711 alc_inv_dmic_sync(codec, true);
2697 hda_call_check_power_status(codec, 0x01); 2712 hda_call_check_power_status(codec, 0x01);
2698 if (spec->has_alc5505_dsp) 2713 if (spec->has_alc5505_dsp)
2699 alc5505_dsp_back_from_halt(codec); 2714 alc5505_dsp_resume(codec);
2700 return 0; 2715 return 0;
2701} 2716}
2702#endif /* CONFIG_PM */ 2717#endif /* CONFIG_PM */
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index b1dc7d426438..e2de9ecfd641 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -3377,7 +3377,7 @@ static int wm8962_probe(struct snd_soc_codec *codec)
3377{ 3377{
3378 int ret; 3378 int ret;
3379 struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec); 3379 struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
3380 struct wm8962_pdata *pdata = dev_get_platdata(codec->dev); 3380 struct wm8962_pdata *pdata = &wm8962->pdata;
3381 int i, trigger, irq_pol; 3381 int i, trigger, irq_pol;
3382 bool dmicclk, dmicdat; 3382 bool dmicclk, dmicdat;
3383 3383
diff --git a/sound/soc/fsl/imx-sgtl5000.c b/sound/soc/fsl/imx-sgtl5000.c
index 7a8bc1220b2e..3f726e4f88db 100644
--- a/sound/soc/fsl/imx-sgtl5000.c
+++ b/sound/soc/fsl/imx-sgtl5000.c
@@ -113,13 +113,13 @@ static int imx_sgtl5000_probe(struct platform_device *pdev)
113 ssi_pdev = of_find_device_by_node(ssi_np); 113 ssi_pdev = of_find_device_by_node(ssi_np);
114 if (!ssi_pdev) { 114 if (!ssi_pdev) {
115 dev_err(&pdev->dev, "failed to find SSI platform device\n"); 115 dev_err(&pdev->dev, "failed to find SSI platform device\n");
116 ret = -EINVAL; 116 ret = -EPROBE_DEFER;
117 goto fail; 117 goto fail;
118 } 118 }
119 codec_dev = of_find_i2c_device_by_node(codec_np); 119 codec_dev = of_find_i2c_device_by_node(codec_np);
120 if (!codec_dev) { 120 if (!codec_dev) {
121 dev_err(&pdev->dev, "failed to find codec platform device\n"); 121 dev_err(&pdev->dev, "failed to find codec platform device\n");
122 return -EINVAL; 122 return -EPROBE_DEFER;
123 } 123 }
124 124
125 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); 125 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
diff --git a/sound/soc/mxs/mxs-saif.c b/sound/soc/mxs/mxs-saif.c
index 49d870034bc3..54511c5e6a7c 100644
--- a/sound/soc/mxs/mxs-saif.c
+++ b/sound/soc/mxs/mxs-saif.c
@@ -24,6 +24,7 @@
24#include <linux/slab.h> 24#include <linux/slab.h>
25#include <linux/dma-mapping.h> 25#include <linux/dma-mapping.h>
26#include <linux/clk.h> 26#include <linux/clk.h>
27#include <linux/clk-provider.h>
27#include <linux/delay.h> 28#include <linux/delay.h>
28#include <linux/time.h> 29#include <linux/time.h>
29#include <sound/core.h> 30#include <sound/core.h>
@@ -658,6 +659,33 @@ static irqreturn_t mxs_saif_irq(int irq, void *dev_id)
658 return IRQ_HANDLED; 659 return IRQ_HANDLED;
659} 660}
660 661
662static int mxs_saif_mclk_init(struct platform_device *pdev)
663{
664 struct mxs_saif *saif = platform_get_drvdata(pdev);
665 struct device_node *np = pdev->dev.of_node;
666 struct clk *clk;
667 int ret;
668
669 clk = clk_register_divider(&pdev->dev, "mxs_saif_mclk",
670 __clk_get_name(saif->clk), 0,
671 saif->base + SAIF_CTRL,
672 BP_SAIF_CTRL_BITCLK_MULT_RATE, 3,
673 0, NULL);
674 if (IS_ERR(clk)) {
675 ret = PTR_ERR(clk);
676 if (ret == -EEXIST)
677 return 0;
678 dev_err(&pdev->dev, "failed to register mclk: %d\n", ret);
679 return PTR_ERR(clk);
680 }
681
682 ret = of_clk_add_provider(np, of_clk_src_simple_get, clk);
683 if (ret)
684 return ret;
685
686 return 0;
687