Minor nit:  for consistency with "dvevm" and "dm355evm",
I suggest removing the underscore from "dm357_evm" in the
directory name.


> --- /dev/null
> +++ b/include/configs/davinci_dm357_evm.h
> @@ -0,0 +1,155 @@
> +...
> +
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +#include <asm/sizes.h>
> +#include <asm/arch/hardware.h>

Breaks builds, since <config.h> is included by ASM code
and <asm/arch/hardware.h> includes C declarations (which
are invalid ASM syntax).


> +#define CONFIG_STACKSIZE               0x40000
> ...
> +#define CONFIG_STACKSIZE               /* Input clock */

Also breaks builds, for a different reason.  The second one
is clearly nonsense ...


I'd also be interested to know if the appended patchlet,
in conjunction with the NAND chipselect cleanup patch I
posted, provides proper access to the second NAND chip.
It should report a total of 2112 MBytes in the startup
message, and "nand devices" should report two chips.

Obviously I couldn't compile-test because of the above
issues ... but it looks more or less right; it's just
a copy of the dm355evm stuff that works, so the question
is whether the driver is handling both nCEO and nCE2
chipselect flavors right.

There are also a few things I'd change in the dm357 config
heade:  enabling the NAND-resident BBT (faster boot), with
MTDPART and UBIFS.

- Dave



--- u-boot-arm.orig/board/davinci/dm357_evm/dm357_evm.c 
+++ u-boot-arm/board/davinci/dm357_evm/dm357_evm.c
@@ -20,8 +20,10 @@
  */
 
 #include <common.h>
+#include <nand.h>
 #include <i2c.h>
 #include <asm/arch/hardware.h>
+#include <asm/arch/nand_defs.h>
 #include "../common/psc.h"
 #include "../common/misc.h"
 
@@ -67,3 +69,30 @@ int misc_init_r(void)
        return 0;
 }
 
+#define BIT(x) (1 << (x))
+
+static void nand_dm357evm_select_chip2(struct mtd_info *mtd, int chip)
+{
+       struct nand_chip        *this = mtd->priv;
+       u32                     wbase = (u32) this->IO_ADDR_W;
+       u32                     rbase = (u32) this->IO_ADDR_R;
+
+       if (chip == 1) {
+               wbase |= BIT(3);
+               rbase |= BIT(3);
+       } else {
+               wbase &= ~BIT(3);
+               rbase &= ~BIT(3);
+       }
+       this->IO_ADDR_W = (void *)wbase;
+       this->IO_ADDR_R = (void *)rbase;
+}
+
+int board_nand_init(struct nand_chip *nand)
+{
+       davinci_nand_init(nand);
+       if (0x06000000 == (u32) this->IO_ADDR_W)
+               nand->select_chip = nand_dm357evm_select_chip2;
+       return 0;
+}
+
--- u-boot-arm.orig/include/configs/davinci_dm357_evm.h 2009-05-10 
19:41:44.000000000 -0700
+++ u-boot-arm/include/configs/davinci_dm357_evm.h      2009-05-10 
20:43:28.000000000 -0700
@@ -107,9 +105,16 @@
 #endif
 #define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is loaded by a bootloader */
 #define CONFIG_SKIP_RELOCATE_UBOOT     /* to a proper address, init done */
-#define CONFIG_SYS_NAND_BASE           DAVINCI_ASYNC_EMIF_DATA_CE0_BASE
 #define CONFIG_SYS_NAND_HW_ECC
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
+/*
+ * Boot NAND, small page, has one chipselect (nCE0)
+ * Storage NAND has two chipselects, nCE2 gated by address BIT(3)
+ */
+#define CONFIG_SYS_NAND_BASE_LIST \
+       { 0x02000000 , 0x06000000, }
+#define CONFIG_SYS_MAX_NAND_DEVICE     2
+#define CONFIG_SYS_NAND_MAX_CHIPS      2
+
 #define CONFIG_ENV_OFFSET              0x0
 #endif
 /*
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to