diff options
author | Rabin Vincent <rabin.vincent@stericsson.com> | 2010-05-20 19:10:59 +0530 |
---|---|---|
committer | Jonas ABERG <jonas.aberg@stericsson.com> | 2010-05-24 08:01:54 +0200 |
commit | 2578d429b53524b05f6e85b5848064dae7d5b9a5 (patch) | |
tree | 5f5bd7c20b1500fa1524299441cbb5cfe12ef50d /board | |
parent | 9c2ca2d1d367d6fe616d0b2f2fb4abac04d9069e (diff) |
mmc: use proper FAT impementation
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Change-Id: I821642d1f02f7021863a4b01f44da3114e0e0a69
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/389
Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Tested-by: Jonas ABERG <jonas.aberg@stericsson.com>
Diffstat (limited to 'board')
-rw-r--r-- | board/st/u8500/mmc_utils.c | 85 |
1 files changed, 63 insertions, 22 deletions
diff --git a/board/st/u8500/mmc_utils.c b/board/st/u8500/mmc_utils.c index 8e868bbb5..faf8684aa 100644 --- a/board/st/u8500/mmc_utils.c +++ b/board/st/u8500/mmc_utils.c @@ -24,6 +24,7 @@ #include <common.h> #include <command.h> +#include <fat.h> #include "gpio.h" #include "mmc.h" // MMC api #include "mmc_utils.h" // to access MMC @@ -806,43 +807,83 @@ end: static char mmc_cmdbuffer[1024] ; -int copy_file_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +static int copy_file_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - unsigned long address; - u32 filesize; - int load_result; - char filename[30]; +#ifdef CONFIG_CMD_FAT + unsigned long address; + long sz; - strcpy(filename , argv[1]); - address = simple_strtoul (argv[2], 0, 16); + address = simple_strtoul (argv[2], 0, 16); - printf("copy_file_mmc : filename = %s\n", filename); - printf("copy_file_mmc : address = %lx\n", address); + printf("copy_file_mmc : filename = %s\n", argv[1]); + printf("copy_file_mmc : address = %lx\n", address); - load_result = mmc_read_file(filename, address, &filesize); + sz = file_fat_read(argv[1], (void *)address, 0); + if (sz == -1) + { + printf("copy_file_mmc error : in loading file \n"); + return 1; + } + + return 0; +#else + unsigned long address; + unsigned long filesize; + int load_result = 1; + unsigned long error_name = 0; + char filename[30] ; + { + strcpy(filename , argv[1]); + address = simple_strtoul (argv[2],0,16);//argv[2]; + + printf("copy_file_mmc : filename = %s\n",filename); + printf("copy_file_mmc : address = %lx\n",address); + + load_result = mmc_read_file(filename,address,&filesize); if (load_result != 0) { + error_name = (unsigned long) (-load_result); printf("copy_file_mmc error : in loading file \n"); } - return(load_result); + return(0); + } +#endif } -int mmc_read_cmd_file (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +static int mmc_read_cmd_file (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - u32 filesize; - int load_result; +#ifdef CONFIG_CMD_FAT + long sz; + + sz = file_fat_read("command.txt", &mmc_cmdbuffer, sizeof(mmc_cmdbuffer) - 1); + if (sz == -1) + { + printf("No command.txt found in the Card\n"); + return 1; + } + + mmc_cmdbuffer[sz] = '\0'; + setenv ("bootcmd", mmc_cmdbuffer); + return 0; +#else + unsigned long filesize; + int load_result = 1; + unsigned long error_name = 0; - load_result = mmc_read_file("command.txt", - (unsigned long)&mmc_cmdbuffer, &filesize); - if (load_result != 0) { + load_result = mmc_read_file("command.txt",(unsigned long)&mmc_cmdbuffer,&filesize); + if (load_result != 0) + { + error_name = (unsigned long) (-load_result); printf("mmc_read_cmd_file error : in loading file \n"); - } else { - setenv ("bootcmd", mmc_cmdbuffer); - } - return(load_result); + } + else + { + setenv ("bootcmd", mmc_cmdbuffer); + } + return(0); +#endif } - U_BOOT_CMD( copy_file_mmc, 3, 0, copy_file_mmc, "- copy file from mmc card\n", |