summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/baseband-xmm-power.h
diff options
context:
space:
mode:
authorMichael Hsu <mhsu@nvidia.com>2011-10-14 17:26:07 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:52:39 -0800
commit645f91c68b19172da28779e86c2d60045fc64705 (patch)
treebc570f012238e1578d528f004048a477ad361a92 /arch/arm/mach-tegra/baseband-xmm-power.h
parent7a6f2363adc93e15bc2b1f96a3b4db9d75a43552 (diff)
arm: tegra: comms: GPIO changes for XMM modem ver 1130 or later
XMM modem version 1130 (or later) changes the GPIO power up sequence. Add module variable to support pre-1130 and post-1130 modem versions. BUG 828389 Reviewed-on: http://git-master/r/58240 (cherry picked from commit 0639c200face90d6dd0144acc7362c02909fa66c) Change-Id: If3a3486741d72d1251deeca3759af6b39c2031f1 Reviewed-on: http://git-master/r/62750 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: Rf848b30671a8739c11a376011165db6165f0a259
Diffstat (limited to 'arch/arm/mach-tegra/baseband-xmm-power.h')
-rw-r--r--arch/arm/mach-tegra/baseband-xmm-power.h50
1 files changed, 48 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/baseband-xmm-power.h b/arch/arm/mach-tegra/baseband-xmm-power.h
index 8025c9a956ce..53e71bf7b32a 100644
--- a/arch/arm/mach-tegra/baseband-xmm-power.h
+++ b/arch/arm/mach-tegra/baseband-xmm-power.h
@@ -14,9 +14,24 @@
*
*/
+#ifndef BASEBAND_XMM_POWER_H
+#define BASREBAND_XMM_POWER_H
+
#include <linux/pm.h>
#include <linux/suspend.h>
+#define TEGRA_EHCI_DEVICE "/sys/devices/platform/tegra-ehci.1/ehci_power"
+
+#define XMM_MODEM_VER_1121 0x1121
+#define XMM_MODEM_VER_1130 0x1130
+
+/* shared between baseband-xmm-* modules so they can agree on same
+ * modem configuration
+ */
+extern unsigned long modem_ver;
+extern unsigned long modem_flash;
+extern unsigned long modem_pm;
+
enum baseband_type {
BASEBAND_XMM,
};
@@ -45,7 +60,34 @@ struct baseband_power_platform_data {
} modem;
};
-static enum {
+enum baseband_xmm_power_work_state_t {
+ BBXMM_WORK_UNINIT,
+ BBXMM_WORK_INIT,
+ /* initialize flash modem */
+ BBXMM_WORK_INIT_FLASH_STEP1,
+ /* initialize flash (with power management support) modem */
+ BBXMM_WORK_INIT_FLASH_PM_STEP1,
+ BBXMM_WORK_INIT_FLASH_PM_VER_LT_1130_STEP1,
+ BBXMM_WORK_INIT_FLASH_PM_VER_GE_1130_STEP1,
+ /* initialize flashless (with power management support) modem */
+ BBXMM_WORK_INIT_FLASHLESS_PM_STEP1,
+ BBXMM_WORK_INIT_FLASHLESS_PM_VER_LT_1130_WAIT_IRQ,
+ BBXMM_WORK_INIT_FLASHLESS_PM_VER_LT_1130_STEP1,
+ BBXMM_WORK_INIT_FLASHLESS_PM_VER_LT_1130_STEP2,
+ BBXMM_WORK_INIT_FLASHLESS_PM_VER_GE_1130_STEP1,
+ BBXMM_WORK_INIT_FLASHLESS_PM_VER_GE_1130_STEP2,
+ BBXMM_WORK_INIT_FLASHLESS_PM_VER_GE_1130_STEP3,
+ BBXMM_WORK_INIT_FLASHLESS_PM_VER_GE_1130_STEP4,
+};
+
+struct baseband_xmm_power_work_t {
+ /* work structure must be first structure member */
+ struct work_struct work;
+ /* xmm modem state */
+ enum baseband_xmm_power_work_state_t state;
+};
+
+enum baseband_xmm_powerstate_t {
BBXMM_PS_UNINIT = 0,
BBXMM_PS_INIT = 1,
BBXMM_PS_L0 = 2,
@@ -56,6 +98,10 @@ static enum {
BBXMM_PS_L3 = 7,
BBXMM_PS_L3TOL0 = 8,
BBXMM_PS_LAST = -1,
-} baseband_xmm_powerstate;
+};
+
+irqreturn_t baseband_xmm_power_ipc_ap_wake_irq(int irq, void *dev_id);
void baseband_xmm_set_power_status(unsigned int status);
+
+#endif /* BASREBAND_XMM_POWER_H */