summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVijay Mali <vmali@nvidia.com>2012-08-01 13:04:52 +0530
committerSimone Willett <swillett@nvidia.com>2012-08-02 16:39:58 -0700
commit755c4d57c0ab85e610f43771433d10554112c839 (patch)
tree1d4b9b470d1659d4aefb85c5439fceb4bc6c5546
parentc0db33df893eef40ce45787e7c827e4ea1a22f29 (diff)
ARM: tegra: curacao: Add Audio Devices
Register audio devices for i2s, WM8903 Add platform data for these devices Update kernel config for WM8903 Change-Id: I8165088df38ea228da96dc02998c841e52c4d804 Signed-off-by: Vijay Mali <vmali@nvidia.com> Reviewed-on: http://git-master/r/119920 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/Kconfig1
-rw-r--r--arch/arm/mach-tegra/board-curacao.c44
2 files changed, 38 insertions, 7 deletions
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index ac8084af1b64..4d9ee0a54ceb 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -234,6 +234,7 @@ config MACH_ARUBA
config MACH_CURACAO
bool "Curacao board"
depends on ARCH_TEGRA_11x_SOC
+ select MACH_HAS_SND_SOC_TEGRA_WM8903 if SND_SOC
select TEGRA_FPGA_PLATFORM
help
Support for NVIDIA Curacao FPGA development platform
diff --git a/arch/arm/mach-tegra/board-curacao.c b/arch/arm/mach-tegra/board-curacao.c
index 4336ca3ce310..9a941e2e1601 100644
--- a/arch/arm/mach-tegra/board-curacao.c
+++ b/arch/arm/mach-tegra/board-curacao.c
@@ -61,6 +61,9 @@
#include "devices.h"
#include "fuse.h"
#include "gpio-names.h"
+#include <mach/i2s.h>
+#include <mach/tegra_wm8903_pdata.h>
+#include <sound/wm8903.h>
#define ENABLE_OTG 0
@@ -136,11 +139,12 @@ static __initdata struct tegra_clk_init_table curacao_clk_init_table[] = {
{ "sdmmc1", "clk_m", 13000000, false},
{ "sdmmc3", "clk_m", 13000000, false},
{ "sdmmc4", "clk_m", 13000000, false},
- { "blink", "clk_32k", 32768, false},
+ { "blink", "clk_32k", 32768, false},
{ "pwm", "clk_32k", 32768, false},
{ "blink", "clk_32k", 32768, false},
{ "pll_a", NULL, 56448000, true},
{ "pll_a_out0", NULL, 11289600, true},
+ { "i2s0", "clk_m", 13000000, true},
{ "i2s1", "pll_a_out0", 11289600, true},
{ "i2s2", "pll_a_out0", 11289600, true},
{ "d_audio", "pll_a_out0", 11289600, false},
@@ -148,11 +152,6 @@ static __initdata struct tegra_clk_init_table curacao_clk_init_table[] = {
{ NULL, NULL, 0, 0},
};
-static struct i2c_board_info __initdata curacao_i2c_bus1_board_info[] = {
- {
- I2C_BOARD_INFO("wm8903", 0x1a),
- },
-};
static struct tegra_i2c_platform_data curacao_i2c1_platform_data = {
.adapter_nr = 0,
@@ -195,6 +194,17 @@ static struct tegra_i2c_platform_data curacao_i2c5_platform_data = {
.bus_clk_rate = { 100000, 0 },
};
+static struct wm8903_platform_data curacao_wm8903_pdata = {
+ .irq_active_low = 0,
+ .micdet_cfg = 0,
+ .micdet_delay = 100,
+};
+
+static struct i2c_board_info __initdata wm8903_board_info = {
+ I2C_BOARD_INFO("wm8903", 0x1a),
+ .platform_data = &curacao_wm8903_pdata,
+};
+
static void curacao_i2c_init(void)
{
tegra11_i2c_device1.dev.platform_data = &curacao_i2c1_platform_data;
@@ -204,7 +214,7 @@ static void curacao_i2c_init(void)
tegra11_i2c_device4.dev.platform_data = &curacao_i2c4_platform_data;
tegra11_i2c_device5.dev.platform_data = &curacao_i2c5_platform_data;
- i2c_register_board_info(0, curacao_i2c_bus1_board_info, 1);
+ i2c_register_board_info(0, &wm8903_board_info, 1);
platform_device_register(&tegra11_i2c_device5);
platform_device_register(&tegra11_i2c_device4);
@@ -342,6 +352,21 @@ struct platform_device tegra_nand_device = {
};
#endif
+static struct tegra_wm8903_platform_data curacao_audio_pdata = {
+ .gpio_spkr_en = -1,
+ .gpio_hp_det = -1,
+ .gpio_hp_mute = -1,
+ .gpio_int_mic_en = -1,
+ .gpio_ext_mic_en = -1,
+};
+
+static struct platform_device curacao_audio_device = {
+ .name = "tegra-snd-wm8903",
+ .id = 0,
+ .dev = {
+ .platform_data = &curacao_audio_pdata,
+ },
+};
#if defined(CONFIG_TEGRA_SIMULATION_PLATFORM) && defined(CONFIG_SMC91X)
static struct resource tegra_sim_smc91x_resources[] = {
[0] = {
@@ -384,6 +409,11 @@ static struct platform_device *curacao_devices[] __initdata = {
#if defined(CONFIG_CRYPTO_DEV_TEGRA_SE)
&tegra11_se_device,
#endif
+ &tegra_ahub_device,
+ &tegra_dam_device0,
+ &tegra_i2s_device0,
+ &tegra_pcm_device,
+ &curacao_audio_device,
#if defined(CONFIG_MTD_NAND_TEGRA)
&tegra_nand_device,
#endif