summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu.c
diff options
context:
space:
mode:
authorRavindra Lokhande <rlokhande@nvidia.com>2011-04-19 21:14:10 +0530
committerVarun Colbert <vcolbert@nvidia.com>2011-05-03 01:26:25 -0700
commite4053f8cd89cd522b2e111f9501ca1a2ebe91688 (patch)
tree7ec4693f5432621dcef175e71ef37e3e6c52ec0d /arch/arm/mach-tegra/board-cardhu.c
parent66d8ee30496eaab51c8514d52760a8e2e3f90628 (diff)
tegra alsa: Audio BT SCO support
added support for audio BT sco usecase. For BT sco, i2s is programmed in pcm mode. Change-Id: Iffcfb707cd2c025b78b82e70ba35f89d47a21263 Reviewed-on: http://git-master/r/30042 Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com> Tested-by: Ravindra Lokhande <rlokhande@nvidia.com> Reviewed-by: Vinod Gopalakrishnakurup <vinodg@nvidia.com> Reviewed-by: Scott Peterson <speterson@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu.c')
-rw-r--r--arch/arm/mach-tegra/board-cardhu.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu.c b/arch/arm/mach-tegra/board-cardhu.c
index dc0580f5a474..0037e9a7fcd0 100644
--- a/arch/arm/mach-tegra/board-cardhu.c
+++ b/arch/arm/mach-tegra/board-cardhu.c
@@ -225,6 +225,7 @@ static __initdata struct tegra_clk_init_table cardhu_clk_init_table[] = {
{ "pll_a_out0", NULL, 11289600, false},
{ "i2s1", "pll_a_out0", 11289600, false},
{ "i2s2", "pll_a_out0", 11289600, false},
+ { "i2s3", "pll_a_out0", 11289600, false},
{ "d_audio","pll_a_out0", 11289600, false},
{ NULL, NULL, 0, 0},
};
@@ -303,7 +304,7 @@ static struct tegra_i2c_platform_data cardhu_i2c5_platform_data = {
.bus_clk_rate = { 100000, 0 },
};
-static struct tegra_audio_platform_data tegra_audio_pdata[] = {
+static struct tegra_audio_platform_data tegra_i2s_pdata[] = {
[0] = {
.i2s_master = true,
.dma_on = true, /* use dma by default */
@@ -313,8 +314,19 @@ static struct tegra_audio_platform_data tegra_audio_pdata[] = {
.mode = AUDIO_FRAME_FORMAT_I2S,
.fifo_fmt = AUDIO_FIFO_PACK_16,
.bit_size = AUDIO_BIT_SIZE_16,
- .i2s_bus_width = 32,
- .dsp_bus_width = 16,
+ .i2s_bus_width = 32,
+ .dsp_bus_width = 16,
+ },
+ [1] = {
+ .i2s_master = true,
+ .dma_on = true, /* use dma by default */
+ .i2s_master_clk = 8000,
+ .dev_clk_rate = 1024000,
+ .mode = AUDIO_FRAME_FORMAT_DSP,
+ .fifo_fmt = AUDIO_FIFO_NOP,
+ .bit_size = AUDIO_BIT_SIZE_16,
+ .i2s_bus_width = 32,
+ .dsp_bus_width = 16,
},
};
@@ -393,7 +405,8 @@ static struct platform_device *cardhu_devices[] __initdata = {
&tegra_smmu_device,
#endif
&tegra_wdt_device,
- &tegra_audio_device,
+ &tegra_i2s_device1,
+ &tegra_i2s_device3,
&tegra_spdif_device,
&tegra_avp_device,
&tegra_camera,
@@ -535,7 +548,8 @@ static void __init tegra_cardhu_init(void)
cardhu_usb_init();
snprintf(serial, sizeof(serial), "%llx", tegra_chip_uid());
andusb_plat.serial_number = kstrdup(serial, GFP_KERNEL);
- tegra_audio_device.dev.platform_data = &tegra_audio_pdata[0];
+ tegra_i2s_device1.dev.platform_data = &tegra_i2s_pdata[0];
+ tegra_i2s_device3.dev.platform_data = &tegra_i2s_pdata[1];
tegra_spdif_device.dev.platform_data = &tegra_spdif_pdata;
platform_add_devices(cardhu_devices, ARRAY_SIZE(cardhu_devices));
cardhu_sdhci_init();