diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2011-04-08 15:43:48 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-04-12 09:54:57 +0200 |
commit | 1cf3936829da523a03f3a7bf907eea1fda06aab4 (patch) | |
tree | 94bcfa4f1fe435eb6c52ed891153dc2c733e8fb4 /arch/arm/mach-omap/xload.c | |
parent | 00650621241ab8666e6ec238d5c8c8ca19d7b27b (diff) | |
download | barebox-1cf3936829da523a03f3a7bf907eea1fda06aab4.tar.gz barebox-1cf3936829da523a03f3a7bf907eea1fda06aab4.tar.xz |
ARM omap: add xload helper functions
Add some common xload helper functions to determine the boot source
on omap3/4 and to load images from mmc and nand.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-omap/xload.c')
-rw-r--r-- | arch/arm/mach-omap/xload.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c new file mode 100644 index 0000000000..216b9b5aba --- /dev/null +++ b/arch/arm/mach-omap/xload.c @@ -0,0 +1,54 @@ +#include <common.h> +#include <partition.h> +#include <nand.h> +#include <driver.h> +#include <linux/mtd/mtd.h> +#include <fs.h> +#include <fcntl.h> +#include <mach/xload.h> +#include <sizes.h> + +void *omap_xload_boot_nand(int offset, int size) +{ + int ret; + void *to = xmalloc(size); + struct cdev *cdev; + + devfs_add_partition("nand0", offset, size, PARTITION_FIXED, "x"); + dev_add_bb_dev("x", "bbx"); + + cdev = cdev_open("bbx", O_RDONLY); + if (!cdev) { + printf("failed to open nand\n"); + return NULL; + } + + ret = cdev_read(cdev, to, size, 0, 0); + if (ret != size) { + printf("failed to read from nand\n"); + return NULL; + } + + return to; +} + +void *omap_xload_boot_mmc(void) +{ + int ret; + void *buf; + int len; + + ret = mount("disk0.0", "fat", "/"); + if (ret) { + printf("mounting sd card failed with %d\n", ret); + return NULL; + } + + buf = read_file("/barebox.bin", &len); + if (!buf) { + printf("could not read barebox.bin from sd card\n"); + return NULL; + } + + return buf; +} |