|
@@ -26,6 +26,7 @@
|
|
|
#include <linux/err.h>
|
|
|
#include <linux/gpio.h>
|
|
|
#include <linux/clk.h>
|
|
|
+#include <linux/delay.h>
|
|
|
|
|
|
#include <plat/sram.h>
|
|
|
#include <plat/clockdomain.h>
|
|
@@ -126,7 +127,15 @@ static void omap3_core_save_context(void)
|
|
|
/* wait for the save to complete */
|
|
|
while (!(omap_ctrl_readl(OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS)
|
|
|
& PADCONF_SAVE_DONE))
|
|
|
- ;
|
|
|
+ udelay(1);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Force write last pad into memory, as this can fail in some
|
|
|
+ * cases according to erratas 1.157, 1.185
|
|
|
+ */
|
|
|
+ omap_ctrl_writel(omap_ctrl_readl(OMAP343X_PADCONF_ETK_D14),
|
|
|
+ OMAP343X_CONTROL_MEM_WKUP + 0x2a0);
|
|
|
+
|
|
|
/* Save the Interrupt controller context */
|
|
|
omap_intc_save_context();
|
|
|
/* Save the GPMC context */
|