diff options
author | Xinyu Chen <xinyu.chen@freescale.com> | 2012-11-08 10:24:56 +0800 |
---|---|---|
committer | Xinyu Chen <xinyu.chen@freescale.com> | 2012-11-08 10:24:56 +0800 |
commit | ac758db7a1ff13fbde98f4f3d1d2ac2c77780ccf (patch) | |
tree | 47df51297eaaf05ed6abe31df318e799b3946eb7 /sound | |
parent | 249d44a6a33b134efd248e5a6ab759c4218de0de (diff) | |
parent | fa610478f592b1a65fe170848b9d2226cd32a254 (diff) |
Merge remote branch 'fsl-linux-sdk/imx_3.0.35' into imx_3.0.35_android
Conflicts:
arch/arm/plat-mxc/dvfs_core.c
drivers/input/keyboard/mpr121.c
drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c
include/linux/i2c/mpr.h
sound/soc/imx/imx-wm8962.c
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/cs42888.c | 6 | ||||
-rw-r--r-- | sound/soc/codecs/mxc_spdif.c | 8 | ||||
-rw-r--r-- | sound/soc/imx/Makefile | 6 | ||||
-rw-r--r-- | sound/soc/imx/imx-esai.c | 2 | ||||
-rw-r--r-- | sound/soc/imx/imx-hdmi-dma.c | 1 | ||||
-rw-r--r-- | sound/soc/imx/imx-wm8962.c | 40 |
6 files changed, 39 insertions, 24 deletions
diff --git a/sound/soc/codecs/cs42888.c b/sound/soc/codecs/cs42888.c index ce240834b2e1..698ff4b59826 100644 --- a/sound/soc/codecs/cs42888.c +++ b/sound/soc/codecs/cs42888.c @@ -793,7 +793,7 @@ struct snd_soc_dai_driver cs42888_dai[] = { .name = "CS42888", .playback = { .stream_name = "Playback", - .channels_min = 1, + .channels_min = 2, .channels_max = 8, .rates = (SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000), @@ -801,7 +801,7 @@ struct snd_soc_dai_driver cs42888_dai[] = { }, .capture = { .stream_name = "Capture", - .channels_min = 1, + .channels_min = 2, .channels_max = 4, .rates = (SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000), @@ -813,7 +813,7 @@ struct snd_soc_dai_driver cs42888_dai[] = { .name = "CS42888_ASRC", .playback = { .stream_name = "Playback", - .channels_min = 1, + .channels_min = 2, .channels_max = 8, .rates = SNDRV_PCM_RATE_8000_192000, .formats = CS42888_FORMATS, diff --git a/sound/soc/codecs/mxc_spdif.c b/sound/soc/codecs/mxc_spdif.c index c80eed6d80d3..33b23371ea58 100644 --- a/sound/soc/codecs/mxc_spdif.c +++ b/sound/soc/codecs/mxc_spdif.c @@ -849,13 +849,21 @@ static int mxc_pb_spdif_get(struct snd_kcontrol *kcontrol, static int mxc_pb_spdif_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *uvalue) { + struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); + struct mxc_spdif_priv *spdif_priv = snd_soc_codec_get_drvdata(codec); + struct mxc_spdif_platform_data *plat_data = spdif_priv->plat_data; + mxc_spdif_control.ch_status[0] = uvalue->value.iec958.status[0]; mxc_spdif_control.ch_status[1] = uvalue->value.iec958.status[1]; mxc_spdif_control.ch_status[2] = uvalue->value.iec958.status[2]; mxc_spdif_control.ch_status[3] = uvalue->value.iec958.status[3]; + clk_enable(plat_data->spdif_clk); + spdif_write_channel_status(); + clk_disable(plat_data->spdif_clk); + return 0; } diff --git a/sound/soc/imx/Makefile b/sound/soc/imx/Makefile index adeef06f3c7f..cc0a7d997609 100644 --- a/sound/soc/imx/Makefile +++ b/sound/soc/imx/Makefile @@ -1,7 +1,7 @@ # i.MX Platform Support -snd-soc-imx-objs := imx-ssi.o imx-esai.o +snd-soc-imx-objs := imx-ssi.o imx-esai.o imx-hdmi-dai.o hdmi_pcm.o snd-soc-imx-fiq-objs := imx-pcm-fiq.o -snd-soc-imx-mx2-objs := imx-pcm-dma-mx2.o +snd-soc-imx-mx2-objs := imx-pcm-dma-mx2.o imx-hdmi-dma.o snd-soc-imx-spdif-dai-objs := imx-spdif-dai.o obj-$(CONFIG_SND_IMX_SOC) += snd-soc-imx.o @@ -20,7 +20,7 @@ snd-soc-imx-sgtl5000-objs := imx-sgtl5000.o snd-soc-imx-cs42888-objs := imx-cs42888.o snd-soc-imx-spdif-objs := imx-spdif.o snd-soc-imx-si4763-objs := imx-si4763.o -snd-soc-imx-hdmi-objs := imx-hdmi.o imx-hdmi-dai.o imx-hdmi-dma.o hdmi_pcm.o +snd-soc-imx-hdmi-objs := imx-hdmi.o obj-$(CONFIG_SND_SOC_EUKREA_TLV320) += snd-soc-eukrea-tlv320.o obj-$(CONFIG_SND_SOC_PHYCORE_AC97) += snd-soc-phycore-ac97.o diff --git a/sound/soc/imx/imx-esai.c b/sound/soc/imx/imx-esai.c index 359cb2a4aea0..8951a81f6824 100644 --- a/sound/soc/imx/imx-esai.c +++ b/sound/soc/imx/imx-esai.c @@ -579,7 +579,7 @@ static struct snd_soc_dai_driver imx_esai_dai = { .suspend = imx_esai_suspend, .resume = imx_esai_resume, .playback = { - .channels_min = 2, + .channels_min = 1, .channels_max = 12, .rates = IMX_ESAI_RATES, .formats = IMX_ESAI_FORMATS, diff --git a/sound/soc/imx/imx-hdmi-dma.c b/sound/soc/imx/imx-hdmi-dma.c index d0c223645fc8..a359e4cdcfe2 100644 --- a/sound/soc/imx/imx-hdmi-dma.c +++ b/sound/soc/imx/imx-hdmi-dma.c @@ -119,6 +119,7 @@ void hdmi_dma_copy_24_neon_fast(unsigned int *src, unsigned int *dst, int samples); hdmi_audio_header_t iec_header; +EXPORT_SYMBOL(iec_header); /* * Note that the period size for DMA != period size for ALSA because the diff --git a/sound/soc/imx/imx-wm8962.c b/sound/soc/imx/imx-wm8962.c index 87124802095a..2cc1c1b598e6 100644 --- a/sound/soc/imx/imx-wm8962.c +++ b/sound/soc/imx/imx-wm8962.c @@ -332,24 +332,24 @@ static int imx_wm8962_init(struct snd_soc_pcm_runtime *rtd) snd_soc_dapm_sync(&codec->dapm); if (plat->hp_gpio != -1) { - priv->hp_irq = gpio_to_irq(plat->hp_gpio); - - ret = request_irq(priv->hp_irq, - imx_headphone_detect_handler, - IRQ_TYPE_EDGE_BOTH, pdev->name, priv); - - if (ret < 0) { - ret = -EINVAL; - return ret; - } - - ret = driver_create_file(pdev->dev.driver, - &driver_attr_headphone); - if (ret < 0) { - ret = -EINVAL; - return ret; - } + priv->hp_irq = gpio_to_irq(plat->hp_gpio); + + ret = request_irq(priv->hp_irq, + imx_headphone_detect_handler, + IRQ_TYPE_EDGE_BOTH, pdev->name, priv); + + if (ret < 0) { + ret = -EINVAL; + return ret; + } + + ret = driver_create_file(pdev->dev.driver, + &driver_attr_headphone); + if (ret < 0) { + ret = -EINVAL; + return ret; } + } if (plat->mic_gpio != -1) { priv->amic_irq = gpio_to_irq(plat->mic_gpio); @@ -477,6 +477,12 @@ static int __devexit imx_wm8962_remove(struct platform_device *pdev) plat->finit(); switch_dev_unregister(&priv->sdev); + + if (priv->hp_irq) + free_irq(priv->hp_irq, priv); + if (priv->amic_irq) + free_irq(priv->amic_irq, priv); + return 0; } |