summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu-pinmux.c
diff options
context:
space:
mode:
authorBibek Basu <bbasu@nvidia.com>2012-10-11 12:03:18 +0530
committerMatthew Pedro <mapedro@nvidia.com>2012-11-28 19:45:06 -0800
commit03c65aadf0d141033e348d01713a4fd688d949b7 (patch)
tree660720d6d3032628bcba92526c7c326e29b442f9 /arch/arm/mach-tegra/board-cardhu-pinmux.c
parentfc993d9bc48f772133d8cd156c67c296477db070 (diff)
arm: tegra: cardhu: add support for PM315
Add support for PM315 Bug 1171138 Change-Id: I2e5461c656c41d4172aca60525655cb780eaa17e Original-author: Mike Thompson <mikthompson@nvidia.com> Signed-off-by: Mike Thompson <mikthompson@nvidia.com> Signed-off-by: Bibek Basu <bbasu@nvidia.com> Signed-off-by: Syed Rafiuddin <srafiuddin@nvidia.com> Reviewed-on: http://git-master/r/143506 (cherry picked from commit 4e66142b6990ca586e085aa88ae0bd6b819da0c4) Reviewed-on: http://git-master/r/166814 GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-pinmux.c')
-rw-r--r--arch/arm/mach-tegra/board-cardhu-pinmux.c67
1 files changed, 62 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-pinmux.c b/arch/arm/mach-tegra/board-cardhu-pinmux.c
index 346dccfd715b..c416d453e960 100644
--- a/arch/arm/mach-tegra/board-cardhu-pinmux.c
+++ b/arch/arm/mach-tegra/board-cardhu-pinmux.c
@@ -497,6 +497,20 @@ static __initdata struct tegra_pingroup_config cardhu_pinmux_e1291_a04[] = {
DEFAULT_PINMUX(GPIO_PU4, RSVD1, PULL_UP, NORMAL, INPUT),
};
+static __initdata struct tegra_pingroup_config cardhu_pinmux_pm315[] = {
+ DEFAULT_PINMUX(GMI_AD15, NAND, PULL_DOWN, NORMAL, OUTPUT),
+ DEFAULT_PINMUX(ULPI_DATA6, UARTA, NORMAL, NORMAL, OUTPUT),
+ DEFAULT_PINMUX(SPI2_MOSI, SPI6, NORMAL, NORMAL, INPUT),
+ DEFAULT_PINMUX(DAP3_SCLK, RSVD1, NORMAL, NORMAL, OUTPUT),
+ /* PCIE dock detect */
+ DEFAULT_PINMUX(GPIO_PU4, RSVD1, PULL_UP, NORMAL, INPUT),
+ /* CDC enable for realtek RTL5640 */
+ DEFAULT_PINMUX(SPI2_SCK, SPI2, NORMAL, NORMAL, OUTPUT),
+ DEFAULT_PINMUX(SPI2_CS1_N, SPI2, NORMAL, NORMAL, INPUT),
+ /* Power up for USB1, USB3 */
+ DEFAULT_PINMUX(GMI_AD13, NAND, PULL_UP, NORMAL, INPUT),
+};
+
static __initdata struct tegra_pingroup_config cardhu_pinmux_e1198[] = {
DEFAULT_PINMUX(LCD_CS0_N, DISPLAYA, NORMAL, NORMAL, INPUT),
DEFAULT_PINMUX(LCD_SCK, DISPLAYA, NORMAL, NORMAL, INPUT),
@@ -606,10 +620,33 @@ static __initdata struct tegra_pingroup_config gmi_pins_269[] = {
DEFAULT_PINMUX(GMI_WP_N, NAND, NORMAL, NORMAL, INPUT),
};
-static void __init cardhu_pinmux_audio_init(void)
+static void __init cardhu_wm8903_audio_init(void)
+{
+ int ret = gpio_request(TEGRA_GPIO_CDC_IRQ, "wm8903");
+ if (ret < 0)
+ pr_err("%s() Error in gpio_request() for gpio %d\n",
+ __func__, ret);
+ ret = gpio_direction_input(TEGRA_GPIO_CDC_IRQ);
+ if (ret < 0) {
+ pr_err("%s() Error in setting gpio %d to in/out\n",
+ __func__, ret);
+ gpio_free(TEGRA_GPIO_CDC_IRQ);
+ }
+}
+
+static void __init beaver_rt5640_audio_init(void)
{
- gpio_request(TEGRA_GPIO_CDC_IRQ, "wm8903");
- gpio_direction_input(TEGRA_GPIO_CDC_IRQ);
+ int ret = gpio_request(TEGRA_GPIO_RTL_CDC_IRQ, "rt5640");
+ if (ret < 0)
+ pr_err("%s() Error in gpio_request() for gpio %d\n",
+ __func__, ret);
+ ret = gpio_direction_input(TEGRA_GPIO_RTL_CDC_IRQ);
+ if (ret < 0) {
+ pr_err("%s() Error in setting gpio %d to in/out\n",
+ __func__, ret);
+ gpio_free(TEGRA_GPIO_RTL_CDC_IRQ);
+ }
+
}
#define GPIO_INIT_PIN_MODE(_gpio, _is_input, _value) \
@@ -639,6 +676,13 @@ static struct gpio_init_pin_info init_gpio_mode_e1291_a04[] = {
GPIO_INIT_PIN_MODE(TEGRA_GPIO_PR2, false, 0),
};
+static struct gpio_init_pin_info init_gpio_mode_pm315[] = {
+ GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD6, false, 0),
+ GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD4, false, 0),
+ GPIO_INIT_PIN_MODE(TEGRA_GPIO_PH5, false, 1),
+ GPIO_INIT_PIN_MODE(TEGRA_GPIO_PR2, false, 0),
+};
+
static void __init cardhu_gpio_init_configure(void)
{
struct board_info board_info;
@@ -670,6 +714,10 @@ static void __init cardhu_gpio_init_configure(void)
pins_info = init_gpio_mode_e1291_a04;
}
break;
+ case BOARD_PM315:
+ len = ARRAY_SIZE(init_gpio_mode_pm315);
+ pins_info = init_gpio_mode_pm315;
+ break;
default:
return;
}
@@ -718,7 +766,12 @@ int __init cardhu_pinmux_init(void)
tegra_pinmux_config_table(cardhu_pinmux_e1291_a04,
ARRAY_SIZE(cardhu_pinmux_e1291_a04));
break;
-
+ case BOARD_PM315:
+ tegra_pinmux_config_table(cardhu_pinmux_cardhu_a03,
+ ARRAY_SIZE(cardhu_pinmux_cardhu_a03));
+ tegra_pinmux_config_table(cardhu_pinmux_pm315,
+ ARRAY_SIZE(cardhu_pinmux_pm315));
+ break;
case BOARD_PM269:
case BOARD_PM305:
case BOARD_PM311:
@@ -749,7 +802,11 @@ int __init cardhu_pinmux_init(void)
break;
}
- cardhu_pinmux_audio_init();
+ if (board_info.board_id == BOARD_PM315)
+ beaver_rt5640_audio_init();
+ else
+ cardhu_wm8903_audio_init();
+
return 0;
}