msm: pm2: Call appropriate irq functions for 7k and 8625 targets
There is a difference between the 7k & 8625 targets interrupt
controllers. 7k & 8625 targets uses the VIC & QGIC controllers
respectively. Power driver uses these conrtoller API's to take
a decision while entering into low power modes. This change
provides a generic implementation wihtout worrying about the
interrupt controller being used on the target.
Change-Id: Ib50cb19dc84333a969fc5287381f7703b64042ed
Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org>
diff --git a/arch/arm/mach-msm/pm.h b/arch/arm/mach-msm/pm.h
index 4e9cc3c..caafbdd 100644
--- a/arch/arm/mach-msm/pm.h
+++ b/arch/arm/mach-msm/pm.h
@@ -29,6 +29,20 @@
extern int power_collapsed;
+struct msm_pm_irq_calls {
+ unsigned int (*irq_pending)(void);
+ int (*idle_sleep_allowed)(void);
+ void (*enter_sleep1)(bool modem_wake, int from_idle, uint32_t
+ *irq_mask);
+ int (*enter_sleep2)(bool modem_wake, int from_idle);
+ void (*exit_sleep1)(uint32_t irq_mask, uint32_t wakeup_reason,
+ uint32_t pending_irqs);
+ void (*exit_sleep2)(uint32_t irq_mask, uint32_t wakeup_reason,
+ uint32_t pending_irqs);
+ void (*exit_sleep3)(uint32_t irq_mask, uint32_t wakeup_reason,
+ uint32_t pending_irqs);
+};
+
enum msm_pm_sleep_mode {
MSM_PM_SLEEP_MODE_POWER_COLLAPSE_SUSPEND,
MSM_PM_SLEEP_MODE_POWER_COLLAPSE,
@@ -60,6 +74,7 @@
};
void msm_pm_set_platform_data(struct msm_pm_platform_data *data, int count);
+void msm_pm_set_irq_extns(struct msm_pm_irq_calls *irq_calls);
int msm_pm_idle_prepare(struct cpuidle_device *dev);
int msm_pm_idle_enter(enum msm_pm_sleep_mode sleep_mode);
void msm_pm_cpu_enter_lowpower(unsigned int cpu);