ARMのDMAの構成はなかなか複雑。
たいていは複数のバスにそれぞれDMAコントローラが居たりする。
そんなのを無理やり統合して扱おうとしている世界。
しかし、無理くり統合して、持てる機能を実装した結果、
CPUの負荷を軽減するサポート機能のDMAとして、
ものすごくオーバーヘッドの大きなライブラリになってしまってる。
↓
複数のバスサポート、複数の割り込みコントローラーサポート、
DMAにコマンドをDMAするような、複数の間接DMAサポート。
でも、実際に使うDMAはごく限られている。w
例えば、、、とある実装では、
16ch をシームレスに使う必要はない
必要なのは3モード (ReadWrite、ReadOnly、WriteOnly)、
4機能(シンプル、リニア、リンクド、ハイブリッド)で
全12種類の内の1つだけ。
なので、軽いそれ専用のドライバを書き起こす必要に迫られてる。