Jump to content

Recommended Posts

Posted

Hi!

 

I have an rk3588 board that has a dma330 controller. I have this driver that essentially polls a dmac channel and it memory maps the data that is received into user space. Now, this driver was developed with the idea to receive data from a peripheral, however, before that I just want to test it by doing some memory to memory transactions. To that end I developed another kernel module that acts as a transmitter (code attached: aerietest.c). However, I am not able to link the transmitting end of the channel with the receiveing end. I added the following code in the device tree:

aerie@0 {
 #dma-cells = <0x01>;
  compatible = "lyte-ai,l2";
  dmas = <&dmac0 1>; 
  dma-names = "rx";

}

 

And both the rx and tx kernel modules link to it. However, whenever I modprobe of the modules I cannot probe the other, so I imagine that an entry in the device try can be used only by a single kernel module at a time.

I also tried adding 2 entries in the device tree that reference the same channel, but that doesn't work also - the dma_request_chan function fails when called from the second module that is modprobed.

 

So my question is: is it possible to inject some data mock that to test my receiving driver by using another kernel module? If yes, how can I do that?

 

Regards. 

aerietest.c

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines