All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Didriksson <christian@didritec.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI
Date: Thu, 16 Jun 2016 10:13:50 +0000	[thread overview]
Message-ID: <AM4PR0401MB23699FE5C2BCE7BA6C2B850DC4560@AM4PR0401MB2369.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <5761D879.8050105@gmail.com>

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),"          \
-                               "- at 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 at lists.denx.de] F?r Christian
> > Didriksson
> > Skickat: den 9 juni 2016 20:15
> > Till: u-boot at 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 at lists.denx.de
> > http://lists.denx.de/mailman/listinfo/u-boot
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > http://lists.denx.de/mailman/listinfo/u-boot
> >
> 
> 
> --
> Best regards,
> Marek Vasut

Best regards,

Christian

  reply	other threads:[~2016-06-16 10:13 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-09 18:15 [U-Boot] socfpga 2016.05, CV socdk Rev E1, SPL and u-boot fail when booting from QSPI Christian Didriksson
2016-06-15 10:06 ` Christian Didriksson
2016-06-15 22:36   ` Marek Vasut
2016-06-16 10:13     ` Christian Didriksson [this message]
2016-06-16 13:32       ` Marek Vasut
2016-06-17 14:39         ` Christian Didriksson
2016-06-17 14:48           ` Marek Vasut
2016-06-20 13:22             ` Christian Didriksson
2016-06-20 13:43               ` Marek Vasut
2016-06-20 16:04                 ` Christian Didriksson
2016-06-20 20:22                   ` Marek Vasut
2016-06-21  7:32                     ` Christian Didriksson
2016-06-29  7:03                   ` Pavel Machek
2016-06-17 16:45           ` Dinh Nguyen
2016-06-21 15:30 Christian Didriksson
2016-06-21 17:07 ` Marek Vasut
2016-06-21 19:22   ` Christian Didriksson
2016-06-22 16:37     ` Christian Didriksson
2016-06-23 13:07       ` Marek Vasut
2016-06-23 15:58         ` Sylvain Lesne
2016-06-23 16:14           ` Marek Vasut
2016-06-23 16:31             ` Sylvain Lesne
2016-06-23 18:42               ` Marek Vasut
2016-06-27  9:10                 ` Christian Didriksson
2016-06-27  9:38                   ` Sylvain Lesne
2016-06-27 10:43                     ` Christian Didriksson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AM4PR0401MB23699FE5C2BCE7BA6C2B850DC4560@AM4PR0401MB2369.eurprd04.prod.outlook.com \
    --to=christian@didritec.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.