diff options
author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2011-12-23 10:00:37 -0500 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-01-09 13:25:15 -0500 |
commit | d35ea200c0fb5315f16fb2599a4bafd9c1a7b386 (patch) | |
tree | bca893ecf2cada20a1a3a84f64759c2e75838c5b | |
parent | 7e1f0dc0551b99acb5e8fa161a7ac401994d57d8 (diff) |
mtd: introduce mtd_point interface
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r-- | drivers/mtd/mtdpart.c | 4 | ||||
-rw-r--r-- | fs/jffs2/erase.c | 4 | ||||
-rw-r--r-- | fs/jffs2/readinode.c | 4 | ||||
-rw-r--r-- | fs/jffs2/scan.c | 4 | ||||
-rw-r--r-- | include/linux/mtd/mtd.h | 14 |
5 files changed, 18 insertions, 12 deletions
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index d318fee28595..5b664722e5b0 100644 --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c | |||
@@ -89,8 +89,8 @@ static int part_point(struct mtd_info *mtd, loff_t from, size_t len, | |||
89 | len = 0; | 89 | len = 0; |
90 | else if (from + len > mtd->size) | 90 | else if (from + len > mtd->size) |
91 | len = mtd->size - from; | 91 | len = mtd->size - from; |
92 | return part->master->point (part->master, from + part->offset, | 92 | return mtd_point(part->master, from + part->offset, len, retlen, |
93 | len, retlen, virt, phys); | 93 | virt, phys); |
94 | } | 94 | } |
95 | 95 | ||
96 | static void part_unpoint(struct mtd_info *mtd, loff_t from, size_t len) | 96 | static void part_unpoint(struct mtd_info *mtd, loff_t from, size_t len) |
diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c index 540e8eca1b49..53f8794fda6a 100644 --- a/fs/jffs2/erase.c +++ b/fs/jffs2/erase.c | |||
@@ -340,8 +340,8 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl | |||
340 | if (c->mtd->point) { | 340 | if (c->mtd->point) { |
341 | unsigned long *wordebuf; | 341 | unsigned long *wordebuf; |
342 | 342 | ||
343 | ret = c->mtd->point(c->mtd, jeb->offset, c->sector_size, | 343 | ret = mtd_point(c->mtd, jeb->offset, c->sector_size, &retlen, |
344 | &retlen, &ebuf, NULL); | 344 | &ebuf, NULL); |
345 | if (ret) { | 345 | if (ret) { |
346 | D1(printk(KERN_DEBUG "MTD point failed %d\n", ret)); | 346 | D1(printk(KERN_DEBUG "MTD point failed %d\n", ret)); |
347 | goto do_flash_read; | 347 | goto do_flash_read; |
diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c index ee57bac1ba6d..dde61effeda2 100644 --- a/fs/jffs2/readinode.c +++ b/fs/jffs2/readinode.c | |||
@@ -63,8 +63,8 @@ static int check_node_data(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info | |||
63 | /* TODO: instead, incapsulate point() stuff to jffs2_flash_read(), | 63 | /* TODO: instead, incapsulate point() stuff to jffs2_flash_read(), |
64 | * adding and jffs2_flash_read_end() interface. */ | 64 | * adding and jffs2_flash_read_end() interface. */ |
65 | if (c->mtd->point) { | 65 | if (c->mtd->point) { |
66 | err = c->mtd->point(c->mtd, ofs, len, &retlen, | 66 | err = mtd_point(c->mtd, ofs, len, &retlen, (void **)&buffer, |
67 | (void **)&buffer, NULL); | 67 | NULL); |
68 | if (!err && retlen < len) { | 68 | if (!err && retlen < len) { |
69 | JFFS2_WARNING("MTD point returned len too short: %zu instead of %u.\n", retlen, tn->csize); | 69 | JFFS2_WARNING("MTD point returned len too short: %zu instead of %u.\n", retlen, tn->csize); |
70 | c->mtd->unpoint(c->mtd, ofs, retlen); | 70 | c->mtd->unpoint(c->mtd, ofs, retlen); |
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c index 28107ca136e4..53e05c8e5b69 100644 --- a/fs/jffs2/scan.c +++ b/fs/jffs2/scan.c | |||
@@ -97,8 +97,8 @@ int jffs2_scan_medium(struct jffs2_sb_info *c) | |||
97 | size_t pointlen, try_size; | 97 | size_t pointlen, try_size; |
98 | 98 | ||
99 | if (c->mtd->point) { | 99 | if (c->mtd->point) { |
100 | ret = c->mtd->point(c->mtd, 0, c->mtd->size, &pointlen, | 100 | ret = mtd_point(c->mtd, 0, c->mtd->size, &pointlen, |
101 | (void **)&flashbuf, NULL); | 101 | (void **)&flashbuf, NULL); |
102 | if (!ret && pointlen < c->mtd->size) { | 102 | if (!ret && pointlen < c->mtd->size) { |
103 | /* Don't muck about if it won't let us point to the whole flash */ | 103 | /* Don't muck about if it won't let us point to the whole flash */ |
104 | D1(printk(KERN_DEBUG "MTD point returned len too short: 0x%zx\n", pointlen)); | 104 | D1(printk(KERN_DEBUG "MTD point returned len too short: 0x%zx\n", pointlen)); |
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 201bad557047..ca7bfdaf7a6f 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
@@ -175,11 +175,8 @@ struct mtd_info { | |||
175 | * wrappers instead. | 175 | * wrappers instead. |
176 | */ | 176 | */ |
177 | int (*erase) (struct mtd_info *mtd, struct erase_info *instr); | 177 | int (*erase) (struct mtd_info *mtd, struct erase_info *instr); |
178 | |||
179 | /* This stuff for eXecute-In-Place */ | ||
180 | /* phys is optional and may be set to NULL */ | ||
181 | int (*point) (struct mtd_info *mtd, loff_t from, size_t len, | 178 | int (*point) (struct mtd_info *mtd, loff_t from, size_t len, |
182 | size_t *retlen, void **virt, resource_size_t *phys); | 179 | size_t *retlen, void **virt, resource_size_t *phys); |
183 | 180 | ||
184 | /* We probably shouldn't allow XIP if the unpoint isn't a NULL */ | 181 | /* We probably shouldn't allow XIP if the unpoint isn't a NULL */ |
185 | void (*unpoint) (struct mtd_info *mtd, loff_t from, size_t len); | 182 | void (*unpoint) (struct mtd_info *mtd, loff_t from, size_t len); |
@@ -283,6 +280,15 @@ static inline int mtd_erase(struct mtd_info *mtd, struct erase_info *instr) | |||
283 | return mtd->erase(mtd, instr); | 280 | return mtd->erase(mtd, instr); |
284 | } | 281 | } |
285 | 282 | ||
283 | /* | ||
284 | * This stuff for eXecute-In-Place. phys is optional and may be set to NULL. | ||
285 | */ | ||
286 | static inline int mtd_point(struct mtd_info *mtd, loff_t from, size_t len, | ||
287 | size_t *retlen, void **virt, resource_size_t *phys) | ||
288 | { | ||
289 | return mtd->point(mtd, from, len, retlen, virt, phys); | ||
290 | } | ||
291 | |||
286 | static inline struct mtd_info *dev_to_mtd(struct device *dev) | 292 | static inline struct mtd_info *dev_to_mtd(struct device *dev) |
287 | { | 293 | { |
288 | return dev ? dev_get_drvdata(dev) : NULL; | 294 | return dev ? dev_get_drvdata(dev) : NULL; |