Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/external/bsd/drm2/dist/drm/nouveau Tweak some things.



details:   https://anonhg.NetBSD.org/src/rev/d9f64cab38a8
branches:  trunk
changeset: 366002:d9f64cab38a8
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Mon Aug 27 07:32:40 2018 +0000

description:
Tweak some things.

diffstat:

 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c |  32 ++++++++++++++++++--
 1 files changed, 28 insertions(+), 4 deletions(-)

diffs (119 lines):

diff -r caaedabdb68d -r d9f64cab38a8 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c
--- a/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c       Mon Aug 27 07:32:31 2018 +0000
+++ b/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c       Mon Aug 27 07:32:40 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: nouveau_bo.c,v 1.9 2018/08/27 07:19:01 riastradh Exp $ */
+/*     $NetBSD: nouveau_bo.c,v 1.10 2018/08/27 07:32:40 riastradh Exp $        */
 
 /*
  * Copyright 2007 Dave Airlied
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_bo.c,v 1.9 2018/08/27 07:19:01 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_bo.c,v 1.10 2018/08/27 07:32:40 riastradh Exp $");
 
 #include <linux/dma-mapping.h>
 #include <linux/swiotlb.h>
@@ -461,7 +461,9 @@
        struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev);
        struct nvkm_device *device = nvxx_device(&drm->device);
        struct ttm_dma_tt *ttm_dma = (struct ttm_dma_tt *)nvbo->bo.ttm;
+#ifndef __NetBSD__
        int i;
+#endif
 
        if (!ttm_dma)
                return;
@@ -470,9 +472,16 @@
        if (nvbo->force_coherent)
                return;
 
+#ifdef __NetBSD__
+       bus_dma_tag_t dmat = device->func->dma_tag(device);
+       bus_dmamap_sync(dmat, ttm_dma->dma_address, 0,
+           PAGE_SIZE*ttm_dma->ttm.num_pages,
+           BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
+#else
        for (i = 0; i < ttm_dma->ttm.num_pages; i++)
                dma_sync_single_for_device(device->dev, ttm_dma->dma_address[i],
                                           PAGE_SIZE, DMA_TO_DEVICE);
+#endif
 }
 
 void
@@ -481,7 +490,9 @@
        struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev);
        struct nvkm_device *device = nvxx_device(&drm->device);
        struct ttm_dma_tt *ttm_dma = (struct ttm_dma_tt *)nvbo->bo.ttm;
+#ifndef __NetBSD__
        int i;
+#endif
 
        if (!ttm_dma)
                return;
@@ -490,9 +501,16 @@
        if (nvbo->force_coherent)
                return;
 
+#ifdef __NetBSD__
+       bus_dma_tag_t dmat = device->func->dma_tag(device);
+       bus_dmamap_sync(dmat, ttm_dma->dma_address, 0,
+           PAGE_SIZE*ttm_dma->ttm.num_pages,
+           BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
+#else
        for (i = 0; i < ttm_dma->ttm.num_pages; i++)
                dma_sync_single_for_cpu(device->dev, ttm_dma->dma_address[i],
                                        PAGE_SIZE, DMA_FROM_DEVICE);
+#endif
 }
 
 int
@@ -567,7 +585,9 @@
 static inline void *
 _nouveau_bo_mem_index(struct nouveau_bo *nvbo, unsigned index, void *mem, u8 sz)
 {
+#ifndef __NetBSD__
        struct ttm_dma_tt *dma_tt;
+#endif
        u8 *m = mem;
 
        index *= sz;
@@ -576,10 +596,14 @@
                /* kmap'd address, return the corresponding offset */
                m += index;
        } else {
+#ifdef __NetBSD__
+               panic("buffers of unusual mapping? I don't believe they exist");
+#else
                /* DMA-API mapping, lookup the right address */
                dma_tt = (struct ttm_dma_tt *)nvbo->bo.ttm;
                m = dma_tt->cpu_address[index / PAGE_SIZE];
                m += index % PAGE_SIZE;
+#endif
        }
 
        return m;
@@ -1532,9 +1556,9 @@
 {
        struct ttm_dma_tt *ttm_dma = (void *)ttm;
        struct nouveau_drm *drm;
+#ifndef __NetBSD__
        struct nvkm_device *device;
        struct drm_device *dev;
-#ifndef __NetBSD__
        struct device *pdev;
        unsigned i;
        int r;
@@ -1622,9 +1646,9 @@
 {
        struct ttm_dma_tt *ttm_dma = (void *)ttm;
        struct nouveau_drm *drm;
+#ifndef __NetBSD__
        struct nvkm_device *device;
        struct drm_device *dev;
-#ifndef __NetBSD__
        struct device *pdev;
        unsigned i;
 #endif



Home | Main Index | Thread Index | Old Index