]> git.sur5r.net Git - u-boot/commitdiff
Merge branch 'master' of /home/wd/git/u-boot/custodians
authorWolfgang Denk <wd@denx.de>
Fri, 21 Aug 2009 22:24:54 +0000 (00:24 +0200)
committerWolfgang Denk <wd@denx.de>
Fri, 21 Aug 2009 22:24:54 +0000 (00:24 +0200)
board/qemu-mips/README
board/trab/Makefile
board/trab/u-boot.lds
drivers/mtd/spi/eeprom_m95xxx.c
fs/jffs2/jffs2_1pass.c
include/configs/rd6281a.h

index 4c1f8edc9b680337cb9e948151055afaec2449a2..565241b5878396ca33070b570408f5f5f4a7a2d5 100644 (file)
@@ -2,7 +2,7 @@ By Vlad Lungu vlad.lungu@windriver.com 2007-Oct-01
 ----------------------------------------
 Qemu is a full system emulator. See
 
-http://fabrice.bellard.free.fr/qemu
+http://www.nongnu.org/qemu/
 
 Limitations & comments
 ----------------------
index 2afad888d1dabeb243b594661e7740ad553ac764..27d75f3a006734a813a4dc3aab3bfce26895340d 100644 (file)
@@ -49,7 +49,6 @@ $(obj)trab_fkt.srec:  $(OBJS_FKT) $(LIB)
        $(LD) -g -Ttext $(LOAD_ADDR) -o $(<:.o=) -e trab_fkt $^ $(LIB) \
                -L$(obj)../../examples/standalone -lstubs \
                -L$(obj)../../lib_generic -lgeneric \
-               $(obj)../../lib_arm/div0.o \
                $(PLATFORM_LIBS)
        $(OBJCOPY) -O srec $(<:.o=) $@
 
index d8bcfa40b2ada82e2966ec4c42bcc9f643d64947..c3d5c49a9b2b1a1e2d5c2de3255acc16db39973b 100644 (file)
@@ -33,7 +33,6 @@ SECTIONS
        .text      :
        {
          cpu/arm920t/start.o   (.text)
-         lib_arm/_umodsi3.o    (.text)
          lib_generic/zlib.o    (.text)
          lib_generic/crc32.o   (.text)
          lib_generic/string.o  (.text)
index 59f80e39ff22e3d97415c7f915a7022e8fcb689e..0148d005e9dd5f334e24e0b1a7966d4fd9b61d8a 100644 (file)
@@ -71,7 +71,6 @@ ssize_t spi_read (uchar *addr, int alen, uchar *buffer, int len)
 ssize_t spi_write (uchar *addr, int alen, uchar *buffer, int len)
 {
        struct spi_slave *slave;
-       int i;
        char buf[3];
 
        slave = spi_setup_slave(CONFIG_DEFAULT_SPI_BUS, 1, 1000000,
index b61a6f9626567a93dc9f986ce29486c3c72b5a06..1923ed909a53db3deee554eedba651cf63748a4c 100644 (file)
 #include <jffs2/jffs2.h>
 #include <jffs2/jffs2_1pass.h>
 #include <linux/mtd/compat.h>
+#include <asm/errno.h>
 
 #include "jffs2_private.h"
 
@@ -1200,8 +1201,30 @@ jffs2_1pass_rescan_needed(struct part_info *part)
        return 0;
 }
 
+#ifdef CONFIG_JFFS2_SUMMARY
+static u32 sum_get_unaligned32(u32 *ptr)
+{
+       u32 val;
+       u8 *p = (u8 *)ptr;
+
+       val = *p | (*(p + 1) << 8) | (*(p + 2) << 16) | (*(p + 3) << 24);
+
+       return __le32_to_cpu(val);
+}
+
+static u16 sum_get_unaligned16(u16 *ptr)
+{
+       u16 val;
+       u8 *p = (u8 *)ptr;
+
+       val = *p | (*(p + 1) << 8);
+
+       return __le16_to_cpu(val);
+}
+
 #define dbg_summary(...) do {} while (0);
-/* Process the stored summary information - helper function for
+/*
+ * Process the stored summary information - helper function for
  * jffs2_sum_scan_sumnode()
  */
 
@@ -1210,54 +1233,64 @@ static int jffs2_sum_process_sum_data(struct part_info *part, uint32_t offset,
                                struct b_lists *pL)
 {
        void *sp;
-       int i;
+       int i, pass;
+       void *ret;
 
-       sp = summary->sum;
+       for (pass = 0; pass < 2; pass++) {
+               sp = summary->sum;
 
-       for (i = 0; i < summary->sum_num; i++) {
-               dbg_summary("processing summary index %d\n", i);
+               for (i = 0; i < summary->sum_num; i++) {
+                       struct jffs2_sum_unknown_flash *spu = sp;
+                       dbg_summary("processing summary index %d\n", i);
 
-               switch (((struct jffs2_sum_unknown_flash *)sp)->nodetype) {
-                       case JFFS2_NODETYPE_INODE: {
+                       switch (sum_get_unaligned16(&spu->nodetype)) {
+                               case JFFS2_NODETYPE_INODE: {
                                struct jffs2_sum_inode_flash *spi;
-                               spi = sp;
-
-                               dbg_summary("Inode at 0x%08x-0x%08x\n",
-                                           offset + spi->offset,
-                                           offset + spi->offset + spi->totlen);
+                                       if (pass) {
+                                               spi = sp;
 
-                               if (insert_node(&pL->frag, (u32) part->offset +
-                                               offset + spi->offset) == NULL)
-                                       return -1;
+                                               ret = insert_node(&pL->frag,
+                                                       (u32)part->offset +
+                                                       offset +
+                                                       sum_get_unaligned32(
+                                                               &spi->offset));
+                                               if (ret == NULL)
+                                                       return -1;
+                                       }
 
-                               sp += JFFS2_SUMMARY_INODE_SIZE;
+                                       sp += JFFS2_SUMMARY_INODE_SIZE;
 
-                               break;
-                       }
-
-                       case JFFS2_NODETYPE_DIRENT: {
-                               struct jffs2_sum_dirent_flash *spd;
-                               spd = sp;
-
-                               dbg_summary("Dirent at 0x%08x-0x%08x\n",
-                                           offset + spd->offset,
-                                           offset + spd->offset + spd->totlen);
-
-                               if (insert_node(&pL->dir, (u32) part->offset +
-                                               offset + spd->offset) == NULL)
-                                       return -1;
-
-                               sp += JFFS2_SUMMARY_DIRENT_SIZE(spd->nsize);
+                                       break;
+                               }
+                               case JFFS2_NODETYPE_DIRENT: {
+                                       struct jffs2_sum_dirent_flash *spd;
+                                       spd = sp;
+                                       if (pass) {
+                                               ret = insert_node(&pL->dir,
+                                                       (u32) part->offset +
+                                                       offset +
+                                                       sum_get_unaligned32(
+                                                               &spd->offset));
+                                               if (ret == NULL)
+                                                       return -1;
+                                       }
+
+                                       sp += JFFS2_SUMMARY_DIRENT_SIZE(
+                                                       spd->nsize);
 
-                               break;
-                       }
-                       default : {
-                               uint16_t nodetype =
-                                       ((struct jffs2_sum_unknown_flash *)
-                                        sp)->nodetype;
-                               printf("Unsupported node type %x found in "
-                                               "summary!\n", nodetype);
-                               break;
+                                       break;
+                               }
+                               default : {
+                                       uint16_t nodetype = sum_get_unaligned16(
+                                                               &spu->nodetype);
+                                       printf("Unsupported node type %x found"
+                                                       " in summary!\n",
+                                                       nodetype);
+                                       if ((nodetype & JFFS2_COMPAT_MASK) ==
+                                                       JFFS2_FEATURE_INCOMPAT)
+                                               return -EIO;
+                                       return -EBADMSG;
+                               }
                        }
                }
        }
@@ -1315,6 +1348,8 @@ int jffs2_sum_scan_sumnode(struct part_info *part, uint32_t offset,
                dbg_summary("Summary : CLEANMARKER node \n");
 
        ret = jffs2_sum_process_sum_data(part, offset, summary, pL);
+       if (ret == -EBADMSG)
+               return 0;
        if (ret)
                return ret;             /* real error */
 
@@ -1325,6 +1360,7 @@ crc_err:
 
        return 0;
 }
+#endif /* CONFIG_JFFS2_SUMMARY */
 
 #ifdef DEBUG_FRAGMENTS
 static void
@@ -1430,13 +1466,16 @@ jffs2_1pass_build_lists(struct part_info * part)
                uint32_t buf_ofs = sector_ofs;
                uint32_t buf_len;
                uint32_t ofs, prevofs;
+#ifdef CONFIG_JFFS2_SUMMARY
                struct jffs2_sum_marker *sm;
                void *sumptr = NULL;
                uint32_t sumlen;
                int ret;
+#endif
 
                WATCHDOG_RESET();
 
+#ifdef CONFIG_JFFS2_SUMMARY
                buf_len = sizeof(*sm);
 
                /* Read as much as we want into the _end_ of the preallocated
@@ -1489,6 +1528,7 @@ jffs2_1pass_build_lists(struct part_info * part)
                                continue;
 
                }
+#endif /* CONFIG_JFFS2_SUMMARY */
 
                buf_len = EMPTY_SCAN_SIZE(part->sector_size);
 
index 3d8e25cc84d20cacc4dc6ffeea3b56232edc4e47..3f4d42c51b142f801b4ed7843dfbda4359e609b2 100644 (file)
 #define NAND_MAX_CHIPS                 1
 #define CONFIG_SYS_NAND_BASE           0xD8000000      /* KW_DEFADR_NANDF */
 #define NAND_ALLOW_ERASE_ALL           1
+#define CONFIG_SYS_64BIT_VSPRINTF      /* needed for nand_util.c */
 #endif
 
 /*