summaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-2.6.31/pcm043/0015-add-phycore-ac97-sound-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-2.6.31/pcm043/0015-add-phycore-ac97-sound-support.patch')
-rw-r--r--recipes/linux/linux-2.6.31/pcm043/0015-add-phycore-ac97-sound-support.patch140
1 files changed, 140 insertions, 0 deletions
diff --git a/recipes/linux/linux-2.6.31/pcm043/0015-add-phycore-ac97-sound-support.patch b/recipes/linux/linux-2.6.31/pcm043/0015-add-phycore-ac97-sound-support.patch
new file mode 100644
index 0000000000..2a588aa7c1
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/pcm043/0015-add-phycore-ac97-sound-support.patch
@@ -0,0 +1,140 @@
+From cab3d12f55b4e89e6504a4fd9b1e950a3f2beae2 Mon Sep 17 00:00:00 2001
+From: Sascha Hauer <s.hauer@pengutronix.de>
+Date: Wed, 25 Nov 2009 16:18:28 +0100
+Subject: [PATCH 15/28] add phycore-ac97 sound support
+
+Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
+---
+ sound/soc/imx/Kconfig | 9 ++++
+ sound/soc/imx/Makefile | 2 +
+ sound/soc/imx/phycore-ac97.c | 91 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 102 insertions(+), 0 deletions(-)
+ create mode 100644 sound/soc/imx/phycore-ac97.c
+
+diff --git a/sound/soc/imx/Kconfig b/sound/soc/imx/Kconfig
+index 84a25e6..2a8c990 100644
+--- a/sound/soc/imx/Kconfig
++++ b/sound/soc/imx/Kconfig
+@@ -11,3 +11,12 @@ config SND_IMX_SOC
+ config SND_MXC_SOC_SSI
+ tristate
+
++config SND_SOC_PHYCORE_AC97
++ tristate "SoC Audio support for Phytec phyCORE (and phyCARD) boards"
++ depends on MACH_PCM043 || MACH_PCA100
++ select SND_MXC_SOC_SSI
++ select SND_SOC_WM9712
++ help
++ Say Y if you want to add support for SoC audio on Phytec phyCORE
++ and phyCARD boards in AC97 mode
++
+diff --git a/sound/soc/imx/Makefile b/sound/soc/imx/Makefile
+index d05cc95..9f8bb92 100644
+--- a/sound/soc/imx/Makefile
++++ b/sound/soc/imx/Makefile
+@@ -8,3 +8,5 @@ endif
+ obj-$(CONFIG_SND_IMX_SOC) += snd-soc-imx.o
+
+ # i.MX Machine Support
++snd-soc-phycore-ac97-objs := phycore-ac97.o
++obj-$(CONFIG_SND_SOC_PHYCORE_AC97) += snd-soc-phycore-ac97.o
+diff --git a/sound/soc/imx/phycore-ac97.c b/sound/soc/imx/phycore-ac97.c
+new file mode 100644
+index 0000000..8e3474b
+--- /dev/null
++++ b/sound/soc/imx/phycore-ac97.c
+@@ -0,0 +1,91 @@
++/*
++ * phycore.c -- SoC audio for imx_phycore
++ *
++ * Copyright 2009 Sascha Hauer, Pengutronix <s.hauer@pengutronix.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/device.h>
++#include <linux/i2c.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <asm/mach-types.h>
++
++#include "../codecs/mc13783.h"
++#include "../codecs/wm9712.h"
++#include "imx-ssi.h"
++
++static struct snd_soc_card imx_phycore;
++
++static struct snd_soc_ops imx_phycore_hifi_ops = {
++};
++
++static struct snd_soc_dai_link imx_phycore_dai_ac97[] = {
++ {
++ .name = "HiFi",
++ .stream_name = "HiFi",
++ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
++ .ops = &imx_phycore_hifi_ops,
++ },
++};
++
++static struct snd_soc_card imx_phycore = {
++ .name = "PhyCORE-audio",
++ .platform = &imx_soc_platform,
++ .dai_link = imx_phycore_dai_ac97,
++ .num_links = ARRAY_SIZE(imx_phycore_dai_ac97),
++};
++
++static struct snd_soc_device imx_phycore_snd_devdata = {
++ .card = &imx_phycore,
++ .codec_dev = &soc_codec_dev_wm9712,
++};
++
++static struct platform_device *imx_phycore_snd_device;
++
++static int __init imx_phycore_init(void)
++{
++ int ret;
++
++ if (!machine_is_pcm043() && !machine_is_pca100())
++ /* return happy. We might run on a totally different machine */
++ return 0;
++
++ imx_phycore_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!imx_phycore_snd_device)
++ return -ENOMEM;
++
++ imx_phycore_dai_ac97[0].cpu_dai = imx_ssi_pcm_dai[0];
++
++ platform_set_drvdata(imx_phycore_snd_device, &imx_phycore_snd_devdata);
++ imx_phycore_snd_devdata.dev = &imx_phycore_snd_device->dev;
++ ret = platform_device_add(imx_phycore_snd_device);
++
++ if (ret) {
++ printk(KERN_ERR "ASoC: Platform device allocation failed\n");
++ platform_device_put(imx_phycore_snd_device);
++ }
++
++ return ret;
++}
++
++static void __exit imx_phycore_exit(void)
++{
++ platform_device_unregister(imx_phycore_snd_device);
++}
++
++late_initcall(imx_phycore_init);
++module_exit(imx_phycore_exit);
++
++MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de>");
++MODULE_DESCRIPTION("PhyCORE ALSA SoC driver");
++MODULE_LICENSE("GPL");
+--
+1.6.5.2
+