summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu.c
diff options
context:
space:
mode:
authorNikesh Oswal <noswal@nvidia.com>2012-02-17 15:42:45 +0530
committerSimone Willett <swillett@nvidia.com>2012-02-23 19:56:59 -0800
commitd02719277a533eb24d2fdbc1b7d27c0aaef4b8ce (patch)
tree669786f9b2390aa0ebe510acbd24906da84703b3 /arch/arm/mach-tegra/board-cardhu.c
parent85f79b22473241c463a6b6563239d5916f627410 (diff)
ARM: tegra: cardhu: add device TI aic326x codec
Change-Id: Idc0261b937471499dc5e3c549eae6dff43ca9118 Signed-off-by: Nikesh Oswal <noswal@nvidia.com> Reviewed-on: http://git-master/r/84543 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu.c')
-rw-r--r--arch/arm/mach-tegra/board-cardhu.c46
1 files changed, 41 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu.c b/arch/arm/mach-tegra/board-cardhu.c
index 68802cd45791..d10fb6ffc5eb 100644
--- a/arch/arm/mach-tegra/board-cardhu.c
+++ b/arch/arm/mach-tegra/board-cardhu.c
@@ -51,6 +51,7 @@
#include <mach/io.h>
#include <mach/i2s.h>
#include <mach/tegra_wm8903_pdata.h>
+#include <mach/tegra_aic326x_pdata.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <mach/usb_phy.h>
@@ -181,6 +182,7 @@ static __initdata struct tegra_clk_init_table cardhu_clk_init_table[] = {
{ "hda2codec_2x","pll_p", 48000000, false},
{ "pwm", "pll_p", 3187500, false},
{ "blink", "clk_32k", 32768, true},
+ { "i2s0", "pll_a_out0", 0, false},
{ "i2s1", "pll_a_out0", 0, false},
{ "i2s3", "pll_a_out0", 0, false},
{ "spdif_out", "pll_a_out0", 0, false},
@@ -282,12 +284,26 @@ static struct wm8903_platform_data cardhu_wm8903_pdata = {
},
};
-static struct i2c_board_info __initdata wm8903_board_info = {
- I2C_BOARD_INFO("wm8903", 0x1a),
- .platform_data = &cardhu_wm8903_pdata,
- .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_CDC_IRQ),
+static struct wm8903_platform_data cardhu_aic3262_pdata = {
+ .irq_active_low = 0,
+ .micdet_cfg = 0,
+ .micdet_delay = 100,
};
+static struct i2c_board_info __initdata cardhu_board_info[] = {
+ {
+ I2C_BOARD_INFO("wm8903", 0x1a),
+ .platform_data = &cardhu_wm8903_pdata,
+ .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_CDC_IRQ),
+ },
+ {
+ I2C_BOARD_INFO("aic3262-codec", 0x18),
+ .platform_data=&cardhu_aic3262_pdata,
+ .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_CDC_IRQ),
+ },
+};
+
+
static void cardhu_i2c_init(void)
{
tegra_i2c_device1.dev.platform_data = &cardhu_i2c1_platform_data;
@@ -302,7 +318,8 @@ static void cardhu_i2c_init(void)
platform_device_register(&tegra_i2c_device2);
platform_device_register(&tegra_i2c_device1);
- i2c_register_board_info(4, &wm8903_board_info, 1);
+ i2c_register_board_info(4, cardhu_board_info, ARRAY_SIZE(cardhu_board_info));
+
i2c_register_board_info(2, cardhu_i2c_bus3_board_info, 1);
}
@@ -562,6 +579,22 @@ static struct platform_device cardhu_audio_device = {
},
};
+static struct tegra_aic326x_platform_data cardhu_aic326x_audio_pdata = {
+ .gpio_spkr_en = -1,
+ .gpio_hp_det = TEGRA_GPIO_HP_DET,
+ .gpio_hp_mute = -1,
+ .gpio_int_mic_en = -1,
+ .gpio_ext_mic_en = -1,
+};
+
+static struct platform_device cardhu_aic326x_audio_device = {
+ .name = "tegra-snd-aic326x",
+ .id = 0,
+ .dev = {
+ .platform_data = &cardhu_aic326x_audio_pdata,
+ },
+};
+
static struct platform_device *cardhu_devices[] __initdata = {
&tegra_pmu_device,
&tegra_rtc_device,
@@ -581,14 +614,17 @@ static struct platform_device *cardhu_devices[] __initdata = {
&tegra_dam_device0,
&tegra_dam_device1,
&tegra_dam_device2,
+ &tegra_i2s_device0,
&tegra_i2s_device1,
&tegra_i2s_device3,
&tegra_spdif_device,
&spdif_dit_device,
&bluetooth_dit_device,
+ &baseband_dit_device,
&cardhu_bcm4329_rfkill_device,
&tegra_pcm_device,
&cardhu_audio_device,
+ &cardhu_aic326x_audio_device,
&tegra_hda_device,
#if defined(CONFIG_CRYPTO_DEV_TEGRA_AES)
&tegra_aes_device,