36 lines
		
	
	
		
			615 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			615 B
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0+
 | |
| /*
 | |
|  * (c) 2015 Purna Chandra Mandal <purna.mandal@microchip.com>
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #include <common.h>
 | |
| #include <asm/io.h>
 | |
| #include <mach/pic32.h>
 | |
| 
 | |
| /* SYSKEY */
 | |
| #define UNLOCK_KEY1	0xaa996655
 | |
| #define UNLOCK_KEY2	0x556699aa
 | |
| #define LOCK_KEY	0
 | |
| 
 | |
| #define RSWRST          0x1250
 | |
| 
 | |
| void _machine_restart(void)
 | |
| {
 | |
| 	void __iomem *base;
 | |
| 
 | |
| 	base = pic32_get_syscfg_base();
 | |
| 
 | |
| 	/* unlock sequence */
 | |
| 	writel(LOCK_KEY, base + SYSKEY);
 | |
| 	writel(UNLOCK_KEY1, base + SYSKEY);
 | |
| 	writel(UNLOCK_KEY2, base + SYSKEY);
 | |
| 
 | |
| 	/* soft reset */
 | |
| 	writel(0x1, base + RSWRST);
 | |
| 	(void) readl(base + RSWRST);
 | |
| 
 | |
| 	while (1)
 | |
| 		;
 | |
| }
 | 
