• David Brownell's avatar
    EDMA: remove "in_use" field · f6910f17
    David Brownell authored
    Remove some significant duplication:
    
     - We only need a single bitmap to record which PARAM slots are
       in use, and it only needs to have enough bits to cover the
       slots that exist.
    
     - By using the atomic bitops for that, we eliminate the current
       need for a private spinlock.
    
     - We don't need to record 'tcc' either, it's only needed inside
       davinci_request_dma().  Remove it:  be clearer and more correct
       (it can change with PARAM operations), save space.
    
    This change highlighted some existing bugs in terms of fault returns
    when davinci_request_dma() couldn't return a resource of the relevant
    type; unlikely for anyone to have hit them, so far.
    
    Switch to standard kerneldoc for davinci_request_dma().  The two
    previous descriptive comments were inconsistent, so fix that too.
    Explain the callback usage a bit.
    
    Minor new feature:  allow explicit allocation of slave channels too,
    allowing pre-allocation of *any* DMA channel on behalf of DSP code.
    
    This saves about 2 KB of space (half is data) as well as making
    allocation and deallocation code a LOT simpler.
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
    f6910f17
dma.c 34.5 KB