• Federico Vaga's avatar
    kernel: use DMA engine instead of custum implementation · 33a56062
    Federico Vaga authored
    This patch port the FMC ADC driver to use DMA engines to handle
    DMA data transfers in order to move out any custum dependency with
    the carrier.
    
    The dedicated code for `svec` and `spec` are not anymore useful, so
    I removed those files. Anyway, it is not completely true that we can
    get rid off the knowledge about the carrier; for instance the `svec`
    needs a special configuration because of the VME bus.
    
    The Linux kernel API does not offer a way to set the DMA context
    (usefull for VME transfers) to a transfer. So, I have to call the
    operation directly.
    
    In order to find the correct dmaengine channel suitable for the
    FMC-ADC instance, the dmaengine filter function compares the device
    instances.
    If we are on a SPEC, then the dmaengine is on the SPEC itself (in the
    gateware we have the gennum dma). So, the dmaengine and the FMC-ADC
    must have the same FMC carrier
    If we are on a SVEC, then the dmaengine is on the VME bridge. So,
    the dmaengine and FMC carrier share the same VME bridge.
    Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
    33a56062
fa-zio-trg.c 13.2 KB