summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRaj Jayaraman <rjayaraman@nvidia.com>2011-10-14 13:50:36 -0700
committerRohan Somvanshi <rsomvanshi@nvidia.com>2011-10-31 04:29:41 -0700
commitb840e235505829d7e11f2a984fb39d34bfb8f8d9 (patch)
tree8cf80bef9f6921abb60010f374ec96c01587e9eb /arch
parent6f6a3b6759f95b833a3c98ee45015592f388b161 (diff)
arm: tegra: Add support for M7400 modem.
Bug 878736 Bug 886459 Change-Id: I065c3c0e911332818c81aee5164a242b4d5cd8f1 Reviewed-on: http://git-master/r/58202 Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com> Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/board-enterprise-pinmux.c3
-rw-r--r--arch/arm/mach-tegra/board-enterprise.c41
-rw-r--r--arch/arm/mach-tegra/board-enterprise.h17
3 files changed, 57 insertions, 4 deletions
diff --git a/arch/arm/mach-tegra/board-enterprise-pinmux.c b/arch/arm/mach-tegra/board-enterprise-pinmux.c
index 54eb325b0595..1885c073a202 100644
--- a/arch/arm/mach-tegra/board-enterprise-pinmux.c
+++ b/arch/arm/mach-tegra/board-enterprise-pinmux.c
@@ -243,6 +243,7 @@ static __initdata struct tegra_pingroup_config enterprise_pinmux[] = {
DEFAULT_PINMUX(GPIO_PU1, UARTA, NORMAL, NORMAL, INPUT),
DEFAULT_PINMUX(GPIO_PU2, UARTA, NORMAL, NORMAL, INPUT),
DEFAULT_PINMUX(GPIO_PU3, UARTA, NORMAL, NORMAL, OUTPUT),
+ DEFAULT_PINMUX(GPIO_PU4, PWM1, NORMAL, NORMAL, OUTPUT),
DEFAULT_PINMUX(GPIO_PU5, PWM2, NORMAL, NORMAL, INPUT),
DEFAULT_PINMUX(GPIO_PU6, PWM3, NORMAL, NORMAL, OUTPUT),
DEFAULT_PINMUX(DAP4_FS, I2S3, NORMAL, NORMAL, INPUT),
@@ -353,7 +354,6 @@ static __initdata struct tegra_pingroup_config enterprise_unused_pinmux[] = {
DEFAULT_PINMUX(GPIO_PBB4, VGP4, PULL_DOWN, TRISTATE, OUTPUT),
DEFAULT_PINMUX(GPIO_PBB5, VGP5, PULL_DOWN, TRISTATE, OUTPUT),
DEFAULT_PINMUX(GPIO_PBB6, VGP6, PULL_DOWN, TRISTATE, OUTPUT),
- DEFAULT_PINMUX(GPIO_PU4, PWM1, PULL_DOWN, TRISTATE, OUTPUT),
DEFAULT_PINMUX(GMI_AD0, GMI, NORMAL, TRISTATE, OUTPUT),
DEFAULT_PINMUX(GMI_AD1, GMI, NORMAL, TRISTATE, OUTPUT),
DEFAULT_PINMUX(GMI_AD2, GMI, NORMAL, TRISTATE, OUTPUT),
@@ -426,7 +426,6 @@ static __initdata struct pin_info_low_power_mode enterprise_unused_gpio_pins[] =
PIN_GPIO_LPM("GPIO_PBB4", TEGRA_GPIO_PBB4, 0, 0),
PIN_GPIO_LPM("GPIO_PBB5", TEGRA_GPIO_PBB5, 0, 0),
PIN_GPIO_LPM("GPIO_PBB6", TEGRA_GPIO_PBB6, 0, 0),
- PIN_GPIO_LPM("GPIO_PU4", TEGRA_GPIO_PU4, 0, 0),
PIN_GPIO_LPM("GMI_AD0", TEGRA_GPIO_PG0, 0, 0),
PIN_GPIO_LPM("GMI_AD1", TEGRA_GPIO_PG1, 0, 0),
PIN_GPIO_LPM("GMI_AD2", TEGRA_GPIO_PG2, 0, 0),
diff --git a/arch/arm/mach-tegra/board-enterprise.c b/arch/arm/mach-tegra/board-enterprise.c
index f529ca817dfd..9207295674be 100644
--- a/arch/arm/mach-tegra/board-enterprise.c
+++ b/arch/arm/mach-tegra/board-enterprise.c
@@ -55,6 +55,7 @@
#include <mach/usb_phy.h>
#include <sound/max98088.h>
#include <mach/suspend.h>
+#include <mach/tegra-bb-power.h>
#include "board.h"
#include "clock.h"
@@ -966,15 +967,44 @@ static struct platform_device tegra_baseband_power2_device = {
},
};
+#ifdef CONFIG_TEGRA_BB_M7400
+static union tegra_bb_gpio_id m7400_gpio_id = {
+ .m7400 = {
+ .pwr_status = GPIO_BB_RESET,
+ .pwr_on = GPIO_BB_PWRON,
+ .uart_awr = GPIO_BB_APACK,
+ .uart_cwr = GPIO_BB_CPACK,
+ .usb_awr = GPIO_BB_APACK2,
+ .usb_cwr = GPIO_BB_CPACK2,
+ .service = GPIO_BB_RSVD2,
+ .resout2 = GPIO_BB_RSVD1,
+ },
+};
+
+static struct tegra_bb_pdata m7400_pdata = {
+ .id = &m7400_gpio_id,
+ .device = &tegra_ehci2_device,
+ .bb_id = TEGRA_BB_M7400,
+};
+
+static struct platform_device tegra_baseband_m7400_device = {
+ .name = "tegra_baseband_power",
+ .id = -1,
+ .dev = {
+ .platform_data = &m7400_pdata,
+ },
+};
+#endif
+
static void enterprise_baseband_init(void)
{
int modem_id = tegra_get_modem_id();
switch (modem_id) {
- case 1: /* PH450 ULPI */
+ case TEGRA_BB_PH450: /* PH450 ULPI */
enterprise_modem_init();
break;
- case 2: /* XMM6260 HSIC */
+ case TEGRA_BB_XMM6260: /* XMM6260 HSIC */
/* xmm baseband - do not switch off phy during suspend */
tegra_ehci_uhsic_pdata.power_down_on_bus_suspend = 0;
uhsic_phy_config.postsuspend = enterprise_usb_hsic_postsupend;
@@ -1000,6 +1030,13 @@ static void enterprise_baseband_init(void)
platform_device_register(&tegra_baseband_power_device);
platform_device_register(&tegra_baseband_power2_device);
break;
+#ifdef CONFIG_TEGRA_BB_M7400
+ case TEGRA_BB_M7400: /* M7400 HSIC */
+ tegra_ehci2_device.dev.platform_data
+ = &tegra_ehci_uhsic_pdata;
+ platform_device_register(&tegra_baseband_m7400_device);
+ break;
+#endif
}
}
diff --git a/arch/arm/mach-tegra/board-enterprise.h b/arch/arm/mach-tegra/board-enterprise.h
index 1e9f9830879e..9c64704fa30f 100644
--- a/arch/arm/mach-tegra/board-enterprise.h
+++ b/arch/arm/mach-tegra/board-enterprise.h
@@ -91,6 +91,15 @@ int enterprise_edp_init(void);
/* Baseband GPIO addresses */
+#define GPIO_BB_RESET TEGRA_GPIO_PE1
+#define GPIO_BB_PWRON TEGRA_GPIO_PE0
+#define GPIO_BB_APACK TEGRA_GPIO_PE3
+#define GPIO_BB_APACK2 TEGRA_GPIO_PE2
+#define GPIO_BB_CPACK TEGRA_GPIO_PU5
+#define GPIO_BB_CPACK2 TEGRA_GPIO_PV0
+#define GPIO_BB_RSVD1 TEGRA_GPIO_PV1
+#define GPIO_BB_RSVD2 TEGRA_GPIO_PU4
+
#define BB_GPIO_MDM_PWRON_AP2BB TEGRA_GPIO_PE0 /* LCD_D0 */
#define BB_GPIO_RESET_AP2BB TEGRA_GPIO_PE1 /* LCD_D1 */
#define BB_GPIO_LCD_PWR1 TEGRA_GPIO_PC1
@@ -105,6 +114,14 @@ int enterprise_edp_init(void);
#define XMM_GPIO_IPC_BB_WAKE BB_GPIO_HS1_AP2BB
#define XMM_GPIO_IPC_AP_WAKE BB_GPIO_HS1_BB2AP
+/* Baseband IDs */
+
+enum tegra_bb_type {
+ TEGRA_BB_PH450 = 1,
+ TEGRA_BB_XMM6260,
+ TEGRA_BB_M7400,
+};
+
/* Board IDs */
#define BOARD_1205 (0x0C05)