| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef __NOUVEAU_CHAN_H__ |
| #define __NOUVEAU_CHAN_H__ |
| #include <nvif/object.h> |
| #include <nvif/notify.h> |
| struct nvif_device; |
| |
| struct nouveau_channel { |
| struct nvif_device *device; |
| struct nouveau_drm *drm; |
| |
| int chid; |
| |
| struct nvif_object vram; |
| struct nvif_object gart; |
| struct nvif_object nvsw; |
| |
| struct { |
| struct nouveau_bo *buffer; |
| struct nouveau_vma *vma; |
| struct nvif_object ctxdma; |
| u64 addr; |
| } push; |
| |
| /* TODO: this will be reworked in the near future */ |
| bool accel_done; |
| void *fence; |
| struct { |
| int max; |
| int free; |
| int cur; |
| int put; |
| int ib_base; |
| int ib_max; |
| int ib_free; |
| int ib_put; |
| } dma; |
| u32 user_get_hi; |
| u32 user_get; |
| u32 user_put; |
| |
| struct nvif_object user; |
| |
| struct nvif_notify kill; |
| atomic_t killed; |
| }; |
| |
| int nouveau_channels_init(struct nouveau_drm *); |
| |
| int nouveau_channel_new(struct nouveau_drm *, struct nvif_device *, |
| u32 arg0, u32 arg1, struct nouveau_channel **); |
| void nouveau_channel_del(struct nouveau_channel **); |
| int nouveau_channel_idle(struct nouveau_channel *); |
| |
| extern int nouveau_vram_pushbuf; |
| |
| #endif |