106 lines
2.2 KiB
C
106 lines
2.2 KiB
C
|
/* SPDX-License-Identifier: MIT */
|
||
|
#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 *, enum nvkm_subdev_type, int,
|
||
|
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)
|
||
|
#include <core/object.h>
|
||
|
|
||
|
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
|