Tool/software:
Hello,
I almost got my driver and app to successfully use DMA to transfer data from my ASIC via a QSPI interface. I still have two issues, one is a data corruption which is being looked at in another post and the other issue is that my system has too much interrupt latency for the GPIO IRQ handler to reliably start the DMA transfer. I am hoping that using GPIO auto trigger to initiate the DMA transfer will fix the problem. I saw the other post that explains the process for QNX but I am using LInux for my OS. Can someone give me an example on how to implement this in Linux?
I assume that a change to the .dts file is in order. Below is the node for the driver. What changes are needed to change that GPIO interrupt to be auto triggered and also in the driver code?
Thanks,
Victor
&ospi0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&main_ospi0_pins_default>;
compatible = "slq,qspi-nor";
reg = <0x00 0x0fc40000 0x00 0x100>,
<0x05 0x00000000 0x01 0x00000000>;
clock-names = "slq-clk";
memory-region = <&slq_rx_region>;
interrupt-names = "slq-irq";
interrupt-parent = <&main_gpio0>;
interrupts = <62 IRQ_TYPE_EDGE_FALLING>;
gpio-irq = <&main_gpio0 62 GPIO_ACTIVE_LOW>;
maxwell0: am62x@0 {
status = "okay";
is-dual = <0>;
num-cs = <1>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <4>;
compatible = "trimble,maxwell-slq0", "jedec,spi-nor";
reg = <0x0>;
spi-max-frequency = <50000000>;
cdns,read-delay = <50>;
cdns,tshsl-ns = <4>;
cdns,tsd2d-ns = <4>;
cdns,tchsh-ns = <4>;
cdns,tslch-ns = <4>;
};
};