Lines Matching refs:concat
57 struct mtd_concat *concat = CONCAT(mtd); in concat_read() local
61 for (i = 0; i < concat->num_subdev; i++) { in concat_read()
62 struct mtd_info *subdev = concat->subdev[i]; in concat_read()
109 struct mtd_concat *concat = CONCAT(mtd); in concat_panic_write() local
112 for (i = 0; i < concat->num_subdev; i++) { in concat_panic_write()
113 struct mtd_info *subdev = concat->subdev[i]; in concat_panic_write()
150 struct mtd_concat *concat = CONCAT(mtd); in concat_write() local
154 for (i = 0; i < concat->num_subdev; i++) { in concat_write()
155 struct mtd_info *subdev = concat->subdev[i]; in concat_write()
188 struct mtd_concat *concat = CONCAT(mtd); in concat_writev() local
212 for (i = 0; i < concat->num_subdev; i++) { in concat_writev()
213 struct mtd_info *subdev = concat->subdev[i]; in concat_writev()
262 struct mtd_concat *concat = CONCAT(mtd); in concat_read_oob() local
268 for (i = 0; i < concat->num_subdev; i++) { in concat_read_oob()
269 struct mtd_info *subdev = concat->subdev[i]; in concat_read_oob()
319 struct mtd_concat *concat = CONCAT(mtd); in concat_write_oob() local
328 for (i = 0; i < concat->num_subdev; i++) { in concat_write_oob()
329 struct mtd_info *subdev = concat->subdev[i]; in concat_write_oob()
365 struct mtd_concat *concat = CONCAT(mtd); in concat_erase() local
377 if (!concat->mtd.numeraseregions) { in concat_erase()
379 if (instr->addr & (concat->mtd.erasesize - 1)) in concat_erase()
381 if (instr->len & (concat->mtd.erasesize - 1)) in concat_erase()
386 concat->mtd.eraseregions; in concat_erase()
391 for (i = 0; i < concat->mtd.numeraseregions && in concat_erase()
406 for (; i < concat->mtd.numeraseregions && in concat_erase()
431 for (i = 0; i < concat->num_subdev; i++) { in concat_erase()
432 subdev = concat->subdev[i]; in concat_erase()
442 BUG_ON(i >= concat->num_subdev); in concat_erase()
448 subdev = concat->subdev[i]; /* get current subdevice */ in concat_erase()
484 struct mtd_concat *concat = CONCAT(mtd); in concat_xxlock() local
487 for (i = 0; i < concat->num_subdev; i++) { in concat_xxlock()
488 struct mtd_info *subdev = concat->subdev[i]; in concat_xxlock()
531 struct mtd_concat *concat = CONCAT(mtd); in concat_is_locked() local
534 for (i = 0; i < concat->num_subdev; i++) { in concat_is_locked()
535 struct mtd_info *subdev = concat->subdev[i]; in concat_is_locked()
553 struct mtd_concat *concat = CONCAT(mtd); in concat_sync() local
556 for (i = 0; i < concat->num_subdev; i++) { in concat_sync()
557 struct mtd_info *subdev = concat->subdev[i]; in concat_sync()
564 struct mtd_concat *concat = CONCAT(mtd); in concat_suspend() local
567 for (i = 0; i < concat->num_subdev; i++) { in concat_suspend()
568 struct mtd_info *subdev = concat->subdev[i]; in concat_suspend()
577 struct mtd_concat *concat = CONCAT(mtd); in concat_resume() local
580 for (i = 0; i < concat->num_subdev; i++) { in concat_resume()
581 struct mtd_info *subdev = concat->subdev[i]; in concat_resume()
588 struct mtd_concat *concat = CONCAT(mtd); in concat_block_isbad() local
591 if (!mtd_can_have_bb(concat->subdev[0])) in concat_block_isbad()
594 for (i = 0; i < concat->num_subdev; i++) { in concat_block_isbad()
595 struct mtd_info *subdev = concat->subdev[i]; in concat_block_isbad()
611 struct mtd_concat *concat = CONCAT(mtd); in concat_block_markbad() local
614 for (i = 0; i < concat->num_subdev; i++) { in concat_block_markbad()
615 struct mtd_info *subdev = concat->subdev[i]; in concat_block_markbad()
643 struct mtd_concat *concat; in mtd_concat_create() local
655 concat = kzalloc(size, GFP_KERNEL); in mtd_concat_create()
656 if (!concat) { in mtd_concat_create()
662 concat->subdev = (struct mtd_info **) (concat + 1); in mtd_concat_create()
668 concat->mtd.type = subdev[0]->type; in mtd_concat_create()
669 concat->mtd.flags = subdev[0]->flags; in mtd_concat_create()
670 concat->mtd.size = subdev[0]->size; in mtd_concat_create()
671 concat->mtd.erasesize = subdev[0]->erasesize; in mtd_concat_create()
672 concat->mtd.writesize = subdev[0]->writesize; in mtd_concat_create()
677 concat->mtd.writebufsize = max_writebufsize; in mtd_concat_create()
679 concat->mtd.subpage_sft = subdev[0]->subpage_sft; in mtd_concat_create()
680 concat->mtd.oobsize = subdev[0]->oobsize; in mtd_concat_create()
681 concat->mtd.oobavail = subdev[0]->oobavail; in mtd_concat_create()
683 concat->mtd._writev = concat_writev; in mtd_concat_create()
685 concat->mtd._read_oob = concat_read_oob; in mtd_concat_create()
687 concat->mtd._write_oob = concat_write_oob; in mtd_concat_create()
689 concat->mtd._block_isbad = concat_block_isbad; in mtd_concat_create()
691 concat->mtd._block_markbad = concat_block_markbad; in mtd_concat_create()
693 concat->mtd._panic_write = concat_panic_write; in mtd_concat_create()
695 concat->mtd.ecc_stats.badblocks = subdev[0]->ecc_stats.badblocks; in mtd_concat_create()
697 concat->subdev[0] = subdev[0]; in mtd_concat_create()
700 if (concat->mtd.type != subdev[i]->type) { in mtd_concat_create()
701 kfree(concat); in mtd_concat_create()
706 if (concat->mtd.flags != subdev[i]->flags) { in mtd_concat_create()
711 if ((concat->mtd.flags ^ subdev[i]-> in mtd_concat_create()
713 kfree(concat); in mtd_concat_create()
720 concat->mtd.flags |= in mtd_concat_create()
724 concat->mtd.size += subdev[i]->size; in mtd_concat_create()
725 concat->mtd.ecc_stats.badblocks += in mtd_concat_create()
727 if (concat->mtd.writesize != subdev[i]->writesize || in mtd_concat_create()
728 concat->mtd.subpage_sft != subdev[i]->subpage_sft || in mtd_concat_create()
729 concat->mtd.oobsize != subdev[i]->oobsize || in mtd_concat_create()
730 !concat->mtd._read_oob != !subdev[i]->_read_oob || in mtd_concat_create()
731 !concat->mtd._write_oob != !subdev[i]->_write_oob) { in mtd_concat_create()
732 kfree(concat); in mtd_concat_create()
737 concat->subdev[i] = subdev[i]; in mtd_concat_create()
741 mtd_set_ooblayout(&concat->mtd, subdev[0]->ooblayout); in mtd_concat_create()
743 concat->num_subdev = num_devs; in mtd_concat_create()
744 concat->mtd.name = name; in mtd_concat_create()
746 concat->mtd._erase = concat_erase; in mtd_concat_create()
747 concat->mtd._read = concat_read; in mtd_concat_create()
748 concat->mtd._write = concat_write; in mtd_concat_create()
749 concat->mtd._sync = concat_sync; in mtd_concat_create()
750 concat->mtd._lock = concat_lock; in mtd_concat_create()
751 concat->mtd._unlock = concat_unlock; in mtd_concat_create()
752 concat->mtd._is_locked = concat_is_locked; in mtd_concat_create()
753 concat->mtd._suspend = concat_suspend; in mtd_concat_create()
754 concat->mtd._resume = concat_resume; in mtd_concat_create()
798 concat->mtd.erasesize = curr_erasesize; in mtd_concat_create()
799 concat->mtd.numeraseregions = 0; in mtd_concat_create()
810 concat->mtd.erasesize = max_erasesize; in mtd_concat_create()
811 concat->mtd.numeraseregions = num_erase_region; in mtd_concat_create()
812 concat->mtd.eraseregions = erase_region_p = in mtd_concat_create()
817 kfree(concat); in mtd_concat_create()
884 return &concat->mtd; in mtd_concat_create()
890 struct mtd_concat *concat = CONCAT(mtd); in mtd_concat_destroy() local
891 if (concat->mtd.numeraseregions) in mtd_concat_destroy()
892 kfree(concat->mtd.eraseregions); in mtd_concat_destroy()
893 kfree(concat); in mtd_concat_destroy()