From 756f2f1f90524c2620ed7951e436d13bdb929a6b Mon Sep 17 00:00:00 2001 From: Andrey Shvetsov Date: Mon, 12 Feb 2018 12:25:37 +0100 Subject: [PATCH] staging: most: dim2: use device for coherent memory allocation On several modern architectures the allocation of coherent memory needs a device that has the dma_ops properly set. This patch enables use of the DIM2 platform device for the allocation process. Signed-off-by: Andrey Shvetsov --- hdm-dim2/dim2_hdm.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c index 05e1896..1847091 100644 --- a/hdm-dim2/dim2_hdm.c +++ b/hdm-dim2/dim2_hdm.c @@ -688,12 +688,16 @@ static int poison_channel(struct most_interface *most_iface, int ch_idx) static void *dma_alloc(struct mbo *mbo, u32 size) { - return dma_alloc_coherent(NULL, size, &mbo->bus_address, GFP_KERNEL); + struct device *dev = mbo->ifp->dev; + + return dma_alloc_coherent(dev, size, &mbo->bus_address, GFP_KERNEL); } static void dma_free(struct mbo *mbo, u32 size) { - dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address); + struct device *dev = mbo->ifp->dev; + + dma_free_coherent(dev, size, mbo->virt_address, mbo->bus_address); } static const struct of_device_id dim2_of_match[]; @@ -875,6 +879,7 @@ static int dim2_probe(struct platform_device *pdev) dev->most_iface.poison_channel = poison_channel; dev->most_iface.request_netinfo = request_netinfo; dev->most_iface.extra_attrs = DBR_ATTRS; + dev->most_iface.dev = &pdev->dev; kobj = most_register_interface(&dev->most_iface); if (IS_ERR(kobj)) { -- libgit2 0.26.0