From: Nicolas Pitre <nicolas.pitre@linaro.org>
To: Boris Brezillon <boris.brezillon@free-electrons.com>
Cc: linux-mtd@lists.infradead.org
Subject: [PATCH 4/5] MTD: implement mtd_get_unmapped_area() using the point method
Date: Tue, 10 Oct 2017 23:26:20 -0400 [thread overview]
Message-ID: <20171011032621.26979-5-nicolas.pitre@linaro.org> (raw)
In-Reply-To: <20171011032621.26979-1-nicolas.pitre@linaro.org>
The mtd->_point method is a superset of mtd->_get_unmapped_area.
Especially in the NOR flash case, the point method ensures the flash
memory is in array (data) mode and that it will stay that way which
is precisely what callers of mtd_get_unmapped_area() would expect.
Implement mtd_get_unmapped_area() in terms of mtd->_point now that all
drivers that provided a _get_unmapped_area method also have the _point
method implemented.
Signed-off-by: Nicolas Pitre <nico@linaro.org>
---
drivers/mtd/mtdcore.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index e7ea842ba3..ecb0380158 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -1022,11 +1022,18 @@ EXPORT_SYMBOL_GPL(mtd_unpoint);
unsigned long mtd_get_unmapped_area(struct mtd_info *mtd, unsigned long len,
unsigned long offset, unsigned long flags)
{
- if (!mtd->_get_unmapped_area)
- return -EOPNOTSUPP;
- if (offset >= mtd->size || len > mtd->size - offset)
- return -EINVAL;
- return mtd->_get_unmapped_area(mtd, len, offset, flags);
+ size_t retlen;
+ void *virt;
+ int ret;
+
+ ret = mtd_point(mtd, offset, len, &retlen, &virt, NULL);
+ if (ret)
+ return ret;
+ if (retlen != len) {
+ mtd_unpoint(mtd, offset, retlen);
+ return -ENOSYS;
+ }
+ return (unsigned long)virt;
}
EXPORT_SYMBOL_GPL(mtd_get_unmapped_area);
--
2.9.5
next prev parent reply other threads:[~2017-10-11 3:26 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-11 3:26 [PATCH 0/5] unconfuse get_unmapped_area and point/unpoint driver methods Nicolas Pitre
2017-10-11 3:26 ` [PATCH 1/5] MTD: mtdram: properly handle the phys argument in the point method Nicolas Pitre
2017-10-11 20:47 ` Richard Weinberger
2017-10-11 21:32 ` Nicolas Pitre
2017-10-11 21:40 ` Richard Weinberger
2017-10-11 21:53 ` Nicolas Pitre
2017-10-11 3:26 ` [PATCH 2/5] MTD: chips/map_ram.c: implement point and unpoint methods Nicolas Pitre
2017-10-11 20:48 ` Richard Weinberger
2017-10-11 3:26 ` [PATCH 3/5] MTD: chips/map_rom.c: " Nicolas Pitre
2017-10-11 20:49 ` Richard Weinberger
2017-10-11 20:56 ` Nicolas Pitre
2017-10-11 3:26 ` Nicolas Pitre [this message]
2017-10-11 20:51 ` [PATCH 4/5] MTD: implement mtd_get_unmapped_area() using the point method Richard Weinberger
2017-10-11 3:26 ` [PATCH 5/5] MTD: remove the get_unmapped_area method Nicolas Pitre
2017-10-11 21:02 ` Richard Weinberger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171011032621.26979-5-nicolas.pitre@linaro.org \
--to=nicolas.pitre@linaro.org \
--cc=boris.brezillon@free-electrons.com \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).