1 /* SPDX-License-Identifier: MIT */
2 #ifndef __NVKM_TOP_H__
3 #define __NVKM_TOP_H__
4 #include <core/subdev.h>
5 
6 struct nvkm_top {
7 	const struct nvkm_top_func *func;
8 	struct nvkm_subdev subdev;
9 	struct list_head device;
10 };
11 
12 struct nvkm_top_device {
13 	enum nvkm_subdev_type type;
14 	int inst;
15 	u32 addr;
16 	int fault;
17 	int engine;
18 	int runlist;
19 	int reset;
20 	int intr;
21 	struct list_head head;
22 };
23 
24 int nvkm_top_parse(struct nvkm_device *);
25 u32 nvkm_top_addr(struct nvkm_device *, enum nvkm_subdev_type, int);
26 u32 nvkm_top_reset(struct nvkm_device *, enum nvkm_subdev_type, int);
27 u32 nvkm_top_intr_mask(struct nvkm_device *, enum nvkm_subdev_type, int);
28 int nvkm_top_fault_id(struct nvkm_device *, enum nvkm_subdev_type, int);
29 struct nvkm_subdev *nvkm_top_fault(struct nvkm_device *, int fault);
30 
31 int gk104_top_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_top **);
32 int ga100_top_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_top **);
33 #endif
34