|
@@ -63,8 +63,6 @@ static struct sleep_save exynos_core_save[] = {
|
|
|
|
|
|
struct exynos_pm_data {
|
|
struct exynos_pm_data {
|
|
const struct exynos_wkup_irq *wkup_irq;
|
|
const struct exynos_wkup_irq *wkup_irq;
|
|
- struct sleep_save *extra_save;
|
|
|
|
- int num_extra_save;
|
|
|
|
unsigned int wake_disable_mask;
|
|
unsigned int wake_disable_mask;
|
|
unsigned int *release_ret_regs;
|
|
unsigned int *release_ret_regs;
|
|
|
|
|
|
@@ -75,7 +73,7 @@ struct exynos_pm_data {
|
|
int (*cpu_suspend)(unsigned long);
|
|
int (*cpu_suspend)(unsigned long);
|
|
};
|
|
};
|
|
|
|
|
|
-struct exynos_pm_data *pm_data;
|
|
|
|
|
|
+static const struct exynos_pm_data *pm_data;
|
|
|
|
|
|
static int exynos5420_cpu_state;
|
|
static int exynos5420_cpu_state;
|
|
static unsigned int exynos_pmu_spare3;
|
|
static unsigned int exynos_pmu_spare3;
|
|
@@ -104,7 +102,7 @@ static const struct exynos_wkup_irq exynos5250_wkup_irq[] = {
|
|
{ /* sentinel */ },
|
|
{ /* sentinel */ },
|
|
};
|
|
};
|
|
|
|
|
|
-unsigned int exynos_release_ret_regs[] = {
|
|
|
|
|
|
+static unsigned int exynos_release_ret_regs[] = {
|
|
S5P_PAD_RET_MAUDIO_OPTION,
|
|
S5P_PAD_RET_MAUDIO_OPTION,
|
|
S5P_PAD_RET_GPIO_OPTION,
|
|
S5P_PAD_RET_GPIO_OPTION,
|
|
S5P_PAD_RET_UART_OPTION,
|
|
S5P_PAD_RET_UART_OPTION,
|
|
@@ -115,7 +113,7 @@ unsigned int exynos_release_ret_regs[] = {
|
|
REG_TABLE_END,
|
|
REG_TABLE_END,
|
|
};
|
|
};
|
|
|
|
|
|
-unsigned int exynos3250_release_ret_regs[] = {
|
|
|
|
|
|
+static unsigned int exynos3250_release_ret_regs[] = {
|
|
S5P_PAD_RET_MAUDIO_OPTION,
|
|
S5P_PAD_RET_MAUDIO_OPTION,
|
|
S5P_PAD_RET_GPIO_OPTION,
|
|
S5P_PAD_RET_GPIO_OPTION,
|
|
S5P_PAD_RET_UART_OPTION,
|
|
S5P_PAD_RET_UART_OPTION,
|
|
@@ -128,7 +126,7 @@ unsigned int exynos3250_release_ret_regs[] = {
|
|
REG_TABLE_END,
|
|
REG_TABLE_END,
|
|
};
|
|
};
|
|
|
|
|
|
-unsigned int exynos5420_release_ret_regs[] = {
|
|
|
|
|
|
+static unsigned int exynos5420_release_ret_regs[] = {
|
|
EXYNOS_PAD_RET_DRAM_OPTION,
|
|
EXYNOS_PAD_RET_DRAM_OPTION,
|
|
EXYNOS_PAD_RET_MAUDIO_OPTION,
|
|
EXYNOS_PAD_RET_MAUDIO_OPTION,
|
|
EXYNOS_PAD_RET_JTAG_OPTION,
|
|
EXYNOS_PAD_RET_JTAG_OPTION,
|
|
@@ -240,10 +238,6 @@ static void exynos_pm_prepare(void)
|
|
|
|
|
|
s3c_pm_do_save(exynos_core_save, ARRAY_SIZE(exynos_core_save));
|
|
s3c_pm_do_save(exynos_core_save, ARRAY_SIZE(exynos_core_save));
|
|
|
|
|
|
- if (pm_data->extra_save)
|
|
|
|
- s3c_pm_do_save(pm_data->extra_save,
|
|
|
|
- pm_data->num_extra_save);
|
|
|
|
-
|
|
|
|
exynos_pm_enter_sleep_mode();
|
|
exynos_pm_enter_sleep_mode();
|
|
|
|
|
|
/* ensure at least INFORM0 has the resume address */
|
|
/* ensure at least INFORM0 has the resume address */
|
|
@@ -366,10 +360,6 @@ static void exynos_pm_resume(void)
|
|
/* For release retention */
|
|
/* For release retention */
|
|
exynos_pm_release_retention();
|
|
exynos_pm_release_retention();
|
|
|
|
|
|
- if (pm_data->extra_save)
|
|
|
|
- s3c_pm_do_restore_core(pm_data->extra_save,
|
|
|
|
- pm_data->num_extra_save);
|
|
|
|
-
|
|
|
|
s3c_pm_do_restore_core(exynos_core_save, ARRAY_SIZE(exynos_core_save));
|
|
s3c_pm_do_restore_core(exynos_core_save, ARRAY_SIZE(exynos_core_save));
|
|
|
|
|
|
if (cpuid == ARM_CPU_PART_CORTEX_A9)
|
|
if (cpuid == ARM_CPU_PART_CORTEX_A9)
|
|
@@ -576,7 +566,7 @@ static const struct exynos_pm_data exynos5250_pm_data = {
|
|
.cpu_suspend = exynos_cpu_suspend,
|
|
.cpu_suspend = exynos_cpu_suspend,
|
|
};
|
|
};
|
|
|
|
|
|
-static struct exynos_pm_data exynos5420_pm_data = {
|
|
|
|
|
|
+static const struct exynos_pm_data exynos5420_pm_data = {
|
|
.wkup_irq = exynos5250_wkup_irq,
|
|
.wkup_irq = exynos5250_wkup_irq,
|
|
.wake_disable_mask = (0x7F << 7) | (0x1F << 1),
|
|
.wake_disable_mask = (0x7F << 7) | (0x1F << 1),
|
|
.release_ret_regs = exynos5420_release_ret_regs,
|
|
.release_ret_regs = exynos5420_release_ret_regs,
|
|
@@ -622,7 +612,7 @@ void __init exynos_pm_init(void)
|
|
pr_err("Failed to find PMU node\n");
|
|
pr_err("Failed to find PMU node\n");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- pm_data = (struct exynos_pm_data *) match->data;
|
|
|
|
|
|
+ pm_data = (const struct exynos_pm_data *) match->data;
|
|
|
|
|
|
/* Platform-specific GIC callback */
|
|
/* Platform-specific GIC callback */
|
|
gic_arch_extn.irq_set_wake = exynos_irq_set_wake;
|
|
gic_arch_extn.irq_set_wake = exynos_irq_set_wake;
|