123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #ifndef __NVKM_PM_PRIV_H__
- #define __NVKM_PM_PRIV_H__
- #define nvkm_pm(p) container_of((p), struct nvkm_pm, engine)
- #include <engine/pm.h>
- int nvkm_pm_ctor(const struct nvkm_pm_func *, struct nvkm_device *,
- int index, struct nvkm_pm *);
- struct nvkm_pm_func {
- void (*fini)(struct nvkm_pm *);
- };
- struct nvkm_perfctr {
- struct list_head head;
- u8 domain;
- u8 signal[4];
- u64 source[4][8];
- int slot;
- u32 logic_op;
- u32 ctr;
- };
- struct nvkm_specmux {
- u32 mask;
- u8 shift;
- const char *name;
- bool enable;
- };
- struct nvkm_specsrc {
- u32 addr;
- const struct nvkm_specmux *mux;
- const char *name;
- };
- struct nvkm_perfsrc {
- struct list_head head;
- char *name;
- u32 addr;
- u32 mask;
- u8 shift;
- bool enable;
- };
- extern const struct nvkm_specsrc nv50_zcull_sources[];
- extern const struct nvkm_specsrc nv50_zrop_sources[];
- extern const struct nvkm_specsrc g84_vfetch_sources[];
- extern const struct nvkm_specsrc gt200_crop_sources[];
- extern const struct nvkm_specsrc gt200_prop_sources[];
- extern const struct nvkm_specsrc gt200_tex_sources[];
- struct nvkm_specsig {
- u8 signal;
- const char *name;
- const struct nvkm_specsrc *source;
- };
- struct nvkm_perfsig {
- const char *name;
- u8 source[8];
- };
- struct nvkm_specdom {
- u16 signal_nr;
- const struct nvkm_specsig *signal;
- const struct nvkm_funcdom *func;
- };
- #define nvkm_perfdom(p) container_of((p), struct nvkm_perfdom, object)
- struct nvkm_perfdom {
- struct nvkm_object object;
- struct nvkm_perfmon *perfmon;
- struct list_head head;
- struct list_head list;
- const struct nvkm_funcdom *func;
- struct nvkm_perfctr *ctr[4];
- char name[32];
- u32 addr;
- u8 mode;
- u32 clk;
- u16 signal_nr;
- struct nvkm_perfsig signal[];
- };
- struct nvkm_funcdom {
- void (*init)(struct nvkm_pm *, struct nvkm_perfdom *,
- struct nvkm_perfctr *);
- void (*read)(struct nvkm_pm *, struct nvkm_perfdom *,
- struct nvkm_perfctr *);
- void (*next)(struct nvkm_pm *, struct nvkm_perfdom *);
- };
- int nvkm_perfdom_new(struct nvkm_pm *, const char *, u32, u32, u32, u32,
- const struct nvkm_specdom *);
- #define nvkm_perfmon(p) container_of((p), struct nvkm_perfmon, object)
- struct nvkm_perfmon {
- struct nvkm_object object;
- struct nvkm_pm *pm;
- };
- #endif
|