diff options
author | Ravindra Lokhande <rlokhande@nvidia.com> | 2011-04-19 21:14:10 +0530 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2011-05-03 01:26:25 -0700 |
commit | e4053f8cd89cd522b2e111f9501ca1a2ebe91688 (patch) | |
tree | 7ec4693f5432621dcef175e71ef37e3e6c52ec0d /arch/arm/mach-tegra/board-cardhu.c | |
parent | 66d8ee30496eaab51c8514d52760a8e2e3f90628 (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.c | 24 |
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(); |