3 * Stefan Roese, DENX Software Engineering, sr@denx.de.
5 * SPDX-License-Identifier: GPL-2.0+
10 * UBIFS command support
19 #include "../fs/ubifs/ubifs.h"
21 static int ubifs_initialized;
22 static int ubifs_mounted;
24 extern struct super_block *ubifs_sb;
28 int ubifs_mount(char *vol_name);
29 void ubifs_umount(struct ubifs_info *c);
30 int ubifs_ls(char *dir_name);
31 int ubifs_load(char *filename, u32 addr, u32 size);
33 int do_ubifs_mount(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
42 debug("Using volume %s\n", vol_name);
44 if (ubifs_initialized == 0) {
46 ubifs_initialized = 1;
49 ret = ubifs_mount(vol_name);
58 int ubifs_is_mounted(void)
63 void cmd_ubifs_umount(void)
67 printf("Unmounting UBIFS volume %s!\n",
68 ((struct ubifs_info *)(ubifs_sb->s_fs_info))->vi.name);
69 ubifs_umount(ubifs_sb->s_fs_info);
74 ubifs_initialized = 0;
77 int do_ubifs_umount(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
82 if (ubifs_initialized == 0) {
83 printf("No UBIFS volume mounted!\n");
92 int do_ubifs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
98 printf("UBIFS not mounted, use ubifsmount to mount volume first!\n");
104 debug("Using filename %s\n", filename);
106 ret = ubifs_ls(filename);
108 printf("%s not found!\n", filename);
113 int do_ubifs_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
121 if (!ubifs_mounted) {
122 printf("UBIFS not mounted, use ubifs mount to mount volume first!\n");
127 return CMD_RET_USAGE;
129 addr = simple_strtoul(argv[1], &endp, 16);
131 return CMD_RET_USAGE;
136 size = simple_strtoul(argv[3], &endp, 16);
138 return CMD_RET_USAGE;
140 debug("Loading file '%s' to address 0x%08x (size %d)\n", filename, addr, size);
142 ret = ubifs_load(filename, addr, size);
144 printf("%s not found!\n", filename);
150 ubifsmount, 2, 0, do_ubifs_mount,
151 "mount UBIFS volume",
153 " - mount 'volume-name' volume"
157 ubifsumount, 1, 0, do_ubifs_umount,
158 "unmount UBIFS volume",
159 " - unmount current volume"
163 ubifsls, 2, 0, do_ubifs_ls,
164 "list files in a directory",
166 " - list files in a 'directory' (default '/')"
170 ubifsload, 4, 0, do_ubifs_load,
171 "load file from an UBIFS filesystem",
172 "<addr> <filename> [bytes]\n"
173 " - load file 'filename' to address 'addr'"