David Brownell <david-b@pacbell.net>: minor davinci_nand bugfix
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 24 May 2009 20:56:13 +0000 (20:56 +0000)
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 24 May 2009 20:56:13 +0000 (20:56 +0000)
Fix a bug that joined us at the last minute, when an efficient
alloca() call got swapped out for a more portable malloc().

Also log one error, to give a clue in case it appears "in the wild".

git-svn-id: svn://svn.berlios.de/openocd/trunk@1907 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/flash/davinci_nand.c

index cab489f8d701c36d32e912e7f400ba73905897a6..7500fc757b17eda5fde8cd71809fbf6753774056 100644 (file)
@@ -258,8 +258,10 @@ static int davinci_write_page(struct nand_device_s *nand, u32 page,
                return ERROR_NAND_OPERATION_FAILED;
 
        /* Always write both data and OOB ... we are not "raw" I/O! */
-       if (!data)
+       if (!data) {
+               LOG_ERROR("Missing NAND data; try 'nand raw_access enable'\n");
                return ERROR_NAND_OPERATION_FAILED;
+       }
 
        /* If we're not given OOB, write 0xff where we don't write ECC codes. */
        switch (nand->page_size) {
@@ -277,7 +279,7 @@ static int davinci_write_page(struct nand_device_s *nand, u32 page,
        }
        if (!oob) {
                ooballoc = malloc(oob_size);
-               if (ooballoc)
+               if (!ooballoc)
                        return ERROR_NAND_OPERATION_FAILED;
                oob = ooballoc;
                memset(oob, 0x0ff, oob_size);