diff options
author | Nitin Pai <npai@nvidia.com> | 2012-05-30 16:26:25 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-06-03 08:01:32 -0700 |
commit | 22049ebd104af134fce3cdf39c813fb993d869e9 (patch) | |
tree | 9fd9f600f6362705dd96519726dc61d607ac4217 /arch/arm/mach-tegra/board-p1852.c | |
parent | 09884d385dc872be9452d0d053c913119cce4689 (diff) |
arm: tegra: p1852: Add i2s/tdm mode selection
Added code to select i2s vs tdm mode.
Added tdm-pcm-audio device defination.
Changed the pcm driver to use tdm-pcm-audio device.
Added fields to pass the pcm driver name to ASoC.
Added P1852_TDM config to KConfig and Linux defconfig
Bug 948478
Change-Id: I82fa03ab947cc615089e0a3107fb53901a1c00cd
Signed-off-by: Bob Johnston <bjohnston@nvidia.com>
Reviewed-on: http://git-master/r/105383
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-p1852.c')
-rw-r--r-- | arch/arm/mach-tegra/board-p1852.c | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/arch/arm/mach-tegra/board-p1852.c b/arch/arm/mach-tegra/board-p1852.c index 71c12756539d..eebbb24a9871 100644 --- a/arch/arm/mach-tegra/board-p1852.c +++ b/arch/arm/mach-tegra/board-p1852.c @@ -200,12 +200,14 @@ static void __init p1852_uart_init(void) ARRAY_SIZE(p1852_uart_devices)); } -static struct tegra_p1852_platform_data p1852_audio_pdata = { +#if defined(CONFIG_TEGRA_P1852_TDM) +static struct tegra_p1852_platform_data p1852_audio_tdm_pdata = { .codec_info[0] = { .codec_dai_name = "dit-hifi", .cpu_dai_name = "tegra30-i2s.0", .codec_name = "spdif-dit.0", .name = "tegra-i2s-1", + .pcm_driver = "tegra-tdm-pcm-audio", .i2s_format = format_tdm, .master = 1, .num_slots = 4, @@ -218,6 +220,7 @@ static struct tegra_p1852_platform_data p1852_audio_pdata = { .cpu_dai_name = "tegra30-i2s.4", .codec_name = "spdif-dit.1", .name = "tegra-i2s-2", + .pcm_driver = "tegra-tdm-pcm-audio", .i2s_format = format_tdm, .master = 1, .num_slots = 8, @@ -225,9 +228,29 @@ static struct tegra_p1852_platform_data p1852_audio_pdata = { .tx_mask = 0xff, .rx_mask = 0xff, }, - }; - +#else +static struct tegra_p1852_platform_data p1852_audio_i2s_pdata = { + .codec_info[0] = { + .codec_dai_name = "dit-hifi", + .cpu_dai_name = "tegra30-i2s.0", + .codec_name = "spdif-dit.0", + .name = "tegra-i2s-1", + .pcm_driver = "tegra-pcm-audio", + .i2s_format = format_i2s, + .master = 1, + }, + .codec_info[1] = { + .codec_dai_name = "dit-hifi", + .cpu_dai_name = "tegra30-i2s.4", + .codec_name = "spdif-dit.1", + .name = "tegra-i2s-2", + .pcm_driver = "tegra-pcm-audio", + .i2s_format = format_i2s, + .master = 0, + }, +}; +#endif static struct platform_device generic_codec_1 = { .name = "spdif-dit", .id = 0, @@ -241,13 +264,18 @@ static struct platform_device tegra_snd_p1852 = { .name = "tegra-snd-p1852", .id = 0, .dev = { - .platform_data = &p1852_audio_pdata, +#if defined(CONFIG_TEGRA_P1852_TDM) + .platform_data = &p1852_audio_tdm_pdata, +#else + .platform_data = &p1852_audio_i2s_pdata, +#endif }, }; static void p1852_i2s_audio_init(void) { platform_device_register(&tegra_pcm_device); + platform_device_register(&tegra_tdm_pcm_device); platform_device_register(&generic_codec_1); platform_device_register(&generic_codec_2); platform_device_register(&tegra_i2s_device0); |