summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorNitin Pai <npai@nvidia.com>2012-07-06 16:31:11 +0530
committerSimone Willett <swillett@nvidia.com>2012-07-17 16:13:51 -0700
commit94dc32841c85c112ca24dfbbe76dea7f3ed371c3 (patch)
tree48e6563847e2914c11e6e574f8364fb65db08190 /sound
parent2286178d7039ab929e44df62b3f7e558893d84fd (diff)
asoc: tegra: p852: Added machine driver for P852
Renamed P1852 machine driver to VCM so that can be used for P1852/P852 and E1853 as well. Bug 1008391 Signed-off-by: Nitin Pai <npai@nvidia.com> Reviewed-on: http://git-master/r/113886 (cherry picked from commit 5eb23e30bab716b28146b85438989e58761c7136) Change-Id: I8d1363a6419c6381b8d23ebd38d625fb482084dc Reviewed-on: http://git-master/r/116056 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Scott Peterson <speterson@nvidia.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/tegra/Makefile5
-rw-r--r--sound/soc/tegra/tegra_vcm.c (renamed from sound/soc/tegra/tegra_p1852.c)97
2 files changed, 56 insertions, 46 deletions
diff --git a/sound/soc/tegra/Makefile b/sound/soc/tegra/Makefile
index 7af02a69b8ae..83f30054a085 100644
--- a/sound/soc/tegra/Makefile
+++ b/sound/soc/tegra/Makefile
@@ -33,7 +33,7 @@ snd-soc-tegra-max98088-objs := tegra_max98088.o
snd-soc-tegra-aic326x-objs := tegra_aic326x.o
snd-soc-tegra-rt5640-objs := tegra_rt5640.o
snd-soc-tegra-max98095-objs := tegra_max98095.o
-snd-soc-tegra-p1852-objs := tegra_p1852.o
+snd-soc-tegra-vcm-objs := tegra_vcm.o
obj-$(CONFIG_SND_SOC_TEGRA_WM8903) += snd-soc-tegra-wm8903.o
obj-$(CONFIG_SND_SOC_TEGRA_TRIMSLICE) += snd-soc-tegra-trimslice.o
@@ -42,4 +42,5 @@ obj-$(CONFIG_SND_SOC_TEGRA_MAX98088) += snd-soc-tegra-max98088.o
obj-$(CONFIG_SND_SOC_TEGRA_TLV320AIC326X) += snd-soc-tegra-aic326x.o
obj-$(CONFIG_SND_SOC_TEGRA_RT5640) += snd-soc-tegra-rt5640.o
obj-$(CONFIG_SND_SOC_TEGRA_MAX98095) += snd-soc-tegra-max98095.o
-obj-$(CONFIG_SND_SOC_TEGRA_P1852) += snd-soc-tegra-p1852.o
+obj-$(CONFIG_SND_SOC_TEGRA_P1852) += snd-soc-tegra-vcm.o
+obj-$(CONFIG_SND_SOC_TEGRA_P852) += snd-soc-tegra-vcm.o
diff --git a/sound/soc/tegra/tegra_p1852.c b/sound/soc/tegra/tegra_vcm.c
index 199bb8046636..afb444e3f19f 100644
--- a/sound/soc/tegra/tegra_p1852.c
+++ b/sound/soc/tegra/tegra_vcm.c
@@ -1,8 +1,8 @@
/*
- * tegra_p1852.c - Tegra machine ASoC driver for P1852 Boards.
+ * tegra_vcm.c - Tegra machine ASoC driver for P852/P1852/P1853 Boards.
*
* Author: Nitin Pai <npai@nvidia.com>
- * Copyright (C) 2010-2012 - NVIDIA, Inc.
+ * Copyright (C) 2010-2012 - NVIDIA, Corporation. All rights reserved.
*
* Based on code copyright/by:
* Copyright (c) 2009-2010, NVIDIA Corporation.
@@ -41,14 +41,23 @@
#include "tegra_pcm.h"
#include "tegra_asoc_utils.h"
+#ifdef CONFIG_MACH_P1852
#define DRV_NAME "tegra-snd-p1852"
+#endif
+#ifdef CONFIG_MACH_E1853
+#define DRV_NAME "tegra-snd-e1853"
+#endif
+#ifdef CONFIG_MACH_P852
+#define DRV_NAME "tegra-snd-p852"
+#endif
-struct tegra_p1852 {
+
+struct tegra_vcm {
struct tegra_asoc_utils_data util_data;
struct tegra_p1852_platform_data *pdata;
};
-static int tegra_p1852_hw_params(struct snd_pcm_substream *substream,
+static int tegra_vcm_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
int codec_id)
{
@@ -57,7 +66,7 @@ static int tegra_p1852_hw_params(struct snd_pcm_substream *substream,
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_card *card = codec->card;
- struct tegra_p1852 *machine = snd_soc_card_get_drvdata(card);
+ struct tegra_vcm *machine = snd_soc_card_get_drvdata(card);
int srate, mclk;
int i2s_daifmt = 0;
int err;
@@ -139,64 +148,64 @@ static int tegra_p1852_hw_params(struct snd_pcm_substream *substream,
return 0;
}
-static int tegra_p1852_hw_params_controller1(
+static int tegra_vcm_hw_params_controller1(
struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{
- return tegra_p1852_hw_params(substream, params, 0);
+ return tegra_vcm_hw_params(substream, params, 0);
}
-static int tegra_p1852_hw_params_controller2(
+static int tegra_vcm_hw_params_controller2(
struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{
- return tegra_p1852_hw_params(substream, params, 1);
+ return tegra_vcm_hw_params(substream, params, 1);
}
static int tegra_hw_free(struct snd_pcm_substream *substream)
{
struct snd_soc_pcm_runtime *rtd = substream->private_data;
- struct tegra_p1852 *machine = snd_soc_card_get_drvdata(rtd->card);
+ struct tegra_vcm *machine = snd_soc_card_get_drvdata(rtd->card);
tegra_asoc_utils_lock_clk_rate(&machine->util_data, 0);
return 0;
}
-static struct snd_soc_ops tegra_p1852_ops_controller1 = {
- .hw_params = tegra_p1852_hw_params_controller1,
+static struct snd_soc_ops tegra_vcm_ops_controller1 = {
+ .hw_params = tegra_vcm_hw_params_controller1,
.hw_free = tegra_hw_free,
};
-static struct snd_soc_ops tegra_p1852_ops_controller2 = {
- .hw_params = tegra_p1852_hw_params_controller2,
+static struct snd_soc_ops tegra_vcm_ops_controller2 = {
+ .hw_params = tegra_vcm_hw_params_controller2,
.hw_free = tegra_hw_free,
};
-static struct snd_soc_dai_link tegra_p1852_dai_link[] = {
+static struct snd_soc_dai_link tegra_vcm_dai_link[] = {
{
.name = "I2S-TDM-1",
.stream_name = "TEGRA PCM",
.platform_name = "tegra-pcm-audio",
- .ops = &tegra_p1852_ops_controller1,
+ .ops = &tegra_vcm_ops_controller1,
},
{
.name = "I2S-TDM-2",
.stream_name = "TEGRA PCM",
.platform_name = "tegra-pcm-audio",
- .ops = &tegra_p1852_ops_controller2,
+ .ops = &tegra_vcm_ops_controller2,
}
};
-static struct snd_soc_card snd_soc_tegra_p1852 = {
- .name = "tegra-p1852",
- .dai_link = tegra_p1852_dai_link,
- .num_links = ARRAY_SIZE(tegra_p1852_dai_link),
+static struct snd_soc_card snd_soc_tegra_vcm = {
+ .name = "tegra-vcm",
+ .dai_link = tegra_vcm_dai_link,
+ .num_links = ARRAY_SIZE(tegra_vcm_dai_link),
};
-static __devinit int tegra_p1852_driver_probe(struct platform_device *pdev)
+static __devinit int tegra_vcm_driver_probe(struct platform_device *pdev)
{
- struct snd_soc_card *card = &snd_soc_tegra_p1852;
- struct tegra_p1852 *machine;
+ struct snd_soc_card *card = &snd_soc_tegra_vcm;
+ struct tegra_vcm *machine;
struct tegra_p1852_platform_data *pdata;
int ret;
int i;
@@ -207,9 +216,9 @@ static __devinit int tegra_p1852_driver_probe(struct platform_device *pdev)
return -EINVAL;
}
- machine = kzalloc(sizeof(struct tegra_p1852), GFP_KERNEL);
+ machine = kzalloc(sizeof(struct tegra_vcm), GFP_KERNEL);
if (!machine) {
- dev_err(&pdev->dev, "Can't allocate tegra_p1852 struct\n");
+ dev_err(&pdev->dev, "Can't allocate tegra_vcm struct\n");
return -ENOMEM;
}
@@ -218,17 +227,17 @@ static __devinit int tegra_p1852_driver_probe(struct platform_device *pdev)
/* The codec driver and codec dai have to come from the system
* level board configuration file
* */
- for (i = 0; i < ARRAY_SIZE(tegra_p1852_dai_link); i++) {
- tegra_p1852_dai_link[i].codec_name =
+ for (i = 0; i < ARRAY_SIZE(tegra_vcm_dai_link); i++) {
+ tegra_vcm_dai_link[i].codec_name =
pdata->codec_info[i].codec_name;
- tegra_p1852_dai_link[i].cpu_dai_name =
+ tegra_vcm_dai_link[i].cpu_dai_name =
pdata->codec_info[i].cpu_dai_name;
- tegra_p1852_dai_link[i].codec_dai_name =
+ tegra_vcm_dai_link[i].codec_dai_name =
pdata->codec_info[i].codec_dai_name;
- tegra_p1852_dai_link[i].name =
+ tegra_vcm_dai_link[i].name =
pdata->codec_info[i].name;
if (pdata->codec_info[i].pcm_driver)
- tegra_p1852_dai_link[i].platform_name =
+ tegra_vcm_dai_link[i].platform_name =
pdata->codec_info[i].pcm_driver;
}
@@ -263,10 +272,10 @@ err_free_machine:
return ret;
}
-static int __devexit tegra_p1852_driver_remove(struct platform_device *pdev)
+static int __devexit tegra_vcm_driver_remove(struct platform_device *pdev)
{
struct snd_soc_card *card = platform_get_drvdata(pdev);
- struct tegra_p1852 *machine = snd_soc_card_get_drvdata(card);
+ struct tegra_vcm *machine = snd_soc_card_get_drvdata(card);
snd_soc_unregister_card(card);
tegra_asoc_utils_fini(&machine->util_data);
@@ -275,29 +284,29 @@ static int __devexit tegra_p1852_driver_remove(struct platform_device *pdev)
return 0;
}
-static struct platform_driver tegra_p1852_driver = {
+static struct platform_driver tegra_vcm_driver = {
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
.pm = &snd_soc_pm_ops,
},
- .probe = tegra_p1852_driver_probe,
- .remove = __devexit_p(tegra_p1852_driver_remove),
+ .probe = tegra_vcm_driver_probe,
+ .remove = __devexit_p(tegra_vcm_driver_remove),
};
-static int __init tegra_p1852_modinit(void)
+static int __init tegra_vcm_modinit(void)
{
- return platform_driver_register(&tegra_p1852_driver);
+ return platform_driver_register(&tegra_vcm_driver);
}
-module_init(tegra_p1852_modinit);
+module_init(tegra_vcm_modinit);
-static void __exit tegra_p1852_modexit(void)
+static void __exit tegra_vcm_modexit(void)
{
- platform_driver_unregister(&tegra_p1852_driver);
+ platform_driver_unregister(&tegra_vcm_driver);
}
-module_exit(tegra_p1852_modexit);
+module_exit(tegra_vcm_modexit);
MODULE_AUTHOR("Nitin Pai <npai@nvidia.com>");
-MODULE_DESCRIPTION("Tegra+P1852 machine ASoC driver");
+MODULE_DESCRIPTION("Tegra+VCM machine ASoC driver");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:" DRV_NAME);