• Home
  • Raw
  • Download

Lines Matching full:gt

199  *	@gt: the gtt range
205 static int psb_gtt_attach_pages(struct gtt_range *gt) in psb_gtt_attach_pages() argument
209 WARN_ON(gt->pages); in psb_gtt_attach_pages()
211 pages = drm_gem_get_pages(&gt->gem); in psb_gtt_attach_pages()
215 gt->npage = gt->gem.size / PAGE_SIZE; in psb_gtt_attach_pages()
216 gt->pages = pages; in psb_gtt_attach_pages()
223 * @gt: the gtt range
230 static void psb_gtt_detach_pages(struct gtt_range *gt) in psb_gtt_detach_pages() argument
232 drm_gem_put_pages(&gt->gem, gt->pages, true, false); in psb_gtt_detach_pages()
233 gt->pages = NULL; in psb_gtt_detach_pages()
238 * @gt: range to pin
246 int psb_gtt_pin(struct gtt_range *gt) in psb_gtt_pin() argument
249 struct drm_device *dev = gt->gem.dev; in psb_gtt_pin()
255 if (gt->in_gart == 0 && gt->stolen == 0) { in psb_gtt_pin()
256 ret = psb_gtt_attach_pages(gt); in psb_gtt_pin()
259 ret = psb_gtt_insert(dev, gt, 0); in psb_gtt_pin()
261 psb_gtt_detach_pages(gt); in psb_gtt_pin()
265 gt->pages, (gpu_base + gt->offset), in psb_gtt_pin()
266 gt->npage, 0, 0, PSB_MMU_CACHED_MEMORY); in psb_gtt_pin()
268 gt->in_gart++; in psb_gtt_pin()
276 * @gt: range to pin
285 void psb_gtt_unpin(struct gtt_range *gt) in psb_gtt_unpin() argument
287 struct drm_device *dev = gt->gem.dev; in psb_gtt_unpin()
302 WARN_ON(!gt->in_gart); in psb_gtt_unpin()
304 gt->in_gart--; in psb_gtt_unpin()
305 if (gt->in_gart == 0 && gt->stolen == 0) { in psb_gtt_unpin()
307 (gpu_base + gt->offset), gt->npage, 0, 0); in psb_gtt_unpin()
308 psb_gtt_remove(dev, gt); in psb_gtt_unpin()
309 psb_gtt_detach_pages(gt); in psb_gtt_unpin()
339 struct gtt_range *gt; in psb_gtt_alloc_range() local
354 gt = kzalloc(sizeof(struct gtt_range), GFP_KERNEL); in psb_gtt_alloc_range()
355 if (gt == NULL) in psb_gtt_alloc_range()
357 gt->resource.name = name; in psb_gtt_alloc_range()
358 gt->stolen = backed; in psb_gtt_alloc_range()
359 gt->in_gart = backed; in psb_gtt_alloc_range()
360 gt->roll = 0; in psb_gtt_alloc_range()
362 gt->gem.dev = dev; in psb_gtt_alloc_range()
363 ret = allocate_resource(dev_priv->gtt_mem, &gt->resource, in psb_gtt_alloc_range()
366 gt->offset = gt->resource.start - r->start; in psb_gtt_alloc_range()
367 return gt; in psb_gtt_alloc_range()
369 kfree(gt); in psb_gtt_alloc_range()
376 * @gt: a mapping created with psb_gtt_alloc_range
381 void psb_gtt_free_range(struct drm_device *dev, struct gtt_range *gt) in psb_gtt_free_range() argument
384 if (gt->mmapping) { in psb_gtt_free_range()
385 psb_gtt_unpin(gt); in psb_gtt_free_range()
386 gt->mmapping = 0; in psb_gtt_free_range()
388 WARN_ON(gt->in_gart && !gt->stolen); in psb_gtt_free_range()
389 release_resource(&gt->resource); in psb_gtt_free_range()
390 kfree(gt); in psb_gtt_free_range()