62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
// SPDX-License-Identifier: GPL-2.0+
 | 
						|
/*
 | 
						|
 * Copyright (c) 2017 General Electric Company. All rights reserved.
 | 
						|
 */
 | 
						|
 | 
						|
#include <bootcount.h>
 | 
						|
#include <fs.h>
 | 
						|
#include <mapmem.h>
 | 
						|
 | 
						|
#define BC_MAGIC	0xbc
 | 
						|
 | 
						|
void bootcount_store(ulong a)
 | 
						|
{
 | 
						|
	u8 *buf;
 | 
						|
	loff_t len;
 | 
						|
	int ret;
 | 
						|
 | 
						|
	if (fs_set_blk_dev(CONFIG_SYS_BOOTCOUNT_EXT_INTERFACE,
 | 
						|
			   CONFIG_SYS_BOOTCOUNT_EXT_DEVPART, FS_TYPE_EXT)) {
 | 
						|
		puts("Error selecting device\n");
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	buf = map_sysmem(CONFIG_SYS_BOOTCOUNT_ADDR, 2);
 | 
						|
	buf[0] = BC_MAGIC;
 | 
						|
	buf[1] = (a & 0xff);
 | 
						|
	unmap_sysmem(buf);
 | 
						|
 | 
						|
	ret = fs_write(CONFIG_SYS_BOOTCOUNT_EXT_NAME,
 | 
						|
		       CONFIG_SYS_BOOTCOUNT_ADDR, 0, 2, &len);
 | 
						|
	if (ret != 0)
 | 
						|
		puts("Error storing bootcount\n");
 | 
						|
}
 | 
						|
 | 
						|
ulong bootcount_load(void)
 | 
						|
{
 | 
						|
	u8 *buf;
 | 
						|
	loff_t len_read;
 | 
						|
	int ret;
 | 
						|
 | 
						|
	if (fs_set_blk_dev(CONFIG_SYS_BOOTCOUNT_EXT_INTERFACE,
 | 
						|
			   CONFIG_SYS_BOOTCOUNT_EXT_DEVPART, FS_TYPE_EXT)) {
 | 
						|
		puts("Error selecting device\n");
 | 
						|
		return 0;
 | 
						|
	}
 | 
						|
 | 
						|
	ret = fs_read(CONFIG_SYS_BOOTCOUNT_EXT_NAME, CONFIG_SYS_BOOTCOUNT_ADDR,
 | 
						|
		      0, 2, &len_read);
 | 
						|
	if (ret != 0 || len_read != 2) {
 | 
						|
		puts("Error loading bootcount\n");
 | 
						|
		return 0;
 | 
						|
	}
 | 
						|
 | 
						|
	buf = map_sysmem(CONFIG_SYS_BOOTCOUNT_ADDR, 2);
 | 
						|
	if (buf[0] == BC_MAGIC)
 | 
						|
		ret = buf[1];
 | 
						|
 | 
						|
	unmap_sysmem(buf);
 | 
						|
 | 
						|
	return ret;
 | 
						|
}
 |