[uClinux-dev] Freescale's MCDMAAPI vs. Generic Linux DMA API
on Coldfire MCF548x
Greg Ungerer
gerg at snapgear.com
Wed Feb 27 01:44:32 EST 2008
Hi Markus,
Markus Franke wrote:
> well, as far as I understand the generic DMA API in the Linux kernel
> should provide an abstraction layer to driver developers and tries to
> hide all the specifics about DMA implementation. That means a developer
> should be able to use DMA in it's drivers by simply using some kind of a
> call flow:
>
> request_dma
> set_dma_addr
> set_dma_mode
> set_dma_count
> enable_dma
> disable_dma
> free_dma
>
> As such, no specific knowledge about the DMA controller is needed by the
> driver developer to set up DMA transfers.
>
> The MCF548x uses a very different DMA controller than for example the
> MCF5272. Now, Freescale provides the MCDMAAPI in order to control all
> the tiny bits in the controller. Furthermore, I have a modified version
> of the FEC-driver, from Freescale's latest BSP, running within uClinux.
> This driver strongly depends on the MCDMAAPI and some internals of the
> DMA controller itself. (e.g. setting descriptors which point to
> microcode necessary for the DMA engine)
> I want to move this code on top of the generic linux DMA layer.
>
> Now, my problem is that there are lot's of things to be followed in the
> FEC driver in order to get DMA working. Actually, all these things
> should be moved somewhere in target specific DMA code (maybe
> arch/m68knommu/dma.c???)
Perhaps something like arch/m68knommu/platform/547x/dma.c
may be more appropriate. I expect this will remain specific
to the 547x/548x parts.
> in order to hide these things from the driver
> developer, right? The idea is now to remove all the MCDMAAPI-calls from
> the FEC-driver and replace them with the generic API calls listed above.
> Would this be the right way?
Yes, I think that is the right way to do it.
The DMA engine can be used for other things than the FEC ethernets
right?
> If so I have some doubts that with the
> small amount of functions above, I will be able to use all the
> functionality of the MCF548x's DMA controller.
What parts of supporting don't you think will fit in that
framework?
Regards
Greg
> Zitat von Greg Ungerer <gerg at snapgear.com>:
>
>> Hi markus,
>>
>> Markus Franke wrote:
>>> Zitat von Greg Ungerer <gerg at snapgear.com>:
>>>> As a general rule you want to follow the way Linux does things.
>>>> This is especially true for modern versions of the kernel (2.6.x),
>>>> and especially if you want the code to be acceptable for main
>>>> line inclusion.
>>>
>>> apart from <LINUX/Documentation/DMA-API.txt>, is there any further
>>> documentation about the linux DMA subsystem available. LDD3 also talks
>>
>> As far as I am aware that is all there is. Look at the code
>> for other architectures as an example as well.
>>
>>
>>> more about the usage of the Generic DMA Layer, rather than saying
>>> something about how to connect your target specific DMA code to the
>>> DMA core. I am especially interested in the function stubs/macros
>>> one need to provide to the Linux DMA Layer.
>>
>> The code for other architectures will probably provide the
>> best example of what to do.
>>
>> Regards
>> Greg
>>
>>
>>
>> ------------------------------------------------------------------------
>> Greg Ungerer -- Chief Software Dude EMAIL: gerg at snapgear.com
>> Secure Computing Corporation PHONE: +61 7 3435 2888
>> 825 Stanley St, FAX: +61 7 3891 3630
>> Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com
>> _______________________________________________
>> uClinux-dev mailing list
>> uClinux-dev at uclinux.org
>> http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
>> This message was resent by uclinux-dev at uclinux.org
>> To unsubscribe see:
>> http://mailman.uclinux.org/mailman/options/uclinux-dev
>
>
>
>
>
--
------------------------------------------------------------------------
Greg Ungerer -- Chief Software Dude EMAIL: gerg at snapgear.com
Secure Computing Corporation PHONE: +61 7 3435 2888
825 Stanley St, FAX: +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com
More information about the uClinux-dev
mailing list