]>
Commit | Line | Data |
---|---|---|
5f8824de BS |
1 | #ifndef __NVKM_BUS_H__ |
2 | #define __NVKM_BUS_H__ | |
a10220bb | 3 | #include <core/subdev.h> |
a10220bb | 4 | |
5f8824de | 5 | struct nvkm_bus_intr { |
a10220bb MP |
6 | u32 stat; |
7 | u32 unit; | |
8 | }; | |
9 | ||
5f8824de | 10 | struct 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 |
16 | static inline struct nvkm_bus * |
17 | nvkm_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 | ||
36 | extern struct nvkm_oclass *nv04_bus_oclass; | |
37 | extern struct nvkm_oclass *nv31_bus_oclass; | |
38 | extern struct nvkm_oclass *nv50_bus_oclass; | |
39 | extern struct nvkm_oclass *g94_bus_oclass; | |
40 | extern struct nvkm_oclass *gf100_bus_oclass; | |
a10220bb | 41 | |
2984506f | 42 | /* interface to sequencer */ |
5f8824de BS |
43 | struct nvkm_hwsq; |
44 | int nvkm_hwsq_init(struct nvkm_bus *, struct nvkm_hwsq **); | |
45 | int nvkm_hwsq_fini(struct nvkm_hwsq **, bool exec); | |
46 | void nvkm_hwsq_wr32(struct nvkm_hwsq *, u32 addr, u32 data); | |
47 | void nvkm_hwsq_setf(struct nvkm_hwsq *, u8 flag, int data); | |
48 | void nvkm_hwsq_wait(struct nvkm_hwsq *, u8 flag, u8 data); | |
49 | void nvkm_hwsq_nsec(struct nvkm_hwsq *, u32 nsec); | |
a10220bb | 50 | #endif |