Skip to content

Commit ac86aff

Browse files
committed
sfdp_iterate_next_largest_erase_type: do not modify type_mask
The supported erase types of a given flash region are indicated in bitfields of the variable `type_mask`. Even if an erase type is unused for the current chunk (e.g. size too large, unaligned, etc.), its bitfield should NOT be cleared - the same erase type might actually be useful for the next chunk. The function argument is now a value instead of a reference.
1 parent 7525134 commit ac86aff

File tree

2 files changed

+2
-4
lines changed

2 files changed

+2
-4
lines changed

drivers/include/drivers/internal/SFDP.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ int sfdp_find_addr_region(bd_addr_t offset, const sfdp_hdr_info &sfdp_info);
143143
*
144144
* @return Largest erase type
145145
*/
146-
int sfdp_iterate_next_largest_erase_type(uint8_t &bitfield,
146+
int sfdp_iterate_next_largest_erase_type(uint8_t bitfield,
147147
int size,
148148
int offset,
149149
int region,

drivers/source/SFDP.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ int sfdp_find_addr_region(bd_addr_t offset, const sfdp_hdr_info &sfdp_info)
393393

394394
}
395395

396-
int sfdp_iterate_next_largest_erase_type(uint8_t &bitfield,
396+
int sfdp_iterate_next_largest_erase_type(uint8_t bitfield,
397397
int size,
398398
int offset,
399399
int region,
@@ -415,8 +415,6 @@ int sfdp_iterate_next_largest_erase_type(uint8_t &bitfield,
415415
if ((offset % erase_size == 0) && (size >= erase_size) &&
416416
(offset + erase_size - 1 <= smptbl.region_high_boundary[region])) {
417417
break;
418-
} else {
419-
bitfield &= ~type_mask;
420418
}
421419
}
422420
type_mask = type_mask >> 1;

0 commit comments

Comments
 (0)