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
Lingkai Dong 2020-11-24 18:07:29 +00:00
parent 7525134532
commit ac86aff928
2 changed files with 2 additions and 4 deletions

View File

@ -143,7 +143,7 @@ int sfdp_find_addr_region(bd_addr_t offset, const sfdp_hdr_info &sfdp_info);
*
* @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 offset,
int region,

View File

@ -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 offset,
int region,
@ -415,8 +415,6 @@ int sfdp_iterate_next_largest_erase_type(uint8_t &bitfield,
if ((offset % erase_size == 0) && (size >= erase_size) &&
(offset + erase_size - 1 <= smptbl.region_high_boundary[region])) {
break;
} else {
bitfield &= ~type_mask;
}
}
type_mask = type_mask >> 1;