thor: fix invalid larger device descriptor than requested
[profile/mobile/platform/kernel/u-boot-tm1.git] / common / cmd_yaffs2.c
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 int  cmd_yaffs_ls_chk(const char *dirfilename);
18 extern void cmd_yaffs_mwrite_file(char *fn, char *addr, int size);
19 extern void cmd_yaffs_mread_file(char *fn, char *addr);
20 extern void cmd_yaffs_mkdir(const char *dir);
21 extern void cmd_yaffs_rmdir(const char *dir);
22 extern void cmd_yaffs_rm(const char *path);
23 extern void cmd_yaffs_mv(const char *oldPath, const char *newPath);
24
25 extern int yaffs_DumpDevStruct(const char *path);
26
27
28 int do_ymount (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
29 {
30     char *mtpoint = argv[1];
31     cmd_yaffs_mount(mtpoint);
32
33     return(0);
34 }
35
36 int do_yumount (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
37 {
38     char *mtpoint = argv[1];
39     cmd_yaffs_umount(mtpoint);
40
41     return(0);
42 }
43
44 int do_yls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
45 {
46     char *dirname = argv[argc-1];
47
48     cmd_yaffs_ls(dirname, (argc>2)?1:0);
49
50     return(0);
51 }
52
53 int do_yls_chk (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
54 {
55     char *dirfilename = argv[2];
56         int ret = -1;
57         if (argc != 3) {
58                 printf("\ncommand error : yls_chk -l /runtimenv/runtimenv.bin\n");
59                 return(0);
60         }
61     ret = cmd_yaffs_ls_chk(dirfilename);
62     if (ret > -1)
63         printf("\nfile is here  file size = %d\n", ret);
64     else
65         printf("\nfile is not here\n");
66
67     return(0);
68 }
69
70 int do_yrd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
71 {
72     char *filename = argv[1];
73     printf ("Reading file %s ", filename);
74
75     cmd_yaffs_read_file(filename);
76
77     printf ("done\n");
78     return(0);
79 }
80
81 int do_ywr (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
82 {
83     char *filename = argv[1];
84     ulong value = simple_strtoul(argv[2], NULL, 16);
85     ulong numValues = simple_strtoul(argv[3], NULL, 16);
86
87     printf ("Writing value (%x) %x times to %s... ", value, numValues, filename);
88
89     cmd_yaffs_write_file(filename,value,numValues);
90
91     printf ("done\n");
92     return(0);
93 }
94
95 int do_yrdm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
96 {
97     char *filename = argv[1];
98     ulong addr = simple_strtoul(argv[2], NULL, 16);
99
100     cmd_yaffs_mread_file(filename, (char *)addr);
101
102     return(0);
103 }
104
105 int do_ywrm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
106 {
107     char *filename = argv[1];
108     ulong addr = simple_strtoul(argv[2], NULL, 16);
109     ulong size = simple_strtoul(argv[3], NULL, 16);
110
111     cmd_yaffs_mwrite_file(filename, (char *)addr, size);
112
113     return(0);
114 }
115
116 int do_ymkdir (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
117 {
118     char *dirname = argv[1];
119
120     cmd_yaffs_mkdir(dirname);
121
122     return(0);
123 }
124
125 int do_yrmdir (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
126 {
127     char *dirname = argv[1];
128
129     cmd_yaffs_rmdir(dirname);
130
131     return(0);
132 }
133
134 int do_yrm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
135 {
136     char *path = argv[1];
137
138     cmd_yaffs_rm(path);
139
140     return(0);
141 }
142
143 int do_ymv (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
144 {
145     char *oldPath = argv[1];
146     char *newPath = argv[2];
147
148     cmd_yaffs_mv(newPath, oldPath);
149
150     return(0);
151 }
152
153 int do_ydump (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
154 {
155     char *dirname = argv[1];
156     if (yaffs_DumpDevStruct(dirname) != 0)
157         printf("yaffs_DumpDevStruct returning error when dumping path: , %s\n", dirname);
158     return 0;
159 }
160
161 U_BOOT_CMD(
162     ymount, 3,  0,  do_ymount,
163     "mount yaffs",
164     ""
165 );
166
167 U_BOOT_CMD(
168     yumount, 3,  0,  do_yumount,
169     "unmount yaffs",
170     ""
171 );
172
173 U_BOOT_CMD(
174     yls,    4,  0,  do_yls,
175     "yaffs ls",
176     "[-l] name"
177 );
178
179 U_BOOT_CMD(
180     yls_chk,    4,  0,  do_yls_chk,
181     "yaffs check file in directory",
182     "[-l] dirfilename"
183 );
184
185 U_BOOT_CMD(
186     yrd,    2,  0,  do_yrd,
187     "read file from yaffs",
188     "filename"
189 );
190
191 U_BOOT_CMD(
192     ywr,    4,  0,  do_ywr,
193     "write file to yaffs",
194     "filename value num_vlues"
195 );
196
197 U_BOOT_CMD(
198     yrdm,   3,  0,  do_yrdm,
199     "read file to memory from yaffs",
200     "filename offset"
201 );
202
203 U_BOOT_CMD(
204     ywrm,   4,  0,  do_ywrm,
205     "write file from memory to yaffs",
206     "filename offset size"
207 );
208
209 U_BOOT_CMD(
210     ymkdir, 2,  0,  do_ymkdir,
211     "YAFFS mkdir",
212     "dirname"
213 );
214
215 U_BOOT_CMD(
216     yrmdir, 2,  0,  do_yrmdir,
217     "YAFFS rmdir",
218     "dirname"
219 );
220
221 U_BOOT_CMD(
222     yrm,    2,  0,  do_yrm,
223     "YAFFS rm",
224     "path"
225 );
226
227 U_BOOT_CMD(
228     ymv,    4,  0,  do_ymv,
229     "YAFFS mv",
230     "oldPath newPath"
231 );
232
233 U_BOOT_CMD(
234     ydump,  2,  0,  do_ydump,
235     "YAFFS device struct",
236     "dirname"
237 );