summaryrefslogtreecommitdiff
path: root/arch/arm/plat-mxc/system.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-mxc/system.c')
-rw-r--r--arch/arm/plat-mxc/system.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/arm/plat-mxc/system.c b/arch/arm/plat-mxc/system.c
index e216f687cd89..650391c7d2dd 100644
--- a/arch/arm/plat-mxc/system.c
+++ b/arch/arm/plat-mxc/system.c
@@ -35,6 +35,8 @@
static void __iomem *wdog_base;
extern u32 enable_ldo_mode;
+extern int dvfs_core_is_active;
+extern void stop_dvfs(void);
static void arch_reset_special_mode(char mode, const char *cmd)
{
@@ -85,6 +87,21 @@ void arch_reset(char mode, const char *cmd)
return;
}
#endif
+#ifdef CONFIG_ARCH_MX51
+ /* Workaround to reset NFC_CONFIG3 register
+ * due to the chip warm reset does not reset it
+ */
+ if (cpu_is_mx53())
+ __raw_writel(0x20600, MX53_IO_ADDRESS(MX53_NFC_BASE_ADDR)+0x28);
+ if (cpu_is_mx51())
+ __raw_writel(0x20600, MX51_IO_ADDRESS(MX51_NFC_BASE_ADDR)+0x28);
+#endif
+
+#ifdef CONFIG_ARCH_MX5
+ /* Stop DVFS-CORE before reboot. */
+ if (dvfs_core_is_active)
+ stop_dvfs();
+#endif
if (cpu_is_mx1()) {
wcr_enable = (1 << 0);