diff options
author | Nitin Pai <npai@nvidia.com> | 2012-07-06 16:31:11 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-07-17 16:13:51 -0700 |
commit | 94dc32841c85c112ca24dfbbe76dea7f3ed371c3 (patch) | |
tree | 48e6563847e2914c11e6e574f8364fb65db08190 /sound | |
parent | 2286178d7039ab929e44df62b3f7e558893d84fd (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/Makefile | 5 | ||||
-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); |