23 #include "blockdevice/BlockDevice.h" 24 #include "platform/Callback.h" 51 enum sfdp_cmd_addr_size_t {
52 SFDP_CMD_ADDR_NONE = 0x00,
53 SFDP_CMD_ADDR_3_BYTE = 0x01,
54 SFDP_CMD_ADDR_4_BYTE = 0x02,
55 SFDP_CMD_ADDR_SIZE_VARIABLE = 0x03
59 constexpr sfdp_cmd_addr_size_t SFDP_READ_CMD_ADDR_TYPE = SFDP_CMD_ADDR_3_BYTE;
60 constexpr uint8_t SFDP_READ_CMD_INST = 0x5A;
61 constexpr uint8_t SFDP_READ_CMD_DUMMY_CYCLES = 8;
64 constexpr uint8_t SFDP_CMD_DUMMY_CYCLES_VARIABLE = 0xF;
70 bd_size_t device_size_bytes;
JEDEC 4-byte Address Instruction Parameter Table info.
int sfdp_parse_headers(Callback< int(bd_addr_t, sfdp_cmd_addr_size_t, uint8_t, uint8_t, void *, bd_size_t)> sfdp_reader, sfdp_hdr_info &sfdp_info)
Parse SFDP Database Retrieves all headers from within a memory device and parses the information cont...
constexpr int SFDP_SECTOR_MAP_MAX_REGIONS
Maximum number of regions with different erase granularity.
JEDEC Basic Flash Parameter Table info.
constexpr int SFDP_ERASE_BITMASK_TYPE3
Erase type 3 (erase granularity) identifier.
constexpr int SFDP_MAX_NUM_OF_ERASE_TYPES
Maximum number of different erase types (erase granularity)
int sfdp_parse_sector_map_table(Callback< int(bd_addr_t, sfdp_cmd_addr_size_t, uint8_t, uint8_t, void *, bd_size_t)> sfdp_reader, sfdp_hdr_info &sfdp_info)
Parse Sector Map Parameter Table Retrieves the table from a device and parses the information contain...
constexpr int SFDP_ERASE_BITMASK_ALL
Erase type All.
int sfdp_detect_erase_types_inst_and_size(uint8_t *bptbl_ptr, sfdp_hdr_info &sfdp_info)
Detect all supported erase types.
int legacy_erase_instruction
Legacy 4K erase instruction.
int sfdp_detect_addressability(uint8_t *bptbl_ptr, sfdp_bptbl_info &bptbl_info)
Detect is it possible to access the whole memory region.
SFDP JEDEC Parameter Table info.
int region_cnt
Number of erase regions.
constexpr int SFDP_HEADER_SIZE
Size of an SFDP header in bytes, 2 DWORDS.
int sfdp_iterate_next_largest_erase_type(uint8_t bitfield, bd_size_t size, bd_addr_t offset, int region, const sfdp_smptbl_info &smptbl)
Finds the largest Erase Type of the Region to which the offset belongs to.
constexpr int SFDP_ERASE_BITMASK_TYPE4
Erase type 4 (erase granularity) identifier.
unsigned int regions_min_common_erase_size
Minimal common erase size for all regions (0 if none exists)
constexpr int SFDP_BASIC_PARAMS_TBL_SIZE
Basic Parameter Table size in bytes, 20 DWORDS.
size_t sfdp_detect_page_size(uint8_t *bptbl_ptr, size_t bptbl_size)
Detect page size used for writing on flash.
int sfdp_find_addr_region(bd_addr_t offset, const sfdp_hdr_info &sfdp_info)
Find the region to which the given offset belongs to.
constexpr int SFDP_ERASE_BITMASK_NONE
Erase type None.
JEDEC Sector Map Table info.
int sfdp_detect_device_density(uint8_t *bptbl_ptr, sfdp_bptbl_info &bptbl_info)
Detect device density.
Callback class based on template specialization.
constexpr int SFDP_ERASE_BITMASK_TYPE1
Erase type 1 (erase granularity) identifier.
constexpr int SFDP_ERASE_BITMASK_TYPE2
Erase type 2 (erase granularity) identifier.