Lines Matching refs:erase
347 static int concat_dev_erase(struct mtd_info *mtd, struct erase_info *erase) in concat_dev_erase() argument
358 erase->mtd = mtd; in concat_dev_erase()
359 erase->callback = concat_erase_callback; in concat_dev_erase()
360 erase->priv = (unsigned long) &waitq; in concat_dev_erase()
366 err = mtd_erase(mtd, erase); in concat_dev_erase()
370 if (erase->state != MTD_ERASE_DONE in concat_dev_erase()
371 && erase->state != MTD_ERASE_FAILED) in concat_dev_erase()
376 err = (erase->state == MTD_ERASE_FAILED) ? -EIO : 0; in concat_dev_erase()
387 struct erase_info *erase; in concat_erase() local
437 erase = kmalloc(sizeof (struct erase_info), GFP_KERNEL); in concat_erase()
439 if (!erase) in concat_erase()
442 *erase = *instr; in concat_erase()
451 if (subdev->size <= erase->addr) { in concat_erase()
452 erase->addr -= subdev->size; in concat_erase()
469 if (erase->addr + length > subdev->size) in concat_erase()
470 erase->len = subdev->size - erase->addr; in concat_erase()
472 erase->len = length; in concat_erase()
474 length -= erase->len; in concat_erase()
475 if ((err = concat_dev_erase(subdev, erase))) { in concat_erase()
479 if (erase->fail_addr != MTD_FAIL_ADDR_UNKNOWN) in concat_erase()
480 instr->fail_addr = erase->fail_addr + offset; in concat_erase()
491 erase->addr = 0; in concat_erase()
494 instr->state = erase->state; in concat_erase()
495 kfree(erase); in concat_erase()