xref: /linux/drivers/gpu/drm/nouveau/include/nvkm/engine/dma.h (revision d0034a7a4ac7fae708146ac0059b9c47a1543f0d)
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