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

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

mtd: introduce mtd_unlock interface

parent 7799f9ac
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -838,7 +838,7 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)
		if (!mtd->unlock)
		if (!mtd->unlock)
			ret = -EOPNOTSUPP;
			ret = -EOPNOTSUPP;
		else
		else
			ret = mtd->unlock(mtd, einfo.start, einfo.length);
			ret = mtd_unlock(mtd, einfo.start, einfo.length);
		break;
		break;
	}
	}


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


		if (subdev->unlock) {
		if (subdev->unlock) {
			err = subdev->unlock(subdev, ofs, size);
			err = mtd_unlock(subdev, ofs, size);
			if (err)
			if (err)
				break;
				break;
		} else
		} else
+1 −1
Original line number Original line Diff line number Diff line
@@ -340,7 +340,7 @@ int add_mtd_device(struct mtd_info *mtd)
	/* Some chips always power up locked. Unlock them now */
	/* Some chips always power up locked. Unlock them now */
	if ((mtd->flags & MTD_WRITEABLE)
	if ((mtd->flags & MTD_WRITEABLE)
	    && (mtd->flags & MTD_POWERUP_LOCK) && mtd->unlock) {
	    && (mtd->flags & MTD_POWERUP_LOCK) && mtd->unlock) {
		if (mtd->unlock(mtd, 0, mtd->size))
		if (mtd_unlock(mtd, 0, mtd->size))
			printk(KERN_WARNING
			printk(KERN_WARNING
			       "%s: unlock failed, writes may not work\n",
			       "%s: unlock failed, writes may not work\n",
			       mtd->name);
			       mtd->name);
+1 −1
Original line number Original line Diff line number Diff line
@@ -287,7 +287,7 @@ static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
	struct mtd_part *part = PART(mtd);
	struct mtd_part *part = PART(mtd);
	if ((len + ofs) > mtd->size)
	if ((len + ofs) > mtd->size)
		return -EINVAL;
		return -EINVAL;
	return part->master->unlock(part->master, ofs + part->offset, len);
	return mtd_unlock(part->master, ofs + part->offset, len);
}
}


static int part_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len)
static int part_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len)
+6 −1
Original line number Original line Diff line number Diff line
@@ -208,13 +208,13 @@ struct mtd_info {
			unsigned long count, loff_t to, size_t *retlen);
			unsigned long count, loff_t to, size_t *retlen);
	void (*sync) (struct mtd_info *mtd);
	void (*sync) (struct mtd_info *mtd);
	int (*lock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
	int (*lock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
	int (*unlock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);


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


	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);
	int (*is_locked) (struct mtd_info *mtd, loff_t ofs, uint64_t len);


	/* Power Management functions */
	/* Power Management functions */
@@ -389,6 +389,11 @@ static inline int mtd_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
	return mtd->lock(mtd, ofs, len);
	return mtd->lock(mtd, ofs, len);
}
}


static inline int mtd_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
{
	return mtd->unlock(mtd, ofs, len);
}

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