mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	board: sl28: disable recovery watchdog
This board has an internal watchdog which supervises the board startup. Although, the initial state of the watchdog is configurable, it is enabled by default. In board_late_init(), which means almost everything worked as expected, disable the watchdog. Signed-off-by: Michael Walle <michael@walle.cc> Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
		
				
					committed by
					
						 Priyanka Jain
						Priyanka Jain
					
				
			
			
				
	
			
			
			
						parent
						
							2ba8a446ce
						
					
				
				
					commit
					453d1711d2
				
			| @@ -15,6 +15,7 @@ | |||||||
| #include <asm/arch/soc.h> | #include <asm/arch/soc.h> | ||||||
| #include <fsl_immap.h> | #include <fsl_immap.h> | ||||||
| #include <netdev.h> | #include <netdev.h> | ||||||
|  | #include <wdt.h> | ||||||
|  |  | ||||||
| #include <sl28cpld.h> | #include <sl28cpld.h> | ||||||
| #include <fdtdec.h> | #include <fdtdec.h> | ||||||
| @@ -73,6 +74,34 @@ int checkboard(void) | |||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static void stop_recovery_watchdog(void) | ||||||
|  | { | ||||||
|  | 	struct udevice *dev; | ||||||
|  | 	int ret; | ||||||
|  |  | ||||||
|  | 	ret = uclass_get_device_by_driver(UCLASS_WDT, | ||||||
|  | 					  DM_DRIVER_GET(sl28cpld_wdt), &dev); | ||||||
|  | 	if (!ret) | ||||||
|  | 		wdt_stop(dev); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int fsl_board_late_init(void) | ||||||
|  | { | ||||||
|  | 	/* | ||||||
|  | 	 * Usually, the after a board reset, the watchdog is enabled by | ||||||
|  | 	 * default. This is to supervise the bootloader boot-up. Therefore, | ||||||
|  | 	 * to prevent a watchdog reset if we don't actively kick it, we have | ||||||
|  | 	 * to disable it. | ||||||
|  | 	 * | ||||||
|  | 	 * If the watchdog isn't enabled at reset (which is a configuration | ||||||
|  | 	 * option) disabling it doesn't hurt either. | ||||||
|  | 	 */ | ||||||
|  | 	if (!CONFIG_IS_ENABLED(WATCHDOG_AUTOSTART)) | ||||||
|  | 		stop_recovery_watchdog(); | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
| void detail_board_ddr_info(void) | void detail_board_ddr_info(void) | ||||||
| { | { | ||||||
| 	print_ddr_info(0); | 	print_ddr_info(0); | ||||||
|   | |||||||
| @@ -23,17 +23,17 @@ Copy u-boot.rom to a TFTP server. | |||||||
| Install the bootloader on the board | Install the bootloader on the board | ||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  |  | ||||||
| Please note, this bootloader doesn't support the builtin watchdog (yet), | To install the bootloader binary use the following command:: | ||||||
| therefore you have to disable it, see below. Otherwise you'll end up in |  | ||||||
| the failsafe bootloader on every reset:: |  | ||||||
|  |  | ||||||
|  > tftp path/to/u-boot.rom |  > tftp path/to/u-boot.rom | ||||||
|  > sf probe 0 |  > sf probe 0 | ||||||
|  > sf update $fileaddr 0x210000 $filesize |  > sf update $fileaddr 0x210000 $filesize | ||||||
|  |  | ||||||
| The board is fully failsafe, you can't break anything. But because you've | The board is fully failsafe, you can't break anything. If builtin watchdog | ||||||
| disabled the builtin watchdog you might have to manually enter failsafe | is enabled, you'll automatically end up in the failsafe bootloader if | ||||||
| mode by asserting the ``FORCE_RECOV#`` line during board reset. | something goes wrong. If the watchdog is disabled, you have to manually | ||||||
|  | enter failsafe mode by asserting the ``FORCE_RECOV#`` line during board | ||||||
|  | reset. | ||||||
|  |  | ||||||
| Update image | Update image | ||||||
| ------------ | ------------ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user