-
Notifications
You must be signed in to change notification settings - Fork 80
hw: Adds support for iDMA with configurable frontend(s) (desc64
and/or reg64
)
#183
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
base: main
Are you sure you want to change the base?
Conversation
…r addresses that are not 64-bit aligned
Hi,
The node is in the device tree, but there is not a driver compatible with it. I have generated the iis-idma.ko and loaded it, but lots of symbols are missing:
Seems like nothing related to the idma driver has been built. Thanks EDIT I get the following output:
So I think they are built in the kernel. However, when booting that image and executing: I get no output. As far as I know, I should get the symbol just as I got it from the image. Am I right? |
I manage to insmod the iis-idma driver. I am not sure yet what was going on and why the symbols needed were missing. I will get back to that later. Thanks |
Hi, |
Hi, |
Hi @Jorgebrihu The three modes are:
The proxy driver and the example applications are located in Concerning the missing symbols you mentioned above when loading the I hope this helps |
Hi |
This PR adds support for iDMA with configurable frontend(s). The supported frontends are:
reg64
: Frontend that can be configured through registers, either1d
and2d
frontend can be activateddesc64
: Frontend that can be configured through descriptors and thus is optimal for use with the Linux kernel through the DMA Engine APIAdapt
cheshire_cfg_t
Added new configuration parameters to enable/disable frontends at one's liking. The new configuration options are:
bit DmaConfFrontendDesc64
: Enables thedesc64
iDMA frontend when setbit DmaConfFrontendReg64
: Enables thereg64
iDMA frontend when setbit DmaConfFrontendReg64TwoD
: Uses2d
frontend when set, otherwise1d
Request arbiter
When we have multiple frontends instantiated, then we need some sort of arbiter that selects an iDMA request and forwards it to the backend. To do that, a new module has been added to the iDMA wrapper file called
cheshire_idma_fe_arb
.Initially, the arbiter uses the
rr_arb_tree
(from common cell lib) arbiter module to select a valid frontend request. However, once a request from a frontend is selected, the arbiter forwards consecutive requests only from the selected frontend as long as the frontend keeps sending new requests before the iDMA backend responses to the latest request.Testing
The implementation has been simulated and tested for both frontends. Furthermore, the
desc64
frontend has been tested on Linux (Genesys2 hardware) usingdmatest
and an appropriate driver1.Footnotes
To include the iDMA Linux driver, a pull request has been opened in the CVA6-SDK repository, which should be merged before this PR, such that the submodule reference can be updated. ↩