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