|
|
@@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
/* Our partition linked list */
|
|
|
static LIST_HEAD(mtd_partitions);
|
|
|
static DEFINE_MUTEX(mtd_partitions_mutex);
|
|
|
-@@ -220,6 +222,53 @@ static int part_erase(struct mtd_info *m
|
|
|
+@@ -220,11 +222,77 @@ static int part_erase(struct mtd_info *m
|
|
|
{
|
|
|
struct mtd_part *part = mtd_to_part(mtd);
|
|
|
int ret;
|
|
|
@@ -73,10 +73,9 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
|
|
|
instr->addr += part->offset;
|
|
|
ret = part->parent->_erase(part->parent, instr);
|
|
|
-@@ -227,6 +276,24 @@ static int part_erase(struct mtd_info *m
|
|
|
+ if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
|
|
|
instr->fail_addr -= part->offset;
|
|
|
- instr->addr -= part->offset;
|
|
|
-
|
|
|
++
|
|
|
+ if (mtd->flags & MTD_ERASE_PARTIAL) {
|
|
|
+ if (partial_start) {
|
|
|
+ part->parent->_write(part->parent,
|
|
|
@@ -95,10 +94,10 @@ Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
+ kfree(erase_buf);
|
|
|
+ }
|
|
|
+
|
|
|
- return ret;
|
|
|
- }
|
|
|
+ instr->addr -= part->offset;
|
|
|
|
|
|
-@@ -539,19 +606,22 @@ static struct mtd_part *allocate_partiti
|
|
|
+ return ret;
|
|
|
+@@ -539,19 +607,22 @@ static struct mtd_part *allocate_partiti
|
|
|
remainder = do_div(tmp, wr_alignment);
|
|
|
if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) {
|
|
|
/* Doesn't start on a boundary of major erase size */
|