drm/nouveau: pass domain rather than ttm flags to gem_new()
authorBen Skeggs <bskeggs@redhat.com>
Thu, 10 Feb 2011 04:42:08 +0000 (14:42 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 24 Feb 2011 20:45:40 +0000 (06:45 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_fbcon.c
drivers/gpu/drm/nouveau/nouveau_gem.c
drivers/gpu/drm/nouveau/nouveau_notifier.c

index f591c84a2792e76607fa074621548f1bd2ea819a..fce748f0f92556cf82ec5384c17eb899bb62f3f7 100644 (file)
@@ -1352,7 +1352,7 @@ static inline struct nouveau_fence *nouveau_fence_ref(struct nouveau_fence *obj)
 
 /* nouveau_gem.c */
 extern int nouveau_gem_new(struct drm_device *, struct nouveau_channel *,
-                          int size, int align, uint32_t flags,
+                          int size, int align, uint32_t domain,
                           uint32_t tile_mode, uint32_t tile_flags,
                           struct nouveau_bo **);
 extern int nouveau_gem_object_new(struct drm_gem_object *);
index 9d7a9887607443dc97af6cfadbef4a532053e450..889c4454682e674316685ac322b55b3960610dc1 100644 (file)
@@ -296,8 +296,8 @@ nouveau_fbcon_create(struct nouveau_fbdev *nfbdev,
        size = mode_cmd.pitch * mode_cmd.height;
        size = roundup(size, PAGE_SIZE);
 
-       ret = nouveau_gem_new(dev, dev_priv->channel, size, 0, TTM_PL_FLAG_VRAM,
-                             0, 0x0000, &nvbo);
+       ret = nouveau_gem_new(dev, dev_priv->channel, size, 0,
+                             NOUVEAU_GEM_DOMAIN_VRAM, 0, 0x0000, &nvbo);
        if (ret) {
                NV_ERROR(dev, "failed to allocate framebuffer\n");
                goto out;
index 29ededdee98010f39cda0e909daa7a45d75e993c..cd4ed9e86704845f067d4c9e0d1ed6289c08dbba 100644 (file)
@@ -61,12 +61,20 @@ nouveau_gem_object_del(struct drm_gem_object *gem)
 
 int
 nouveau_gem_new(struct drm_device *dev, struct nouveau_channel *chan,
-               int size, int align, uint32_t flags, uint32_t tile_mode,
+               int size, int align, uint32_t domain, uint32_t tile_mode,
                uint32_t tile_flags, struct nouveau_bo **pnvbo)
 {
        struct nouveau_bo *nvbo;
+       u32 flags = 0;
        int ret;
 
+       if (domain & NOUVEAU_GEM_DOMAIN_VRAM)
+               flags |= TTM_PL_FLAG_VRAM;
+       if (domain & NOUVEAU_GEM_DOMAIN_GART)
+               flags |= TTM_PL_FLAG_TT;
+       if (!flags || domain & NOUVEAU_GEM_DOMAIN_CPU)
+               flags |= TTM_PL_FLAG_SYSTEM;
+
        ret = nouveau_bo_new(dev, chan, size, align, flags, tile_mode,
                             tile_flags, pnvbo);
        if (ret)
@@ -110,19 +118,11 @@ nouveau_gem_ioctl_new(struct drm_device *dev, void *data,
        struct drm_nouveau_gem_new *req = data;
        struct nouveau_bo *nvbo = NULL;
        struct nouveau_channel *chan = NULL;
-       uint32_t flags = 0;
        int ret = 0;
 
        if (unlikely(dev_priv->ttm.bdev.dev_mapping == NULL))
                dev_priv->ttm.bdev.dev_mapping = dev_priv->dev->dev_mapping;
 
-       if (req->info.domain & NOUVEAU_GEM_DOMAIN_VRAM)
-               flags |= TTM_PL_FLAG_VRAM;
-       if (req->info.domain & NOUVEAU_GEM_DOMAIN_GART)
-               flags |= TTM_PL_FLAG_TT;
-       if (!flags || req->info.domain & NOUVEAU_GEM_DOMAIN_CPU)
-               flags |= TTM_PL_FLAG_SYSTEM;
-
        if (!dev_priv->engine.vram.flags_valid(dev, req->info.tile_flags)) {
                NV_ERROR(dev, "bad page flags: 0x%08x\n", req->info.tile_flags);
                return -EINVAL;
@@ -134,8 +134,9 @@ nouveau_gem_ioctl_new(struct drm_device *dev, void *data,
                        return PTR_ERR(chan);
        }
 
-       ret = nouveau_gem_new(dev, chan, req->info.size, req->align, flags,
-                             req->info.tile_mode, req->info.tile_flags, &nvbo);
+       ret = nouveau_gem_new(dev, chan, req->info.size, req->align,
+                             req->info.domain, req->info.tile_mode,
+                             req->info.tile_flags, &nvbo);
        if (chan)
                nouveau_channel_put(&chan);
        if (ret)
index 92c029920efe122b6781be542c1abfd7c5ae3c74..dc8349a3317a5fd8da8688b0fde8f0d565701f65 100644 (file)
@@ -39,9 +39,9 @@ nouveau_notifier_init_channel(struct nouveau_channel *chan)
        int ret;
 
        if (nouveau_vram_notify)
-               flags = TTM_PL_FLAG_VRAM;
+               flags = NOUVEAU_GEM_DOMAIN_VRAM;
        else
-               flags = TTM_PL_FLAG_TT;
+               flags = NOUVEAU_GEM_DOMAIN_GART;
 
        ret = nouveau_gem_new(dev, NULL, PAGE_SIZE, 0, flags, 0, 0, &ntfy);
        if (ret)