Lines Matching +full:mtd +full:- +full:name

1 // SPDX-License-Identifier: GPL-2.0-only
4 * Copyright 2005-2006 Fen Systems Ltd.
5 * Copyright 2006-2013 Solarflare Communications Inc.
9 #include <linux/mtd/mtd.h>
16 #define to_efx_mtd_partition(mtd) \ argument
17 container_of(mtd, struct efx_mtd_partition, mtd)
19 /* MTD interface */
21 static int efx_mtd_erase(struct mtd_info *mtd, struct erase_info *erase) in efx_mtd_erase() argument
23 struct efx_nic *efx = mtd->priv; in efx_mtd_erase()
25 return efx->type->mtd_erase(mtd, erase->addr, erase->len); in efx_mtd_erase()
28 static void efx_mtd_sync(struct mtd_info *mtd) in efx_mtd_sync() argument
30 struct efx_mtd_partition *part = to_efx_mtd_partition(mtd); in efx_mtd_sync()
31 struct efx_nic *efx = mtd->priv; in efx_mtd_sync()
34 rc = efx->type->mtd_sync(mtd); in efx_mtd_sync()
37 part->name, part->dev_type_name, rc); in efx_mtd_sync()
45 rc = mtd_device_unregister(&part->mtd); in efx_siena_mtd_remove_partition()
46 if (rc != -EBUSY) in efx_siena_mtd_remove_partition()
51 list_del(&part->node); in efx_siena_mtd_remove_partition()
64 part->mtd.writesize = 1; in efx_siena_mtd_add()
66 if (!(part->mtd.flags & MTD_NO_ERASE)) in efx_siena_mtd_add()
67 part->mtd.flags |= MTD_WRITEABLE; in efx_siena_mtd_add()
69 part->mtd.owner = THIS_MODULE; in efx_siena_mtd_add()
70 part->mtd.priv = efx; in efx_siena_mtd_add()
71 part->mtd.name = part->name; in efx_siena_mtd_add()
72 part->mtd._erase = efx_mtd_erase; in efx_siena_mtd_add()
73 part->mtd._read = efx->type->mtd_read; in efx_siena_mtd_add()
74 part->mtd._write = efx->type->mtd_write; in efx_siena_mtd_add()
75 part->mtd._sync = efx_mtd_sync; in efx_siena_mtd_add()
77 efx->type->mtd_rename(part); in efx_siena_mtd_add()
79 if (mtd_device_register(&part->mtd, NULL, 0)) in efx_siena_mtd_add()
82 /* Add to list in order - efx_siena_mtd_remove() depends on this */ in efx_siena_mtd_add()
83 list_add_tail(&part->node, &efx->mtd_list); in efx_siena_mtd_add()
89 while (i--) { in efx_siena_mtd_add()
95 return -ENOMEM; in efx_siena_mtd_add()
104 if (list_empty(&efx->mtd_list)) in efx_siena_mtd_remove()
107 parts = list_first_entry(&efx->mtd_list, struct efx_mtd_partition, in efx_siena_mtd_remove()
110 list_for_each_entry_safe(part, next, &efx->mtd_list, node) in efx_siena_mtd_remove()
122 list_for_each_entry(part, &efx->mtd_list, node) in efx_siena_mtd_rename()
123 efx->type->mtd_rename(part); in efx_siena_mtd_rename()