| /linux/include/linux/mtd/ |
| H A D | mtd.h | 17 #include <mtd/mtd-abi.h> 37 uint64_t offset; /* At which this region starts, from the beginning of the MTD */ 64 * Note, some MTD drivers do not allow you to write more than one OOB area at 65 * one go. If you try to do that on such an MTD device, -EINVAL will be 66 * returned. If you want to make your implementation portable on all kind of MTD 107 int (*ecc)(struct mtd_info *mtd, int section, 109 int (*free)(struct mtd_info *mtd, int section, 168 * write-unit <-> (pair + group) conversions, we ask the MTD drivers to 171 * MTD users will then be able to query these information by using the 174 * @ngroups is here to help MTD users iterating over all the pages in a [all …]
|
| /linux/drivers/mtd/nand/onenand/ |
| H A D | onenand_base.c | 26 #include <linux/mtd/mtd.h> 27 #include <linux/mtd/onenand.h> 28 #include <linux/mtd/partitions.h> 66 static int flexonenand_ooblayout_ecc(struct mtd_info *mtd, int section, in flexonenand_ooblayout_ecc() argument 78 static int flexonenand_ooblayout_free(struct mtd_info *mtd, int section, in flexonenand_ooblayout_free() argument 102 static int onenand_ooblayout_128_ecc(struct mtd_info *mtd, int section, in onenand_ooblayout_128_ecc() argument 114 static int onenand_ooblayout_128_free(struct mtd_info *mtd, int section, in onenand_ooblayout_128_free() argument 138 static int onenand_ooblayout_32_64_ecc(struct mtd_info *mtd, int section, in onenand_ooblayout_32_64_ecc() argument 150 static int onenand_ooblayout_32_64_free(struct mtd_info *mtd, int section, in onenand_ooblayout_32_64_free() argument 153 int sections = (mtd->oobsize / 32) * 2; in onenand_ooblayout_32_64_free() [all …]
|
| H A D | onenand_bbt.c | 15 #include <linux/mtd/mtd.h> 16 #include <linux/mtd/onenand.h> 47 * @mtd: MTD device structure 56 static int create_bbt(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr *bd, int chip) in create_bbt() argument 58 struct onenand_chip *this = mtd->priv; in create_bbt() 94 ret = onenand_bbt_read_oob(mtd, in create_bbt() 106 mtd->ecc_stats.badblocks++; in create_bbt() 113 rgn = flexonenand_region(mtd, from); in create_bbt() 114 from += mtd->eraseregions[rgn].erasesize; in create_bbt() 125 * @mtd: MTD device structure [all …]
|
| H A D | onenand_samsung.c | 18 #include <linux/mtd/mtd.h> 19 #include <linux/mtd/onenand.h> 20 #include <linux/mtd/partitions.h> 123 struct mtd_info *mtd; member 218 struct onenand_chip *this = onenand->mtd->priv; in s3c_onenand_readw() 268 struct onenand_chip *this = onenand->mtd->priv; in s3c_onenand_writew() 310 static int s3c_onenand_wait(struct mtd_info *mtd, int state) in s3c_onenand_wait() argument 358 mtd->ecc_stats.failed++; in s3c_onenand_wait() 376 static int s3c_onenand_command(struct mtd_info *mtd, int cmd, loff_t addr, in s3c_onenand_command() argument 379 struct onenand_chip *this = mtd->priv; in s3c_onenand_command() [all …]
|
| /linux/drivers/mtd/ubi/ |
| H A D | gluebi.c | 9 * This is a small driver which implements fake MTD devices on top of UBI 11 * MTD-oriented software (including all the legacy software) work on top of 14 * Gluebi emulates MTD devices of "MTD_UBIVOLUME" type. Their minimal I/O unit 15 * size (@mtd->writesize) is equivalent to the UBI minimal I/O unit. The 26 #include <linux/mtd/ubi.h> 27 #include <linux/mtd/mtd.h> 36 * @mtd: emulated MTD device description object 44 struct mtd_info mtd; member 77 * gluebi_get_device - get MTD device reference. 78 * @mtd: the MTD device description object [all …]
|
| H A D | build.c | 13 * When UBI is initialized, it attaches all the MTD devices specified as the 14 * module load parameters or the kernel boot parameters. If MTD devices were 15 * specified, UBI does not attach any MTD device, but it is possible to do 26 #include <linux/mtd/partitions.h> 35 /* Maximum length of the 'mtd=' parameter */ 38 /* Maximum number of comma-separated items in the 'mtd=' parameter */ 51 * struct mtd_dev_param - MTD device parameter description data structure. 52 * @name: MTD character device node path, MTD device name, or MTD device number 72 /* MTD devices specification parameters */ 383 ret = sprintf(buf, "%d\n", ubi->mtd->index); in dev_attribute_show() [all …]
|
| /linux/drivers/mtd/nand/raw/ |
| H A D | mpc5121_nfc.c | 21 #include <linux/mtd/mtd.h> 22 #include <linux/mtd/rawnand.h> 23 #include <linux/mtd/partitions.h> 119 static void mpc5121_nfc_done(struct mtd_info *mtd); 122 static inline u16 nfc_read(struct mtd_info *mtd, uint reg) in nfc_read() argument 124 struct nand_chip *chip = mtd_to_nand(mtd); in nfc_read() 131 static inline void nfc_write(struct mtd_info *mtd, uint reg, u16 val) in nfc_write() argument 133 struct nand_chip *chip = mtd_to_nand(mtd); in nfc_write() 140 static inline void nfc_set(struct mtd_info *mtd, uint reg, u16 bits) in nfc_set() argument 142 nfc_write(mtd, reg, nfc_read(mtd, reg) | bits); in nfc_set() [all …]
|
| /linux/Documentation/ABI/testing/ |
| H A D | sysfs-class-mtd | 1 What: /sys/class/mtd/ 4 Contact: linux-mtd@lists.infradead.org 6 The mtd/ class subdirectory belongs to the MTD subsystem 7 (MTD core). 9 What: /sys/class/mtd/mtdX/ 12 Contact: linux-mtd@lists.infradead.org 14 The /sys/class/mtd/mtd{0,1,2,3,...} directories correspond 19 What: /sys/class/mtd/mtdXro/ 22 Contact: linux-mtd@lists.infradead.org 25 nodes for /sys/class/mtd/mtdX/ . [all …]
|
| /linux/drivers/mtd/chips/ |
| H A D | map_ram.c | 15 #include <linux/mtd/mtd.h> 16 #include <linux/mtd/map.h> 24 static int mapram_point (struct mtd_info *mtd, loff_t from, size_t len, 26 static int mapram_unpoint(struct mtd_info *mtd, loff_t from, size_t len); 37 struct mtd_info *mtd; in map_ram_probe() local 60 mtd = kzalloc_obj(*mtd); in map_ram_probe() 61 if (!mtd) in map_ram_probe() 65 mtd->priv = map; in map_ram_probe() 66 mtd->name = map->name; in map_ram_probe() 67 mtd->type = MTD_RAM; in map_ram_probe() [all …]
|
| H A D | map_rom.c | 16 #include <linux/mtd/mtd.h> 17 #include <linux/mtd/map.h> 23 static int maprom_erase (struct mtd_info *mtd, struct erase_info *info); 24 static int maprom_point (struct mtd_info *mtd, loff_t from, size_t len, 26 static int maprom_unpoint(struct mtd_info *mtd, loff_t from, size_t len); 46 struct mtd_info *mtd; in map_rom_probe() local 48 mtd = kzalloc_obj(*mtd); in map_rom_probe() 49 if (!mtd) in map_rom_probe() 53 mtd->priv = map; in map_rom_probe() 54 mtd->name = map->name; in map_rom_probe() [all …]
|
| H A D | map_absent.c | 6 * This map driver is used to allocate "placeholder" MTD 9 * registration of MTD device nodes regardless of probe outcome. 27 #include <linux/mtd/mtd.h> 28 #include <linux/mtd/map.h> 47 struct mtd_info *mtd; in map_absent_probe() local 49 mtd = kzalloc_obj(*mtd); in map_absent_probe() 50 if (!mtd) { in map_absent_probe() 55 mtd->priv = map; in map_absent_probe() 56 mtd->name = map->name; in map_absent_probe() 57 mtd->type = MTD_ABSENT; in map_absent_probe() [all …]
|
| /linux/drivers/mtd/devices/ |
| H A D | mtdram.c | 2 * mtdram - a test mtd device 18 #include <linux/mtd/mtd.h> 19 #include <linux/mtd/mtdram.h> 34 // We could store these in the mtd structure, but we only support 1 device.. 37 static int check_offs_len(struct mtd_info *mtd, loff_t ofs, uint64_t len) in check_offs_len() argument 42 if (mtd_mod_by_eb(ofs, mtd)) { in check_offs_len() 48 if (mtd_mod_by_eb(len, mtd)) { in check_offs_len() 56 static int ram_erase(struct mtd_info *mtd, struct erase_info *instr) in ram_erase() argument 58 if (check_offs_len(mtd, instr->addr, instr->len)) in ram_erase() 60 memset((char *)mtd->priv + instr->addr, 0xff, instr->len); in ram_erase() [all …]
|
| H A D | powernv_flash.c | 3 * OPAL PNOR flash MTD abstraction 16 #include <linux/mtd/mtd.h> 17 #include <linux/mtd/partitions.h> 26 * This driver creates the a Linux MTD abstraction for platform PNOR flash 31 struct mtd_info mtd; member 42 * Don't return -ERESTARTSYS if we can't get a token, the MTD core 46 static int powernv_flash_async_op(struct mtd_info *mtd, enum flash_op op, in powernv_flash_async_op() argument 49 struct powernv_flash *info = (struct powernv_flash *)mtd->priv; in powernv_flash_async_op() 50 struct device *dev = &mtd->dev; in powernv_flash_async_op() 87 * If we return the mtd core will free the in powernv_flash_async_op() [all …]
|
| H A D | sst25l.c | 21 #include <linux/mtd/mtd.h> 22 #include <linux/mtd/partitions.h> 49 struct mtd_info mtd; member 60 #define to_sst25l_flash(x) container_of(x, struct sst25l_flash, mtd) 166 static int sst25l_erase(struct mtd_info *mtd, struct erase_info *instr) in sst25l_erase() argument 168 struct sst25l_flash *flash = to_sst25l_flash(mtd); in sst25l_erase() 173 if ((uint32_t)instr->len % mtd->erasesize) in sst25l_erase() 176 if ((uint32_t)instr->addr % mtd->erasesize) in sst25l_erase() 198 addr += mtd->erasesize; in sst25l_erase() 206 static int sst25l_read(struct mtd_info *mtd, loff_t from, size_t len, in sst25l_read() argument [all …]
|
| /linux/drivers/mtd/tests/ |
| H A D | stresstest.c | 5 * Test random reads, writes and erases on MTD device. 16 #include <linux/mtd/mtd.h> 26 MODULE_PARM_DESC(dev, "MTD device number to use"); 32 static struct mtd_info *mtd; variable 73 if (offs >= mtd->erasesize) in do_read() 74 offs -= mtd->erasesize; in do_read() 75 if (offs + len > mtd->erasesize) in do_read() 76 len = mtd->erasesize - offs; in do_read() 78 addr = (loff_t)eb * mtd->erasesize + offs; in do_read() 79 return mtdtest_read(mtd, addr, len, readbuf); in do_read() [all …]
|
| H A D | speedtest.c | 5 * Test read and write speed of a MTD device. 17 #include <linux/mtd/mtd.h> 26 MODULE_PARM_DESC(dev, "MTD device number to use"); 33 static struct mtd_info *mtd; variable 47 loff_t addr = (loff_t)ebnum * mtd->erasesize; in multiblock_erase() 51 ei.len = mtd->erasesize * blocks; in multiblock_erase() 53 err = mtd_erase(mtd, &ei); in multiblock_erase() 65 loff_t addr = (loff_t)ebnum * mtd->erasesize; in write_eraseblock() 67 return mtdtest_write(mtd, addr, mtd->erasesize, iobuf); in write_eraseblock() 73 loff_t addr = (loff_t)ebnum * mtd->erasesize; in write_eraseblock_by_page() [all …]
|
| H A D | readtest.c | 5 * Check MTD device read. 16 #include <linux/mtd/mtd.h> 24 MODULE_PARM_DESC(dev, "MTD device number to use"); 26 static struct mtd_info *mtd; variable 38 loff_t addr = (loff_t)ebnum * mtd->erasesize; in read_eraseblock_by_page() 44 ret = mtdtest_read(mtd, addr, pgsize, buf); in read_eraseblock_by_page() 49 if (mtd->oobsize) { in read_eraseblock_by_page() 55 ops.ooblen = mtd->oobsize; in read_eraseblock_by_page() 60 ret = mtd_read_oob(mtd, addr, &ops); in read_eraseblock_by_page() 62 ops.oobretlen != mtd->oobsize) { in read_eraseblock_by_page() [all …]
|
| H A D | nandbiterrs.c | 35 #include <linux/mtd/mtd.h> 37 #include <linux/mtd/rawnand.h> 43 MODULE_PARM_DESC(dev, "MTD device number to use"); 67 static struct mtd_info *mtd; /* MTD device */ variable 95 return mtdtest_write(mtd, offset, mtd->writesize, wbuffer); in write_page() 108 ops.len = mtd->writesize; in rewrite_page() 116 err = mtd_write_oob(mtd, offset, &ops); in rewrite_page() 117 if (err || ops.retlen != mtd->writesize) { in rewrite_page() 137 /* Saving last mtd stats */ in read_page() 138 memcpy(&oldstats, &mtd->ecc_stats, sizeof(oldstats)); in read_page() [all …]
|
| /linux/drivers/mtd/ |
| H A D | mtdsuper.c | 2 /* MTD-based superblock management 11 #include <linux/mtd/super.h> 23 * get a superblock on an MTD-backed filesystem 26 struct mtd_info *mtd, in mtd_get_sb() argument 33 sb = sget_dev(fc, MKDEV(MTD_BLOCK_MAJOR, mtd->index)); in mtd_get_sb() 40 mtd->index, mtd->name); in mtd_get_sb() 41 put_mtd_device(mtd); in mtd_get_sb() 45 mtd->index, mtd->name); in mtd_get_sb() 54 sb->s_mtd = mtd; in mtd_get_sb() 74 * get a superblock on an MTD-backed filesystem by MTD device number [all …]
|
| H A D | mtdblock.c | 3 * Direct MTD block device access 18 #include <linux/mtd/mtd.h> 19 #include <linux/mtd/blktrans.h> 44 static int erase_write (struct mtd_info *mtd, unsigned long pos, in erase_write() argument 57 ret = mtd_erase(mtd, &erase); in erase_write() 61 pos, len, mtd->name); in erase_write() 69 ret = mtd_write(mtd, pos, len, &retlen, buf); in erase_write() 80 struct mtd_info *mtd = mtdblk->mbd.mtd; in write_cached_data() local 87 "at 0x%lx, size 0x%x\n", mtd->name, in write_cached_data() 90 ret = erase_write (mtd, mtdblk->cache_offset, in write_cached_data() [all …]
|
| /linux/drivers/net/ethernet/sfc/siena/ |
| H A D | mtd.c | 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() [all …]
|
| /linux/drivers/net/ethernet/sfc/ |
| H A D | mtd.c | 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() [all …]
|
| /linux/drivers/net/ethernet/sfc/falcon/ |
| H A D | mtd.c | 9 #include <linux/mtd/mtd.h> 16 #define to_ef4_mtd_partition(mtd) \ argument 17 container_of(mtd, struct ef4_mtd_partition, mtd) 19 /* MTD interface */ 21 static int ef4_mtd_erase(struct mtd_info *mtd, struct erase_info *erase) in ef4_mtd_erase() argument 23 struct ef4_nic *efx = mtd->priv; in ef4_mtd_erase() 25 return efx->type->mtd_erase(mtd, erase->addr, erase->len); in ef4_mtd_erase() 28 static void ef4_mtd_sync(struct mtd_info *mtd) in ef4_mtd_sync() argument 30 struct ef4_mtd_partition *part = to_ef4_mtd_partition(mtd); in ef4_mtd_sync() 31 struct ef4_nic *efx = mtd->priv; in ef4_mtd_sync() [all …]
|
| /linux/drivers/mtd/parsers/ |
| H A D | afs.c | 4 drivers/mtd/afs.c: ARM Flash Layout/Partitioning 22 #include <linux/mtd/mtd.h> 23 #include <linux/mtd/map.h> 24 #include <linux/mtd/partitions.h> 78 static bool afs_is_v1(struct mtd_info *mtd, u_int off) in afs_is_v1() argument 81 u_int ptr = off + mtd->erasesize - 12; in afs_is_v1() 86 ret = mtd_read(mtd, ptr, 4, &sz, (u_char *)&magic); in afs_is_v1() 88 printk(KERN_ERR "AFS: mtd read failed at 0x%x: %d\n", in afs_is_v1() 98 static bool afs_is_v2(struct mtd_info *mtd, u_int off) in afs_is_v2() argument 101 u_int ptr = off + mtd->erasesize - 8; in afs_is_v2() [all …]
|
| /linux/drivers/mtd/maps/ |
| H A D | plat-ram.c | 2 /* drivers/mtd/maps/plat-ram.c 20 #include <linux/mtd/mtd.h> 21 #include <linux/mtd/map.h> 22 #include <linux/mtd/partitions.h> 23 #include <linux/mtd/plat-ram.h> 27 /* private structure for each mtd platform ram device created */ 31 struct mtd_info *mtd; member 77 if (info->mtd) { in platram_remove() 78 mtd_device_unregister(info->mtd); in platram_remove() 79 map_destroy(info->mtd); in platram_remove() [all …]
|