Merge git://www.denx.de/git/u-boot
[platform/kernel/u-boot.git] / common / cmd_jffs2.c
index 513a226..3e6061a 100644 (file)
@@ -85,7 +85,7 @@
  */
 
 /*
- * JFFS2/CRAMFS support
+ * JFFS2/CRAMFS/ROMFS support
  */
 #include <common.h>
 #include <command.h>
@@ -175,6 +175,11 @@ extern int cramfs_load (char *loadoffset, struct part_info *info, char *filename
 extern int cramfs_ls (struct part_info *info, char *filename);
 extern int cramfs_info (struct part_info *info);
 
+extern int romfs_check (struct part_info *info);
+extern int romfs_load (char *loadoffset, struct part_info *info, char *filename);
+extern int romfs_ls (struct part_info *info, char *filename);
+extern int romfs_info (struct part_info *info);
+
 static struct part_info* jffs2_part_info(struct mtd_device *dev, unsigned int part_num);
 
 /* command line only routines */
@@ -1874,14 +1879,22 @@ int do_jffs2_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
        if ((part = jffs2_part_info(current_dev, current_partnum))){
 
-               /* check partition type for cramfs */
-               fsname = (cramfs_check(part) ? "CRAMFS" : "JFFS2");
+               /* check partition type for JFFS2, cramfs, romfs */
+               if (cramfs_check(part)) {
+                       fsname = "CRAMFS";
+               } else if (romfs_check(part)) {
+                       fsname = "ROMFS";
+               } else {
+                       fsname = "JFFS2";
+               }
                printf("### %s loading '%s' to 0x%lx\n", fsname, filename, offset);
 
                if (cramfs_check(part)) {
                        size = cramfs_load ((char *) offset, part, filename);
+               } else if (romfs_check(part)){
+                       size = romfs_load ((char *) offset, part, filename);
                } else {
-                       /* if this is not cramfs assume jffs2 */
+                       /* if this is not cramfs or romfs assume jffs2 */
                        size = jffs2_1pass_load((char *)offset, part, filename);
                }
 
@@ -1928,8 +1941,10 @@ int do_jffs2_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                /* check partition type for cramfs */
                if (cramfs_check(part)) {
                        ret = cramfs_ls (part, filename);
+               } else if (romfs_check(part)) {
+                       ret = romfs_ls (part, filename);
                } else {
-                       /* if this is not cramfs assume jffs2 */
+                       /* if this is not cramfs or romfs assume jffs2 */
                        ret = jffs2_1pass_ls(part, filename);
                }
 
@@ -1951,7 +1966,6 @@ int do_jffs2_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 int do_jffs2_fsinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
        struct part_info *part;
-       char *fsname;
        int ret;
 
        /* make sure we are in sync with env variables */
@@ -1961,13 +1975,17 @@ int do_jffs2_fsinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        if ((part = jffs2_part_info(current_dev, current_partnum))){
 
                /* check partition type for cramfs */
-               fsname = (cramfs_check(part) ? "CRAMFS" : "JFFS2");
-               printf("### filesystem type is %s\n", fsname);
+               puts("### filesystem type is ");
 
                if (cramfs_check(part)) {
+                       puts("CRAMFS\n");
                        ret = cramfs_info (part);
+               } else if (romfs_check(part)) {
+                       puts("ROMFS\n");
+                       ret = romfs_info (part);
                } else {
-                       /* if this is not cramfs assume jffs2 */
+                       /* if this is not cramfs or romfs assume jffs2 */
+                       puts("JFFS2\n");
                        ret = jffs2_1pass_info(part);
                }