diff options
Diffstat (limited to 'arch/arm/mach-omap2/devices.c')
| -rw-r--r-- | arch/arm/mach-omap2/devices.c | 55 | 
1 files changed, 5 insertions, 50 deletions
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 1bca147ac91..9221a486b51 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -33,6 +33,7 @@  #include "mux.h"  #include "control.h" +#include "wd_timer.h"  #if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE) @@ -955,69 +956,23 @@ static inline void omap_init_vout(void) {}  /*-------------------------------------------------------------------------*/ -/* - * Inorder to avoid any assumptions from bootloader regarding WDT - * settings, WDT module is reset during init. This enables the watchdog - * timer. Hence it is required to disable the watchdog after the WDT reset - * during init. Otherwise the system would reboot as per the default - * watchdog timer registers settings. - */ -#define OMAP_WDT_WPS	(0x34) -#define OMAP_WDT_SPR	(0x48) -  static int omap2_disable_wdt(struct omap_hwmod *oh, void *unused)  { -	void __iomem *base; -	int ret; - -	if (!oh) { -		pr_err("%s: Could not look up wdtimer_hwmod\n", __func__); -		return -EINVAL; -	} - -	base = omap_hwmod_get_mpu_rt_va(oh); -	if (!base) { -		pr_err("%s: Could not get the base address for %s\n", -				oh->name, __func__); -		return -EINVAL; -	} - -	/* Enable the clocks before accessing the WDT registers */ -	ret = omap_hwmod_enable(oh); -	if (ret) { -		pr_err("%s: Could not enable clocks for %s\n", -				oh->name, __func__); -		return ret; -	} - -	/* sequence required to disable watchdog */ -	__raw_writel(0xAAAA, base + OMAP_WDT_SPR); -	while (__raw_readl(base + OMAP_WDT_WPS) & 0x10) -		cpu_relax(); - -	__raw_writel(0x5555, base + OMAP_WDT_SPR); -	while (__raw_readl(base + OMAP_WDT_WPS) & 0x10) -		cpu_relax(); - -	ret = omap_hwmod_idle(oh); -	if (ret) -		pr_err("%s: Could not disable clocks for %s\n", -				oh->name, __func__); - -	return ret; +	return omap2_wd_timer_disable(oh);  }  static void __init omap_disable_wdt(void)  {  	if (cpu_class_is_omap2())  		omap_hwmod_for_each_by_class("wd_timer", -						omap2_disable_wdt, NULL); +					     omap2_disable_wdt, NULL);  	return;  }  static int __init omap2_init_devices(void)  { -	/* please keep these calls, and their implementations above, +	/* +	 * please keep these calls, and their implementations above,  	 * in alphabetical order so they're easier to sort through.  	 */  	omap_disable_wdt();  |