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