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; | 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) | int wdt_start(struct udevice *dev, u64 timeout_ms, ulong flags) | ||||||
| { | { | ||||||
| 	const struct wdt_ops *ops = device_get_ops(dev); | 	const struct wdt_ops *ops = device_get_ops(dev); | ||||||
|  |  | ||||||
|  | @ -106,38 +106,6 @@ struct wdt_ops { | ||||||
| 	int (*expire_now)(struct udevice *dev, ulong flags); | 	int (*expire_now)(struct udevice *dev, ulong flags); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #if CONFIG_IS_ENABLED(WDT) | int initr_watchdog(void); | ||||||
| #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 |  | ||||||
| 
 | 
 | ||||||
| #endif  /* _WDT_H_ */ | #endif  /* _WDT_H_ */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue