Lines Matching refs:pobj

28 int psb_gem_pin(struct psb_gem_object *pobj)
30 struct drm_gem_object *obj = &pobj->base;
42 if (pobj->in_gart || pobj->stolen)
55 psb_gtt_insert_pages(dev_priv, &pobj->resource, pages);
57 (gpu_base + pobj->offset), npages, 0, 0,
60 pobj->pages = pages;
63 ++pobj->in_gart;
73 void psb_gem_unpin(struct psb_gem_object *pobj)
75 struct drm_gem_object *obj = &pobj->base;
86 WARN_ON(!pobj->in_gart);
88 --pobj->in_gart;
90 if (pobj->in_gart || pobj->stolen)
96 (gpu_base + pobj->offset), npages, 0, 0);
97 psb_gtt_remove_pages(dev_priv, &pobj->resource);
100 set_pages_array_wb(pobj->pages, npages);
102 drm_gem_put_pages(obj, pobj->pages, true, false);
103 pobj->pages = NULL;
113 struct psb_gem_object *pobj = to_psb_gem_object(obj);
116 if (pobj->mmapping)
117 psb_gem_unpin(pobj);
121 WARN_ON(pobj->in_gart && !pobj->stolen);
123 release_resource(&pobj->resource);
124 kfree(pobj);
142 struct psb_gem_object *pobj;
148 pobj = kzalloc(sizeof(*pobj), GFP_KERNEL);
149 if (!pobj)
151 obj = &pobj->base;
155 ret = psb_gtt_allocate_resource(dev_priv, &pobj->resource, name, size, align, stolen,
156 &pobj->offset);
161 pobj->stolen = true;
162 pobj->in_gart = 1;
180 return pobj;
183 release_resource(&pobj->resource);
185 kfree(pobj);
203 struct psb_gem_object *pobj;
216 pobj = psb_gem_create(dev, size, "gem", false, PAGE_SIZE);
217 if (IS_ERR(pobj))
218 return PTR_ERR(pobj);
219 obj = &pobj->base;
258 struct psb_gem_object *pobj;
270 pobj = to_psb_gem_object(obj);
278 if (pobj->mmapping == 0) {
279 err = psb_gem_pin(pobj);
285 pobj->mmapping = 1;
293 if (pobj->stolen)
294 pfn = (dev_priv->stolen_base + pobj->offset) >> PAGE_SHIFT;
296 pfn = page_to_pfn(pobj->pages[page_offset]);
384 struct psb_gem_object *pobj;
392 pobj = container_of(r, struct psb_gem_object, resource);
393 if (pobj->pages) {
394 psb_gtt_insert_pages(pdev, &pobj->resource, pobj->pages);
395 size += resource_size(&pobj->resource);