diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2007-07-15 13:50:04 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2007-07-15 13:50:04 +0200 |
commit | 665291e693efd1fd2955c6f8bfb89956711b0aef (patch) | |
tree | 0c9d871da372b4a640a9760f8946a8a57e3fbbba /lib | |
parent | 9b3761c4459167a335d3a1c30543824afa2d654d (diff) | |
download | barebox-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.c | 22 |
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; |