diff options
author | Ankit Gupta <ankitgupta@nvidia.com> | 2012-07-13 14:58:18 +0530 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2012-07-30 16:28:03 +0530 |
commit | a50e73c5be9f5a3546bf575588385b59deee7092 (patch) | |
tree | 1260099e11a0cf845773b1b774c1ccc50ee45340 /arch/arm/mach-tegra | |
parent | 13a1fc06732ddfac2e63ab20ced9ad1a77517a06 (diff) |
ARM: tegra: integration of slave mode support.
Add configurability support for i2s parameters accross all board.
ARM: tegra: board: add i2s params
Add configurability support for i2s parameters accross all board
files.
Signed-off-by: Ankit Gupta <ankitgupta@nvidia.com>
Change-Id: If58788b5126280b7e1dc8c66e9c96d0e71229b5e
Reviewed-on: http://git-master/r/111476
(cherry-picked from commit cac52867b0a0cad3b3c5bf46f08b0b94d0be2e02)
ARM: tegra: include: add configurability support for i2s params.
Add several variables for i2s configuration in platform data
structure.
Signed-off-by: Ankit Gupta <ankitgupta@nvidia.com>
Change-Id: Iea3930f308954471f170513234c2c02a8559ef98
Reviewed-on: http://git-master/r/111473
(cherry picked from commit 35e749770f6046fc82860f1152db2f5f579b9508)
Reviewed-on: http://git-master/r/118071
Reviewed-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Scott Peterson <speterson@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu.c | 46 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise.c | 57 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-harmony.c | 18 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-kai.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-ventana.c | 18 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-whistler.c | 32 | ||||
-rw-r--r-- | arch/arm/mach-tegra/include/mach/tegra_asoc_pdata.h | 15 |
7 files changed, 159 insertions, 46 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu.c b/arch/arm/mach-tegra/board-cardhu.c index 37debb70c449..0b8c71bbcdd6 100644 --- a/arch/arm/mach-tegra/board-cardhu.c +++ b/arch/arm/mach-tegra/board-cardhu.c @@ -2,6 +2,7 @@ * arch/arm/mach-tegra/board-cardhu.c * * Copyright (c) 2011-2012, NVIDIA Corporation. All rights reserved. + * Copyright (c) 2011-2012, NVIDIA Corporation. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -730,12 +731,25 @@ static struct platform_device tegra_rtc_device = { .num_resources = ARRAY_SIZE(tegra_rtc_resources), }; -static struct tegra_wm8903_platform_data cardhu_audio_wm8903_pdata = { +static struct tegra_asoc_platform_data cardhu_audio_wm8903_pdata = { .gpio_spkr_en = TEGRA_GPIO_SPKR_EN, .gpio_hp_det = TEGRA_GPIO_HP_DET, .gpio_hp_mute = -1, .gpio_int_mic_en = -1, .gpio_ext_mic_en = -1, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + }, + .i2s_param[BASEBAND] = { + .audio_port_id = -1, + }, + .i2s_param[BT_SCO] = { + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + }, }; static struct tegra_asoc_platform_data cardhu_audio_max98095_pdata = { @@ -744,6 +758,19 @@ static struct tegra_asoc_platform_data cardhu_audio_max98095_pdata = { .gpio_hp_mute = -1, .gpio_int_mic_en = -1, .gpio_ext_mic_en = -1, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + }, + .i2s_param[BASEBAND] = { + .audio_port_id = -1, + }, + .i2s_param[BT_SCO] = { + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + }, }; static struct platform_device cardhu_audio_wm8903_device = { @@ -769,14 +796,17 @@ static struct tegra_asoc_platform_data cardhu_audio_aic326x_pdata = { .gpio_int_mic_en = -1, .gpio_ext_mic_en = -1, /*defaults for Verbier-Cardhu board with TI AIC326X codec*/ - .audio_port_id = { - [HIFI_CODEC] = 0, - [BASEBAND] = -1, - [BT_SCO] = 3, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + .sample_size = 16, }, - .baseband_param = { - .rate = -1, - .channels = -1, + .i2s_param[BT_SCO] = { + .sample_size = 16, + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, }, }; diff --git a/arch/arm/mach-tegra/board-enterprise.c b/arch/arm/mach-tegra/board-enterprise.c index 3b7f90bf6d52..fcb00a15a287 100644 --- a/arch/arm/mach-tegra/board-enterprise.c +++ b/arch/arm/mach-tegra/board-enterprise.c @@ -475,8 +475,6 @@ static void __init enterprise_uart_init(void) ARRAY_SIZE(enterprise_uart_devices)); } - - static struct resource tegra_rtc_resources[] = { [0] = { .start = TEGRA_RTC_BASE, @@ -508,16 +506,27 @@ static struct tegra_asoc_platform_data enterprise_audio_pdata = { .gpio_hp_mute = -1, .gpio_int_mic_en = -1, .gpio_ext_mic_en = -1, - .debounce_time_hp = -1, + .debounce_time_hp = -1, /*defaults for Enterprise board*/ - .audio_port_id = { - [HIFI_CODEC] = 0, - [BASEBAND] = 2, - [BT_SCO] = 3, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + .sample_size = 16, }, - .baseband_param = { - .rate = 8000, - .channels = 1, + .i2s_param[BASEBAND] = { + .audio_port_id = 2, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + .sample_size = 16, + .rate = 8000, + .channels = 1, + }, + .i2s_param[BT_SCO] = { + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + .sample_size = 16, }, }; @@ -536,15 +545,25 @@ static struct tegra_asoc_platform_data enterprise_audio_aic326x_pdata = { .gpio_int_mic_en = -1, .gpio_ext_mic_en = -1, /*defaults for Verbier-Enterprise (E1197) board with TI AIC326X codec*/ - .audio_port_id = { - [HIFI_CODEC] = 0, - [BASEBAND] = 2, - [BT_SCO] = 3, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + .sample_size = 16, + }, + .i2s_param[BASEBAND] = { + .audio_port_id = 2, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + .sample_size = 16, + .rate = 8000, + .channels = 1, }, - .baseband_param = { - .rate = 8000, - .channels = 1, - .bit_format = TEGRA_DAIFMT_DSP_A, + .i2s_param[BT_SCO] = { + .sample_size = 16, + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, }, }; @@ -857,7 +876,7 @@ static void enterprise_audio_init(void) tegra_get_board_info(&board_info); if (board_info.board_id == BOARD_E1197) - enterprise_audio_pdata.audio_port_id[HIFI_CODEC] = 1; + enterprise_audio_pdata.i2s_param[HIFI_CODEC].audio_port_id = 1; platform_add_devices(enterprise_audio_devices, ARRAY_SIZE(enterprise_audio_devices)); diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c index eaac24128240..53ec47f62fbb 100644 --- a/arch/arm/mach-tegra/board-harmony.c +++ b/arch/arm/mach-tegra/board-harmony.c @@ -3,6 +3,7 @@ * * Copyright (C) 2010 Google, Inc. * Copyright (C) 2011 NVIDIA, Inc. + * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and @@ -44,7 +45,7 @@ #include <asm/hardware/gic.h> #include <asm/setup.h> -#include <mach/tegra_wm8903_pdata.h> +#include <mach/tegra_asoc_pdata.h> #include <mach/iomap.h> #include <mach/irqs.h> #include <mach/sdhci.h> @@ -233,12 +234,25 @@ static void harmony_keys_init(void) tegra_gpio_enable(harmony_gpio_keys_buttons[i].gpio); } -static struct tegra_wm8903_platform_data harmony_audio_pdata = { +static struct tegra_asoc_platform_data harmony_audio_pdata = { .gpio_spkr_en = TEGRA_GPIO_SPKR_EN, .gpio_hp_det = TEGRA_GPIO_HP_DET, .gpio_hp_mute = -1, .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN, .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + }, + .i2s_param[BASEBAND] = { + .audio_port_id = -1, + }, + .i2s_param[BT_SCO] = { + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + }, }; static struct platform_device harmony_audio_device = { diff --git a/arch/arm/mach-tegra/board-kai.c b/arch/arm/mach-tegra/board-kai.c index bc44bbaa6f91..8eba8c1a0abb 100644 --- a/arch/arm/mach-tegra/board-kai.c +++ b/arch/arm/mach-tegra/board-kai.c @@ -1,7 +1,7 @@ /* * arch/arm/mach-tegra/board-kai.c * - * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -55,7 +55,7 @@ #include <mach/io.h> #include <mach/io_dpd.h> #include <mach/i2s.h> -#include <mach/tegra_rt5640_pdata.h> +#include <mach/tegra_asoc_pdata.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <mach/usb_phy.h> @@ -578,12 +578,25 @@ static struct platform_device tegra_rtc_device = { .num_resources = ARRAY_SIZE(tegra_rtc_resources), }; -static struct tegra_rt5640_platform_data kai_audio_pdata = { +static struct tegra_asoc_platform_data kai_audio_pdata = { .gpio_spkr_en = TEGRA_GPIO_SPKR_EN, .gpio_hp_det = TEGRA_GPIO_HP_DET, .gpio_hp_mute = -1, .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN, .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + }, + .i2s_param[BASEBAND] = { + .audio_port_id = -1, + }, + .i2s_param[BT_SCO] = { + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + }, }; static struct platform_device kai_audio_device = { diff --git a/arch/arm/mach-tegra/board-ventana.c b/arch/arm/mach-tegra/board-ventana.c index 3dd44ad9021a..708c123abfb1 100644 --- a/arch/arm/mach-tegra/board-ventana.c +++ b/arch/arm/mach-tegra/board-ventana.c @@ -2,6 +2,7 @@ * arch/arm/mach-tegra/board-ventana.c * * Copyright (c) 2010-2011 NVIDIA Corporation. + * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -51,7 +52,7 @@ #include <mach/iomap.h> #include <mach/io.h> #include <mach/i2s.h> -#include <mach/tegra_wm8903_pdata.h> +#include <mach/tegra_asoc_pdata.h> #include <asm/hardware/gic.h> #include <asm/mach-types.h> @@ -356,12 +357,25 @@ static struct platform_device tegra_camera = { .id = -1, }; -static struct tegra_wm8903_platform_data ventana_audio_pdata = { +static struct tegra_asoc_platform_data ventana_audio_pdata = { .gpio_spkr_en = TEGRA_GPIO_SPKR_EN, .gpio_hp_det = TEGRA_GPIO_HP_DET, .gpio_hp_mute = -1, .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN, .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + }, + .i2s_param[BASEBAND] = { + .audio_port_id = -1, + }, + .i2s_param[BT_SCO] = { + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + }, }; static struct platform_device ventana_audio_device = { diff --git a/arch/arm/mach-tegra/board-whistler.c b/arch/arm/mach-tegra/board-whistler.c index 33fe75445346..57bb8d64620b 100644 --- a/arch/arm/mach-tegra/board-whistler.c +++ b/arch/arm/mach-tegra/board-whistler.c @@ -360,12 +360,32 @@ static struct platform_device tegra_camera = { }; static struct tegra_asoc_platform_data whistler_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 = 200, + .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 = 200, + .i2s_param[HIFI_CODEC] = { + .audio_port_id = 0, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_I2S, + .sample_size = 16, + }, + .i2s_param[BASEBAND] = { + .audio_port_id = 2, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + .sample_size = 16, + .rate = 8000, + .channels = 1, + }, + .i2s_param[BT_SCO] = { + .sample_size = 16, + .audio_port_id = 3, + .is_i2s_master = 1, + .i2s_mode = TEGRA_DAIFMT_DSP_A, + }, }; static struct platform_device whistler_audio_aic326x_device = { diff --git a/arch/arm/mach-tegra/include/mach/tegra_asoc_pdata.h b/arch/arm/mach-tegra/include/mach/tegra_asoc_pdata.h index fff2fcc68269..7aada6940b39 100644 --- a/arch/arm/mach-tegra/include/mach/tegra_asoc_pdata.h +++ b/arch/arm/mach-tegra/include/mach/tegra_asoc_pdata.h @@ -1,7 +1,7 @@ /* * arch/arm/mach-tegra/include/mach/tegra_asoc_pdata.h * - * Copyright 2012 NVIDIA, Inc. + * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and @@ -25,20 +25,23 @@ #define TEGRA_DAIFMT_RIGHT_J 3 #define TEGRA_DAIFMT_LEFT_J 4 -struct baseband_config { +struct i2s_config { + int audio_port_id; + int is_i2s_master; + int i2s_mode; + int sample_size; int rate; int channels; - int bit_format; - int is_master; }; struct tegra_asoc_platform_data { + const char *codec_name; + const char *codec_dai_name; int gpio_spkr_en; int gpio_hp_det; int gpio_hp_mute; int gpio_int_mic_en; int gpio_ext_mic_en; unsigned int debounce_time_hp; - int audio_port_id[NUM_I2S_DEVICES]; - struct baseband_config baseband_param; + struct i2s_config i2s_param[NUM_I2S_DEVICES]; }; |