| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- // 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;
 
- }
 
 
  |