Skip to contentSkip to conversation

SPI flash on Altera socfpga

U-Boot Pavel Machek 4 participants 7 messages Apr 20, 2015 – Apr 22, 2015

lore
Share & tools
lore
#0 lore raw

Hi!

I see that u-boot 2015.04 has SPI flash configured in the socfpga_cyclone5_socrates.dts. But as far as I know, socdk should have same SPI flash, right? Should similar dts part be enabled there, too?

I tried to get the support to work on custom board, but was not successful so far. Does it work for you, or are still some parts missing?

Best regards,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#1 lore raw
Quoted 9 lines · Pavel Machek

Hi!

I see that u-boot 2015.04 has SPI flash configured in the socfpga_cyclone5_socrates.dts. But as far as I know, socdk should have same SPI flash, right? Should similar dts part be enabled there, too?

I tried to get the support to work on custom board, but was not successful so far. Does it work for you, or are still some parts missing?

Which SPI flash are you talking about -- QSPI one or EPCS/EPCQ one ?

I think Stefan got the QSPI one working. EPCQ is a bit trickier.

Best regards,
Marek Vasut

#2 lore raw
In reply to Pavel Machek

Hi Pavel,

Quoted 3 lines · Pavel Machek

I see that u-boot 2015.04 has SPI flash configured in the socfpga_cyclone5_socrates.dts. But as far as I know, socdk should have same SPI flash, right? Should similar dts part be enabled there, too?

SPI NOR flash is working for me on SoCrates and another similar custom SOCFPGA based board just fine.

Quoted 3 lines

I tried to get the support to work on custom board, but was not successful so far. Does it work for you, or are still some parts missing?

Not that I know of. What are the problems that you experience?

Thanks,
Stefan

#3 lore raw

Hi!

Quoted 11 lines
Quoted 7 lines

I see that u-boot 2015.04 has SPI flash configured in the socfpga_cyclone5_socrates.dts. But as far as I know, socdk should have same SPI flash, right? Should similar dts part be enabled there, too?

I tried to get the support to work on custom board, but was not successful so far. Does it work for you, or are still some parts missing?

Which SPI flash are you talking about -- QSPI one or EPCS/EPCQ one ?

I think Stefan got the QSPI one working. EPCQ is a bit trickier.

Datasheet mentions QSPI_IO*/CLK/SS* pins, so I assume it is QSPI.

Quoted 7 lines · Pavel Machek
Quoted 3 lines

I see that u-boot 2015.04 has SPI flash configured in the socfpga_cyclone5_socrates.dts. But as far as I know, socdk should have same SPI flash, right? Should similar dts part be enabled there, too?

SPI NOR flash is working for me on SoCrates and another similar custom SOCFPGA based board just fine.

Thanks, that's useful to know.

Quoted 5 lines
Quoted 3 lines

I tried to get the support to work on custom board, but was not successful so far. Does it work for you, or are still some parts missing?

Not that I know of. What are the problems that you experience?

For tests, I've used config similar to socrates, even through the board should be more similar to socdk:

U-Boot 2015.04-rc4-00103-gef7e76c-dirty (Apr 20 2015 - 10:24:33)

CPU: Altera SoCFPGA Platform
Watchdog enabled
I2C: ready
DRAM: 256 MiB
MMC: SOCFPGA DWMMC: 0
Using default environment

In:    serial
Out:   serial
Err:   serial
Model: EBV SOCrates
Net:   dwmac.ff702000
Hit any key to stop autoboot:  0

=> sf probe
Invalid chip select 0:0 (err=-19)
SF: Failed to set up slave
Failed to initialize SPI flash at 0:0
=>

One thing that puzzles me:

./arch/arm/dts/socfpga_cyclone5_socrates.dts: flash0: n25q00 at 0 {
./arch/arm/dts/socfpga_cyclone5_socrates.dts: compatible = "n25q00";

..but I see no mention of that compatible string anywhere else. 2013-altera u-boot used ./drivers/mtd/spi/stmicro.c to handle it...

Best regards,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#4 lore raw
Quoted 5 lines · Pavel Machek
Quoted 3 lines

Which SPI flash are you talking about -- QSPI one or EPCS/EPCQ one ?

I think Stefan got the QSPI one working. EPCQ is a bit trickier.

Datasheet mentions QSPI_IO*/CLK/SS* pins, so I assume it is QSPI.

Yes, QSPI handles the SPI NOR flash chips on SoCFPGA.

Quoted 34 lines
Quoted 7 lines · Pavel Machek
Quoted 3 lines

I see that u-boot 2015.04 has SPI flash configured in the socfpga_cyclone5_socrates.dts. But as far as I know, socdk should have same SPI flash, right? Should similar dts part be enabled there, too?

SPI NOR flash is working for me on SoCrates and another similar custom SOCFPGA based board just fine.

Thanks, that's useful to know.

Quoted 5 lines
Quoted 3 lines

I tried to get the support to work on custom board, but was not successful so far. Does it work for you, or are still some parts missing?

Not that I know of. What are the problems that you experience?

For tests, I've used config similar to socrates, even through the board should be more similar to socdk:

U-Boot 2015.04-rc4-00103-gef7e76c-dirty (Apr 20 2015 - 10:24:33)

CPU: Altera SoCFPGA Platform
Watchdog enabled
I2C: ready
DRAM: 256 MiB
MMC: SOCFPGA DWMMC: 0
Using default environment

In:    serial
Out:   serial
Err:   serial
Model: EBV SOCrates
Net:   dwmac.ff702000
Hit any key to stop autoboot:  0
Quoted 5 lines

=> sf probe
Invalid chip select 0:0 (err=-19)
SF: Failed to set up slave
Failed to initialize SPI flash at 0:0
=>

IIRC, then the aliases in the dts are very important for this:

  	aliases {
		spi0 = "/spi at ff705000";		/* QSPI */
		...

Did you add those to your dts as well?

Quoted 8 lines

One thing that puzzles me:

./arch/arm/dts/socfpga_cyclone5_socrates.dts: flash0: n25q00 at 0 {
./arch/arm/dts/socfpga_cyclone5_socrates.dts: compatible = "n25q00";

..but I see no mention of that compatible string anywhere else. 2013-altera u-boot used ./drivers/mtd/spi/stmicro.c to handle it...

IIRC, the flash detection is done via autodetection by reading the parameters from the chip itself.

Thanks,
Stefan

#5 lore raw

[U-Boot] SPI flash only works after sspi command (was Re: SPI flash on Altera socfpga)

Hi!

Quoted 7 lines

IIRC, then the aliases in the dts are very important for this:

 	aliases {
		spi0 = "/spi at ff705000";		/* QSPI */
		...

Did you add those to your dts as well?

I was using socrates dts for the moment, to keep diffs small. Suddenly it started working.. and stopped working after reset. Now I realized what is going on:

=> sf probe
Invalid chip select 0:0 (err=-19)
SF: Failed to set up slave
Failed to initialize SPI flash at 0:0
=> sf probe 0 0 0
Invalid chip select 0:0 (err=-19)
SF: Failed to set up slave
Failed to initialize SPI flash at 0:0
=> sspi
QSPI: Error, command is empty.
Error -1 during SPI transaction
=> sf probe 0 0 0
raise: Signal # 8 caught
raise: Signal # 8 caught
raise: Signal # 8 caught
SF: Detected N25Q512 with page size 256 Bytes, erase size 4 KiB, total 64 MiB
SF: Warning - Only lower 16MiB accessible, Full access #define CONFIG_SPI_FLASH_BAR
=>

(u-boot 2015.04 final)

Is there missing initialization somewhere...?

Best regards,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#6 lore raw
In reply to Stefan Roese

Hi Pavel,

Quoted 16 lines · Stefan Roese
Quoted 5 lines · Pavel Machek
Quoted 3 lines

Which SPI flash are you talking about -- QSPI one or EPCS/EPCQ one ?

I think Stefan got the QSPI one working. EPCQ is a bit trickier.

Datasheet mentions QSPI_IO*/CLK/SS* pins, so I assume it is QSPI.

Yes, QSPI handles the SPI NOR flash chips on SoCFPGA.

Quoted 7 lines
Quoted 7 lines · Pavel Machek
Quoted 3 lines

I see that u-boot 2015.04 has SPI flash configured in the socfpga_cyclone5_socrates.dts. But as far as I know, socdk should have same SPI flash, right? Should similar dts part be enabled there, too?

SPI NOR flash is working for me on SoCrates and another similar custom SOCFPGA based board just fine.

I just re-tested SPI NOR on SoCratres. And it also is broken starting with this commit:

$ git bisect good
0f36f957f4108d2d1d935e3076b7ae91f4e65a7d is the first bad commit
commit 0f36f957f4108d2d1d935e3076b7ae91f4e65a7d
Author: Simon Glass <[email protected]>

Even the v2015.04 release has non-working SPI NOR I'm afraid. In current master its fixed again. This patch here fixes this bug:

b3d023b4058acc83d211555e62068f84e322bcac
"dm: spi_flash: fix wrong dependency"

I'll resend another mail to Tom, asking him to queue this patch for a potential v2015.04 stable release.

Thanks,
Stefan