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