예제 #1
0
static void
nv40_fifo_dma_engine_dtor(struct nvkm_fifo_chan *base,
			  struct nvkm_engine *engine)
{
	struct nv04_fifo_chan *chan = nv04_fifo_chan(base);
	nvkm_gpuobj_del(&chan->engn[engine->subdev.index]);
}
예제 #2
0
파일: gpuobj.c 프로젝트: AlexShiLucky/linux
int
nvkm_gpuobj_new(struct nvkm_device *device, u32 size, int align, bool zero,
		struct nvkm_gpuobj *parent, struct nvkm_gpuobj **pgpuobj)
{
	struct nvkm_gpuobj *gpuobj;
	int ret;

	if (!(gpuobj = *pgpuobj = kzalloc(sizeof(*gpuobj), GFP_KERNEL)))
		return -ENOMEM;

	ret = nvkm_gpuobj_ctor(device, size, align, zero, parent, gpuobj);
	if (ret)
		nvkm_gpuobj_del(pgpuobj);
	return ret;
}
예제 #3
0
static void
nouveau_accel_fini(struct nouveau_drm *drm)
{
	nouveau_channel_idle(drm->channel);
	nvif_object_fini(&drm->ntfy);
	nvkm_gpuobj_del(&drm->notify);
	nvif_notify_fini(&drm->flip);
	nvif_object_fini(&drm->nvsw);
	nouveau_channel_del(&drm->channel);

	nouveau_channel_idle(drm->cechan);
	nvif_object_fini(&drm->ttm.copy);
	nouveau_channel_del(&drm->cechan);

	if (drm->fence)
		nouveau_fence(drm)->dtor(drm);
}