diff options
author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2011-12-23 10:10:15 -0500 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-01-09 13:25:18 -0500 |
commit | 04c601bfa4cb29c968dcb66e44c799c9c01d8675 (patch) | |
tree | 27fd5aaf5b6174a7f118f88ddbdb4eee3581ef56 | |
parent | 7219778ad9c18cc2c05c7fca0abe026afbc19dfb (diff) |
mtd: introduce mtd_get_unmapped_area 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/mtdchar.c | 2 | ||||
-rw-r--r-- | drivers/mtd/mtdconcat.c | 4 | ||||
-rw-r--r-- | drivers/mtd/mtdpart.c | 3 | ||||
-rw-r--r-- | fs/romfs/mmap-nommu.c | 2 | ||||
-rw-r--r-- | include/linux/mtd/mtd.h | 18 |
5 files changed, 18 insertions, 11 deletions
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c index 41d64ff4c252..c51f04a00afb 100644 --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c | |||
@@ -1135,7 +1135,7 @@ static unsigned long mtdchar_get_unmapped_area(struct file *file, | |||
1135 | if (offset > mtd->size - len) | 1135 | if (offset > mtd->size - len) |
1136 | return (unsigned long) -EINVAL; | 1136 | return (unsigned long) -EINVAL; |
1137 | 1137 | ||
1138 | return mtd->get_unmapped_area(mtd, len, offset, flags); | 1138 | return mtd_get_unmapped_area(mtd, len, offset, flags); |
1139 | } | 1139 | } |
1140 | 1140 | ||
1141 | /* can't map directly */ | 1141 | /* can't map directly */ |
diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c index 76123bd49314..b3895cf20bb2 100644 --- a/drivers/mtd/mtdconcat.c +++ b/drivers/mtd/mtdconcat.c | |||
@@ -726,8 +726,8 @@ static unsigned long concat_get_unmapped_area(struct mtd_info *mtd, | |||
726 | return (unsigned long) -EINVAL; | 726 | return (unsigned long) -EINVAL; |
727 | 727 | ||
728 | if (subdev->get_unmapped_area) | 728 | if (subdev->get_unmapped_area) |
729 | return subdev->get_unmapped_area(subdev, len, offset, | 729 | return mtd_get_unmapped_area(subdev, len, offset, |
730 | flags); | 730 | flags); |
731 | 731 | ||
732 | break; | 732 | break; |
733 | } | 733 | } |
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index b09624a5497c..55a9cb544fc1 100644 --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c | |||
@@ -108,8 +108,7 @@ static unsigned long part_get_unmapped_area(struct mtd_info *mtd, | |||
108 | struct mtd_part *part = PART(mtd); | 108 | struct mtd_part *part = PART(mtd); |
109 | 109 | ||
110 | offset += part->offset; | 110 | offset += part->offset; |
111 | return part->master->get_unmapped_area(part->master, len, offset, | 111 | return mtd_get_unmapped_area(part->master, len, offset, flags); |
112 | flags); | ||
113 | } | 112 | } |
114 | 113 | ||
115 | static int part_read_oob(struct mtd_info *mtd, loff_t from, | 114 | static int part_read_oob(struct mtd_info *mtd, loff_t from, |
diff --git a/fs/romfs/mmap-nommu.c b/fs/romfs/mmap-nommu.c index eed99428f104..d5168e8e7dcb 100644 --- a/fs/romfs/mmap-nommu.c +++ b/fs/romfs/mmap-nommu.c | |||
@@ -53,7 +53,7 @@ static unsigned long romfs_get_unmapped_area(struct file *file, | |||
53 | if (offset > mtd->size - len) | 53 | if (offset > mtd->size - len) |
54 | return (unsigned long) -EINVAL; | 54 | return (unsigned long) -EINVAL; |
55 | 55 | ||
56 | return mtd->get_unmapped_area(mtd, len, offset, flags); | 56 | return mtd_get_unmapped_area(mtd, len, offset, flags); |
57 | } | 57 | } |
58 | 58 | ||
59 | cant_map_directly: | 59 | cant_map_directly: |
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index a7d22b7fcb4c..f38e8276b408 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
@@ -178,11 +178,6 @@ struct mtd_info { | |||
178 | 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, |
179 | size_t *retlen, void **virt, resource_size_t *phys); | 179 | size_t *retlen, void **virt, resource_size_t *phys); |
180 | void (*unpoint) (struct mtd_info *mtd, loff_t from, size_t len); | 180 | void (*unpoint) (struct mtd_info *mtd, loff_t from, size_t len); |
181 | |||
182 | /* Allow NOMMU mmap() to directly map the device (if not NULL) | ||
183 | * - return the address to which the offset maps | ||
184 | * - return -ENOSYS to indicate refusal to do the mapping | ||
185 | */ | ||
186 | unsigned long (*get_unmapped_area) (struct mtd_info *mtd, | 181 | unsigned long (*get_unmapped_area) (struct mtd_info *mtd, |
187 | unsigned long len, | 182 | unsigned long len, |
188 | unsigned long offset, | 183 | unsigned long offset, |
@@ -293,6 +288,19 @@ static inline void mtd_unpoint(struct mtd_info *mtd, loff_t from, size_t len) | |||
293 | return mtd->unpoint(mtd, from, len); | 288 | return mtd->unpoint(mtd, from, len); |
294 | } | 289 | } |
295 | 290 | ||
291 | /* | ||
292 | * Allow NOMMU mmap() to directly map the device (if not NULL) | ||
293 | * - return the address to which the offset maps | ||
294 | * - return -ENOSYS to indicate refusal to do the mapping | ||
295 | */ | ||
296 | static inline unsigned long mtd_get_unmapped_area(struct mtd_info *mtd, | ||
297 | unsigned long len, | ||
298 | unsigned long offset, | ||
299 | unsigned long flags) | ||
300 | { | ||
301 | return mtd->get_unmapped_area(mtd, len, offset, flags); | ||
302 | } | ||
303 | |||
296 | static inline struct mtd_info *dev_to_mtd(struct device *dev) | 304 | static inline struct mtd_info *dev_to_mtd(struct device *dev) |
297 | { | 305 | { |
298 | return dev ? dev_get_drvdata(dev) : NULL; | 306 | return dev ? dev_get_drvdata(dev) : NULL; |