Home | History | Annotate | Line # | Download | only in nouveau
      1 /*	$NetBSD: nouveau_chan.h,v 1.3 2021/12/18 23:45:32 riastradh Exp $	*/
      2 
      3 /* SPDX-License-Identifier: MIT */
      4 #ifndef __NOUVEAU_CHAN_H__
      5 #define __NOUVEAU_CHAN_H__
      6 #include <nvif/object.h>
      7 #include <nvif/notify.h>
      8 struct nvif_device;
      9 
     10 struct nouveau_channel {
     11 	struct nvif_device *device;
     12 	struct nouveau_drm *drm;
     13 	struct nouveau_vmm *vmm;
     14 
     15 	int chid;
     16 	u64 inst;
     17 	u32 token;
     18 
     19 	struct nvif_object vram;
     20 	struct nvif_object gart;
     21 	struct nvif_object nvsw;
     22 
     23 	struct {
     24 		struct nouveau_bo *buffer;
     25 		struct nouveau_vma *vma;
     26 		struct nvif_object ctxdma;
     27 		u64 addr;
     28 	} push;
     29 
     30 	/* TODO: this will be reworked in the near future */
     31 	bool accel_done;
     32 	void *fence;
     33 	struct {
     34 		int max;
     35 		int free;
     36 		int cur;
     37 		int put;
     38 		int ib_base;
     39 		int ib_max;
     40 		int ib_free;
     41 		int ib_put;
     42 	} dma;
     43 	u32 user_get_hi;
     44 	u32 user_get;
     45 	u32 user_put;
     46 
     47 	struct nvif_object user;
     48 
     49 	struct nvif_notify kill;
     50 	atomic_t killed;
     51 };
     52 
     53 int nouveau_channels_init(struct nouveau_drm *);
     54 
     55 int  nouveau_channel_new(struct nouveau_drm *, struct nvif_device *,
     56 			 u32 arg0, u32 arg1, bool priv,
     57 			 struct nouveau_channel **);
     58 void nouveau_channel_del(struct nouveau_channel **);
     59 int  nouveau_channel_idle(struct nouveau_channel *);
     60 
     61 extern int nouveau_vram_pushbuf;
     62 
     63 #endif
     64