Lines Matching full:mtd
3 * Virtual concat MTD device driver
10 #include <linux/mtd/mtd.h>
12 #include <linux/mtd/partitions.h>
16 #include <linux/mtd/concat.h>
71 struct mtd_info *mtd; in mtd_virt_concat_destroy_joins() local
74 mtd = &item->concat->mtd; in mtd_virt_concat_destroy_joins()
76 mtd_device_unregister(mtd); in mtd_virt_concat_destroy_joins()
77 kfree(mtd->name); in mtd_virt_concat_destroy_joins()
79 mtd_concat_destroy(mtd); in mtd_virt_concat_destroy_joins()
85 * mtd_virt_concat_destroy - Destroy the concat that includes the mtd object
86 * @mtd: pointer to 'mtd_info'
90 int mtd_virt_concat_destroy(struct mtd_info *mtd) in mtd_virt_concat_destroy() argument
92 struct mtd_info *child, *master = mtd_get_master(mtd); in mtd_virt_concat_destroy()
101 /* Find the concat item that hold the mtd device */ in mtd_virt_concat_destroy()
103 if (item->nodes[idx] == mtd->dev.of_node) { in mtd_virt_concat_destroy()
114 * all MTD devices that are part of it and register them in mtd_virt_concat_destroy()
119 if (child->dev.of_node != mtd->dev.of_node) { in mtd_virt_concat_destroy()
126 if (concat->mtd.name) { in mtd_virt_concat_destroy()
127 del_mtd_device(&concat->mtd); in mtd_virt_concat_destroy()
128 kfree(concat->mtd.name); in mtd_virt_concat_destroy()
130 mtd_concat_destroy(&concat->mtd); in mtd_virt_concat_destroy()
143 kfree(mtd->name); in mtd_virt_concat_destroy()
144 kfree(mtd); in mtd_virt_concat_destroy()
152 * @count: number of mtd devices that make up
212 * mtd_virt_concat_add - Add a mtd device to the concat list
213 * @mtd: pointer to 'mtd_info'
217 bool mtd_virt_concat_add(struct mtd_info *mtd) in mtd_virt_concat_add() argument
226 if (item->nodes[idx] == mtd->dev.of_node) { in mtd_virt_concat_add()
227 concat->subdev[concat->num_subdev++] = mtd; in mtd_virt_concat_add()
281 * MTD device.
289 struct mtd_info *mtd; in mtd_virt_concat_create_join() local
298 * that the MTD information for all devices included in the in mtd_virt_concat_create_join()
299 * concatenation are not handy, concat MTD device can't be in mtd_virt_concat_create_join()
322 if (concat->mtd.name) { in mtd_virt_concat_create_join()
323 ret = memcmp(concat->mtd.name, name, name_sz); in mtd_virt_concat_create_join()
329 mtd = mtd_concat_create(concat->subdev, concat->num_subdev, name); in mtd_virt_concat_create_join()
330 if (!mtd) { in mtd_virt_concat_create_join()
334 concat->mtd = *mtd; in mtd_virt_concat_create_join()
336 concat->mtd.dev.parent = concat->subdev[0]->dev.parent; in mtd_virt_concat_create_join()
337 concat->mtd.dev = concat->subdev[0]->dev; in mtd_virt_concat_create_join()
339 /* Add the mtd device */ in mtd_virt_concat_create_join()
340 ret = add_mtd_device(&concat->mtd); in mtd_virt_concat_create_join()
349 mtd_concat_destroy(mtd); in mtd_virt_concat_create_join()