mirror of https://github.com/ARMmbed/mbed-os.git
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.pull/13947/head
parent
7525134532
commit
ac86aff928
|
@ -143,7 +143,7 @@ int sfdp_find_addr_region(bd_addr_t offset, const sfdp_hdr_info &sfdp_info);
|
||||||
*
|
*
|
||||||
* @return Largest erase type
|
* @return Largest erase type
|
||||||
*/
|
*/
|
||||||
int sfdp_iterate_next_largest_erase_type(uint8_t &bitfield,
|
int sfdp_iterate_next_largest_erase_type(uint8_t bitfield,
|
||||||
int size,
|
int size,
|
||||||
int offset,
|
int offset,
|
||||||
int region,
|
int region,
|
||||||
|
|
|
@ -393,7 +393,7 @@ int sfdp_find_addr_region(bd_addr_t offset, const sfdp_hdr_info &sfdp_info)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int sfdp_iterate_next_largest_erase_type(uint8_t &bitfield,
|
int sfdp_iterate_next_largest_erase_type(uint8_t bitfield,
|
||||||
int size,
|
int size,
|
||||||
int offset,
|
int offset,
|
||||||
int region,
|
int region,
|
||||||
|
@ -415,8 +415,6 @@ int sfdp_iterate_next_largest_erase_type(uint8_t &bitfield,
|
||||||
if ((offset % erase_size == 0) && (size >= erase_size) &&
|
if ((offset % erase_size == 0) && (size >= erase_size) &&
|
||||||
(offset + erase_size - 1 <= smptbl.region_high_boundary[region])) {
|
(offset + erase_size - 1 <= smptbl.region_high_boundary[region])) {
|
||||||
break;
|
break;
|
||||||
} else {
|
|
||||||
bitfield &= ~type_mask;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
type_mask = type_mask >> 1;
|
type_mask = type_mask >> 1;
|
||||||
|
|
Loading…
Reference in New Issue