]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
d5752b9b BS |
2 | #ifndef __NVKM_PM_PRIV_H__ |
3 | #define __NVKM_PM_PRIV_H__ | |
97070f23 | 4 | #define nvkm_pm(p) container_of((p), struct nvkm_pm, engine) |
d5752b9b BS |
5 | #include <engine/pm.h> |
6 | ||
97070f23 BS |
7 | int nvkm_pm_ctor(const struct nvkm_pm_func *, struct nvkm_device *, |
8 | int index, struct nvkm_pm *); | |
9 | ||
10 | struct nvkm_pm_func { | |
11 | void (*fini)(struct nvkm_pm *); | |
12 | }; | |
13 | ||
4d34686e | 14 | struct nvkm_perfctr { |
d5752b9b | 15 | struct list_head head; |
6137b5a7 | 16 | u8 domain; |
0f380436 | 17 | u8 signal[4]; |
6137b5a7 | 18 | u64 source[4][8]; |
d5752b9b BS |
19 | int slot; |
20 | u32 logic_op; | |
d5752b9b BS |
21 | u32 ctr; |
22 | }; | |
23 | ||
e82661e2 SP |
24 | struct nvkm_specmux { |
25 | u32 mask; | |
26 | u8 shift; | |
27 | const char *name; | |
28 | bool enable; | |
29 | }; | |
30 | ||
31 | struct nvkm_specsrc { | |
32 | u32 addr; | |
33 | const struct nvkm_specmux *mux; | |
34 | const char *name; | |
35 | }; | |
36 | ||
37 | struct nvkm_perfsrc { | |
38 | struct list_head head; | |
39 | char *name; | |
40 | u32 addr; | |
41 | u32 mask; | |
42 | u8 shift; | |
43 | bool enable; | |
44 | }; | |
45 | ||
06b7972d SP |
46 | extern const struct nvkm_specsrc nv50_zcull_sources[]; |
47 | extern const struct nvkm_specsrc nv50_zrop_sources[]; | |
48 | extern const struct nvkm_specsrc g84_vfetch_sources[]; | |
49 | extern const struct nvkm_specsrc gt200_crop_sources[]; | |
50 | extern const struct nvkm_specsrc gt200_prop_sources[]; | |
51 | extern const struct nvkm_specsrc gt200_tex_sources[]; | |
52 | ||
4d34686e | 53 | struct nvkm_specsig { |
d5752b9b BS |
54 | u8 signal; |
55 | const char *name; | |
e82661e2 | 56 | const struct nvkm_specsrc *source; |
d5752b9b BS |
57 | }; |
58 | ||
4d34686e | 59 | struct nvkm_perfsig { |
d5752b9b | 60 | const char *name; |
e82661e2 | 61 | u8 source[8]; |
d5752b9b BS |
62 | }; |
63 | ||
4d34686e | 64 | struct nvkm_specdom { |
d5752b9b | 65 | u16 signal_nr; |
4d34686e BS |
66 | const struct nvkm_specsig *signal; |
67 | const struct nvkm_funcdom *func; | |
d5752b9b BS |
68 | }; |
69 | ||
5ffeb84b BS |
70 | #define nvkm_perfdom(p) container_of((p), struct nvkm_perfdom, object) |
71 | ||
4d34686e | 72 | struct nvkm_perfdom { |
5ffeb84b BS |
73 | struct nvkm_object object; |
74 | struct nvkm_perfmon *perfmon; | |
d5752b9b BS |
75 | struct list_head head; |
76 | struct list_head list; | |
4d34686e | 77 | const struct nvkm_funcdom *func; |
0f380436 | 78 | struct nvkm_perfctr *ctr[4]; |
d5752b9b BS |
79 | char name[32]; |
80 | u32 addr; | |
0f380436 SP |
81 | u8 mode; |
82 | u32 clk; | |
e4047599 | 83 | u16 signal_nr; |
4d34686e | 84 | struct nvkm_perfsig signal[]; |
d5752b9b BS |
85 | }; |
86 | ||
4d34686e BS |
87 | struct nvkm_funcdom { |
88 | void (*init)(struct nvkm_pm *, struct nvkm_perfdom *, | |
89 | struct nvkm_perfctr *); | |
90 | void (*read)(struct nvkm_pm *, struct nvkm_perfdom *, | |
91 | struct nvkm_perfctr *); | |
92 | void (*next)(struct nvkm_pm *, struct nvkm_perfdom *); | |
d5752b9b BS |
93 | }; |
94 | ||
4d34686e BS |
95 | int nvkm_perfdom_new(struct nvkm_pm *, const char *, u32, u32, u32, u32, |
96 | const struct nvkm_specdom *); | |
d5752b9b | 97 | |
5ffeb84b BS |
98 | #define nvkm_perfmon(p) container_of((p), struct nvkm_perfmon, object) |
99 | ||
100 | struct nvkm_perfmon { | |
101 | struct nvkm_object object; | |
102 | struct nvkm_pm *pm; | |
103 | }; | |
d5752b9b | 104 | #endif |