diff options
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.patch | 140 |
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 + |