summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSudhakar Rajashekhara <sudhakar.raj@ti.com>2010-01-15 13:48:40 +0530
committerSudhakar Rajashekhara <sudhakar.raj@ti.com>2010-01-15 14:57:11 +0530
commitf5736b879889ed798bded7fc24fecc5d4520b42b (patch)
tree1ba830b16af8b5bd4961fed334b2af05072229fc
parenta3294b69bb1aa22a56839efdd57e38a5d9957b2c (diff)
da830: Add support for NAND boot mode
Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com>
-rw-r--r--board/davinci/da830evm/da830evm.c64
-rw-r--r--include/configs/da830evm.h9
2 files changed, 68 insertions, 5 deletions
diff --git a/board/davinci/da830evm/da830evm.c b/board/davinci/da830evm/da830evm.c
index f8529b736d..97d2d9764b 100644
--- a/board/davinci/da830evm/da830evm.c
+++ b/board/davinci/da830evm/da830evm.c
@@ -36,6 +36,8 @@
#include <i2c.h>
#include <asm/arch/hardware.h>
#include <asm/io.h>
+#include <nand.h>
+#include <asm/arch/nand_defs.h>
#include "../common/misc.h"
DECLARE_GLOBAL_DATA_PTR;
@@ -80,6 +82,54 @@ const struct pinmux_config i2c_pins[] = {
{ pinmux[8], 2, 4 }
};
+#ifdef CONFIG_USE_NAND
+const struct pinmux_config aemif_pins[] = {
+ { pinmux[13], 1, 6 },
+ { pinmux[13], 1, 7 },
+ { pinmux[14], 1, 0 },
+ { pinmux[14], 1, 1 },
+ { pinmux[14], 1, 2 },
+ { pinmux[14], 1, 3 },
+ { pinmux[14], 1, 4 },
+ { pinmux[14], 1, 5 },
+ { pinmux[14], 1, 6 },
+ { pinmux[14], 1, 7 },
+ { pinmux[15], 1, 0 },
+ { pinmux[15], 1, 1 },
+ { pinmux[15], 1, 2 },
+ { pinmux[15], 1, 3 },
+ { pinmux[15], 1, 4 },
+ { pinmux[15], 1, 5 },
+ { pinmux[15], 1, 6 },
+ { pinmux[15], 1, 7 },
+ { pinmux[16], 1, 0 },
+ { pinmux[16], 1, 1 },
+ { pinmux[16], 1, 2 },
+ { pinmux[16], 1, 3 },
+ { pinmux[16], 1, 4 },
+ { pinmux[16], 1, 5 },
+ { pinmux[16], 1, 6 },
+ { pinmux[16], 1, 7 },
+ { pinmux[17], 1, 0 },
+ { pinmux[17], 1, 1 },
+ { pinmux[17], 1, 2 },
+ { pinmux[17], 1, 3 },
+ { pinmux[17], 1, 4 },
+ { pinmux[17], 1, 5 },
+ { pinmux[17], 1, 6 },
+ { pinmux[17], 1, 7 },
+ { pinmux[18], 1, 0 },
+ { pinmux[18], 1, 1 },
+ { pinmux[18], 1, 2 },
+ { pinmux[18], 1, 3 },
+ { pinmux[18], 1, 4 },
+ { pinmux[18], 1, 5 },
+ { pinmux[18], 1, 6 },
+ { pinmux[18], 1, 7 },
+ { pinmux[10], 1, 0 }
+};
+#endif
+
int board_init(void)
{
#ifndef CONFIG_USE_IRQ
@@ -138,6 +188,11 @@ int board_init(void)
return 1;
#endif
+#ifdef CONFIG_USE_NAND
+ if (davinci_configure_pin_mux(aemif_pins, ARRAY_SIZE(aemif_pins)) != 0)
+ return 1;
+#endif
+
/* enable the console UART */
writel((DAVINCI_UART_PWREMU_MGMT_FREE | DAVINCI_UART_PWREMU_MGMT_URRST |
DAVINCI_UART_PWREMU_MGMT_UTRST),
@@ -161,3 +216,12 @@ int misc_init_r(void)
printf("Ethernet switch start failed!\n");
}
}
+
+#ifdef CONFIG_NAND_DAVINCI
+int board_nand_init(struct nand_chip *nand)
+{
+ davinci_nand_init(nand);
+
+ return 0;
+}
+#endif
diff --git a/include/configs/da830evm.h b/include/configs/da830evm.h
index eb963068ff..467337352e 100644
--- a/include/configs/da830evm.h
+++ b/include/configs/da830evm.h
@@ -28,6 +28,7 @@
* Board
*/
#define CONFIG_USE_SPIFLASH
+#undef CONFIG_USE_NAND
/*
* SoC Configuration
@@ -108,12 +109,14 @@
#define CONFIG_ENV_IS_IN_NAND /* U-Boot env in NAND Flash */
#define CONFIG_ENV_OFFSET 0x0 /* Block 0--not used by bootcode */
#define CONFIG_ENV_SIZE (128 << 10)
+#define CONFIG_SYS_NAND_USE_FLASH_BBT
#define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST
+#define CONFIG_SYS_NAND_PAGE_2K
#define CONFIG_SYS_NAND_CS 3
#define CONFIG_SYS_NAND_BASE DAVINCI_ASYNC_EMIF_DATA_CE3_BASE
#define CONFIG_SYS_CLE_MASK 0x10
#define CONFIG_SYS_ALE_MASK 0x8
-#define CONFIG_SYS_NAND_HW_ECC
+#undef CONFIG_SYS_NAND_HW_ECC
#define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND devices */
#define NAND_MAX_CHIPS 1
#define DEF_BOOTM ""
@@ -212,10 +215,6 @@
#undef CONFIG_CMD_FLASH
#undef CONFIG_CMD_IMLS
#define CONFIG_CMD_NAND
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_UBI
-#define CONFIG_RBTREE
#endif
#ifdef CONFIG_USE_SPIFLASH