1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */
2c39f472eSBen Skeggs #ifndef __NVBIOS_DISP_H__
3c39f472eSBen Skeggs #define __NVBIOS_DISP_H__
4d390b480SBen Skeggs u16 nvbios_disp_table(struct nvkm_bios *,
5c39f472eSBen Skeggs 		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len, u8 *sub);
6c39f472eSBen Skeggs 
7c39f472eSBen Skeggs struct nvbios_disp {
8c39f472eSBen Skeggs 	u16 data;
9c39f472eSBen Skeggs };
10c39f472eSBen Skeggs 
11d390b480SBen Skeggs u16 nvbios_disp_entry(struct nvkm_bios *, u8 idx, u8 *ver, u8 *hdr, u8 *sub);
12d390b480SBen Skeggs u16 nvbios_disp_parse(struct nvkm_bios *, u8 idx, u8 *ver, u8 *hdr, u8 *sub,
13c39f472eSBen Skeggs 		      struct nvbios_disp *);
14c39f472eSBen Skeggs 
15c39f472eSBen Skeggs struct nvbios_outp {
16c39f472eSBen Skeggs 	u16 type;
17c39f472eSBen Skeggs 	u16 mask;
18c39f472eSBen Skeggs 	u16 script[3];
19c39f472eSBen Skeggs };
20c39f472eSBen Skeggs 
21d390b480SBen Skeggs u16 nvbios_outp_entry(struct nvkm_bios *, u8 idx,
22c39f472eSBen Skeggs 		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len);
23d390b480SBen Skeggs u16 nvbios_outp_parse(struct nvkm_bios *, u8 idx,
24d390b480SBen Skeggs 		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_outp *);
25d390b480SBen Skeggs u16 nvbios_outp_match(struct nvkm_bios *, u16 type, u16 mask,
26d390b480SBen Skeggs 		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_outp *);
27c39f472eSBen Skeggs 
28c39f472eSBen Skeggs struct nvbios_ocfg {
29bc9139d2SBen Skeggs 	u8  proto;
30bc9139d2SBen Skeggs 	u8  flags;
31c39f472eSBen Skeggs 	u16 clkcmp[2];
32c39f472eSBen Skeggs };
33c39f472eSBen Skeggs 
34d390b480SBen Skeggs u16 nvbios_ocfg_entry(struct nvkm_bios *, u16 outp, u8 idx,
35c39f472eSBen Skeggs 		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len);
36d390b480SBen Skeggs u16 nvbios_ocfg_parse(struct nvkm_bios *, u16 outp, u8 idx,
37d390b480SBen Skeggs 		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_ocfg *);
38bc9139d2SBen Skeggs u16 nvbios_ocfg_match(struct nvkm_bios *, u16 outp, u8 proto, u8 flags,
39d390b480SBen Skeggs 		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_ocfg *);
40d390b480SBen Skeggs u16 nvbios_oclk_match(struct nvkm_bios *, u16 cmp, u32 khz);
41c39f472eSBen Skeggs #endif
42