]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blame - drivers/gpu/drm/nouveau/include/nvkm/subdev/bus.h
drm/nouveau/bios: convert to new-style nvkm_subdev
[mirror_ubuntu-focal-kernel.git] / drivers / gpu / drm / nouveau / include / nvkm / subdev / bus.h
CommitLineData
5f8824de
BS
1#ifndef __NVKM_BUS_H__
2#define __NVKM_BUS_H__
a10220bb 3#include <core/subdev.h>
a10220bb 4
5f8824de 5struct nvkm_bus_intr {
a10220bb
MP
6 u32 stat;
7 u32 unit;
8};
9
5f8824de 10struct nvkm_bus {
01d6b956 11 struct nvkm_subdev subdev;
5f8824de 12 int (*hwsq_exec)(struct nvkm_bus *, u32 *, u32);
2984506f 13 u32 hwsq_size;
a10220bb
MP
14};
15
5f8824de
BS
16static inline struct nvkm_bus *
17nvkm_bus(void *obj)
a10220bb 18{
5f8824de 19 return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_BUS);
a10220bb
MP
20}
21
5f8824de
BS
22#define nvkm_bus_create(p, e, o, d) \
23 nvkm_subdev_create_((p), (e), (o), 0, "PBUS", "master", \
a10220bb 24 sizeof(**d), (void **)d)
5f8824de 25#define nvkm_bus_destroy(p) \
01d6b956 26 nvkm_subdev_destroy(&(p)->subdev)
5f8824de 27#define nvkm_bus_init(p) \
3a8c3400 28 nvkm_subdev_init_old(&(p)->subdev)
5f8824de 29#define nvkm_bus_fini(p, s) \
3a8c3400 30 nvkm_subdev_fini_old(&(p)->subdev, (s))
5f8824de
BS
31
32#define _nvkm_bus_dtor _nvkm_subdev_dtor
33#define _nvkm_bus_init _nvkm_subdev_init
34#define _nvkm_bus_fini _nvkm_subdev_fini
35
36extern struct nvkm_oclass *nv04_bus_oclass;
37extern struct nvkm_oclass *nv31_bus_oclass;
38extern struct nvkm_oclass *nv50_bus_oclass;
39extern struct nvkm_oclass *g94_bus_oclass;
40extern struct nvkm_oclass *gf100_bus_oclass;
a10220bb 41
2984506f 42/* interface to sequencer */
5f8824de
BS
43struct nvkm_hwsq;
44int nvkm_hwsq_init(struct nvkm_bus *, struct nvkm_hwsq **);
45int nvkm_hwsq_fini(struct nvkm_hwsq **, bool exec);
46void nvkm_hwsq_wr32(struct nvkm_hwsq *, u32 addr, u32 data);
47void nvkm_hwsq_setf(struct nvkm_hwsq *, u8 flag, int data);
48void nvkm_hwsq_wait(struct nvkm_hwsq *, u8 flag, u8 data);
49void nvkm_hwsq_nsec(struct nvkm_hwsq *, u32 nsec);
a10220bb 50#endif