Nios® II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.

qspi flash DMA doesn't work

Altera_Forum
Honored Contributor II
905 Views

so I got my custom board to work with the qspi flash. 

using the dts example from rocketboards to bring up the qspi flash I got it to work and boot but boot time is now doubled (20 seconds from u-boot to terminal) :( 

I noticed on boot that the cadence-qspi reports it can't open the dma channels listed and falls back to non dma use. 

 

 

qspi: spi at ff705000compatible (http://lists.rocketboards.org/cgi-bin/mailman/listinfo/rfi) = "cadence,qspi"; # address-cells = <1>; # size-cells = <0>; reg = <0xff705000 0x1000>, <0xffa00000 0x1000>; interrupts = <0 151 4>; master-ref-clk = <400000000>; ext-decoder = <0>; /* external decoder */ num-chipselect = <4>; fifo-depth = <128>; bus-num = <2>; enable-dma; tx-dma-peri-id = <24>; rx-dma-peri-id = <25>; 

any ideas???
0 Kudos
1 Reply
Altera_Forum
Honored Contributor II
110 Views

HI!! 

So, first a couple of things!! 

 

addr are rigth, but a width is wrong! 

reg = <0xff705000 0x1000>, 

<0xffa00000 0x1000>; 

 

It should be 

 

reg = <0xff705000 0x1000>, /*qspiregs 4KB*/ 

<0xffa00000 0x100000>; /*qspidata 1MB*/ 

 

- Or!! Maybe youre missing the dma definition in the dts. Should looks like this  

 

amba { 

compatible = "arm,amba-bus"; /* drivers/of/platform.c */ 

# address-cells = <1>; 

# size-cells = <1>; 

ranges; 

 

pdma: pdma@ffe01000 { /*bindings/dma/arm-pl330.txt */ 

compatible = "arm,pl330", "arm,primecell"; /* drivers/of/platform.c */ 

reg = <0xffe01000 0x1000>; /* DMASECURE */ 

interrupts = <0 104 4>, /* 8 DMA Channels */ 

<0 105 4>, 

<0 106 4>, 

<0 107 4>, 

<0 108 4>, 

<0 109 4>, 

<0 110 4>, 

<0 111 4>; 

# dma-cells = <1>; 

# dma-channels = <8>; 

# dma-requests = <32>; 

clocks = <&l4_main_clk>; 

clock-names = "apb_pclk"; 

}; //end pdma  

}; //end amba 

 

- Or maybe .... are you using Linux Kernel 4.0.0????. I'm also missing the cadence qspi driver @ kernel 4! 

 

bye
Reply