vexpress64: specify CONFIG_SYS_FLASH_CFI_WIDTH

Message ID 1431104872-8645-1-git-send-email-ryan.harkin@linaro.org
State New
Headers show

Commit Message

Ryan Harkin May 8, 2015, 5:07 p.m.
Testing on the ARM Versatile Express Juno board showed intermittent CFI
flash detection problems.

Debug output in exception cases showed that the NOR flash was returning
incorrect values to a query command:

fwc addr 0000000008000000 cmd f0 f0f0f0f0 32bit x 8 bit
fwc addr 0000000008000000 cmd ff ffffffff 32bit x 8 bit
fwc addr 0000000008000154 cmd 98 98989898 32bit x 8 bit
is= cmd 51(Q) addr 0000000008000040 is= 00800051 51515151
fwc addr 0000000008001554 cmd 98 98989898 32bit x 8 bit
is= cmd 51(Q) addr 0000000008000040 is= 00800051 51515151
fwc addr 0000000008000000 cmd f0 00f000f0 32bit x 16 bit
fwc addr 0000000008000000 cmd ff 00ff00ff 32bit x 16 bit
fwc addr 0000000008000154 cmd 98 00980098 32bit x 16 bit
is= cmd 51(Q) addr 0000000008000040 is= 00800051 00510051
fwc addr 0000000008001554 cmd 98 00980098 32bit x 16 bit
is= cmd 51(Q) addr 0000000008000040 is= 00800051 00510051

Debugging showed that the problem could be solved by preventing u-boot
from scanning different flash widths by specifying
CONFIG_SYS_FLASH_CFI_WIDTH so that only using the 'correct' width was
used.

Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
---
 include/configs/vexpress_aemv8a.h | 1 +
 1 file changed, 1 insertion(+)

Comments

Linus Walleij May 12, 2015, 11:31 a.m. | #1
On Fri, May 8, 2015 at 7:07 PM, Ryan Harkin <ryan.harkin@linaro.org> wrote:

> Testing on the ARM Versatile Express Juno board showed intermittent CFI
> flash detection problems.
>
> Debug output in exception cases showed that the NOR flash was returning
> incorrect values to a query command:
>
> fwc addr 0000000008000000 cmd f0 f0f0f0f0 32bit x 8 bit
> fwc addr 0000000008000000 cmd ff ffffffff 32bit x 8 bit
> fwc addr 0000000008000154 cmd 98 98989898 32bit x 8 bit
> is= cmd 51(Q) addr 0000000008000040 is= 00800051 51515151
> fwc addr 0000000008001554 cmd 98 98989898 32bit x 8 bit
> is= cmd 51(Q) addr 0000000008000040 is= 00800051 51515151
> fwc addr 0000000008000000 cmd f0 00f000f0 32bit x 16 bit
> fwc addr 0000000008000000 cmd ff 00ff00ff 32bit x 16 bit
> fwc addr 0000000008000154 cmd 98 00980098 32bit x 16 bit
> is= cmd 51(Q) addr 0000000008000040 is= 00800051 00510051
> fwc addr 0000000008001554 cmd 98 00980098 32bit x 16 bit
> is= cmd 51(Q) addr 0000000008000040 is= 00800051 00510051
>
> Debugging showed that the problem could be solved by preventing u-boot
> from scanning different flash widths by specifying
> CONFIG_SYS_FLASH_CFI_WIDTH so that only using the 'correct' width was
> used.
>
> Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>

Ah, good catch. No instabilities on my (old) machine but
this is just as good.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

Patch hide | download patch | download mbox

diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h
index 032010b..18edd5d 100644
--- a/include/configs/vexpress_aemv8a.h
+++ b/include/configs/vexpress_aemv8a.h
@@ -264,6 +264,7 @@ 
 #define CONFIG_CMD_ARMFLASH
 #define CONFIG_SYS_FLASH_CFI		1
 #define CONFIG_FLASH_CFI_DRIVER		1
+#define CONFIG_SYS_FLASH_CFI_WIDTH	FLASH_CFI_32BIT
 #define CONFIG_SYS_FLASH_BASE		0x08000000
 #define CONFIG_SYS_FLASH_SIZE		0x04000000 /* 64 MiB */
 #define CONFIG_SYS_MAX_FLASH_BANKS	2