watchdog: move initr_watchdog() to wdt-uclass.c
This function is a bit large for an inline function, and for U-Boot proper, it is called via a function pointer anyway (in board_r.c), so cannot be inlined. It will shortly set a global variable to be used by the watchdog_reset() function in wdt-uclass.c, so this also allows making that variable local to wdt-uclass.c. The WATCHDOG_TIMEOUT_SECS define is not used elsewhere. Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk> Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
		
							parent
							
								
									21a0bf7f46
								
							
						
					
					
						commit
						b4d9452c44
					
				|  | @ -14,6 +14,39 @@ | |||
| 
 | ||||
| DECLARE_GLOBAL_DATA_PTR; | ||||
| 
 | ||||
| #define WATCHDOG_TIMEOUT_SECS	(CONFIG_WATCHDOG_TIMEOUT_MSECS / 1000) | ||||
| 
 | ||||
| int initr_watchdog(void) | ||||
| { | ||||
| 	u32 timeout = WATCHDOG_TIMEOUT_SECS; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Init watchdog: This will call the probe function of the | ||||
| 	 * watchdog driver, enabling the use of the device | ||||
| 	 */ | ||||
| 	if (uclass_get_device_by_seq(UCLASS_WDT, 0, | ||||
| 				     (struct udevice **)&gd->watchdog_dev)) { | ||||
| 		debug("WDT:   Not found by seq!\n"); | ||||
| 		if (uclass_get_device(UCLASS_WDT, 0, | ||||
| 				      (struct udevice **)&gd->watchdog_dev)) { | ||||
| 			printf("WDT:   Not found!\n"); | ||||
| 			return 0; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)) { | ||||
| 		timeout = dev_read_u32_default(gd->watchdog_dev, "timeout-sec", | ||||
| 					       WATCHDOG_TIMEOUT_SECS); | ||||
| 	} | ||||
| 
 | ||||
| 	wdt_start(gd->watchdog_dev, timeout * 1000, 0); | ||||
| 	gd->flags |= GD_FLG_WDT_READY; | ||||
| 	printf("WDT:   Started with%s servicing (%ds timeout)\n", | ||||
| 	       IS_ENABLED(CONFIG_WATCHDOG) ? "" : "out", timeout); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int wdt_start(struct udevice *dev, u64 timeout_ms, ulong flags) | ||||
| { | ||||
| 	const struct wdt_ops *ops = device_get_ops(dev); | ||||
|  |  | |||
|  | @ -106,38 +106,6 @@ struct wdt_ops { | |||
| 	int (*expire_now)(struct udevice *dev, ulong flags); | ||||
| }; | ||||
| 
 | ||||
| #if CONFIG_IS_ENABLED(WDT) | ||||
| #define WATCHDOG_TIMEOUT_SECS	(CONFIG_WATCHDOG_TIMEOUT_MSECS / 1000) | ||||
| 
 | ||||
| static inline int initr_watchdog(void) | ||||
| { | ||||
| 	u32 timeout = WATCHDOG_TIMEOUT_SECS; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Init watchdog: This will call the probe function of the | ||||
| 	 * watchdog driver, enabling the use of the device | ||||
| 	 */ | ||||
| 	if (uclass_get_device_by_seq(UCLASS_WDT, 0, | ||||
| 				     (struct udevice **)&gd->watchdog_dev)) { | ||||
| 		debug("WDT:   Not found by seq!\n"); | ||||
| 		if (uclass_get_device(UCLASS_WDT, 0, | ||||
| 				      (struct udevice **)&gd->watchdog_dev)) { | ||||
| 			printf("WDT:   Not found!\n"); | ||||
| 			return 0; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)) { | ||||
| 		timeout = dev_read_u32_default(gd->watchdog_dev, "timeout-sec", | ||||
| 					       WATCHDOG_TIMEOUT_SECS); | ||||
| 	} | ||||
| 	wdt_start(gd->watchdog_dev, timeout * 1000, 0); | ||||
| 	gd->flags |= GD_FLG_WDT_READY; | ||||
| 	printf("WDT:   Started with%s servicing (%ds timeout)\n", | ||||
| 	       IS_ENABLED(CONFIG_WATCHDOG) ? "" : "out", timeout); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| #endif | ||||
| int initr_watchdog(void); | ||||
| 
 | ||||
| #endif  /* _WDT_H_ */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue