diff options
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise-pinmux.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise.c | 42 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise.h | 17 |
3 files changed, 57 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/board-enterprise-pinmux.c b/arch/arm/mach-tegra/board-enterprise-pinmux.c index 146631e9d50f..2aa73677df06 100644 --- a/arch/arm/mach-tegra/board-enterprise-pinmux.c +++ b/arch/arm/mach-tegra/board-enterprise-pinmux.c @@ -255,6 +255,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), @@ -365,7 +366,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), @@ -443,7 +443,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 fdf1e522b9df..f27f0a7817a0 100644 --- a/arch/arm/mach-tegra/board-enterprise.c +++ b/arch/arm/mach-tegra/board-enterprise.c @@ -53,7 +53,7 @@ #include <mach/i2s.h> #include <mach/tegra_max98088_pdata.h> #include <mach/thermal.h> - +#include <mach/tegra-bb-power.h> #include "board.h" #include "clock.h" #include "board-enterprise.h" @@ -825,15 +825,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; @@ -860,6 +889,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 80fad492834b..9141e44c29fc 100644 --- a/arch/arm/mach-tegra/board-enterprise.h +++ b/arch/arm/mach-tegra/board-enterprise.h @@ -112,6 +112,15 @@ void __init enterprise_tsensor_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 @@ -128,4 +137,12 @@ void __init enterprise_tsensor_init(void); #define TDIODE_OFFSET (9000) /* in millicelsius */ +/* Baseband IDs */ + +enum tegra_bb_type { + TEGRA_BB_PH450 = 1, + TEGRA_BB_XMM6260, + TEGRA_BB_M7400, +}; + #endif |