
Hi,
This patch series adds falcon boot mode for MMC (raw and FAT), similar to the existing nand support.
This series applies on top of the recent spl_mmc variable cleanup: http://lists.denx.de/pipermail/u-boot/2013-March/149674.html
As an example, it includes a RFC patch adding falcon boot support for the am335x evm board, which has been used to test the series. That patch should not be committed as is.
-- Bye, Peter Korsgaard

So we can instead fallback to doing something else on errors.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com --- drivers/mmc/spl_mmc.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/drivers/mmc/spl_mmc.c b/drivers/mmc/spl_mmc.c index 7efdcb8..0c50657 100644 --- a/drivers/mmc/spl_mmc.c +++ b/drivers/mmc/spl_mmc.c @@ -32,7 +32,7 @@
DECLARE_GLOBAL_DATA_PTR;
-static void mmc_load_image_raw(struct mmc *mmc) +static int mmc_load_image_raw(struct mmc *mmc) { unsigned long err; u32 image_size_sectors; @@ -61,14 +61,14 @@ static void mmc_load_image_raw(struct mmc *mmc) image_size_sectors, (void *)spl_image.load_addr);
end: - if (err == 0) { + if (err == 0) printf("spl: mmc blk read err - %lu\n", err); - hang(); - } + + return (err == 0); }
#ifdef CONFIG_SPL_FAT_SUPPORT -static void mmc_load_image_fat(struct mmc *mmc) +static int mmc_load_image_fat(struct mmc *mmc) { int err; struct image_header *header; @@ -94,11 +94,11 @@ static void mmc_load_image_fat(struct mmc *mmc) (u8 *)spl_image.load_addr, 0);
end: - if (err <= 0) { + if (err <= 0) printf("spl: error reading image %s, err - %d\n", CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME, err); - hang(); - } + + return (err <= 0); } #endif
@@ -121,17 +121,21 @@ void spl_mmc_load_image(void) printf("spl: mmc init failed: err - %d\n", err); hang(); } + boot_mode = spl_boot_mode(); if (boot_mode == MMCSD_MODE_RAW) { debug("boot mode - RAW\n"); - mmc_load_image_raw(mmc); + err = mmc_load_image_raw(mmc); #ifdef CONFIG_SPL_FAT_SUPPORT } else if (boot_mode == MMCSD_MODE_FAT) { debug("boot mode - FAT\n"); - mmc_load_image_fat(mmc); + err = mmc_load_image_fat(mmc); #endif } else { puts("spl: wrong MMC boot mode\n"); hang(); } + + if (err) + hang(); }

So we can use it for falcon mode as well.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com --- drivers/mmc/spl_mmc.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-)
diff --git a/drivers/mmc/spl_mmc.c b/drivers/mmc/spl_mmc.c index 0c50657..fac6f2d 100644 --- a/drivers/mmc/spl_mmc.c +++ b/drivers/mmc/spl_mmc.c @@ -68,7 +68,7 @@ end: }
#ifdef CONFIG_SPL_FAT_SUPPORT -static int mmc_load_image_fat(struct mmc *mmc) +static int mmc_load_image_fat(struct mmc *mmc, const char *filename) { int err; struct image_header *header; @@ -76,27 +76,18 @@ static int mmc_load_image_fat(struct mmc *mmc) header = (struct image_header *)(CONFIG_SYS_TEXT_BASE - sizeof(struct image_header));
- err = fat_register_device(&mmc->block_dev, - CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION); - if (err) { - printf("spl: fat register err - %d\n", err); - hang(); - } - - err = file_fat_read(CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME, - header, sizeof(struct image_header)); + err = file_fat_read(filename, header, sizeof(struct image_header)); if (err <= 0) goto end;
spl_parse_image_header(header);
- err = file_fat_read(CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME, - (u8 *)spl_image.load_addr, 0); + err = file_fat_read(filename, (u8 *)spl_image.load_addr, 0);
end: if (err <= 0) printf("spl: error reading image %s, err - %d\n", - CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME, err); + filename, err);
return (err <= 0); } @@ -129,7 +120,15 @@ void spl_mmc_load_image(void) #ifdef CONFIG_SPL_FAT_SUPPORT } else if (boot_mode == MMCSD_MODE_FAT) { debug("boot mode - FAT\n"); - err = mmc_load_image_fat(mmc); + + err = fat_register_device(&mmc->block_dev, + CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION); + if (err) { + printf("spl: fat register err - %d\n", err); + hang(); + } + + err = mmc_load_image_fat(mmc, CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME); #endif } else { puts("spl: wrong MMC boot mode\n");

If Falcon mode support is enabled (and the system isn't directed into booting u-boot), it will instead try to load kernel from CONFIG_SPL_FAT_LOAD_KERNEL_NAME file and kernel argument parameters from CONFIG_SPL_FAT_LOAD_ARGS_NAME, both from the same partition as u-boot.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com --- README | 8 ++++++++ drivers/mmc/spl_mmc.c | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+)
diff --git a/README b/README index 7f2506a..ef1aca1 100644 --- a/README +++ b/README @@ -2851,6 +2851,14 @@ FIT uImage format: CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME Filename to read to load U-Boot when reading from FAT
+ CONFIG_SPL_FAT_LOAD_KERNEL_NAME + Filename to read to load kernel uImage when reading + from FAT (for Falcon mode) + + CONFIG_SPL_FAT_LOAD_ARGS_NAME + Filename to read to load kernel argument parameters + when reading from FAT (for Falcon mode) + CONFIG_SPL_MPC83XX_WAIT_FOR_NAND Set this for NAND SPL on PPC mpc83xx targets, so that start.S waits for the rest of the SPL to load before diff --git a/drivers/mmc/spl_mmc.c b/drivers/mmc/spl_mmc.c index fac6f2d..d250b40 100644 --- a/drivers/mmc/spl_mmc.c +++ b/drivers/mmc/spl_mmc.c @@ -91,6 +91,24 @@ end:
return (err <= 0); } + +#ifdef CONFIG_SPL_OS_BOOT +static int mmc_load_image_fat_os(struct mmc *mmc) +{ + int err; + + err = file_fat_read(CONFIG_SPL_FAT_LOAD_ARGS_NAME, + (void *)CONFIG_SYS_SPL_ARGS_ADDR, 0); + if (err <= 0) { + printf("spl: error reading image %s, err - %d\n", + CONFIG_SPL_FAT_LOAD_ARGS_NAME, err); + return -1; + } + + return mmc_load_image_fat(mmc, CONFIG_SPL_FAT_LOAD_KERNEL_NAME); +} +#endif + #endif
void spl_mmc_load_image(void) @@ -128,6 +146,9 @@ void spl_mmc_load_image(void) hang(); }
+#ifdef CONFIG_SPL_OS_BOOT + if (spl_start_uboot() || mmc_load_image_fat_os(mmc)) +#endif err = mmc_load_image_fat(mmc, CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME); #endif } else {

So we can use it for falcon mode as well.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com --- drivers/mmc/spl_mmc.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/mmc/spl_mmc.c b/drivers/mmc/spl_mmc.c index d250b40..d710c0d 100644 --- a/drivers/mmc/spl_mmc.c +++ b/drivers/mmc/spl_mmc.c @@ -32,7 +32,7 @@
DECLARE_GLOBAL_DATA_PTR;
-static int mmc_load_image_raw(struct mmc *mmc) +static int mmc_load_image_raw(struct mmc *mmc, unsigned long sector) { unsigned long err; u32 image_size_sectors; @@ -42,10 +42,7 @@ static int mmc_load_image_raw(struct mmc *mmc) sizeof(struct image_header));
/* read image header to find the image size & load address */ - err = mmc->block_dev.block_read(0, - CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR, 1, - header); - + err = mmc->block_dev.block_read(0, sector, 1, header); if (err == 0) goto end;
@@ -56,9 +53,8 @@ static int mmc_load_image_raw(struct mmc *mmc) mmc->read_bl_len;
/* Read the header too to avoid extra memcpy */ - err = mmc->block_dev.block_read(0, - CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR, - image_size_sectors, (void *)spl_image.load_addr); + err = mmc->block_dev.block_read(0, sector, image_size_sectors, + (void *)spl_image.load_addr);
end: if (err == 0) @@ -134,7 +130,8 @@ void spl_mmc_load_image(void) boot_mode = spl_boot_mode(); if (boot_mode == MMCSD_MODE_RAW) { debug("boot mode - RAW\n"); - err = mmc_load_image_raw(mmc); + err = mmc_load_image_raw(mmc, + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR); #ifdef CONFIG_SPL_FAT_SUPPORT } else if (boot_mode == MMCSD_MODE_FAT) { debug("boot mode - FAT\n");

If Falcon mode support is enabled (and the system isn't directed into booting u-boot), it will instead try to load kernel from sector CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR and CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS of kernel argument parameters starting from sector CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com --- README | 10 ++++++++++ drivers/mmc/spl_mmc.c | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+)
diff --git a/README b/README index ef1aca1..a30b7a2 100644 --- a/README +++ b/README @@ -2845,6 +2845,16 @@ FIT uImage format: Address, size and partition on the MMC to load U-Boot from when the MMC is being used in raw mode.
+ CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR + Sector to load kernel uImage from when MMC is being + used in raw mode (for Falcon mode) + + CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR, + CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS + Sector and number of sectors to load kernel argument + parameters from when MMC is being used in raw mode + (for falcon mode) + CONFIG_SPL_FAT_SUPPORT Support for fs/fat/libfat.o in SPL binary
diff --git a/drivers/mmc/spl_mmc.c b/drivers/mmc/spl_mmc.c index d710c0d..170fa38 100644 --- a/drivers/mmc/spl_mmc.c +++ b/drivers/mmc/spl_mmc.c @@ -63,6 +63,21 @@ end: return (err == 0); }
+#ifdef CONFIG_SPL_OS_BOOT +static int mmc_load_image_raw_os(struct mmc *mmc) +{ + if (!mmc->block_dev.block_read(0, + CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR, + CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS, + (void *)CONFIG_SYS_SPL_ARGS_ADDR)) { + printf("mmc args blk read error\n"); + return -1; + } + + return mmc_load_image_raw(mmc, CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR); +} +#endif + #ifdef CONFIG_SPL_FAT_SUPPORT static int mmc_load_image_fat(struct mmc *mmc, const char *filename) { @@ -130,6 +145,9 @@ void spl_mmc_load_image(void) boot_mode = spl_boot_mode(); if (boot_mode == MMCSD_MODE_RAW) { debug("boot mode - RAW\n"); +#ifdef CONFIG_SPL_OS_BOOT + if (spl_start_uboot() || mmc_load_image_raw_os(mmc)) +#endif err = mmc_load_image_raw(mmc, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR); #ifdef CONFIG_SPL_FAT_SUPPORT

Jump into full u-boot mode if a 'c' character is received on the uart.
We need to adjust the spl bss/malloc area to not overlap with the loadaddr of the kernel (sdram + 32k), so move it past u-boot instead.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com --- board/ti/am335x/board.c | 9 +++++++++ include/configs/am335x_evm.h | 25 +++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c index f4b972b..5efbf3f 100644 --- a/board/ti/am335x/board.c +++ b/board/ti/am335x/board.c @@ -263,6 +263,15 @@ static struct emif_regs ddr3_evm_emif_reg_data = { .zq_config = MT41J512M8RH125_ZQ_CFG, .emif_ddr_phy_ctlr_1 = MT41J512M8RH125_EMIF_READ_LATENCY, }; + +#ifdef CONFIG_SPL_OS_BOOT +int spl_start_uboot(void) +{ + /* break into full u-boot on 'c' */ + return (serial_tstc() && serial_getc() == 'c'); +} +#endif + #endif
/* diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index 9eada95..26c500a 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -259,13 +259,34 @@ #define CONFIG_SPL_MAX_SIZE (101 * 1024) #define CONFIG_SPL_STACK CONFIG_SYS_INIT_SP_ADDR
-#define CONFIG_SPL_BSS_START_ADDR 0x80000000 +#define CONFIG_SPL_OS_BOOT + +#define CONFIG_SPL_BSS_START_ADDR 0x80a00000 #define CONFIG_SPL_BSS_MAX_SIZE 0x80000 /* 512 KB */
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */ #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS 0x200 /* 256 KB */ #define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION 1 #define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME "u-boot.img" + +#ifdef CONFIG_SPL_OS_BOOT +/* fat */ +#define CONFIG_SPL_FAT_LOAD_KERNEL_NAME "uImage" +#define CONFIG_SPL_FAT_LOAD_ARGS_NAME "args" +#define CONFIG_SYS_SPL_ARGS_ADDR (PHYS_DRAM_1 + 0x100) + +/* raw mmc */ +#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0xa00 /* address 0xa0000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x8 /* address 0x1000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 8 /* 4KB */ + +/* dummy defines to keep spl_nand.c happy */ +#define CONFIG_CMD_SPL_NAND_OFS 0 +#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0 +#define CONFIG_CMD_SPL_WRITE_SIZE 0 + +#endif + #define CONFIG_SPL_MMC_SUPPORT #define CONFIG_SPL_FAT_SUPPORT #define CONFIG_SPL_I2C_SUPPORT @@ -327,7 +348,7 @@ * other needs. */ #define CONFIG_SYS_TEXT_BASE 0x80800000 -#define CONFIG_SYS_SPL_MALLOC_START 0x80208000 +#define CONFIG_SYS_SPL_MALLOC_START 0x80a08000 #define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000
/* Since SPL did pll and ddr initialization for us,

On Sun, Mar 24, 2013 at 10:51:33PM +0100, Peter Korsgaard wrote:
Jump into full u-boot mode if a 'c' character is received on the uart.
We need to adjust the spl bss/malloc area to not overlap with the loadaddr of the kernel (sdram + 32k), so move it past u-boot instead.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com
[snip]
+/* raw mmc */ +#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0xa00 /* address 0xa0000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x8 /* address 0x1000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 8 /* 4KB */
Did you also test raw mode? Also, why 0xa00? U-Boot is 0x300 -> 0x500, and one might say throw a redundant copy at 0x500 -> 0x700. But we don't do 4 copy redundancy in U-Boot, just 2 usually.
+/* dummy defines to keep spl_nand.c happy */ +#define CONFIG_CMD_SPL_NAND_OFS 0 +#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0 +#define CONFIG_CMD_SPL_WRITE_SIZE 0
We should do some real defines here while at it, since the GP EVM has NAND :)

"Tom" == Tom Rini trini@ti.com writes:
Tom> On Sun, Mar 24, 2013 at 10:51:33PM +0100, Peter Korsgaard wrote:
Jump into full u-boot mode if a 'c' character is received on the uart.
We need to adjust the spl bss/malloc area to not overlap with the loadaddr of the kernel (sdram + 32k), so move it past u-boot instead.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com
Tom> [snip]
+/* raw mmc */ +#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0xa00 /* address 0xa0000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x8 /* address 0x1000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 8 /* 4KB */
Tom> Did you also test raw mode?
Yes, I did. I'm personally most interested in raw mode because of the 4x redundant MLO handling.
Tom> Also, why 0xa00? U-Boot is 0x300 -> 0x500, Tom> and one might say throw a redundant copy at 0x500 -> 0x700. But we Tom> don't do 4 copy redundancy in U-Boot, just 2 usually.
No particular reason, 0x700 should work as well. As mentioned, this was just a proof of concept to be able to test it.
+/* dummy defines to keep spl_nand.c happy */ +#define CONFIG_CMD_SPL_NAND_OFS 0 +#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0 +#define CONFIG_CMD_SPL_WRITE_SIZE 0
Tom> We should do some real defines here while at it, since the GP EVM has Tom> NAND :)
Yes. It's a bit unfortunate that CONFIG_SPL_OS_BOOT is a global setting, so you need all the various falcon boot related defines even if you don't plan on using them.
I can try to come up with sensible NAND values, but I don't have a EVM to test.

On Wed, Mar 27, 2013 at 08:57:05PM +0100, Peter Korsgaard wrote:
"Tom" == Tom Rini trini@ti.com writes:
Tom> On Sun, Mar 24, 2013 at 10:51:33PM +0100, Peter Korsgaard wrote:
Jump into full u-boot mode if a 'c' character is received on the uart.
We need to adjust the spl bss/malloc area to not overlap with the loadaddr of the kernel (sdram + 32k), so move it past u-boot instead.
Signed-off-by: Peter Korsgaard peter.korsgaard@barco.com
Tom> [snip]
+/* raw mmc */ +#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0xa00 /* address 0xa0000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x8 /* address 0x1000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 8 /* 4KB */
Tom> Did you also test raw mode?
Yes, I did. I'm personally most interested in raw mode because of the 4x redundant MLO handling.
Note that you only get 3 on RAW mode because we place U-Boot (by default) in the fourth slot. I noticed this recently but was hesitant to break possible deployed setups (in beagle land). RAW mode isnt' well documented, but it is in a few places. For your device I imagine you could fix things however.
Tom> Also, why 0xa00? U-Boot is 0x300 -> 0x500, Tom> and one might say throw a redundant copy at 0x500 -> 0x700. But we Tom> don't do 4 copy redundancy in U-Boot, just 2 usually.
No particular reason, 0x700 should work as well. As mentioned, this was just a proof of concept to be able to test it.
Right. And I'd love to see bootcount or similar updated so that we can try redundant copies of U-Boot.
+/* dummy defines to keep spl_nand.c happy */ +#define CONFIG_CMD_SPL_NAND_OFS 0 +#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0 +#define CONFIG_CMD_SPL_WRITE_SIZE 0
Tom> We should do some real defines here while at it, since the GP EVM has Tom> NAND :)
Yes. It's a bit unfortunate that CONFIG_SPL_OS_BOOT is a global setting, so you need all the various falcon boot related defines even if you don't plan on using them.
I can try to come up with sensible NAND values, but I don't have a EVM to test.
Well, CONFIG_SYS_NAND_SPL_KERNEL_OFFS would be where we say nandimgsrc is in env. Stefano, looking at twister, the spl export looks like it goes right at the start of the rootfs, isn't that bad? Or at least, luck?

"Tom" == Tom Rini trini@ti.com writes:
Hi,
Yes, I did. I'm personally most interested in raw mode because of the 4x redundant MLO handling.
Tom> Note that you only get 3 on RAW mode because we place U-Boot (by Tom> default) in the fourth slot. I noticed this recently but was hesitant Tom> to break possible deployed setups (in beagle land). RAW mode isnt' well Tom> documented, but it is in a few places. For your device I imagine you Tom> could fix things however.
And you possibly lose the first if you need a DOS style MBR, but that's OK, I just want to be able to field upgrade the MLO without risks, so 2 is enough.
No particular reason, 0x700 should work as well. As mentioned, this was just a proof of concept to be able to test it.
Tom> Right. And I'd love to see bootcount or similar updated so that Tom> we can try redundant copies of U-Boot.
Me too. I'll do some work on it in the relatively near future. I haven't looked enough into it yet to know if bootcount is enough, or if I would need custom SPL logic (basically a platform specific spl board_init_r).
The behaviour I would like to have is:
- eMMC split in two parts, and everything (u-boot/linux/rootfs) doubled
- SPL reads a flag somewhere (probably a raw eMMC sector) to decide if it should boot low or high uImage / u-boot
- On error (reset because of watchdog, bootcount, ..?) it falls back to the other part
- On upgrades the currently unused part is written and the boot flag changed.
That's AFAIK currently not possible to do with SPL, as the boot addresses are build time defines.
I can try to come up with sensible NAND values, but I don't have a EVM to test.
Tom> Well, CONFIG_SYS_NAND_SPL_KERNEL_OFFS would be where we say nandimgsrc Tom> is in env. Stefano, looking at twister, the spl export looks like it Tom> goes right at the start of the rootfs, isn't that bad? Or at least, Tom> luck?
You mean nandsrcaddr, right? CONFIG_CMD_SPL_NAND_OFS just need to be somewhere unused on the nand.

"Peter" == Peter Korsgaard jacmet@sunsite.dk writes:
Hi,
Tom> We should do some real defines here while at it, since the GP EVM Tom> has NAND :)
Peter> Yes. It's a bit unfortunate that CONFIG_SPL_OS_BOOT is a global Peter> setting, so you need all the various falcon boot related defines Peter> even if you don't plan on using them.
Peter> I can try to come up with sensible NAND values, but I don't have Peter> a EVM to test.
Any comments on patch 1-5? Tom, do you want me to send an update to patch 6 with some more sensible nand parameters?
participants (3)
-
Peter Korsgaard
-
Peter Korsgaard
-
Tom Rini