Lines Matching refs:concat

65 	struct mtd_concat *concat = CONCAT(mtd);  in concat_read()  local
73 for (i = 0; i < concat->num_subdev; i++) { in concat_read()
74 struct mtd_info *subdev = concat->subdev[i]; in concat_read()
121 struct mtd_concat *concat = CONCAT(mtd); in concat_write() local
129 for (i = 0; i < concat->num_subdev; i++) { in concat_write()
130 struct mtd_info *subdev = concat->subdev[i]; in concat_write()
164 struct mtd_concat *concat = CONCAT(mtd); in concat_writev() local
188 for (i = 0; i < concat->num_subdev; i++) { in concat_writev()
189 struct mtd_info *subdev = concat->subdev[i]; in concat_writev()
239 struct mtd_concat *concat = CONCAT(mtd); in concat_read_oob() local
245 for (i = 0; i < concat->num_subdev; i++) { in concat_read_oob()
246 struct mtd_info *subdev = concat->subdev[i]; in concat_read_oob()
296 struct mtd_concat *concat = CONCAT(mtd); in concat_write_oob() local
305 for (i = 0; i < concat->num_subdev; i++) { in concat_write_oob()
306 struct mtd_info *subdev = concat->subdev[i]; in concat_write_oob()
383 struct mtd_concat *concat = CONCAT(mtd); in concat_erase() local
395 if (!concat->mtd.numeraseregions) { in concat_erase()
397 if (instr->addr & (concat->mtd.erasesize - 1)) in concat_erase()
399 if (instr->len & (concat->mtd.erasesize - 1)) in concat_erase()
404 concat->mtd.eraseregions; in concat_erase()
409 for (i = 0; i < concat->mtd.numeraseregions && in concat_erase()
424 for (; i < concat->mtd.numeraseregions && in concat_erase()
449 for (i = 0; i < concat->num_subdev; i++) { in concat_erase()
450 subdev = concat->subdev[i]; in concat_erase()
460 BUG_ON(i >= concat->num_subdev); in concat_erase()
466 subdev = concat->subdev[i]; /* get current subdevice */ in concat_erase()
506 struct mtd_concat *concat = CONCAT(mtd); in concat_lock() local
509 for (i = 0; i < concat->num_subdev; i++) { in concat_lock()
510 struct mtd_info *subdev = concat->subdev[i]; in concat_lock()
540 struct mtd_concat *concat = CONCAT(mtd); in concat_unlock() local
543 for (i = 0; i < concat->num_subdev; i++) { in concat_unlock()
544 struct mtd_info *subdev = concat->subdev[i]; in concat_unlock()
574 struct mtd_concat *concat = CONCAT(mtd); in concat_sync() local
577 for (i = 0; i < concat->num_subdev; i++) { in concat_sync()
578 struct mtd_info *subdev = concat->subdev[i]; in concat_sync()
586 struct mtd_concat *concat = CONCAT(mtd); in concat_suspend() local
589 for (i = 0; i < concat->num_subdev; i++) { in concat_suspend()
590 struct mtd_info *subdev = concat->subdev[i]; in concat_suspend()
599 struct mtd_concat *concat = CONCAT(mtd); in concat_resume() local
602 for (i = 0; i < concat->num_subdev; i++) { in concat_resume()
603 struct mtd_info *subdev = concat->subdev[i]; in concat_resume()
611 struct mtd_concat *concat = CONCAT(mtd); in concat_block_isbad() local
614 if (!mtd_can_have_bb(concat->subdev[0])) in concat_block_isbad()
617 for (i = 0; i < concat->num_subdev; i++) { in concat_block_isbad()
618 struct mtd_info *subdev = concat->subdev[i]; in concat_block_isbad()
634 struct mtd_concat *concat = CONCAT(mtd); in concat_block_markbad() local
637 for (i = 0; i < concat->num_subdev; i++) { in concat_block_markbad()
638 struct mtd_info *subdev = concat->subdev[i]; in concat_block_markbad()
663 struct mtd_concat *concat = CONCAT(mtd); in concat_get_unmapped_area() local
666 for (i = 0; i < concat->num_subdev; i++) { in concat_get_unmapped_area()
667 struct mtd_info *subdev = concat->subdev[i]; in concat_get_unmapped_area()
696 struct mtd_concat *concat; in mtd_concat_create() local
708 concat = kzalloc(size, GFP_KERNEL); in mtd_concat_create()
709 if (!concat) { in mtd_concat_create()
715 concat->subdev = (struct mtd_info **) (concat + 1); in mtd_concat_create()
721 concat->mtd.type = subdev[0]->type; in mtd_concat_create()
722 concat->mtd.flags = subdev[0]->flags; in mtd_concat_create()
723 concat->mtd.size = subdev[0]->size; in mtd_concat_create()
724 concat->mtd.erasesize = subdev[0]->erasesize; in mtd_concat_create()
725 concat->mtd.writesize = subdev[0]->writesize; in mtd_concat_create()
730 concat->mtd.writebufsize = max_writebufsize; in mtd_concat_create()
732 concat->mtd.subpage_sft = subdev[0]->subpage_sft; in mtd_concat_create()
733 concat->mtd.oobsize = subdev[0]->oobsize; in mtd_concat_create()
734 concat->mtd.oobavail = subdev[0]->oobavail; in mtd_concat_create()
737 concat->mtd._writev = concat_writev; in mtd_concat_create()
740 concat->mtd._read_oob = concat_read_oob; in mtd_concat_create()
742 concat->mtd._write_oob = concat_write_oob; in mtd_concat_create()
744 concat->mtd._block_isbad = concat_block_isbad; in mtd_concat_create()
746 concat->mtd._block_markbad = concat_block_markbad; in mtd_concat_create()
748 concat->mtd.ecc_stats.badblocks = subdev[0]->ecc_stats.badblocks; in mtd_concat_create()
751 concat->mtd.backing_dev_info = subdev[0]->backing_dev_info; in mtd_concat_create()
754 concat->subdev[0] = subdev[0]; in mtd_concat_create()
757 if (concat->mtd.type != subdev[i]->type) { in mtd_concat_create()
758 kfree(concat); in mtd_concat_create()
763 if (concat->mtd.flags != subdev[i]->flags) { in mtd_concat_create()
768 if ((concat->mtd.flags ^ subdev[i]-> in mtd_concat_create()
770 kfree(concat); in mtd_concat_create()
777 concat->mtd.flags |= in mtd_concat_create()
785 if (concat->mtd.backing_dev_info != in mtd_concat_create()
787 concat->mtd.backing_dev_info = in mtd_concat_create()
791 concat->mtd.size += subdev[i]->size; in mtd_concat_create()
792 concat->mtd.ecc_stats.badblocks += in mtd_concat_create()
794 if (concat->mtd.writesize != subdev[i]->writesize || in mtd_concat_create()
795 concat->mtd.subpage_sft != subdev[i]->subpage_sft || in mtd_concat_create()
796 concat->mtd.oobsize != subdev[i]->oobsize || in mtd_concat_create()
797 !concat->mtd._read_oob != !subdev[i]->_read_oob || in mtd_concat_create()
798 !concat->mtd._write_oob != !subdev[i]->_write_oob) { in mtd_concat_create()
799 kfree(concat); in mtd_concat_create()
804 concat->subdev[i] = subdev[i]; in mtd_concat_create()
808 concat->mtd.ecclayout = subdev[0]->ecclayout; in mtd_concat_create()
810 concat->num_subdev = num_devs; in mtd_concat_create()
811 concat->mtd.name = name; in mtd_concat_create()
813 concat->mtd._erase = concat_erase; in mtd_concat_create()
814 concat->mtd._read = concat_read; in mtd_concat_create()
815 concat->mtd._write = concat_write; in mtd_concat_create()
816 concat->mtd._sync = concat_sync; in mtd_concat_create()
817 concat->mtd._lock = concat_lock; in mtd_concat_create()
818 concat->mtd._unlock = concat_unlock; in mtd_concat_create()
820 concat->mtd._suspend = concat_suspend; in mtd_concat_create()
821 concat->mtd._resume = concat_resume; in mtd_concat_create()
823 concat->mtd._get_unmapped_area = concat_get_unmapped_area; in mtd_concat_create()
867 concat->mtd.erasesize = curr_erasesize; in mtd_concat_create()
868 concat->mtd.numeraseregions = 0; in mtd_concat_create()
879 concat->mtd.erasesize = max_erasesize; in mtd_concat_create()
880 concat->mtd.numeraseregions = num_erase_region; in mtd_concat_create()
881 concat->mtd.eraseregions = erase_region_p = in mtd_concat_create()
885 kfree(concat); in mtd_concat_create()
952 return &concat->mtd; in mtd_concat_create()
961 struct mtd_concat *concat = CONCAT(mtd); in mtd_concat_destroy() local
962 if (concat->mtd.numeraseregions) in mtd_concat_destroy()
963 kfree(concat->mtd.eraseregions); in mtd_concat_destroy()
964 kfree(concat); in mtd_concat_destroy()