Message ID | 1431104872-8645-1-git-send-email-ryan.harkin@linaro.org |
---|---|
State | New |
Headers | show |
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
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
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(+)