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