mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 16:31:25 +01:00 
			
		
		
		
	Add bootcount to AT91
Use AT91_GPBR 3 as a bootcount register. The bootmagic and the bootcount shares AT91_GPBR 3. Signed-off-by: Anders Darander <ad@datarespons.se>
This commit is contained in:
		
							parent
							
								
									5f35348409
								
							
						
					
					
						commit
						cade7d9577
					
				| @ -35,6 +35,13 @@ | ||||
| #define CONFIG_SYS_AT91_MAIN_CLOCK 0 | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * The at91sam9260 has 4 GPBR (0-3), we'll use the last one, nr 3, | ||||
|  * to keep track of the bootcount. | ||||
|  */ | ||||
| #define AT91_GPBR_BOOTCOUNT_REGISTER 3 | ||||
| #define AT91_BOOTCOUNT_ADDRESS (AT91_GPBR + 4*AT91_GPBR_BOOTCOUNT_REGISTER) | ||||
| 
 | ||||
| int arch_cpu_init(void) | ||||
| { | ||||
| 	return at91_clock_init(CONFIG_SYS_AT91_MAIN_CLOCK); | ||||
| @ -56,3 +63,30 @@ int print_cpuinfo(void) | ||||
| 	return 0; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| #ifdef CONFIG_BOOTCOUNT_LIMIT | ||||
| /*
 | ||||
|  * Just as the mpc5xxx, we combine the BOOTCOUNT_MAGIC and boocount | ||||
|  * in one 32-bit register. This is done, as the AT91SAM9260 only has | ||||
|  * 4 GPBR. | ||||
|  */ | ||||
| void bootcount_store (ulong a) | ||||
| { | ||||
| 	volatile ulong *save_addr = | ||||
| 		(volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS); | ||||
| 
 | ||||
| 	*save_addr = (BOOTCOUNT_MAGIC & 0xffff0000) | (a & 0x0000ffff); | ||||
| } | ||||
| 
 | ||||
| ulong bootcount_load (void) | ||||
| { | ||||
| 	volatile ulong *save_addr = | ||||
| 		(volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS); | ||||
| 
 | ||||
| 	if ((*save_addr & 0xffff0000) != (BOOTCOUNT_MAGIC & 0xffff0000)) | ||||
| 		return 0; | ||||
| 	else | ||||
| 		return (*save_addr & 0x0000ffff); | ||||
| } | ||||
| 
 | ||||
| #endif /* CONFIG_BOOTCOUNT_LIMIT */ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user