1 #ifndef __NVBIOS_PERF_H__
2 #define __NVBIOS_PERF_H__
3 u16 nvbios_perf_table(struct nvkm_bios *, u8 *ver, u8 *hdr,
4 		      u8 *cnt, u8 *len, u8 *snr, u8 *ssz);
5 
6 struct nvbios_perfE {
7 	u8  pstate;
8 	u8  fanspeed;
9 	u8  voltage;
10 	u32 core;
11 	u32 shader;
12 	u32 memory;
13 	u32 vdec;
14 	u32 disp;
15 	u32 script;
16 	u8  pcie_speed;
17 	u8  pcie_width;
18 };
19 
20 u16 nvbios_perf_entry(struct nvkm_bios *, int idx,
21 		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len);
22 u16 nvbios_perfEp(struct nvkm_bios *, int idx,
23 		  u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_perfE *);
24 
25 struct nvbios_perfS {
26 	union {
27 		struct {
28 			u32 freq;
29 		} v40;
30 	};
31 };
32 
33 u32 nvbios_perfSe(struct nvkm_bios *, u32 data, int idx,
34 		  u8 *ver, u8 *hdr, u8 cnt, u8 len);
35 u32 nvbios_perfSp(struct nvkm_bios *, u32 data, int idx,
36 		  u8 *ver, u8 *hdr, u8 cnt, u8 len, struct nvbios_perfS *);
37 
38 struct nvbios_perf_fan {
39 	u32 pwm_divisor;
40 };
41 
42 int nvbios_perf_fan_parse(struct nvkm_bios *, struct nvbios_perf_fan *);
43 #endif
44