diff options
| author | Mark Brown <broonie@linaro.org> | 2014-06-01 09:02:07 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@linaro.org> | 2014-06-01 09:02:07 -0400 |
| commit | 287d414eacaa681413ea89adfa5b3a0d12d2ab1a (patch) | |
| tree | a4ef6c55bc2b2177f8a4144663c68e6e345b64cc | |
| parent | 432481220101166a0b33dc6f951b38a8af3d281c (diff) | |
| parent | 7b8751abdd34a2f924c37c29ad61d598f5d29e7b (diff) | |
Merge branch 'topic/fsl' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-fsl-ssi
Conflicts:
sound/soc/fsl/Kconfig
| -rw-r--r-- | sound/soc/fsl/Kconfig | 82 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_esai.c | 9 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_spdif.c | 9 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 1 | ||||
| -rw-r--r-- | sound/soc/fsl/imx-pcm-dma.c | 1 |
5 files changed, 70 insertions, 32 deletions
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig index 2d6281f1e1f4..e218df9aa638 100644 --- a/sound/soc/fsl/Kconfig +++ b/sound/soc/fsl/Kconfig | |||
| @@ -1,31 +1,78 @@ | |||
| 1 | menu "SoC Audio for Freescale CPUs" | ||
| 2 | |||
| 3 | comment "Common SoC Audio options for Freescale CPUs:" | ||
| 4 | |||
| 1 | config SND_SOC_FSL_SAI | 5 | config SND_SOC_FSL_SAI |
| 2 | tristate | 6 | tristate "Synchronous Audio Interface (SAI) module support" |
| 3 | select REGMAP_MMIO | 7 | select REGMAP_MMIO |
| 4 | select SND_SOC_GENERIC_DMAENGINE_PCM | 8 | select SND_SOC_GENERIC_DMAENGINE_PCM |
| 9 | help | ||
| 10 | Say Y if you want to add Synchronous Audio Interface (SAI) | ||
| 11 | support for the Freescale CPUs. | ||
| 12 | This option is only useful for out-of-tree drivers since | ||
| 13 | in-tree drivers select it automatically. | ||
| 5 | 14 | ||
| 6 | config SND_SOC_FSL_SSI | 15 | config SND_SOC_FSL_SSI |
| 16 | tristate "Synchronous Serial Interface module support" | ||
| 17 | select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n | ||
| 18 | select SND_SOC_IMX_PCM_FIQ if SND_IMX_SOC != n && ARCH_MXC | ||
| 7 | select REGMAP_MMIO | 19 | select REGMAP_MMIO |
| 8 | tristate | 20 | help |
| 21 | Say Y if you want to add Synchronous Serial Interface (SSI) | ||
| 22 | support for the Freescale CPUs. | ||
| 23 | This option is only useful for out-of-tree drivers since | ||
| 24 | in-tree drivers select it automatically. | ||
| 9 | 25 | ||
| 10 | config SND_SOC_FSL_SPDIF | 26 | config SND_SOC_FSL_SPDIF |
| 11 | tristate | 27 | tristate "Sony/Philips Digital Interface module support" |
| 12 | select REGMAP_MMIO | 28 | select REGMAP_MMIO |
| 29 | select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n | ||
| 30 | select SND_SOC_IMX_PCM_FIQ if SND_IMX_SOC != n && ARCH_MXC | ||
| 31 | help | ||
| 32 | Say Y if you want to add Sony/Philips Digital Interface (SPDIF) | ||
| 33 | support for the Freescale CPUs. | ||
| 34 | This option is only useful for out-of-tree drivers since | ||
| 35 | in-tree drivers select it automatically. | ||
| 13 | 36 | ||
| 14 | config SND_SOC_FSL_ESAI | 37 | config SND_SOC_FSL_ESAI |
| 15 | tristate | 38 | tristate "Enhanced Serial Audio Interface (ESAI) module support" |
| 16 | select REGMAP_MMIO | 39 | select REGMAP_MMIO |
| 17 | select SND_SOC_FSL_UTILS | 40 | select SND_SOC_FSL_UTILS |
| 41 | help | ||
| 42 | Say Y if you want to add Enhanced Synchronous Audio Interface | ||
| 43 | (ESAI) support for the Freescale CPUs. | ||
| 44 | This option is only useful for out-of-tree drivers since | ||
| 45 | in-tree drivers select it automatically. | ||
| 18 | 46 | ||
| 19 | config SND_SOC_FSL_UTILS | 47 | config SND_SOC_FSL_UTILS |
| 20 | tristate | 48 | tristate |
| 21 | 49 | ||
| 22 | menuconfig SND_POWERPC_SOC | 50 | config SND_SOC_IMX_PCM_DMA |
| 51 | tristate | ||
| 52 | select SND_SOC_GENERIC_DMAENGINE_PCM | ||
| 53 | |||
| 54 | config SND_SOC_IMX_AUDMUX | ||
| 55 | tristate "Digital Audio Mux module support" | ||
| 56 | help | ||
| 57 | Say Y if you want to add Digital Audio Mux (AUDMUX) support | ||
| 58 | for the ARM i.MX CPUs. | ||
| 59 | This option is only useful for out-of-tree drivers since | ||
| 60 | in-tree drivers select it automatically. | ||
| 61 | |||
| 62 | config SND_POWERPC_SOC | ||
| 23 | tristate "SoC Audio for Freescale PowerPC CPUs" | 63 | tristate "SoC Audio for Freescale PowerPC CPUs" |
| 24 | depends on FSL_SOC || PPC_MPC52xx | 64 | depends on FSL_SOC || PPC_MPC52xx |
| 25 | help | 65 | help |
| 26 | Say Y or M if you want to add support for codecs attached to | 66 | Say Y or M if you want to add support for codecs attached to |
| 27 | the PowerPC CPUs. | 67 | the PowerPC CPUs. |
| 28 | 68 | ||
| 69 | config SND_IMX_SOC | ||
| 70 | tristate "SoC Audio for Freescale i.MX CPUs" | ||
| 71 | depends on ARCH_MXC || COMPILE_TEST | ||
| 72 | help | ||
| 73 | Say Y or M if you want to add support for codecs attached to | ||
| 74 | the i.MX CPUs. | ||
| 75 | |||
| 29 | if SND_POWERPC_SOC | 76 | if SND_POWERPC_SOC |
| 30 | 77 | ||
| 31 | config SND_MPC52xx_DMA | 78 | config SND_MPC52xx_DMA |
| @@ -34,6 +81,8 @@ config SND_MPC52xx_DMA | |||
| 34 | config SND_SOC_POWERPC_DMA | 81 | config SND_SOC_POWERPC_DMA |
| 35 | tristate | 82 | tristate |
| 36 | 83 | ||
| 84 | comment "SoC Audio support for Freescale PPC boards:" | ||
| 85 | |||
| 37 | config SND_SOC_MPC8610_HPCD | 86 | config SND_SOC_MPC8610_HPCD |
| 38 | tristate "ALSA SoC support for the Freescale MPC8610 HPCD board" | 87 | tristate "ALSA SoC support for the Freescale MPC8610 HPCD board" |
| 39 | # I2C is necessary for the CS4270 driver | 88 | # I2C is necessary for the CS4270 driver |
| @@ -111,13 +160,6 @@ config SND_MPC52xx_SOC_EFIKA | |||
| 111 | 160 | ||
| 112 | endif # SND_POWERPC_SOC | 161 | endif # SND_POWERPC_SOC |
| 113 | 162 | ||
| 114 | menuconfig SND_IMX_SOC | ||
| 115 | tristate "SoC Audio for Freescale i.MX CPUs" | ||
| 116 | depends on ARCH_MXC || COMPILE_TEST | ||
| 117 | help | ||
| 118 | Say Y or M if you want to add support for codecs attached to | ||
| 119 | the i.MX CPUs. | ||
| 120 | |||
| 121 | if SND_IMX_SOC | 163 | if SND_IMX_SOC |
| 122 | 164 | ||
| 123 | config SND_SOC_IMX_SSI | 165 | config SND_SOC_IMX_SSI |
| @@ -128,12 +170,7 @@ config SND_SOC_IMX_PCM_FIQ | |||
| 128 | tristate | 170 | tristate |
| 129 | select FIQ | 171 | select FIQ |
| 130 | 172 | ||
| 131 | config SND_SOC_IMX_PCM_DMA | 173 | comment "SoC Audio support for Freescale i.MX boards:" |
| 132 | tristate | ||
| 133 | select SND_SOC_GENERIC_DMAENGINE_PCM | ||
| 134 | |||
| 135 | config SND_SOC_IMX_AUDMUX | ||
| 136 | tristate | ||
| 137 | 174 | ||
| 138 | config SND_MXC_SOC_WM1133_EV1 | 175 | config SND_MXC_SOC_WM1133_EV1 |
| 139 | tristate "Audio on the i.MX31ADS with WM1133-EV1 fitted" | 176 | tristate "Audio on the i.MX31ADS with WM1133-EV1 fitted" |
| @@ -171,12 +208,7 @@ config SND_SOC_PHYCORE_AC97 | |||
| 171 | 208 | ||
| 172 | config SND_SOC_EUKREA_TLV320 | 209 | config SND_SOC_EUKREA_TLV320 |
| 173 | tristate "Eukrea TLV320" | 210 | tristate "Eukrea TLV320" |
| 174 | depends on MACH_EUKREA_MBIMX27_BASEBOARD \ | 211 | depends on ARCH_MXC && I2C |
| 175 | || MACH_EUKREA_MBIMXSD25_BASEBOARD \ | ||
| 176 | || MACH_EUKREA_MBIMXSD35_BASEBOARD \ | ||
| 177 | || MACH_EUKREA_MBIMXSD51_BASEBOARD \ | ||
| 178 | || (OF && ARM) | ||
| 179 | depends on I2C | ||
| 180 | select SND_SOC_TLV320AIC23_I2C | 212 | select SND_SOC_TLV320AIC23_I2C |
| 181 | select SND_SOC_IMX_AUDMUX | 213 | select SND_SOC_IMX_AUDMUX |
| 182 | select SND_SOC_IMX_SSI | 214 | select SND_SOC_IMX_SSI |
| @@ -226,3 +258,5 @@ config SND_SOC_IMX_MC13783 | |||
| 226 | select SND_SOC_IMX_PCM_DMA | 258 | select SND_SOC_IMX_PCM_DMA |
| 227 | 259 | ||
| 228 | endif # SND_IMX_SOC | 260 | endif # SND_IMX_SOC |
| 261 | |||
| 262 | endmenu | ||
diff --git a/sound/soc/fsl/fsl_esai.c b/sound/soc/fsl/fsl_esai.c index c8e5db1414d7..b49b78df2f5b 100644 --- a/sound/soc/fsl/fsl_esai.c +++ b/sound/soc/fsl/fsl_esai.c | |||
| @@ -209,8 +209,9 @@ static int fsl_esai_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id, | |||
| 209 | struct clk *clksrc = esai_priv->extalclk; | 209 | struct clk *clksrc = esai_priv->extalclk; |
| 210 | bool tx = clk_id <= ESAI_HCKT_EXTAL; | 210 | bool tx = clk_id <= ESAI_HCKT_EXTAL; |
| 211 | bool in = dir == SND_SOC_CLOCK_IN; | 211 | bool in = dir == SND_SOC_CLOCK_IN; |
| 212 | u32 ret, ratio, ecr = 0; | 212 | u32 ratio, ecr = 0; |
| 213 | unsigned long clk_rate; | 213 | unsigned long clk_rate; |
| 214 | int ret; | ||
| 214 | 215 | ||
| 215 | /* sck_div can be only bypassed if ETO/ERO=0 and SNC_SOC_CLOCK_OUT */ | 216 | /* sck_div can be only bypassed if ETO/ERO=0 and SNC_SOC_CLOCK_OUT */ |
| 216 | esai_priv->sck_div[tx] = true; | 217 | esai_priv->sck_div[tx] = true; |
| @@ -432,8 +433,8 @@ static int fsl_esai_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt) | |||
| 432 | static int fsl_esai_startup(struct snd_pcm_substream *substream, | 433 | static int fsl_esai_startup(struct snd_pcm_substream *substream, |
| 433 | struct snd_soc_dai *dai) | 434 | struct snd_soc_dai *dai) |
| 434 | { | 435 | { |
| 435 | int ret; | ||
| 436 | struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); | 436 | struct fsl_esai *esai_priv = snd_soc_dai_get_drvdata(dai); |
| 437 | int ret; | ||
| 437 | 438 | ||
| 438 | /* | 439 | /* |
| 439 | * Some platforms might use the same bit to gate all three or two of | 440 | * Some platforms might use the same bit to gate all three or two of |
| @@ -491,7 +492,8 @@ static int fsl_esai_hw_params(struct snd_pcm_substream *substream, | |||
| 491 | bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK; | 492 | bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK; |
| 492 | u32 width = snd_pcm_format_width(params_format(params)); | 493 | u32 width = snd_pcm_format_width(params_format(params)); |
| 493 | u32 channels = params_channels(params); | 494 | u32 channels = params_channels(params); |
| 494 | u32 bclk, mask, val, ret; | 495 | u32 bclk, mask, val; |
| 496 | int ret; | ||
| 495 | 497 | ||
| 496 | bclk = params_rate(params) * esai_priv->slot_width * 2; | 498 | bclk = params_rate(params) * esai_priv->slot_width * 2; |
| 497 | 499 | ||
| @@ -816,6 +818,7 @@ static int fsl_esai_probe(struct platform_device *pdev) | |||
| 816 | 818 | ||
| 817 | static const struct of_device_id fsl_esai_dt_ids[] = { | 819 | static const struct of_device_id fsl_esai_dt_ids[] = { |
| 818 | { .compatible = "fsl,imx35-esai", }, | 820 | { .compatible = "fsl,imx35-esai", }, |
| 821 | { .compatible = "fsl,vf610-esai", }, | ||
| 819 | {} | 822 | {} |
| 820 | }; | 823 | }; |
| 821 | MODULE_DEVICE_TABLE(of, fsl_esai_dt_ids); | 824 | MODULE_DEVICE_TABLE(of, fsl_esai_dt_ids); |
diff --git a/sound/soc/fsl/fsl_spdif.c b/sound/soc/fsl/fsl_spdif.c index 6452ca83d889..daa6198ae41f 100644 --- a/sound/soc/fsl/fsl_spdif.c +++ b/sound/soc/fsl/fsl_spdif.c | |||
| @@ -13,18 +13,18 @@ | |||
| 13 | * kind, whether express or implied. | 13 | * kind, whether express or implied. |
| 14 | */ | 14 | */ |
| 15 | 15 | ||
| 16 | #include <linux/module.h> | 16 | #include <linux/bitrev.h> |
| 17 | #include <linux/clk.h> | 17 | #include <linux/clk.h> |
| 18 | #include <linux/clk-private.h> | 18 | #include <linux/clk-private.h> |
| 19 | #include <linux/bitrev.h> | 19 | #include <linux/module.h> |
| 20 | #include <linux/regmap.h> | ||
| 21 | #include <linux/of_address.h> | 20 | #include <linux/of_address.h> |
| 22 | #include <linux/of_device.h> | 21 | #include <linux/of_device.h> |
| 23 | #include <linux/of_irq.h> | 22 | #include <linux/of_irq.h> |
| 23 | #include <linux/regmap.h> | ||
| 24 | 24 | ||
| 25 | #include <sound/asoundef.h> | 25 | #include <sound/asoundef.h> |
| 26 | #include <sound/soc.h> | ||
| 27 | #include <sound/dmaengine_pcm.h> | 26 | #include <sound/dmaengine_pcm.h> |
| 27 | #include <sound/soc.h> | ||
| 28 | 28 | ||
| 29 | #include "fsl_spdif.h" | 29 | #include "fsl_spdif.h" |
| 30 | #include "imx-pcm.h" | 30 | #include "imx-pcm.h" |
| @@ -1186,6 +1186,7 @@ static int fsl_spdif_probe(struct platform_device *pdev) | |||
| 1186 | 1186 | ||
| 1187 | static const struct of_device_id fsl_spdif_dt_ids[] = { | 1187 | static const struct of_device_id fsl_spdif_dt_ids[] = { |
| 1188 | { .compatible = "fsl,imx35-spdif", }, | 1188 | { .compatible = "fsl,imx35-spdif", }, |
| 1189 | { .compatible = "fsl,vf610-spdif", }, | ||
| 1189 | {} | 1190 | {} |
| 1190 | }; | 1191 | }; |
| 1191 | MODULE_DEVICE_TABLE(of, fsl_spdif_dt_ids); | 1192 | MODULE_DEVICE_TABLE(of, fsl_spdif_dt_ids); |
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 8d58b50bfbee..9bfef55d77d1 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
| @@ -39,6 +39,7 @@ | |||
| 39 | #include <linux/delay.h> | 39 | #include <linux/delay.h> |
| 40 | #include <linux/slab.h> | 40 | #include <linux/slab.h> |
| 41 | #include <linux/spinlock.h> | 41 | #include <linux/spinlock.h> |
| 42 | #include <linux/of.h> | ||
| 42 | #include <linux/of_address.h> | 43 | #include <linux/of_address.h> |
| 43 | #include <linux/of_irq.h> | 44 | #include <linux/of_irq.h> |
| 44 | #include <linux/of_platform.h> | 45 | #include <linux/of_platform.h> |
diff --git a/sound/soc/fsl/imx-pcm-dma.c b/sound/soc/fsl/imx-pcm-dma.c index 2585ae44e634..0849b7b83f0a 100644 --- a/sound/soc/fsl/imx-pcm-dma.c +++ b/sound/soc/fsl/imx-pcm-dma.c | |||
| @@ -40,7 +40,6 @@ static const struct snd_pcm_hardware imx_pcm_hardware = { | |||
| 40 | SNDRV_PCM_INFO_MMAP_VALID | | 40 | SNDRV_PCM_INFO_MMAP_VALID | |
| 41 | SNDRV_PCM_INFO_PAUSE | | 41 | SNDRV_PCM_INFO_PAUSE | |
| 42 | SNDRV_PCM_INFO_RESUME, | 42 | SNDRV_PCM_INFO_RESUME, |
| 43 | .formats = SNDRV_PCM_FMTBIT_S16_LE, | ||
| 44 | .buffer_bytes_max = IMX_SSI_DMABUF_SIZE, | 43 | .buffer_bytes_max = IMX_SSI_DMABUF_SIZE, |
| 45 | .period_bytes_min = 128, | 44 | .period_bytes_min = 128, |
| 46 | .period_bytes_max = 65535, /* Limited by SDMA engine */ | 45 | .period_bytes_max = 65535, /* Limited by SDMA engine */ |
