aboutsummaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-06-03 11:51:14 +0200
committerTakashi Iwai <tiwai@suse.de>2014-06-03 11:51:14 +0200
commit8743dcd6639c28204ac03fb3e9db7932e3d85418 (patch)
tree53b80846cf6731ddb196d522ed2bbf0f76da8344 /sound
parentefd4b76ef789541e7046e873b3546209352cdb59 (diff)
parente1d4d3c854f25cff6c6c139588570e124d5e8fa4 (diff)
Merge tag 'asoc-v3.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
ASoC: Final updates for v3.16 A few more updates from the last week of development, nothing too exciting. Highlights include: - GPIO descriptor support for jacks - More updates and fixes to the Freescale SSI, Intel and rsnd drivers. - New drivers for Analog Devices ADAU1361, ADAU1381, ADAU1761 and ADAU1781, and Realtek RT5677.
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/blackfin/Kconfig26
-rw-r--r--sound/soc/blackfin/Makefile4
-rw-r--r--sound/soc/blackfin/bfin-eval-adau1x61.c142
-rw-r--r--sound/soc/blackfin/bfin-eval-adau1x81.c130
-rw-r--r--sound/soc/codecs/Kconfig52
-rw-r--r--sound/soc/codecs/Makefile22
-rw-r--r--sound/soc/codecs/adau1761-i2c.c60
-rw-r--r--sound/soc/codecs/adau1761-spi.c77
-rw-r--r--sound/soc/codecs/adau1761.c803
-rw-r--r--sound/soc/codecs/adau1761.h23
-rw-r--r--sound/soc/codecs/adau1781-i2c.c58
-rw-r--r--sound/soc/codecs/adau1781-spi.c75
-rw-r--r--sound/soc/codecs/adau1781.c511
-rw-r--r--sound/soc/codecs/adau1781.h23
-rw-r--r--sound/soc/codecs/adau17x1.c866
-rw-r--r--sound/soc/codecs/adau17x1.h124
-rw-r--r--sound/soc/codecs/cs42l56.c70
-rw-r--r--sound/soc/codecs/cs42l56.h10
-rw-r--r--sound/soc/codecs/max98090.c31
-rw-r--r--sound/soc/codecs/max98090.h1
-rw-r--r--sound/soc/codecs/max98095.c24
-rw-r--r--sound/soc/codecs/rl6231.c152
-rw-r--r--sound/soc/codecs/rl6231.h34
-rw-r--r--sound/soc/codecs/rt5640.c108
-rw-r--r--sound/soc/codecs/rt5640.h8
-rw-r--r--sound/soc/codecs/rt5645.c111
-rw-r--r--sound/soc/codecs/rt5645.h7
-rw-r--r--sound/soc/codecs/rt5651.c107
-rw-r--r--sound/soc/codecs/rt5651.h1
-rw-r--r--sound/soc/codecs/rt5677.c3498
-rw-r--r--sound/soc/codecs/rt5677.h1451
-rw-r--r--sound/soc/codecs/sgtl5000.c75
-rw-r--r--sound/soc/codecs/sirf-audio-codec.c8
-rw-r--r--sound/soc/codecs/tlv320aic3x.c2
-rw-r--r--sound/soc/codecs/wm8804.c17
-rw-r--r--sound/soc/codecs/wm8804.h4
-rw-r--r--sound/soc/codecs/wm9713.c3
-rw-r--r--sound/soc/codecs/wm_adsp.c37
-rw-r--r--sound/soc/davinci/davinci-evm.c9
-rw-r--r--sound/soc/davinci/davinci-mcasp.c2
-rw-r--r--sound/soc/fsl/Kconfig8
-rw-r--r--sound/soc/fsl/fsl_ssi.c576
-rw-r--r--sound/soc/fsl/fsl_ssi.h50
-rw-r--r--sound/soc/generic/simple-card.c39
-rw-r--r--sound/soc/intel/Kconfig9
-rw-r--r--sound/soc/intel/Makefile2
-rw-r--r--sound/soc/intel/byt-max98090.c203
-rw-r--r--sound/soc/intel/byt-rt5640.c27
-rw-r--r--sound/soc/intel/haswell.c9
-rw-r--r--sound/soc/intel/sst-acpi.c1
-rw-r--r--sound/soc/intel/sst-baytrail-ipc.c8
-rw-r--r--sound/soc/intel/sst-baytrail-pcm.c1
-rw-r--r--sound/soc/intel/sst-haswell-ipc.c15
-rw-r--r--sound/soc/intel/sst-haswell-pcm.c1
-rw-r--r--sound/soc/omap/ams-delta.c14
-rw-r--r--sound/soc/omap/omap-dmic.c2
-rw-r--r--sound/soc/omap/omap-hdmi.c2
-rw-r--r--sound/soc/omap/omap-mcbsp.c2
-rw-r--r--sound/soc/omap/omap-mcpdm.c2
-rw-r--r--sound/soc/omap/omap-pcm.h30
-rw-r--r--sound/soc/omap/omap-twl4030.c28
-rw-r--r--sound/soc/omap/rx51.c18
-rw-r--r--sound/soc/pxa/hx4700.c9
-rw-r--r--sound/soc/pxa/pxa-ssp.c1
-rw-r--r--sound/soc/samsung/h1940_uda1380.c11
-rw-r--r--sound/soc/samsung/i2s.c14
-rw-r--r--sound/soc/samsung/pcm.c4
-rw-r--r--sound/soc/samsung/rx1950_uda1380.c12
-rw-r--r--sound/soc/samsung/s3c-i2s-v2.c8
-rw-r--r--sound/soc/samsung/s3c2412-i2s.c6
-rw-r--r--sound/soc/samsung/s3c24xx-i2s.c6
-rw-r--r--sound/soc/samsung/smartq_wm8987.c11
-rw-r--r--sound/soc/samsung/smdk_wm8580.c8
-rw-r--r--sound/soc/samsung/smdk_wm8994.c2
-rw-r--r--sound/soc/samsung/spdif.c4
-rw-r--r--sound/soc/sh/rcar/core.c87
-rw-r--r--sound/soc/sh/rcar/dvc.c20
-rw-r--r--sound/soc/sh/rcar/gen.c95
-rw-r--r--sound/soc/sh/rcar/rsnd.h10
-rw-r--r--sound/soc/sh/rcar/src.c50
-rw-r--r--sound/soc/sh/rcar/ssi.c28
-rw-r--r--sound/soc/soc-cache.c3
-rw-r--r--sound/soc/soc-jack.c88
-rw-r--r--sound/soc/tegra/tegra_alc5632.c16
-rw-r--r--sound/soc/tegra/tegra_max98090.c16
-rw-r--r--sound/soc/tegra/tegra_rt5640.c16
-rw-r--r--sound/soc/tegra/tegra_wm8903.c11
87 files changed, 9417 insertions, 932 deletions
diff --git a/sound/soc/blackfin/Kconfig b/sound/soc/blackfin/Kconfig
index 6347d591013..6410aa2cc2c 100644
--- a/sound/soc/blackfin/Kconfig
+++ b/sound/soc/blackfin/Kconfig
@@ -43,6 +43,32 @@ config SND_SOC_BFIN_EVAL_ADAU1373
Note: This driver assumes that first ADAU1373 DAI is connected to the
first SPORT port on the BF5XX board.
+config SND_SOC_BFIN_EVAL_ADAU1X61
+ tristate "Support for the EVAL-ADAU1X61 board on Blackfin eval boards"
+ depends on SND_BF5XX_I2S && I2C
+ select SND_BF5XX_SOC_I2S
+ select SND_SOC_ADAU1761_I2C
+ help
+ Say Y if you want to add support for the Analog Devices EVAL-ADAU1X61
+ board connected to one of the Blackfin evaluation boards like the
+ BF5XX-STAMP or BF5XX-EZKIT.
+
+ Note: This driver assumes that the ADAU1X61 is connected to the
+ first SPORT port on the BF5XX board.
+
+config SND_SOC_BFIN_EVAL_ADAU1X81
+ tristate "Support for the EVAL-ADAU1X81 boards on Blackfin eval boards"
+ depends on SND_BF5XX_I2S && I2C
+ select SND_BF5XX_SOC_I2S
+ select SND_SOC_ADAU1781_I2C
+ help
+ Say Y if you want to add support for the Analog Devices EVAL-ADAU1X81
+ board connected to one of the Blackfin evaluation boards like the
+ BF5XX-STAMP or BF5XX-EZKIT.
+
+ Note: This driver assumes that the ADAU1X81 is connected to the
+ first SPORT port on the BF5XX board.
+
config SND_SOC_BFIN_EVAL_ADAV80X
tristate "Support for the EVAL-ADAV80X boards on Blackfin eval boards"
depends on SND_BF5XX_I2S && SND_SOC_I2C_AND_SPI
diff --git a/sound/soc/blackfin/Makefile b/sound/soc/blackfin/Makefile
index ad0a6e99bc5..f21e948b2e9 100644
--- a/sound/soc/blackfin/Makefile
+++ b/sound/soc/blackfin/Makefile
@@ -22,6 +22,8 @@ snd-ssm2602-objs := bf5xx-ssm2602.o
snd-ad73311-objs := bf5xx-ad73311.o
snd-ad193x-objs := bf5xx-ad193x.o
snd-soc-bfin-eval-adau1373-objs := bfin-eval-adau1373.o
+snd-soc-bfin-eval-adau1x61-objs := bfin-eval-adau1x61.o
+snd-soc-bfin-eval-adau1x81-objs := bfin-eval-adau1x81.o
snd-soc-bfin-eval-adau1701-objs := bfin-eval-adau1701.o
snd-soc-bfin-eval-adav80x-objs := bfin-eval-adav80x.o
@@ -31,5 +33,7 @@ obj-$(CONFIG_SND_BF5XX_SOC_SSM2602) += snd-ssm2602.o
obj-$(CONFIG_SND_BF5XX_SOC_AD73311) += snd-ad73311.o
obj-$(CONFIG_SND_BF5XX_SOC_AD193X) += snd-ad193x.o
obj-$(CONFIG_SND_SOC_BFIN_EVAL_ADAU1373) += snd-soc-bfin-eval-adau1373.o
+obj-$(CONFIG_SND_SOC_BFIN_EVAL_ADAU1X61) += snd-soc-bfin-eval-adau1x61.o
+obj-$(CONFIG_SND_SOC_BFIN_EVAL_ADAU1X81) += snd-soc-bfin-eval-adau1x81.o
obj-$(CONFIG_SND_SOC_BFIN_EVAL_ADAU1701) += snd-soc-bfin-eval-adau1701.o
obj-$(CONFIG_SND_SOC_BFIN_EVAL_ADAV80X) += snd-soc-bfin-eval-adav80x.o
diff --git a/sound/soc/blackfin/bfin-eval-adau1x61.c b/sound/soc/blackfin/bfin-eval-adau1x61.c
new file mode 100644
index 00000000000..3011906f9d3
--- /dev/null
+++ b/sound/soc/blackfin/bfin-eval-adau1x61.c
@@ -0,0 +1,142 @@
+/*
+ * Machine driver for EVAL-ADAU1x61MINIZ on Analog Devices bfin
+ * evaluation boards.
+ *
+ * Copyright 2011-2014 Analog Devices Inc.
+ * Author: Lars-Peter Clausen <lars@metafoo.de>
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+#include <linux/module.h>
+#include <linux/device.h>
+#include <linux/slab.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/soc.h>
+#include <sound/pcm_params.h>
+
+#include "../codecs/adau17x1.h"
+
+static const struct snd_soc_dapm_widget bfin_eval_adau1x61_dapm_widgets[] = {
+ SND_SOC_DAPM_LINE("In 1", NULL),
+ SND_SOC_DAPM_LINE("In 2", NULL),
+ SND_SOC_DAPM_LINE("In 3-4", NULL),
+
+ SND_SOC_DAPM_LINE("Diff Out L", NULL),
+ SND_SOC_DAPM_LINE("Diff Out R", NULL),
+ SND_SOC_DAPM_LINE("Stereo Out", NULL),
+ SND_SOC_DAPM_HP("Capless HP Out", NULL),
+};
+
+static const struct snd_soc_dapm_route bfin_eval_adau1x61_dapm_routes[] = {
+ { "LAUX", NULL, "In 3-4" },
+ { "RAUX", NULL, "In 3-4" },
+ { "LINP", NULL, "In 1" },
+ { "LINN", NULL, "In 1"},
+ { "RINP", NULL, "In 2" },
+ { "RINN", NULL, "In 2" },
+
+ { "In 1", NULL, "MICBIAS" },
+ { "In 2", NULL, "MICBIAS" },
+
+ { "Capless HP Out", NULL, "LHP" },
+ { "Capless HP Out", NULL, "RHP" },
+ { "Diff Out L", NULL, "LOUT" },
+ { "Diff Out R", NULL, "ROUT" },
+ { "Stereo Out", NULL, "LOUT" },
+ { "Stereo Out", NULL, "ROUT" },
+};
+
+static int bfin_eval_adau1x61_hw_params(struct snd_pcm_substream *substream,
+ struct snd_pcm_hw_params *params)
+{
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
+ struct snd_soc_dai *codec_dai = rtd->codec_dai;
+ int pll_rate;
+ int ret;
+
+ switch (params_rate(params)) {
+ case 48000:
+ case 8000:
+ case 12000:
+ case 16000:
+ case 24000:
+ case 32000:
+ case 96000:
+ pll_rate = 48000 * 1024;
+ break;
+ case 44100:
+ case 7350:
+ case 11025:
+ case 14700:
+ case 22050:
+ case 29400:
+ case 88200:
+ pll_rate = 44100 * 1024;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ ret = snd_soc_dai_set_pll(codec_dai, ADAU17X1_PLL,
+ ADAU17X1_PLL_SRC_MCLK, 12288000, pll_rate);
+ if (ret)
+ return ret;
+
+ ret = snd_soc_dai_set_sysclk(codec_dai, ADAU17X1_CLK_SRC_PLL, pll_rate,
+ SND_SOC_CLOCK_IN);
+
+ return ret;
+}
+
+static const struct snd_soc_ops bfin_eval_adau1x61_ops = {
+ .hw_params = bfin_eval_adau1x61_hw_params,
+};
+
+static struct snd_soc_dai_link bfin_eval_adau1x61_dai = {
+ .name = "adau1x61",
+ .stream_name = "adau1x61",
+ .cpu_dai_name = "bfin-i2s.0",
+ .codec_dai_name = "adau-hifi",
+ .platform_name = "bfin-i2s-pcm-audio",
+ .codec_name = "adau1761.0-0038",
+ .ops = &bfin_eval_adau1x61_ops,
+ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
+ SND_SOC_DAIFMT_CBM_CFM,
+};
+
+static struct snd_soc_card bfin_eval_adau1x61 = {
+ .name = "bfin-eval-adau1x61",
+ .driver_name = "eval-adau1x61",
+ .dai_link = &bfin_eval_adau1x61_dai,
+ .num_links = 1,
+
+ .dapm_widgets = bfin_eval_adau1x61_dapm_widgets,
+ .num_dapm_widgets = ARRAY_SIZE(bfin_eval_adau1x61_dapm_widgets),
+ .dapm_routes = bfin_eval_adau1x61_dapm_routes,
+ .num_dapm_routes = ARRAY_SIZE(bfin_eval_adau1x61_dapm_routes),
+ .fully_routed = true,
+};
+
+static int bfin_eval_adau1x61_probe(struct platform_device *pdev)
+{
+ bfin_eval_adau1x61.dev = &pdev->dev;
+
+ return devm_snd_soc_register_card(&pdev->dev, &bfin_eval_adau1x61);
+}
+
+static struct platform_driver bfin_eval_adau1x61_driver = {
+ .driver = {
+ .name = "bfin-eval-adau1x61",
+ .owner = THIS_MODULE,
+ .pm = &snd_soc_pm_ops,
+ },
+ .probe = bfin_eval_adau1x61_probe,
+};
+module_platform_driver(bfin_eval_adau1x61_driver);
+
+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
+MODULE_DESCRIPTION("ALSA SoC bfin adau1x61 driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:bfin-eval-adau1x61");
diff --git a/sound/soc/blackfin/bfin-eval-adau1x81.c b/sound/soc/blackfin/bfin-eval-adau1x81.c
new file mode 100644
index 00000000000..5c380f6aed1
--- /dev/null
+++ b/sound/soc/blackfin/bfin-eval-adau1x81.c
@@ -0,0 +1,130 @@
+/*
+ * Machine driver for EVAL-ADAU1x81 on Analog Devices bfin
+ * evaluation boards.
+ *
+ * Copyright 2011-2014 Analog Devices Inc.
+ * Author: Lars-Peter Clausen <lars@metafoo.de>
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+#include <linux/module.h>
+#include <linux/device.h>
+#include <linux/slab.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/soc.h>
+#include <sound/pcm_params.h>
+
+#include "../codecs/adau17x1.h"
+
+static const struct snd_soc_dapm_widget bfin_eval_adau1x81_dapm_widgets[] = {
+ SND_SOC_DAPM_LINE("Stereo In", NULL),
+ SND_SOC_DAPM_LINE("Beep", NULL),
+
+ SND_SOC_DAPM_SPK("Speaker", NULL),
+ SND_SOC_DAPM_HP("Headphone", NULL),
+};
+
+static const struct snd_soc_dapm_route bfin_eval_adau1x81_dapm_routes[] = {
+ { "BEEP", NULL, "Beep" },
+ { "LMIC", NULL, "Stereo In" },
+ { "LMIC", NULL, "Stereo In" },
+
+ { "Headphone", NULL, "AOUTL" },
+ { "Headphone", NULL, "AOUTR" },
+ { "Speaker", NULL, "SP" },
+};
+
+static int bfin_eval_adau1x81_hw_params(struct snd_pcm_substream *substream,
+ struct snd_pcm_hw_params *params)
+{
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
+ struct snd_soc_dai *codec_dai = rtd->codec_dai;
+ int pll_rate;
+ int ret;
+
+ switch (params_rate(params)) {
+ case 48000:
+ case 8000:
+ case 12000:
+ case 16000:
+ case 24000:
+ case 32000:
+ case 96000:
+ pll_rate = 48000 * 1024;
+ break;
+ case 44100:
+ case 7350:
+ case 11025:
+ case 14700:
+ case 22050:
+ case 29400:
+ case 88200:
+ pll_rate = 44100 * 1024;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ ret = snd_soc_dai_set_pll(codec_dai, ADAU17X1_PLL,
+ ADAU17X1_PLL_SRC_MCLK, 12288000, pll_rate);
+ if (ret)
+ return ret;
+
+ ret = snd_soc_dai_set_sysclk(codec_dai, ADAU17X1_CLK_SRC_PLL, pll_rate,
+ SND_SOC_CLOCK_IN);
+
+ return ret;
+}
+
+static const struct snd_soc_ops bfin_eval_adau1x81_ops = {
+ .hw_params = bfin_eval_adau1x81_hw_params,
+};
+
+static struct snd_soc_dai_link bfin_eval_adau1x81_dai = {
+ .name = "adau1x81",
+ .stream_name = "adau1x81",
+ .cpu_dai_name = "bfin-i2s.0",
+ .codec_dai_name = "adau-hifi",
+ .platform_name = "bfin-i2s-pcm-audio",
+ .codec_name = "adau1781.0-0038",
+ .ops = &bfin_eval_adau1x81_ops,
+ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
+ SND_SOC_DAIFMT_CBM_CFM,
+};
+
+static struct snd_soc_card bfin_eval_adau1x81 = {
+ .name = "bfin-eval-adau1x81",
+ .driver_name = "eval-adau1x81",
+ .dai_link = &bfin_eval_adau1x81_dai,
+ .num_links = 1,
+
+ .dapm_widgets = bfin_eval_adau1x81_dapm_widgets,
+ .num_dapm_widgets = ARRAY_SIZE(bfin_eval_adau1x81_dapm_widgets),
+ .dapm_routes = bfin_eval_adau1x81_dapm_routes,
+ .num_dapm_routes = ARRAY_SIZE(bfin_eval_adau1x81_dapm_routes),
+ .fully_routed = true,
+};
+
+static int bfin_eval_adau1x81_probe(struct platform_device *pdev)
+{
+ bfin_eval_adau1x81.dev = &pdev->dev;
+
+ return devm_snd_soc_register_card(&pdev->dev, &bfin_eval_adau1x81);
+}
+
+static struct platform_driver bfin_eval_adau1x81_driver = {
+ .driver = {
+ .name = "bfin-eval-adau1x81",
+ .owner = THIS_MODULE,
+ .pm = &snd_soc_pm_ops,
+ },
+ .probe = bfin_eval_adau1x81_probe,
+};
+module_platform_driver(bfin_eval_adau1x81_driver);
+
+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
+MODULE_DESCRIPTION("ALSA SoC bfin adau1x81 driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:bfin-eval-adau1x81");
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index c59943a19f9..cbfa1e18f65 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -23,6 +23,10 @@ config SND_SOC_ALL_CODECS
select SND_SOC_AD1980 if SND_SOC_AC97_BUS
select SND_SOC_AD73311
select SND_SOC_ADAU1373 if I2C
+ select SND_SOC_ADAU1761_I2C if I2C
+ select SND_SOC_ADAU1761_SPI if SPI
+ select SND_SOC_ADAU1781_I2C if I2C
+ select SND_SOC_ADAU1781_SPI if SPI
select SND_SOC_ADAV801 if SPI_MASTER
select SND_SOC_ADAV803 if I2C
select SND_SOC_ADAU1977_SPI if SPI_MASTER
@@ -74,6 +78,7 @@ config SND_SOC_ALL_CODECS
select SND_SOC_RT5640 if I2C
select SND_SOC_RT5645 if I2C
select SND_SOC_RT5651 if I2C
+ select SND_SOC_RT5677 if I2C
select SND_SOC_SGTL5000 if I2C
select SND_SOC_SI476X if MFD_SI476X_CORE
select SND_SOC_SIRF_AUDIO_CODEC
@@ -214,14 +219,46 @@ config SND_SOC_AD1980
config SND_SOC_AD73311
tristate
+config SND_SOC_ADAU1373
+ tristate
+
config SND_SOC_ADAU1701
tristate "Analog Devices ADAU1701 CODEC"
depends on I2C
select SND_SOC_SIGMADSP
-config SND_SOC_ADAU1373
+config SND_SOC_ADAU17X1
+ tristate
+ select SND_SOC_SIGMADSP
+
+config SND_SOC_ADAU1761
+ tristate
+ select SND_SOC_ADAU17X1
+
+config SND_SOC_ADAU1761_I2C
+ tristate
+ select SND_SOC_ADAU1761
+ select REGMAP_I2C
+
+config SND_SOC_ADAU1761_SPI
+ tristate
+ select SND_SOC_ADAU1761
+ select REGMAP_SPI
+
+config SND_SOC_ADAU1781
+ select SND_SOC_ADAU17X1
tristate
+config SND_SOC_ADAU1781_I2C
+ tristate
+ select SND_SOC_ADAU1781
+ select REGMAP_I2C
+
+config SND_SOC_ADAU1781_SPI
+ tristate
+ select SND_SOC_ADAU1781
+ select REGMAP_SPI
+
con