From f6077df65f1f42d69a2e278076218ae66dfa436c Mon Sep 17 00:00:00 2001 From: Nikesh Oswal Date: Wed, 14 Mar 2012 17:44:47 +0530 Subject: ARM: tegra: enterprise: add support for aic326x codec Change-Id: Ibb28e461cf21a2b44ae819888d943ba1a5dc976c Signed-off-by: Nikesh Oswal Reviewed-on: http://git-master/r/90059 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Scott Peterson --- arch/arm/mach-tegra/board-enterprise.c | 36 ++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) (limited to 'arch/arm/mach-tegra') diff --git a/arch/arm/mach-tegra/board-enterprise.c b/arch/arm/mach-tegra/board-enterprise.c index d4e59139b117..a53326850550 100644 --- a/arch/arm/mach-tegra/board-enterprise.c +++ b/arch/arm/mach-tegra/board-enterprise.c @@ -51,7 +51,7 @@ #include #include #include -#include +#include #include #include #include "board.h" @@ -348,6 +348,11 @@ static struct i2c_board_info __initdata max98088_board_info = { .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_HP_DET), }; +static struct i2c_board_info __initdata enterprise_codec_aic326x_info = { + I2C_BOARD_INFO("aic3262-codec", 0x18), + .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_HP_DET), +}; + static struct i2c_board_info __initdata nfc_board_info = { I2C_BOARD_INFO("pn544", 0x28), .platform_data = &nfc_pdata, @@ -369,6 +374,7 @@ static void enterprise_i2c_init(void) platform_device_register(&tegra_i2c_device1); i2c_register_board_info(0, &max98088_board_info, 1); + i2c_register_board_info(0, &enterprise_codec_aic326x_info, 1); i2c_register_board_info(0, &nfc_board_info, 1); } @@ -485,12 +491,13 @@ static struct platform_device tegra_camera = { .id = -1, }; -static struct tegra_max98088_platform_data enterprise_audio_pdata = { +static struct tegra_asoc_platform_data enterprise_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, + .debounce_time_hp = -1, .audio_port_id = { [HIFI_CODEC] = 0, [BASEBAND] = 2, @@ -510,6 +517,22 @@ static struct platform_device enterprise_audio_device = { }, }; +static struct tegra_asoc_platform_data enterprise_audio_aic326x_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 enterprise_audio_aic326x_device = { + .name = "tegra-snd-aic326x", + .id = 0, + .dev = { + .platform_data = &enterprise_audio_aic326x_pdata, + }, +}; + static struct platform_device *enterprise_devices[] __initdata = { &tegra_pmu_device, &tegra_rtc_device, @@ -775,6 +798,8 @@ static struct platform_device *enterprise_audio_devices[] __initdata = { &tegra_dam_device0, &tegra_dam_device1, &tegra_dam_device2, + &tegra_i2s_device0, + &tegra_i2s_device1, &tegra_i2s_device2, &tegra_i2s_device3, &tegra_spdif_device, @@ -783,6 +808,7 @@ static struct platform_device *enterprise_audio_devices[] __initdata = { &baseband_dit_device, &tegra_pcm_device, &enterprise_audio_device, + &enterprise_audio_aic326x_device, }; static void enterprise_audio_init(void) @@ -790,11 +816,9 @@ static void enterprise_audio_init(void) struct board_info board_info; tegra_get_board_info(&board_info); - if (board_info.board_id == BOARD_E1197) { - platform_device_register(&tegra_i2s_device1); + + if (board_info.board_id == BOARD_E1197) enterprise_audio_pdata.audio_port_id[HIFI_CODEC] = 1; - } else - platform_device_register(&tegra_i2s_device0); platform_add_devices(enterprise_audio_devices, ARRAY_SIZE(enterprise_audio_devices)); -- cgit v1.2.3