1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */ 219fef52dSBen Skeggs #ifndef __NVKM_DMA_H__ 319fef52dSBen Skeggs #define __NVKM_DMA_H__ 419fef52dSBen Skeggs #include <core/engine.h> 54246b92cSBen Skeggs #include <core/object.h> 60710cc31SBen Skeggs struct nvkm_client; 719fef52dSBen Skeggs 819fef52dSBen Skeggs struct nvkm_dmaobj { 90710cc31SBen Skeggs const struct nvkm_dmaobj_func *func; 100710cc31SBen Skeggs struct nvkm_dma *dma; 110710cc31SBen Skeggs 120710cc31SBen Skeggs struct nvkm_object object; 1319fef52dSBen Skeggs u32 target; 1419fef52dSBen Skeggs u32 access; 1519fef52dSBen Skeggs u64 start; 1619fef52dSBen Skeggs u64 limit; 170710cc31SBen Skeggs }; 180710cc31SBen Skeggs 1919fef52dSBen Skeggs struct nvkm_dma { 20bd70563fSBen Skeggs const struct nvkm_dma_func *func; 2119fef52dSBen Skeggs struct nvkm_engine engine; 2219fef52dSBen Skeggs }; 2319fef52dSBen Skeggs 2483e85d91SBen Skeggs struct nvkm_dmaobj *nvkm_dmaobj_search(struct nvkm_client *, u64 object); 250710cc31SBen Skeggs 26*09f409d7SBen Skeggs int nv04_dma_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_dma **); 27*09f409d7SBen Skeggs int nv50_dma_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_dma **); 28*09f409d7SBen Skeggs int gf100_dma_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_dma **); 29*09f409d7SBen Skeggs int gf119_dma_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_dma **); 30*09f409d7SBen Skeggs int gv100_dma_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_dma **); 3119fef52dSBen Skeggs #endif 32