ipq: Handled unaligned data written in nand flash while dump collection

During dump collection, when dump_to_flash enabled, nand erases are skipped
due to unaligned written. This changes handles that and write after erasing

Signed-off-by: Karthick Shanmugham <kartshan@codeaurora.org>
Change-Id: Idfc6b3a0596a5ddb5c7e0b0da5c7bcb2751769b8
This commit is contained in:
Karthick Shanmugham 2020-09-22 11:33:59 +05:30
parent 7635ecacd3
commit 59d79e1661

View file

@ -769,7 +769,7 @@ static int check_and_write_crashdump_nand_flash(
uint32_t part_start = nand_cnxt->part_start;
uint32_t part_end = nand_cnxt->part_start + nand_cnxt->part_size;
unsigned int remaining_len = req_size;
unsigned int data_offset = 0;
unsigned int write_length, data_offset = 0;
loff_t skipoff, skipoff_cmp, *offset;
int ret = 0;
static int first_erase = 1;
@ -813,15 +813,20 @@ static int check_and_write_crashdump_nand_flash(
if( remaining_len > nand->erasesize) {
ret = nand_write(nand, *offset, &nand->erasesize,
skipoff = (*offset & (nand->erasesize - 1));
write_length = (skipoff != 0) ? (nand->erasesize - skipoff)
: (nand->erasesize);
ret = nand_write(nand, *offset, &write_length,
data + data_offset);
if (ret)
return ret;
remaining_len -= nand->erasesize;
*offset += nand->erasesize;
data_offset += nand->erasesize;
remaining_len -= write_length;
*offset += write_length;
data_offset += write_length;
}
else {