]> Git Repo - u-boot.git/blob - cmd/yaffs2.c
Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"
[u-boot.git] / cmd / yaffs2.c
1 /* Yaffs commands.
2  * Modified by Charles Manning by adding ydevconfig command.
3  *
4  * Use ydevconfig to configure a mountpoint before use.
5  * For example:
6  *  # Configure mountpt xxx using nand device 0 using blocks 100-500
7  *  ydevconfig xxx 0 100 500
8  *  # Mount it
9  *  ymount xxx
10  *  # yls, yrdm etc
11  *  yls -l xxx
12  *  yrdm xxx/boot-image 82000000
13  *  ...
14  */
15
16
17 #include <config.h>
18 #include <command.h>
19
20 #ifdef YAFFS2_DEBUG
21 #define PRINTF(fmt, args...) printf(fmt, ##args)
22 #else
23 #define PRINTF(fmt, args...) do { } while (0)
24 #endif
25
26 extern void cmd_yaffs_dev_ls(void);
27 extern void cmd_yaffs_tracemask(unsigned set, unsigned mask);
28 extern void cmd_yaffs_devconfig(char *mp, int flash_dev,
29                                 int start_block, int end_block);
30 extern void cmd_yaffs_mount(char *mp);
31 extern void cmd_yaffs_umount(char *mp);
32 extern void cmd_yaffs_read_file(char *fn);
33 extern void cmd_yaffs_write_file(char *fn, char bval, int sizeOfFile);
34 extern void cmd_yaffs_ls(const char *mountpt, int longlist);
35 extern void cmd_yaffs_mwrite_file(char *fn, char *addr, int size);
36 extern void cmd_yaffs_mread_file(char *fn, char *addr);
37 extern void cmd_yaffs_mkdir(const char *dir);
38 extern void cmd_yaffs_rmdir(const char *dir);
39 extern void cmd_yaffs_rm(const char *path);
40 extern void cmd_yaffs_mv(const char *oldPath, const char *newPath);
41
42 extern int yaffs_dump_dev(const char *path);
43
44 /* ytrace - show/set yaffs trace mask */
45 int do_ytrace(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
46 {
47         if (argc > 1)
48                 cmd_yaffs_tracemask(1, simple_strtol(argv[1], NULL, 16));
49         else
50                 cmd_yaffs_tracemask(0, 0);
51
52         return 0;
53 }
54
55 /* ydevls - lists yaffs mount points. */
56 int do_ydevls(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
57 {
58         cmd_yaffs_dev_ls();
59
60         return 0;
61 }
62
63 /* ydevconfig mount_pt mtd_dev_num start_block end_block */
64 int do_ydevconfig(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
65 {
66         char *mtpoint;
67         int mtd_dev;
68         int start_block;
69         int end_block;
70
71         if (argc != 5) {
72                 printf
73                     ("Bad arguments: ydevconfig mount_pt mtd_dev start_block end_block\n");
74                 return -1;
75         }
76
77         mtpoint = argv[1];
78         mtd_dev = simple_strtol(argv[2], NULL, 16);
79         start_block = simple_strtol(argv[3], NULL, 16);
80         end_block = simple_strtol(argv[4], NULL, 16);
81
82         cmd_yaffs_devconfig(mtpoint, mtd_dev, start_block, end_block);
83
84         return 0;
85 }
86
87 int do_ymount(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
88 {
89         char *mtpoint;
90
91         if (argc != 2) {
92                 printf("Bad arguments: ymount mount_pt\n");
93                 return -1;
94         }
95
96         mtpoint = argv[1];
97         printf("Mounting yaffs2 mount point %s\n", mtpoint);
98
99         cmd_yaffs_mount(mtpoint);
100
101         return 0;
102 }
103
104 int do_yumount(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
105 {
106         char *mtpoint;
107
108         if (argc != 2) {
109                 printf("Bad arguments: yumount mount_pt\n");
110                 return -1;
111         }
112
113         mtpoint = argv[1];
114         printf("Unmounting yaffs2 mount point %s\n", mtpoint);
115         cmd_yaffs_umount(mtpoint);
116
117         return 0;
118 }
119
120 int do_yls(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
121 {
122         char *dirname;
123
124         if (argc < 2 || argc > 3 || (argc == 3 && strcmp(argv[1], "-l"))) {
125                 printf("Bad arguments: yls [-l] dir\n");
126                 return -1;
127         }
128
129         dirname = argv[argc - 1];
130
131         cmd_yaffs_ls(dirname, (argc > 2) ? 1 : 0);
132
133         return 0;
134 }
135
136 int do_yrd(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
137 {
138         char *filename;
139
140         if (argc != 2) {
141                 printf("Bad arguments: yrd file_name\n");
142                 return -1;
143         }
144
145         filename = argv[1];
146
147         printf("Reading file %s ", filename);
148
149         cmd_yaffs_read_file(filename);
150
151         printf("done\n");
152         return 0;
153 }
154
155 int do_ywr(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
156 {
157         char *filename;
158         ulong value;
159         ulong numValues;
160
161         if (argc != 4) {
162                 printf("Bad arguments: ywr file_name value n_values\n");
163                 return -1;
164         }
165
166         filename = argv[1];
167         value = hextoul(argv[2], NULL);
168         numValues = hextoul(argv[3], NULL);
169
170         printf("Writing value (%lx) %lx times to %s... ", value, numValues,
171                filename);
172
173         cmd_yaffs_write_file(filename, value, numValues);
174
175         printf("done\n");
176         return 0;
177 }
178
179 int do_yrdm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
180 {
181         char *filename;
182         ulong addr;
183
184         if (argc != 3) {
185                 printf("Bad arguments: yrdm file_name addr\n");
186                 return -1;
187         }
188
189         filename = argv[1];
190         addr = hextoul(argv[2], NULL);
191
192         cmd_yaffs_mread_file(filename, (char *)addr);
193
194         return 0;
195 }
196
197 int do_ywrm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
198 {
199         char *filename;
200         ulong addr;
201         ulong size;
202
203         if (argc != 4) {
204                 printf("Bad arguments: ywrm file_name addr size\n");
205                 return -1;
206         }
207
208         filename = argv[1];
209         addr = hextoul(argv[2], NULL);
210         size = hextoul(argv[3], NULL);
211
212         cmd_yaffs_mwrite_file(filename, (char *)addr, size);
213
214         return 0;
215 }
216
217 int do_ymkdir(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
218 {
219         char *dirname;
220
221         if (argc != 2) {
222                 printf("Bad arguments: ymkdir dir_name\n");
223                 return -1;
224         }
225
226         dirname = argv[1];
227         cmd_yaffs_mkdir(dirname);
228
229         return 0;
230 }
231
232 int do_yrmdir(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
233 {
234         char *dirname;
235
236         if (argc != 2) {
237                 printf("Bad arguments: yrmdir dir_name\n");
238                 return -1;
239         }
240
241         dirname = argv[1];
242         cmd_yaffs_rmdir(dirname);
243
244         return 0;
245 }
246
247 int do_yrm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
248 {
249         char *name;
250
251         if (argc != 2) {
252                 printf("Bad arguments: yrm name\n");
253                 return -1;
254         }
255
256         name = argv[1];
257
258         cmd_yaffs_rm(name);
259
260         return 0;
261 }
262
263 int do_ymv(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
264 {
265         char *oldPath;
266         char *newPath;
267
268         if (argc != 3) {
269                 printf("Bad arguments: ymv old_path new_path\n");
270                 return -1;
271         }
272
273         oldPath = argv[1];
274         newPath = argv[2];
275
276         cmd_yaffs_mv(newPath, oldPath);
277
278         return 0;
279 }
280
281 U_BOOT_CMD(ytrace, 2, 0, do_ytrace,
282            "show/set yaffs trace mask",
283            "[new_mask]  show/set yaffs trace mask");
284
285 U_BOOT_CMD(ydevls, 1, 0, do_ydevls,
286            "list yaffs mount points", "list yaffs mount points");
287
288 U_BOOT_CMD(ydevconfig, 5, 0, do_ydevconfig,
289            "configure yaffs mount point",
290            "mtpoint mtd_id start_block end_block   configures a yaffs2 mount point");
291
292 U_BOOT_CMD(ymount, 2, 0, do_ymount,
293            "mount yaffs", "mtpoint  mounts a yaffs2 mount point");
294
295 U_BOOT_CMD(yumount, 2, 0, do_yumount,
296            "unmount yaffs", "mtpoint  unmounts a yaffs2 mount point");
297
298 U_BOOT_CMD(yls, 3, 0, do_yls, "yaffs ls", "[-l] dirname");
299
300 U_BOOT_CMD(yrd, 2, 0, do_yrd,
301            "read file from yaffs", "path   read file from yaffs");
302
303 U_BOOT_CMD(ywr, 4, 0, do_ywr,
304            "write file to yaffs",
305            "filename value num_vlues   write values to yaffs file");
306
307 U_BOOT_CMD(yrdm, 3, 0, do_yrdm,
308            "read file to memory from yaffs",
309            "filename offset    reads yaffs file into memory");
310
311 U_BOOT_CMD(ywrm, 4, 0, do_ywrm,
312            "write file from memory to yaffs",
313            "filename offset size  writes memory to yaffs file");
314
315 U_BOOT_CMD(ymkdir, 2, 0, do_ymkdir,
316            "YAFFS mkdir", "dir    create a yaffs directory");
317
318 U_BOOT_CMD(yrmdir, 2, 0, do_yrmdir,
319            "YAFFS rmdir", "dirname   removes a yaffs directory");
320
321 U_BOOT_CMD(yrm, 2, 0, do_yrm, "YAFFS rm", "path   removes a yaffs file");
322
323 U_BOOT_CMD(ymv, 4, 0, do_ymv,
324            "YAFFS mv",
325            "old_path new_path   moves/rename files within a yaffs mount point");
This page took 0.048228 seconds and 4 git commands to generate.