David,

I'd like to make a few comments just to be sure that you understand a few 
things related to items you removed.

1)  EDMA3 resources.  There are several different resources that are shared 
among all users of EDMA3 (i.e. ARM, DSP, etc.).
        A)  Channels - Each channel has a hard-coded event associated with it, 
e.g. McBSP0 RX, etc.
        B)  Parameter RAMs - Generally speaking a single channel will utilize 
multiple parameter RAM entries.  One of them is the "active" entry and others 
are utilized as "reload" entries, e.g. you could implement ping pong buffering 
with zero CPU overhad in this way.  Furthermore, some devices actually allow 
you to map the "active" entry to any channel you want, i.e. it is programmable.
        C)  TCCs (Transfer Completion Codes) - The TCCs are used in a couple 
different ways.
                a. Interrupts - although there are 64 channels and 64 
interrupts they are not necessarily a one-to-one mapping.  This is programmable 
through the TCC field.
                b. Chaining - The completion of one channel can initiate a 
transfer on another channel.  For example, if you were transferring planar YUV 
video data you could set it up such that the completion of the 'Y' transfer 
initiates the 'U' transfer which then initiates the 'V' transfer.  The channel 
you initiate is again specified by the TCC code (same as interrupt).

2)  QDMA - the QDMA is intended for memory to memory copies.  It can be a 
little quicker to kick off one of these transfers.

Note, that I'm not necessarily disagreeing with changes you made (though I 
haven't fully reviewed).  There is a tradeoff here.  If you consolidate some of 
these parameters you are shrinking/simplifying the code, but you are also 
potentially limiting yourself in what you can do with the EDMA3 peripheral.  
I'll let you (and the community) make the final decision as to what is the 
right balance, though I wanted to make sure you knew why some of those things 
were in the code to begin with.

Brad

> -----Original Message-----
> From: davinci-linux-open-source-boun...@linux.davincidsp.com
> [mailto:davinci-linux-open-source-boun...@linux.davincidsp.com] On Behalf
> Of David Brownell
> Sent: Monday, January 05, 2009 1:40 AM
> To: DaVinci
> Subject: [patch 2.6.28-rc8-davinci1-git+ 0/8] EDMA cleanup/shrinkage
> 
> I notice Troy's set of EDMA cleanups came at the beginning
> of December ... another month, another set of EDMA patches?  :)
> 
> 
> These patches began with some frustration when I was trying
> to make sense of the current EDMA code.  Basically, there's
> just **NO** excuse for it to be so complex.
> 
> Result:  object code down by over 55%; source by over 30%.
> (Compared to what's in current GIT.)
> 
>  - Remove QDMA; it's got a poor and unused interface
>  - Remove duplicative IRQ bitmap, and related cleanup
>  - Remove needless "ARM-side" hacks and unused fields
>  - Remove duplicative "in_use" field; use atomic bitops
>  - Misc cleanup after those patches
>  - Messaging tweaks, switch most stuff to kerneldoc
>  - Remove some unused calls
>  - Shrink the object code a bit more
> 
> I'm thinking this gets it a lot closer to something that
> could go to mainline...
> 
> 
> These go on top of the DM355 MMC and DMA patches I sent
> before the holidays.  It's been sanity tested with MMC and
> audio, the only two drivers in the GIT tree that use DMA.
> 
> 
> 
> _______________________________________________
> Davinci-linux-open-source mailing list
> Davinci-linux-open-source@linux.davincidsp.com
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to