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

Commit 7799f9ac authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by David Woodhouse
Browse files

mtd: introduce mtd_lock interface

parent 85f2f2a8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -205,7 +205,7 @@ scb2_flash_remove(struct pci_dev *dev)

	/* disable flash writes */
	if (scb2_mtd->lock)
		scb2_mtd->lock(scb2_mtd, 0, scb2_mtd->size);
		mtd_lock(scb2_mtd, 0, scb2_mtd->size);

	mtd_device_unregister(scb2_mtd);
	map_destroy(scb2_mtd);
+1 −1
Original line number Diff line number Diff line
@@ -824,7 +824,7 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)
		if (!mtd->lock)
			ret = -EOPNOTSUPP;
		else
			ret = mtd->lock(mtd, einfo.start, einfo.length);
			ret = mtd_lock(mtd, einfo.start, einfo.length);
		break;
	}

+1 −1
Original line number Diff line number Diff line
@@ -556,7 +556,7 @@ static int concat_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
			size = len;

		if (subdev->lock) {
			err = subdev->lock(subdev, ofs, size);
			err = mtd_lock(subdev, ofs, size);
			if (err)
				break;
		} else
+1 −1
Original line number Diff line number Diff line
@@ -279,7 +279,7 @@ static int part_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
	struct mtd_part *part = PART(mtd);
	if ((len + ofs) > mtd->size)
		return -EINVAL;
	return part->master->lock(part->master, ofs + part->offset, len);
	return mtd_lock(part->master, ofs + part->offset, len);
}

static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
+7 −2
Original line number Diff line number Diff line
@@ -207,14 +207,13 @@ struct mtd_info {
	int (*writev) (struct mtd_info *mtd, const struct kvec *vecs,
			unsigned long count, loff_t to, size_t *retlen);
	void (*sync) (struct mtd_info *mtd);
	int (*lock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);

	/* Backing device capabilities for this device
	 * - provides mmap capabilities
	 */
	struct backing_dev_info *backing_dev_info;

	/* Chip-supported device locking */
	int (*lock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
	int (*unlock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
	int (*is_locked) (struct mtd_info *mtd, loff_t ofs, uint64_t len);

@@ -384,6 +383,12 @@ static inline void mtd_sync(struct mtd_info *mtd)
	mtd->sync(mtd);
}

/* Chip-supported device locking */
static inline int mtd_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
{
	return mtd->lock(mtd, ofs, len);
}

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