2 * Modified by Charles Manning by adding ydevconfig command.
4 * Use ydevconfig to configure a mountpoint before use.
6 * # Configure mountpt xxx using nand device 0 using blocks 100-500
7 * ydevconfig xxx 0 100 500
12 * yrdm xxx/boot-image 82000000
20 #include "../fs/yaffs2/yaffs_uboot_glue.h"
23 #define PRINTF(fmt, args...) printf(fmt, ##args)
25 #define PRINTF(fmt, args...) do { } while (0)
29 /* ytrace - show/set yaffs trace mask */
30 int do_ytrace(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
33 return cmd_yaffs_tracemask(1, simple_strtol(argv[1], NULL, 16));
35 return cmd_yaffs_tracemask(0, 0);
38 /* ydevls - lists yaffs mount points. */
39 int do_ydevls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
41 return cmd_yaffs_dev_ls();
44 /* ydevconfig mount_pt mtd_dev_num start_block end_block */
45 int do_ydevconfig(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
54 ("Bad arguments: ydevconfig mount_pt mtd_dev start_block end_block\n");
59 mtd_dev = simple_strtol(argv[2], NULL, 16);
60 start_block = simple_strtol(argv[3], NULL, 16);
61 end_block = simple_strtol(argv[4], NULL, 16);
63 return cmd_yaffs_devconfig(mtpoint, mtd_dev, start_block, end_block);
66 int do_ymount(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
71 printf("Bad arguments: ymount mount_pt\n");
76 printf("Mounting yaffs2 mount point %s\n", mtpoint);
78 return cmd_yaffs_mount(mtpoint);
81 int do_yumount(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
86 printf("Bad arguments: yumount mount_pt\n");
91 printf("Unmounting yaffs2 mount point %s\n", mtpoint);
92 return cmd_yaffs_umount(mtpoint);
95 int do_yls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
99 if (argc < 2 || argc > 3 || (argc == 3 && strcmp(argv[1], "-l"))) {
100 printf("Bad arguments: yls [-l] dir\n");
104 dirname = argv[argc - 1];
106 return cmd_yaffs_ls(dirname, (argc > 2) ? 1 : 0);
109 static int ycheck_option_valid(const char *str)
111 return strcmp(str,"DIR") == 0 || strcmp(str,"REG") == 0;
114 int do_ycheck(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
117 const char *str = "ANY";
119 if (argc < 2 || argc > 3 ||
120 (argc == 3 && ! ycheck_option_valid(argv[2]))) {
121 printf("Bad arguments: ycheck name [DIR|REG]");
129 return cmd_yaffs_check(dirname, str);
132 int do_yrd(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
137 printf("Bad arguments: yrd file_name\n");
143 printf("Reading file %s ", filename);
145 return cmd_yaffs_read_file(filename);
148 int do_ywr(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
155 printf("Bad arguments: ywr file_name value n_values\n");
160 value = simple_strtoul(argv[2], NULL, 16);
161 numValues = simple_strtoul(argv[3], NULL, 16);
163 printf("Writing value (%lx) %lx times to %s... ", value, numValues,
166 return cmd_yaffs_write_file(filename, value, numValues);
169 int do_yrdm(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
175 printf("Bad arguments: yrdm file_name addr\n");
180 addr = simple_strtoul(argv[2], NULL, 16);
182 return cmd_yaffs_mread_file(filename, (char *)addr);
185 int do_ywrm(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
192 printf("Bad arguments: ywrm file_name addr size\n");
197 addr = simple_strtoul(argv[2], NULL, 16);
198 size = simple_strtoul(argv[3], NULL, 16);
200 return cmd_yaffs_mwrite_file(filename, (char *)addr, size);
203 int do_ymkdir(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
208 printf("Bad arguments: ymkdir dir_name\n");
213 return cmd_yaffs_mkdir(dirname);
216 int do_yrmdir(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
221 printf("Bad arguments: yrmdir dir_name\n");
226 return cmd_yaffs_rmdir(dirname);
229 int do_yrm(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
234 printf("Bad arguments: yrm name\n");
240 return cmd_yaffs_rm(name);
243 int do_ymv(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
249 printf("Bad arguments: ymv old_path new_path\n");
256 return cmd_yaffs_mv(newPath, oldPath);
259 U_BOOT_CMD(ytrace, 2, 0, do_ytrace,
260 "show/set yaffs trace mask",
261 "ytrace [new_mask] show/set yaffs trace mask");
263 U_BOOT_CMD(ydevls, 1, 0, do_ydevls,
264 "list yaffs mount points", "list yaffs mount points");
266 U_BOOT_CMD(ydevconfig, 5, 0, do_ydevconfig,
267 "configure yaffs mount point",
268 "ydevconfig mtpoint mtd_id start_block end_block configures a yaffs2 mount point");
270 U_BOOT_CMD(ymount, 2, 0, do_ymount,
271 "mount yaffs", "ymount mtpoint mounts a yaffs2 mount point");
273 U_BOOT_CMD(yumount, 2, 0, do_yumount,
274 "unmount yaffs", "yunmount mtpoint unmounts a yaffs2 mount point");
276 U_BOOT_CMD(yls, 3, 0, do_yls, "yaffs ls", "yls [-l] dirname");
278 U_BOOT_CMD(ycheck, 3, 0, do_ycheck,
279 "ycheck name [DIR|REG]", "checks if the named object exists");
281 U_BOOT_CMD(yrd, 2, 0, do_yrd,
282 "read file from yaffs", "yrd path read file from yaffs");
284 U_BOOT_CMD(ywr, 4, 0, do_ywr,
285 "write file to yaffs",
286 "ywr filename value num_vlues write values to yaffs file");
288 U_BOOT_CMD(yrdm, 3, 0, do_yrdm,
289 "read file to memory from yaffs",
290 "yrdm filename offset reads yaffs file into memory");
292 U_BOOT_CMD(ywrm, 4, 0, do_ywrm,
293 "write file from memory to yaffs",
294 "ywrm filename offset size writes memory to yaffs file");
296 U_BOOT_CMD(ymkdir, 2, 0, do_ymkdir,
297 "YAFFS mkdir", "ymkdir dir create a yaffs directory");
299 U_BOOT_CMD(yrmdir, 2, 0, do_yrmdir,
300 "YAFFS rmdir", "yrmdir dirname removes a yaffs directory");
302 U_BOOT_CMD(yrm, 2, 0, do_yrm, "YAFFS rm", "yrm path removes a yaffs file");
304 U_BOOT_CMD(ymv, 4, 0, do_ymv,
306 "ymv old_path new_path moves/rename files within a yaffs mount point");