SPEC-3723: restructure meta-agl-demo
[AGL/meta-agl-demo.git] / recipes-kernel / most / files / 0009-dim2-use-device-for-coherent-memory-allocation.patch
diff --git a/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch b/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch
new file mode 100644 (file)
index 0000000..08cd6f9
--- /dev/null
@@ -0,0 +1,47 @@
+From 756f2f1f90524c2620ed7951e436d13bdb929a6b Mon Sep 17 00:00:00 2001
+From: Andrey Shvetsov <andrey.shvetsov@k2l.de>
+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 <andrey.shvetsov@k2l.de>
+---
+ 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