|
@@ -70,7 +70,6 @@ static ssize_t m25p80_write(struct spi_nor *nor, loff_t to, size_t len,
|
|
|
SPI_MEM_OP_ADDR(nor->addr_width, to, 1),
|
|
|
SPI_MEM_OP_NO_DUMMY,
|
|
|
SPI_MEM_OP_DATA_OUT(len, buf, 1));
|
|
|
- size_t remaining = len;
|
|
|
int ret;
|
|
|
|
|
|
/* get transfer protocols. */
|
|
@@ -81,22 +80,16 @@ static ssize_t m25p80_write(struct spi_nor *nor, loff_t to, size_t len,
|
|
|
if (nor->program_opcode == SPINOR_OP_AAI_WP && nor->sst_write_second)
|
|
|
op.addr.nbytes = 0;
|
|
|
|
|
|
- while (remaining) {
|
|
|
- op.data.nbytes = remaining < UINT_MAX ? remaining : UINT_MAX;
|
|
|
- ret = spi_mem_adjust_op_size(flash->spimem, &op);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
-
|
|
|
- ret = spi_mem_exec_op(flash->spimem, &op);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
+ ret = spi_mem_adjust_op_size(flash->spimem, &op);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+ op.data.nbytes = len < op.data.nbytes ? len : op.data.nbytes;
|
|
|
|
|
|
- op.addr.val += op.data.nbytes;
|
|
|
- remaining -= op.data.nbytes;
|
|
|
- op.data.buf.out += op.data.nbytes;
|
|
|
- }
|
|
|
+ ret = spi_mem_exec_op(flash->spimem, &op);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
- return len;
|
|
|
+ return op.data.nbytes;
|
|
|
}
|
|
|
|
|
|
/*
|