[U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI

Hi All,
I have been struggling for quite some time now to get SPL and u-boot to run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u-boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL (2013.01.01) and u-boot-2016.5 and this combo seems to work.
I also notice that the frequency (max-spi-frequency) in the dts-file is not picked up for some reason?
Any help to fix the u-boot hang problem would be highly appreciated.
Current printout (with added debug output):
U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 cadence_spi_ofdata_to_platdata: regbase=ff705000 ahbbase=ffa00000 max-frequency=500000 page-size=256 spi_flash_std_probe: slave=01100368, cs=0 SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=100000 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=5 [bytes] SF: Got idcodes 00000000: 20 ba 20 10 00 . .. SF: Detected N25Q512 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=1 [bytes] spi_flash_decode_fdt: Cannot decode address cadence_spi_xfer: len=0 [bytes] cadence_spi_xfer: len=0 [bytes] SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=500000 cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=64 [bytes] cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=443714 [bytes]
U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian

Trying again.
I have reverted back to a vanilla u-boot-2016.05, added the not-enter-quad-mode patch and changed the SPI address where the SPL should load the u-boot from and it does not work. My question:
Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 board recently (like 2016.05)? U-boot hangs after printing memory size. Same result using different compilers.
Best regards,
Christian
-----Ursprungligt meddelande----- Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian Didriksson Skickat: den 9 juni 2016 20:15 Till: u-boot@lists.denx.de Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI
Hi All,
I have been struggling for quite some time now to get SPL and u-boot to run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u-boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL (2013.01.01) and u-boot-2016.5 and this combo seems to work.
I also notice that the frequency (max-spi-frequency) in the dts-file is not picked up for some reason?
Any help to fix the u-boot hang problem would be highly appreciated.
Current printout (with added debug output):
U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 cadence_spi_ofdata_to_platdata: regbase=ff705000 ahbbase=ffa00000 max-frequency=500000 page-size=256 spi_flash_std_probe: slave=01100368, cs=0 SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=100000 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=5 [bytes] SF: Got idcodes 00000000: 20 ba 20 10 00 . .. SF: Detected N25Q512 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=1 [bytes] spi_flash_decode_fdt: Cannot decode address cadence_spi_xfer: len=0 [bytes] cadence_spi_xfer: len=0 [bytes] SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=500000 cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=64 [bytes] cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=443714 [bytes]
U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On 06/15/2016 12:06 PM, Christian Didriksson wrote:
Trying again.
Hi!
I have reverted back to a vanilla u-boot-2016.05, added the not-enter-quad-mode patch
What's this patch ? Can you share it ?
and changed the SPI address where the SPL should load the u-boot from
Can you share this change ?
and it does not work. My question:
Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 board recently (like 2016.05)? U-boot hangs after printing memory size. Same result using different compilers.
The rev E1 is the latest SoCDK, I only have rev. C1 . I remember Dinh (CCed) did send a patch for the rev. E board , so I assume he did test it, but those were only pinmux changes and it should be part of the v2016.05:
commit 4baca92001bff3c32a05001a7dc58996623e3ef8 Author: Dinh Nguyen dinguyen@kernel.org Date: Tue May 10 15:13:59 2016 -0500
arm: socfpga: Update iomux and pll for c5 socdk RevE
Another thing which comes to mind is the change in size of SPL, that might be worth looking at. Can you check the size of the SPL, u-boot-spl-dtb.bin ?
I just tested the rev C socdk with 2016.05 and it boots for me. I will send you the binary I used off-list.
Best regards,
Christian
-----Ursprungligt meddelande----- Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian Didriksson Skickat: den 9 juni 2016 20:15 Till: u-boot@lists.denx.de Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI
Hi All,
I have been struggling for quite some time now to get SPL and u-boot to run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u-boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL (2013.01.01) and u-boot-2016.5 and this combo seems to work.
I also notice that the frequency (max-spi-frequency) in the dts-file is not picked up for some reason?
Any help to fix the u-boot hang problem would be highly appreciated.
Current printout (with added debug output):
U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 cadence_spi_ofdata_to_platdata: regbase=ff705000 ahbbase=ffa00000 max-frequency=500000 page-size=256 spi_flash_std_probe: slave=01100368, cs=0 SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=100000 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=5 [bytes] SF: Got idcodes 00000000: 20 ba 20 10 00 . .. SF: Detected N25Q512 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=1 [bytes] spi_flash_decode_fdt: Cannot decode address cadence_spi_xfer: len=0 [bytes] cadence_spi_xfer: len=0 [bytes] SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=500000 cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=64 [bytes] cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=443714 [bytes]
U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi!
On 06/15/2016 12:06 PM, Christian Didriksson wrote:
Trying again.
Hi!
I have reverted back to a vanilla u-boot-2016.05, added the not-enter-quad-mode patch
What's this patch ? Can you share it ?
These are the changes I have made to 2016.05:
diff --git a/board/altera/cyclone5-socdk/qts/sdram_config.h b/board/altera/cyclone5-socdk/qts/sdram_config.h index 37c1476..bd61a7a 100644 --- a/board/altera/cyclone5-socdk/qts/sdram_config.h +++ b/board/altera/cyclone5-socdk/qts/sdram_config.h @@ -14,8 +14,8 @@ #define CONFIG_HPS_SDR_CTRLCFG_CPORTWMAP_CPORTWMAP 0x2C011000 #define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ADDRORDER 0 #define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_DQSTRKEN 0 -#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCCORREN 1 -#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCEN 1 +#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCCORREN 0 +#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCEN 0 #define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMBL 8 #define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMTYPE 2 #define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_NODMPINS 0 diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c index 5451725..de3abca 100644 --- a/drivers/mtd/spi/spi_flash.c +++ b/drivers/mtd/spi/spi_flash.c @@ -1104,20 +1104,24 @@ int spi_flash_scan(struct spi_flash *flash) /* Now erase size becomes valid sector size */ flash->sector_size = flash->erase_size;
+#ifndef CONFIG_SPL_BUILD /* Look for the fastest read cmd */ cmd = fls(params->e_rd_cmd & spi->mode_rx); if (cmd) { cmd = spi_read_cmds_array[cmd - 1]; flash->read_cmd = cmd; } else { +#endif /* Go for default supported read cmd */ flash->read_cmd = CMD_READ_ARRAY_FAST; +#ifndef CONFIG_SPL_BUILD }
/* Not require to look for fastest only two write cmds yet */ if (params->flags & WR_QPP && spi->mode & SPI_TX_QUAD) flash->write_cmd = CMD_QUAD_PAGE_PROGRAM; else +#endif /* Go for default supported write cmd */ flash->write_cmd = CMD_PAGE_PROGRAM;
diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h index 4fdc09a..ac83ee4 100644 --- a/include/configs/socfpga_common.h +++ b/include/configs/socfpga_common.h @@ -284,22 +284,28 @@ unsigned int cm_get_qspi_controller_clk_hz(void); * * device nor0 <ff705000.spi.0>, # parts = 6 * #: name size offset mask_flags - * 0: u-boot 0x00100000 0x00000000 0 - * 1: env1 0x00040000 0x00100000 0 - * 2: env2 0x00040000 0x00140000 0 - * 3: UBI 0x03e80000 0x00180000 0 - * 4: boot 0x00e80000 0x00180000 0 - * 5: rootfs 0x01000000 0x01000000 0 + * 0: spl 0x00040000 0x00000000 0 + * 1: env1 0x00010000 0x00040000 0 + * 2: dtb 0x00010000 0x00050000 0 + * 3: u-boot 0x00080000 0x00060000 0 + * 4: lba 0x00800000 0x000E0000 0 + * 5: lbafs 0x01000000 0x008E0000 0 + * 6: fpga 0x00800000 0x018E0000 0 + * 7: script 0x00020000 0x020E0000 0 + * 8: UBI 0x01F00000 0x02100000 0 * */ #if defined(CONFIG_CMD_SF) && !defined(MTDPARTS_DEFAULT) #define MTDPARTS_DEFAULT "mtdparts=ff705000.spi.0:"\ - "1m(u-boot)," \ - "256k(env1)," \ - "256k(env2)," \ - "14848k(boot)," \ - "16m(rootfs)," \ - "-@1536k(UBI)\0" + "256k(spl)," \ + "64k(env1)," \ + "64k(dtb)," \ + "512k(u-boot)," \ + "8m(lba)," \ + "16m(lbafs)," \ + "8m(fpga)," \ + "128k(script)," \ + "-(UBI)\0" #endif
/* UBI and UBIFS support */ @@ -360,7 +366,7 @@ unsigned int cm_get_qspi_controller_clk_hz(void); #ifdef CONFIG_SPL_SPI_SUPPORT #define CONFIG_SPL_SPI_FLASH_SUPPORT #define CONFIG_SPL_SPI_LOAD -#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x40000 +#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x60000 #endif
/* SPL NAND boot support */ diff --git a/include/configs/socfpga_cyclone5_socdk.h b/include/configs/socfpga_cyclone5_socdk.h index a2da7d4..399f42c 100644 --- a/include/configs/socfpga_cyclone5_socdk.h +++ b/include/configs/socfpga_cyclone5_socdk.h @@ -24,7 +24,7 @@ #ifdef CONFIG_SOCFPGA_VIRTUAL_TARGET #define CONFIG_BOOTCOMMAND "run ramboot" #else -#define CONFIG_BOOTCOMMAND "run mmcload; run mmcboot" +#define CONFIG_BOOTCOMMAND "run qspi-boot-nga" #endif #define CONFIG_LOADADDR 0x01000000 #define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR @@ -35,7 +35,18 @@ #define CONFIG_PHY_MICREL_KSZ9021 #endif
-#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SPL_SPI_SUPPORT + +#define CONFIG_ENV_IS_IN_SPI_FLASH +#define CONFIG_ENV_OFFSET 0x00040000 +#define CONFIG_ENV_SECT_SIZE (64 * 1024) +#define CONFIG_ENV_SIZE (64 * 1024) + +#define CONFIG_SF_DEFAULT_SPEED 50000000 +#define CONFIG_SF_DEFAULT_MODE SPI_MODE_3 +#define CONFIG_SF_DEFAULT_BUS 0 +#define CONFIG_SF_DEFAULT_CS 0 +
/* Extra Environment */ #define CONFIG_EXTRA_ENV_SETTINGS \ @@ -58,6 +69,11 @@ "qspiboot=setenv bootargs " CONFIG_BOOTARGS \ " ubi.mtd=1,64 root=ubi0:rootfs rw rootfstype=ubifs;"\ "bootz ${loadaddr} - ${fdt_addr}\0" \ + "qspiloadcs=0\0" \ + "qspiscraddr=0x020e0000\0" \ + "qspi-boot-nga=sf probe ${qspiloadcs};" \ + "sf read 0x100000 ${qspiscraddr} 0x10000;" \ + "source 0x100000\0" \ "ubiload=ubi part UBI && ubifsmount ubi0 && " \ "ubifsload ${loadaddr} /boot/${bootimage} && " \ "ubifsload ${fdt_addr} /boot/${fdtimage}\0"
Some comments:
We want to run ECC, but I don't think the SPL supports scrubbing etc. yet so I undefined those qts-parameters. Am I right regarding ECC for SDRAM?
I couldn't get the SPL to work from the beginning and after much debugging I found that entering quad-mode for the flash is problematic in the SPL. At the same time I also found this, http://lists.denx.de/pipermail/u-boot/2016-June/256671.html, confirming my findings.
I have prepared the u-boot MTD-configuration for our setup.
I have added SPL SPI support and configured ENV-parameters and u-boot offset
I have also added the boot command we are going to use.
and changed the SPI address where the SPL should load the u-boot from
Can you share this change ?
See above
and it does not work. My question:
Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 board
recently (like 2016.05)? U-boot hangs after printing memory size. Same result using different compilers.
The rev E1 is the latest SoCDK, I only have rev. C1 . I remember Dinh (CCed) did send a patch for the rev. E board , so I assume he did test it, but those were only pinmux changes and it should be part of the v2016.05:
commit 4baca92001bff3c32a05001a7dc58996623e3ef8 Author: Dinh Nguyen dinguyen@kernel.org Date: Tue May 10 15:13:59 2016 -0500
arm: socfpga: Update iomux and pll for c5 socdk RevE
Another thing which comes to mind is the change in size of SPL, that might be worth looking at. Can you check the size of the SPL, u-boot-spl-dtb.bin ?
54534 bytes
I just tested the rev C socdk with 2016.05 and it boots for me. I will send you the binary I used off-list.
Does this SPL (loaded from QSPI by bootrom?) load u-boot from QSPI?
Best regards,
Christian
-----Ursprungligt meddelande----- Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian Didriksson Skickat: den 9 juni 2016 20:15 Till: u-boot@lists.denx.de Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI
Hi All,
I have been struggling for quite some time now to get SPL and u-boot to
run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u- boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL (2013.01.01) and u-boot-2016.5 and this combo seems to work.
I also notice that the frequency (max-spi-frequency) in the dts-file is not
picked up for some reason?
Any help to fix the u-boot hang problem would be highly appreciated.
Current printout (with added debug output):
U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 cadence_spi_ofdata_to_platdata: regbase=ff705000 ahbbase=ffa00000 max-frequency=500000 page-size=256 spi_flash_std_probe: slave=01100368, cs=0 SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=100000 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=5 [bytes] SF: Got idcodes 00000000: 20 ba 20 10 00 . .. SF: Detected N25Q512 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=1 [bytes] spi_flash_decode_fdt: Cannot decode address cadence_spi_xfer: len=0 [bytes] cadence_spi_xfer: len=0 [bytes] SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=500000 cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=64 [bytes] cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=443714 [bytes]
U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Best regards, Marek Vasut
Best regards,
Christian

On 06/16/2016 12:13 PM, Christian Didriksson wrote:
Hi!
Hi,
On 06/15/2016 12:06 PM, Christian Didriksson wrote:
Trying again.
Hi!
I have reverted back to a vanilla u-boot-2016.05, added the not-enter-quad-mode patch
What's this patch ? Can you share it ?
[...]
Thanks
Some comments:
We want to run ECC, but I don't think the SPL supports scrubbing etc. yet so I undefined those qts-parameters. Am I right regarding ECC for SDRAM?
I'll delegate this one to Dinh, I never poked into the SRAM ECC stuff.
I couldn't get the SPL to work from the beginning and after much debugging I found that entering quad-mode for the flash is problematic in the SPL. At the same time I also found this, http://lists.denx.de/pipermail/u-boot/2016-June/256671.html, confirming my findings.
I have prepared the u-boot MTD-configuration for our setup.
I have added SPL SPI support and configured ENV-parameters and u-boot offset
I have also added the boot command we are going to use.
OK
and changed the SPI address where the SPL should load the u-boot from
Can you share this change ?
See above
and it does not work. My question:
Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 board
recently (like 2016.05)? U-boot hangs after printing memory size. Same result using different compilers.
The rev E1 is the latest SoCDK, I only have rev. C1 . I remember Dinh (CCed) did send a patch for the rev. E board , so I assume he did test it, but those were only pinmux changes and it should be part of the v2016.05:
commit 4baca92001bff3c32a05001a7dc58996623e3ef8 Author: Dinh Nguyen dinguyen@kernel.org Date: Tue May 10 15:13:59 2016 -0500
arm: socfpga: Update iomux and pll for c5 socdk RevE
Another thing which comes to mind is the change in size of SPL, that might be worth looking at. Can you check the size of the SPL, u-boot-spl-dtb.bin ?
54534 bytes
Try these two patches: https://patchwork.ozlabs.org/patch/627868/ https://patchwork.ozlabs.org/patch/627869/
I just tested the rev C socdk with 2016.05 and it boots for me. I will send you the binary I used off-list.
Does this SPL (loaded from QSPI by bootrom?) load u-boot from QSPI?
I only tested it booting from SD card, but it should just as well load from QSPI if the board is configured that way.
Best regards,
Christian
-----Ursprungligt meddelande----- Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian Didriksson Skickat: den 9 juni 2016 20:15 Till: u-boot@lists.denx.de Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI
Hi All,
I have been struggling for quite some time now to get SPL and u-boot to
run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u- boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL (2013.01.01) and u-boot-2016.5 and this combo seems to work.
I also notice that the frequency (max-spi-frequency) in the dts-file is not
picked up for some reason?
Any help to fix the u-boot hang problem would be highly appreciated.
Current printout (with added debug output):
U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 cadence_spi_ofdata_to_platdata: regbase=ff705000 ahbbase=ffa00000 max-frequency=500000 page-size=256 spi_flash_std_probe: slave=01100368, cs=0 SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=100000 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=5 [bytes] SF: Got idcodes 00000000: 20 ba 20 10 00 . .. SF: Detected N25Q512 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=1 [bytes] spi_flash_decode_fdt: Cannot decode address cadence_spi_xfer: len=0 [bytes] cadence_spi_xfer: len=0 [bytes] SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=500000 cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=64 [bytes] cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=443714 [bytes]
U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Best regards, Marek Vasut
Best regards,
Christian

Hi Marek,
I applied the two patches you suggested, but got no change in behavior:
U-Boot SPL 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI
U-Boot 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
On 06/16/2016 12:13 PM, Christian Didriksson wrote:
Hi!
Hi,
On 06/15/2016 12:06 PM, Christian Didriksson wrote:
Trying again.
Hi!
I have reverted back to a vanilla u-boot-2016.05, added the not-enter-quad-mode patch
What's this patch ? Can you share it ?
[...]
Thanks
Some comments:
We want to run ECC, but I don't think the SPL supports scrubbing etc. yet so
I undefined those qts-parameters. Am I right regarding ECC for SDRAM?
I'll delegate this one to Dinh, I never poked into the SRAM ECC stuff.
I couldn't get the SPL to work from the beginning and after much
debugging I found that entering quad-mode for the flash is problematic in the SPL. At the same time I also found this, http://lists.denx.de/pipermail/u- boot/2016-June/256671.html, confirming my findings.
I have prepared the u-boot MTD-configuration for our setup.
I have added SPL SPI support and configured ENV-parameters and u-boot offset
I have also added the boot command we are going to use.
OK
and changed the SPI address where the SPL should load the u-boot from
Can you share this change ?
See above
and it does not work. My question:
Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 board
recently (like 2016.05)? U-boot hangs after printing memory size. Same result using different compilers.
The rev E1 is the latest SoCDK, I only have rev. C1 . I remember Dinh (CCed) did send a patch for the rev. E board , so I assume he did test it, but those were only pinmux changes and it should be part of the v2016.05:
commit 4baca92001bff3c32a05001a7dc58996623e3ef8 Author: Dinh Nguyen dinguyen@kernel.org Date: Tue May 10 15:13:59 2016 -0500
arm: socfpga: Update iomux and pll for c5 socdk RevE
Another thing which comes to mind is the change in size of SPL, that might be worth looking at. Can you check the size of the SPL, u-boot-spl-
dtb.bin ?
54534 bytes
Try these two patches: https://patchwork.ozlabs.org/patch/627868/ https://patchwork.ozlabs.org/patch/627869/
I just tested the rev C socdk with 2016.05 and it boots for me. I will send you the binary I used off-list.
Does this SPL (loaded from QSPI by bootrom?) load u-boot from QSPI?
I only tested it booting from SD card, but it should just as well load from QSPI if the board is configured that way.
Best regards,
Christian
-----Ursprungligt meddelande----- Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian Didriksson Skickat: den 9 juni 2016 20:15 Till: u-boot@lists.denx.de Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI
Hi All,
I have been struggling for quite some time now to get SPL and u-boot to
run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u- boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL
(2013.01.01) and u-boot-2016.5 and this combo seems to work.
I also notice that the frequency (max-spi-frequency) in the dts-file is not
picked up for some reason?
Any help to fix the u-boot hang problem would be highly appreciated.
Current printout (with added debug output):
U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 cadence_spi_ofdata_to_platdata: regbase=ff705000 ahbbase=ffa00000 max-frequency=500000 page-size=256 spi_flash_std_probe: slave=01100368, cs=0 SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=100000 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=5 [bytes] SF: Got idcodes 00000000: 20 ba 20 10 00 . .. SF: Detected N25Q512 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=1 [bytes] spi_flash_decode_fdt: Cannot decode address cadence_spi_xfer: len=0 [bytes] cadence_spi_xfer: len=0 [bytes] SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=500000 cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=64 [bytes] cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=443714 [bytes]
U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Best regards, Marek Vasut
Best regards,
Christian
-- Best regards, Marek Vasut

On 06/17/2016 04:39 PM, Christian Didriksson wrote:
Hi Marek,
Hi
I applied the two patches you suggested, but got no change in behavior:
U-Boot SPL 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI
U-Boot 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
But this looks like U-Boot started for you. So maybe I misunderstood something right from the getgo . The U-Boot starts, but doesn't get past this point after the DRAM report, right ?
In which case, edit lib/initcall.c and add "#define DEBUG" on the first line of the file, rebuild u-boot and boot. U-Boot will not produce far more debugging output and you should be able to figure out which of the initcalls was the last one that passed (and thus which one got stuck).
Edit common/board_f.c and locate init_sequence_f[] for the list of initcalls. Check u-boot.map to get the symbol addresses in the compiled u-boot. Then compare the output on the console and locate the corresponding initcall which failed.
Or share the u-boot (Elf binary) and console output.
(and please avoid top-posting)
Best regards,
Christian
On 06/16/2016 12:13 PM, Christian Didriksson wrote:
Hi!
Hi,
On 06/15/2016 12:06 PM, Christian Didriksson wrote:
Trying again.
Hi!
I have reverted back to a vanilla u-boot-2016.05, added the not-enter-quad-mode patch
What's this patch ? Can you share it ?
[...]
Thanks
Some comments:
We want to run ECC, but I don't think the SPL supports scrubbing etc. yet so
I undefined those qts-parameters. Am I right regarding ECC for SDRAM?
I'll delegate this one to Dinh, I never poked into the SRAM ECC stuff.
I couldn't get the SPL to work from the beginning and after much
debugging I found that entering quad-mode for the flash is problematic in the SPL. At the same time I also found this, http://lists.denx.de/pipermail/u- boot/2016-June/256671.html, confirming my findings.
I have prepared the u-boot MTD-configuration for our setup.
I have added SPL SPI support and configured ENV-parameters and u-boot offset
I have also added the boot command we are going to use.
OK
and changed the SPI address where the SPL should load the u-boot from
Can you share this change ?
See above
and it does not work. My question:
Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 board
recently (like 2016.05)? U-boot hangs after printing memory size. Same result using different compilers.
The rev E1 is the latest SoCDK, I only have rev. C1 . I remember Dinh (CCed) did send a patch for the rev. E board , so I assume he did test it, but those were only pinmux changes and it should be part of the v2016.05:
commit 4baca92001bff3c32a05001a7dc58996623e3ef8 Author: Dinh Nguyen dinguyen@kernel.org Date: Tue May 10 15:13:59 2016 -0500
arm: socfpga: Update iomux and pll for c5 socdk RevE
Another thing which comes to mind is the change in size of SPL, that might be worth looking at. Can you check the size of the SPL, u-boot-spl-
dtb.bin ?
54534 bytes
Try these two patches: https://patchwork.ozlabs.org/patch/627868/ https://patchwork.ozlabs.org/patch/627869/
I just tested the rev C socdk with 2016.05 and it boots for me. I will send you the binary I used off-list.
Does this SPL (loaded from QSPI by bootrom?) load u-boot from QSPI?
I only tested it booting from SD card, but it should just as well load from QSPI if the board is configured that way.
Best regards,
Christian
-----Ursprungligt meddelande----- Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian Didriksson Skickat: den 9 juni 2016 20:15 Till: u-boot@lists.denx.de Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI
Hi All,
I have been struggling for quite some time now to get SPL and u-boot to
run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u- boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL
(2013.01.01) and u-boot-2016.5 and this combo seems to work.
I also notice that the frequency (max-spi-frequency) in the dts-file is not
picked up for some reason?
Any help to fix the u-boot hang problem would be highly appreciated.
Current printout (with added debug output):
U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 cadence_spi_ofdata_to_platdata: regbase=ff705000 ahbbase=ffa00000 max-frequency=500000 page-size=256 spi_flash_std_probe: slave=01100368, cs=0 SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=100000 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=5 [bytes] SF: Got idcodes 00000000: 20 ba 20 10 00 . .. SF: Detected N25Q512 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=1 [bytes] spi_flash_decode_fdt: Cannot decode address cadence_spi_xfer: len=0 [bytes] cadence_spi_xfer: len=0 [bytes] SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=500000 cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=64 [bytes] cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=443714 [bytes]
U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Best regards, Marek Vasut
Best regards,
Christian
-- Best regards, Marek Vasut

Hi Marek,
On 06/17/2016 04:39 PM, Christian Didriksson wrote:
Hi Marek,
Hi
I applied the two patches you suggested, but got no change in behavior:
U-Boot SPL 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI
U-Boot 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
But this looks like U-Boot started for you. So maybe I misunderstood something right from the getgo . The U-Boot starts, but doesn't get past this point after the DRAM report, right ?
Correct, initially I had an SPL issue that was solved by not entering quad mode.
In which case, edit lib/initcall.c and add "#define DEBUG" on the first line of the file, rebuild u-boot and boot. U-Boot will not produce far more debugging output and you should be able to figure out which of the initcalls was the last one that passed (and thus which one got stuck).
Edit common/board_f.c and locate init_sequence_f[] for the list of initcalls. Check u-boot.map to get the symbol addresses in the compiled u-boot. Then compare the output on the console and locate the corresponding initcall which failed.
Or share the u-boot (Elf binary) and console output.
(and please avoid top-posting)
1 GiB initcall: 0100ca47 initcall: 0100c93d initcall: 0100c9e3 initcall: 0100c9bb initcall: 3ff62c1b initcall: 3ff62add initcall: 0100cc4d (relocated to 3ff62c0d)
.text.initr_caches 0x000000000100cc4c 0xa common/built-in.o
board_init_r ==> init_sequence_r ==>
#ifdef CONFIG_ARM initr_caches, /* Note: For Freescale LS2 SoCs, new MMU table is created in DDR. * A temporary mapping of IFC high region is since removed, * so environmental variables in NOR flash is not availble * until board_init() is called below to remap IFC to high * region. */ #endif
So it seems we have the classic SDRAM memory not 100% correct configured causing problems when enabling the caches. But I don't understand why this happens. Dinh can you boot your CV socdk Rev E1 board with 2016.05 SPL?
Best regards,
Christian
On 06/16/2016 12:13 PM, Christian Didriksson wrote:
Hi!
Hi,
On 06/15/2016 12:06 PM, Christian Didriksson wrote:
Trying again.
Hi!
I have reverted back to a vanilla u-boot-2016.05, added the not-enter-quad-mode patch
What's this patch ? Can you share it ?
[...]
Thanks
Some comments:
We want to run ECC, but I don't think the SPL supports scrubbing etc. yet so
I undefined those qts-parameters. Am I right regarding ECC for SDRAM?
I'll delegate this one to Dinh, I never poked into the SRAM ECC stuff.
I couldn't get the SPL to work from the beginning and after much
debugging I found that entering quad-mode for the flash is problematic in the SPL. At the same time I also found this, http://lists.denx.de/pipermail/u- boot/2016-June/256671.html,
confirming my findings.
I have prepared the u-boot MTD-configuration for our setup.
I have added SPL SPI support and configured ENV-parameters and u-boot offset
I have also added the boot command we are going to use.
OK
and changed the SPI address where the SPL should load the u-boot from
Can you share this change ?
See above
and it does not work. My question:
Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 board
recently (like 2016.05)? U-boot hangs after printing memory size. Same result using different compilers.
The rev E1 is the latest SoCDK, I only have rev. C1 . I remember Dinh (CCed) did send a patch for the rev. E board , so I assume he did test it, but those were only pinmux changes and it should be part of the v2016.05:
commit 4baca92001bff3c32a05001a7dc58996623e3ef8 Author: Dinh Nguyen dinguyen@kernel.org Date: Tue May 10 15:13:59 2016 -0500
arm: socfpga: Update iomux and pll for c5 socdk RevE
Another thing which comes to mind is the change in size of SPL, that might be worth looking at. Can you check the size of the SPL, u-boot-spl-
dtb.bin ?
54534 bytes
Try these two patches: https://patchwork.ozlabs.org/patch/627868/ https://patchwork.ozlabs.org/patch/627869/
I just tested the rev C socdk with 2016.05 and it boots for me. I will send you the binary I used off-list.
Does this SPL (loaded from QSPI by bootrom?) load u-boot from QSPI?
I only tested it booting from SD card, but it should just as well load from QSPI if the board is configured that way.
Best regards,
Christian
-----Ursprungligt meddelande----- Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian Didriksson Skickat: den 9 juni 2016 20:15 Till: u-boot@lists.denx.de Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI
Hi All,
I have been struggling for quite some time now to get SPL and u-boot to
run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u- boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL
(2013.01.01) and u-boot-2016.5 and this combo seems to work.
I also notice that the frequency (max-spi-frequency) in the dts-file is not
picked up for some reason?
Any help to fix the u-boot hang problem would be highly appreciated.
Current printout (with added debug output):
U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 cadence_spi_ofdata_to_platdata: regbase=ff705000
ahbbase=ffa00000
max-frequency=500000 page-size=256 spi_flash_std_probe: slave=01100368, cs=0 SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=100000 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=5 [bytes] SF: Got idcodes 00000000: 20 ba 20 10 00 . .. SF: Detected N25Q512 cadence_spi_xfer: len=1 [bytes] cadence_spi_xfer: len=1 [bytes] spi_flash_decode_fdt: Cannot decode address cadence_spi_xfer: len=0 [bytes] cadence_spi_xfer: len=0 [bytes] SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB SF: Read data capture delay calibrated to 7 (0 - 15) cadence_spi_set_speed: speed=500000 cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=64 [bytes] cadence_spi_xfer: len=5 [bytes] cadence_spi_xfer: len=443714 [bytes]
U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Best regards, Marek Vasut
Best regards,
Christian
-- Best regards, Marek Vasut
-- Best regards, Marek Vasut
Best regards, Christian

On 06/20/2016 03:22 PM, Christian Didriksson wrote:
Hi Marek,
Hi,
On 06/17/2016 04:39 PM, Christian Didriksson wrote:
Hi Marek,
Hi
I applied the two patches you suggested, but got no change in behavior:
U-Boot SPL 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI
U-Boot 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
But this looks like U-Boot started for you. So maybe I misunderstood something right from the getgo . The U-Boot starts, but doesn't get past this point after the DRAM report, right ?
Correct, initially I had an SPL issue that was solved by not entering quad mode.
We don't support quad mode in U-Boot . You mean not entering Quad mode in Linux ?
In which case, edit lib/initcall.c and add "#define DEBUG" on the first line of the file, rebuild u-boot and boot. U-Boot will not produce far more debugging output and you should be able to figure out which of the initcalls was the last one that passed (and thus which one got stuck).
Edit common/board_f.c and locate init_sequence_f[] for the list of initcalls. Check u-boot.map to get the symbol addresses in the compiled u-boot. Then compare the output on the console and locate the corresponding initcall which failed.
Or share the u-boot (Elf binary) and console output.
(and please avoid top-posting)
1 GiB initcall: 0100ca47 initcall: 0100c93d initcall: 0100c9e3 initcall: 0100c9bb initcall: 3ff62c1b initcall: 3ff62add initcall: 0100cc4d (relocated to 3ff62c0d)
.text.initr_caches 0x000000000100cc4c 0xa common/built-in.o
board_init_r ==> init_sequence_r ==>
#ifdef CONFIG_ARM initr_caches, /* Note: For Freescale LS2 SoCs, new MMU table is created in DDR. * A temporary mapping of IFC high region is since removed, * so environmental variables in NOR flash is not availble * until board_init() is called below to remap IFC to high * region. */ #endif
So it seems we have the classic SDRAM memory not 100% correct configured causing problems when enabling the caches.
I have my doubts about this, but you can try regenerating the preloader headers from latest CV SoCDK GHRD. You'd have to compile the GHRD with Quartus, then generate the preloader files with bsp-editor and then use ./arch/arm/mach-socfpga/qts-filter.sh to process these generated files into headers that go into board/altera/cyclone5-socdk/qts/
You can also try defining CONFIG_SYS_ICACHE_OFF and CONFIG_SYS_DCACHE_OFF to disable caches and see where that gets you.
But I don't understand why this happens. Dinh can you boot your CV socdk Rev E1 board with 2016.05 SPL?
Best regards,
Christian
On 06/16/2016 12:13 PM, Christian Didriksson wrote:
Hi!
Hi,
On 06/15/2016 12:06 PM, Christian Didriksson wrote: > Trying again.
Hi!
> I have reverted back to a vanilla u-boot-2016.05, added the > not-enter-quad-mode patch
What's this patch ? Can you share it ?
[...]
Thanks
Some comments:
We want to run ECC, but I don't think the SPL supports scrubbing etc. yet so
I undefined those qts-parameters. Am I right regarding ECC for SDRAM?
I'll delegate this one to Dinh, I never poked into the SRAM ECC stuff.
I couldn't get the SPL to work from the beginning and after much
debugging I found that entering quad-mode for the flash is problematic in the SPL. At the same time I also found this, http://lists.denx.de/pipermail/u- boot/2016-June/256671.html,
confirming my findings.
I have prepared the u-boot MTD-configuration for our setup.
I have added SPL SPI support and configured ENV-parameters and u-boot offset
I have also added the boot command we are going to use.
OK
> and changed the SPI address where the SPL should load the u-boot > from
Can you share this change ?
See above
> and it does not work. My question: > > Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 > board recently (like 2016.05)? U-boot hangs after printing memory size. Same result using different compilers.
The rev E1 is the latest SoCDK, I only have rev. C1 . I remember Dinh (CCed) did send a patch for the rev. E board , so I assume he did test it, but those were only pinmux changes and it should be part of the v2016.05:
commit 4baca92001bff3c32a05001a7dc58996623e3ef8 Author: Dinh Nguyen dinguyen@kernel.org Date: Tue May 10 15:13:59 2016 -0500
arm: socfpga: Update iomux and pll for c5 socdk RevE
Another thing which comes to mind is the change in size of SPL, that might be worth looking at. Can you check the size of the SPL, u-boot-spl-
dtb.bin ?
54534 bytes
Try these two patches: https://patchwork.ozlabs.org/patch/627868/ https://patchwork.ozlabs.org/patch/627869/
I just tested the rev C socdk with 2016.05 and it boots for me. I will send you the binary I used off-list.
Does this SPL (loaded from QSPI by bootrom?) load u-boot from QSPI?
I only tested it booting from SD card, but it should just as well load from QSPI if the board is configured that way.
> Best regards, > > Christian > > -----Ursprungligt meddelande----- > Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian > Didriksson > Skickat: den 9 juni 2016 20:15 > Till: u-boot@lists.denx.de > Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot > fail when booting from QSPI > > Hi All, > > I have been struggling for quite some time now to get SPL and > u-boot to run from QSPI-flash. Yesterday I was able to identify a workaround to get the SPL going by disabling quad mode for the flash (seems identified by http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). However u- boot always hangs after printing memory size. I have tried to search the archive and have seen posts about hanging here, but nothing I can relate to my setup. I have tested to use Altera's SPL
(2013.01.01) and u-boot-2016.5 and this combo seems to work.
> > I also notice that the frequency (max-spi-frequency) in the > dts-file is not picked up for some reason? > > Any help to fix the u-boot hang problem would be highly appreciated. > > Current printout (with added debug output): > > U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - > 17:06:20) > drivers/ddr/altera/sequencer.c: Preparing to start memory > calibration > drivers/ddr/altera/sequencer.c: CALIBRATION PASSED > drivers/ddr/altera/sequencer.c: Calibration complete Trying to > boot from SPI > spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 > cadence_spi_ofdata_to_platdata: regbase=ff705000
ahbbase=ffa00000
> max-frequency=500000 page-size=256 > spi_flash_std_probe: slave=01100368, cs=0 > SF: Read data capture delay calibrated to 7 (0 - 15) > cadence_spi_set_speed: speed=100000 > cadence_spi_xfer: len=1 [bytes] > cadence_spi_xfer: len=5 [bytes] > SF: Got idcodes > 00000000: 20 ba 20 10 00 . .. > SF: Detected N25Q512 > cadence_spi_xfer: len=1 [bytes] > cadence_spi_xfer: len=1 [bytes] > spi_flash_decode_fdt: Cannot decode address > cadence_spi_xfer: len=0 [bytes] > cadence_spi_xfer: len=0 [bytes] > SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, > total 64 MiB > SF: Read data capture delay calibrated to 7 (0 - 15) > cadence_spi_set_speed: speed=500000 > cadence_spi_xfer: len=5 [bytes] > cadence_spi_xfer: len=64 [bytes] > cadence_spi_xfer: len=5 [bytes] > cadence_spi_xfer: len=443714 [bytes] > > > U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 > +0200) > > CPU: Altera SoCFPGA Platform > FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 > BOOT: QSPI Flash (1.8V) > Watchdog enabled > I2C: ready > DRAM: 1 GiB > > > Best regards, > > Christian > > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot >
-- Best regards, Marek Vasut
Best regards,
Christian
-- Best regards, Marek Vasut
-- Best regards, Marek Vasut
Best regards, Christian

Hi,
On 06/20/2016 03:22 PM, Christian Didriksson wrote:
Hi Marek,
Hi,
On 06/17/2016 04:39 PM, Christian Didriksson wrote:
Hi Marek,
Hi
I applied the two patches you suggested, but got no change in behavior:
U-Boot SPL 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI
U-Boot 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
But this looks like U-Boot started for you. So maybe I misunderstood something right from the getgo . The U-Boot starts, but doesn't get past this point after the DRAM report, right ?
Correct, initially I had an SPL issue that was solved by not entering quad
mode.
We don't support quad mode in U-Boot . You mean not entering Quad mode in Linux ?
Nope, there seems to be quad support in u-boot, from spi_flash.c (my patched version):
#ifndef CONFIG_SPL_BUILD /* Look for the fastest read cmd */ cmd = fls(params->e_rd_cmd & spi->mode_rx); if (cmd) { cmd = spi_read_cmds_array[cmd - 1]; flash->read_cmd = cmd; } else { #endif /* Go for default supported read cmd */ flash->read_cmd = CMD_READ_ARRAY_FAST; #ifndef CONFIG_SPL_BUILD }
/* Not require to look for fastest only two write cmds yet */ if (params->flags & WR_QPP && spi->mode & SPI_TX_QUAD) flash->write_cmd = CMD_QUAD_PAGE_PROGRAM; else #endif /* Go for default supported write cmd */ flash->write_cmd = CMD_PAGE_PROGRAM;
/* Set the quad enable bit - only for quad commands */ if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) || (flash->read_cmd == CMD_READ_QUAD_IO_FAST) || (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) { ret = set_quad_mode(flash, idcode[0]); if (ret) { debug("SF: Fail to set QEB for %02x\n", idcode[0]); return -EINVAL; } }
So there is a call to set_quad_mode that prevented the SPL to work in vanilla 2016.05.
In which case, edit lib/initcall.c and add "#define DEBUG" on the first line of the file, rebuild u-boot and boot. U-Boot will not produce far more debugging output and you should be able to figure out which of the initcalls was the last one that passed (and thus which one
got stuck).
Edit common/board_f.c and locate init_sequence_f[] for the list of
initcalls.
Check u-boot.map to get the symbol addresses in the compiled u-boot. Then compare the output on the console and locate the corresponding initcall which failed.
Or share the u-boot (Elf binary) and console output.
(and please avoid top-posting)
1 GiB initcall: 0100ca47 initcall: 0100c93d initcall: 0100c9e3 initcall: 0100c9bb initcall: 3ff62c1b initcall: 3ff62add initcall: 0100cc4d (relocated to 3ff62c0d)
.text.initr_caches 0x000000000100cc4c 0xa common/built-in.o
board_init_r ==> init_sequence_r ==>
#ifdef CONFIG_ARM initr_caches, /* Note: For Freescale LS2 SoCs, new MMU table is created in
DDR.
* A temporary mapping of IFC high region is since
removed,
* so environmental variables in NOR flash is not
availble
* until board_init() is called below to remap IFC to
high
* region. */
#endif
So it seems we have the classic SDRAM memory not 100% correct
configured causing problems when enabling the caches.
I have my doubts about this, but you can try regenerating the preloader headers from latest CV SoCDK GHRD. You'd have to compile the GHRD with Quartus, then generate the preloader files with bsp-editor and then use ./arch/arm/mach-socfpga/qts-filter.sh to process these generated files into headers that go into board/altera/cyclone5-socdk/qts/
I retested with the same result as before. It hangs at the same place.
You can also try defining CONFIG_SYS_ICACHE_OFF and CONFIG_SYS_DCACHE_OFF to disable caches and see where that gets you.
Cache problems confirmed! I disabled the caches:
1 GiB initcall: 0100c70f initcall: 0100c607 initcall: 0100c6ab initcall: 0100c683 initcall: 3ff738e3 initcall: 3ff737a5 initcall: 0100c915 (relocated to 3ff738d5) initcall: 0100c8ed (relocated to 3ff738ad) initcall: 0100c927 (relocated to 3ff738e7) initcall: 0100c8d1 (relocated to 3ff73891) initcall: 0100c91f (relocated to 3ff738df) initcall: 0100c7e1 (relocated to 3ff737a1) initcall: 0100c8bf (relocated to 3ff7387f) initcall: 0100c8b3 (relocated to 3ff73873) initcall: 010011ef (relocated to 3ff681af) initcall: 01001179 (relocated to 3ff68139) initcall: 010387d1 (relocated to 3ff9f791) initcall: 01013521 (relocated to 3ff7a4e1) initcall: 0100c8a9 (relocated to 3ff73869) initcall: 0100c7fd (relocated to 3ff737bd) initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c607 (relocated to 3ff735c7) initcall: 01000d8d (relocated to 3ff67d4d) initcall: 0100c7f9 (relocated to 3ff737b9) initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c891 (relocated to 3ff73851) MMC: dwmmc0@ff704000: 0 initcall: 0100c849 (relocated to 3ff73809) SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c92d (relocated to 3ff738ed) initcall: 0100c607 (relocated to 3ff735c7) initcall: 01013535 (relocated to 3ff7a4f5) initcall: 0100c83f (relocated to 3ff737ff) initcall: 01010b9d (relocated to 3ff77b5d) In: serial Out: serial Err: serial initcall: 0100c94d (relocated to 3ff7390d) Model: Altera SOCFPGA Cyclone V SoC Development Kit initcall: 01000c19 (relocated to 3ff67bd9) initcall: 0100c607 (relocated to 3ff735c7) initcall: 01000851 (relocated to 3ff67811) initcall: 0100c835 (relocated to 3ff737f5) initcall: 0100c81d (relocated to 3ff737dd) initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c809 (relocated to 3ff737c9) Net: eth0: ethernet@ff702000 initcall: 0100c801 (relocated to 3ff737c1) Hit any key to stop autoboot: 0 =>
So I guess I need to figure out what's missing in the SPL setup of SDRAM.
But I don't understand why this happens. Dinh can you boot your CV socdk
Rev E1 board with 2016.05 SPL?
Best regards,
Christian
On 06/16/2016 12:13 PM, Christian Didriksson wrote:
Hi!
Hi,
> On 06/15/2016 12:06 PM, Christian Didriksson wrote: >> Trying again. > > Hi! > >> I have reverted back to a vanilla u-boot-2016.05, added the >> not-enter-quad-mode patch > > What's this patch ? Can you share it ?
[...]
Thanks
Some comments:
We want to run ECC, but I don't think the SPL supports scrubbing etc. yet so
I undefined those qts-parameters. Am I right regarding ECC for
SDRAM?
I'll delegate this one to Dinh, I never poked into the SRAM ECC stuff.
I couldn't get the SPL to work from the beginning and after much
debugging I found that entering quad-mode for the flash is problematic in the SPL. At the same time I also found this, http://lists.denx.de/pipermail/u- boot/2016-June/256671.html,
confirming my findings.
I have prepared the u-boot MTD-configuration for our setup.
I have added SPL SPI support and configured ENV-parameters and u-boot offset
I have also added the boot command we are going to use.
OK
>> and changed the SPI address where the SPL should load the u-boot >> from > > Can you share this change ? >
See above
>> and it does not work. My question: >> >> Has anyone else tested SPL/u-boot on an Altera CV socdk Rev E1 >> board > recently (like 2016.05)? U-boot hangs after printing memory size. > Same result using different compilers. > > The rev E1 is the latest SoCDK, I only have rev. C1 . I remember > Dinh > (CCed) did send a patch for the rev. E board , so I assume he did > test it, but those were only pinmux changes and it should be part > of the > v2016.05: > > commit 4baca92001bff3c32a05001a7dc58996623e3ef8 > Author: Dinh Nguyen dinguyen@kernel.org > Date: Tue May 10 15:13:59 2016 -0500 > > arm: socfpga: Update iomux and pll for c5 socdk RevE > > Another thing which comes to mind is the change in size of SPL, > that might be worth looking at. Can you check the size of the > SPL, > u-boot-spl-
dtb.bin ?
>
54534 bytes
Try these two patches: https://patchwork.ozlabs.org/patch/627868/ https://patchwork.ozlabs.org/patch/627869/
> I just tested the rev C socdk with 2016.05 and it boots for me. I > will send you the binary I used off-list. >
Does this SPL (loaded from QSPI by bootrom?) load u-boot from
QSPI?
I only tested it booting from SD card, but it should just as well load from QSPI if the board is configured that way.
>> Best regards, >> >> Christian >> >> -----Ursprungligt meddelande----- >> Från: U-Boot [mailto:u-boot-bounces@lists.denx.de] För Christian >> Didriksson >> Skickat: den 9 juni 2016 20:15 >> Till: u-boot@lists.denx.de >> Ämne: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot >> fail when booting from QSPI >> >> Hi All, >> >> I have been struggling for quite some time now to get SPL and >> u-boot to > run from QSPI-flash. Yesterday I was able to identify a > workaround to get the SPL going by disabling quad mode for the > flash (seems identified by > http://lists.denx.de/pipermail/u-boot/2016-June/256671.html). > However > u- boot always hangs after printing memory size. I have tried to > search the archive and have seen posts about hanging here, but > nothing I can relate to my setup. I have tested to use Altera's > SPL
(2013.01.01) and u-boot-2016.5 and this combo seems to work.
>> >> I also notice that the frequency (max-spi-frequency) in the >> dts-file is not > picked up for some reason? >> >> Any help to fix the u-boot hang problem would be highly
appreciated.
>> >> Current printout (with added debug output): >> >> U-Boot SPL 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - >> 17:06:20) >> drivers/ddr/altera/sequencer.c: Preparing to start memory >> calibration >> drivers/ddr/altera/sequencer.c: CALIBRATION PASSED >> drivers/ddr/altera/sequencer.c: Calibration complete Trying to >> boot from SPI >> spl_spi_load_image: bus=0, cs=0, speed=50000000, mode=3 >> cadence_spi_ofdata_to_platdata: regbase=ff705000
ahbbase=ffa00000
>> max-frequency=500000 page-size=256 >> spi_flash_std_probe: slave=01100368, cs=0 >> SF: Read data capture delay calibrated to 7 (0 - 15) >> cadence_spi_set_speed: speed=100000 >> cadence_spi_xfer: len=1 [bytes] >> cadence_spi_xfer: len=5 [bytes] >> SF: Got idcodes >> 00000000: 20 ba 20 10 00 . .. >> SF: Detected N25Q512 >> cadence_spi_xfer: len=1 [bytes] >> cadence_spi_xfer: len=1 [bytes] >> spi_flash_decode_fdt: Cannot decode address >> cadence_spi_xfer: len=0 [bytes] >> cadence_spi_xfer: len=0 [bytes] >> SF: Detected N25Q512 with page size 256 Bytes, erase size 64 >> KiB, total 64 MiB >> SF: Read data capture delay calibrated to 7 (0 - 15) >> cadence_spi_set_speed: speed=500000 >> cadence_spi_xfer: len=5 [bytes] >> cadence_spi_xfer: len=64 [bytes] >> cadence_spi_xfer: len=5 [bytes] >> cadence_spi_xfer: len=443714 [bytes] >> >> >> U-Boot 2016.05 NGA QSPI -g133f59a-dirty (Jun 09 2016 - 17:06:20 >> +0200) >> >> CPU: Altera SoCFPGA Platform >> FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 >> BOOT: QSPI Flash (1.8V) >> Watchdog enabled >> I2C: ready >> DRAM: 1 GiB >> >> >> Best regards, >> >> Christian >> >> >> _______________________________________________ >> U-Boot mailing list >> U-Boot@lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot >> _______________________________________________ >> U-Boot mailing list >> U-Boot@lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot >> > > > -- > Best regards, > Marek Vasut
Best regards,
Christian
-- Best regards, Marek Vasut
-- Best regards, Marek Vasut
Best regards, Christian
-- Best regards, Marek Vasut

On 06/20/2016 06:04 PM, Christian Didriksson wrote:
Hi,
Hi,
On 06/20/2016 03:22 PM, Christian Didriksson wrote:
Hi Marek,
Hi,
On 06/17/2016 04:39 PM, Christian Didriksson wrote:
Hi Marek,
Hi
I applied the two patches you suggested, but got no change in behavior:
U-Boot SPL 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI
U-Boot 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
But this looks like U-Boot started for you. So maybe I misunderstood something right from the getgo . The U-Boot starts, but doesn't get past this point after the DRAM report, right ?
Correct, initially I had an SPL issue that was solved by not entering quad
mode.
We don't support quad mode in U-Boot . You mean not entering Quad mode in Linux ?
Nope, there seems to be quad support in u-boot, from spi_flash.c (my patched version):
#ifndef CONFIG_SPL_BUILD /* Look for the fastest read cmd */ cmd = fls(params->e_rd_cmd & spi->mode_rx); if (cmd) { cmd = spi_read_cmds_array[cmd - 1]; flash->read_cmd = cmd; } else { #endif /* Go for default supported read cmd */ flash->read_cmd = CMD_READ_ARRAY_FAST; #ifndef CONFIG_SPL_BUILD }
/* Not require to look for fastest only two write cmds yet */ if (params->flags & WR_QPP && spi->mode & SPI_TX_QUAD) flash->write_cmd = CMD_QUAD_PAGE_PROGRAM; else #endif /* Go for default supported write cmd */ flash->write_cmd = CMD_PAGE_PROGRAM;
/* Set the quad enable bit - only for quad commands */ if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) || (flash->read_cmd == CMD_READ_QUAD_IO_FAST) || (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) { ret = set_quad_mode(flash, idcode[0]); if (ret) { debug("SF: Fail to set QEB for %02x\n", idcode[0]); return -EINVAL; } }
So there is a call to set_quad_mode that prevented the SPL to work in vanilla 2016.05.
That stuff is not active unless you set spi-rx-bus-width = <4>; in your flash node in DT. The Cadence QSPI driver in U-Boot does not support switching to "parallel spi" (dual/quad) mode yet, even though I do have a patch in progress to add that. It does speed things up.
In which case, edit lib/initcall.c and add "#define DEBUG" on the first line of the file, rebuild u-boot and boot. U-Boot will not produce far more debugging output and you should be able to figure out which of the initcalls was the last one that passed (and thus which one
got stuck).
Edit common/board_f.c and locate init_sequence_f[] for the list of
initcalls.
Check u-boot.map to get the symbol addresses in the compiled u-boot. Then compare the output on the console and locate the corresponding initcall which failed.
Or share the u-boot (Elf binary) and console output.
(and please avoid top-posting)
1 GiB initcall: 0100ca47 initcall: 0100c93d initcall: 0100c9e3 initcall: 0100c9bb initcall: 3ff62c1b initcall: 3ff62add initcall: 0100cc4d (relocated to 3ff62c0d)
.text.initr_caches 0x000000000100cc4c 0xa common/built-in.o
board_init_r ==> init_sequence_r ==>
#ifdef CONFIG_ARM initr_caches, /* Note: For Freescale LS2 SoCs, new MMU table is created in
DDR.
* A temporary mapping of IFC high region is since
removed,
* so environmental variables in NOR flash is not
availble
* until board_init() is called below to remap IFC to
high
* region. */
#endif
So it seems we have the classic SDRAM memory not 100% correct
configured causing problems when enabling the caches.
I have my doubts about this, but you can try regenerating the preloader headers from latest CV SoCDK GHRD. You'd have to compile the GHRD with Quartus, then generate the preloader files with bsp-editor and then use ./arch/arm/mach-socfpga/qts-filter.sh to process these generated files into headers that go into board/altera/cyclone5-socdk/qts/
I retested with the same result as before. It hangs at the same place.
You can also try defining CONFIG_SYS_ICACHE_OFF and CONFIG_SYS_DCACHE_OFF to disable caches and see where that gets you.
Cache problems confirmed! I disabled the caches:
1 GiB initcall: 0100c70f initcall: 0100c607 initcall: 0100c6ab initcall: 0100c683 initcall: 3ff738e3 initcall: 3ff737a5 initcall: 0100c915 (relocated to 3ff738d5) initcall: 0100c8ed (relocated to 3ff738ad) initcall: 0100c927 (relocated to 3ff738e7) initcall: 0100c8d1 (relocated to 3ff73891) initcall: 0100c91f (relocated to 3ff738df) initcall: 0100c7e1 (relocated to 3ff737a1) initcall: 0100c8bf (relocated to 3ff7387f) initcall: 0100c8b3 (relocated to 3ff73873) initcall: 010011ef (relocated to 3ff681af) initcall: 01001179 (relocated to 3ff68139) initcall: 010387d1 (relocated to 3ff9f791) initcall: 01013521 (relocated to 3ff7a4e1) initcall: 0100c8a9 (relocated to 3ff73869) initcall: 0100c7fd (relocated to 3ff737bd) initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c607 (relocated to 3ff735c7) initcall: 01000d8d (relocated to 3ff67d4d) initcall: 0100c7f9 (relocated to 3ff737b9) initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c891 (relocated to 3ff73851) MMC: dwmmc0@ff704000: 0 initcall: 0100c849 (relocated to 3ff73809) SF: Detected N25Q512 with page size 256 Bytes, erase size 64 KiB, total 64 MiB initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c92d (relocated to 3ff738ed) initcall: 0100c607 (relocated to 3ff735c7) initcall: 01013535 (relocated to 3ff7a4f5) initcall: 0100c83f (relocated to 3ff737ff) initcall: 01010b9d (relocated to 3ff77b5d) In: serial Out: serial Err: serial initcall: 0100c94d (relocated to 3ff7390d) Model: Altera SOCFPGA Cyclone V SoC Development Kit initcall: 01000c19 (relocated to 3ff67bd9) initcall: 0100c607 (relocated to 3ff735c7) initcall: 01000851 (relocated to 3ff67811) initcall: 0100c835 (relocated to 3ff737f5) initcall: 0100c81d (relocated to 3ff737dd) initcall: 0100c607 (relocated to 3ff735c7) initcall: 0100c809 (relocated to 3ff737c9) Net: eth0: ethernet@ff702000 initcall: 0100c801 (relocated to 3ff737c1) Hit any key to stop autoboot: 0 =>
So I guess I need to figure out what's missing in the SPL setup of SDRAM.
I'd rather look in the cache direction, it's not clear to me how this would be related to SDRAM. Even though this is odd either way you slice it, it works on Rev C board and not on Rev E , which is weird.
[...]

On 06/20/2016 06:04 PM, Christian Didriksson wrote:
Hi,
Hi,
On 06/20/2016 03:22 PM, Christian Didriksson wrote:
Hi Marek,
Hi,
On 06/17/2016 04:39 PM, Christian Didriksson wrote:
Hi Marek,
Hi
I applied the two patches you suggested, but got no change in
behavior:
U-Boot SPL 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI
U-Boot 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
But this looks like U-Boot started for you. So maybe I misunderstood something right from the getgo . The U-Boot starts, but doesn't get past this point after the DRAM report, right ?
Correct, initially I had an SPL issue that was solved by not entering quad
mode.
We don't support quad mode in U-Boot . You mean not entering Quad mode in Linux ?
Nope, there seems to be quad support in u-boot, from spi_flash.c (my
patched version):
#ifndef CONFIG_SPL_BUILD /* Look for the fastest read cmd */ cmd = fls(params->e_rd_cmd & spi->mode_rx); if (cmd) { cmd = spi_read_cmds_array[cmd - 1]; flash->read_cmd = cmd; } else { #endif /* Go for default supported read cmd */ flash->read_cmd = CMD_READ_ARRAY_FAST; #ifndef CONFIG_SPL_BUILD }
/* Not require to look for fastest only two write cmds yet */ if (params->flags & WR_QPP && spi->mode & SPI_TX_QUAD) flash->write_cmd =
CMD_QUAD_PAGE_PROGRAM;
else #endif /* Go for default supported write cmd */ flash->write_cmd = CMD_PAGE_PROGRAM;
/* Set the quad enable bit - only for quad commands */ if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST)
||
(flash->read_cmd == CMD_READ_QUAD_IO_FAST) || (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) { ret = set_quad_mode(flash, idcode[0]); if (ret) { debug("SF: Fail to set QEB for
%02x\n", idcode[0]);
return -EINVAL; }
}
So there is a call to set_quad_mode that prevented the SPL to work in
vanilla 2016.05.
That stuff is not active unless you set spi-rx-bus-width = <4>; in your flash node in DT. The Cadence QSPI driver in U-Boot does not support switching to "parallel spi" (dual/quad) mode yet, even though I do have a patch in progress to add that. It does speed things up.
Ok, during my first test of 2016.05 I used menuconfig to configure some options and I think there might have been some problems there in combination with the flash DT entry. I reverted back to the original spi_flash.c now and the SPL still works. Confused...
In which case, edit lib/initcall.c and add "#define DEBUG" on the first line of the file, rebuild u-boot and boot. U-Boot will not produce far more debugging output and you should be able to figure out which of the initcalls was the last one that passed (and thus which one
got stuck).
Edit common/board_f.c and locate init_sequence_f[] for the list of
initcalls.
Check u-boot.map to get the symbol addresses in the compiled u-boot. Then compare the output on the console and locate the corresponding initcall which failed.
Or share the u-boot (Elf binary) and console output.
(and please avoid top-posting)
1 GiB initcall: 0100ca47 initcall: 0100c93d initcall: 0100c9e3 initcall: 0100c9bb initcall: 3ff62c1b initcall: 3ff62add initcall: 0100cc4d (relocated to 3ff62c0d)
.text.initr_caches 0x000000000100cc4c 0xa common/built-in.o
board_init_r ==> init_sequence_r ==>
#ifdef CONFIG_ARM initr_caches, /* Note: For Freescale LS2 SoCs, new MMU table is created in
DDR.
* A temporary mapping of IFC high region is since
removed,
* so environmental variables in NOR flash is not
availble
* until board_init() is called below to remap IFC to
high
* region. */
#endif
So it seems we have the classic SDRAM memory not 100% correct
configured causing problems when enabling the caches.
I have my doubts about this, but you can try regenerating the preloader headers from latest CV SoCDK GHRD. You'd have to compile the GHRD with Quartus, then generate the preloader files with bsp-editor and then use ./arch/arm/mach-socfpga/qts-filter.sh to process these generated files into headers that go into board/altera/cyclone5-socdk/qts/
I retested with the same result as before. It hangs at the same place.
You can also try defining CONFIG_SYS_ICACHE_OFF and CONFIG_SYS_DCACHE_OFF to disable caches and see where that gets
you.
Cache problems confirmed! I disabled the caches:
[..]
So I guess I need to figure out what's missing in the SPL setup of SDRAM.
I'd rather look in the cache direction, it's not clear to me how this would be related to SDRAM. Even though this is odd either way you slice it, it works on Rev C board and not on Rev E , which is weird.
I think Dinh has tested Rev E for the qts updates earlier and it seems to work for him? The combo Altera 2013.01.01 SPL + u-boot.2016.05 works for me and that might point in the SPL SDRAM setup direction. Maybe Altera has replaced the SDRAM devices between Rev C and Rev E?
[...]
-- Best regards, Marek Vasut

Hi!
We don't support quad mode in U-Boot . You mean not entering Quad mode in Linux ?
Nope, there seems to be quad support in u-boot, from spi_flash.c (my patched version):
#ifndef CONFIG_SPL_BUILD /* Look for the fastest read cmd */ cmd = fls(params->e_rd_cmd & spi->mode_rx); if (cmd) { cmd = spi_read_cmds_array[cmd - 1]; flash->read_cmd = cmd; } else { #endif /* Go for default supported read cmd */ flash->read_cmd = CMD_READ_ARRAY_FAST; #ifndef CONFIG_SPL_BUILD }
/* Not require to look for fastest only two write cmds yet */ if (params->flags & WR_QPP && spi->mode & SPI_TX_QUAD) flash->write_cmd = CMD_QUAD_PAGE_PROGRAM; else #endif /* Go for default supported write cmd */ flash->write_cmd = CMD_PAGE_PROGRAM;
/* Set the quad enable bit - only for quad commands */ if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) || (flash->read_cmd == CMD_READ_QUAD_IO_FAST) || (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) { ret = set_quad_mode(flash, idcode[0]); if (ret) { debug("SF: Fail to set QEB for %02x\n", idcode[0]); return -EINVAL; } }
So there is a call to set_quad_mode that prevented the SPL to work in vanilla 2016.05.
Just for the record, I seen similar problems on is1 board, and they also somehow magically went away.
One possibility was that SPL was too big, and the quad spi probing pushed it over the limits.
Best regards, Pavel

Trying to respond inline:
On 06/17/2016 09:39 AM, Christian Didriksson wrote:
Hi Marek,
I applied the two patches you suggested, but got no change in behavior:
U-Boot SPL 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35) drivers/ddr/altera/sequencer.c: Preparing to start memory calibration drivers/ddr/altera/sequencer.c: CALIBRATION PASSED drivers/ddr/altera/sequencer.c: Calibration complete Trying to boot from SPI
I haven't tested on QSPI. I tested my patch on a board with SD/MMC. I'll check it on a QSPI board shortly.
U-Boot 2016.05-ga0bd0e7-dirty (Jun 17 2016 - 16:32:35 +0200)
CPU: Altera SoCFPGA Platform FPGA: Altera Cyclone V, SE/A6 or SX/C6 or ST/D6, version 0x0 BOOT: QSPI Flash (1.8V) Watchdog enabled I2C: ready DRAM: 1 GiB
Best regards,
Christian
On 06/16/2016 12:13 PM, Christian Didriksson wrote:
Hi!
Hi,
On 06/15/2016 12:06 PM, Christian Didriksson wrote:
Trying again.
Hi!
I have reverted back to a vanilla u-boot-2016.05, added the not-enter-quad-mode patch
What's this patch ? Can you share it ?
[...]
Thanks
Some comments:
We want to run ECC, but I don't think the SPL supports scrubbing etc. yet so
I undefined those qts-parameters. Am I right regarding ECC for SDRAM?
Yes, in order for ECC, you need to scrub the SDRAM. I'll look to see what is needed.
Dinh
participants (5)
-
Christian Didriksson
-
Dinh Nguyen
-
Marek Vasut
-
Marek Vasut
-
Pavel Machek