Home | History | Annotate | Line # | Download | only in fault
      1 /*	$NetBSD: priv.h,v 1.2 2021/12/18 23:45:39 riastradh Exp $	*/
      2 
      3 #ifndef __NVKM_FAULT_PRIV_H__
      4 #define __NVKM_FAULT_PRIV_H__
      5 #define nvkm_fault_buffer(p) container_of((p), struct nvkm_fault_buffer, object)
      6 #define nvkm_fault(p) container_of((p), struct nvkm_fault, subdev)
      7 #include <subdev/fault.h>
      8 
      9 #include <core/event.h>
     10 #include <core/object.h>
     11 
     12 struct nvkm_fault_buffer {
     13 	struct nvkm_object object;
     14 	struct nvkm_fault *fault;
     15 	int id;
     16 	int entries;
     17 	u32 get;
     18 	u32 put;
     19 	struct nvkm_memory *mem;
     20 	u64 addr;
     21 };
     22 
     23 int nvkm_fault_new_(const struct nvkm_fault_func *, struct nvkm_device *,
     24 		    int index, struct nvkm_fault **);
     25 
     26 struct nvkm_fault_func {
     27 	int (*oneinit)(struct nvkm_fault *);
     28 	void (*init)(struct nvkm_fault *);
     29 	void (*fini)(struct nvkm_fault *);
     30 	void (*intr)(struct nvkm_fault *);
     31 	struct {
     32 		int nr;
     33 		u32 entry_size;
     34 		void (*info)(struct nvkm_fault_buffer *);
     35 		u64 (*pin)(struct nvkm_fault_buffer *);
     36 		void (*init)(struct nvkm_fault_buffer *);
     37 		void (*fini)(struct nvkm_fault_buffer *);
     38 		void (*intr)(struct nvkm_fault_buffer *, bool enable);
     39 	} buffer;
     40 	struct {
     41 		struct nvkm_sclass base;
     42 		int rp;
     43 	} user;
     44 };
     45 
     46 void gp100_fault_buffer_intr(struct nvkm_fault_buffer *, bool enable);
     47 void gp100_fault_buffer_fini(struct nvkm_fault_buffer *);
     48 void gp100_fault_buffer_init(struct nvkm_fault_buffer *);
     49 u64 gp100_fault_buffer_pin(struct nvkm_fault_buffer *);
     50 void gp100_fault_buffer_info(struct nvkm_fault_buffer *);
     51 void gp100_fault_intr(struct nvkm_fault *);
     52 
     53 u64 gp10b_fault_buffer_pin(struct nvkm_fault_buffer *);
     54 
     55 int gv100_fault_oneinit(struct nvkm_fault *);
     56 
     57 int nvkm_ufault_new(struct nvkm_device *, const struct nvkm_oclass *,
     58 		    void *, u32, struct nvkm_object **);
     59 #endif
     60