diff options
Diffstat (limited to 'arch/arm/plat-mxc/system.c')
-rw-r--r-- | arch/arm/plat-mxc/system.c | 17 |
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); |