1 #include <common.h>
2
3 #include <config.h>
4 #include <command.h>
5
6 #ifdef YAFFS2_DEBUG
7 #define PRINTF(fmt,args...) printf (fmt ,##args)
8 #else
9 #define PRINTF(fmt,args...)
10 #endif
11
12 extern void cmd_yaffs_mount(char *mp);
13 extern void cmd_yaffs_umount(char *mp);
14 extern void cmd_yaffs_read_file(char *fn);
15 extern void cmd_yaffs_write_file(char *fn,char bval,int sizeOfFile);
16 extern void cmd_yaffs_ls(const char *mountpt, int longlist);
17 extern void cmd_yaffs_mwrite_file(char *fn, char *addr, int size);
18 extern void cmd_yaffs_mread_file(char *fn, char *addr);
19 extern void cmd_yaffs_mkdir(const char *dir);
20 extern void cmd_yaffs_rmdir(const char *dir);
21 extern void cmd_yaffs_rm(const char *path);
22 extern void cmd_yaffs_mv(const char *oldPath, const char *newPath);
23
24 extern int yaffs_DumpDevStruct(const char *path);
25
26
do_ymount(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])27 int do_ymount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
28 {
29 char *mtpoint = argv[1];
30 cmd_yaffs_mount(mtpoint);
31
32 return(0);
33 }
34
do_yumount(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])35 int do_yumount (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
36 {
37 char *mtpoint = argv[1];
38 cmd_yaffs_umount(mtpoint);
39
40 return(0);
41 }
42
do_yls(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])43 int do_yls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
44 {
45 char *dirname = argv[argc-1];
46
47 cmd_yaffs_ls(dirname, (argc>2)?1:0);
48
49 return(0);
50 }
51
do_yrd(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])52 int do_yrd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
53 {
54 char *filename = argv[1];
55 printf ("Reading file %s ", filename);
56
57 cmd_yaffs_read_file(filename);
58
59 printf ("done\n");
60 return(0);
61 }
62
do_ywr(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])63 int do_ywr (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
64 {
65 char *filename = argv[1];
66 ulong value = simple_strtoul(argv[2], NULL, 16);
67 ulong numValues = simple_strtoul(argv[3], NULL, 16);
68
69 printf ("Writing value (%x) %x times to %s... ", value, numValues, filename);
70
71 cmd_yaffs_write_file(filename,value,numValues);
72
73 printf ("done\n");
74 return(0);
75 }
76
do_yrdm(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])77 int do_yrdm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
78 {
79 char *filename = argv[1];
80 ulong addr = simple_strtoul(argv[2], NULL, 16);
81
82 cmd_yaffs_mread_file(filename, (char *)addr);
83
84 return(0);
85 }
86
do_ywrm(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])87 int do_ywrm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
88 {
89 char *filename = argv[1];
90 ulong addr = simple_strtoul(argv[2], NULL, 16);
91 ulong size = simple_strtoul(argv[3], NULL, 16);
92
93 cmd_yaffs_mwrite_file(filename, (char *)addr, size);
94
95 return(0);
96 }
97
do_ymkdir(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])98 int do_ymkdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
99 {
100 char *dirname = argv[1];
101
102 cmd_yaffs_mkdir(dirname);
103
104 return(0);
105 }
106
do_yrmdir(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])107 int do_yrmdir (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
108 {
109 char *dirname = argv[1];
110
111 cmd_yaffs_rmdir(dirname);
112
113 return(0);
114 }
115
do_yrm(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])116 int do_yrm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
117 {
118 char *path = argv[1];
119
120 cmd_yaffs_rm(path);
121
122 return(0);
123 }
124
do_ymv(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])125 int do_ymv (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
126 {
127 char *oldPath = argv[1];
128 char *newPath = argv[2];
129
130 cmd_yaffs_mv(newPath, oldPath);
131
132 return(0);
133 }
134
do_ydump(cmd_tbl_t * cmdtp,int flag,int argc,char * argv[])135 int do_ydump (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
136 {
137 char *dirname = argv[1];
138 if (yaffs_DumpDevStruct(dirname) != 0)
139 printf("yaffs_DumpDevStruct returning error when dumping path: , %s\n", dirname);
140 return 0;
141 }
142
143 U_BOOT_CMD(
144 ymount, 3, 0, do_ymount,
145 "mount yaffs",
146 ""
147 );
148
149 U_BOOT_CMD(
150 yumount, 3, 0, do_yumount,
151 "unmount yaffs",
152 ""
153 );
154
155 U_BOOT_CMD(
156 yls, 4, 0, do_yls,
157 "yaffs ls",
158 "[-l] name"
159 );
160
161 U_BOOT_CMD(
162 yrd, 2, 0, do_yrd,
163 "read file from yaffs",
164 "filename"
165 );
166
167 U_BOOT_CMD(
168 ywr, 4, 0, do_ywr,
169 "write file to yaffs",
170 "filename value num_vlues"
171 );
172
173 U_BOOT_CMD(
174 yrdm, 3, 0, do_yrdm,
175 "read file to memory from yaffs",
176 "filename offset"
177 );
178
179 U_BOOT_CMD(
180 ywrm, 4, 0, do_ywrm,
181 "write file from memory to yaffs",
182 "filename offset size"
183 );
184
185 U_BOOT_CMD(
186 ymkdir, 2, 0, do_ymkdir,
187 "YAFFS mkdir",
188 "dirname"
189 );
190
191 U_BOOT_CMD(
192 yrmdir, 2, 0, do_yrmdir,
193 "YAFFS rmdir",
194 "dirname"
195 );
196
197 U_BOOT_CMD(
198 yrm, 2, 0, do_yrm,
199 "YAFFS rm",
200 "path"
201 );
202
203 U_BOOT_CMD(
204 ymv, 4, 0, do_ymv,
205 "YAFFS mv",
206 "oldPath newPath"
207 );
208
209 U_BOOT_CMD(
210 ydump, 2, 0, do_ydump,
211 "YAFFS device struct",
212 "dirname"
213 );
214