@@ -161,10 +161,6 @@ static int at91_pm_enter(suspend_state_t state)
* turning off the main oscillator; reverse on wakeup.
*/
if (slow_clock) {
-#ifdef CONFIG_AT91_SLOW_CLOCK
- /* copy slow_clock handler to SRAM, and call it */
- memcpy(slow_clock, at91_slow_clock, at91_slow_clock_sz);
-#endif
slow_clock(at91_pmc_base, at91_ramc_base[0],
at91_ramc_base[1],
at91_pm_data.memctrl);
@@ -272,6 +268,9 @@ static void __init at91_pm_sram_init(void)
sram_pbase = gen_pool_virt_to_phys(sram_pool, sram_base);
slow_clock = __arm_ioremap_exec(sram_pbase, at91_slow_clock_sz, false);
+ /* Copy the slow_clock handler to SRAM */
+ memcpy(slow_clock, at91_slow_clock, at91_slow_clock_sz);
+
put_node:
of_node_put(node);
}
@@ -289,7 +288,10 @@ static void __init at91_pm_init(void)
if (at91_cpuidle_device.dev.platform_data)
platform_device_register(&at91_cpuidle_device);
- suspend_set_ops(&at91_pm_ops);
+ if (slow_clock)
+ suspend_set_ops(&at91_pm_ops);
+ else
+ pr_info("AT91: PM : Not supported, due to no sram allocated\n");
}
void __init at91_rm9200_pm_init(void)