-
Notifications
You must be signed in to change notification settings - Fork 232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
only one (tx) vdma channel recognized #15
Comments
Interesting, I haven't seen this issue before. I'll need to run through this myself before I can say for sure what the issue is. In the meantime, can you attach the full output from |
Hello, thank you for your interest. Attached are 2 files - outputs from dmesg. The first one is without the axidma.ko driver loaded and the other one is after insmod axidma.ko. Also I checked the /proc/device-tree entries - they looks like OK. The VDMA branch contains two channels... |
Sorry, I've been busy for the past week, so I haven't had much time to look at this. Are you on the most recent commit for this repository? I noticed that your device tree is missing the |
Hello, sorry for the late answer - I am very busy too. I am also sorry, I've copied a bad version of the device-tree VDMA entry in my first post. The current one I am using is the following:
Anyway, the result is the same. Only one channel is found. And yes, I am using the most recent version of your driver. |
hi bperez77, i´m using your driver with a vdma IP in a loopback mode. i´m using your driver and i have the same issue of jamsoftJirka. my device-tree is very similar. I pass the console output when i execute
Thank you for your time and efford. |
Hello, I've built another linux kernel for my board - the Petalinux 2016.3 and SDK, 4.6.0-xilinx (instead of Linaro) and the result is the same. Only one channel (transmit) was found... Do you have any suggestion, please? Thank you. Jirka |
@jamsoftJirka, @rogumag I'm looking at this right now. I'm working off the branch |
Wow this was quite a dumb error on my part, I was simply incrementing the wrong value. This should be fixed by 46c24a5. Try pulling, recompling your code, and let me know if it works. |
Hi brandon, i have proved your fixed code and works very well. i have one transmit channel and one receive chanel. The examples code works with VDMA or only with DMA channels??? |
Hello Brandon, thank you for your effort and the problem solution! I will give it a try this afternoon... Jirka |
So, as Rogumag, I have 1 tx and 1 transmit after changing the code :) Great work! Also I have the same question - the example codes work with the dma only? If I do not make mistake, there is only axidma_init function in the library and axivdma_init is missing. What to change to init struct for dma_init function with vdma channels, please? Thank you, Jirka |
At the moment, all of the code for VDMA is there in the driver, but I never did get the chance to integrate it into the userspace library. I should be able to add it into the library pretty quickly, but you also have the option of using the driver's IOCTL inteface directly. |
There's a couple changes I need to make to the driver, but I think I should be able to get VDMA transactions up and running. Most of the code is already there, there's just no code path to it currently, since I didn't need it when I frist wrote the driver. |
Thank you, Brandon. It could be great if you can modify the code to make VDMA transactions up and running. For me personaly it could be a great help. Thank you and have a nice day! |
I've added support for VDMA to driver with commit 4642323. Unfortunately, I haven't been able to get even the VDMA properly working in a loopback configuration. I've even tried running their AXI VDMA test driver (drivers/dma/xilinx/vdmatest.c), and that didn't work for me either. So, I think either the issue is that my device tree is incorrect, or the Xilinx DMA driver doesn't support frame counter interrupts. I believe is the latter, because, when I look over their driver (drivers/dma/xilinx/xilinx_dma.c), I don't see them enabling frame count interrupts anywhere. Without this, the only time the VDMA IP generates an interrupt is when an error occurs. Here's the device tree I'm using:
|
Hello,
please, help to solve the problem...
I have a Zynq board (7020) running Linux (Linaro 4.4).
My design is using Xilinx VDMA IP Core configured in a loopback mode.
If I try insmod axidma.ko driver (and dmesg | grep dma) then only one VDMA channel (tx) is recognized. The driver reads the info about channels from the device-tree but it does not see the rx channel. Instead it finds the not configured (and non-existing) DMA receive channel...
Here are my VDMA and driver nodes in devicetree.dts:
axi_vdma_0: axivdma@40030000 {
compatible = "xlnx,axi-vdma", "xlnx,axi-vdma-6.2", "xlnx,axi-vdma-1.00.a";
#dma-cells = <1>;
reg = < 0x40030000 0x10000 >;
dma-ranges = <0x00000000 0x00000000 0x40000000>;
xlnx,num-fstores = <0x8>;
xlnx,flush-fsync = <0x1>;
xlnx,addrwidth = <0x20>;
clocks = <&clkc 15>, <&clkc 15>, <&clkc 15>, <&clkc 15>, <&clkc 15>;
clock-names = "s_axi_lite_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk",
"m_axis_mm2s_aclk", "s_axis_s2mm_aclk";
dma-channel@40030000 {
compatible = "xlnx,axi-vdma-mm2s-channel";
interrupts = < 0 54 4 >;
xlnx,datawidth = <0x40>;
} ;
dma-channel@40030030 {
compatible = "xlnx,axi-vdma-s2mm-channel";
interrupts = < 0 53 4 >;
xlnx,datawidth = <0x40>;
} ;
} ;
};
The messages from the axidma driver after insmod:
axidma: axidma_dma.c: axidma_dma_init: 674: DMA: Found 0 transmit channels and 1 receive channels.
axidma: axidma_dma.c: axidma_dma_init: 676: VDMA: Found 1 transmit channels and 0 receive channels.
I have no entry for AXI DMA in the device tree nor there is no AXI DMA in the design. Only AXI VDMA is present in the design and devicetree...
The Linux (Xilinx) VDMA driver says:
xilinx-vdma 43000000.axivdma: Xilinx AXI VDMA Engine Driver Probed!!
Am I missing something or there is a problem with the driver itself, please?
Thank you for your help!
The text was updated successfully, but these errors were encountered: