From: Ben Skeggs Date: Thu, 20 Aug 2015 04:54:14 +0000 (+1000) Subject: drm/nouveau/core: switch to gpuobj accessor macros X-Git-Tag: v4.9.8~3568^2^2~129 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=45ea503161af6e94d593a59e8cca8981d0435d5c;p=platform%2Fkernel%2Flinux-rpi3.git drm/nouveau/core: switch to gpuobj accessor macros Signed-off-by: Ben Skeggs --- diff --git a/drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c b/drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c index c6e5f7a..f99b446 100644 --- a/drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c +++ b/drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c @@ -34,8 +34,10 @@ nvkm_gpuobj_destroy(struct nvkm_gpuobj *gpuobj) int i; if (gpuobj->flags & NVOBJ_FLAG_ZERO_FREE) { + nvkm_kmap(gpuobj); for (i = 0; i < gpuobj->size; i += 4) - nv_wo32(gpuobj, i, 0x00000000); + nvkm_wo32(gpuobj, i, 0x00000000); + nvkm_done(gpuobj); } if (gpuobj->node) @@ -123,8 +125,10 @@ nvkm_gpuobj_create_(struct nvkm_object *parent, struct nvkm_object *engine, } if (flags & NVOBJ_FLAG_ZERO_ALLOC) { + nvkm_kmap(gpuobj); for (i = 0; i < gpuobj->size; i += 4) - nv_wo32(gpuobj, i, 0x00000000); + nvkm_wo32(gpuobj, i, 0x00000000); + nvkm_done(gpuobj); } return ret; diff --git a/drivers/gpu/drm/nouveau/nvkm/core/ramht.c b/drivers/gpu/drm/nouveau/nvkm/core/ramht.c index ebd4d15..c61bb0f 100644 --- a/drivers/gpu/drm/nouveau/nvkm/core/ramht.c +++ b/drivers/gpu/drm/nouveau/nvkm/core/ramht.c @@ -42,35 +42,43 @@ nvkm_ramht_hash(struct nvkm_ramht *ramht, int chid, u32 handle) int nvkm_ramht_insert(struct nvkm_ramht *ramht, int chid, u32 handle, u32 context) { + struct nvkm_gpuobj *gpuobj = &ramht->gpuobj; struct nvkm_bar *bar = nvkm_bar(ramht); + int ret = -ENOSPC; u32 co, ho; co = ho = nvkm_ramht_hash(ramht, chid, handle); + nvkm_kmap(gpuobj); do { - if (!nv_ro32(ramht, co + 4)) { - nv_wo32(ramht, co + 0, handle); - nv_wo32(ramht, co + 4, context); + if (!nvkm_ro32(gpuobj, co + 4)) { + nvkm_wo32(gpuobj, co + 0, handle); + nvkm_wo32(gpuobj, co + 4, context); if (bar) bar->flush(bar); - return co; + ret = co; + break; } co += 8; if (co >= nv_gpuobj(ramht)->size) co = 0; } while (co != ho); + nvkm_done(gpuobj); - return -ENOMEM; + return ret; } void nvkm_ramht_remove(struct nvkm_ramht *ramht, int cookie) { + struct nvkm_gpuobj *gpuobj = &ramht->gpuobj; struct nvkm_bar *bar = nvkm_bar(ramht); - nv_wo32(ramht, cookie + 0, 0x00000000); - nv_wo32(ramht, cookie + 4, 0x00000000); + nvkm_kmap(gpuobj); + nvkm_wo32(gpuobj, cookie + 0, 0x00000000); + nvkm_wo32(gpuobj, cookie + 4, 0x00000000); if (bar) bar->flush(bar); + nvkm_done(gpuobj); } static struct nvkm_oclass