• Dan Williams's avatar
    dmaengine: make clients responsible for managing channels · d379b01e
    Dan Williams authored
    The current implementation assumes that a channel will only be used by one
    client at a time.  In order to enable channel sharing the dmaengine core is
    changed to a model where clients subscribe to channel-available-events.
    Instead of tracking how many channels a client wants and how many it has
    received the core just broadcasts the available channels and lets the
    clients optionally take a reference.  The core learns about the clients'
    needs at dma_event_callback time.
    
    In support of multiple operation types, clients can specify a capability
    mask to only be notified of channels that satisfy a certain set of
    capabilities.
    
    Changelog:
    * removed DMA_TX_ARRAY_INIT, no longer needed
    * dma_client_chan_free -> dma_chan_release: switch to global reference
      counting only at device unregistration time, before it was also happening
      at client unregistration time
    * clients now return dma_state_client to dmaengine (ack, dup, nak)
    * checkpatch.pl fixes
    * fixup merge with git-ioat
    
    Cc: Chris Leech <christopher.leech@intel.com>
    Signed-off-by: default avatarShannon Nelson <shannon.nelson@intel.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
    d379b01e
ioatdma.c 22.2 KB