1 /* SPDX-License-Identifier: MIT 2 * 3 * Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. 4 */ 5 #include "engine.h" 6 #include <engine/nvdec.h> 7 8 static void * 9 nvkm_rm_nvdec_dtor(struct nvkm_engine *engine) 10 { 11 return container_of(engine, struct nvkm_nvdec, engine); 12 } 13 14 int 15 nvkm_rm_nvdec_new(struct nvkm_rm *rm, int inst) 16 { 17 struct nvkm_nvdec *nvdec; 18 int ret; 19 20 nvdec = kzalloc(sizeof(*nvdec), GFP_KERNEL); 21 if (!nvdec) 22 return -ENOMEM; 23 24 ret = nvkm_rm_engine_ctor(nvkm_rm_nvdec_dtor, rm, NVKM_ENGINE_NVDEC, inst, 25 &rm->gpu->nvdec.class, 1, &nvdec->engine); 26 if (ret) { 27 kfree(nvdec); 28 return ret; 29 } 30 31 rm->device->nvdec[inst] = nvdec; 32 return 0; 33 } 34