void _nouveau_fb_dtor(struct nouveau_object *object) { struct nouveau_fb *pfb = (void *)object; int i; for (i = 0; i < pfb->tile.regions; i++) pfb->tile.fini(pfb, i, &pfb->tile.region[i]); nouveau_mm_fini(&pfb->tags); nouveau_mm_fini(&pfb->vram); nouveau_object_ref(NULL, (struct nouveau_object **)&pfb->ram); nouveau_subdev_destroy(&pfb->base); }
void nouveau_fb_destroy(struct nouveau_fb *pfb) { int i; for (i = 0; i < pfb->tile.regions; i++) pfb->tile.fini(pfb, i, &pfb->tile.region[i]); if (pfb->tags.block_size) nouveau_mm_fini(&pfb->tags); if (pfb->vram.block_size) nouveau_mm_fini(&pfb->vram); nouveau_subdev_destroy(&pfb->base); }
void gf100_ltc_dtor(struct nouveau_object *object) { struct nouveau_fb *pfb = nouveau_fb(object); struct nvkm_ltc_priv *priv = (void *)object; nouveau_mm_fini(&priv->tags); nouveau_mm_free(&pfb->vram, &priv->tag_ram); nvkm_ltc_destroy(priv); }
static void nvc0_ltcg_dtor(struct nouveau_object *object) { struct nouveau_ltcg *ltcg = (struct nouveau_ltcg *)object; struct nvc0_ltcg_priv *priv = (struct nvc0_ltcg_priv *)ltcg; struct nouveau_fb *pfb = nouveau_fb(ltcg->base.base.parent); nouveau_mm_fini(&priv->tags); nouveau_mm_free(&pfb->vram, &priv->tag_ram); nouveau_ltcg_destroy(ltcg); }
void nv04_instmem_dtor(struct nouveau_object *object) { struct nv04_instmem_priv *priv = (void *)object; nouveau_gpuobj_ref(NULL, &priv->ramfc); nouveau_gpuobj_ref(NULL, &priv->ramro); nouveau_ramht_ref(NULL, &priv->ramht); nouveau_gpuobj_ref(NULL, &priv->vbios); nouveau_mm_fini(&priv->heap); if (priv->iomem) iounmap(priv->iomem); nouveau_instmem_destroy(&priv->base); }
void nouveau_gpuobj_destroy(struct nouveau_gpuobj *gpuobj) { int i; if (gpuobj->flags & NVOBJ_FLAG_ZERO_FREE) { for (i = 0; i < gpuobj->size; i += 4) nv_wo32(gpuobj, i, 0x00000000); } if (gpuobj->node) { nouveau_mm_free(&nv_gpuobj(gpuobj->parent)->heap, &gpuobj->node); } if (gpuobj->heap.block_size) nouveau_mm_fini(&gpuobj->heap); nouveau_object_destroy(&gpuobj->base); }