On 05/23/2018 02:52 PM, Tudor Ambarus wrote:
Hi, Marek,
Hi,
On 05/23/2018 12:56 PM, Marek Vasut wrote:
[...]
No. But can you maybe build a list of erase commands to be executed once[...]It will be great if we can do this without having performance penalties.
Shouldn't we fail up front instead ?Is this possible? In non-overlaid regions, the address is aligned with+ while (len) {What would happen if you realize mid-way that you cannot erase some
+ cmd = spi_nor_find_best_erase_cmd(map, region, addr, len);
+ if (!cmd)
+ return -EINVAL;
sector , do you end up with partial erase ?
at least one of the erase commands, else -EINVAL. For overlaid regions
alignment doesn't matter. But yes, if this is possible, in this case,
this proposal will do a partial erase.
Can we loose the conditions for the last erase command? If one wants to
erase 80k chunk starting from offset 0 and only 32k and 64k erase type
are supported, can we erase 96k?
you validate that the erase can be performed for example ?
My second choice was an array witch saves u8 opcode and u32 erasesize.
There are flashes of 256MB, in the worst case scenario with 4k erase
type, we will end up with 64K entries.
Some RLE encoding might help here ?
How about enforcing the length to be multiple of mtd->erasesize, like we
do in uniform_erase? With this, the problem disappears.
What is the erase size for the 4k-sector 256MiB flash ?