1*677dec6eSriastradh /*	$NetBSD: bus.h,v 1.3 2021/12/18 23:45:33 riastradh Exp $	*/
2d350ecf5Sriastradh 
3*677dec6eSriastradh /* SPDX-License-Identifier: MIT */
4d350ecf5Sriastradh #ifndef __NVKM_BUS_H__
5d350ecf5Sriastradh #define __NVKM_BUS_H__
6d350ecf5Sriastradh #include <core/subdev.h>
7d350ecf5Sriastradh 
8d350ecf5Sriastradh struct nvkm_bus {
9d350ecf5Sriastradh 	const struct nvkm_bus_func *func;
10d350ecf5Sriastradh 	struct nvkm_subdev subdev;
11d350ecf5Sriastradh };
12d350ecf5Sriastradh 
13d350ecf5Sriastradh /* interface to sequencer */
14d350ecf5Sriastradh struct nvkm_hwsq;
15d350ecf5Sriastradh int  nvkm_hwsq_init(struct nvkm_subdev *, struct nvkm_hwsq **);
16d350ecf5Sriastradh int  nvkm_hwsq_fini(struct nvkm_hwsq **, bool exec);
17d350ecf5Sriastradh void nvkm_hwsq_wr32(struct nvkm_hwsq *, u32 addr, u32 data);
18d350ecf5Sriastradh void nvkm_hwsq_setf(struct nvkm_hwsq *, u8 flag, int data);
19d350ecf5Sriastradh void nvkm_hwsq_wait(struct nvkm_hwsq *, u8 flag, u8 data);
20d350ecf5Sriastradh void nvkm_hwsq_wait_vblank(struct nvkm_hwsq *);
21d350ecf5Sriastradh void nvkm_hwsq_nsec(struct nvkm_hwsq *, u32 nsec);
22d350ecf5Sriastradh 
23d350ecf5Sriastradh int nv04_bus_new(struct nvkm_device *, int, struct nvkm_bus **);
24d350ecf5Sriastradh int nv31_bus_new(struct nvkm_device *, int, struct nvkm_bus **);
25d350ecf5Sriastradh int nv50_bus_new(struct nvkm_device *, int, struct nvkm_bus **);
26d350ecf5Sriastradh int g94_bus_new(struct nvkm_device *, int, struct nvkm_bus **);
27d350ecf5Sriastradh int gf100_bus_new(struct nvkm_device *, int, struct nvkm_bus **);
28d350ecf5Sriastradh #endif
29