==== uboot/common/cmd_nand.c#1 48a49 > extern int g_nand_read_flags; 340a342 > 342a345 > 365a369 > 496a501,502 > > g_nand_read_flags = NAND_SKIP_BAD_BLOCKS; 497a504 > 515a523 > g_nand_read_flags = NAND_SKIP_BAD_BLOCKS; 516a525 > ==== uboot/drivers/nand/nand_base.c#1 112a113,114 > int g_nand_read_flags = 0x0000; // Option flags for the nand read > 1213a1216,1217 > * g_flags: This used to pass in optional flags to the nand_do_read_ecc routine. Note these are cleared autmatically. > * 1219c1223,1225 < return nand_do_read_ecc (mtd, from, len, retlen, buf, NULL, &mtd->oobinfo, 0xff); --- > int ret = nand_do_read_ecc (mtd, from, len, retlen, buf, NULL, &mtd->oobinfo, (g_nand_read_flags & ~0xFF) | 0xff); > g_nand_read_flags = 0x0000; // Clear the global flags automatically > return ret; 1288a1295,1299 > if ( NAND_SKIP_BAD_BLOCKS & flags ) // Skip on bad blocks > { > printf(" Skip on Bad Block option selected\n"); > } > 1314c1325 < --- > 1325a1337 > 1348a1361,1390 > > int blockInc = mtd->erasesize / mtd->oobblock; > unsigned int phyAddress; > > if ( NAND_SKIP_BAD_BLOCKS & flags ) // Skip on bad blocks > { > while ( 1 ) > { > phyAddress = page * mtd->oobblock; // get the physical address from the page > > if ( phyAddress > mtd->size ) > { > DEBUG (MTD_DEBUG_LEVEL0, "nand_read_ecc: Attempt read beyond end of device while skipping blocks\n"); > *retlen = 0; > return -EINVAL; > } > > if ( nand_block_checkbad (mtd, page * mtd->oobblock, 0, 1) ) // Access the BBT and assume the nand chip is selected > { > printf(" Bad Block at 0x%08X skipped\n", page * mtd->oobblock ); > page += blockInc; // Jump to next block > realpage = page; // Update the real page pointer > } > else > { > break; // Exit on finding a good block > } > } > } > 1349a1392 > 2979c3022 < mtd->oobsize = (8 << (extid & 0x03)) * (mtd->oobblock / 512); --- > mtd->oobsize = (8 << (extid & 0x01)) * (mtd->oobblock / 512); ==== uboot/include/configs/dm355_evm.h#1 160c160 < #define CONFIG_DM9000_BASE 0x04014000 --- > //#define CONFIG_DM9000_BASE 0x04014000 162c162 < #define DM9000_IO CONFIG_DM9000_BASE --- > //#define DM9000_IO CONFIG_DM9000_BASE 164c164 < #define DM9000_DATA (CONFIG_DM9000_BASE+2) --- > //#define DM9000_DATA (CONFIG_DM9000_BASE+2) 168c168 < #define CONFIG_DM9000_USE_16BIT --- > //#define CONFIG_DM9000_USE_16BIT 172c172 < #define CONFIG_DRIVER_DM9000 --- > //#define CONFIG_DRIVER_DM9000 174,175c174,175 < #define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | CONFIG_BOOTP_DNS | CONFIG_BOOTP_DNS2 | CONFIG_BOOTP_SEND_HOSTNAME) < #define CONFIG_NET_RETRY_COUNT 10 --- > //#define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | CONFIG_BOOTP_DNS | CONFIG_BOOTP_DNS2 | CONFIG_BOOTP_SEND_HOSTNAME) > //#define CONFIG_NET_RETRY_COUNT 10 183c183 < #define CONFIG_COMMANDS (CFG_CMD_DFL | CFG_CMD_ENV | CFG_CMD_NAND | CFG_CMD_LOADB | CFG_CMD_LOADS | CFG_CMD_MEMORY | CFG_CMD_ASKENV | CFG_CMD_RUN | CFG_CMD_AUTOSCRIPT | CFG_CMD_BDI | CFG_CMD_CONSOLE | CFG_CMD_IMI | CFG_CMD_BOOTD | CFG_CMD_MISC | CFG_CMD_PING | CFG_CMD_DHCP | CFG_CMD_NET | CFG_CMD_JFFS2) --- > #define CONFIG_COMMANDS ( CFG_CMD_ENV | CFG_CMD_NAND | CFG_CMD_LOADB | CFG_CMD_MEMORY | CFG_CMD_ASKENV | CFG_CMD_RUN | CFG_CMD_AUTOSCRIPT | CFG_CMD_BDI | CFG_CMD_CONSOLE | CFG_CMD_IMI | CFG_CMD_MISC) ==== uboot/include/linux/mtd/nand.h#1 189c189,190 < #define NAND_GET_DEVICE 0x80 --- > #define NAND_GET_DEVICE 0x80 > #define NAND_SKIP_BAD_BLOCKS 0x0100 // Allows the caller to skip bad blocks in "do_nand_read_ecc" ==== uboot/include/pubmodes.h#1 57a58,59 > //#define __SIGNING__ // Use this when releasing the code > 81c83 < #define CON_CTRL_VAL 0xB1 --- > #define CON_CTRL_VAL 0xBF // 0xB1 84c86 < #define CON_CTRL2_VAL 0x40 --- > #define CON_CTRL2_VAL 0x46 // 0x40 136,139c138,141 < #define PCB0 GIO(101) < #define PCB1 GIO(100) < #define PCB2 GIO(99) < #define PCB3 GIO(98) --- > #define PCB3 GIO(101) // CIN7 / V(7) > #define PCB2 GIO(100) // CIN6 / V(6) > #define PCB1 GIO(99) // CIN5 / V(5) > #define PCB0 GIO(98) // CIN4 / V(4) 141,144c143,146 < #define REV0 GIO(97) < #define REV1 GIO(96) < #define REV2 GIO(95) < #define REV3 GIO(94) --- > #define REV3 GIO(97) // CIN3 / V(3) > #define REV2 GIO(96) // CIN2 / V(2) > #define REV1 GIO(95) // CIN1 / V(1) > #define REV0 GIO(94) // CIN0 / V(0) 189,191c191,198 < #define DEFAULT_NFS_BOOTARGS "console=ttyS0,115200n8 ip=192.168.10.2 root=nfs nfsroot=192.168.10.1:/srv/target_nfs/PUB mem=38M davinci_enc_mngr.ch0_output=LCD_PRGB video=davincifb:vid0=1024x768x16,6154K:vid1=off:osd0=1024x768x16,0K:osd1=1024x768x16,0K" < #define DEFAULT_STANDALONE_BOOTARGS "root=/dev/ram console=ttyS0,115200n8 ip=off mem=38M davinci_enc_mngr.ch0_output=LCD_PRGB video=davincifb:vid0=1024x768x16,6154K:vid1=off:osd0=1024x768x16,0K:osd1=1024x768x16,0K quiet" < #define DEFAULT_STANDALONE_SAFEMODE_BOOTARGS "root=/dev/ram ip=off mem=38M davinci_enc_mngr.ch0_output=LCD_PRGB video=davincifb:vid0=1024x768x16,6154K:vid1=off:osd0=1024x768x16,0K:osd1=1024x768x16,0K quiet" --- > #define DEFAULT_NFS_BOOTARGS "console=ttyS0,115200n8 ip=192.168.10.2 root=nfs nfsroot=192.168.10.1:/srv/target_nfs/PUB mem=38M lpj=538624 davinci_enc_mngr.ch0_output=LCD_PRGB video=davincifb:vid0=1024x768x16,6154K:vid1=off:osd0=1024x768x16,0K:osd1=1024x768x16,0K" > #if defined(__SIGNED__) > #define DEFAULT_STANDALONE_BOOTARGS "root=/dev/ram ip=off mem=38M lpj=538624 davinci_enc_mngr.ch0_output=LCD_PRGB video=davincifb:vid0=1024x768x16,6154K:vid1=off:osd0=1024x768x16,0K:osd1=1024x768x16,0K quiet" > #else > #define DEFAULT_STANDALONE_BOOTARGS "root=/dev/ram console=ttyS0,115200n8 ip=off mem=38M lpj=538624 davinci_enc_mngr.ch0_output=LCD_PRGB video=davincifb:vid0=1024x768x16,6154K:vid1=off:osd0=1024x768x16,0K:osd1=1024x768x16,0K quiet" > #endif > #define DEFAULT_STANDALONE_SAFEMODE_BOOTARGS "root=/dev/ram ip=off mem=38M lpj=538624 davinci_enc_mngr.ch0_output=LCD_PRGB video=davincifb:vid0=1024x768x16,6154K:vid1=off:osd0=1024x768x16,0K:osd1=1024x768x16,0K quiet"