diff options
Diffstat (limited to 'common/cmd_yaffs2.c')
-rwxr-xr-x | common/cmd_yaffs2.c | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/common/cmd_yaffs2.c b/common/cmd_yaffs2.c new file mode 100755 index 0000000..4755d8e --- /dev/null +++ b/common/cmd_yaffs2.c @@ -0,0 +1,222 @@ +#include <common.h> + +#include <config.h> +#include <command.h> + +#include <nand.h> + +#ifdef YAFFS2_DEBUG +#define PRINTF(fmt,args...) printf (fmt ,##args) +#else +#define PRINTF(fmt,args...) +#endif + +extern void cmd_yaffs_start(int start); +extern void cmd_yaffs_size(int size); +extern void cmd_yaffs_mount(char *mp); +extern void cmd_yaffs_umount(char *mp); +extern void cmd_yaffs_read_file(char *fn); +extern void cmd_yaffs_write_file(char *fn,char bval,int sizeOfFile); +extern void cmd_yaffs_ls(const char *mountpt, int longlist); +extern void cmd_yaffs_mwrite_file(char *fn, char *addr, int size); +extern void cmd_yaffs_mread_file(char *fn, char *addr); +extern void cmd_yaffs_mkdir(const char *dir); +extern void cmd_yaffs_rmdir(const char *dir); +extern void cmd_yaffs_rm(const char *path); +extern void cmd_yaffs_mv(const char *oldPath, const char *newPath); + + +extern int yaffs_DumpDevStruct(const char *path); + + +int do_ymount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *mtpoint = argv[1]; + int start = (int)simple_strtoul(argv[2], NULL, 16); + int size = (int)simple_strtoul(argv[3], NULL, 16); + cmd_yaffs_start(start); + cmd_yaffs_size(size); + cmd_yaffs_mount(mtpoint); + + return(0); +} + +int do_yumount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *mtpoint = argv[1]; + cmd_yaffs_umount(mtpoint); + + return(0); +} + +int do_yls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *dirname = argv[argc-1]; + + cmd_yaffs_ls(dirname, (argc>2)?1:0); + + return(0); +} + +int do_yrd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *filename = argv[1]; + printf ("Reading file %s ", filename); + + cmd_yaffs_read_file(filename); + + printf ("done\n"); + return(0); +} + +int do_ywr (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *filename = argv[1]; + ulong value = simple_strtoul(argv[2], NULL, 16); + ulong numValues = simple_strtoul(argv[3], NULL, 16); + + printf ("Writing value (%x) %x times to %s... ", value, numValues, filename); + + cmd_yaffs_write_file(filename,value,numValues); + + printf ("done\n"); + return(0); +} + +int do_yrdm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *filename = argv[1]; + ulong addr = simple_strtoul(argv[2], NULL, 16); + + cmd_yaffs_mread_file(filename, (char *)addr); + + return(0); +} + +int do_ywrm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *filename = argv[1]; + ulong addr = simple_strtoul(argv[2], NULL, 16); + ulong size = simple_strtoul(argv[3], NULL, 16); + + cmd_yaffs_mwrite_file(filename, (char *)addr, size); + + return(0); +} + +int do_ymkdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *dirname = argv[1]; + + cmd_yaffs_mkdir(dirname); + + return(0); +} + +int do_yrmdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *dirname = argv[1]; + + cmd_yaffs_rmdir(dirname); + + return(0); +} + +int do_yrm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *path = argv[1]; + + cmd_yaffs_rm(path); + + return(0); +} + +int do_ymv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *oldPath = argv[1]; + char *newPath = argv[2]; + + cmd_yaffs_mv(newPath, oldPath); + + return(0); +} + +int do_ydump (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + char *dirname = argv[1]; + if (yaffs_DumpDevStruct(dirname) != 0) + printf("yaffs_DumpDevStruct returning error when dumping path: , %s\n", dirname); + return 0; +} + +U_BOOT_CMD( + ymount, 4, 0, do_ymount, + "mount yaffs", + "" +); + +U_BOOT_CMD( + yumount, 3, 0, do_yumount, + "unmount yaffs", + "" +); + +U_BOOT_CMD( + yls, 4, 0, do_yls, + "yaffs ls", + "[-l] name" +); + +U_BOOT_CMD( + yrd, 2, 0, do_yrd, + "read file from yaffs", + "filename" +); + +U_BOOT_CMD( + ywr, 4, 0, do_ywr, + "write file to yaffs", + "filename value num_vlues" +); + +U_BOOT_CMD( + yrdm, 3, 0, do_yrdm, + "read file to memory from yaffs", + "filename offset" +); + +U_BOOT_CMD( + ywrm, 4, 0, do_ywrm, + "write file from memory to yaffs", + "filename offset size" +); + +U_BOOT_CMD( + ymkdir, 2, 0, do_ymkdir, + "YAFFS mkdir", + "dirname" +); + +U_BOOT_CMD( + yrmdir, 2, 0, do_yrmdir, + "YAFFS rmdir", + "dirname" +); + +U_BOOT_CMD( + yrm, 2, 0, do_yrm, + "YAFFS rm", + "path" +); + +U_BOOT_CMD( + ymv, 4, 0, do_ymv, + "YAFFS mv", + "oldPath newPath" +); + +U_BOOT_CMD( + ydump, 2, 0, do_ydump, + "YAFFS device struct", + "dirname" +); |