Tool/software:
Hello,
I'm using GPMC to read an external NAND memory.
My dts file is as follows:
&gpmc0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&mygpmc1_pins_default>;
#address-cells = <2>;
#size-cells = <1>;
ranges = <2 0 0x00 0x50000000 0x1000000>; /* CS2 @addr 0x50000000, size 0x1000000 */
nand@2,0 {
compatible = "ti, am64-nand";
reg = <2 0 0x100>; //cs2
bank-width = <2>;
nand-bus-width = <16>;
gpmc,mux-add-data = <2>; // 2 for address-data multiplexing mode.
gpmc,cs-on-ns = <0>;
gpmc,cs-rd-off-ns = <190>;
gpmc,cs-wr-off-ns = <190>;
gpmc,adv-on-ns = <0>;
gpmc,adv-rd-off-ns = <40>;
gpmc,adv-wr-off-ns = <40>;
gpmc,oe-on-ns = <80>;
gpmc,oe-off-ns = <190>;
gpmc,we-on-ns = <80>;
gpmc,we-off-ns = <170>;
gpmc,rd-cycle-ns = <190>;
gpmc,wr-cycle-ns = <190>;
gpmc,access-ns = <150>;
gpmc,page-burst-access-ns = <6>;
gpmc,bus-turnaround-ns = <12>;
gpmc,cycle2cycle-delay-ns = <20>;
gpmc,wr-data-mux-bus-ns = <90>;
gpmc,wr-access-ns = <190>;
gpmc,cycle2cycle-samecsen;
gpmc,cycle2cycle-diffcsen;
};
}
Using memcpy in my code to read the memory, this part seems to work fine.
I was wondering how I should implement the DMA transfer in order to speed up the reading of my memory.
Is adding the following line in the dts file sufficient?
ti,nand-xfer-type = "prefetch-dma";
By adding that line, the CPU load appears to be the same, and I was hoping that this load would decrease with the use of DMA transfer.
Is there any example of DMA implementation on GPMC for an AM64 processor?
Best regards,
Julien