Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Altera_Forum
Honored Contributor I
833 Views

qspi flash DMA doesn't work

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 I
38 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