diff mbox series

[10/10] drm/gma500: Rename struct gtt_range to struct psb_gem_object

Message ID 20210928084446.22580-11-tzimmermann@suse.de (mailing list archive)
State New, archived
Headers show
Series drm/gma500: Refactor GEM code | expand

Commit Message

Thomas Zimmermann Sept. 28, 2021, 8:44 a.m. UTC
struct gtt_range represents a GEM object. Rename the structure to struct
psb_gem_object and update all users. No functional changes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/gma500/framebuffer.c       |   9 +-
 drivers/gpu/drm/gma500/gem.c               | 106 +++++++++++----------
 drivers/gpu/drm/gma500/gem.h               |  25 ++++-
 drivers/gpu/drm/gma500/gma_display.c       |  50 +++++-----
 drivers/gpu/drm/gma500/gtt.c               |  15 +--
 drivers/gpu/drm/gma500/gtt.h               |  15 ---
 drivers/gpu/drm/gma500/oaktrail_crtc.c     |   3 +-
 drivers/gpu/drm/gma500/psb_intel_display.c |  15 ++-
 drivers/gpu/drm/gma500/psb_intel_drv.h     |   2 +-
 9 files changed, 123 insertions(+), 117 deletions(-)

Comments

Patrik Jakobsson Oct. 2, 2021, 10:15 p.m. UTC | #1
On Tue, Sep 28, 2021 at 10:44 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> struct gtt_range represents a GEM object. Rename the structure to struct
> psb_gem_object and update all users. No functional changes.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Acked-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>


> ---
>  drivers/gpu/drm/gma500/framebuffer.c       |   9 +-
>  drivers/gpu/drm/gma500/gem.c               | 106 +++++++++++----------
>  drivers/gpu/drm/gma500/gem.h               |  25 ++++-
>  drivers/gpu/drm/gma500/gma_display.c       |  50 +++++-----
>  drivers/gpu/drm/gma500/gtt.c               |  15 +--
>  drivers/gpu/drm/gma500/gtt.h               |  15 ---
>  drivers/gpu/drm/gma500/oaktrail_crtc.c     |   3 +-
>  drivers/gpu/drm/gma500/psb_intel_display.c |  15 ++-
>  drivers/gpu/drm/gma500/psb_intel_drv.h     |   2 +-
>  9 files changed, 123 insertions(+), 117 deletions(-)
>
> diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
> index 3ea6679ccd38..45df9de22007 100644
> --- a/drivers/gpu/drm/gma500/framebuffer.c
> +++ b/drivers/gpu/drm/gma500/framebuffer.c
> @@ -81,14 +81,13 @@ static vm_fault_t psbfb_vm_fault(struct vm_fault *vmf)
>         struct drm_framebuffer *fb = vma->vm_private_data;
>         struct drm_device *dev = fb->dev;
>         struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
> -       struct gtt_range *gtt = to_gtt_range(fb->obj[0]);
> +       struct psb_gem_object *pobj = to_psb_gem_object(fb->obj[0]);
>         int page_num;
>         int i;
>         unsigned long address;
>         vm_fault_t ret = VM_FAULT_SIGBUS;
>         unsigned long pfn;
> -       unsigned long phys_addr = (unsigned long)dev_priv->stolen_base +
> -                                 gtt->offset;
> +       unsigned long phys_addr = (unsigned long)dev_priv->stolen_base + pobj->offset;
>
>         page_num = vma_pages(vma);
>         address = vmf->address - (vmf->pgoff << PAGE_SHIFT);
> @@ -242,7 +241,7 @@ static int psbfb_create(struct drm_fb_helper *fb_helper,
>         struct drm_mode_fb_cmd2 mode_cmd;
>         int size;
>         int ret;
> -       struct gtt_range *backing;
> +       struct psb_gem_object *backing;
>         struct drm_gem_object *obj;
>         u32 bpp, depth;
>
> @@ -264,7 +263,7 @@ static int psbfb_create(struct drm_fb_helper *fb_helper,
>         backing = psb_gem_create(dev, size, "fb", true, PAGE_SIZE);
>         if (IS_ERR(backing))
>                 return PTR_ERR(backing);
> -       obj = &backing->gem;
> +       obj = &backing->base;
>
>         memset(dev_priv->vram_addr + backing->offset, 0, size);
>
> diff --git a/drivers/gpu/drm/gma500/gem.c b/drivers/gpu/drm/gma500/gem.c
> index fd556ba2c044..9b7052153cab 100644
> --- a/drivers/gpu/drm/gma500/gem.c
> +++ b/drivers/gpu/drm/gma500/gem.c
> @@ -21,9 +21,10 @@
>  #include "gem.h"
>  #include "psb_drv.h"
>
> -int psb_gem_pin(struct gtt_range *gt)
> +int psb_gem_pin(struct psb_gem_object *pobj)
>  {
> -       struct drm_device *dev = gt->gem.dev;
> +       struct drm_gem_object *obj = &pobj->base;
> +       struct drm_device *dev = obj->dev;
>         struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
>         u32 gpu_base = dev_priv->gtt.gatt_start;
>         struct page **pages;
> @@ -31,57 +32,58 @@ int psb_gem_pin(struct gtt_range *gt)
>
>         mutex_lock(&dev_priv->gtt_mutex);
>
> -       if (gt->in_gart || gt->stolen)
> +       if (pobj->in_gart || pobj->stolen)
>                 goto out; /* already mapped */
>
> -       pages = drm_gem_get_pages(&gt->gem);
> +       pages = drm_gem_get_pages(obj);
>         if (IS_ERR(pages))
>                 return PTR_ERR(pages);
>
> -       npages = gt->gem.size / PAGE_SIZE;
> +       npages = obj->size / PAGE_SIZE;
>
>         set_pages_array_wc(pages, npages);
>
> -       psb_gtt_insert_pages(dev_priv, &gt->resource, pages);
> +       psb_gtt_insert_pages(dev_priv, &pobj->resource, pages);
>         psb_mmu_insert_pages(psb_mmu_get_default_pd(dev_priv->mmu), pages,
> -                            (gpu_base + gt->offset), npages, 0, 0,
> +                            (gpu_base + pobj->offset), npages, 0, 0,
>                              PSB_MMU_CACHED_MEMORY);
>
> -       gt->npage = npages;
> -       gt->pages = pages;
> +       pobj->npage = npages;
> +       pobj->pages = pages;
>
>  out:
> -       ++gt->in_gart;
> +       ++pobj->in_gart;
>         mutex_unlock(&dev_priv->gtt_mutex);
>
>         return 0;
>  }
>
> -void psb_gem_unpin(struct gtt_range *gt)
> +void psb_gem_unpin(struct psb_gem_object *pobj)
>  {
> -       struct drm_device *dev = gt->gem.dev;
> +       struct drm_gem_object *obj = &pobj->base;
> +       struct drm_device *dev = obj->dev;
>         struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
>         u32 gpu_base = dev_priv->gtt.gatt_start;
>
>         mutex_lock(&dev_priv->gtt_mutex);
>
> -       WARN_ON(!gt->in_gart);
> +       WARN_ON(!pobj->in_gart);
>
> -       --gt->in_gart;
> +       --pobj->in_gart;
>
> -       if (gt->in_gart || gt->stolen)
> +       if (pobj->in_gart || pobj->stolen)
>                 goto out;
>
>         psb_mmu_remove_pages(psb_mmu_get_default_pd(dev_priv->mmu),
> -                                    (gpu_base + gt->offset), gt->npage, 0, 0);
> -       psb_gtt_remove_pages(dev_priv, &gt->resource);
> +                            (gpu_base + pobj->offset), pobj->npage, 0, 0);
> +       psb_gtt_remove_pages(dev_priv, &pobj->resource);
>
>         /* Reset caching flags */
> -       set_pages_array_wb(gt->pages, gt->npage);
> +       set_pages_array_wb(pobj->pages, pobj->npage);
>
> -       drm_gem_put_pages(&gt->gem, gt->pages, true, false);
> -       gt->pages = NULL;
> -       gt->npage = 0;
> +       drm_gem_put_pages(obj, pobj->pages, true, false);
> +       pobj->pages = NULL;
> +       pobj->npage = 0;
>
>  out:
>         mutex_unlock(&dev_priv->gtt_mutex);
> @@ -91,18 +93,18 @@ static vm_fault_t psb_gem_fault(struct vm_fault *vmf);
>
>  static void psb_gem_free_object(struct drm_gem_object *obj)
>  {
> -       struct gtt_range *gt = to_gtt_range(obj);
> +       struct psb_gem_object *pobj = to_psb_gem_object(obj);
>
>         drm_gem_object_release(obj);
>
>         /* Undo the mmap pin if we are destroying the object */
> -       if (gt->mmapping)
> -               psb_gem_unpin(gt);
> +       if (pobj->mmapping)
> +               psb_gem_unpin(pobj);
>
> -       WARN_ON(gt->in_gart && !gt->stolen);
> +       WARN_ON(pobj->in_gart && !pobj->stolen);
>
> -       release_resource(&gt->resource);
> -       kfree(gt);
> +       release_resource(&pobj->resource);
> +       kfree(pobj);
>  }
>
>  static const struct vm_operations_struct psb_gem_vm_ops = {
> @@ -116,31 +118,31 @@ static const struct drm_gem_object_funcs psb_gem_object_funcs = {
>         .vm_ops = &psb_gem_vm_ops,
>  };
>
> -struct gtt_range *
> +struct psb_gem_object *
>  psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen, u32 align)
>  {
>         struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
> -       struct gtt_range *gt;
> +       struct psb_gem_object *pobj;
>         struct drm_gem_object *obj;
>         int ret;
>
>         size = roundup(size, PAGE_SIZE);
>
> -       gt = kzalloc(sizeof(*gt), GFP_KERNEL);
> -       if (!gt)
> +       pobj = kzalloc(sizeof(*pobj), GFP_KERNEL);
> +       if (!pobj)
>                 return ERR_PTR(-ENOMEM);
> -       obj = &gt->gem;
> +       obj = &pobj->base;
>
>         /* GTT resource */
>
> -       ret = psb_gtt_allocate_resource(dev_priv, &gt->resource, name, size, align, stolen,
> -                                       &gt->offset);
> +       ret = psb_gtt_allocate_resource(dev_priv, &pobj->resource, name, size, align, stolen,
> +                                       &pobj->offset);
>         if (ret)
>                 goto err_kfree;
>
>         if (stolen) {
> -               gt->stolen = true;
> -               gt->in_gart = 1;
> +               pobj->stolen = true;
> +               pobj->in_gart = 1;
>         }
>
>         /* GEM object */
> @@ -158,12 +160,12 @@ psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen,
>                 mapping_set_gfp_mask(obj->filp->f_mapping, GFP_KERNEL | __GFP_DMA32);
>         }
>
> -       return gt;
> +       return pobj;
>
>  err_release_resource:
> -       release_resource(&gt->resource);
> +       release_resource(&pobj->resource);
>  err_kfree:
> -       kfree(gt);
> +       kfree(pobj);
>         return ERR_PTR(ret);
>  }
>
> @@ -181,7 +183,7 @@ int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
>                         struct drm_mode_create_dumb *args)
>  {
>         size_t pitch, size;
> -       struct gtt_range *gt;
> +       struct psb_gem_object *pobj;
>         struct drm_gem_object *obj;
>         u32 handle;
>         int ret;
> @@ -194,10 +196,10 @@ int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
>         if (!size)
>                 return -EINVAL;
>
> -       gt = psb_gem_create(dev, size, "gem", false, PAGE_SIZE);
> -       if (IS_ERR(gt))
> -               return PTR_ERR(gt);
> -       obj = &gt->gem;
> +       pobj = psb_gem_create(dev, size, "gem", false, PAGE_SIZE);
> +       if (IS_ERR(pobj))
> +               return PTR_ERR(pobj);
> +       obj = &pobj->base;
>
>         ret = drm_gem_handle_create(file, obj, &handle);
>         if (ret)
> @@ -236,7 +238,7 @@ static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
>  {
>         struct vm_area_struct *vma = vmf->vma;
>         struct drm_gem_object *obj;
> -       struct gtt_range *r;
> +       struct psb_gem_object *pobj;
>         int err;
>         vm_fault_t ret;
>         unsigned long pfn;
> @@ -248,7 +250,7 @@ static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
>         dev = obj->dev;
>         dev_priv = to_drm_psb_private(dev);
>
> -       r = to_gtt_range(obj);
> +       pobj = to_psb_gem_object(obj);
>
>         /* Make sure we don't parallel update on a fault, nor move or remove
>            something from beneath our feet */
> @@ -256,14 +258,14 @@ static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
>
>         /* For now the mmap pins the object and it stays pinned. As things
>            stand that will do us no harm */
> -       if (r->mmapping == 0) {
> -               err = psb_gem_pin(r);
> +       if (pobj->mmapping == 0) {
> +               err = psb_gem_pin(pobj);
>                 if (err < 0) {
>                         dev_err(dev->dev, "gma500: pin failed: %d\n", err);
>                         ret = vmf_error(err);
>                         goto fail;
>                 }
> -               r->mmapping = 1;
> +               pobj->mmapping = 1;
>         }
>
>         /* Page relative to the VMA start - we must calculate this ourselves
> @@ -271,10 +273,10 @@ static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
>         page_offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
>
>         /* CPU view of the page, don't go via the GART for CPU writes */
> -       if (r->stolen)
> -               pfn = (dev_priv->stolen_base + r->offset) >> PAGE_SHIFT;
> +       if (pobj->stolen)
> +               pfn = (dev_priv->stolen_base + pobj->offset) >> PAGE_SHIFT;
>         else
> -               pfn = page_to_pfn(r->pages[page_offset]);
> +               pfn = page_to_pfn(pobj->pages[page_offset]);
>         ret = vmf_insert_pfn(vma, vmf->address, pfn);
>  fail:
>         mutex_unlock(&dev_priv->mmap_mutex);
> diff --git a/drivers/gpu/drm/gma500/gem.h b/drivers/gpu/drm/gma500/gem.h
> index 21c86df482a6..79cced40c87f 100644
> --- a/drivers/gpu/drm/gma500/gem.h
> +++ b/drivers/gpu/drm/gma500/gem.h
> @@ -8,14 +8,33 @@
>  #ifndef _GEM_H
>  #define _GEM_H
>
> +#include <linux/kernel.h>
> +
>  #include <drm/drm_gem.h>
>
>  struct drm_device;
>
> -struct gtt_range *
> +struct psb_gem_object {
> +       struct drm_gem_object base;
> +
> +       struct resource resource;       /* GTT resource for our allocation */
> +       u32 offset;                     /* GTT offset of our object */
> +       int in_gart;                    /* Currently in the GART (ref ct) */
> +       bool stolen;                    /* Backed from stolen RAM */
> +       bool mmapping;                  /* Is mmappable */
> +       struct page **pages;            /* Backing pages if present */
> +       int npage;                      /* Number of backing pages */
> +};
> +
> +static inline struct psb_gem_object *to_psb_gem_object(struct drm_gem_object *obj)
> +{
> +       return container_of(obj, struct psb_gem_object, base);
> +}
> +
> +struct psb_gem_object *
>  psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen, u32 align);
>
> -int psb_gem_pin(struct gtt_range *gt);
> -void psb_gem_unpin(struct gtt_range *gt);
> +int psb_gem_pin(struct psb_gem_object *pobj);
> +void psb_gem_unpin(struct psb_gem_object *pobj);
>
>  #endif
> diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
> index 6d0470b27bc5..99da3118131a 100644
> --- a/drivers/gpu/drm/gma500/gma_display.c
> +++ b/drivers/gpu/drm/gma500/gma_display.c
> @@ -55,7 +55,7 @@ int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y,
>         struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
>         struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
>         struct drm_framebuffer *fb = crtc->primary->fb;
> -       struct gtt_range *gtt;
> +       struct psb_gem_object *pobj;
>         int pipe = gma_crtc->pipe;
>         const struct psb_offset *map = &dev_priv->regmap[pipe];
>         unsigned long start, offset;
> @@ -71,14 +71,14 @@ int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y,
>                 goto gma_pipe_cleaner;
>         }
>
> -       gtt = to_gtt_range(fb->obj[0]);
> +       pobj = to_psb_gem_object(fb->obj[0]);
>
>         /* We are displaying this buffer, make sure it is actually loaded
>            into the GTT */
> -       ret = psb_gem_pin(gtt);
> +       ret = psb_gem_pin(pobj);
>         if (ret < 0)
>                 goto gma_pipe_set_base_exit;
> -       start = gtt->offset;
> +       start = pobj->offset;
>         offset = y * fb->pitches[0] + x * fb->format->cpp[0];
>
>         REG_WRITE(map->stride, fb->pitches[0]);
> @@ -126,7 +126,7 @@ int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y,
>  gma_pipe_cleaner:
>         /* If there was a previous display we can now unpin it */
>         if (old_fb)
> -               psb_gem_unpin(to_gtt_range(old_fb->obj[0]));
> +               psb_gem_unpin(to_psb_gem_object(old_fb->obj[0]));
>
>  gma_pipe_set_base_exit:
>         gma_power_end(dev);
> @@ -332,8 +332,8 @@ int gma_crtc_cursor_set(struct drm_crtc *crtc,
>         uint32_t base = (pipe == 0) ? CURABASE : CURBBASE;
>         uint32_t temp;
>         size_t addr = 0;
> -       struct gtt_range *gt;
> -       struct gtt_range *cursor_gt = gma_crtc->cursor_gt;
> +       struct psb_gem_object *pobj;
> +       struct psb_gem_object *cursor_pobj = gma_crtc->cursor_pobj;
>         struct drm_gem_object *obj;
>         void *tmp_dst, *tmp_src;
>         int ret = 0, i, cursor_pages;
> @@ -349,8 +349,8 @@ int gma_crtc_cursor_set(struct drm_crtc *crtc,
>
>                 /* Unpin the old GEM object */
>                 if (gma_crtc->cursor_obj) {
> -                       gt = to_gtt_range(gma_crtc->cursor_obj);
> -                       psb_gem_unpin(gt);
> +                       pobj = to_psb_gem_object(gma_crtc->cursor_obj);
> +                       psb_gem_unpin(pobj);
>                         drm_gem_object_put(gma_crtc->cursor_obj);
>                         gma_crtc->cursor_obj = NULL;
>                 }
> @@ -375,40 +375,40 @@ int gma_crtc_cursor_set(struct drm_crtc *crtc,
>                 goto unref_cursor;
>         }
>
> -       gt = to_gtt_range(obj);
> +       pobj = to_psb_gem_object(obj);
>
>         /* Pin the memory into the GTT */
> -       ret = psb_gem_pin(gt);
> +       ret = psb_gem_pin(pobj);
>         if (ret) {
>                 dev_err(dev->dev, "Can not pin down handle 0x%x\n", handle);
>                 goto unref_cursor;
>         }
>
>         if (dev_priv->ops->cursor_needs_phys) {
> -               if (cursor_gt == NULL) {
> +               if (!cursor_pobj) {
>                         dev_err(dev->dev, "No hardware cursor mem available");
>                         ret = -ENOMEM;
>                         goto unref_cursor;
>                 }
>
>                 /* Prevent overflow */
> -               if (gt->npage > 4)
> +               if (pobj->npage > 4)
>                         cursor_pages = 4;
>                 else
> -                       cursor_pages = gt->npage;
> +                       cursor_pages = pobj->npage;
>
>                 /* Copy the cursor to cursor mem */
> -               tmp_dst = dev_priv->vram_addr + cursor_gt->offset;
> +               tmp_dst = dev_priv->vram_addr + cursor_pobj->offset;
>                 for (i = 0; i < cursor_pages; i++) {
> -                       tmp_src = kmap(gt->pages[i]);
> +                       tmp_src = kmap(pobj->pages[i]);
>                         memcpy(tmp_dst, tmp_src, PAGE_SIZE);
> -                       kunmap(gt->pages[i]);
> +                       kunmap(pobj->pages[i]);
>                         tmp_dst += PAGE_SIZE;
>                 }
>
>                 addr = gma_crtc->cursor_addr;
>         } else {
> -               addr = gt->offset;
> +               addr = pobj->offset;
>                 gma_crtc->cursor_addr = addr;
>         }
>
> @@ -425,8 +425,8 @@ int gma_crtc_cursor_set(struct drm_crtc *crtc,
>
>         /* unpin the old bo */
>         if (gma_crtc->cursor_obj) {
> -               gt = to_gtt_range(gma_crtc->cursor_obj);
> -               psb_gem_unpin(gt);
> +               pobj = to_psb_gem_object(gma_crtc->cursor_obj);
> +               psb_gem_unpin(pobj);
>                 drm_gem_object_put(gma_crtc->cursor_obj);
>         }
>
> @@ -483,14 +483,14 @@ void gma_crtc_commit(struct drm_crtc *crtc)
>
>  void gma_crtc_disable(struct drm_crtc *crtc)
>  {
> -       struct gtt_range *gt;
> +       struct psb_gem_object *pobj;
>         const struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
>
>         crtc_funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
>
>         if (crtc->primary->fb) {
> -               gt = to_gtt_range(crtc->primary->fb->obj[0]);
> -               psb_gem_unpin(gt);
> +               pobj = to_psb_gem_object(crtc->primary->fb->obj[0]);
> +               psb_gem_unpin(pobj);
>         }
>  }
>
> @@ -498,8 +498,8 @@ void gma_crtc_destroy(struct drm_crtc *crtc)
>  {
>         struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
>
> -       if (gma_crtc->cursor_gt)
> -               drm_gem_object_put(&gma_crtc->cursor_gt->gem);
> +       if (gma_crtc->cursor_pobj)
> +               drm_gem_object_put(&gma_crtc->cursor_pobj->base);
>
>         kfree(gma_crtc->crtc_state);
>         drm_crtc_cleanup(crtc);
> diff --git a/drivers/gpu/drm/gma500/gtt.c b/drivers/gpu/drm/gma500/gtt.c
> index cf71a2396c16..75e483c88ceb 100644
> --- a/drivers/gpu/drm/gma500/gtt.c
> +++ b/drivers/gpu/drm/gma500/gtt.c
> @@ -7,6 +7,7 @@
>   *         Alan Cox <alan@linux.intel.com>
>   */
>
> +#include "gem.h" /* TODO: for struct psb_gem_object, see psb_gtt_restore() */
>  #include "psb_drv.h"
>
>
> @@ -292,7 +293,7 @@ int psb_gtt_restore(struct drm_device *dev)
>  {
>         struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
>         struct resource *r = dev_priv->gtt_mem->child;
> -       struct gtt_range *range;
> +       struct psb_gem_object *pobj;
>         unsigned int restored = 0, total = 0, size = 0;
>
>         /* On resume, the gtt_mutex is already initialized */
> @@ -302,13 +303,13 @@ int psb_gtt_restore(struct drm_device *dev)
>         while (r != NULL) {
>                 /*
>                  * TODO: GTT restoration needs a refactoring, so that we don't have to touch
> -                *       struct gtt_range here. The type represents a GEM object and is not
> -                *       related to the GTT itself.
> +                *       struct psb_gem_object here. The type represents a GEM object and is
> +                *       not related to the GTT itself.
>                  */
> -               range = container_of(r, struct gtt_range, resource);
> -               if (range->pages) {
> -                       psb_gtt_insert_pages(dev_priv, &range->resource, range->pages);
> -                       size += range->resource.end - range->resource.start;
> +               pobj = container_of(r, struct psb_gem_object, resource);
> +               if (pobj->pages) {
> +                       psb_gtt_insert_pages(dev_priv, &pobj->resource, pobj->pages);
> +                       size += pobj->resource.end - pobj->resource.start;
>                         restored++;
>                 }
>                 r = r->sibling;
> diff --git a/drivers/gpu/drm/gma500/gtt.h b/drivers/gpu/drm/gma500/gtt.h
> index 6a28e24a18b7..29649395c531 100644
> --- a/drivers/gpu/drm/gma500/gtt.h
> +++ b/drivers/gpu/drm/gma500/gtt.h
> @@ -28,21 +28,6 @@ struct psb_gtt {
>  /* Exported functions */
>  extern int psb_gtt_init(struct drm_device *dev, int resume);
>  extern void psb_gtt_takedown(struct drm_device *dev);
> -
> -/* Each gtt_range describes an allocation in the GTT area */
> -struct gtt_range {
> -       struct resource resource;       /* Resource for our allocation */
> -       u32 offset;                     /* GTT offset of our object */
> -       struct drm_gem_object gem;      /* GEM high level stuff */
> -       int in_gart;                    /* Currently in the GART (ref ct) */
> -       bool stolen;                    /* Backed from stolen RAM */
> -       bool mmapping;                  /* Is mmappable */
> -       struct page **pages;            /* Backing pages if present */
> -       int npage;                      /* Number of backing pages */
> -};
> -
> -#define to_gtt_range(x) container_of(x, struct gtt_range, gem)
> -
>  extern int psb_gtt_restore(struct drm_device *dev);
>
>  int psb_gtt_allocate_resource(struct drm_psb_private *pdev, struct resource *res,
> diff --git a/drivers/gpu/drm/gma500/oaktrail_crtc.c b/drivers/gpu/drm/gma500/oaktrail_crtc.c
> index c6b115954b7d..36c7c2686c90 100644
> --- a/drivers/gpu/drm/gma500/oaktrail_crtc.c
> +++ b/drivers/gpu/drm/gma500/oaktrail_crtc.c
> @@ -10,6 +10,7 @@
>  #include <drm/drm_fourcc.h>
>
>  #include "framebuffer.h"
> +#include "gem.h"
>  #include "gma_display.h"
>  #include "power.h"
>  #include "psb_drv.h"
> @@ -608,7 +609,7 @@ static int oaktrail_pipe_set_base(struct drm_crtc *crtc,
>         if (!gma_power_begin(dev, true))
>                 return 0;
>
> -       start = to_gtt_range(fb->obj[0])->offset;
> +       start = to_psb_gem_object(fb->obj[0])->offset;
>         offset = y * fb->pitches[0] + x * fb->format->cpp[0];
>
>         REG_WRITE(map->stride, fb->pitches[0]);
> diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c
> index b5e9118c01a4..d5f95212934e 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_display.c
> +++ b/drivers/gpu/drm/gma500/psb_intel_display.c
> @@ -455,22 +455,21 @@ static void psb_intel_cursor_init(struct drm_device *dev,
>         struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
>         u32 control[3] = { CURACNTR, CURBCNTR, CURCCNTR };
>         u32 base[3] = { CURABASE, CURBBASE, CURCBASE };
> -       struct gtt_range *cursor_gt;
> +       struct psb_gem_object *cursor_pobj;
>
>         if (dev_priv->ops->cursor_needs_phys) {
>                 /* Allocate 4 pages of stolen mem for a hardware cursor. That
>                  * is enough for the 64 x 64 ARGB cursors we support.
>                  */
> -               cursor_gt = psb_gem_create(dev, 4 * PAGE_SIZE, "cursor", true, PAGE_SIZE);
> -               if (IS_ERR(cursor_gt)) {
> -                       gma_crtc->cursor_gt = NULL;
> +               cursor_pobj = psb_gem_create(dev, 4 * PAGE_SIZE, "cursor", true, PAGE_SIZE);
> +               if (IS_ERR(cursor_pobj)) {
> +                       gma_crtc->cursor_pobj = NULL;
>                         goto out;
>                 }
> -               gma_crtc->cursor_gt = cursor_gt;
> -               gma_crtc->cursor_addr = dev_priv->stolen_base +
> -                                                       cursor_gt->offset;
> +               gma_crtc->cursor_pobj = cursor_pobj;
> +               gma_crtc->cursor_addr = dev_priv->stolen_base + cursor_pobj->offset;
>         } else {
> -               gma_crtc->cursor_gt = NULL;
> +               gma_crtc->cursor_pobj = NULL;
>         }
>
>  out:
> diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
> index 5340225d6997..db3e757328fe 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_drv.h
> +++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
> @@ -140,7 +140,7 @@ struct gma_crtc {
>         int pipe;
>         int plane;
>         uint32_t cursor_addr;
> -       struct gtt_range *cursor_gt;
> +       struct psb_gem_object *cursor_pobj;
>         u8 lut_adj[256];
>         struct psb_intel_framebuffer *fbdev_fb;
>         /* a mode_set for fbdev users on this crtc */
> --
> 2.33.0
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index 3ea6679ccd38..45df9de22007 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -81,14 +81,13 @@  static vm_fault_t psbfb_vm_fault(struct vm_fault *vmf)
 	struct drm_framebuffer *fb = vma->vm_private_data;
 	struct drm_device *dev = fb->dev;
 	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
-	struct gtt_range *gtt = to_gtt_range(fb->obj[0]);
+	struct psb_gem_object *pobj = to_psb_gem_object(fb->obj[0]);
 	int page_num;
 	int i;
 	unsigned long address;
 	vm_fault_t ret = VM_FAULT_SIGBUS;
 	unsigned long pfn;
-	unsigned long phys_addr = (unsigned long)dev_priv->stolen_base +
-				  gtt->offset;
+	unsigned long phys_addr = (unsigned long)dev_priv->stolen_base + pobj->offset;
 
 	page_num = vma_pages(vma);
 	address = vmf->address - (vmf->pgoff << PAGE_SHIFT);
@@ -242,7 +241,7 @@  static int psbfb_create(struct drm_fb_helper *fb_helper,
 	struct drm_mode_fb_cmd2 mode_cmd;
 	int size;
 	int ret;
-	struct gtt_range *backing;
+	struct psb_gem_object *backing;
 	struct drm_gem_object *obj;
 	u32 bpp, depth;
 
@@ -264,7 +263,7 @@  static int psbfb_create(struct drm_fb_helper *fb_helper,
 	backing = psb_gem_create(dev, size, "fb", true, PAGE_SIZE);
 	if (IS_ERR(backing))
 		return PTR_ERR(backing);
-	obj = &backing->gem;
+	obj = &backing->base;
 
 	memset(dev_priv->vram_addr + backing->offset, 0, size);
 
diff --git a/drivers/gpu/drm/gma500/gem.c b/drivers/gpu/drm/gma500/gem.c
index fd556ba2c044..9b7052153cab 100644
--- a/drivers/gpu/drm/gma500/gem.c
+++ b/drivers/gpu/drm/gma500/gem.c
@@ -21,9 +21,10 @@ 
 #include "gem.h"
 #include "psb_drv.h"
 
-int psb_gem_pin(struct gtt_range *gt)
+int psb_gem_pin(struct psb_gem_object *pobj)
 {
-	struct drm_device *dev = gt->gem.dev;
+	struct drm_gem_object *obj = &pobj->base;
+	struct drm_device *dev = obj->dev;
 	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
 	u32 gpu_base = dev_priv->gtt.gatt_start;
 	struct page **pages;
@@ -31,57 +32,58 @@  int psb_gem_pin(struct gtt_range *gt)
 
 	mutex_lock(&dev_priv->gtt_mutex);
 
-	if (gt->in_gart || gt->stolen)
+	if (pobj->in_gart || pobj->stolen)
 		goto out; /* already mapped */
 
-	pages = drm_gem_get_pages(&gt->gem);
+	pages = drm_gem_get_pages(obj);
 	if (IS_ERR(pages))
 		return PTR_ERR(pages);
 
-	npages = gt->gem.size / PAGE_SIZE;
+	npages = obj->size / PAGE_SIZE;
 
 	set_pages_array_wc(pages, npages);
 
-	psb_gtt_insert_pages(dev_priv, &gt->resource, pages);
+	psb_gtt_insert_pages(dev_priv, &pobj->resource, pages);
 	psb_mmu_insert_pages(psb_mmu_get_default_pd(dev_priv->mmu), pages,
-			     (gpu_base + gt->offset), npages, 0, 0,
+			     (gpu_base + pobj->offset), npages, 0, 0,
 			     PSB_MMU_CACHED_MEMORY);
 
-	gt->npage = npages;
-	gt->pages = pages;
+	pobj->npage = npages;
+	pobj->pages = pages;
 
 out:
-	++gt->in_gart;
+	++pobj->in_gart;
 	mutex_unlock(&dev_priv->gtt_mutex);
 
 	return 0;
 }
 
-void psb_gem_unpin(struct gtt_range *gt)
+void psb_gem_unpin(struct psb_gem_object *pobj)
 {
-	struct drm_device *dev = gt->gem.dev;
+	struct drm_gem_object *obj = &pobj->base;
+	struct drm_device *dev = obj->dev;
 	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
 	u32 gpu_base = dev_priv->gtt.gatt_start;
 
 	mutex_lock(&dev_priv->gtt_mutex);
 
-	WARN_ON(!gt->in_gart);
+	WARN_ON(!pobj->in_gart);
 
-	--gt->in_gart;
+	--pobj->in_gart;
 
-	if (gt->in_gart || gt->stolen)
+	if (pobj->in_gart || pobj->stolen)
 		goto out;
 
 	psb_mmu_remove_pages(psb_mmu_get_default_pd(dev_priv->mmu),
-				     (gpu_base + gt->offset), gt->npage, 0, 0);
-	psb_gtt_remove_pages(dev_priv, &gt->resource);
+			     (gpu_base + pobj->offset), pobj->npage, 0, 0);
+	psb_gtt_remove_pages(dev_priv, &pobj->resource);
 
 	/* Reset caching flags */
-	set_pages_array_wb(gt->pages, gt->npage);
+	set_pages_array_wb(pobj->pages, pobj->npage);
 
-	drm_gem_put_pages(&gt->gem, gt->pages, true, false);
-	gt->pages = NULL;
-	gt->npage = 0;
+	drm_gem_put_pages(obj, pobj->pages, true, false);
+	pobj->pages = NULL;
+	pobj->npage = 0;
 
 out:
 	mutex_unlock(&dev_priv->gtt_mutex);
@@ -91,18 +93,18 @@  static vm_fault_t psb_gem_fault(struct vm_fault *vmf);
 
 static void psb_gem_free_object(struct drm_gem_object *obj)
 {
-	struct gtt_range *gt = to_gtt_range(obj);
+	struct psb_gem_object *pobj = to_psb_gem_object(obj);
 
 	drm_gem_object_release(obj);
 
 	/* Undo the mmap pin if we are destroying the object */
-	if (gt->mmapping)
-		psb_gem_unpin(gt);
+	if (pobj->mmapping)
+		psb_gem_unpin(pobj);
 
-	WARN_ON(gt->in_gart && !gt->stolen);
+	WARN_ON(pobj->in_gart && !pobj->stolen);
 
-	release_resource(&gt->resource);
-	kfree(gt);
+	release_resource(&pobj->resource);
+	kfree(pobj);
 }
 
 static const struct vm_operations_struct psb_gem_vm_ops = {
@@ -116,31 +118,31 @@  static const struct drm_gem_object_funcs psb_gem_object_funcs = {
 	.vm_ops = &psb_gem_vm_ops,
 };
 
-struct gtt_range *
+struct psb_gem_object *
 psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen, u32 align)
 {
 	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
-	struct gtt_range *gt;
+	struct psb_gem_object *pobj;
 	struct drm_gem_object *obj;
 	int ret;
 
 	size = roundup(size, PAGE_SIZE);
 
-	gt = kzalloc(sizeof(*gt), GFP_KERNEL);
-	if (!gt)
+	pobj = kzalloc(sizeof(*pobj), GFP_KERNEL);
+	if (!pobj)
 		return ERR_PTR(-ENOMEM);
-	obj = &gt->gem;
+	obj = &pobj->base;
 
 	/* GTT resource */
 
-	ret = psb_gtt_allocate_resource(dev_priv, &gt->resource, name, size, align, stolen,
-					&gt->offset);
+	ret = psb_gtt_allocate_resource(dev_priv, &pobj->resource, name, size, align, stolen,
+					&pobj->offset);
 	if (ret)
 		goto err_kfree;
 
 	if (stolen) {
-		gt->stolen = true;
-		gt->in_gart = 1;
+		pobj->stolen = true;
+		pobj->in_gart = 1;
 	}
 
 	/* GEM object */
@@ -158,12 +160,12 @@  psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen,
 		mapping_set_gfp_mask(obj->filp->f_mapping, GFP_KERNEL | __GFP_DMA32);
 	}
 
-	return gt;
+	return pobj;
 
 err_release_resource:
-	release_resource(&gt->resource);
+	release_resource(&pobj->resource);
 err_kfree:
-	kfree(gt);
+	kfree(pobj);
 	return ERR_PTR(ret);
 }
 
@@ -181,7 +183,7 @@  int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
 			struct drm_mode_create_dumb *args)
 {
 	size_t pitch, size;
-	struct gtt_range *gt;
+	struct psb_gem_object *pobj;
 	struct drm_gem_object *obj;
 	u32 handle;
 	int ret;
@@ -194,10 +196,10 @@  int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
 	if (!size)
 		return -EINVAL;
 
-	gt = psb_gem_create(dev, size, "gem", false, PAGE_SIZE);
-	if (IS_ERR(gt))
-		return PTR_ERR(gt);
-	obj = &gt->gem;
+	pobj = psb_gem_create(dev, size, "gem", false, PAGE_SIZE);
+	if (IS_ERR(pobj))
+		return PTR_ERR(pobj);
+	obj = &pobj->base;
 
 	ret = drm_gem_handle_create(file, obj, &handle);
 	if (ret)
@@ -236,7 +238,7 @@  static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
 {
 	struct vm_area_struct *vma = vmf->vma;
 	struct drm_gem_object *obj;
-	struct gtt_range *r;
+	struct psb_gem_object *pobj;
 	int err;
 	vm_fault_t ret;
 	unsigned long pfn;
@@ -248,7 +250,7 @@  static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
 	dev = obj->dev;
 	dev_priv = to_drm_psb_private(dev);
 
-	r = to_gtt_range(obj);
+	pobj = to_psb_gem_object(obj);
 
 	/* Make sure we don't parallel update on a fault, nor move or remove
 	   something from beneath our feet */
@@ -256,14 +258,14 @@  static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
 
 	/* For now the mmap pins the object and it stays pinned. As things
 	   stand that will do us no harm */
-	if (r->mmapping == 0) {
-		err = psb_gem_pin(r);
+	if (pobj->mmapping == 0) {
+		err = psb_gem_pin(pobj);
 		if (err < 0) {
 			dev_err(dev->dev, "gma500: pin failed: %d\n", err);
 			ret = vmf_error(err);
 			goto fail;
 		}
-		r->mmapping = 1;
+		pobj->mmapping = 1;
 	}
 
 	/* Page relative to the VMA start - we must calculate this ourselves
@@ -271,10 +273,10 @@  static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
 	page_offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
 
 	/* CPU view of the page, don't go via the GART for CPU writes */
-	if (r->stolen)
-		pfn = (dev_priv->stolen_base + r->offset) >> PAGE_SHIFT;
+	if (pobj->stolen)
+		pfn = (dev_priv->stolen_base + pobj->offset) >> PAGE_SHIFT;
 	else
-		pfn = page_to_pfn(r->pages[page_offset]);
+		pfn = page_to_pfn(pobj->pages[page_offset]);
 	ret = vmf_insert_pfn(vma, vmf->address, pfn);
 fail:
 	mutex_unlock(&dev_priv->mmap_mutex);
diff --git a/drivers/gpu/drm/gma500/gem.h b/drivers/gpu/drm/gma500/gem.h
index 21c86df482a6..79cced40c87f 100644
--- a/drivers/gpu/drm/gma500/gem.h
+++ b/drivers/gpu/drm/gma500/gem.h
@@ -8,14 +8,33 @@ 
 #ifndef _GEM_H
 #define _GEM_H
 
+#include <linux/kernel.h>
+
 #include <drm/drm_gem.h>
 
 struct drm_device;
 
-struct gtt_range *
+struct psb_gem_object {
+	struct drm_gem_object base;
+
+	struct resource resource;	/* GTT resource for our allocation */
+	u32 offset;			/* GTT offset of our object */
+	int in_gart;			/* Currently in the GART (ref ct) */
+	bool stolen;			/* Backed from stolen RAM */
+	bool mmapping;			/* Is mmappable */
+	struct page **pages;		/* Backing pages if present */
+	int npage;			/* Number of backing pages */
+};
+
+static inline struct psb_gem_object *to_psb_gem_object(struct drm_gem_object *obj)
+{
+	return container_of(obj, struct psb_gem_object, base);
+}
+
+struct psb_gem_object *
 psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen, u32 align);
 
-int psb_gem_pin(struct gtt_range *gt);
-void psb_gem_unpin(struct gtt_range *gt);
+int psb_gem_pin(struct psb_gem_object *pobj);
+void psb_gem_unpin(struct psb_gem_object *pobj);
 
 #endif
diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
index 6d0470b27bc5..99da3118131a 100644
--- a/drivers/gpu/drm/gma500/gma_display.c
+++ b/drivers/gpu/drm/gma500/gma_display.c
@@ -55,7 +55,7 @@  int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
 	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
 	struct drm_framebuffer *fb = crtc->primary->fb;
-	struct gtt_range *gtt;
+	struct psb_gem_object *pobj;
 	int pipe = gma_crtc->pipe;
 	const struct psb_offset *map = &dev_priv->regmap[pipe];
 	unsigned long start, offset;
@@ -71,14 +71,14 @@  int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 		goto gma_pipe_cleaner;
 	}
 
-	gtt = to_gtt_range(fb->obj[0]);
+	pobj = to_psb_gem_object(fb->obj[0]);
 
 	/* We are displaying this buffer, make sure it is actually loaded
 	   into the GTT */
-	ret = psb_gem_pin(gtt);
+	ret = psb_gem_pin(pobj);
 	if (ret < 0)
 		goto gma_pipe_set_base_exit;
-	start = gtt->offset;
+	start = pobj->offset;
 	offset = y * fb->pitches[0] + x * fb->format->cpp[0];
 
 	REG_WRITE(map->stride, fb->pitches[0]);
@@ -126,7 +126,7 @@  int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 gma_pipe_cleaner:
 	/* If there was a previous display we can now unpin it */
 	if (old_fb)
-		psb_gem_unpin(to_gtt_range(old_fb->obj[0]));
+		psb_gem_unpin(to_psb_gem_object(old_fb->obj[0]));
 
 gma_pipe_set_base_exit:
 	gma_power_end(dev);
@@ -332,8 +332,8 @@  int gma_crtc_cursor_set(struct drm_crtc *crtc,
 	uint32_t base = (pipe == 0) ? CURABASE : CURBBASE;
 	uint32_t temp;
 	size_t addr = 0;
-	struct gtt_range *gt;
-	struct gtt_range *cursor_gt = gma_crtc->cursor_gt;
+	struct psb_gem_object *pobj;
+	struct psb_gem_object *cursor_pobj = gma_crtc->cursor_pobj;
 	struct drm_gem_object *obj;
 	void *tmp_dst, *tmp_src;
 	int ret = 0, i, cursor_pages;
@@ -349,8 +349,8 @@  int gma_crtc_cursor_set(struct drm_crtc *crtc,
 
 		/* Unpin the old GEM object */
 		if (gma_crtc->cursor_obj) {
-			gt = to_gtt_range(gma_crtc->cursor_obj);
-			psb_gem_unpin(gt);
+			pobj = to_psb_gem_object(gma_crtc->cursor_obj);
+			psb_gem_unpin(pobj);
 			drm_gem_object_put(gma_crtc->cursor_obj);
 			gma_crtc->cursor_obj = NULL;
 		}
@@ -375,40 +375,40 @@  int gma_crtc_cursor_set(struct drm_crtc *crtc,
 		goto unref_cursor;
 	}
 
-	gt = to_gtt_range(obj);
+	pobj = to_psb_gem_object(obj);
 
 	/* Pin the memory into the GTT */
-	ret = psb_gem_pin(gt);
+	ret = psb_gem_pin(pobj);
 	if (ret) {
 		dev_err(dev->dev, "Can not pin down handle 0x%x\n", handle);
 		goto unref_cursor;
 	}
 
 	if (dev_priv->ops->cursor_needs_phys) {
-		if (cursor_gt == NULL) {
+		if (!cursor_pobj) {
 			dev_err(dev->dev, "No hardware cursor mem available");
 			ret = -ENOMEM;
 			goto unref_cursor;
 		}
 
 		/* Prevent overflow */
-		if (gt->npage > 4)
+		if (pobj->npage > 4)
 			cursor_pages = 4;
 		else
-			cursor_pages = gt->npage;
+			cursor_pages = pobj->npage;
 
 		/* Copy the cursor to cursor mem */
-		tmp_dst = dev_priv->vram_addr + cursor_gt->offset;
+		tmp_dst = dev_priv->vram_addr + cursor_pobj->offset;
 		for (i = 0; i < cursor_pages; i++) {
-			tmp_src = kmap(gt->pages[i]);
+			tmp_src = kmap(pobj->pages[i]);
 			memcpy(tmp_dst, tmp_src, PAGE_SIZE);
-			kunmap(gt->pages[i]);
+			kunmap(pobj->pages[i]);
 			tmp_dst += PAGE_SIZE;
 		}
 
 		addr = gma_crtc->cursor_addr;
 	} else {
-		addr = gt->offset;
+		addr = pobj->offset;
 		gma_crtc->cursor_addr = addr;
 	}
 
@@ -425,8 +425,8 @@  int gma_crtc_cursor_set(struct drm_crtc *crtc,
 
 	/* unpin the old bo */
 	if (gma_crtc->cursor_obj) {
-		gt = to_gtt_range(gma_crtc->cursor_obj);
-		psb_gem_unpin(gt);
+		pobj = to_psb_gem_object(gma_crtc->cursor_obj);
+		psb_gem_unpin(pobj);
 		drm_gem_object_put(gma_crtc->cursor_obj);
 	}
 
@@ -483,14 +483,14 @@  void gma_crtc_commit(struct drm_crtc *crtc)
 
 void gma_crtc_disable(struct drm_crtc *crtc)
 {
-	struct gtt_range *gt;
+	struct psb_gem_object *pobj;
 	const struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
 
 	crtc_funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
 
 	if (crtc->primary->fb) {
-		gt = to_gtt_range(crtc->primary->fb->obj[0]);
-		psb_gem_unpin(gt);
+		pobj = to_psb_gem_object(crtc->primary->fb->obj[0]);
+		psb_gem_unpin(pobj);
 	}
 }
 
@@ -498,8 +498,8 @@  void gma_crtc_destroy(struct drm_crtc *crtc)
 {
 	struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
 
-	if (gma_crtc->cursor_gt)
-		drm_gem_object_put(&gma_crtc->cursor_gt->gem);
+	if (gma_crtc->cursor_pobj)
+		drm_gem_object_put(&gma_crtc->cursor_pobj->base);
 
 	kfree(gma_crtc->crtc_state);
 	drm_crtc_cleanup(crtc);
diff --git a/drivers/gpu/drm/gma500/gtt.c b/drivers/gpu/drm/gma500/gtt.c
index cf71a2396c16..75e483c88ceb 100644
--- a/drivers/gpu/drm/gma500/gtt.c
+++ b/drivers/gpu/drm/gma500/gtt.c
@@ -7,6 +7,7 @@ 
  *	    Alan Cox <alan@linux.intel.com>
  */
 
+#include "gem.h" /* TODO: for struct psb_gem_object, see psb_gtt_restore() */
 #include "psb_drv.h"
 
 
@@ -292,7 +293,7 @@  int psb_gtt_restore(struct drm_device *dev)
 {
 	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
 	struct resource *r = dev_priv->gtt_mem->child;
-	struct gtt_range *range;
+	struct psb_gem_object *pobj;
 	unsigned int restored = 0, total = 0, size = 0;
 
 	/* On resume, the gtt_mutex is already initialized */
@@ -302,13 +303,13 @@  int psb_gtt_restore(struct drm_device *dev)
 	while (r != NULL) {
 		/*
 		 * TODO: GTT restoration needs a refactoring, so that we don't have to touch
-		 *       struct gtt_range here. The type represents a GEM object and is not
-		 *       related to the GTT itself.
+		 *       struct psb_gem_object here. The type represents a GEM object and is
+		 *       not related to the GTT itself.
 		 */
-		range = container_of(r, struct gtt_range, resource);
-		if (range->pages) {
-			psb_gtt_insert_pages(dev_priv, &range->resource, range->pages);
-			size += range->resource.end - range->resource.start;
+		pobj = container_of(r, struct psb_gem_object, resource);
+		if (pobj->pages) {
+			psb_gtt_insert_pages(dev_priv, &pobj->resource, pobj->pages);
+			size += pobj->resource.end - pobj->resource.start;
 			restored++;
 		}
 		r = r->sibling;
diff --git a/drivers/gpu/drm/gma500/gtt.h b/drivers/gpu/drm/gma500/gtt.h
index 6a28e24a18b7..29649395c531 100644
--- a/drivers/gpu/drm/gma500/gtt.h
+++ b/drivers/gpu/drm/gma500/gtt.h
@@ -28,21 +28,6 @@  struct psb_gtt {
 /* Exported functions */
 extern int psb_gtt_init(struct drm_device *dev, int resume);
 extern void psb_gtt_takedown(struct drm_device *dev);
-
-/* Each gtt_range describes an allocation in the GTT area */
-struct gtt_range {
-	struct resource resource;	/* Resource for our allocation */
-	u32 offset;			/* GTT offset of our object */
-	struct drm_gem_object gem;	/* GEM high level stuff */
-	int in_gart;			/* Currently in the GART (ref ct) */
-	bool stolen;			/* Backed from stolen RAM */
-	bool mmapping;			/* Is mmappable */
-	struct page **pages;		/* Backing pages if present */
-	int npage;			/* Number of backing pages */
-};
-
-#define to_gtt_range(x) container_of(x, struct gtt_range, gem)
-
 extern int psb_gtt_restore(struct drm_device *dev);
 
 int psb_gtt_allocate_resource(struct drm_psb_private *pdev, struct resource *res,
diff --git a/drivers/gpu/drm/gma500/oaktrail_crtc.c b/drivers/gpu/drm/gma500/oaktrail_crtc.c
index c6b115954b7d..36c7c2686c90 100644
--- a/drivers/gpu/drm/gma500/oaktrail_crtc.c
+++ b/drivers/gpu/drm/gma500/oaktrail_crtc.c
@@ -10,6 +10,7 @@ 
 #include <drm/drm_fourcc.h>
 
 #include "framebuffer.h"
+#include "gem.h"
 #include "gma_display.h"
 #include "power.h"
 #include "psb_drv.h"
@@ -608,7 +609,7 @@  static int oaktrail_pipe_set_base(struct drm_crtc *crtc,
 	if (!gma_power_begin(dev, true))
 		return 0;
 
-	start = to_gtt_range(fb->obj[0])->offset;
+	start = to_psb_gem_object(fb->obj[0])->offset;
 	offset = y * fb->pitches[0] + x * fb->format->cpp[0];
 
 	REG_WRITE(map->stride, fb->pitches[0]);
diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c
index b5e9118c01a4..d5f95212934e 100644
--- a/drivers/gpu/drm/gma500/psb_intel_display.c
+++ b/drivers/gpu/drm/gma500/psb_intel_display.c
@@ -455,22 +455,21 @@  static void psb_intel_cursor_init(struct drm_device *dev,
 	struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
 	u32 control[3] = { CURACNTR, CURBCNTR, CURCCNTR };
 	u32 base[3] = { CURABASE, CURBBASE, CURCBASE };
-	struct gtt_range *cursor_gt;
+	struct psb_gem_object *cursor_pobj;
 
 	if (dev_priv->ops->cursor_needs_phys) {
 		/* Allocate 4 pages of stolen mem for a hardware cursor. That
 		 * is enough for the 64 x 64 ARGB cursors we support.
 		 */
-		cursor_gt = psb_gem_create(dev, 4 * PAGE_SIZE, "cursor", true, PAGE_SIZE);
-		if (IS_ERR(cursor_gt)) {
-			gma_crtc->cursor_gt = NULL;
+		cursor_pobj = psb_gem_create(dev, 4 * PAGE_SIZE, "cursor", true, PAGE_SIZE);
+		if (IS_ERR(cursor_pobj)) {
+			gma_crtc->cursor_pobj = NULL;
 			goto out;
 		}
-		gma_crtc->cursor_gt = cursor_gt;
-		gma_crtc->cursor_addr = dev_priv->stolen_base +
-							cursor_gt->offset;
+		gma_crtc->cursor_pobj = cursor_pobj;
+		gma_crtc->cursor_addr = dev_priv->stolen_base + cursor_pobj->offset;
 	} else {
-		gma_crtc->cursor_gt = NULL;
+		gma_crtc->cursor_pobj = NULL;
 	}
 
 out:
diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
index 5340225d6997..db3e757328fe 100644
--- a/drivers/gpu/drm/gma500/psb_intel_drv.h
+++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
@@ -140,7 +140,7 @@  struct gma_crtc {
 	int pipe;
 	int plane;
 	uint32_t cursor_addr;
-	struct gtt_range *cursor_gt;
+	struct psb_gem_object *cursor_pobj;
 	u8 lut_adj[256];
 	struct psb_intel_framebuffer *fbdev_fb;
 	/* a mode_set for fbdev users on this crtc */