1/* SPDX-License-Identifier: MIT */
2#ifndef __NVKM_TOP_H__
3#define __NVKM_TOP_H__
4#include <core/subdev.h>
5
6struct nvkm_top {
7	const struct nvkm_top_func *func;
8	struct nvkm_subdev subdev;
9	struct list_head device;
10};
11
12struct 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
24int nvkm_top_parse(struct nvkm_device *);
25u32 nvkm_top_addr(struct nvkm_device *, enum nvkm_subdev_type, int);
26u32 nvkm_top_reset(struct nvkm_device *, enum nvkm_subdev_type, int);
27u32 nvkm_top_intr_mask(struct nvkm_device *, enum nvkm_subdev_type, int);
28int nvkm_top_fault_id(struct nvkm_device *, enum nvkm_subdev_type, int);
29struct nvkm_subdev *nvkm_top_fault(struct nvkm_device *, int fault);
30
31int gk104_top_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_top **);
32int ga100_top_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_top **);
33#endif
34