Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04c601bf authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by David Woodhouse
Browse files

mtd: introduce mtd_get_unmapped_area interface

parent 7219778a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1135,7 +1135,7 @@ static unsigned long mtdchar_get_unmapped_area(struct file *file,
		if (offset > mtd->size - len)
			return (unsigned long) -EINVAL;

		return mtd->get_unmapped_area(mtd, len, offset, flags);
		return mtd_get_unmapped_area(mtd, len, offset, flags);
	}

	/* can't map directly */
+2 −2
Original line number Diff line number Diff line
@@ -726,7 +726,7 @@ static unsigned long concat_get_unmapped_area(struct mtd_info *mtd,
			return (unsigned long) -EINVAL;

		if (subdev->get_unmapped_area)
			return subdev->get_unmapped_area(subdev, len, offset,
			return mtd_get_unmapped_area(subdev, len, offset,
						     flags);

		break;
+1 −2
Original line number Diff line number Diff line
@@ -108,8 +108,7 @@ static unsigned long part_get_unmapped_area(struct mtd_info *mtd,
	struct mtd_part *part = PART(mtd);

	offset += part->offset;
	return part->master->get_unmapped_area(part->master, len, offset,
					       flags);
	return mtd_get_unmapped_area(part->master, len, offset, flags);
}

static int part_read_oob(struct mtd_info *mtd, loff_t from,
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static unsigned long romfs_get_unmapped_area(struct file *file,
		if (offset > mtd->size - len)
			return (unsigned long) -EINVAL;

		return mtd->get_unmapped_area(mtd, len, offset, flags);
		return mtd_get_unmapped_area(mtd, len, offset, flags);
	}

cant_map_directly:
+13 −5
Original line number Diff line number Diff line
@@ -178,11 +178,6 @@ struct mtd_info {
	int (*point) (struct mtd_info *mtd, loff_t from, size_t len,
		      size_t *retlen, void **virt, resource_size_t *phys);
	void (*unpoint) (struct mtd_info *mtd, loff_t from, size_t len);

	/* Allow NOMMU mmap() to directly map the device (if not NULL)
	 * - return the address to which the offset maps
	 * - return -ENOSYS to indicate refusal to do the mapping
	 */
	unsigned long (*get_unmapped_area) (struct mtd_info *mtd,
					    unsigned long len,
					    unsigned long offset,
@@ -293,6 +288,19 @@ static inline void mtd_unpoint(struct mtd_info *mtd, loff_t from, size_t len)
	return mtd->unpoint(mtd, from, len);
}

/*
 * Allow NOMMU mmap() to directly map the device (if not NULL)
 * - return the address to which the offset maps
 * - return -ENOSYS to indicate refusal to do the mapping
 */
static inline unsigned long mtd_get_unmapped_area(struct mtd_info *mtd,
						  unsigned long len,
						  unsigned long offset,
						  unsigned long flags)
{
	return mtd->get_unmapped_area(mtd, len, offset, flags);
}

static inline struct mtd_info *dev_to_mtd(struct device *dev)
{
	return dev ? dev_get_drvdata(dev) : NULL;