summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2007-07-15 13:50:04 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2007-07-15 13:50:04 +0200
commit665291e693efd1fd2955c6f8bfb89956711b0aef (patch)
tree0c9d871da372b4a640a9760f8946a8a57e3fbbba /lib
parent9b3761c4459167a335d3a1c30543824afa2d654d (diff)
downloadbarebox-665291e693efd1fd2955c6f8bfb89956711b0aef.tar.gz
barebox-665291e693efd1fd2955c6f8bfb89956711b0aef.tar.xz
implement memmap().
With this function we can get a pointer to directly memory mapped devices like nor flash or RAM. Useful for bootm where we save one memcopy when the image is mappable
Diffstat (limited to 'lib')
-rw-r--r--lib/driver.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/driver.c b/lib/driver.c
index 5ec67b491b..8f6c2ffaa6 100644
--- a/lib/driver.c
+++ b/lib/driver.c
@@ -292,6 +292,28 @@ ssize_t dev_erase(struct device_d *dev, size_t count, unsigned long offset)
return -ENOSYS;
}
+ssize_t dev_memmap(struct device_d *dev, void **map, int flags)
+{
+ if (dev->driver->memmap)
+ return dev->driver->memmap(dev, map, flags);
+ errno = -ENOSYS;
+ return -ENOSYS;
+}
+
+int generic_memmap_ro(struct device_d *dev, void **map, int flags)
+{
+ if (flags & PROT_WRITE)
+ return -EACCES;
+ *map = (void *)dev->map_base;
+ return 0;
+}
+
+int generic_memmap_rw(struct device_d *dev, void **map, int flags)
+{
+ *map = (void *)dev->map_base;
+ return 0;
+}
+
int dummy_probe(struct device_d *dev)
{
return 0;