@@ -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 .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;
155
+ _sfdp_info.smptbl .regions_min_common_erase_size = 0 ;
156
+ _sfdp_info.smptbl .region_cnt = 1 ;
157
+ _sfdp_info.smptbl .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;
@@ -200,8 +200,8 @@ int QSPIFBlockDevice::init()
200
200
int status = QSPIF_BD_ERROR_OK;
201
201
_sfdp_info.bptbl .addr = 0x0 ;
202
202
_sfdp_info.bptbl .size = 0 ;
203
- _sfdp_info.smtbl .addr = 0x0 ;
204
- _sfdp_info.smtbl .size = 0 ;
203
+ _sfdp_info.smptbl .addr = 0x0 ;
204
+ _sfdp_info.smptbl .size = 0 ;
205
205
206
206
_mutex.lock ();
207
207
@@ -259,15 +259,15 @@ int QSPIFBlockDevice::init()
259
259
}
260
260
261
261
/* *************************** Parse Sector Map Table ***********************************/
262
- _sfdp_info.smtbl .region_size [0 ] =
262
+ _sfdp_info.smptbl .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.smptbl .region_high_boundary [0 ] = _device_size_bytes - 1 ;
265
265
266
- if ((_sfdp_info.smtbl .addr != 0 ) && (0 != _sfdp_info.smtbl .size )) {
267
- tr_debug (" Init - Parsing Sector Map Table - addr: 0x%lxh, Size: %d" , _sfdp_info.smtbl .addr ,
268
- _sfdp_info.smtbl .size );
266
+ if ((_sfdp_info.smptbl .addr != 0 ) && (0 != _sfdp_info.smptbl .size )) {
267
+ tr_debug (" Init - Parsing Sector Map Table - addr: 0x%lxh, Size: %d" , _sfdp_info.smptbl .addr ,
268
+ _sfdp_info.smptbl .size );
269
269
if (sfdp_parse_sector_map_table (callback (this , &QSPIFBlockDevice::_qspi_send_read_sfdp_command),
270
- _sfdp_info.smtbl ) < 0 ) {
270
+ _sfdp_info.smptbl ) < 0 ) {
271
271
tr_error (" Init - Parse Sector Map Table Failed" );
272
272
status = QSPIF_BD_ERROR_PARSING_FAILED;
273
273
goto exit_point;
@@ -409,9 +409,9 @@ int QSPIFBlockDevice::erase(bd_addr_t addr, bd_size_t in_size)
409
409
bool erase_failed = false ;
410
410
int status = QSPIF_BD_ERROR_OK;
411
411
// Find region of erased address
412
- int region = _utils_find_addr_region (addr, _sfdp_info.smtbl );
412
+ int region = _utils_find_addr_region (addr, _sfdp_info.smptbl );
413
413
// Erase Types of selected region
414
- uint8_t bitfield = _sfdp_info.smtbl .region_erase_types_bitfld [region];
414
+ uint8_t bitfield = _sfdp_info.smptbl .region_erase_types_bitfld [region];
415
415
416
416
tr_debug (" Erase - addr: %llu, in_size: %llu" , addr, in_size);
417
417
@@ -433,9 +433,9 @@ int QSPIFBlockDevice::erase(bd_addr_t addr, bd_size_t in_size)
433
433
// Find the matching instruction and erase size chunk for that type.
434
434
type = _utils_iterate_next_largest_erase_type (bitfield, size, (int )addr,
435
435
region,
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];
436
+ _sfdp_info.smptbl );
437
+ cur_erase_inst = _sfdp_info.smptbl .erase_type_inst_arr [type];
438
+ eu_size = _sfdp_info.smptbl .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.smptbl .region_high_boundary [region])) {
472
472
// erase crossed to next region
473
473
region++;
474
- bitfield = _sfdp_info.smtbl .region_erase_types_bitfld [region];
474
+ bitfield = _sfdp_info.smptbl .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 .regions_min_common_erase_size ;
510
+ return _sfdp_info.smptbl .regions_min_common_erase_size ;
511
511
}
512
512
513
513
const char *QSPIFBlockDevice::get_type () const
@@ -524,9 +524,9 @@ bd_size_t QSPIFBlockDevice::get_erase_size(bd_addr_t addr)
524
524
}
525
525
526
526
// Find region of current address
527
- int region = _utils_find_addr_region (addr, _sfdp_info.smtbl );
527
+ int region = _utils_find_addr_region (addr, _sfdp_info.smptbl );
528
528
529
- int min_region_erase_size = _sfdp_info.smtbl .regions_min_common_erase_size ;
529
+ int min_region_erase_size = _sfdp_info.smptbl .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_bitfld [region] & type_mask) {
538
+ if (_sfdp_info.smptbl .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.smptbl .erase_type_size_arr [i_ind];
541
541
break ;
542
542
}
543
543
type_mask = type_mask << 1 ;
@@ -661,7 +661,7 @@ int QSPIFBlockDevice::_sfdp_parse_basic_param_table(uint32_t basic_table_addr, s
661
661
bool shouldSetQuadEnable = false ;
662
662
bool is_qpi_mode = false ;
663
663
664
- if (_sfdp_detect_erase_types_inst_and_size (param_table, basic_table_size, _sfdp_info.smtbl ) != 0 ) {
664
+ if (_sfdp_detect_erase_types_inst_and_size (param_table, basic_table_size, _sfdp_info.smptbl ) != 0 ) {
665
665
tr_error (" Init - Detecting erase types instructions/sizes failed" );
666
666
return -1 ;
667
667
}
@@ -847,34 +847,34 @@ int QSPIFBlockDevice::_sfdp_detect_page_size(uint8_t *basic_param_table_ptr, int
847
847
848
848
int QSPIFBlockDevice::_sfdp_detect_erase_types_inst_and_size (uint8_t *basic_param_table_ptr,
849
849
int basic_param_table_size,
850
- sfdp_smtbl_info &smtbl )
850
+ sfdp_smptbl_info &smptbl )
851
851
{
852
852
uint8_t bitfield = 0x01 ;
853
853
854
854
// Erase 4K Inst is taken either from param table legacy 4K erase or superseded by erase Instruction for type of size 4K
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
858
+ smptbl .erase_type_inst_arr [i_ind] = QSPI_NO_INST; // Default for unsupported type
859
+ smptbl .erase_type_size_arr [i_ind] = 1
860
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 ) {
861
+ tr_debug (" Erase Type(A) %d - Inst: 0x%xh, Size: %d" , (i_ind + 1 ), smptbl .erase_type_inst_arr [i_ind],
862
+ smptbl .erase_type_size_arr [i_ind]);
863
+ if (smptbl .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
865
+ smptbl .erase_type_inst_arr [i_ind] = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_ERASE_TYPE_1_BYTE
866
866
+ 2 * i_ind];
867
867
868
- if ((smtbl .erase_type_size_arr [i_ind] < smtbl .regions_min_common_erase_size )
869
- || (smtbl .regions_min_common_erase_size == 0 )) {
868
+ if ((smptbl .erase_type_size_arr [i_ind] < smptbl .regions_min_common_erase_size )
869
+ || (smptbl .regions_min_common_erase_size == 0 )) {
870
870
// Set default minimal common erase for signal region
871
- smtbl .regions_min_common_erase_size = smtbl .erase_type_size_arr [i_ind];
871
+ smptbl .regions_min_common_erase_size = smptbl .erase_type_size_arr [i_ind];
872
872
}
873
- smtbl .region_erase_types_bitfld [0 ] |= bitfield; // If there's no region map, set region "0" types bitfield as default
873
+ smptbl .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 ), smptbl .erase_type_inst_arr [i_ind],
877
+ smptbl .erase_type_size_arr [i_ind]);
878
878
bitfield = bitfield << 1 ;
879
879
}
880
880
} else {
@@ -1320,20 +1320,20 @@ bool QSPIFBlockDevice::_is_mem_ready()
1320
1320
/* ********************************************/
1321
1321
/* ************ Utility Functions *************/
1322
1322
/* ********************************************/
1323
- int QSPIFBlockDevice::_utils_find_addr_region (bd_size_t offset, sfdp_smtbl_info &smtbl )
1323
+ int QSPIFBlockDevice::_utils_find_addr_region (bd_size_t offset, sfdp_smptbl_info &smptbl )
1324
1324
{
1325
1325
// Find the region to which the given offset belong to
1326
- if ((offset > _device_size_bytes) || (smtbl .region_cnt == 0 )) {
1326
+ if ((offset > _device_size_bytes) || (smptbl .region_cnt == 0 )) {
1327
1327
return -1 ;
1328
1328
}
1329
1329
1330
- if (smtbl .region_cnt == 1 ) {
1330
+ if (smptbl .region_cnt == 1 ) {
1331
1331
return 0 ;
1332
1332
}
1333
1333
1334
- for (int i_ind = smtbl .region_cnt - 2 ; i_ind >= 0 ; i_ind--) {
1334
+ for (int i_ind = smptbl .region_cnt - 2 ; i_ind >= 0 ; i_ind--) {
1335
1335
1336
- if (offset > smtbl .region_high_boundary [i_ind]) {
1336
+ if (offset > smptbl .region_high_boundary [i_ind]) {
1337
1337
return (i_ind + 1 );
1338
1338
}
1339
1339
}
@@ -1345,7 +1345,7 @@ int QSPIFBlockDevice::_utils_iterate_next_largest_erase_type(uint8_t &bitfield,
1345
1345
int size,
1346
1346
int offset,
1347
1347
int region,
1348
- sfdp_smtbl_info &smtbl )
1348
+ sfdp_smptbl_info &smptbl )
1349
1349
{
1350
1350
// Iterate on all supported Erase Types of the Region to which the offset belong to.
1351
1351
// Iterates from highest type to lowest
@@ -1355,9 +1355,9 @@ int QSPIFBlockDevice::_utils_iterate_next_largest_erase_type(uint8_t &bitfield,
1355
1355
for (i_ind = 3 ; i_ind >= 0 ; i_ind--) {
1356
1356
if (bitfield & type_mask) {
1357
1357
largest_erase_type = i_ind;
1358
- if ((size > (int )(smtbl .erase_type_size_arr [largest_erase_type])) &&
1359
- ((_sfdp_info.smtbl .region_high_boundary [region] - offset)
1360
- > (int )(smtbl .erase_type_size_arr [largest_erase_type]))) {
1358
+ if ((size > (int )(smptbl .erase_type_size_arr [largest_erase_type])) &&
1359
+ ((_sfdp_info.smptbl .region_high_boundary [region] - offset)
1360
+ > (int )(smptbl .erase_type_size_arr [largest_erase_type]))) {
1361
1361
break ;
1362
1362
} else {
1363
1363
bitfield &= ~type_mask;
0 commit comments