@@ -152,9 +152,9 @@ QSPIFBlockDevice::QSPIFBlockDevice(PinName io0, PinName io1, PinName io2, PinNam
152
152
}
153
153
154
154
// Initialize parameters
155
- _sfdp_info.smtbl ._min_common_erase_size = 0 ;
156
- _sfdp_info.smtbl ._regions_count = 1 ;
157
- _sfdp_info.smtbl ._region_erase_types_bitfield [0 ] = SFDP_ERASE_BITMASK_NONE;
155
+ _sfdp_info.smtbl .regions_min_common_erase_size = 0 ;
156
+ _sfdp_info.smtbl .region_cnt = 1 ;
157
+ _sfdp_info.smtbl .region_erase_types_bitfld [0 ] = SFDP_ERASE_BITMASK_NONE;
158
158
159
159
// Until proven otherwise, assume no quad enable
160
160
_quad_enable_register_idx = QSPIF_NO_QUAD_ENABLE;
@@ -259,9 +259,9 @@ int QSPIFBlockDevice::init()
259
259
}
260
260
261
261
/* *************************** Parse Sector Map Table ***********************************/
262
- _sfdp_info.smtbl ._region_size_bytes [0 ] =
262
+ _sfdp_info.smtbl .region_size [0 ] =
263
263
_device_size_bytes; // If there's no region map, we have a single region sized the entire device size
264
- _sfdp_info.smtbl ._region_high_boundary [0 ] = _device_size_bytes - 1 ;
264
+ _sfdp_info.smtbl .region_high_boundary [0 ] = _device_size_bytes - 1 ;
265
265
266
266
if ((_sfdp_info.smtbl .addr != 0 ) && (0 != _sfdp_info.smtbl .size )) {
267
267
tr_debug (" Init - Parsing Sector Map Table - addr: 0x%lxh, Size: %d" , _sfdp_info.smtbl .addr ,
@@ -411,7 +411,7 @@ int QSPIFBlockDevice::erase(bd_addr_t addr, bd_size_t in_size)
411
411
// Find region of erased address
412
412
int region = _utils_find_addr_region (addr, _sfdp_info.smtbl );
413
413
// Erase Types of selected region
414
- uint8_t bitfield = _sfdp_info.smtbl ._region_erase_types_bitfield [region];
414
+ uint8_t bitfield = _sfdp_info.smtbl .region_erase_types_bitfld [region];
415
415
416
416
tr_debug (" Erase - addr: %llu, in_size: %llu" , addr, in_size);
417
417
@@ -434,8 +434,8 @@ int QSPIFBlockDevice::erase(bd_addr_t addr, bd_size_t in_size)
434
434
type = _utils_iterate_next_largest_erase_type (bitfield, size, (int )addr,
435
435
region,
436
436
_sfdp_info.smtbl );
437
- cur_erase_inst = _sfdp_info.smtbl ._erase_type_inst_arr [type];
438
- eu_size = _sfdp_info.smtbl ._erase_type_size_arr [type];
437
+ cur_erase_inst = _sfdp_info.smtbl .erase_type_inst_arr [type];
438
+ eu_size = _sfdp_info.smtbl .erase_type_size_arr [type];
439
439
} else {
440
440
// Must use legacy 4k erase instruction
441
441
cur_erase_inst = _legacy_erase_instruction;
@@ -468,10 +468,10 @@ int QSPIFBlockDevice::erase(bd_addr_t addr, bd_size_t in_size)
468
468
addr += chunk;
469
469
size -= chunk;
470
470
471
- if ((size > 0 ) && (addr > _sfdp_info.smtbl ._region_high_boundary [region])) {
471
+ if ((size > 0 ) && (addr > _sfdp_info.smtbl .region_high_boundary [region])) {
472
472
// erase crossed to next region
473
473
region++;
474
- bitfield = _sfdp_info.smtbl ._region_erase_types_bitfield [region];
474
+ bitfield = _sfdp_info.smtbl .region_erase_types_bitfld [region];
475
475
}
476
476
477
477
if (false == _is_mem_ready ()) {
@@ -507,7 +507,7 @@ bd_size_t QSPIFBlockDevice::get_program_size() const
507
507
bd_size_t QSPIFBlockDevice::get_erase_size () const
508
508
{
509
509
// return minimal erase size supported by all regions (0 if none exists)
510
- return _sfdp_info.smtbl ._min_common_erase_size ;
510
+ return _sfdp_info.smtbl .regions_min_common_erase_size ;
511
511
}
512
512
513
513
const char *QSPIFBlockDevice::get_type () const
@@ -526,7 +526,7 @@ bd_size_t QSPIFBlockDevice::get_erase_size(bd_addr_t addr)
526
526
// Find region of current address
527
527
int region = _utils_find_addr_region (addr, _sfdp_info.smtbl );
528
528
529
- int min_region_erase_size = _sfdp_info.smtbl ._min_common_erase_size ;
529
+ int min_region_erase_size = _sfdp_info.smtbl .regions_min_common_erase_size ;
530
530
int8_t type_mask = SFDP_ERASE_BITMASK_TYPE1;
531
531
int i_ind = 0 ;
532
532
@@ -535,9 +535,9 @@ bd_size_t QSPIFBlockDevice::get_erase_size(bd_addr_t addr)
535
535
536
536
for (i_ind = 0 ; i_ind < 4 ; i_ind++) {
537
537
// loop through erase types bitfield supported by region
538
- if (_sfdp_info.smtbl ._region_erase_types_bitfield [region] & type_mask) {
538
+ if (_sfdp_info.smtbl .region_erase_types_bitfld [region] & type_mask) {
539
539
540
- min_region_erase_size = _sfdp_info.smtbl ._erase_type_size_arr [i_ind];
540
+ min_region_erase_size = _sfdp_info.smtbl .erase_type_size_arr [i_ind];
541
541
break ;
542
542
}
543
543
type_mask = type_mask << 1 ;
@@ -855,26 +855,26 @@ int QSPIFBlockDevice::_sfdp_detect_erase_types_inst_and_size(uint8_t *basic_para
855
855
if (basic_param_table_size > QSPIF_BASIC_PARAM_TABLE_ERASE_TYPE_1_SIZE_BYTE) {
856
856
// Loop Erase Types 1-4
857
857
for (int i_ind = 0 ; i_ind < 4 ; i_ind++) {
858
- smtbl._erase_type_inst_arr [i_ind] = QSPI_NO_INST; // Default for unsupported type
859
- smtbl._erase_type_size_arr [i_ind] = 1
860
- << basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_ERASE_TYPE_1_SIZE_BYTE + 2 * i_ind]; // Size is 2^N where N is the table value
861
- tr_debug (" Erase Type(A) %d - Inst: 0x%xh, Size: %d" , (i_ind + 1 ), smtbl._erase_type_inst_arr [i_ind],
862
- smtbl._erase_type_size_arr [i_ind]);
863
- if (smtbl._erase_type_size_arr [i_ind] > 1 ) {
858
+ smtbl.erase_type_inst_arr [i_ind] = QSPI_NO_INST; // Default for unsupported type
859
+ smtbl.erase_type_size_arr [i_ind] = 1
860
+ << basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_ERASE_TYPE_1_SIZE_BYTE + 2 * i_ind]; // Size is 2^N where N is the table value
861
+ tr_debug (" Erase Type(A) %d - Inst: 0x%xh, Size: %d" , (i_ind + 1 ), smtbl.erase_type_inst_arr [i_ind],
862
+ smtbl.erase_type_size_arr [i_ind]);
863
+ if (smtbl.erase_type_size_arr [i_ind] > 1 ) {
864
864
// if size==1 type is not supported
865
- smtbl._erase_type_inst_arr [i_ind] = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_ERASE_TYPE_1_BYTE
866
- + 2 * i_ind];
865
+ smtbl.erase_type_inst_arr [i_ind] = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_ERASE_TYPE_1_BYTE
866
+ + 2 * i_ind];
867
867
868
- if ((smtbl._erase_type_size_arr [i_ind] < smtbl._min_common_erase_size )
869
- || (smtbl._min_common_erase_size == 0 )) {
868
+ if ((smtbl.erase_type_size_arr [i_ind] < smtbl.regions_min_common_erase_size )
869
+ || (smtbl.regions_min_common_erase_size == 0 )) {
870
870
// Set default minimal common erase for signal region
871
- smtbl._min_common_erase_size = smtbl._erase_type_size_arr [i_ind];
871
+ smtbl.regions_min_common_erase_size = smtbl.erase_type_size_arr [i_ind];
872
872
}
873
- smtbl._region_erase_types_bitfield [0 ] |= bitfield; // If there's no region map, set region "0" types bitfield as default
873
+ smtbl.region_erase_types_bitfld [0 ] |= bitfield; // If there's no region map, set region "0" types bitfield as default
874
874
}
875
875
876
- tr_debug (" Erase Type %d - Inst: 0x%xh, Size: %d" , (i_ind + 1 ), smtbl._erase_type_inst_arr [i_ind],
877
- smtbl._erase_type_size_arr [i_ind]);
876
+ tr_debug (" Erase Type %d - Inst: 0x%xh, Size: %d" , (i_ind + 1 ), smtbl.erase_type_inst_arr [i_ind],
877
+ smtbl.erase_type_size_arr [i_ind]);
878
878
bitfield = bitfield << 1 ;
879
879
}
880
880
} else {
@@ -1107,7 +1107,7 @@ int QSPIFBlockDevice::_sfdp_detect_reset_protocol_and_reset(uint8_t *basic_param
1107
1107
return status;
1108
1108
}
1109
1109
1110
- int QSPIFBlockDevice::_sfdp_parse_sector_map_table (Callback<int (bd_addr_t , void *, bd_size_t )> sfdp_reader,
1110
+ int QSPIFBlockDevice::_sfdp_parse_sector_map_table (Callback<int (bd_addr_t , void *, bd_size_t )> sfdp_reader,
1111
1111
sfdp_smtbl_info &smtbl)
1112
1112
{
1113
1113
uint8_t sector_map_table[SFDP_BASIC_PARAMS_TBL_SIZE]; /* Up To 20 DWORDS = 80 Bytes */
@@ -1129,8 +1129,8 @@ int QSPIFBlockDevice::_sfdp_parse_sector_map_table(Callback<int(bd_addr_t, void*
1129
1129
return -1 ;
1130
1130
}
1131
1131
1132
- smtbl._regions_count = sector_map_table[2 ] + 1 ;
1133
- if (smtbl._regions_count > SFDP_SECTOR_MAP_MAX_REGIONS) {
1132
+ smtbl.region_cnt = sector_map_table[2 ] + 1 ;
1133
+ if (smtbl.region_cnt > SFDP_SECTOR_MAP_MAX_REGIONS) {
1134
1134
tr_error (" Supporting up to %d regions, current setup to %d regions - fail" ,
1135
1135
SFDP_SECTOR_MAP_MAX_REGIONS,
1136
1136
smtbl.regions_count );
@@ -1139,28 +1139,28 @@ int QSPIFBlockDevice::_sfdp_parse_sector_map_table(Callback<int(bd_addr_t, void*
1139
1139
1140
1140
// Loop through Regions and set for each one: size, supported erase types, high boundary offset
1141
1141
// Calculate minimum Common Erase Type for all Regions
1142
- for (i_ind = 0 ; i_ind < smtbl._regions_count ; i_ind++) {
1142
+ for (i_ind = 0 ; i_ind < smtbl.region_cnt ; i_ind++) {
1143
1143
tmp_region_size = ((*((uint32_t *)§or_map_table[(i_ind + 1 ) * 4 ])) >> 8 ) & 0x00FFFFFF ; // bits 9-32
1144
- smtbl._region_size_bytes [i_ind] = (tmp_region_size + 1 ) * 256 ; // Region size is 0 based multiple of 256 bytes;
1145
- smtbl._region_erase_types_bitfield [i_ind] = sector_map_table[(i_ind + 1 ) * 4 ] & 0x0F ; // bits 1-4
1146
- min_common_erase_type_bits &= smtbl._region_erase_types_bitfield [i_ind];
1147
- smtbl._region_high_boundary [i_ind] = (smtbl._region_size_bytes [i_ind] - 1 ) + prev_boundary;
1148
- prev_boundary = smtbl._region_high_boundary [i_ind] + 1 ;
1144
+ smtbl.region_size [i_ind] = (tmp_region_size + 1 ) * 256 ; // Region size is 0 based multiple of 256 bytes;
1145
+ smtbl.region_erase_types_bitfld [i_ind] = sector_map_table[(i_ind + 1 ) * 4 ] & 0x0F ; // bits 1-4
1146
+ min_common_erase_type_bits &= smtbl.region_erase_types_bitfld [i_ind];
1147
+ smtbl.region_high_boundary [i_ind] = (smtbl.region_size [i_ind] - 1 ) + prev_boundary;
1148
+ prev_boundary = smtbl.region_high_boundary [i_ind] + 1 ;
1149
1149
}
1150
1150
1151
1151
// Calc minimum Common Erase Size from min_common_erase_type_bits
1152
1152
uint8_t type_mask = SFDP_ERASE_BITMASK_TYPE1;
1153
1153
for (i_ind = 0 ; i_ind < 4 ; i_ind++) {
1154
1154
if (min_common_erase_type_bits & type_mask) {
1155
- smtbl._min_common_erase_size = smtbl._erase_type_size_arr [i_ind];
1155
+ smtbl.regions_min_common_erase_size = smtbl.erase_type_size_arr [i_ind];
1156
1156
break ;
1157
1157
}
1158
1158
type_mask = type_mask << 1 ;
1159
1159
}
1160
1160
1161
1161
if (i_ind == 4 ) {
1162
1162
// No common erase type was found between regions
1163
- smtbl._min_common_erase_size = 0 ;
1163
+ smtbl.regions_min_common_erase_size = 0 ;
1164
1164
}
1165
1165
1166
1166
return 0 ;
@@ -1382,17 +1382,17 @@ bool QSPIFBlockDevice::_is_mem_ready()
1382
1382
int QSPIFBlockDevice::_utils_find_addr_region (bd_size_t offset, sfdp_smtbl_info &smtbl)
1383
1383
{
1384
1384
// Find the region to which the given offset belong to
1385
- if ((offset > _device_size_bytes) || (smtbl._regions_count == 0 )) {
1385
+ if ((offset > _device_size_bytes) || (smtbl.region_cnt == 0 )) {
1386
1386
return -1 ;
1387
1387
}
1388
1388
1389
- if (smtbl._regions_count == 1 ) {
1389
+ if (smtbl.region_cnt == 1 ) {
1390
1390
return 0 ;
1391
1391
}
1392
1392
1393
- for (int i_ind = smtbl._regions_count - 2 ; i_ind >= 0 ; i_ind--) {
1393
+ for (int i_ind = smtbl.region_cnt - 2 ; i_ind >= 0 ; i_ind--) {
1394
1394
1395
- if (offset > smtbl._region_high_boundary [i_ind]) {
1395
+ if (offset > smtbl.region_high_boundary [i_ind]) {
1396
1396
return (i_ind + 1 );
1397
1397
}
1398
1398
}
@@ -1414,9 +1414,9 @@ int QSPIFBlockDevice::_utils_iterate_next_largest_erase_type(uint8_t &bitfield,
1414
1414
for (i_ind = 3 ; i_ind >= 0 ; i_ind--) {
1415
1415
if (bitfield & type_mask) {
1416
1416
largest_erase_type = i_ind;
1417
- if ((size > (int )(smtbl._erase_type_size_arr [largest_erase_type])) &&
1418
- ((_sfdp_info.smtbl ._region_high_boundary [region] - offset)
1419
- > (int )(smtbl._erase_type_size_arr [largest_erase_type]))) {
1417
+ if ((size > (int )(smtbl.erase_type_size_arr [largest_erase_type])) &&
1418
+ ((_sfdp_info.smtbl .region_high_boundary [region] - offset)
1419
+ > (int )(smtbl.erase_type_size_arr [largest_erase_type]))) {
1420
1420
break ;
1421
1421
} else {
1422
1422
bitfield &= ~type_mask;
0 commit comments