• Alan Mikhak's avatar
    dmaengine: dw-edma: Decouple dw-edma-core.c from struct pci_dev · fc6f5d0a
    Alan Mikhak authored
    Decouple dw-edma-core.c from struct pci_dev as a step toward integration
    of dw-edma with pci-epf-test so the latter can initiate dma operations
    locally from the endpoint side. A barrier to such integration is the
    dependency of dw_edma_probe() and other functions in dw-edma-core.c on
    struct pci_dev.
    
    The Synopsys DesignWare dw-edma driver was designed to run on host side
    of PCIe link to initiate DMA operations remotely using eDMA channels of
    PCIe controller on the endpoint side. This can be inferred from seeing
    that dw-edma uses struct pci_dev and accesses hardware registers of dma
    channels across the bus using BAR0 and BAR2.
    
    The ops field of struct dw_edma in dw-edma-core.h is currenty undefined:
    
    const struct dw_edma_core_ops   *ops;
    
    However, the kernel builds without failure even when dw-edma driver is
    enabled. Instead of removing the currently undefined and usued ops field,
    define struct dw_edma_core_ops and use the ops field to decouple
    dw-edma-core.c from struct pci_dev.
    Signed-off-by: default avatarAlan Mikhak <alan.mikhak@sifive.com>
    Acked-by: default avatarGustavo Pimentel <gustavo.pimentel@synopsys.com>
    Link: https://lore.kernel.org/r/1586971629-30196-1-git-send-email-alan.mikhak@sifive.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
    fc6f5d0a
dw-edma-pcie.c 6.11 KB