Files
6CAR/middleware/fee/fee_eeprom.h
2026-04-18 09:16:58 +08:00

61 lines
1.7 KiB
C

/**
* @file fee_eeprom.h
*
* Copyright (c) 2022 Semidrive Semiconductor.
* All rights reserved.
*
* Description:
*
* Revision History:
* -----------------
*/
#ifndef DISK_FEE_EEPROM_H_
#define DISK_FEE_EEPROM_H_
#include "fee.h"
#include <lib/list.h>
#define FEE_EEPROM_NAME(n) "fee_eeprom"#n
#define FEE_EEPROM_SIZE_AVG 2 /* average access size,unit is eeprom_align_size */
struct fee_config_eeprom {
/* nor flash info */
struct disk_dev_info *disk_dev;
/* eeprom info */
const char *fee_name;
uint16_t eeprom_size; /* The capacity of the virtual EEPROM */
uint16_t eeprom_align_size;/* virtual EEPROM access alignment size, alignment access_align_size */
uint16_t eeprom_pe_cycles; /* virtual EEPROM lifetime */
/* block addr buff */
uint8_t *block_addr_mask; /* used to store block_addr mask */
uint16_t block_addr_size; /* block_addr buff size */
uint16_t block_addr_num; /* block_addr buff number */
};
struct fee_eeprom {
const char *fee_name;
struct list_node node; /* list node */
struct fee_dev fee_dev; /* fee device */
struct fee_config_eeprom fee_con; /* fee eeprom config */
};
/* fee eeprom APIs */
int fee_init_eeprom(void);
int fee_exit_eeprom(void);
int fee_register_eeprom(struct fee_eeprom *fee);
int fee_unregister_eeprom(struct fee_eeprom *fee);
/* access to multiple blocks, address and length must be aligned eeprom_align_size */
int fee_read_eeprom(const char *fee_name, uint32_t addr, uint8_t *data_buffer,
uint16_t length);
int fee_write_eeprom(const char *fee_name, uint32_t addr,
const uint8_t *data_buffer, uint16_t length);
#endif /* DISK_FEE_EEPROM_H_ */